当前位置:首页 > 电源 > 数字电源
[导读]叙述了TI公司的TMS320F241型DSP的串行外设接口(SPI)扩展EEPROM的软、硬件实现方法。

作者email:   chiristinxl@hotmail.com

    摘要:叙述了TI公司的TMS320F241型DSP的串行外设接口(SPI)扩展EEPROM的软、硬件实现方法。
    关键词:DSP  SPI  EEPROM  X5043

    1.引言

    TMS320F241型DSP是目前应用比较广泛的一款定点DSP,它具有20MIPS的指令执行速度,强大的内部事件管理器、I/O端口和其他外围设备。其中,串行外设接口(SPI)是一个高速同步串行输入/输出(I/O)端口,它允许一个具有可编程长度(1到16位)的串行位流,以可编程的位传送速率从设备移入或移出。SPI通常用于DSP控制器和外部器件或其它控制器间的通讯。

    在开发DSP系统时,某些情况下会读取或者存储一些定值,这时我们就需要扩展EEPROM。具有SPI接口的串行EEPROM均可被TMS320F241直接逻辑扩展,方便易行。X5043是Xicor公司最高时钟速率为3.3MHz带有块锁保护的4Kbits的CMOS串行EEPROM。该器件内部组织阵列是X8位,具有串行外围接口(SPI)和软件协议的特点,允许在简单的四线总线上工作;该器件利用Xicor专有的直接写入晶片提供最小为10万次擦写和最少100年的数据保存期。

    2.硬件设计

    X5043与TMS320F241型DSP的连接关系如图1所示。DSP作为主控制器,工作于主模式下,SPISIMO为DSP的数据发送端,连接到X5043的数据接收端(SI);SPISOMI为DSP的数据接收端,连接到X5043的数据发送端(SO);SPISTE配置成I/O口连接到X5043的片选端(/CS);SPICLK为SPI数据传送的时钟信号,连接到X5043的串行时钟端(SCK),串行时钟由DSP控制。DSP的数据在SPISIMO引脚上输出并从SPISOMI上锁存, DSP通过写入SPIDAT寄存器的数据启动SPICLK串行时钟信号从而启动数据传送,当8位串行位流传送完毕后,SPICLK信号中止,传送结束。

    3.软件设计

    3.1工作模式的选择

    TMS320F241的SPI接口有可选择的四种不同的时钟模式,如何选择时钟模式是它与各种扩展SPI接口器件实现时钟同步的关键。X5043的数据在时钟下降沿从SO引脚上输出并在时钟上升沿从SI引脚上锁存。读操作时,在其从SI引脚输入的最低位地址所对应的时钟下降沿,其SO引脚开始输出数据,如图5所示。

    作为主器件的DSP可以选择 ‘上升沿,无延时’和‘上升沿、有延时’两种时钟工作模式。‘上升沿,无延时’模式与X5043的工作模式一致,数据在SPICLK信号的时钟上升边沿(从低电平到高电平)从移位寄存器移出在SI引脚上锁存,在时钟下降边沿(从高电平到低电平)从SO引脚上输出的数据锁存到移位寄存器中。‘上升沿,有延时’模式如图4所示,数据在SPICLK信号上升沿前半个周期从移位寄存器移出,在紧接着的上升边沿在SI引脚上锁存,在时钟下降边沿(从高电平到低电平)从SO引脚上输出的数据锁存到移位寄存器中。

    3.2波特率的选择

    SPI波特率可以由如下两种情况计算得出:

    (1)对于SPIBRR=3~127,波特率的计算公式为:

    SPI波特率=CLKOUT/(SPIBRR+1)

    (2)对于SPIBRR=0~2,波特率的计算公式为:

    SPI波特率=CLKOUT/4

    式中,CLKOUT=器件的CPU时钟频率;SPIBRR=主SPI器件中的SPIBRR内容。

    X5043最大的SPI波特率为3.3MHz,若DSP的CPU时钟频率CLKOUT=16MHz,则:
最大的SPI波特率 =16×106/(SPIBRR+1)≤3.3×106Hz
SPIBRR≥4+9

    3.3 DSP的数据传输格式

    DSP中SPI有16位的发送和接收能力,且接收和发送均是双缓冲。所有数据寄存器都是16位宽的,而X5043的地址、数据寄存器均是8位的,将DSP中SPI传输字符长度设置成8位宽。要向X5043存储数据时,DSP将一个8位字节长度的数据写入SPIDAT或SPITXBUF的高8位上如图2所示,在时钟信号的作用下,以左对齐方式发送,先发送数据的最高位。DSP接收一个8位字节长度的数据,是以右对齐方式接收如图3所示,8位字节长度的数据写入SPIDAT或SPIRXBUF 的低8位上。

    3.4各控制寄存器设置

