新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > TMS320F2812的SPI接口設計

        TMS320F2812的SPI接口設計

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

        模塊有4種時鐘模式:上升沿無延時模式、上升沿有延時模式、下降沿無延時模式和下降沿有延時模式。25LC040是在時鐘的上升沿接收數據,下降沿發送數據,所以應該配置為上升沿發送數據,下降沿接收數據。
        2.2 接收數據流程
        通過讀取數據比較簡單,只需要依次傳送讀指令和待讀數據的低位地址,就可以在SPISOMI引腳上接收到25LC040中的數據。因為為主控制器,所以必須先發送一個無意義的數,才能夠啟動時鐘。在SPI狀態寄存器(SPISTS)中有一個SPI中斷標志位(SPIINT FLAG),該位是一個只讀標志位,由硬件設置。當SPI已經完成數據發送或者接收,正在等待下一步的操作時,SPI中斷標志位被置1,若使能SPI中斷,將產生一個SPI中斷請求??梢酝ㄟ^查詢SPI中斷標志位來判斷數據是否完成接收。若該標志為1,已接收的數據將被放入接收緩沖寄存器SPIRXBUF中,通過讀SPIRXBUF寄存器即可得到需要的數據。下面給出接收數據的子程序,其中addr為待讀數據的低位地址。

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

        2.3 發送數據流程
        SPI發送數據需要先完成寫使能操作,然后依次傳送寫指令和低位地址,才可以正確地進行數據寫入。向SPITXBUF寄存器中寫入待發的數據,SPI時鐘就會自動啟動,數據會由輸出引腳順次傳出;數據傳送完后,SPI時鐘自動停止。也可以通過查詢SPI中斷標志位來判斷數據是否完成發送,若該標志位為1,則可接著發送下一個數據。SPI設置成主模式時,發送完一個數據,必須要空讀一下SPIRXBUF寄存器,以清除SPI中斷標志位。由于在讀取數據的過程中已經包含讀SPIRXBUF寄存器,因此在讀取數據時不需要再空讀SPIRXBUF寄存器。下面給出發送數據程序,其中data為待發送的數據,addr為待發送數據將要存放的地址。

        2.4 運行效率的提升
        25LC040要求在寫操作之后有一定的寫周期時間來存儲數據,其間對25LC040的所有訪問會被忽略。每個器件都有規定的最壞情況寫周期時間,可以通過在再次訪問25LC040之前插入不小于最壞情況寫周期時間的延時等待來確保遵守寫周期時間。但是25LC040常常會在最大規定時間內完成寫周期,而此時TMS320F2812還在等待,會造成不必要的時間浪費。25LC040內部有一個狀態寄存器,其第l位為WIP(Write-In-Process)位,該位是一個只讀位,可以顯示25LC040是否處在寫周期內。當芯片處于寫周期時,WIP位置1;當寫操作完成時,WIP位立即清零。狀態寄存器在寫操作期間仍然可讀,可以通過讀狀態寄存器指令(WRSR)來獲取狀態寄存器的內容,從而得到WIP位的值以判斷寫周期何時完成,以進入下一步操作。這樣就可以減少不必要的等待時間,使運行更加高效。具體的流程如圖5所示。

        結語
        本文在分析TMS320F2812 SPI模塊的特點的基礎上,描述了SPI各個控制寄存器的作用。通過與EEPROM25LC040通信的實例,給出了SPI口的軟硬件方法,并對其中需要注意的關鍵問題進行了分析討論。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 漳浦县| 宜城市| 会宁县| 天等县| 金湖县| 崇信县| 汶上县| 天柱县| 肃宁县| 齐河县| 遂溪县| 自治县| 彝良县| 容城县| 彰化市| 大城县| 新绛县| 石嘴山市| 新沂市| 抚远县| 苍山县| 舒城县| 休宁县| 土默特左旗| 习水县| 张家港市| 清水河县| 观塘区| 宁津县| 晋州市| 浦北县| 长宁区| 盐津县| 如东县| 华蓥市| 清苑县| 南靖县| 荔浦县| 仪陇县| 阿克陶县| 东明县|