工控网首页
>

应用设计

>

TMS320F240的SPI与LED驱动器的接口设计

TMS320F240的SPI与LED驱动器的接口设计

2003/11/24 0:00:00
0 引言 微控制器MCU在外围接口设计中,上下层测控设备间的通信或现场总线的连接往往采用串行通信接口(SCI),而本地的串行外设,如移位寄存器,串行显示驱动,DAC等只能用MCU的通用I/O端口模拟串行口进行通信,这样大大影响了MCU的工作效率,增加了程序复杂性。美国TI公司的TMS320系列DSP(Digital Signal Processor)芯片提供了用于串行设备通信的功能灵活强大的串行外围接口SPI,成为处理串行外设通信的一种优秀解决方案。它可以与具有各种通信格式要求的串行设备方便地连接,简化了硬件设计,提高了代码效率。笔者通过在工程中的应用,对TMS320系列芯片的SPI功能进行了一定的研究与开发,本文通过MAX7219驱动LED显示的实例来介绍一下TMS320F240的串行外围接口SPI的设计和使用方法。 1.TMS320F240简介 德州仪器公司开发的TMS320C24X芯片使电机控制系统的设计者得以接触第一片专门为电机控制应用而优化的工业用单片DSP控制器。它将实时处理能力和控制器外设功能集于一身。它可产生所需的PWM信号来控制电机的转速,转向。可支持指令的产生,控制算法的处理,数据的交流和系统控制等功能。因此被广泛应用于自动化系统,工业电机驱动系统。本文介绍的就是一个电机调速系统的显示部分。TMS320F240便是在TMS320C24X基础上推出一种定点DSP芯片。TMS320F240主要结构和特性如下: ⑴ 它是应用高性能的静态CMOS技术生产的。 ⑵ 包含T320C2XLP内核CPU:有32位中央逻辑运算单元(CALU),32位累加器(ACC),16位×16位并行乘法器,8个16位辅助寄存器。 ⑶ 它本身具有工业温度标准、自动温度获取功能。 ⑷ 它采用改进的哈佛总线结构,使得结构更加优化,芯片的性能提高。 ⑸ 含544字节16位片内数据/程序双向RAM,16K字节Flash EEPROM。 ⑹ 有串行外设接口(SPI)和通信接口(SCI),28个独立可编程,复用I/O口,还有双向10位串行数据转换器,采样速率可达166KHZ,满足实时性。 ⑺ 功能强大的事件管理器,可通过比较单元产生所需的PWM。 ⑻ 带有实时内部,外部中断和看门狗电路。 ⑼ 支持JTAG硬件仿真。 2.SPI的原理和用法   目前控制系统微型化的要求越来越高,为了使数字处理系统微型化,必须舍弃常用的并行总线接口方案,采用只需少量引脚线的串行总线接口方案。SPI就是这样一种串行总线的外设接口,它只需3根引脚线便可与外设相接。SPI实际上是一种串行总线标准,它是一种真正的同步方式,两台设备在同一个时钟下工作,因此传输速率高达几十兆。现在与SPI总线兼容的芯片越来越多,因此,SPI为控制系统的设计带来了很大方便。   SPI有主、从两种工作模式,主机的发送与从机地接收相连,主机的接收与从机的发送相连,主机产生的时钟信号要输出至从机的时钟引脚上。这时用到SPI的4个引脚:SPISIMO——主机为发送,从机为接收;SPISOMI——主机为接收,从机为发送;SPICLK——串行外设接口时钟,主机是输出时钟,从机是输入时钟;SPISTE——串行外设接口选通,选通从机。 SPI的结构通过两类寄存器来体现:数据类寄存器和控制类寄存器。数据类寄存器包括发送数据寄存器SPIDAT,接收数据寄存器SPIBUF和仿真寄存器SPIEMU;控制类寄存器包括SPI配置控制寄存器SPICCR,操作控制寄存器SPICTL,状态寄存器SPISTS,波特率寄存器SPIBRR,端口控制寄存器SPIPC1和SPIPC2,中断优先级控制寄存器SPIPR1。   数据类寄存器是CPU与串行外设数据交换的桥梁,读写数据类寄存器即可实现通信。由于SPI通过一根时钟引线将主机和从机同步,因此它的串行数据交换不需要增加起始位,终止位等用于同步的格式位,直接将要传送的信息(1到8位的数据)写入SPIDAT,这个写入自动启动了发送过程即在同步时钟SPICLK的节拍下把SPIDAT的内容从高位到低位一位一位移到引脚SPISIMO,完成后将置中断标志SPIINT FLAG(SPISTS.6)来通知主机信息块已发送完毕。从机接收数据与此一样,只是会将从SPISIMO引脚接收到的内容复制到接收数据寄存器SPIBUF。   控制类寄存器规定SPI的工作方式,串行访问的参数和响应标志等,这需要在软件中进行初始化设置,因此要了解控制寄存器的使用方法。   SPICCR.7位SPI SW RESET是软件复位位,置1将使标志位SPIINT FLAG和RECEIVER OVERRUN清零,但其他配置参数不变,此时发送停止。复位完成后,要将此位清零,已准备进行正常的工作。SPICCR.6位CLOCK POLARITY与SPICTL.3位CLOCK PHASE配合产生四种时序(见表1)。
  SPICCR.2-0位SPICHAR2-0可确定信息块的大小(在1至8位间选择)。其它位为保留位。SPICTL的SPIINT ENA和OVERRUN INT ENA为中断位,置1允许中断,否则清零。SPICTL的MASTER/SLAVE位置1表示主机,置0为从机。TALK位为发送允许位,1为允许发送,0为禁止发送。其它位为保留位。SPISTS.7为接收溢出标志位,如果在SPIBUF的内容未读出之前又接收到了新的数据,就会有原数据丢失,这将使溢出标志RECEIVER OVERRUN置1。写0到该位,SPI软件复位或系统复位都可清0该位。SPIBRR.6-0这7位为SPI波特率寄存器值,SPI的波特率即它的时钟SPICLK的周期。由于SPICLK是SYSCLK时钟经SPIBRR规定的分频系数分频后得到的,所以,SPI的波特率是:
  这里要注意的是SPI工作在从机方式时,允许的最大波特率是SYSCLK/8。SPIPRI寄存器设定中断优先级和仿真挂起是否允许。SPI还有两个端口控制寄存器SPIPC1和SPIPC2。SPIPC1来设定SPISTS和SPICLK的数据传送方向(通过设定DATA DIR),端口功能(通过设定FUNCTION来决定是SPI功能还是I/O功能)。SPIPC2则来设定SPISIMO和SPISOMI的数据传送方向和端口功能。   使用SPI模块时要注意两点:第一、SPI与串行外围器件相连时,SPI应设置为主机;第二、注意SPI寄存器的初始化和标志位的及时复位。 3.MAX7219的原理与用法   MAX7219是MAXIM公司生产的7段共阴极LED数码管的驱动芯片,每一片7219最多可驱动8位LED,它集BCD码译码器、多路扫描器、段驱动和位驱动电路于一体,内含8×8位双口静态SRAM,可保存8位LED数据,使用方便,连线简单,还可串联使用,大大简化了硬件电路,减小了软件的工作量。   MAX7219具有典型的三线串行接口,命令与数据组成16位字串,从DIN管脚进入,从DOUT管脚输出,当每一个CLK脉冲上升沿到来时,串行数据从DIN管脚进入MAX7219内部移位寄存器,最先收到的是最高位,这便与SPI的数据输出顺序正好匹配了。第16个CLK上升沿,LOAD管脚若变为高电平,数据就会被锁存到内部寄存器中,再过半个脉冲,数据在CLK下降沿从DOUT管脚输出。时序如图2所示。
  MAX7219的命令与数据所组成的16位数据格式如表示:
  MAX7219有14个可寻址命令寄存器:8个位驱动寄存器和6个状态寄存器。地址排列如表2所示。MAX7219提供了段选码和BCD解码两种方式。解码方式寄存器数据位都设为1时,为BCD解码方式,都为0时为段选码方式。工作在解码方式时,LED
