《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于GM814X的單片機串口擴展及其應用
基于GM814X的單片機串口擴展及其應用
來源:電子技術應用2012年第9期
張 偉, 李文魁, 陳永冰
海軍工程大學,湖北 武漢430033
摘要: 介紹了基于C8051F340單片機和GM814X串口擴展芯片的串口擴展方法。針對實際裝備的通信和接口需求,進行了RS-485通信終端的電路軟硬件設計。實際應用表明,該通信終端設計可靠,性價比高,解決了單片機在串行通信系統中的串口局限問題。
中圖分類號: TP334
文獻標識碼: A
文章編號: 0258-7998(2012)09-0096-04
Design and implementation of serial port extension based on GM814X
Zhang Wei, Li Wenkui, Chen Yongbing
Naval University of Engineering, Wuhan 430033, China
Abstract: his paper introduces a method of serial interface extension based on the C8051F340 MCU and the GM8141 chip, combines with the actual needs to design and implement, and gives the practical circuit of hardware and communication program section. The experimental application proved that the design is reliable, cost-effective and solves the limited serial port in the serial communication.
Key words : C8051F340; GM814X; serial port extension; serial communication

    在嵌入式系統中,串行接口設備憑借其控制靈活、接口簡單、占用系統資源少等優點而得到廣泛應用。以單片機為核心的嵌入式系統,單片機常需要連接多個串行外設,如上位計算機、串口LCD、外部傳感器等。通常單片機只提供一到兩個異步串行通信接口(UART)。因此,為了實現多串口通信,必須對其串行口進行擴展。

    常見的串口擴展方法有軟件模擬法和硬件擴展法。軟件模擬法通過兩個通用I/O引腳、兩個定時器和一個外部中斷用軟件模擬UART的發送/接收功能,成本低,易于實現,但占用資源多, 誤碼率高, 不適用于高速傳輸[1]。硬件擴展法主要有三種方式: (1)基于普通I/O口的串口擴展,如采用16C554芯片,其占用資源多,價格較貴; (2)基于USB的多串口擴展,如專用USB/串口轉換器,可擴展最多16路串口,性能可靠,但體積大,且價格隨串口數增加顯著提高;(3)基于SPI口的串口擴展。
    本文采用GM814X串口擴展接口芯片通過單片機的增強型串行外設接口(SPI)實現多串口擴展。GM814X控制芯片在有限的資源下,可以增加擴展串口的數量并且性價比較高,運行可靠穩定,便于嵌入式系統使用。該方法成功應用于某RS-485通信終端開發。此通信終端與實際設備對接,工作穩定,設置靈活,滿足RS-485總線高速通信要求。
1 基于GM814X的串口擴展
    GM814X是專用低功耗串行口擴展芯片,該芯片主要是為了解決單片機等MCU自身的UART串口有限、不能與多個基于UART通信的外圍智能模塊及器件通信等問題而推出的。它可將現有單片機的單串口或雙串口擴展成2個(GM8141)或4個(GM8142)標準的UART,并具備兩種工作模式:串口擴展模式和廣播模式。串口擴展模式下,各子串口可獨立設置波特率、幀長和校驗方式,并同時與SPI接口進行數據收發[2]。
1.1 SPI接口及時序
    增強型串行外設接口(SPI)提供訪問一個全雙工同步串行總線的能力,可以使用3線或4線方式,并可在同一總線上支持多個主器件和從器件[3]。GM814X芯片是基于SPI接口實現的,因此SPI的時序對串口功能的使用尤為重要,時序圖如圖1所示。由于SPI時序較為簡單,利用GM8141擴展串口時MCU選擇比較靈活,可選用帶SPI口的MCU(如C8051F340)實現,也可用通用I/O口通過軟件模擬SPI實現。

    SPI 上的數據為16位,其中高8位為子串口地址及附加命令和狀態信息,低8位為實際收發數據。數據接收以時鐘上升沿為采樣標志,數據發送以時鐘下降沿為移位標志。16 bit的數據收發從CS為低時有效,當CS拉高后,結束數據的收發,并對數據進行判斷和有效性分析。
