新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR串口多機通訊模式的問題

        AVR串口多機通訊模式的問題

        作者: 時間:2013-01-24 來源:網絡 收藏

        在多機通信過程中,所有設備的是并在通信線上的,其中只能有一個設備為主機,其他為從機,通信由主機發起。數據幀一般采用1位起始位、9 位數據位,其中第9位(RXB8)被用作為表征該幀是地址幀還是數據幀。當幀類型表征位為“1”時,表示該幀數據為一個地址幀;當幀類型表征位為“0” 時,表示這個幀為一個數據幀。

        中,通過設置從機的UCSRA寄存器中標志位MPCM,可以使能USART接收器對接收的數據幀進行過濾的功能。如果使能了過濾功能,從機接收器對接收到的那些不是地址信息幀的數據幀將進行過濾,不將其放入接收緩沖器中,這在多機通信中有效的方便了從機MCU處理數據幀程序的編寫(同標準51結構相比)。而發送器則不受MPCM位設置的影響。

        多機通信模式允許多個從機并在通信線路上,接收一個主機發出的數據。通過對接收到的地址幀中的地址進行解碼,確定哪個從機被主機尋址。如果某個從機被主機尋址,它將接收接下來主機發出的數據幀,而其它的從機將忽略數據幀,直到再次接收到一個地址幀。(從機地址是由各個從機自己的軟件決定的)。

        對于在多機通信系統中的主機MCU,可以設置使用9位數據幀結構(UCSZ=7)。當發送地址幀時,置第9位為“1”;發送數據幀時,置第9位為“0”。在這種情況下,從機也必須設置成接收9位數據幀結構。

        多機通信方式的數據交換過程如下:

        1)設置所有從機工作在多機通信模式(MPCM=1)。

        2)通信開始是由主機先發送一個地址幀,如8位數據為0X01(1號從機地址),第9位=“1”,呼叫1號從機。

        3)所有從機都接收和讀取該主機發出的地址幀。在所有從機的MCU中,RXC標志位被置位,表示接收到地址幀。

        4)每一個從機MCU讀UDR寄存器,并判斷自己是否被主機尋址。如果被尋址,清UCSAR寄存器中的MPCM位,等待接收數據;否則保持MPCM為“1”,等待下一個地址幀的接收(該步應由用戶軟件處理實現):

        A)作為1號從機的MCU處理過程為:收到地址幀后,判定讀取UDR數據0X01為自己的地址,將MPCM位置“0”,接收之后所有主機下發的數據幀,直到下一個地址幀為止。

        ? B)其它從機MCU的處理過程:收到地址幀后,判定讀取UDR數據0X01不是自己的地址,將MPCM位置“1”,這樣他們將忽略主機隨后發送的數據幀,直到主機再次發送地址幀。

        5)當被尋址的從機MCU接收完最后一個數據幀后,將MPCM位置位,等待下一個地址幀的出現(該步也應由用戶軟件處理實現),然后從步驟2開始重復。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 高州市| 马公市| 乐山市| 邵阳县| 辽阳县| 阿图什市| 桑植县| 吴堡县| 广丰县| 青浦区| 青州市| 尼木县| 镇沅| 峨山| 彝良县| 石阡县| 浦县| 肥城市| 桂东县| 闸北区| 沧州市| 金塔县| 石城县| 文安县| 紫阳县| 荥阳市| 大名县| 冷水江市| 金山区| 镇远县| 闽侯县| 拉萨市| 安新县| 广丰县| 仪陇县| 蒙自县| 凤翔县| 吉木乃县| 常山县| 新密市| 上林县|