CH341 串口支持50bps 到2Mbps 的波特率,當應用程序請求CH341改變串口通訊波特率時,CH341驅(qū)動程序?qū)⒉ㄌ芈蕮Q算為波特率除數(shù),然后修改CH341芯片內(nèi)部的波特率除數(shù)寄存器,所以設(shè)置CH341串口的通訊波特率實際上是設(shè)置CH341芯片內(nèi)部的波特率除數(shù)寄存器,由于CH341 內(nèi)部的串口基準位時鐘為48/8=6MHz(或12MHz),并且波特率除數(shù)只支持整數(shù),所以在指定波特率時,應該考慮實際換算誤差,在波特率大于19200bps 時的計算方法是: X = 6000000 除以波特率后的值 Y = X 四舍五入后的值 誤差= ( Y - X ) / X 只要誤差小于2.5%,CH341 都可以支持,計算誤差時要考慮兩端的誤差之和。但是為了可靠進行通訊,建議不要使用誤差大于1%的波特率。
以上是CH341手冊里面的。 我想把波特率設(shè)為57600,不知道真沒設(shè)置。 以下的數(shù)據(jù)不到怎么來的,用上面的方法算出來的不對。 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();} }