CH341 串口支持50bps 到2Mbps 的波特率,当应用程序请求CH341改变串口通讯波特率时,CH341驱动程序将波特率换算为波特率除数,然后修改CH341芯片内部的波特率除数寄存器,所以设置CH341串口的通讯波特率实际上是设置CH341芯片内部的波特率除数寄存器,由于CH341 内部的串口基准位时钟为48/8=6MHz(或12MHz),并且波特率除数只支持整数,所以在指定波特率时,应该考虑实际换算误差,在波特率大于19200bps 时的计算方法是: X = 6000000 除以波特率后的值 Y = X 四舍五入后的值 误差= ( Y - X ) / X 只要误差小于2.5%,CH341 都可以支持,计算误差时要考虑两端的误差之和。但是为了可靠进行通讯,建议不要使用误差大于1%的波特率。
以上是CH341手册里面的。 我想把波特率设为57600,不知道真没设置。 以下的数据不到怎么来的,用上面的方法算出来的不对。 switch(bondrate) { case 600: {ctrl=0x01;count=0x64;break;} case 9600:{ctrl=0x02;count=0xb2;break;} case 115200:{ctrl = 3; count = 0xcc; break; } default: {ERROR2();} }