LDP   #SPICCR>>7
SPLK  #0007h,SPICCR
;复位SPI, 8个字符长度
SPLK  #000Eh,SPICTL
;主模式,使能TALK,禁止SPI的中断
;上升沿发送,下降沿接收,有延时
SPLK  #000Fh,SPIBRR
;设置SPI的传输波特率
SPLK  #0087h,SPICCR
;SPI准备好发送或接收下一字符
3.5程序设计
RAM块中的变量定义:
.bss  SPI_Xdata,1
;SPI数据传输暂存器
.bss  address1,1
;EEPROM存储器地址暂存器
.bss  data1,1
;EEPROM存储器数据暂存器

X5043存储器地址:
WREN       .set  0600h
;设置写使能锁存指令地址
WRDI       .set  0400h
;复位写使能锁存指令地址
RSDR       .set  0500h
;读状态寄存器指令地址
WRSR       .set  0100h
;写状态寄存器指令地址
READh      .set  0B00h
READl      .set  0300h
;读存储器阵列数据指令地址
WRITEh     .set  0A00h
WRITEl     .set  0200h
;写存储器阵列数据指令地址

3.5.1 DSP的SPI数据发送、接收子程序代码
XMIT_VALUE:
LDP   #0
  LACC  SPI_Xdata
  LDP   #SPITXBUF>>7
  SACL  SPITXBUF
;写需发送的值到SPI传输缓冲器
XMIT_RDY:
  LDP   #SPISTS>>7
  BIT   SPISTS,BIT6
  BCND  XMIT_RDY,NTC
;测试SPI_INT位,如果SPI_INT=0,则重复循环
;等待数据发送完毕进行下一步操作
 LDP   #SPIRXBUF>>7
  LACL  SPIRXBUF
;读取数据清除SPI_INT标志位
 LDP #0
 SACL  SPI_Xdata
;将接收的值存入数据传输暂存器
RET

3.5.2 X5043内部非易失性写判断子程序代码
RSDR_WIP:
SPISTE_LOW
;置低SPISTE引脚,从而选通X5043
LDP  #0
SPLK #RSDR,SPI_Xdata
CALL XMIT_VALUE
;写读状态寄存器地址,高8位
SPISTE_HIGH
;置高SPISTE引脚,禁止X5043
LDP   #0
BIT  SPI_Xdata,BIT0
BCND RSDR_WIP,TC
;测试状态寄存器WIP位。如果WIP=1,正在进行内部写操作。
;等待内部写操作完成进行下一步操作
RET

    使用上述判断子程序能够保证X5043完成内部写操作。向X5043存储器阵列写入数据时后面将跟随一次非易失性写操作。可以读状态寄存器检查WIP位,若WIP为高则非易失性写正在进行。X5043存储器非易失性写周期为10mS,也可以在一个写操作完成后作一个大于10mS的延时,以保证X5043完成内部写操作。

    3.5.3向X5043 EEPROM存储器阵列中写数据

    如图4所示,向EEPROM存储器阵列写入任何数据之前,必须用WREN指令设置WEL位。首先将CS拉低,向器件输入WREN指令,然后拉高/CS。再次拉低/CS并输入WRITE指令,紧跟随8位地址,然后是要写入的数据。WRITE指令的位3是地址位A8,该位选择阵列的高半部分或是低半部分。如果/CS在WREN和WRITE之间不变为高,则WRITE指令将被忽略。为了完成写操作,在最后一个被写入的数据字节的位0完成后/CS必须被拉高。如果它在任何其它时间被拉高,写操作将不完成。

写1个字节数据的程序代码如下:
WRITE:
     KICK_DOG
     CALL RSDR_WIP
     ;读状态寄存器检查WIP位
     ;写WREN指令代码段
     SPISTE_LOW
;置低SPISTE引脚,从而选通X5043
     LDP   #0
     SPLK  #WREN,SPI_Xdata
     CALL XMIT_VALUE
     SPISTE_HIGH
;置高SPISTE引脚,禁止X5043
     CALL RSDR_WIP
     ;读状态寄存器检查WIP位
     ;写WRITE指令/地址/数据代码段
     SPISTE_LOW
;置低SPISTE引脚,从而选通X5043
     LDP   #0
     SPLK  #WRITEl(h),SPI_Xdata
     CALL XMIT_VALUE
   ;输入寄存器指令
     LDP   #0
     LACL  address1
     SACL  SPI_Xdata
     CALL  XMIT_VALUE
     ;输入寄存器地址
     LDP   #0
     LACL  data1
     SACL  SPI_Xdata
     CALL  XMIT_VALUE
     ;输入寄存器数据
     SPISTE_HIGH
     ;置高SPISTE引脚,禁止X5043
     CALL  RSDR_WIP
     ;读状态寄存器检查WIP位,X5043完成内部非易失性写
     RET

    3.5.4从X5043 EEPROM中读取数据