可显示数字0~9及“—”,“E、F、H、L、P”等字符和空显示。写寄存器时,只要在对应的数据位的低4位写入“0H”-“FH”即可,与数据位高4位无关,数据位最高位来设定小数点状态,置1点亮小数点,否则为0。段选码方式是通过将数码管对应数据位写“1”来使该段亮。   MAX7219还有6个状态寄存器。亮度寄存器来控制LED的亮度,这种软件亮度控制可代替硬件限流的亮度控制方法。扫描限制寄存器用于控制扫描频率。停机寄存器控制MAX7219的工作状态,该寄存器数据格式为“×0”时,进入关闭正常工作状态,但可受测试控制寄存器控制;数据格式为“×1”时,进入正常工作状态。显示测试寄存器为“×0”时,显示驱动器进入正常工作状态;寄存器为“×1”时,为测试状态,此时LED应全亮状态。空操作寄存器用在7219串联时,只改变某片7219驱动的LED,但不用改变其他显示区。它可使7219进行空操作,保持LED的原状。   MAX7221与MAX7219基本一致,只是7221段驱动有转换速率限制,以此来减小EMI,而且它更专业化用于SPI。7219则通用性较强。 4.实例介绍   笔者在开发的一个电机调速系统中,显示部分采用的是TMS320F240的SPI外接MAX7219来驱动LED动态显示。 4.1硬件连接 TMS320F240芯片的45,49,分别为SPI的SPISIMO和SPICLK脚,将它们分别与MAX7219的DIN和CLK脚相连以输出数据和时钟信号给MAX7219。TMS320F240的73脚是I/O口,将它与7219的LOAD( )连接,来输入7219的片选信号,低电平选择,高电平取消选择。硬件连接如图3示:
4.2软件设计 由于SPI与MAX7219的匹配性很好,不但使得硬件电路简捷,软件编程也比较容易。最主要的基本工作就是对SPI和MAX7219的寄存器赋值,之后的编程工作则因系统要求而定。 对于DSP,首先设置好头文件和声明要用的DSP的寄存器。接下来根据需要设置寄存器。先设置SPICCR来复位SPI并定义字符长度为8。设置SPICTL定义工作为主动模式,按需要设置中断,并结合SPICCR设定SPI时钟时序,由于7219在输入时钟的上升沿接收数据,因此时钟时序应设置为有延时上升沿。写寄存器SPIBRR设置SPI波特率(可为最快)。写SPIPC1,SPIPC2设置SPICLK脚输出时钟信号,SPISIMO脚输<
投诉建议

提交

查看更多评论
其他资讯

查看更多

PLC一体机之EK温度修正使用技巧

S7-300CPU存储器介绍及存储卡使用

0.05级超高精度互感器

DC-DC转换器(电源模块)应用指南——外接滤波电容选配

施罗德最小流量阀的应用范围及优点