串口方式控制CH376读写U盘,9600波特率下,所有功能都测试通过,但更改波特率时,命名毫无作用 1,将波特率设成(19200,57600等),单品机立即更改为相应波特率,单片机收不到任何数据,和模块失去连接。 2,将波特率设成(19200,57600等),单品机然保持9600波特率,能继续和CH376通信。 因此猜想改变波特率的命令根本没对模块起作用。 望知情者指点,
没设置成功。 这样,你按照CH376DS1 6.4节,用硬件设置的方法试一下看能否成功。 可以将你的程序贴出来,看看你是怎么设置的
用硬件的方法是可以的,但我需要波特率可选 #define UART_WORK_BAUDRATE 57600L xWriteCH376Data( 0x03 ); xWriteCH376Data( 256 - 6000000/UART_WORK_BAUDRATE ); SET_WORK_BAUDRATE( ); /* 将单片机切换到57600正式通讯波特率 */ res = xReadCH376Data( );/*串口无任何数据返回,增加或调整延时也无效*/
再用9600重新调用初始化函数,竟然还有效
问题还未解决,有没有人知道啊,望指点
如果没有修改成功,你重新复位一下试一下。 如果9600是完全正常的,并且硬件修改也是可以的,软件肯定是可以行的。你把你的初始化函数贴出来看看。在2楼贴出的几句话之前做了什么动作。
UINT8 res; CH376_PORT_INIT( ); /* 接口硬件初始化 */ xWriteCH376Cmd( CMD11_CHECK_EXIST ); /* 测试单片机与CH376之间的通讯接口 */ xWriteCH376Data( 0x55 ); res = xReadCH376Data( ); if ( res != 0xAA ) return( ERR_USB_UNKNOWN ); 更改波特率 ...
???
那你少发一条命令: 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后重试 */
最近发现读文件也非常不稳定, 已经返回了可读取的长度,但读时却没有数据返回 比如读256个字节,可以读到芯片返回的可读取字节为255,后面却没有任何数据
你还是要好好研究一下参考程序。这是你的程序有问题。看看ByteRead函数吧。申请字节数和实际写入字节有差别,要继续申请