王齊英,曾富豪,王維志 ,田涌君
摘 要:文章基于英飛凌TC27x系列單片機(jī)的SPI模塊,對SPI通信的原理做了詳細(xì)的說明,編寫了SPI底層驅(qū)動的代碼,根據(jù)EEPROM的操作手冊,實現(xiàn)了主控板與EEPROM之間的數(shù)據(jù)交互,為EEPROM的動態(tài)數(shù)據(jù)存儲提供很好的實現(xiàn)方式。
關(guān)鍵詞:英飛凌;SPI;EEPROM
中圖分類號:TN911 ?文獻(xiàn)標(biāo)識碼:A ?文章編號:1671-7988(2019)23-88-03
Programming of EEPROM Based on SPI Communication
Wang Qiyin1, Zeng Fuhao2, Wang Weizhi1, Tian Yongjun1
(1.China Automotive Technology and Research Center, TianJing 300300;
2.School of Automobile, Chang'an University, Shaanxi Xian 710064)
Abstract: This article is based on the SPI module of Infineon TC27x series MCU, and make a detail description about principle of SPI communication, In addition, Write the code for the SPI underlying driver. According to the EEPROM operating manual, the data interaction between main control board and EEPROM have been realized, which Provides a good implementation of dynamic data storage for EEPROM.
Keywords: Infineon; SPI; EEPROM
CLC NO.: TN911 ?Document Code: A ?Article ID: 1671-7988(2019)23-88-03
引言
在做數(shù)據(jù)存儲的過程中,有時需要將有用的數(shù)據(jù)保留,如果用Flash存儲數(shù)據(jù)則會占用較多的RAM資源,成本也會提高,因此為了降低單片機(jī)的成本,本文采用了一個外設(shè)芯片EEPROM作為數(shù)據(jù)存儲,通過SPI通信來實現(xiàn)TC277與EEPROM之間的通信。
1 SPI通信原理
SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通信總線,它含有四根線,分別為數(shù)據(jù)輸入線(SDI),數(shù)據(jù)輸出線(SDO),時鐘線(SCLK),片選線(CS),SDI是EEPROM向主芯片TC277傳輸數(shù)據(jù)的信號線,CS是EEPROM使能信號線,通過將CS信號拉低,代表EEPROM被選中,SDO是TC277向EEPROM傳輸數(shù)據(jù)的信號線,SCLK主要是用來產(chǎn)生時鐘信號,在SPI通信的過程中有四種工作模式,這四種工作模式通過配置時鐘極性(CPOL)和時鐘相位(CPHA)從而控制TC277的通信模式,本文所使用的的工作模式為CPOL=0和CPHA=0,CPOL=0代表著時鐘信號在低電平時空閑,在高電平時處于工作狀態(tài),CPHA=0代表著數(shù)據(jù)的采樣是在上升沿,數(shù)據(jù)的發(fā)送在下降沿。
2 EEPROM實現(xiàn)原理
本文所使用的EEPROM芯片為M95128,內(nèi)存大小為16Kbytes,地址范圍為0x0000~0x3FFF,每頁的數(shù)據(jù)大小為64Byte,該芯片含有8個引腳,VCC代表供電電壓,當(dāng)供電電壓在1.7V到2.5v之間時通信頻率可以達(dá)到5MHz,(S代表芯片選擇信號,低有效,D代表數(shù)據(jù)的輸入,Q代表數(shù)據(jù)的輸出,引腳分配如圖1所示:
圖1 ?EEPROM引腳分配圖
2.1 數(shù)據(jù)寫入實現(xiàn)過程
在寫入數(shù)據(jù)前需要將片選拉低,然后發(fā)送一個寫的指令,告訴EEPROM執(zhí)行寫的操作,然后主控芯片發(fā)送一個地址數(shù)據(jù),表示接下來發(fā)送的數(shù)據(jù)應(yīng)該存儲在EEPROM中的哪個范圍,然后在引腳D上輸入數(shù)據(jù),這里采用的數(shù)據(jù)寫入格式是MSB優(yōu)先的原則,當(dāng)一個字節(jié)的數(shù)據(jù)寫入成功后,將片選拉高,此時寫的操作執(zhí)行完畢,流程圖如下所示:
圖2 ?EEPROM寫數(shù)據(jù)流程圖
2.2 數(shù)據(jù)讀取實現(xiàn)過程
同數(shù)據(jù)的寫入過程類似,數(shù)據(jù)的讀出首先要保證片選信號被拉低,之后主控芯片發(fā)送一個讀數(shù)據(jù)的地址,此時EEPROM則會將存儲在內(nèi)存中的數(shù)據(jù)通過引腳Q傳送給主控芯片,當(dāng)一個字節(jié)的數(shù)據(jù)讀出完成后,片選拉低,數(shù)據(jù)讀出過程結(jié)束,具體流程圖如下:
圖3 ?數(shù)據(jù)讀取過程
3 SPI底層代碼的設(shè)計
在SPI底層代碼的設(shè)計中關(guān)鍵點在于通道的配置,本文建立了一個通道的結(jié)構(gòu)體,結(jié)構(gòu)成員包括波爾率的選擇,時鐘極性的選擇,數(shù)據(jù)的寬度,奇偶校驗標(biāo)志等,完成通道的配置后,根據(jù)主控芯片與EEPROM之間的引腳連接情況對通道進(jìn)行初始化的工作,完成后即可開始兩個芯片之間的通信過程,具體流程圖如下:
圖4 ?通道配置流程圖
4 平臺的測試
如下圖所示,本平臺所使用的是主控芯片為TC277,片上帶有外設(shè)M95128,通過Hightec編譯器編寫SPI底層通信的代碼,編寫完成后會生成一個elf可執(zhí)行文件,通過UDE調(diào)試器將Elf文件刷寫進(jìn)單片機(jī)板中,通過示波器觀察M95128數(shù)據(jù)的讀寫情況,連接情況如下圖所示:
圖5 ?實驗測試圖
通過示波器觀察到的結(jié)果如圖所示:
圖6
紅色代表著片選信號,黃色代表著時鐘信號,綠色代表著寫的命令,寫入的地址和數(shù)據(jù),藍(lán)色代表著讀出來的數(shù)據(jù),本文所寫的地址為0x0A,寫的數(shù)據(jù)為0x03,讀出的數(shù)據(jù)也為0x03代表著單個字節(jié)的寫入與讀取正常,通過該方法還可
以寫入多頁數(shù)據(jù),需要注意的是一頁最多寫入的字節(jié)為64Byte。
5 總結(jié)
本文以英飛凌TC277為主控芯片,通過配置SPI底層通信的代碼,依據(jù)EEPROM的時序操作手冊實現(xiàn)了片上外設(shè)M95128的數(shù)據(jù)讀寫功能,為數(shù)據(jù)的存儲提供了便利。
參考文獻(xiàn)
[1] 英飛凌單片機(jī)TC265手冊.
[2] 麻金龍.基于英飛凌XC2785的電動汽車電池管理系統(tǒng)設(shè)計[D].天津大學(xué),2014.