移動嵌入ARM7串口9位方式編程技術
上面已說明,9位方式多機通信的關鍵是第9位的編程發送和第9位的接收和判斷。
對于發送端,利用UOLCR寄存器的設置便能實現第9位的編程發送。
UOLCR=0x2B; //帶奇偶校驗,強制為l
UOLCR=Ox3B; //帶奇偶校驗,強制為O
通過以上設置,只要編程發送1字節,arm就自動將第9位按程序設置的0或1發送出去。
難點在于接收端,即接收端把接收到的第9位放到哪了,程序員又如何知道這第9位是0還是1。
其實,ARM并不像51單片機那樣把接收到的第9位數據自動裝入SCON的RB8。實際上,ARM并沒有這樣的寄存器SCON,也沒有RB8位。要實現判斷第9位為1或0,只能利用arm串口通信的奇偶校驗功能!
具體思路如下:
①設置奇偶校驗使能;
②編程讀取UOLSR寄存器的PE位(具體含義見UOLSR寄存器的描述部分);
③編程判斷收到的l字節中有多少個“1”,并設置一標志PP;
④將上述標志與PE位比較處理;
⑤比較的結果就正確表示了第9位是“O”,還是“1”。
按照以上思路,可有效實現第9位的判斷。下面給出相應的程序代碼:

上述程序中變量u9就是得到的第9位標志:
當u9=OxFF時,說明第9位為1;
當u9=OxFE時,說明第9位為O。
還需注意的是,接收端奇偶校驗設置成偶校驗還是奇校驗,要根據后面程序中標志pp的設置而定。
4 總 結
本設計方案巧妙地應用arm串口通信奇偶校驗功能,實現了9位方式的多機通信,并在相關課題中成功應用,而且保證了通信的可靠性。
評論