[导读]本文在分析TMS320F2812 SPI模块的特点的基础上,描述了SPI各个控制寄存器的作用。通过与EEPROM25LC040通信的实例,给出了SPI口的软硬件设计方法,并对其中需要注意的关键问题进行了分析讨论。
引言
目前,在一些控制系统中需要不断地调整参数或者改变相关的设置,才能取得良好的控制效果,并且将这些参数在掉电之前保存下来,从而确保下次运行时可以直接使用已经调整好的参数,而不必重新设置。这就需要EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器),一种掉电后数据不丢失的存储芯片,来存储这些数据。随着DSP芯片在控制系统中的应用越来越广泛,越来越多的控制系统采用DSP的SPI模块来对EEPROM进行操作,以实现数据的存储记录。
TMS320F2812是TI公司推出的一款用于控制系统的高性能、多功能、高性价比的32位定点DSP芯片。TMS320F2812采用哈佛总线结构,具有密码保护机制,可在一个周期内进行双16×16乘加和32×32乘加操作,从而兼顾控制和快速运算的双重功能;芯片上集成了多种外设,尤其是2个事件管理器为电动机以及功率变换控制提供了很大的便利,因此在控制系统中得到了很广泛的应用。下面以Microchip公司的EEPROM 25LC040为例,介绍TMS320F2812的SPI接口设计。
1主要芯片简介
1.1TMS320F2812 SPI模块
SPI总线是一种同步串行外设接口,它可以使控制芯片以串行方式与各种外围设备进行通信。该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和片选信号STE。
TMS320F2812的SPI模块有主从两种工作模式,可以通过寄存器来设置(其数据长度可以配置为1~16位,具有125种可编程的波特率);通过时钟极性和时钟相位可以将SPI模块配置成4种不同的时钟模式;有16级发送/接收FIFO,并且具有延时发送的功能,可以通过中断或者查询的方式来完成数据的发送和接收。
SPI模块有8个寄存器需要设置,用来控制SPI的操作:SPICCR、SPICTL用来配置SPI的工作状态;SPISTS用来获取SPI的状态信息,包括2个接收状态位和1个发送缓冲状态位,可以通过查询这些状态位来判断是否完成数据的接收或者发送;SPIBRR用来设置SPI的波特率;SPIRXBUF和SPITXBUF分别用来接收和发送数据;SPIDAT装载SPI要发送的数据,SPIPRI用来设置SPI中断的优先级。
1.2EEPROM芯片25LC040
25LC040是SPI接口的4 Kb EEPROM,至少可以擦写1 000万次,数据至少可以保存200年,可以满足大部分数据存储的要求。DSP必须能通过相应的指令实现对25LC040的访问。25LC040的操作指令如表1所列。
表1中,A8是读/写开始地址的第9位。25LC040是512×8位的EEPROM,分成上下两页,每页256个字节,通过选择A8可以实现对不同页的操作。
1.2.1读时序
当片选信号为低时,向25LC040传送8位的读指令(0000 A8011),紧接着传送需要读取数据的低8位地址。当正确的读写指令和地址被识别后,EEPROM中对应地址的数据将会由输出引脚顺次传出,若继续提供时钟信号,下一位地址对应的数据也会依次读出。当片选信号为高时,读数据的操作将会被终止。其具体操作如图1所示。图中,CS为片选信号,SCK为时钟信号,SI为输入引脚信号,SO为输出引脚信号。
1.2.2写时序
在对25LC040进行任何写操作之前,必须先执行WREN(写使能)指令。写使能指令的操作如图2所示。先使片选信号为低,然后传送写使能指令到25LC040中,指令传送完毕后,必须将片选信号设置为高以完成写使能操作。如果写指令传送结束后没有拉高片选信号,直接进行写操作,那么数据将不会写入到存储阵列中。
写使能操作完成后,片选信号应该被拉低以进行写操作,时序如图3所示。写指令、写入地址以及写入的数据会被依次传送到25LC040中。若要使数据正确地写入到存储阵列中,片选信号应该在最后一个有效字节的D0位传送完毕后被拉高。
2TMS320F2812的SPI接口设计
TMS320F2812与25LC040的硬件连接如图4所示。TMS320F2812工作在主模式,SPISIMO为主模式下的数据输出接口,连接到25LC040的数据接收端口;SPISOMI为主模式下的数据输入接口,连接到25LC040的数据发送端口;时钟信号SPICLK和片选信号SPISTE均由TMS320F2812产生。写保护引脚WP直接接高电平以确保25LC040总是可以被写入。
2.1 SPI模块的设置
SPI模块的波特率可由如下两种情况计算得出:
①SPIBRR=3~127,波特率的计算公式为:
SPI波特率=LSPCLK/(SPIBRR+1)
②SPIBRR=0~2,波特率的计算公式为:
SPI波特率=LSPCLK/4
LSPCLK是TMS320F2812的低速外设时钟频率;SPIBRR是SPIBRR寄存器的值。将LSPCLK设置成37.5 MHz,25LC040的最大时钟频率为2 MHz,SPI的波特率应该小于2 MHz,即37.5/(SPIBRR+1)≤2,SPIBRR的取值范围为SPIBRR≥18。
通信中将SPISIMO、SPISOMI和SPICLK设置为基本功能SPI口,SPISTE设置为一般I/O口。作为25LC040的片选信号,当主/从控制器进行数据交换时,SPISTE配置成低电平,数据传输结束后再配置成高电平。
TMS320F2812的数据寄存器都是16位的,且接收和发送都是双缓冲的,而25LC040的地址和数据寄存器都是8位的,因此将SPI模块的数据长度设置成8位。发送缓冲寄存器SPITXBUF中的数据以左对齐的方式发送,先发送数据的最高位,因此在发送数据前必须将等待发送的数据放在SPITXBUF的高8位。当要对25LC040进行写使能操作时,写入SPITXBUF的数据应为0x0600。TMS320F2812则是以右对齐的方式来接收数据的,8位的数据被放在SPITXBUF的低8位上。
SPI模块有4种时钟模式:上升沿无延时模式、上升沿有延时模式、下降沿无延时模式和下降沿有延时模式。25LC040是在时钟的上升沿接收数据,下降沿发送数据,所以TMS320F2812的SPI应该配置为上升沿发送数据,下降沿接收数据。
2.2接收数据流程
通过SPI读取数据比较简单,只需要依次传送读指令和待读数据的低位地址,就可以在SPISOMI引脚上接收到25LC040中的数据。因为TMS320F2812为主控制器,所以必须先发送一个无意义的数,才能够启动时钟。在SPI状态寄存器(SPISTS)中有一个SPI中断标志位(SPIINT FLAG),该位是一个只读标志位,由硬件设置。当SPI已经完成数据发送或者接收,正在等待下一步的操作时,SPI中断标志位被置1,若使能SPI中断,将产生一个SPI中断请求。可以通过查询SPI中断标志位来判断数据是否完成接收。若该标志为1,已接收的数据将被放入接收缓冲寄存器SPIRXBUF中,通过读SPIRXBUF寄存器即可得到需要的数据。下面给出接收数据的子程序,其中addr为待读数据的低位地址。
2.3发送数据流程
SPI发送数据需要先完成写使能操作,然后依次传送写指令和低位地址,才可以正确地进行数据写入。向SPITXBUF寄存器中写入待发的数据,SPI时钟就会自动启动,数据会由输出引脚顺次传出;数据传送完后,SPI时钟自动停止。也可以通过查询SPI中断标志位来判断数据是否完成发送,若该标志位为1,则可接着发送下一个数据。SPI设置成主模式时,发送完一个数据,必须要空读一下SPIRXBUF寄存器,以清除SPI中断标志位。由于在读取数据的过程中已经包含读SPIRXBUF寄存器,因此在读取数据时不需要再空读SPIRXBUF寄存器。下面给出发送数据程序,其中data为待发送的数据,addr为待发送数据将要存放的地址。
2.4运行效率的提升
25LC040要求在写操作之后有一定的写周期时间来存储数据,其间TMS320F2812对25LC040的所有访问会被忽略。每个器件都有规定的最坏情况写周期时间,可以通过在再次访问25LC040之前插入不小于最坏情况写周期时间的延时等待来确保遵守写周期时间。但是25LC040常常会在最大规定时间内完成写周期,而此时TMS320F2812还在等待,会造成不必要的时间浪费。25LC040内部有一个状态寄存器,其第1位为WIP(Write-In-Process)位,该位是一个只读位,可以显示25LC040是否处在写周期内。当芯片处于写周期时,WIP位置1;当写操作完成时,WIP位立即清零。状态寄存器在写操作期间仍然可读,可以通过读状态寄存器指令(WRSR)来获取状态寄存器的内容,从而得到WIP位的值以判断写周期何时完成,以进入下一步操作。这样就可以减少不必要的等待时间,使运行更加高效。具体的流程如图5所示。
结语
本文在分析TMS320F2812 SPI模块的特点的基础上,描述了SPI各个控制寄存器的作用。通过与EEPROM25LC040通信的实例,给出了SPI口的软硬件设计方法,并对其中需要注意的关键问题进行了分析讨论。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
(全球TMT2022年7月15日讯)中视典正式推出ARX协作平台,赋能企业生产管控环节,助力企业降本增效,推动企业数字化转型。中视典ARX协作平台是面向企业的数字化管理协作平台,以AR/MR技术为核心,综合运用AI、云...
关键字:
数字化
3D模型
云计算
指令
香港2022年7月5日 /美通社/ -- 近日,TUV南德意志集团(以下简称“TUV南德”)联合HK3C Association Ltd.(以下简称“HK3C”)于香港成功举...
关键字:
研讨会
指令
PS
AN
(全球TMT2022年6月20日讯)2022年6月,亚马逊云科技宣布和神州泰岳共同推动中国企业上云出海,加快海外业务的数字化转型和持续创新。目前,神州泰岳携手亚马逊云科技已为200多家企业的出海业务提供了服务。...
关键字:
亚马逊
神州
MARKET
指令
(全球TMT2022年6月15日讯)亚马逊云科技宣布,神州泰岳依托亚马逊云科技的全球优势,结合深厚的技术积淀和丰富的客户运维经验,共同推动中国企业上云出海,加快海外业务的数字化转型和持续创新。目前,借助亚马逊云科技,神...
关键字:
亚马逊
神州
汽车
指令
广州2022年6月1日 /美通社/ -- 近日,国际独立第三方检测、检验和认证机构德国莱茵TUV大中华区(以下简称“TUV莱茵”)为万居隆电器有限公司(以下简称“万居隆”)研...
关键字:
热泵
CE
指令
电器
在支持性的基础市场,强劲的有机增长高达16.4% 价格加速上涨,从而在第一季度产生正向的价格成本价差 在圣戈班业务遍布的所有国家,不断扩大能效和脱碳解决方案的部署 2022年前景展望得到确认 上海...
关键字:
IMPACT
应用技术
指令
CK
(全球TMT2022年4月28日讯)4月25日,国际独立第三方检测、检验和认证机构德国莱茵TUV大中华区(简称“TUV莱茵”)为南京楚航科技有限公司(简称“楚航科技”)研发的60GHz生命体征探测雷达和77GHz前向雷...
关键字:
指令
毫米波雷达
CE
HZ
在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。几乎所有的计算机,在内存中都采用地址指定方式。当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式。寻址方式分为两类,即指令...
关键字:
存储器
寻址
指令
摘 要 :视频监控系统是计算机应用中的重要领域之一。数字化摄像头网络化之后,监控系统正在不断引入新的功能,为使现有监控系统能更好地应对复杂环境,满足不同监控要求,就需要追加新功能,在系统架构与设计上进行调整。因此,如何将...
关键字:
智能监控
系统架构
模块化设计
接口设计
数据传输
深度相机
初步了解元器件之晶振 ---- 电路中的心脏
关键字:
晶振
CPU
指令
摘要:介绍了以DSP芯片TMS320F2812为CPU的有源电力滤波器中液晶模块JLX12864G-139的应用设计方法,详细说明了DSP芯片与液晶模块的硬件接口电路设计,通过分析液晶模块的读写时序,阐述了在TMS320...
关键字:
TMS320F2812
JLX12864G-139
液晶显示
接口
【Linux从头学】是什么古老的Intel8086处理器主存储器是什么?寄存器是什么?三个总线CPU如何对内存进行寻址?我们是如何控制CPU的?CPU执行指令流程【Linux从头学】是什么这两年多以来,我的本职工作重心一...
关键字:
CPU
指令
原文链接:https://www.analog.com/cn/analog-dialogue/articles/introduction-to-spi-interface.html之前详细介绍过SPI协议,今天分享一篇A...
关键字:
ADI
SPI接口
1.背景群里有个小伙伴学习设计加密方法,如同某商用软件输入注册码后就能使用扩展功能。设计时他很自然的想着所写的加密措施是否足够健壮安全,是否有什么方法可以绕过加密检查,也就是破解。权限管理仅在启动后检查一次注册码是否有效...
关键字:
指令
汇编
软件
↓推荐关注↓0前言作为当前世界上最强大的代码管理工具Git相信大家都很熟悉,但据我所知有很大一批人停留在clone、commit、pull、push...的阶段,是不是对rebase心里没底只敢用merge?碰见版本回退...
关键字:
指令
取指令与输出指令(LD/LDI/LDP/LDF/OUT)(1)LD(取指令)一个常开触点与左母线连接的指令,每一个以常开触点开始的逻辑行都用此指令。(2)LDI(取反指令)一个常闭触点与左母线连接指令,每一个以常闭触点开...
关键字:
指令
置位与复位指令(SET/RST)(1)SET(置位指令)它的作用是使被操作的目标元件置位并保持。(2)RST(复位指令)使被操作的目标元件复位并保持清零状态。SET、RST指令的使用,当X0常开接通时,Y0变为ON状态并...
关键字:
指令
逻辑反、空操作与结束指令(INV/NOP/END)1)INV(反指令)执行该指令后将原来的运算结果取反。反指令的使用如图10所示,如果X0断开,则Y0为ON,否则Y0为OFF。2)NOP(空操作指令)不执行操作,但占一个...
关键字:
PLC
指令
我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?
关键字:
单片机
指令
内部结构