王齐英,曾富豪,王维志 ,田涌君
摘 要:文章基于英飞凌TC27x系列单片机的SPI模块,对SPI通信的原理做了详细的说明,编写了SPI底层驱动的代码,根据EEPROM的操作手册,实现了主控板与EEPROM之间的数据交互,为EEPROM的动态数据存储提供很好的实现方式。
关键词:英飞凌;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代表着时钟信号在低电平时空闲,在高电平时处于工作状态,CPHA=0代表着数据的采样是在上升沿,数据的发送在下降沿。
2 EEPROM实现原理
本文所使用的EEPROM芯片为M95128,内存大小为16Kbytes,地址范围为0x0000~0x3FFF,每页的数据大小为64Byte,该芯片含有8个引脚,VCC代表供电电压,当供电电压在1.7V到2.5v之间时通信频率可以达到5MHz,(S代表芯片选择信号,低有效,D代表数据的输入,Q代表数据的输出,引脚分配如图1所示:
图1 EEPROM引脚分配图
2.1 数据写入实现过程
在写入数据前需要将片选拉低,然后发送一个写的指令,告诉EEPROM执行写的操作,然后主控芯片发送一个地址数据,表示接下来发送的数据应该存储在EEPROM中的哪个范围,然后在引脚D上输入数据,这里采用的数据写入格式是MSB优先的原则,当一个字节的数据写入成功后,将片选拉高,此时写的操作执行完毕,流程图如下所示:
图2 EEPROM写数据流程图
2.2 数据读取实现过程
同数据的写入过程类似,数据的读出首先要保证片选信号被拉低,之后主控芯片发送一个读数据的地址,此时EEPROM则会将存储在内存中的数据通过引脚Q传送给主控芯片,当一个字节的数据读出完成后,片选拉低,数据读出过程结束,具体流程图如下:
图3 数据读取过程
3 SPI底层代码的设计
在SPI底层代码的设计中关键点在于通道的配置,本文建立了一个通道的结构体,结构成员包括波尔率的选择,时钟极性的选择,数据的宽度,奇偶校验标志等,完成通道的配置后,根据主控芯片与EEPROM之间的引脚连接情况对通道进行初始化的工作,完成后即可开始两个芯片之间的通信过程,具体流程图如下:
图4 通道配置流程图
4 平台的测试
如下图所示,本平台所使用的是主控芯片为TC277,片上带有外设M95128,通过Hightec编译器编写SPI底层通信的代码,编写完成后会生成一个elf可执行文件,通过UDE调试器将Elf文件刷写进单片机板中,通过示波器观察M95128数据的读写情况,连接情况如下图所示:
图5 实验测试图
通过示波器观察到的结果如图所示:
图6
红色代表着片选信号,黄色代表着时钟信号,绿色代表着写的命令,写入的地址和数据,蓝色代表着读出来的数据,本文所写的地址为0x0A,写的数据为0x03,读出的数据也为0x03代表着单个字节的写入与读取正常,通过该方法还可
以写入多页数据,需要注意的是一页最多写入的字节为64Byte。
5 总结
本文以英飞凌TC277为主控芯片,通过配置SPI底层通信的代码,依据EEPROM的时序操作手册实现了片上外设M95128的数据读写功能,为数据的存储提供了便利。
参考文献
[1] 英飞凌单片机TC265手册.
[2] 麻金龙.基于英飞凌XC2785的电动汽车电池管理系统设计[D].天津大学,2014.