1.2 GM814X芯片
    GM814X是一款兼容SPI總線的UART擴展芯片,其工作模式、各子串口的波特率、數據幀長等參數可通過向功能設置寄存器寫入控制字進行靈活設置,I/O口占用率低。通過寫功能設置寄存器的波特率分頻標志位,各子串口可在母串口波特率基礎上分頻同時工作。其主要指標為:晶振頻率為3.686 4 MHz 時, 波特率范圍為600 b/s~230.4 kb/s,輸出波特率誤差小于0.1%,輸入波特率誤差允許小于3.4%。以GM8141芯片為例,其引腳功能如圖2所示。

    SHDN為軟件shutdown控制標志位,0為正常工作模式,1為低功耗掉電模式。掉電模式下,GM814X自動清除中斷寄存器的內容,但保留功能寄存器內的數據。當多個GM814X芯片掛在SPI總線上時,外部MCU可通過CS引腳選擇與其中某個GM814X通信時的控制,以此實現芯片的并聯工作。
2 應用設計
2.1 RS-485通信終端

    RS-485串行接口采用差分傳輸方式,半雙工方式通信,抗共模干擾能力強,并可聯網構成分布式系統,在要求精度高的實際工業儀器中應用廣泛[4]。
    本文設計的RS-485通信終端作為一個獨立的多路RS-485總線接口設備,具有多路RS-485信號的數據采集、發送及數據處理功能。通過外接LCD顯示屏及矩陣鍵盤提供獨立的人際交互手段。此外,該終端還可與PC機構成上、下位機系統,實現更為復雜的功能。其硬件組成如圖3所示。

    根據設備配置,該通信終端需要4個串口:C8051F340自帶的UART0用于與串口LCD屏通信,與矩陣鍵盤配合,實現參數顯示和人機交互;自帶的UART1用于上位機進行RS-232通信,用于接收其指令或數據信息;擴展的兩個串口用于與RS-485外設進行RS-485總線通信。
2.2 電路設計
    選用C8051F340作為主控MCU,C8051F340具有豐富的數字外設如UART、SPI、SMBus/I2C、USB等資源,在工程中得到廣泛應用。通過GM8141實現串口擴展,一片MAX232實現兩路單片機TTL電平與RS-232C電平的雙向轉換,兩片MAX485實現GM8141的TTL電平與RS-485電平的雙向轉換。電路圖見圖4。

 

 

    GM8141與單片機采用SPI口的3線單主方式和3線單從方式連接,SPI時鐘為250 kHz。IRQ引腳外接30 k?贅上拉電阻。當FIFO 接收到數據后置位R,并產生IRQ 中斷,該IRQ 中斷連接C8051340的P0.3管腳,當單片機響應,且對GM814X 進行了收(發)數據操作后,該中斷即被清除;若接收FIFO 內還有數據,則繼續重復產生新的IRQ中斷和置位R,直到FIFO 內的數據被讀取完;片選信號CS連接單片機的P1.6管腳,控制SPI時鐘的有效性。
    MAX485的發送/接收轉換器由使能端RE和DE控制。當RE和DE都為0時, MAX485處于接收狀態;RE和DE都為1時,MAX485處于發送狀態。用于遠距離傳輸時,應在A+和B-輸出端并接匹配電阻。
