|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
LPCARM波特率自適應同步字符"?"之完美 |
| 作者:hotpower 欄目:ARM技術 |
以前PHILIPS的51RD2的波特率自適應同步字符是大寫字母U(0x55),即產生一組方波信號. 前些日子玩LPCARM時,發(fā)現(xiàn)PHILIPS的波特率自適應同步字符變成了問號?(0x3f) 一直沒注意其奧妙也沒仔細研究. 最近玩DSP5402,由于用慣了PC串口,而其無標準的異步串行接口,且IO很少. 故只能用IO模擬. 雖說遺憾,但也慶幸可以再次研究一下波特率自適應問題. 所謂波特率自適應就是接收方可以根據(jù)發(fā)送方任意不同的發(fā)送速率皆能正確地接收到真正的有效數(shù)據(jù). 由于和同步協(xié)議的不同,雙方?jīng)]有硬件的同步時鐘信號,只能靠雙方事先約定好的通訊速率進行數(shù)據(jù)的傳送. 在實際應用中,由于通訊線長和通訊速率及干擾等種種原因,通訊速率可能需要變頻或雙方未曾事先約定,也就需要波特率自適應技術的應用了. 在異步串行協(xié)議中,串行數(shù)據(jù)由起始位S,8位數(shù)據(jù)DX和停止位P組成.先從最低位D0開始發(fā)送. 通訊速率即起始位S的脈沖寬度.當數(shù)據(jù)位D0為高電平時,則為起始位的下降沿到上升沿的時間. 為了提高測量精度,需要N倍于通訊速率(時間)的脈沖寬度,這就需要再測試高電平的脈沖寬度. 由于停止位P為高電平,故數(shù)據(jù)位應該有1位為低電平來分割. 最理想的數(shù)據(jù)是0x7f.即串行數(shù)據(jù)位為S11111110P.(其中S=0,P=1) 它的高低電平的脈沖寬度之比為1:7:1.精度最高. 由于0x7f不是可打印字符,故一般在HEX碼和UU碼通訊協(xié)議中不會采用之. 這樣就應該采用0x3f.即串行數(shù)據(jù)位為S11111100P.(其中S=0,P=1) 它的高低電平的脈沖寬度之比為1:6:2.精度次之. 再可以采用0x1f.即串行數(shù)據(jù)位為S11111000P.(其中S=0,P=1) 它的高低電平的脈沖寬度之比為1:5:3.精度不好. 且0x1f也是非打印字符. 故采用0x3f即字符"?"算是最佳的選擇了. 雖然可以采用其他數(shù)據(jù)作為同步字符,如: 0x00.即串行數(shù)據(jù)位為S00000000P.(其中S=0,P=1) 但只有低電平的脈沖寬度,且0x00是C語言的字符串結尾符和非打印字符,肯定不可取. 0x40.即串行數(shù)據(jù)位為S00000010P.(其中S=0,P=1) 雖說高低電平的脈沖寬度之比為7:1:1.精度最高.與0x1f相同,同時又是字符"@" 所以,在某種角度上來看,用"@"來做波特率自適應的同步字符也是一個相當不錯的選擇. 不過,用"?"的意思好象在"問"對方是否上線(在線). 0x60.即串行數(shù)據(jù)位為S00000110P.(其中S=0,P=1) 雖說高低電平的脈沖寬度之比為6:2:1.精度次之.與0x3f相同,同時又是字符"'" 這個肯定不如"?"有創(chuàng)意. 總之,從以上分析可知,LPCARM波特率自適應同步字符"?"確實很完美. 哈哈~~~球也要看完了.意大利人真走運~~~老黃喊"意大利萬歲"倒也有些道理~~~ 3:0.夠暈菜~~~ HotPower@126.com 2006.7.1 4:47 于西安大雁塔村隊部 波特率自適應技術在dsp5402上的應用之c++測試程序 |
| 2樓: | >>參與討論 |
| 作者: hotpower 于 2006/7/1 10:02:00 發(fā)布:
完美的同步達到完美的ISP 所以LPCARM的ISP的波特率可以任意設定~~~ 雖說理論上不如"@",但"?"的"物理意義"較為明顯~~~ 這在非二進制串行通訊中,作為波特率自適應同步字符都很完美. |
|
| 3樓: | >>參與討論 |
| 作者: cqkj 于 2006/7/1 10:17:00 發(fā)布:
re 在51的MONITOR仿真器中,,用到自適應波特率是用:0x11來進行波特率識別。。。 高4位和低4位的最低位都為1。 |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2006/7/1 10:20:00 發(fā)布:
哈哈~~~~~ '@' 也很有它的意義呀, @ 念做 at,意思就表示它在那里的意思~~~~~~ 例如,hotpower@163.com,就表示hotpower在163.com~~~~~~~~ |
|
| 5樓: | >>參與討論 |
| 作者: hotpower 于 2006/7/1 10:28:00 發(fā)布:
@好象也有圈圈的含義---這個都忘了~~~夠暈菜~~~ |
|
| 6樓: | >>參與討論 |
| 作者: hotpower 于 2006/7/1 10:36:00 發(fā)布:
0x11做為波特率識別碼與@,?差遠了~~~ 0x11.即串行數(shù)據(jù)位為S10001000P.(其中S=0,P=1) 它的高低電平的脈沖寬度之比為1:1:3:1:3. 與@的7:1:1和?的1:6:2精度還是差1倍的,而且0x11不是1個可打印字符. 所以0x11是沒資格和@,?叫板的~~~ |
|
| 7樓: | >>參與討論 |
| 作者: hotpower 于 2006/7/1 13:22:00 發(fā)布:
問號的精華在于三個不同的脈寬互成比例 菜農 發(fā)表于 2006-7-1 13:20:00 http://bbs.21ic.com/club/bbs/showannounce.asp?v=&id=2147081 再高的bps也必須滿足這三者的比例關系,所以"時間?"不是問題~~~ 三者的比例關系實際隱含了一種密碼校對關系~~`,三者的比例不對就休想聯(lián)機~~` 所謂"寧愿錯殺一千,也不放過一個"~~~ 而且在系統(tǒng)各自的通訊協(xié)議中還需采用校驗機制,所以你的擔心是有些多余~~` 由于本程序采用軟件模擬,在進出中斷都會產生時間偏移,何況我未將另一定時器TINT0關閉(為了不影響系統(tǒng)的實時和LCD的顯示及其他等程序的運行). 本程序最高BPS可達到57600,這就滿足了一般的工控通訊要求~~~~ 實際上工控一般采用9600~19200 哈哈~~~一直沒空自己編寫LPCARMISP軟件,實在暈菜~~~郁悶之極呀~~~我暈倒!!!只研究了UU碼~~~ * - 本貼最后修改時間:2006-7-1 13:26:28 修改者:hotpower |
|
| 8樓: | >>參與討論 |
| 作者: 何以解憂 于 2006/7/1 13:55:00 發(fā)布:
哈哈分析得夠透徹,看球不忘灌“水”,這個水的價值很高,佩服 |
|
| 9樓: | >>參與討論 |
| 作者: hotpower 于 2006/7/1 13:59:00 發(fā)布:
哈哈,比起周公的工程師們可差太遠了~~~ |
|
| 10樓: | >>參與討論 |
| 作者: hotpower 于 2006/7/2 12:51:00 發(fā)布:
今又研究了DSP2812的同步字符 DSP2812的同步字符為'A'或'a'.及0x41或0x61. 0x41.即串行數(shù)據(jù)位為S10000010P.(其中S=0,P=1) 它的高低電平的脈沖寬度之比為1:1:5:1:1. 0x61.即串行數(shù)據(jù)位為S10000110P.(其中S=0,P=1) 它的高低電平的脈沖寬度之比為1:1:4:2:1. 故比'?'的1:6:2測試復雜的多~~~ 但是比0x11的1:1:3:1:3要好些~~~ * - 本貼最后修改時間:2006-7-2 12:52:24 修改者:hotpower |
|
| 11樓: | >>參與討論 |
| 作者: computer00 于 2006/7/2 13:03:00 發(fā)布:
我倒~~~測試這么多呀,挑一個最好的測試就行了嘛~~~~~ 要是我,我就選發(fā)一個0x00,一個0xFF這樣交替來~~~~~ |
|
| 12樓: | >>參與討論 |
| 作者: cqkj 于 2006/7/2 15:59:00 發(fā)布:
re 暈...0X11是差了點... 但是可以保證100%識別不出錯.... 用上產品上賣到錢就行... |
|
| 13樓: | >>參與討論 |
| 作者: hotpower 于 2006/7/2 20:53:00 發(fā)布:
我更暈~~~0x55也沒錯呀~~~只是理論分析 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |