******************************************************************************* 關(guān)于支持非標(biāo)準(zhǔn)波特率或者更高通訊波特率
對(duì)于一些非標(biāo)準(zhǔn)波特率或者常規(guī)方法無(wú)法設(shè)置的高速波持率,CH341驅(qū)動(dòng)程序提供特殊方法, 應(yīng)用程序可以按串口寫(xiě)數(shù)據(jù)的方式間接設(shè)置CH341的串口通訊波特率,方法是: 設(shè)置CH341串口波特率為300,然后以ASCII碼字符串的命令包寫(xiě)串口, 命令包的首字節(jié)必須是#,井字符,對(duì)應(yīng)的十六進(jìn)制數(shù)為23H, 命令包的中間為不超過(guò)7個(gè)數(shù)字表示的波特率,例如字符串9600或者921600等, 命令包的尾字節(jié)必須是_,下劃線,對(duì)應(yīng)的十六進(jìn)制數(shù)為5FH, 也就是說(shuō),將要設(shè)置的波特率以字符串的形式置于#字符和_字符之間,作為一個(gè)命令包, 在300bps下發(fā)送到CH341的串口,那么將被CH341驅(qū)動(dòng)程序解釋為修改CH341的波特率, 而不會(huì)被作為數(shù)據(jù)從串口真正發(fā)出,當(dāng)該操作成功返回后, CH341實(shí)際工作于指定的新波特率,當(dāng)然,計(jì)算機(jī)系統(tǒng)及串口控件仍然以為是工作于300bps, 如果需要再次以這種方法改變波特率,那么首先要用常規(guī)方法將CH341的波特率置為300bps。
例如,用串口監(jiān)控/調(diào)試工具軟件演示: 1、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開(kāi)串口), 發(fā)出字符串命令包,為6個(gè)ASCII碼數(shù)據(jù): #9600_ 發(fā)送成功后,CH341將實(shí)際工作于9600bps 2、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開(kāi)串口), 發(fā)出字符串命令包,為8個(gè)ASCII碼數(shù)據(jù): #460800_ 發(fā)送成功后,CH341將實(shí)際工作于460800bps 3、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開(kāi)串口), 發(fā)出字符串命令包,為9個(gè)ASCII碼數(shù)據(jù): #1000000_ 發(fā)送成功后,CH341將實(shí)際工作于1000000bps
CH341串口支持50bps到2Mbps的波特率,當(dāng)應(yīng)用程序請(qǐng)求CH341改變串口通訊波特率時(shí), CH341驅(qū)動(dòng)程序?qū)⒉ㄌ芈蕮Q算為波特率除數(shù),然后修改CH341芯片內(nèi)部的波特率除數(shù)寄存器, 所以設(shè)置CH341串口的通訊波特率實(shí)際上是設(shè)置CH341芯片內(nèi)部的波特率除數(shù)寄存器, 由于CH341內(nèi)部的串口基準(zhǔn)位時(shí)鐘為48/8=6MHz(或12MHz),并且波特率除數(shù)只支持整數(shù), 所以在指定波特率時(shí),應(yīng)該考慮實(shí)際換算誤差,在波特率大于19200bps時(shí)的計(jì)算方法是: X = 6000000 除以波特率后的值 Y = X 四舍五入后的值 誤差 = ( Y - X ) / X
以下為CH341支持的常用波特率,未注明的基準(zhǔn)位時(shí)鐘為6MHz,未注明的誤差小于0.16% 921600 (12MHz), 460800, 307200 (12MHz), 230400, 153600, 128000 (0.27%), 115200, 76800, 57600, 56000, 38400, 33600, 28800, 19200, 14400, 9600, 7200, 4800, 3600, 2400, 1800, 1200, 900, 600, 300, 150, 134.5, 110, 100, 75, 50, 2000000, 1500000, 1200000, 1000000, 750000, 500000, 375000, 250000, 200000, 187500, 100000, 93750, 75000, 50000, 25000, 10000 其它波特率只要誤差小于2.5%,CH341都可以支持,計(jì)算誤差時(shí)要考慮兩端的誤差之和。 但是為了可靠進(jìn)行通訊,建議不要使用誤差大于1%的波特率