2.3 軟件設計
    單片機采用C51語言編程,在Keil uVision3集成開發環境下調試。
    使用GM8141進行擴展串口通信之前,首先進行初始化。SPI的初始化需設置工作方式和時鐘頻率。GM8141的初始化需要設置工作模式,字串口的波特率和數據幀長等,通過向配置寄存器中寫入相應的控制字實現。
  終端對于RS-485外設的通信主要是接收和發送數據程序,應嚴格按照圖3中的SPI接口時序圖進行設計。
  以下為部分程序代碼,串口擴展通信時僅給出RS-485通道1的發送接收程序,通道2類似,多串口通信初始化程序流程如圖5所示。

    (1)初始化:
    void SPI0_Init()
    功能:對SPI進行初始化
    {
           SPI0CFG=0x40;    //設置工作方式、3線模式
           SPI0CN=0x01;    //使能SPI
           SPI0CKR=23;    //SPI0時鐘為250 kHz
    }
    void Init_System()
    功能:對GM8141進行初始化
    {
        uint temp=0;
        while(cnt0<240);          //等待LCD初始化
         W_8141Config(1,1,11);   
                       //串口1、發送中斷屏蔽、波特率57 600
    temp=Read8141Config(1);  //讀取配置返回結果
    EX0=1;                   
                           //開外部中斷(允許接收485信號)
    }
    調用函數說明:
       ①void W_8141Config(uchar n, uchar high, uchar low)
     功能:配置GM8141指定串口、波特率,屏蔽設置等
  參數:n為串口號;high為配置寄存器的高位字節(低三位有效),low為低位字節。
       ②uint Read8141Config(uchar n) 
  功能:讀GM8141配置后的狀態
    (2) GM8141發送函數:
    uint WR_8141(uchar W_com, uchar W_dat)    
    參數:W_com是對要發送的數據配置、W_dat是發送數據,W_dat與W_com的發送程序一樣
    {
        uint R_state,R_dat; uint Receive;
        CS=0;                                        //GM8141有效
    Delay(20);     
                //SPI時序要求時間:CS低電平到第一次
                                       SCLK的延遲時間Tcss           SPI0DAT=W_com;  
                         //向SPI0數據寄存器中寫入配置信息
        while(!SPIF);                    //等待SPI發送數據結束
        SPIF=0;                  //清SPI數據結束中斷標志位
        Delay(80);                      //SPI時序要求延遲時間
           R_state=SPI0DAT;               //讀取GM8141接收值
        &hellip;&hellip;
    }
    (3) GM8141接收函數:
    uint ReadFIFOData(void)
    {
        uint Receive;    
        Receive=WR_8141(0x00,0x00);
                                 //GM8141單獨數據接收模式
    return Receive;                    //讀出接收FIFO數據
    }
    C8051F340需要處理多種外設信息,應合理安排單片機的中斷優先級。本電路中,優先考慮RS-485外設的高速通信,設置為高優先級,并采用外部中斷0方式接收RS-485數據。當GM8141接收數據時,接收中斷中應首先接收完整數據,然后判斷子串口的數據地址信息;發送數據時所發送的數據幀應該包含其到達的子串口地址,這樣才能實現正確接收。
    在實驗室條件下進行前期調試開發時,通過RS-232與RS-485轉換器實現PC機模擬實際裝備的RS-485信號進行通信,各串口測試運行良好;后期實裝對接時,與RS-485外設通信穩定可靠,可實現多路RS-485信號的通信,實時性和可靠性均能達到要求。實踐表明,通過GM814X擴展串口可以很好地解決串行通信系統的串口局限問題。隨著單片機的廣泛應用,此類擴展串口方法在解決同類問題中具有一定的使用參考價值。
