CH341關于支持非標準波特率或者更高通訊波特率
2016-05-18 15:15:53
sxtyhy
562
CH341關于支持非標準波特率或者更高通訊波特率
對于一些非標準波特率或者常規方法無法設置的高速波持率,CH341驅動程序提供特殊方法,
應用程序可以按串口寫數據的方式間接設置CH341的串口通訊波特率,方法是:
設置CH341串口波特率為300,然后以ASCII碼字符串的命令包寫串口,
命令包的首字節必須是#,井字符,對應的十六進制數為23H,
命令包的中間為不超過7個數字表示的波特率,例如字符串9600或者921600等,
命令包的尾字節必須是_,下劃線,對應的十六進制數為5FH,
也就是說,將要設置的波特率以字符串的形式置于#字符和_字符之間,作為一個命令包,
在300bps下發送到CH341的串口,那么將被CH341驅動程序解釋為修改CH341的波特率,
而不會被作為數據從串口真正發出,當該操作成功返回后,
CH341實際工作于指定的新波特率,當然,計算機系統及串口控件仍然以為是工作于300bps,
如果需要再次以這種方法改變波特率,那么首先要用常規方法將CH341的波特率置為300bps。
應用程序可以按串口寫數據的方式間接設置CH341的串口通訊波特率,方法是:
設置CH341串口波特率為300,然后以ASCII碼字符串的命令包寫串口,
命令包的首字節必須是#,井字符,對應的十六進制數為23H,
命令包的中間為不超過7個數字表示的波特率,例如字符串9600或者921600等,
命令包的尾字節必須是_,下劃線,對應的十六進制數為5FH,
也就是說,將要設置的波特率以字符串的形式置于#字符和_字符之間,作為一個命令包,
在300bps下發送到CH341的串口,那么將被CH341驅動程序解釋為修改CH341的波特率,
而不會被作為數據從串口真正發出,當該操作成功返回后,
CH341實際工作于指定的新波特率,當然,計算機系統及串口控件仍然以為是工作于300bps,
如果需要再次以這種方法改變波特率,那么首先要用常規方法將CH341的波特率置為300bps。
例如,用串口監控/調試工具軟件演示:
1、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開串口),
發出字符串命令包,為6個ASCII碼數據: #9600_
發送成功后,CH341將實際工作于9600bps
2、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開串口),
發出字符串命令包,為8個ASCII碼數據: #460800_
發送成功后,CH341將實際工作于460800bps
3、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開串口),
發出字符串命令包,為9個ASCII碼數據: #1000000_
發送成功后,CH341將實際工作于1000000bps
1、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開串口),
發出字符串命令包,為6個ASCII碼數據: #9600_
發送成功后,CH341將實際工作于9600bps
2、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開串口),
發出字符串命令包,為8個ASCII碼數據: #460800_
發送成功后,CH341將實際工作于460800bps
3、將CH341串口的波特率選擇為300bps(有些工具軟件在選擇波特率后必須重新打開串口),
發出字符串命令包,為9個ASCII碼數據: #1000000_
發送成功后,CH341將實際工作于1000000bps
CH341串口支持50bps到2Mbps的波特率,當應用程序請求CH341改變串口通訊波特率時,
CH341驅動程序將波特率換算為波特率除數,然后修改CH341芯片內部的波特率除數寄存器,
所以設置CH341串口的通訊波特率實際上是設置CH341芯片內部的波特率除數寄存器,
由于CH341內部的串口基準位時鐘為48/8=6MHz(或12MHz),并且波特率除數只支持整數,
所以在指定波特率時,應該考慮實際換算誤差,在波特率大于19200bps時的計算方法是:
X = 6000000 除以波特率后的值
Y = X 四舍五入后的值
誤差 = ( Y - X ) / X
CH341驅動程序將波特率換算為波特率除數,然后修改CH341芯片內部的波特率除數寄存器,
所以設置CH341串口的通訊波特率實際上是設置CH341芯片內部的波特率除數寄存器,
由于CH341內部的串口基準位時鐘為48/8=6MHz(或12MHz),并且波特率除數只支持整數,
所以在指定波特率時,應該考慮實際換算誤差,在波特率大于19200bps時的計算方法是:
X = 6000000 除以波特率后的值
Y = X 四舍五入后的值
誤差 = ( Y - X ) / X
以下為CH341支持的常用波特率,未注明的基準位時鐘為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都可以支持,計算誤差時要考慮兩端的誤差之和。
但是為了可靠進行通訊,建議不要使用誤差大于1%的波特率
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都可以支持,計算誤差時要考慮兩端的誤差之和。
但是為了可靠進行通訊,建議不要使用誤差大于1%的波特率
廣東體育彩票網 彩票網注冊送錢 中國彩票預測網 新浪彩票客戶端 福利彩票刮刮樂 四川體育彩票網 北京福利彩票電話投注 購買福利彩票技巧 怎么開彩票投注站 360彩票安全嗎 中國福利彩票走勢 南國彩票網七星彩精彩論壇 湖北福利彩票雙色球 江蘇體育彩票11選5 足球彩票勝負彩 福利彩票怎么玩 福利彩票3d預測 彩票開獎直播頻道 中國足球彩票比分直播 彩票站怎么賺錢 網上買彩票怎么領獎 中國福利彩票直播 中國福利彩票代理 中國公益彩票網 有啊彩票走勢圖 河南福利彩票七樂彩 籃球彩票怎么玩 足球彩票310 廣東福利彩票網 特區彩票論壇七星彩 湖北福利彩票22選5 體育彩票數字型 一定牛彩票網站 南國彩票論壇社區 體育彩票6十1 第一彩票網怎么樣 浙江體育彩票6 1開獎結果 中國福利彩票快樂十分開獎結果 500彩票網怎么樣 福利彩票發行中心 中國福利彩票61開獎結果 中國福利彩票刮刮樂 中國福利彩票3d試機號 彩票怎么算中獎 什么彩票最容易中獎 天津福利彩票快樂十分 彩票網站注冊送彩金 浙江體育彩票11選5 鑫樂平臺 優博時時彩平臺網址 時時彩開戶送錢平臺