本應用筆記介紹了用于超高速閃存微控制器(如DS89C430和DS89C450)的軟件(bitbang)SPI庫。對庫的應用程序接口及其功能說明進行了說明。該應用程序接受串行輸入并在Crystalfontz LCD上顯示文本。
介紹
超高速微控制器系列使用單時鐘周期內(nèi)核,在相同的時鐘頻率下,其速度比傳統(tǒng) 8051 快 12 倍。超高速微控制器系列的成員包括不同數(shù)量的內(nèi)部閃存和MOVX SRAM,以實現(xiàn)簡單的系統(tǒng)設計。這些微控制器具有多種特性,包括兩個全雙工串行端口、三個定時器計數(shù)器、四個雙向 I/O 端口和六個外部中斷源。雖然它們沒有硬件串行外設接口(SPI)端口,但可以通過軟件輕松模擬。
本應用筆記使用用于超高速微控制器的全功能軟件SPI主站和一個簡單的應用程序,利用它來控制Crystalfontz LCD(www.crystalfontz.com)。
應用概述
該應用程序接受來自標準串行終端程序的串行端口 0 上 57,600 波特(使用 33MHz 晶體時)的 ASCII 數(shù)據(jù)。數(shù)據(jù)被回顯到終端并存儲在數(shù)據(jù)存儲器中,直到檢測到回車;然后累積的文本將顯示在LCD上。此應用中使用的LCD是具有低速SPI接口的Crystalfontz SKD204-634 V2.0串行LCD。它連接到DS89C430,如圖1所示。復位后,終端上將打印“DS89C430軟件SPI應用筆記”橫幅。當應用程序偵聽輸入數(shù)據(jù)時,它會打印“=>”提示。
圖1.接線圖。
軟件 SPI 庫
此應用程序使用的軟件 SPI 庫是一個高度可配置的 SPI 主站,具有以下功能:
四種SPI時鐘模式
8 位和 16 位字傳輸
SPI 時鐘拉伸
可選原子傳輸
該庫支持的四種SPI時鐘(SPI_CLK)模式由CKPHA和CKPOL定義。CKPOL 位定義 SPI 時鐘的空閑狀態(tài),CKPOL = 0 力SPI_CLK空閑低電平,而 CKPOL = 1 力SPI_CLK空閑高電平。CKPHA 改變了用于信號傳輸數(shù)據(jù)的邊緣。當 CKPHA = 0 時,SPI_CLK的第一個邊指定從站和主站何時應對其輸入進行采樣。當 CKPHA = 1 時,SPI_CLK的第二個邊指定何時采樣。當 CKPHA = 1 時,主站和從站應在第一個邊沿的輸出上顯示其數(shù)據(jù)SPI_CLK。這允許數(shù)據(jù)有足夠的保留時間。當 CKPHA = 0 時,當從屬選擇 (SS) 行變?yōu)榛顒訝顟B(tài)時,數(shù)據(jù)應變?yōu)橛行?。請注意,大多?shù)設備要求在 CKPHA = 0 時使用 SS 行以允許正確的計時,而當 CKPHA = 1 時,SS 可能是可選的。圖 2 說明了此行為。
圖2.SPI 時序圖。
數(shù)據(jù)作為數(shù)據(jù)存儲器中的字節(jié)數(shù)組發(fā)送到SPI庫。在 8 位字模式下,這些字節(jié)一次傳輸一個。在 16 位字模式下,將傳輸兩個字節(jié),但此操作僅使用請求數(shù)量的一次傳輸。請注意,在本文檔中,“word”的長度可能為 8 位或 16 位,具體取決于所選模式。
為了連接到較慢的SPI從站,可以使用SPI_CLK拉伸將每段SPI_CLK周期增加1μs。
SS信號是可選的,因為并非所有SPI設置都需要SS信號。大多數(shù) SPI 器件期望 SS 的活動狀態(tài)為低電平,但其他器件則要求高電平作為活動狀態(tài)。某些 SPI 設備期望 SS 信號在每次字傳輸同步后變?yōu)榉腔顒訝顟B(tài)。
為了便于原子傳輸,可以在傳輸時禁用中斷。
軟件 SPI 庫接口
與SPI庫的接口如下。要傳輸?shù)臄?shù)據(jù)必須作為數(shù)組位于數(shù)據(jù)存儲器的連續(xù)部分中。該庫要求數(shù)據(jù)指針零 (dptr0) 指向要傳輸?shù)臄?shù)據(jù)的開頭。要傳輸?shù)淖謹?shù)應放在 R3、R2、R1 和 R0 中,R3 是 MSB。所需的拉伸值應放置在 R4 中。SPI庫的選項應放置在R5中,其位值定義為:
R5.0 - 中聯(lián) | 設置為 1 - SPI_CLK 空閑高 |
R5.1 - 中發(fā) | 設置為 1 - 在第二個SPI_CLK邊上傳輸 |
R5.2 - 字模式 | 設置為 1 - 使用 16 位字傳輸 |
R5.3 - 無偏斜 | 設置為 1 - 在傳輸期間關閉中斷 |
R5.4 - 使用SS | 設置為 1 - 在傳輸過程中使用 SS 行 |
R5.5 - 同步SS | 設置為 1 - 每個單詞后使 SS 處于非活動狀態(tài) |
R5.6 - 反轉(zhuǎn)SS | 設置為 1 - SS 線路處于高電平有效 |
R5.7 - 未定義 |
設置所有寄存器后,通過調(diào)用 xmitSPI 函數(shù)開始傳輸。傳輸完成后,每次單詞傳輸期間讀取的數(shù)據(jù)將位于為傳輸傳遞的數(shù)據(jù)數(shù)組中的相應單詞位置。請注意,在調(diào)用 xmitSPI 后,dptr0 將指向傳輸數(shù)組的開頭,但指向的數(shù)據(jù)將更改。
代碼列表:軟件SPI和Crystalfontz LCD瀏覽器
此應用程序是使用 Keil μVision2 構建的,但只需稍作修改,即可使用任何 8051 匯編程序。應用程序和 SPI 庫源碼和二進制文件可供下載。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7559瀏覽量
151481 -
SPI
+關注
關注
17文章
1707瀏覽量
91642 -
應用程序
+關注
關注
37文章
3271瀏覽量
57727
發(fā)布評論請先 登錄
相關推薦
評論