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

超高速微控制器硬件增強(qiáng)串口功能

使用超高速閃存微控制器實(shí)現(xiàn)快速內(nèi)存?zhèn)鬏?/a>

DS89C430/DS89C450超高速閃存微控制器存儲(chǔ)器接口時(shí)序

將基于8051的微控制器連接到SCI端口

超高速微控制器硬件增強(qiáng)串口功能

評(píng)論