摘要:本文采用最简单的连接电路,进行软件模拟通用异步发送/接收器UART,实现TMS320VC33同步串行口和PC机RS-232C接口异步串行通信。
关键词:串行通信;数据格式;PC;TMS320VC33
数字信号处理器DSP,由于其具有高速数字信号处理等特点,在图形图像处理、高精度测量控制、高性能仪器仪表等众多领域得到越来越广泛的应用。实际应用中,往往把经过DSP采集处理的信号或数据传送给微机进行存储和进一步处理,而外部设备和微机之间进行数据传送,常常通过微机的RS-232异步串行口进行,实现起来接口设计容易,通信程序设计简单。
目前,通过微机的RS-232串行口进行通信最为简单且常用的是采用三线式接法,便可实现全双工异步串行通信。但是,在一些常用的DSP芯片中,采用的通信是同步串行方式,其数据传送格式和微机标准的RS-232数据帧格式不同,能否采用简便的方法,实现DSP的同步串行口和微机的异步串行通信。本文介绍了一种用软件模拟通用异步发送/接收器UART,实现TMS320VC33通过RS-232串行口和微机通信的方法。
RS-232和TMS320VC33串行通信格式
在微机的RS-232接口中,由于没有时钟信号,所以数据按照设定的固定波特率传送。通过微机的RS-232串行口进行通信最为简单且常用的是采用三线式接法,即只需连接RX(数据接收)、TX(数据发送)、GND(地)三个引脚,便可实现全双工异步串行通信。PC机按照帧格式发送/接收信号,一帧通常包括1位起始位(“0”电平)、5~8bits数据位、1位(或无)校验位和1位/1位半/2位停止位(“1”电平)。起始位表示数据传送开始,数据位是低位在先,停止位表示一帧结束。
按照RS-232标准通信,通信双方的波特率设置和帧格式的设置应该一致,才能保证数据正确的传送。
TMS320VC33是TI公司的高性能浮点DSP器件,它有1个双向双缓冲的同步串口,与串行通信直接有关的外部引脚有6个信号:串行接收时钟(CLKR)、串行发送时钟(CLKX)、接收帧同步(FSR)、发送帧同步(FSX)、串行数据接收(DR0)和串行数据发送(DT0)。串行口有8个内部存储器映射的控制寄存器,每个寄存器都是32位。
TMS320VC33的串行通信的发送与接收方式有连续方式和暴发方式,连续方式是指在同步信号后,数据连续传送,相邻字之间无间隔,暴发方式是指每个字的传输由串行口无效周期隔开,每个字的传送都由帧同步(FSX/FSR)信号开始,后面是数据位。
需要注意,TMS320VC33在暴发方式接收数据时,从帧同步信号后开始接收就不再考虑FSR信号,但在一帧信号的最后一位时,FSR必须为低电平,否则就将会被作为下一帧的帧同步信号位,传输方式就变成了连续方式。和标准的RS-232串行通信格式不同的是,TMS320VC33的发送与接收,数据位可以选择8、16、24和32位,一帧格式没有起始位、校验位和停止位,且数据位是高位在先。
TMS320VC33串口可以选择内/外部时钟,帧同步(FSX/FSR)信号也可以可以选择内/外部信号实现,但是,接收帧同步(FSR)信号一般采用外同步。
实现TMS320VC33和PC串行通信的简易方法
由以上分析看出,TMS320VC33的串口和PC机的串口在数据格式以及传送控制上有区别,但是通过软件模拟以及简单的硬件控制,就可实现TMS320VC33与标准串口间的通信。
采用三线连接的硬件电路
实现PC和TMS320VC33串行通信的硬件。由于PC起始位为低电平,TMS320VC33帧同步位为高电平,为了使它们统一起来,在DSP的发送/接收引脚都外接一个反相器的输入/输出端,当然,加了反相也会使数据相位和停止位都变反,但数据信号很容易用软件方法使它还原。
采用固定暴发方式通信及其软件实现
在这种方式下,TMS320VC33的串行数据传输率不变,且等于PC机的波特率。根据双方帧格式的特点以及软件对数据位处理的方便,对PC和TMS320VC33串行通信的帧格式设计如下:
DSP接收PC发送时,PC机:1位起始位、7位数据位、1位停止位;VC33:1位帧同步,8数据位(其中1位是PC的停止位)。
DSP发送PC接收时,PC机:1位起始位、7位数据位、1位停止位;VC33:16位数据位(其中第1位作为起始位,第2-8位作为数据位,第9位作为停止位,第10-16位作为空闲位)。
以上帧格式传送数据,有以下问题需要处理。
�邮辗蕉越邮盏氖©据组装变换。
环聪嗪螅�©好满足对FSR的要求。
TMS320VC33和PC根据以上软、硬件设计要求,实现串行通信数据处理。是在通信双方按以上设计并对串行口初始化后,进行TMS320VC33发送和PC机接收的数据处理过程,而PC发送和TMS320VC33接收也有几乎类似的处理。
TMS320VC33发送方:TMS320VC33要把6EH变成1011000000000000和1111000000000000两个16位数据分2次发送,前一个数据是发送6H,后一个数据发送EH。在发送的数据前面加了1位“1”,作为PC的起始位,后面7位为数据位,再后面加8位“0”,作为PC的停止位和空闲位。
PC接收方:以中断方式读取数据。硬件对数据反相后传过来的2帧数据是010011111111111和0000111111111111。PC串行口自动去掉起始位、停止位和空闲位,并把数据位的高低位互换得到2个7位数据1111001和1111000。低4位是数据的有效位,把它们取出来组装成10001001,取反后得到01110110,再对数据的高低位互换得到01101110,即6EH。
以上对发送/接收的数据进行变换,用软件实现是很容易的。之所以要把一个字节数据分成2个16位数据,主要是受到RS-232标准帧格式和“三线连接”通信方法的限制 。
结语
在工程设计中,采用上述方法实现PC和TMS320VC33串行通信,解决了相互之间通信格式不同的问题,简单方便,切实可行,其基本思想也可供其它数据格式不同的串行通信参考。 |