串口方式控制CH376讀寫U盤,9600波特率下,所有功能都測試通過,但更改波特率時,命名毫無作用 1,將波特率設成(19200,57600等),單品機立即更改為相應波特率,單片機收不到任何數(shù)據(jù),和模塊失去連接。 2,將波特率設成(19200,57600等),單品機然保持9600波特率,能繼續(xù)和CH376通信。 因此猜想改變波特率的命令根本沒對模塊起作用。 望知情者指點,
沒設置成功。 這樣,你按照CH376DS1 6.4節(jié),用硬件設置的方法試一下看能否成功。 可以將你的程序貼出來,看看你是怎么設置的
用硬件的方法是可以的,但我需要波特率可選 #define UART_WORK_BAUDRATE 57600L xWriteCH376Data( 0x03 ); xWriteCH376Data( 256 - 6000000/UART_WORK_BAUDRATE ); SET_WORK_BAUDRATE( ); /* 將單片機切換到57600正式通訊波特率 */ res = xReadCH376Data( );/*串口無任何數(shù)據(jù)返回,增加或調(diào)整延時也無效*/
再用9600重新調(diào)用初始化函數(shù),竟然還有效
問題還未解決,有沒有人知道啊,望指點
如果沒有修改成功,你重新復位一下試一下。 如果9600是完全正常的,并且硬件修改也是可以的,軟件肯定是可以行的。你把你的初始化函數(shù)貼出來看看。在2樓貼出的幾句話之前做了什么動作。
UINT8 res; CH376_PORT_INIT( ); /* 接口硬件初始化 */ xWriteCH376Cmd( CMD11_CHECK_EXIST ); /* 測試單片機與CH376之間的通訊接口 */ xWriteCH376Data( 0x55 ); res = xReadCH376Data( ); if ( res != 0xAA ) return( ERR_USB_UNKNOWN ); 更改波特率 ...
???
那你少發(fā)一條命令: xWriteCH376Cmd( CMD21_SET_BAUDRATE ); /* 設置串口通訊波特率 */ xWriteCH376Data( 0x03 ); xWriteCH376Data( 256 - 6000000/UART_WORK_BAUDRATE ); SET_WORK_BAUDRATE( ); /* 將單片機切換到正式通訊波特率 */ res = xReadCH376Data( ); if ( res != CMD_RET_SUCCESS ) return( ERR_USB_UNKNOWN ); /* 通訊波特率切換失敗,建議通過硬件復位CH376后重試 */
最近發(fā)現(xiàn)讀文件也非常不穩(wěn)定, 已經(jīng)返回了可讀取的長度,但讀時卻沒有數(shù)據(jù)返回 比如讀256個字節(jié),可以讀到芯片返回的可讀取字節(jié)為255,后面卻沒有任何數(shù)據(jù)
你還是要好好研究一下參考程序。這是你的程序有問題??纯碆yteRead函數(shù)吧。申請字節(jié)數(shù)和實際寫入字節(jié)有差別,要繼續(xù)申請