如图5所示,/CS只要拉低选中器件。8位READ指令送到器件,后面跟随8位地址,就可以读取指定地址下的EEPROM存储器阵列中的数据。READ指令的位3选择器件的高半部分或是低半部分。在READ指令码和地址送出后,在选定地址的存储在存储器中的数据即在SO线上移出。读操作由拉高/CS而终止。
读1个字节数据的程序代码如下:
  READ:
 KICK_DOG
 CALL  RSDR_WIP
    ;读状态寄存器检查WIP位
    SPISTE_LOW
;置低SPISTE引脚,从而选通X5043
    LDP   #0
    SPLK  #READl(h),SPI_Xdata
    CALL XMIT_VALUE
    ;输入寄存器指令
    LDP   #0
    LACL  address1
    SACL  SPI_Xdata
    CALL  XMIT_VALUE
   ;输入寄存器地址
    LDP   #0
    LACL  data1
    SACL  SPI_Xdata
    CALL  XMIT_VALUE
    ;此data1无意义,使SPI口连续提供时钟信号,使数据输出
    ;输出的数据存储在SPI_Xdata中
    SPISTE_HIGH
    ;置高SPISTE引脚,禁止X5043
    RET

    由于X5043是一个半双工器件,在WRITE子程序中从SPIRXBUF中读出来的数据是无效的,同时,在READ子程序中写向SPITXBUF的data1数据也是无效的,只起启动发送时钟的作用。

    4.结束语

    DSP可以连续的向EEPROM中写入多至16个字节的数据。唯一的限制是16个字节必须在同一页中。一页地址由[X XXXX 0000]开始,由[X XXXX 1111]结束。如果字节地址达到了页中的最后字节而时钟仍在继续,则计数器将返转至该页的第一个地址并重写前面已写过的数据。在连续地提供时钟脉冲的条件下储存在存储器地址处的数据可被连续地读出。在每个数据字节被移出后,器件即自动将地址增加至下一个更高的地址。当达到最高的地址时,地址计数器即翻转到地址00H,使读周期无限制地连续下去。上面只给出了X5043单个字节的读写程序代码,对于多个字节或一页16个字节的读写程序代码可根据单个字节的读写程序代码进行扩展给出。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

数字信号处理器(DSP)在通信、控制、图像处理等多个领域扮演着越来越重要的角色。TMS320F2808PZA作为德州仪器(Texas Instruments)推出的一款高性能DSP控制器,其独特的架构和强大的功能使其在众...

关键字: tms320f2808pza 数字信号处理器 DSP

从世界上第一颗DSP诞生至今30年来,国际一线老牌芯片厂商长期占据领先技术和市场地位,国内芯片厂商在DSP上的声量很小。然而经过了6年的沉心打磨之后,湖南进芯电子开始在这一领域崭露头角。凭借着更贴近中国本土特色的差异化产...

关键字: DSP MCU 电机控制 进芯电子

今天,小编将在这篇文章中为大家带来数字信号处理器DSP的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: DSP 数字信号处理器

DSP的国产替代不会是一件很容易的事情,但受到当前国际竞争态势的影响,本土开发者亟需拥有降本优势、供应链安全保证,以及能协助打造极高竞争力产品的DSP芯片。也就是说,发展国产DSP是不二选择。

关键字: DSP

将DSP和单片机构成双CPU处理器平台,可以充分利用DSP对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而DSP与单片机之间快速正确的通信是构建双CPU处理器的关键问题。

关键字: 单片机 spi通信 DSP

SPI,Serial Peripheral Interface,串行外围设备接口,是一种同步通信协议,通常用于芯片间进行数据交互。

关键字: SPI 通信协议 外围设备

随着科技的不断发展,微控制器(MCU)和数字信号处理器(DSP)已经成为了电子行业中不可或缺的重要组成部分。它们在各种电子设备中发挥着关键作用,如智能手机、平板电脑、家用电器等。然而,尽管它们都是用于处理数字信号的集成电...

关键字: MCU DSP 数字信号处理器 微控制器

随着环境保护和能源可持续性的日益关注,电动汽车作为一种清洁、高效的交通工具逐渐成为全球汽车行业的热点。与传统的内燃机驱动汽车相比,电动汽车具有零排放、低噪音和高能量利用效率等显著优势。

关键字: DSP 芯片 混合动力汽车

在平常的日常生活中,噪声总是不可避免的。每个人承受噪声的能力也不尽相同,喜欢安静的人需要一些降噪措施,降噪耳机应运而生,甚至都能算得上是城市生活的必备品了

关键字: 主动降噪 DSP ANC

北京2023年9月22日 /美通社/ -- 华为全联接大会2023期间,华为举办了"昇思MindSpore AI框架:引领大模型&科学智能原生创新"主题论坛,软通动力数字化创新服务线高级副总裁...

关键字: DSP AI 模型 开源
关闭
关闭