CH375B无法改变波特率

使用STM32来在串口模式下操作CH375B芯片,在默认波特率9600下,读写文件等功能均测试OK。


感觉打开文件比较慢,不知道是否是波特率比较低的原因,尝试更改波特率,使用代码如下:


static UINT8 adjustBaudrate(void)

{

    USART_InitTypeDef _usart;

    

    xWriteCH375Cmd(CMD_SET_BAUDRATE);


//    xWriteCH375Data(0x03);

//    xWriteCH375Data(0xC4);      //100 000

//    USART1->BRR = 0x0168;       

    

//    xWriteCH375Data(0x03);

//    xWriteCH375Data(0xCC);      //115 200

//    USART1->BRR = 0x0138;       


    xWriteCH375Data(0x02);

    xWriteCH375Data(0xD9);      //19 200

    USART1->BRR = 0x0753;       

    

//    xWriteCH375Data(0x02);

//    xWriteCH375Data(0xB2);      //9 600

//    USART1->BRR = 0x0EA6;       

//    

    return xReadCH375Data();

}


测试了几种情况,在默认9600的波特率下,用示波器监测CH375B TxD引脚的信号,除了执行修改波特率为9600的命令有信号外(返回值为0x51,即CMD_RET_SUCCESS),其他情况下均无信号。


所以,从上面的结果来看,修改波特率为9600能成功,时序和代码应该是没问题的。


现在的问题是为什么修改为其他的波特率都不能成功?

已解决,参照/index.php?s=/forum-page-thread-id-12847-p-3.html 


CH375在收到修改波特率的命令后,等数百us再发状态返回, 
所以单片机有两种处理方法: 
1、推荐的,简单的,发出修改命令后,延时5ms以上,修改自身波特率,清除串口接收中断标志/清接收缓冲区,忽略CH375的返回状态,然后处理下一条命令 
2、精确的,发出修改命令后,确保最后一个字节发送完毕后(关键是,将数据送到串口发送缓冲区,过一会它才能完全发出去,像16C550有发送移位寄存器空标志),修改自身波特率(修改时可能会无意中清除接收缓冲区中的数据),立即准备接收,否则就会错过CH375返回的状态而一直等下去


只有登录才能回复,可以选择微信账号登录