新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AT89C5131的接口設計

        基于AT89C5131的接口設計

        作者: 時間:2015-05-03 來源:網絡 收藏

          1.3 SPI端口特性及SPI通信設計

        本文引用地址:http://www.104case.com/article/273498.htm

          的SPI模塊允許在McU和其他外圍設備之間實現全雙工、同步、串行通信,它能以配置為主或者從兩種操作模式提供可編程極性和相位串行時鐘,同時還提供8個可編程的主機時鐘率。SPI模塊包括4個端點(MOSI,MISO,SCK,SS),MOSI和MISO都是用來傳輸數據的,且每次只能傳輸1個字節的數據。不同的是,MOSI將數據由主機輸出從機輸入,而MISO正好相反。SCK信號用以使通過MOSI和MI-SO的數據輸人/輸出設備同步,它可以由主機驅動產生8個時鐘周期,用以完成一個字節在串行通道上的交換。SS用于從機的選擇,低有效。SPI模塊的配置和初始化可以通過寄存器SPCON完成,而數據的交換則需要使用寄存器SPSTA和SPDAT兩個寄存器,在軟件編寫過程中,SPI能否正常工作主要取決于對上述3個寄存器的操作。

          在該設計中,SPI被配置為主機模式;SS端口處于無效狀態;通過MOSI端口向DSP傳輸參數及控制命令;DSP通過軟件設置P1.1(SS)端口的狀態表明數據是否正確接收,即若正確接收,則置P1.1為1,否則置P1.1為0;通過檢測P1.1的值來決定是否重傳數據。

          2 系統實現

          要使得上述設計在工程應用中得以實現,在硬件設計的基礎上。還需對接口進行軟件設計。AT89C5131的軟件設計主要是USB固件程序的設計,包括系統的初始化,USB接口、接口和SPI接口數據的收發以及控制面板按鍵的功能實現幾個方面。軟件設計采用C語言編程,最后軟件通過FLIP下載到AT89C5131芯片中。這里所采用的編譯環境為KeilμVision 3軟件設計平臺。在具體的工程實現過程中,也遇到了一些問題,但經過反復的修改及調試,這些問題都得到了很好的解決,其中主要有以下幾個方面:

          按鍵功能實現控制面板按鍵的功能是通過電平觸發中斷實現的。在設計之初,手動按下一次按鍵總會觸發多次中斷,對應的LED顯示總會很快的跳變,不能滿足按一次按鍵就顯示一個狀態的要求,于是筆者就在按鍵功能實現的程序中添加了等待函數,即每發生完一次中斷,就等待一段時間,經過調試,上面的問題沒有再出現。

          USB通信系統 系統要求USB能夠快速、高效地實現通信,對于速度問題可以通過Ping-pong模式得以解決。系統還要求USB實現雙向通信,為使其接收和發送數據互不干擾,所以選用了幾個端口實現不同數據的傳輸。

          SPI端口通信 SPI端口工程實現的關鍵是速度和工作模式的匹配。在設計之初,AT89C5131的SPI工作于從機模式,其數據傳輸受到DSP的控制,由于其傳輸速度遠遠低于DSP中SPI端口的處理速度,所以每通過AT89C5131的SPI傳輸一組數據時,DSP總需要通過軟件控制等待很長一段時間,既便如此也不能保證數據得到正確接收。于是,后來就將AT89C5131的SPI工作模式修改為主機模式,由AT89C5131主動控制數據的傳輸。然而實現雙向通信的關鍵是對SS信號的控制,在上述工作模式下,SS必須無效,Slave才能較可靠地向發送寄存器寫數。

          3 結 語

          AT89C5131宜于構成低成本的USB控制和通信系統,能實現計算機與設備的通信,并可靈活選擇多種通信協議。文中介紹基于AT89C5131的接口設計,主要是實現PC機與MCU以及MCU與DSP的通信,該設計已經在工程實際中得到應用。經過實踐檢驗,證明其合理且操作靈活,具有一定的實用意義。在設計過程中,深切體會到硬件設計與軟件設計的極大不同。編譯正確且邏輯沒有問題的程序源代碼,將其燒寫至芯片后,硬件電路并不一定能完全地實現所要求的功能,所以必須經過反復的修改程序、燒寫、調試,直至正確實現功能。

        51單片機相關文章:51單片機教程


        存儲器相關文章:存儲器原理



        上一頁 1 2 下一頁

        關鍵詞: AT89C5131 UART

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平果县| 合江县| 临桂县| 当阳市| 恩施市| 健康| 隆安县| 久治县| 逊克县| 禄丰县| 武川县| 隆回县| 德兴市| 青神县| 名山县| 富蕴县| 德格县| 盐源县| 得荣县| 漳平市| 南陵县| 井研县| 金阳县| 巢湖市| 庄河市| 奇台县| 增城市| 新晃| 清新县| 绥棱县| 衡东县| 宁蒗| 平阳县| 志丹县| 潜山县| 黔西县| 乌什县| 金山区| 信丰县| 平顶山市| 墨玉县|