TMS320LF/LC240X系列DSP与微机的串行通信
摘 要:文中介绍了德州仪器公司生产的TMS320LF/LC240XDSP串行通信模块的特点,说明了利用240X串行通信模块实现其内部CPU与异步外设之间的串行通信的原理,给出了240X与微机串行通信的实现方法以及在移动机器人传感器数据传输中的应用方法,最后对240X串行通信模块的优缺点进行了分析。
关键词:DSP;串行通信;波特率;查询;TMS320LV/LC240X
TMS320LF/LC240X是德州仪器(TI)公司推出的基于C2xLP16位定点低功耗DSPCPU的数字信号处理器系列,该系列可用于各种数字伺服控制和嵌入式控制系统。240X系列DSP芯片的最大特点是片上含有丰富的外设资源,且带有双存取RAM(DARAM)以及ROM或闪速存储器。240X系列DSP芯片的片上外设资源包括定时器、PWM信号发生器、CAN现场总线接口、8/16通道A/D转换器、SPI异步外设接口、SCI串行通信接口、看门狗定时器以及通用的双向数字量I/O端口等。240X系列DSP片内所提供的大量外设资源使其在数字伺服控制和嵌入式控制的应用系统中只需使用较少的外围芯片即可完成所需的功能。
另外,该240X系列DSP还带有串行通信接口(SCI)模块,利用该模块可使其内部CPU与使用非归零(NRZ)信号格式的异步外设进行串行通信。
1 240X串行通信接口模块的特点
240X系列DSP芯片支持CPU与使用非归零(NRZ)信号格式的异步外设之间的异步串行(UART)数字通信。用于完成该通信功能的主要部分是片内串行通信接口(SCI)模块,它具有以下特点:
●采用非归零通信格式,可编程1~8位数据长度和1~2位停止位;
●可编程64k种通信速率(波特率),采用30MHz时钟输出时的最小通信速率为57.2bps,最大可达1875kbps;
●具有奇偶校验、过载、帧错误和间断检测等四种错误检测功能,可保证数据传输的可靠性;
●可工作于查询或中断模式,且具有独立的发送和接收中断使能位;
●带有一个发送引脚和一个接收引脚,发送和接收均具有双缓冲功能;
●有两种唤醒多处理器方式,可进行多机通信;
●可由内部产生串行时钟,可工作于半双工或全双工方式。
2 TMS320LF/LC240X中的寄存器
240X中与串行通信有关的寄存器在完成SCI模块串行通信功能中起着至关重要的作用,对SCI模块串行通信的控制、操作方式和通信协议的选择、波特率和字符格式的选择、中断优先级的选择和使能等都是通过寄存器来完成的,SCI模块的编程主要也是对这些寄存器进行操作。因此熟练掌握这些寄存器的使用对进行240X串行通信编程是非常重要的。下面是240X中与串行通信有关的寄存器:
●系统控制与状态寄存器1:SCSR1;
●I/O多路控制寄存器A:MCRA;
●通信控制寄存器:SCICCR;
●SCI控制寄存器1:SCICTL1;
●波特率选择寄存器:SCIHBAUD和SCIL-BAUD;
●SCI控制寄存器2:SCICTL2;
●接收状态寄存器:SCIRXST;
●仿真数据缓冲寄存器:SCIRXEMU;
●接收数据缓冲寄存器:SCIRXBUF;
●发送数据缓冲寄存器:SCITXBUF;
●优先级/仿真控制寄存器:SCIPRI;
●中断屏蔽寄存器:IMR;
●外设中断向量寄存器:PIVR。
3 240X的串行通信原理
利用240X串行通信接口进行串行通信可采用查询或中断两种模式来实现。无论采用查询还是中断模式都要首先设置串行通信的通信协议、操作方式、波特率和字符格式,采用中断模式时还要选择中断优先级和设置中断使能位,这些操作都是通过寄存器来实现的。下面详细介绍波特率的计算方法,以及采用查询和中断模式实现串行通信的具体方法。
3.1波特率计算
240X中的串行通信接口模块的通信速率是由芯片时钟频率(CLKOUT)和波特率选择寄存器(SCIHBAUD和SCILBAUD)共同决定的。其波特率共有64k种可供选择。当采用30MHz时钟输出时,其波特率最小为57.2bps,最大可达1875kbps。可通过设置波特率选择寄存器SCIHBAUD(高位)和SCIL-BAUD(低位)来组成一个16位的字并将该字转换为十进制即可得到一个0~65535的值,而这个被定义为BRR的十进制值则可用来设置串行通信接口模块的波特率。具体波特率的设置方法如下:
(1)当BRR=0时,波特率=芯片时钟频率/16;
(2)当1≤BRR≤65535时,波特率=芯片时钟频率/[(BRR+1)×8];
3.2查询模式
采用查询模式进行通信时,在对有关寄存器初始化后,主要是通过不断地检查有关寄存器的相应标志位来实现数据的接收和发送。查询模式发送数据是通过检查SCI控制寄存器2(SCICTL2)中的发送就绪(TXRDY)标志来实现的,其发送程序框图如图1所示。查询模式接收数据则通过检查接收状态寄存器(SCIRXST)中的接收就绪(RXRDY)和接收错误(RXERROR)标志来实现,其接收程序框图如图2所示。
3.3中断模式
由于在240XCPU内核一级可用的中断只有六个(INT1~INT6),而240X的外设不止六个,且每个外设又可产生一个或多个中断,因此对外设中断的处理只能采用复用方式,即所有外设均共用INT1~INT6这六个中断。具体的中断源则由外设中断向量寄存器(PIVR)来指示。这样在公用的INT1~INT6中断服务程序中必须首先检查外设中断向量寄存器(PIVR),在确定了具体的外设中断源后才能转入相应的外设中断处理子程序。
240X串行通信接口模块的数据接收和发送可分别申请中断,且具有高低两种优先级,其中高优先级的接收和发送中断共用CPU中断INT1,低优先级的接收和发送中断共用CPU中断INT5,因此高优先级的接收和发送中断处理程序应放在INT1的中断服务程序中,而低优先级的接收和发送中断处理程序应放在INT5的中断服务程序中。串行通信接收和发送中断在外设中断向量寄存器(PIVR)中的值分别为0006h和0007h,在INT1或INT5的中断服务程序中可通过检查外设中断向量寄存器(PIVR)的值来转入相应的接收或发送中断处理程序,若PIVR的值为0006h,则转入接收中断处理程序,若为0007h,则转入发送中断处理程序。
4 240X与微机的串行通信
在笔者研制的移动机器人系统中,传感器数据的采集与处理由TMS320LF/LC2407 DSP来完成。经采集和处理后的数据则通过DSP串行通信接口模块送往上位机,以在上位机中实现各种传感器数据的融合并用于机器人避障和地图构造。下面是2407DSP与微机串行通信的软硬件实现方法。
4.1硬件连接
由于2407 DSP芯片采用的电源为3.3V且其串行通信接口为CMOS电平,而微机串口采用的是标准RS-232-CEIA电平(-3V~-15V为1,+3V~+15V为0),因此实现DSP与微机的串行通信必须先经过电平转换。可以使用MAXIM公司的MAX3232E低功耗高速率电平转换芯片来实现CMOS和EIA的电平转换。其硬件连接如图3所示。
4.2软件实现
实现2407与微机的串行通信除需进行电平转换外,2407和微机均需进行软件编程。2407 DSP的编程可采用查询或中断模式来实现。下面给出一个采用查询模式的初始化程序。
LDP#0h;将数据页指针设置为0 SETCINTM;禁止所有中断
LDP#0E1h;将数据页指针设置为225 SPLK#0003h,MCRA;配置串行口发送和 接收引脚
LDP#00E0h;将数据页指针设置为224 SPLK#0240h,SCSR1;启动SCI模块内部时钟 SPLK#07h,
SCICCR;设置通信数据格式 SPLK#0003h,SCICTL1;接收、发送使能, 复位SCI
SPLK#0000h,SCICTL2;禁止接收、发送中断 SPLK#0000h,SCIHBAUD;设置波特率
为38400bps SPLK#0060h,SCILBAUD;BRR=96(60h) SPLK#0023h,SCICTL1;解除SCI模块
复位状态
微机的编程可采用汇编或高级语言,当使用Vi-sual C++编写微机的串行通信程序时,可采用以下三种方法之一来实现(具体细节可参阅文献[2])。
(1)利用OCX控件实现;
(2)利用API函数实现;
(3)利用其他串口驱动函数实现。
5结束语
利用240X与微机进行串行通信的优点是硬件电路简单并可实现较高速率的数据传输。在移动机器人传感器数据传输中,使用MAX3232E电平转换芯片在38.4kbps的波特率下可实现可靠的数据传输;240X与微机串行通信的主要缺点是难以实现长距离的信号传输。由于240XDSP芯片缺少标准RS232所需的握手联络信号,因而难以采用调制解调器进行长距离通信。不过使用三线式串口隔离驱动器在9600bps波特率下可将通信距离延长到1公里左右,这对大多数DSP应用领域已经足够了。
|