參考文獻
[1] 張毅坤.單片微型計算機原理及應用[M].西安:西安電子科技大學出版社,2006.
[2] 成都國騰微電子. GM8141/2數據手冊[M]. 2006.
[3] 潘琢金.C8051Fxxx高速SOC單片機原理及[M]. 北京:北京航空航天大學出版社,2002.
[4] 劉小芳.單片機的多串口擴展技術的設計[J]. 計算機測量與控制,2004,12(11):1088-1090.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美色视频一区| 91久久极品少妇xxxxⅹ软件| 欧美激情国产日韩| 久久综合网络一区二区| 久久国产免费看| 欧美一站二站| 欧美一区二区成人| 欧美一区二区三区四区夜夜大片| 亚洲免费一在线| 亚洲欧美激情诱惑| 欧美一级精品大片| 欧美在线高清| 欧美在线国产| 久久精品一区二区三区四区| 久久国产视频网| 久久久久久久999| 久久中文字幕一区| 欧美电影打屁股sp| 欧美日韩成人综合在线一区二区 | 亚洲国产视频一区| 亚洲电影免费在线| 亚洲第一偷拍| 亚洲精品免费在线播放| 99re在线精品| 亚洲视频每日更新| 午夜精品成人在线视频| 欧美专区18| 美女日韩在线中文字幕| 欧美精品v国产精品v日韩精品| 欧美日韩国产黄| 欧美午夜视频网站| 国产色产综合产在线视频| 韩曰欧美视频免费观看| 亚洲成人影音| 日韩亚洲成人av在线| 亚洲一区精品电影| 欧美在线视频导航| 亚洲日本一区二区| 亚洲一区二区精品| 久久精品水蜜桃av综合天堂| 欧美成年人网站| 欧美视频国产精品| 国产日韩欧美一区二区三区在线观看 | 欧美午夜性色大片在线观看| 国产日韩精品久久久| 精久久久久久| 日韩午夜电影av| 欧美亚洲免费电影| 亚洲精品乱码久久久久久| 亚洲午夜一区二区三区| 久久精品91久久久久久再现| 欧美sm重口味系列视频在线观看| 欧美日韩一区二区免费视频| 国产视频一区三区| 亚洲人成在线观看一区二区| 亚洲一区三区电影在线观看| 亚洲韩日在线| 亚洲综合国产激情另类一区| 久久久精品动漫| 欧美日韩黄色一区二区| 国产一区二区三区日韩| 日韩亚洲视频| 欧美在线91| 亚洲一级电影| 免费国产自线拍一欧美视频| 欧美日韩亚洲高清一区二区| 国产主播精品在线| 一本大道久久a久久精品综合| 欧美在线视频a| 亚洲一区二区成人| 欧美成人免费小视频| 国产精品亚洲激情| 亚洲精品视频在线| 久久成人精品无人区| 亚洲小视频在线观看| 久久先锋影音av| 国产精品免费视频xxxx| 亚洲电影免费在线 | 欧美一区二区三区四区在线| 一本色道精品久久一区二区三区 | 免费观看在线综合色| 国产精品视频免费一区| 亚洲片在线资源| 久久丁香综合五月国产三级网站| 在线亚洲精品| 麻豆成人在线| 国产一级一区二区| 亚洲午夜精品国产| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产精品久久久久久久电影| 91久久久一线二线三线品牌| 久久国产视频网| 香蕉久久夜色精品国产使用方法| 欧美国产在线电影| 国产一区在线播放| 亚洲综合成人婷婷小说| 亚洲午夜高清视频| 欧美成人精品福利| 一区二区三区在线视频免费观看| 亚洲欧美国产另类| 亚洲综合色网站| 欧美日韩久久| 亚洲精品美女在线观看| 亚洲精品乱码久久久久久日本蜜臀 | 国产专区欧美精品| 亚洲欧美大片| 午夜精品一区二区三区在线视| 欧美日韩国产综合一区二区| 亚洲黄一区二区三区| 亚洲成在线观看| 久久青草久久| 国内外成人免费激情在线视频| 午夜亚洲激情| 久久av资源网| 国产三级精品三级| 欧美在线观看视频一区二区三区| 久久av一区| 国产一区二区成人久久免费影院| 欧美一级日韩一级| 久久国产婷婷国产香蕉| 国产日本欧美在线观看| 亚洲欧美日韩国产中文| 欧美中文在线字幕| 国产午夜精品一区理论片飘花| 亚洲欧美国产一区二区三区| 欧美一区二区在线看| 国产区精品视频| 久久国产精品99久久久久久老狼| 久久精品人人做人人综合| 国产亚洲激情| 亚洲国产成人精品女人久久久 | 国产精品久久久久久久久久三级 | 亚洲日本中文字幕区| 欧美电影免费观看网站| 亚洲精品国产精品国自产在线| 99av国产精品欲麻豆| 欧美日韩免费一区| 在线视频欧美一区| 午夜一级久久| 国产在线拍揄自揄视频不卡99| 亚洲第一久久影院| 欧美激情第3页| 一区二区成人精品 | 亚洲桃色在线一区| 国产精品午夜在线观看| 欧美在线高清视频| 女女同性精品视频| 99精品视频一区二区三区| 亚洲欧美日本日韩| 国产一区观看| 亚洲人成人一区二区三区| 欧美日本一道本| 亚洲视频在线一区| 久久国产一区二区| 最新国产の精品合集bt伙计| 中日韩视频在线观看| 国产精品亚洲综合天堂夜夜| 亚洲承认在线| 欧美日韩黄视频| 亚洲欧美日韩一区二区三区在线观看| 久久久久久黄| 99国产精品| 久久久久青草大香线综合精品| 在线欧美日韩| 亚洲女优在线| 亚洲国产成人不卡| 香蕉成人啪国产精品视频综合网| 国产一区日韩一区| 一卡二卡3卡四卡高清精品视频| 国产女人aaa级久久久级| 亚洲日本精品国产第一区| 国产精品久久久久久户外露出| 久久福利视频导航| 国产精品magnet| 亚洲经典自拍| 国产农村妇女精品一二区| 亚洲精品国产精品国自产观看| 国产精品久久久久久久午夜 | 亚洲国产高清一区二区三区| 欧美日韩中文字幕在线| 久久精品国语| 国产精品高潮呻吟久久av黑人| 亚洲电影在线看| 国产精品你懂的在线欣赏| 亚洲国产婷婷香蕉久久久久久| 国产精品www色诱视频| 亚洲国产美女| 国产欧美一区二区精品婷婷| 日韩一级黄色片| 黄色免费成人| 亚洲欧美中文日韩在线| 亚洲啪啪91| 久久亚洲春色中文字幕久久久| 一本久久a久久精品亚洲| 蜜臀久久99精品久久久画质超高清| 亚洲午夜精品一区二区三区他趣| 欧美激情第二页| 久久精品99国产精品酒店日本| 国产精品豆花视频| 亚洲免费观看高清完整版在线观看|