王齊英,曾富豪,王維志 ,田涌君
摘 要:文章基于英飛凌TC27x系列單片機的SPI模塊,對SPI通信的原理做了詳細的說明,編寫了SPI底層驅動的代碼,根據EEPROM的操作手冊,實現了主控板與EEPROM之間的數據交互,為EEPROM的動態(tài)數據存儲提供很好的實現方式。
關鍵詞:英飛凌;SPI;EEPROM
中圖分類號:TN911 ?文獻標識碼: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
引言
在做數據存儲的過程中,有時需要將有用的數據保留,如果用Flash存儲數據則會占用較多的RAM資源,成本也會提高,因此為了降低單片機的成本,本文采用了一個外設芯片EEPROM作為數據存儲,通過SPI通信來實現TC277與EEPROM之間的通信。
1 SPI通信原理
SPI是串行外設接口(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通信總線,它含有四根線,分別為數據輸入線(SDI),數據輸出線(SDO),時鐘線(SCLK),片選線(CS),SDI是EEPROM向主芯片TC277傳輸數據的信號線,CS是EEPROM使能信號線,通過將CS信號拉低,代表EEPROM被選中,SDO是TC277向EEPROM傳輸數據的信號線,SCLK主要是用來產生時鐘信號,在SPI通信的過程中有四種工作模式,這四種工作模式通過配置時鐘極性(CPOL)和時鐘相位(CPHA)從而控制TC277的通信模式,本文所使用的的工作模式為CPOL=0和CPHA=0,CPOL=0代表著時鐘信號在低電平時空閑,在高電平時處于工作狀態(tài),CPHA=0代表著數據的采樣是在上升沿,數據的發(fā)送在下降沿。
2 EEPROM實現原理
本文所使用的EEPROM芯片為M95128,內存大小為16Kbytes,地址范圍為0x0000~0x3FFF,每頁的數據大小為64Byte,該芯片含有8個引腳,VCC代表供電電壓,當供電電壓在1.7V到2.5v之間時通信頻率可以達到5MHz,(S代表芯片選擇信號,低有效,D代表數據的輸入,Q代表數據的輸出,引腳分配如圖1所示:
圖1 ?EEPROM引腳分配圖
2.1 數據寫入實現過程
在寫入數據前需要將片選拉低,然后發(fā)送一個寫的指令,告訴EEPROM執(zhí)行寫的操作,然后主控芯片發(fā)送一個地址數據,表示接下來發(fā)送的數據應該存儲在EEPROM中的哪個范圍,然后在引腳D上輸入數據,這里采用的數據寫入格式是MSB優(yōu)先的原則,當一個字節(jié)的數據寫入成功后,將片選拉高,此時寫的操作執(zhí)行完畢,流程圖如下所示:
圖2 ?EEPROM寫數據流程圖
2.2 數據讀取實現過程
同數據的寫入過程類似,數據的讀出首先要保證片選信號被拉低,之后主控芯片發(fā)送一個讀數據的地址,此時EEPROM則會將存儲在內存中的數據通過引腳Q傳送給主控芯片,當一個字節(jié)的數據讀出完成后,片選拉低,數據讀出過程結束,具體流程圖如下:
圖3 ?數據讀取過程
3 SPI底層代碼的設計
在SPI底層代碼的設計中關鍵點在于通道的配置,本文建立了一個通道的結構體,結構成員包括波爾率的選擇,時鐘極性的選擇,數據的寬度,奇偶校驗標志等,完成通道的配置后,根據主控芯片與EEPROM之間的引腳連接情況對通道進行初始化的工作,完成后即可開始兩個芯片之間的通信過程,具體流程圖如下:
圖4 ?通道配置流程圖
4 平臺的測試
如下圖所示,本平臺所使用的是主控芯片為TC277,片上帶有外設M95128,通過Hightec編譯器編寫SPI底層通信的代碼,編寫完成后會生成一個elf可執(zhí)行文件,通過UDE調試器將Elf文件刷寫進單片機板中,通過示波器觀察M95128數據的讀寫情況,連接情況如下圖所示:
圖5 ?實驗測試圖
通過示波器觀察到的結果如圖所示:
圖6
紅色代表著片選信號,黃色代表著時鐘信號,綠色代表著寫的命令,寫入的地址和數據,藍色代表著讀出來的數據,本文所寫的地址為0x0A,寫的數據為0x03,讀出的數據也為0x03代表著單個字節(jié)的寫入與讀取正常,通過該方法還可
以寫入多頁數據,需要注意的是一頁最多寫入的字節(jié)為64Byte。
5 總結
本文以英飛凌TC277為主控芯片,通過配置SPI底層通信的代碼,依據EEPROM的時序操作手冊實現了片上外設M95128的數據讀寫功能,為數據的存儲提供了便利。
參考文獻
[1] 英飛凌單片機TC265手冊.
[2] 麻金龍.基于英飛凌XC2785的電動汽車電池管理系統(tǒng)設計[D].天津大學,2014.