新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 新型數據通信方式GSM-R手持終端的實現

        新型數據通信方式GSM-R手持終端的實現

        作者: 時間:2011-07-24 來源:網絡 收藏

        4 軟件

          本文使用ATMEGA48的SPI接口直接控制WT588D,對其相應的地址進行讀操作,完成選定語音的播放。SPI收發程序往往是一段采用輪循完成收發的簡單代碼,也就是單片機通過MOSI寄存器發送數據。同時根據查詢MOSI狀態寄存器的狀態來判斷是否能發送下一個數據。在此過程中,單片機處于死等的狀態,不能進行任何其它任務的執行。對于高速的AVR來講,采用這種大大降低了MCU的效率,無法發揮其高速、高效的特點。同時,由于ATMEGA48在完成語音回示的同時,還需要完成語音通話、故障記錄等功能,因此需要MCU能更高效地完成SPI收發功能。

          在使用ATMEGA48時,根據芯片本身的特點(片內大容量RAM,適合采用高級語言編寫系統程序),使用了一種新的方法,采用接收和發送緩沖器加中斷的方法,編寫高效可靠的SPI收發程序。

          基本思路如下:

          1、發送數據時,如果MOSI數據寄存器為空,則直接將需要發送的數據填入MOSI數據寄存器,由單片機自動完成數據的發送。

          2、發送數據時,如果MOSI數據寄存器不為空,也就是說有待發的數據,此時將需要發送的數據填入發送數據緩沖區(構建在ATMEGA48的RAM中)。單片機將數據置入發送緩沖區中,就算已經完成了數據的發送,可以執行別的指令,這樣,充分發揮了其并行高速運行的特點。本文在中斷處理程序中完成對發送緩沖區數據的處理。每次MOSI數據寄存器數據發送完成,都會產生一個中斷,因此當產生中斷時,表明前一個數據已經發送完成,將待發的發送緩沖區數據置入MOSI數據寄存器,進行數據的自動發送。

          以下為SPI數據發送程序和SPI中斷處理程序,流程分別如圖2、圖3所示。

        圖2 數據發送程序

        圖3 中斷處理程序

          采用緩沖加中斷的SPI發送方法,能夠高效地完成數據的收發,提高MCU的效率,具有以下優點:

          l、采用兩個8字節的接收和發送緩沖器來提高MCU的效率,如當程序發送數據時,如果SPI口不空閑,就將數據放入發送緩沖器中,MCU不必等待,可以繼續執行其它工作。而SPI的硬件發送完一個數據后,產生中斷,由中斷服務程序負責將發送緩沖器中的數據依次送出。

          2、數據緩沖器結構是一個線性的循環隊列,由讀、寫和隊列計數器3個指針控制,用于判斷隊列是否空、溢出,以及當前數據在隊列中的位置。

          3、由于在數據發送程序和中斷服務程序中都要對數據緩沖器的讀、寫和隊列計數器3個指針進行判斷和操作,為了防止沖突,在數據發送程序中對3個指針操作時臨時將中斷關閉,提高了程序的可靠性。

          5 結語

          整個控制系統采用緩沖加中斷的SPI發送方法,使用兩個數據緩沖器,分別構成循環隊列。這種程序設計思路,不但程序的結構性完整,同時也解決了高速MCU和低速串口之間的矛盾, 程序中任務的并行運行,提高了MCU的運行效率,同時這種程序設計的思路對編寫UART、I2C的串行通信接口程序都是非常好的借鑒。

        數字通信相關文章:數字通信原理


        通信相關文章:通信原理



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 荣成市| 饶平县| 钟祥市| 崇信县| 阿拉善左旗| 高陵县| 四平市| 南充市| 丰台区| 十堰市| 清镇市| 尤溪县| 海丰县| 琼结县| 林周县| 应用必备| 友谊县| 德安县| 弥渡县| 武功县| 施秉县| 剑阁县| 江安县| 上杭县| 平顺县| 喀喇| 大足县| 连平县| 杭州市| 永和县| 柞水县| 栾川县| 昌吉市| 洛宁县| 汉阴县| 涡阳县| 云龙县| 长子县| 奉新县| 云安县| 甘洛县|