写使能操作完成后,片选信号应该被拉低以进行写操作,时序如图3所示。写指令、写入地址以及写入的数据会被依次传送到25LC040中。若要使数据正确地写入到存储阵列中,片选信号应该在最后一个有效字节的D0位传送完毕后被拉高。
2 TMS320F2812的SPI接口设计
TMS320F2812电感器厂家与25LC040的硬件连接如图4所示。TMS320F2812工作在主模式,SPISIMO为主模式下的数据输出接口,连接到25LC040的数据接一体成型电感收端口;SPISOMI为主模式下的数据输入接口,连接到25LC040的数据发送端口;时钟信号SPICLK和片选信号SPISTE均由TMS320F2812产生。写保护引脚直接接高电平以确保25LC040总是可以被写入。
2.1 SPI模块的设置
SPI模块的波特率可由如下两种情况计算得出:
①SPIBRR=3~127,波特率的计算公式为:
SPI波特率=LSPCLK/(SPIBRR+1)
②SPIBRR=O~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位。当要对25LC2040进行写使能操作时,写入SPITXBUF的数据应为Ox0600。TMS320F2812则是以右对齐的方式来接收数据的,8位的数据被放在SPITXBUF的低8位上。
SPI模块有4种时钟模式:上升沿无延时模式、上升沿有延时模式、下降沿无延时模式和下降沿有延时模式。25LC040是在时钟的上升沿接收数据,下降沿发送数据,所以TMS320F2812的SPI应该配置为上升沿发送数据,下降沿接收数据。
2.2 接收数据流程
通过SPI读取数据比较简单,只需要依次传送读指令和待读数据的低位地址,就可以在SPI塑封电感器SOMI引脚上接收到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内部有一个状态寄存器,其第l位为WIP(Write-In-Process)位,该位是一个只读位,可以显示25LC040是否处在写周期内。当芯片处于写周期时,WIP位置1;当写操作完成时,WIP位立即清零。状态寄存器在写操作期间仍然可读,可以通过读状态寄存器指令(WRSR)来获取状态寄存器的内容,从而得到WIP位的值以判断写周期何时完成,以进入下一步操作。这样就可以减少不必要的等待时间,使运行更加高效。具体的流程如图5所示。
基于高速无线传输的列车测振仪0 引 言列车的振动性能,包括舒适性、平稳性的检测与评价是新型列车研究、检验过程中的一项重要工作。随着我国铁路新型高速列车研究、研制及实验运行工作的大面积展开,十分需要一种方便、快捷的便携式列车振动测
电池自动关断的电路方案图1所示电路既简单又花钱不多,可以用来保护便携设备中最值钱的元件之一:电池。该电路的应用范围包括所有需要限时操作的便携设备,如测试仪器、吉他定弦器和电动玩具。按下通断瞬时软开关即可起动一个周期,该电路
基于DSP的新型多功能电能质量监测仪表的设计近年来,我国电力事业无论是发电总量还是电网的建设都得到了迅猛发展,电力系统的规模不断扩大。但随着生产力的发展,电能质量的问题日益受到重视,生产和生活中对于电能质量的要求也越来越高。由于高压直流输电系统