平頭哥CDK助力中科昊芯HX2000系列芯片之SPI通信協(xié)議
全球智能環(huán)保優(yōu)先,高效便捷的數(shù)據(jù)處理已成為未來必然趨勢(shì)。SPI協(xié)議因其傳輸速率高,通訊簡(jiǎn)單等優(yōu)勢(shì),在電機(jī)轉(zhuǎn)向轉(zhuǎn)速指令收發(fā)、射頻通訊與A/D、D/A傳感器LCD/OLED顯示等方面得到快速應(yīng)用。

在平頭哥半導(dǎo)體有限公司的劍池集成開發(fā)環(huán)境(簡(jiǎn)稱“CDK”)V2.10.1版本開始支持中科昊芯HX2000系列芯片開發(fā)與調(diào)試后,本文以HXS320F28027的SPI模塊向串行FLASH通訊實(shí)例對(duì)SPI協(xié)議及程序展開介紹。
HX2000系列SPI通訊原理如下,通過IO MUX設(shè)置外設(shè)引腳功能,CPU通過主控制器輸出預(yù)分頻與時(shí)鐘使能,通過時(shí)鐘引腳為通信網(wǎng)絡(luò)提供時(shí)鐘,通過SPIBRR寄存器配置波特率,數(shù)據(jù)寫到SPIDAT或SPITXBUF時(shí)會(huì)啟動(dòng)發(fā)送最高有效位,之后數(shù)據(jù)移入SPIDAT最低有效位,以右對(duì)齊方式存儲(chǔ)到SPIRXBUF中。


SPI模塊使用前,需先進(jìn)行:(1)復(fù)位初始化操作:
①通過SPICCR[SPI SW RESET]位清零復(fù)位SPI;
②根據(jù)需要進(jìn)行SPI的初始化、格式與波特率及管腳功能配置;
③SPI SW RESET位置1,使SPI脫離復(fù)位。
(2)FIFO配置:
①通過SPIRST在任一階段復(fù)位FIFO模式;
②通過SPIFFTX[SPIFFENA]置位使能FIFO模式,以激活SPI及其FIFO寄存器;
③發(fā)送SPITXINT,接收錯(cuò)誤與溢出中斷SPIRXINT配置;
④通過SPIFFCT調(diào)整傳輸速率延遲0~255個(gè)SPCLK周期,以匹配外設(shè)通訊速率;
⑤通過TXFFST或RXFFST判斷發(fā)送與接收到的字的數(shù)量,確認(rèn)收發(fā)成功。
本例程主要完成SPI與W25Q64系列FLASH數(shù)據(jù)訪問功能,通過IO MUX配置GPIO19在傳輸期間維持低電平,復(fù)位初始化期間高電平輸出,與SPI外設(shè)的選通CS引腳相連,實(shí)現(xiàn)FLASH數(shù)據(jù)讀寫。其連接原理如下圖,訪問過程為:


①讀Flash.ID與Flash.SReg狀態(tài);②寫使能,讀取讀與寫寄存器狀態(tài);③寫使能,擦除芯片;④延時(shí)等待4個(gè)周期,等待芯片數(shù)據(jù)擦除完成;⑤寫使能,向FLASH寫入數(shù)據(jù);⑥讀出寫入FLASH芯片的數(shù)據(jù);注:每次讀寫后需延時(shí)等待,以匹配外設(shè)傳輸速率。
詳細(xì)介紹參見公眾號(hào)B站視頻講解,二維碼為下圖:

工欲善其事必先利其器,程序開發(fā)前準(zhǔn)備階段如下表:
·開發(fā)環(huán)境:劍池集成開發(fā)環(huán)境V2.10.1

下載地址:https://occ.t-head.cn/community/download?id=575997419775328256
·開發(fā)板:Core_DSC28027核心板

http://haawking.cn/core28027
·仿真器:

申請(qǐng)地址:http://haawking.cn/DSP-EMULATOR
下載界面如下:

準(zhǔn)備好開發(fā)工具后就可以開始程序開發(fā)。詳細(xì)的“CDK”安裝及創(chuàng)建工程方法請(qǐng)看第一篇推送《芯教程|平頭哥CDK助力中科昊芯HX2000系列芯片系統(tǒng)開發(fā)》。例程選用HXS320F28027核心板與W25Q64系列FLASH進(jìn)行數(shù)據(jù)訪問,硬件連接如下:

接著在CDK上開發(fā)SPI訪問FLASH讀寫數(shù)據(jù)程序,代碼包括:①外設(shè)GPIO引腳、復(fù)位初始化操作與FIFO配置;②SPI發(fā)送與接收、W25Q64系列FLASH芯片訪問程序;
CDK上開發(fā)SPI訪問FLASH讀寫數(shù)據(jù)程序的截圖如下:

編譯成功后就可進(jìn)入“Debug”模式調(diào)試了,其界面如下:

下圖一為HX2000系列芯片SPI發(fā)送的數(shù)據(jù)upper_100,圖二為FLASH接收的數(shù)據(jù)upper_128,由圖可得upper_128數(shù)組與upper_100數(shù)組相等,故SPI讀寫FLASH數(shù)據(jù)成功。


SPI訪問FLASH數(shù)據(jù)收發(fā)狀態(tài)及數(shù)據(jù)正確性顯示如下:

