新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM7串口9位方式多機通信的編程技術

        ARM7串口9位方式多機通信的編程技術

        作者: 時間:2010-04-09 來源:網絡 收藏

          O——禁止奇偶產生和校驗。

          1——使能奇偶產生和校驗。

          奇偶選擇:設置奇偶校驗類型。

          OO——奇數(數據位+校驗位=奇數)。

          01——偶數(數據位+校驗位=偶數)。

          10——校驗位強制為1。

          11——校驗位強制為O。

          U0FCR寄存器的描述如下:

        U0FCR寄存器

          這里面注意第6、7位。

          Rx觸發點設置:通過設置這兩位可以調整接收FIF0中觸發RDA中斷的有效字節數量。

          00——觸發點O(1字節)。

          01——觸發點1(4字節)。

          10——觸發點2(8字節)。

          11——觸發點3(14字節)。

          3 編程實現

          上面已說明,的關鍵是第9位的編程發送和第9位的接收和判斷。

          對于發送端,利用UOLCR寄存器的設置便能實現第9位的編程發送。

          UOLCR=0x2B; //帶奇偶校驗,強制為l

          UOLCR=Ox3B; //帶奇偶校驗,強制為O

          通過以上設置,只要編程發送1字節,就自動將第9位按程序設置的0或1發送出去。

          難點在于接收端,即接收端把接收到的第9位放到哪了,程序員又如何知道這第9位是0還是1。

          其實,并不像51單片機那樣把接收到的第9位數據自動裝入SCON的RB8。實際上,并沒有這樣的寄存器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串口通信奇偶校驗功能,實現了,并在相關課題中成功應用,而且保證了通信的可靠性。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 井冈山市| 集安市| 隆尧县| 额济纳旗| 祁阳县| 海安县| 临泉县| 甘泉县| 金溪县| 贵定县| 梅河口市| 永胜县| 五台县| 武乡县| 汉寿县| 武宣县| 饶平县| 鹤峰县| 桑植县| 四会市| 无棣县| 马山县| 长汀县| 巴里| 隆子县| 乐业县| 吴江市| 玛纳斯县| 彰化市| 红原县| 双江| 如皋市| 资源县| 玉田县| 雅江县| 泽库县| 蛟河市| 织金县| 廉江市| 聂拉木县| 澳门|