下面小编为大家带来TMS320C54XX系列DSP与PC机间串行通信的实现(共含7篇),希望大家能够受用!同时,但愿您也能像本文投稿人“icc”一样,积极向本站投稿分享好文章。
TMS320C54XX系列DSP与PC机间串行通信的实现
摘要:目前大多数数字信号处理器(DSP)芯片上未提代通用异步串行收发器(UART),只提供2~3个同步串行接口,其与微机及其它设备进行串行通信时,必须在DSP上扩展异步串行接口。以美国TI公司TMS320C54XX系列DSP为例,采用MAXIM公司的MAX3111异步串行收发器,研究了理想的接口扩展方案。论述了这种方案的软、硬件实现。该方案硬件连接简单,软件编程方便,可实现DSP与PC机间的串行通信,具有很高的工程应用价值。关键词:异步串行收发器 多通道缓冲串行接口 DSP McBSP SPI UART
DSP在电子工业领域得到了越来越广泛的应用。在DSP应用系统设计中,必不可少的是各种通信接口的设计。与并行接口相比,串行接口的最大特点是减少了器件引脚数目,降低了接口设计复杂性。串行数据传输可分为同步和异步两种模式。通用PC机的RS-232接口为通用异步接口UART(Universal Asynchronous Receiver and Transmitter),而MOTOROLA公司的串行外围设备接口SPI、队列SPI(QSPI)、PHILIPS公司的内部IC总线(I2C),National公司的微总线(MICROWIRE)均为同步串行协议。(本网网收集整理)
目前几乎所有的数字信号处理器都提供了一个或多个串行接口,然而,多数DSP芯片提供的是同步串口。在实际的应用中,也需要DSP能够与外设进行异步串行通信,如与PC机进行串行数据传输就要求DSP系统具UART串行接口。针对这种情况,本文研究并实现了一种简单、可靠的异步串口扩展方法。
1 扩展方案
综合分析DSP应用系统中扩展异步串行接口的方案,其基本方法和优缺点如下:
(1)在DSP的并行总线上扩展UART芯片(如TI公司的TL16C552),用硬件实现异步数据传输。优点是软件实现简单,缺点是在总线上还需扩展其它设备,这样做使目标系统复杂化,增大系统体积。
(2)利用DSP的McBSP和DMA,在不扩展其它硬件的情况下,用软件实现异步数据传输格式。这种方法的优点在于硬件简单,但软件复杂,加大了CPU的负担,所以不适合通信数据量大的场合。
(3)利用DSP的McBSP同步串行接口,在扩展适当硬件的情况下,将同步数据变换为UART异步数据格式进行传输。这样,就充分利用了DSP的片上资源,使硬件系统尽量简单化。
综合考虑硬件连接和软件编程的方便性,本文采用第三种方案,应用美国MAXIM公司的MAX3111串行异步收发器,与DSP的McBSP口直接连接。硬件上无需任何其它外围器件,同时由于异步数据的发送和接收由MAX3111以硬件方案实现,所以软件编程需要考虑的也只是DSP与MAX3111之间的同步数据通信。这样,用最简单的硬件连接和软件编程就能实现同步到异步的串行数据格式转换。
2 SPI接口协议及DSP的多通道缓冲串行接口
2.1 SPI接口协议
串行外围设备接口(SPI)是MOTOROLA公司提出的一个同步串行外设接口,允许CPU与各种外围接口器件以串行方式进行通信、交换信息。它使用4条线:串行时钟线(SCK)、主机输入/从机输出线(MISO)、主机输出/从机输入线(MOSI)、低电平有效的使能信号线(CS)。这样,仅需3~4根数据线和控制线即可扩展具有SPI接口的各种I/O器件。其典型的接口示意图如图1所示。
2.2 McBSP的功能与特点
TMS320C54XX系列DSP芯片都具有2~3个高速、全双工、多通道缓冲串行接口(McBSP),其方便的数据流控制可使其与大多数同步串行外围设备接口。McBSP是在标准串行接口的基础上对功能进行扩展的,除具有标准串口的功能特点外,其灵活性体现在如下几个方面:
(1)双缓冲区发送,三缓冲区接收,允许连续数据流传输;
(2)可与SPI、IOM-2、AC97等兼容设备直接接口;
(3)可编程帧同步、数据时钟极性,支持外部移位时钟或内部频率可编程移位时钟;
(4)拥有相互独立的数据发送和接收帧同步脉冲和时钟信号;
(5)多通道发送和接收,最多可达128个通道,速度可为100Mbit/s。
2.3 McBSP的SPI方式
TMS320C54XX系列DSP芯片的McBSP串口工作于时钟停止模式时与SPI协议兼容。当将McBSP配置为时钟停止模式时,发送器和接收器在内部得到同步,这时McBSP可作为SPI的主设备或从设备。发送时钟信号(BCLKX)对应于SPI协议中的串行时钟信号(SCK),发送帧同步信号对应于从设备使能信号(CS)。在这种方式下对接收时钟信号(BCLKR)和接收帧同步信号(BFSR)将不进行连接,因为它们在内部与BCLKX和BFSX相连接。McBSP工作于SPI模式的主机时,与其它SPI器件接口如图2所示。
3 MAX3111通用异步收发器
3.1 MAX3111功能特点
MAX3111通用异步收发器是MAXIM公司专门为小型微处理系统进行最优化设计的UART,它包括一个振荡器和一个可编程波特率发生器;具有一个可屏蔽的中断源;另具有一个8字节的接收FIFO(先入先出)缓冲器。它应用SPI/MICROWIRE接口技术直接与主控制器进行通信,线路简单、体积小,通信速率可达230kbit/s。另外其内部除具有UART之外,还包括两个RS-232电平转换器,这样无需再接入普通的MAX232进行电平转换,即可应用一个芯片实现微控器(具有SPI/MICROWIRE接口)与PC机或其它设备之间的异步数据传输。
3.2 对MAX3111的操作
MAX3111通过SPI接口与主设备进行16位数据的全双工同步通信,即主设备传送16位数据给MAX3111的同时,也可接收到MAX3111发送的16位数据。主设备在MOSI线上向MAX3111发送的16位串行数据序列中包括传输格式控制字,如波特率设备、中断屏蔽、奇偶校验位等,同时还有发送的数据字。MAX3111在MISO线上向主设备发送的16位数据序列中除了接收到的数据外,还包括中断标志等状态位。所以通过16位的实时数据传输,主设备可获得MAX3111工作状态信息,同时对其具有完全控制权利。这样,两个设备的控制、状态、数据信息的实时通信就保证了数据传输的可靠性和稳定性。
4 DSP与MAX3111的接口设计
DSP的McBSP串行接口工作于SPI模式时可直接与MAX3111进行连接,从而实现与RS-232设备进行异步数据传输。此时DSP作为SPI协议中的主设备,其接口电路如图3所示。
DSP的发送时钟信号(BCLKK)作为MAX3111的串行时钟输入,发送帧同步脉冲信号(BGSX)作为MAX3111的片选信号(CS)。BDX与DIN连接作为发送数据线,BDR与DOUT连接作为接收数据线。MAX3111的TX与T1IN连接,RX与R1OUT连接,以便利用其片内的转换器实现UART到RS-232电平的转换。MAX3111的中断信号(IRQ)与DSP的外部中断相连。
在SPI串行协议中,主设备提供时钟信号并控制数据传输过程。由MAX3111接口电路时序图(图4)可知,必须设置DSP的`McBSP于适当的方式才能保证与MAX3111的时序相配合。
MAX3111要求在数据传输过程中CS信号必须为低电平,在传输完毕后必须为高电平。此信号由McBSP的BFSX引脚提供,因此必须正确设置DSP的帧脉冲发生器,使之在每个数据包传输期间产生帧同步脉冲,即在数据包传输的第一位变为有效状态,然后保持此状态直到数据包传输结束。
McBSP的采样率发生器产生适当频率的时钟信号,由BCLKX引脚输出,保证主从设备间的同步数据传输。因此必须正确设置DSP的采样率发生器时钟源(CLKSM)和时钟降频因子(CLKGDV)。根据SPI传输协议,必须正确设置数据发送延迟时间(XDATDLY)。由图4可知MAX3111要求在SCLK变高之间的半个周期开始传输数据。
所以必须为McBSP选择合适的时钟方案,即设置McBSP的时钟停止模式。在本应用中采用McBSP的时钟停止模式2(CLKSTP=11b,CLKXP=0),这样即可保证与MAX3111的时序相配合。
5 DSP的异步通信软件的设计
考虑到应用系统软件的可移植性和可读性,数据传输软件采用C语言进行编写,这样,可以利用DSP开发软件CCS2.0所提供的DSP/BIOS中的芯片支持库函数(CSL)。CSL提供C语言可调用的DSP外围接口库函数,其中包括DMA模块、McBSP模块、TIMER模块等。应用这些库函数可大大提高程序可读性,缩短软件开发周期。在本文所提到的应用中,主要调用MCBSP模块。数据传输软件主要包括以下几部分。
(1) McBSP串口初始化
如上所述,在本应用中应将TMS320C54XX DSP的McBSP串行口配置为SI模式,以DSP作为主设备。表1给出了应设置的寄存器或寄存器位的值,未涉及的寄存器保持其默认值即可。
表1 McBSP设置为SPI模式时相关寄存器值
位名称位 值描 述所在寄存器CLKSTP11b使能McBSP的时钟贪婪模式,并使其在SCLK变高之前半周期开始传输数据SPCR1CLKXP0设置BCLKX信号的极性PCRCLKXM1设置BCLKX引脚信号为输出(SPI主设备)PCRRWDLEN1000~101b设置接收数据包的长度(必须与XWDLEN1的值相等)RCR1XWDLEN1000~101b设计发送数据包的长度(必须与RWDLEN1的值相等)XCR1CLKSM1采样率发生器时钟源CPU时钟SRGR2CLKGDV1~255设置采样率发生器的将频因子SRGR1FSXM1设置BFSX引脚信号为输出PCRFSGM0在每个数据包传输期间,BFSX信号都有效SRGR2FSXP1设置BFSX信号为低电平有效PCRXDATDLY01b提供正确BFSX信号启动时间XCR2RDATDLY01b提供正确的BFSX信号启动时间RCR2根据表1,调用CSL的McBSP配置库函数即可完成McBSP的初始化。
McBSP_Handle hport0; /*声明指向McBSP的句柄*/
McBSP_Config PortConfig={ /*定义寄存器设置结构*/
0x1800, /*设置串口控制寄存器1的值*/
0x0000, /*设置串口控制寄存器2的值*/
0x0040, /*设置接收控制寄存器的值*/
…
};
hport0=MCBSP_open(0,MCBSP_OPEN_RESET);/*打开第一个McBSP串口*/
MCBSP_config (hport0,&PortConfig);/*按结构设置McBSP的各寄存器*/
(2)MAX3111工作模式及波特率设置
在进行通信之前,DSP必须首先根据命令序列格式向MAX3111写入配置命令字,之后才能进行正确的数据传输,如8位数据位、一位停止位、无奇偶校验位、波特率为115200、使能接收和发送中断的异步数据传输。DSP对MAX3111进行配置的简要过程为:
…
McBSP_start(hport0, /*McBSP开始数据传输*/
McBSP_SRGR_START|MCBSP_SRGR_FRAMESYNC
|McBSP_RCV_START|MCBSP_XMIT_START,0x200
);
while(!McBSP_xrdy(hport0));/*等待发送寄存器为空*/
McBSP_write16(hport0,0x6E0B); /*向MA3111写入配置命令字*/
…
(3)中断服务程序
在进行中断方式数据传输时,需要注意的是:虽然DSP的McBSP有自身的发送和接收中断,但由于McBSP与MAX3111之间的同步串行数据传输速率高于MAX3111将数据以一定波特率(最高230kbps)异步发送的速率,因此如果应用McBSP的发送中断,将造成发送数据的丢失。同时,在SPI协议中,数据的传输是由SPI主设备发起的,所以在SPI方式下的McBSP并不能产生接收中断。因此,本方案应用的关键之一是将MAX3111的IRQ中断信号连接至DSP的一外部中断,以实现中断方式下可靠、正确的数据传输。
针对现有的多数据数字信号处理器(DSP)芯片上不提供异步串行收发器(UART)接口,而只有同步串行接口的情况。本文通过简单的硬件电路将同步接口转换为异步串行接口,充分利用了DSP的在片硬件资料,很好地解决了DSP的异步串口扩展问题。此方法在工程实践中已经得到应用。实践证明,在各种波特率下(最高可为230.4kbps),其查询和中断方式数据传输正确、可靠,各元件工作正常 ,并且在此硬件连接的基础上,利用DSP的DMA功能进行串行数据接收及发送收到了良好效果,进一步提升了应用系统的性能。
用TL16C752B实现DSP和PC机的串行通信
摘要:介绍了TL16C752B的特点、性能和相关寄存器,给出了通过TL16C752B实现TMS320VC5421和PC机实时通信的方法。同时给出了串口通信部分的硬件应用电路图以及对TL16C752B进行初始化的软件实现程序。关键词:数字信号处理;通信接口;异步通信;TL16C752B;TMS320VC5421
1 引言
美国德州仪器公司(TI)的TMS320VC54XX系列DSP芯片与PC机实现异步通信通常有两种方法:第一种是使用通用I/O信号XF和BIO作为串口发送和接收信号,用软件逐位发送和接收数据,即软件异步通信方法,这种方法需要占用很多CPU时间,因此,只能在DSP不太忙、实时性要求不高的情况下采用;第二种是通过扩展异步通信芯片来实现高速串行通信,本文选用的就是此方法。
在笔者设计数字调幅广播系统中的基带处理子系统时,复用器与信道编码器之间的通信采用的是异步串行通讯方案。复用器则使用通用PC机来实现,信道编码器使用TI公司生产的DSP芯片TMS320VC5421来设计实现。
(本网网收集整理)
2 UART芯片TL16C752B简介[1]
2.1 主要特点
TL16C752B是TI公司推出的新型UART(Universal Asynchronous Receiver and Transmitter )收发器。该器件的主要特点如下:
●引脚和ST16C2550兼容,内置两套UART系统,可独立工作;
●工作时,最高波特率可以达到1.5Mbps(使用24MHz晶体时)或3Mbps(使用48MHz振荡器或时钟源时);
●具有64字节发送/接收FIFO(接收FIFO包含错误标志)。由于收、发FIFO的触发等级可通过软件编程实现,因而减少了CPU的中断次数;
●接收FIFO的启动和停止等级可以通过软件编程来实现;
●具有两种控制模式:其中软件流控制模式可通过编程Xon/Xoff字符来实现;而硬件流控制模式则可通过设置RTS和CTS引脚及相应的寄存器来实现;
●波特率可编程;
●可编程下列串行数据格式:
――5、6、7、8 四种字符;
――数据奇偶校验或者无校验;
――1、1.5、2bits 停止位;
●内部闭环。
2.2 TL16C752B的引脚功能
TL16C752B内含双UART,并自带64字节收发FIFO,可自动进行软件流和硬件流控制,最大波特率可达3Mbps。此外,TL16C752B还提供了其它一些增强功能,可通过设定EFR寄存器的相关位来实现。通过FIFO RDY 寄存器可读取TXRDY/RXRDY引脚的状态;而通过片内寄存器则可为使用者提供接收数据的错误识别、操作状态以及MODEM的接口控制信号。
TL16C752B的引脚排列如图1所示,各主要引脚的功能如下:
A0~A2:地址线,通过这几个引脚以及读写信号IOR和IOW可以访问及设定片内寄存器?
D0~D7:双向8位数据线?
CSA、CSB:两套UART的片选信号?
TXA/RXA、TXB/RXB:分别表示所要发送和接收的数据端口?
INTA/INTB:中断信号?
RESET:芯片复位信号?
XIN/XOUT:时钟输入/输出信号。
2.3 TL16C752B的内部寄存器
图2所示是TL16C752B的内部功能模块图,该器件内部共有20个寄存器,这些寄存器可分别用于实现通信参数的设置、对线路及MODEM状态的访问、数据的发送和接收以及中断管理等功能。其地址可分别通过A0~A2地址线和某些寄存器的特定位来确定,由于有些寄存器的地址是重叠的,所以还必须通过读/写信号加以区分。TL16C752B内部寄存器的映射如表1所列。表中:
“*” 表示仅当LCR的第7位为1时,访问DLL/DLH。
“** ”表示仅当LCR为0xBF时,访问EFR以及Xon1/2,Xoff1/2。
“+” 表示当EFR[4]为1,且MCR[6]为1时,访问TCR/TLR。
“++”表示当片选信号有效、MCR[2]为1且处于非闭环模式时,访问 FIFO RDY。
此外,对于MCR[7],只有当EFR[4]为1时才可以更改。在上述说明中,[]表示该寄存器的第几位。
表1 TL16C752B的内部寄存器映射表
A[2]A[1]A[0]读 模 式写 模 式000接收保持寄存器(RHR)发送保持寄存器(THR)001中断使能寄存器(IER)IER010中断标示寄存器(IIR)FIFO控制寄存器(FCR)011线路控制寄存器(LCR)LCR100MODEM控制寄存器(MCR)MCR101线路状态寄存器(LSR)LSR110MODEM状态寄存器(MSR)MSR111临时寄存器(SPR)SPR000*除数锁存低位(DLL)DLL001*除数锁存高位(DLH)DLH010**增强功能寄存器(EFR)EFR100** Xon-1字符值Xon-1字符值101** Xon-2字符值Xon-2字符值110** Xoff-1字符值Xoff-1字符值111** Xoff-2字符值Xoff-2字符值111+传输控制寄存器(TCR)TCR110+触发等级寄存器(TLR)TLR111++FOFO状态寄存器(FIFO RDY)FIFO RDY2.4 TL16C752B工作流控制模式
TL16C752B有2种工作流控制模式:硬件流控制和软件流控制。使用前者可降低软件消耗,通过RTS和CTS引脚信号的硬件连接可自动控制串行数据流,从而提高系统的有效性;后者则通过使用可编程的Xon/Xoff字符来自动控制数据传输。本文主要介绍软件流控制模式。
软件流控制模式的使能可通过EFR和MCR这2个寄存器来实现。不同流模式的组合如表2所列(可通过设定EFR的'低4位实现)。
表2 软件流控制模式
EFR[3]EFR[2]EFR[1]EFR[0]TX RX软件流控制组合模式
00XX无发送流控制10XX发送Xon1,Xoff101XX发送Xon2,Xoff211XX发送Xon1,Xoff1;Xon2,Xoff2XX00无接收流控制XX10接收器比较Xon1,Xoff1XX01接收器比较Xon2,Xoff21011发送Xon1,Xoff1;接收器比较Xon1,Xoff1;Xon2,Xoff1发送Xon2,X0ff2;接收器比较Xon1,Xoff1;Xon2,Xoff21111发送Xon1,Xoff1;Xon2,Xoff2;接收器比较Xon1,Xoff1;Xon2,Xoff1无发送流控制;接收器比较Xon1,Xoff1;Xon2,Xoff2具体工作流程(从接收的角度)为:接收时,若操作达到接收中断等级,则产生中断,但这时传输还在进行(这里假设中断有一定延时);而当RHR中的数据数目达到接收停止等级规定的数值时,接收端发送Xoff1/2,以通知发送端停止发送数据,这时接收端将读取RHR中的数据。当RHR中的数据数目降到接收启动等级规定的数值时,接收端发送Xon1/2,以通知发送端可以继续发送数据。
3 TL16C752B与PC的通信电路
TL16C752B与PC的串行通信部分的硬件连接电路如图3所示。图中,地址线A0~A2、数据线D0~D7分别和DSP的地址总线A0~A2、外部数据线D0~D7直接相连,而选通信号CSA/CSB、读写信号IOR/IOW、复位信号RESET以及中断信号INTA/B则接入CPLD并由CPLD处理。同时DSP端的PS、DS、IS、IOSTRB、R/ W、MSTRB也同时接入CPLD以用于生成控制信号。电路中使用CPLD一方面可以对UART的地址灵活配置,另一方面也可以灵活生成UART的复位、选通和读写信号,从而增强系统的灵活性,方便系统调试。
由于PC端串口采用RS232电平标准,因此UART之后需要连接MAX3221以完成电平转换。TL16C752B的数据发送引脚和数据接收引脚分别与MAX3221的数据输入引脚和数据输出引脚连接。这里只使用一套UART来完成TL16C752B和PC的通信。数据收、发采用中断方式,UART_INTA通过CPLD和TMS320VC5421的外部中断INT0相连接。而3.072MHz晶振则连接到XIN和XOUT两引脚。波特率设定为38400,故DLL/DLH分别为06和00h。
具体调试时,可先从查询方式开始,若没有问题,再使用中断方式。
图3
4 TL16C752B和PC通信的软件编程
该系统的软件设计部分主要包括PC机程序、DSP初始化、TL16C752B初始化和数据发送/接收以及双方的通信协议等。下面介绍TL16C752B的初始化程序。
TL16C752B初始化程序主要包括以下几部分:
(1)波特率的设定;
(2)增强功能的使能及设置EFR的相关位;
(3)完成有关收、发FIFO的设定,主要是MCR/TCR/TLR 3个寄存器的设置;
(4)软件流控制模式使能以及Xon/Xoff字符的设置;
(5)传输数据格式设定,包括8位数据位、2位停止位、DMA传输模式1、偶校验、不使用强制校验模式、暂停控制位无效等;
(6)设置FIFO控制以及中断控制寄存器。
此外,在完成设置前,还应注意以下几点:
(1) 设定DLL和DLH前,LCR[7]应为1。
(2) 设定MCR前,EFR[4]应为1,LCR应为00h。地址相重叠的寄存器不能同时使能。
(3) 读写RHR和THR时,由于DSP的读写速度很快,故最好不要连续读写,而是在每读、写一次后延时一段时间,然后再进行下一次读写。
(4) 这里,DMA只是一个名称,而并非是 “直接存储器访问”。
TL16C752B的地址分配在I/O空间的0020h~0027h,读写通过PORTR和PORTW指令完成。TL16C752B初始化程序如下:
ini_uart_start:
;设置 baud rate=38400 ; divi-sor=0006h
stm #temp1_reg,ar1
nop
st #80h;*ar1 ;除数锁存使能 LCR=bfh
portw *ar1,#k_LCR_addr
st #k_DLL_value,*ar1
portw *ar1,#k_DLL_addr
st #k_DLH_value,*ar1
portw *ar1,#k_DLH_addr
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
st #k_LCR_value?*ar1 ;LCR=bfh
portw *ar1,#k_LCR_addr
st #k1 EFR value?*ar1 ;增强功能使能
portw *ar1,#k_EFR_addr
st #0,*ar1 ;设定LCR= 0
portw *ar1?#k LCR addr
st #k_FCR_value,*ar1 ;设定FIFO控制寄存器
portw *ar1,#k_FCR_addr
st #k_MCR_value,*ar1 ;设定MCR/TCR/TLR寄存器
portw *ar1,#k_MCR_addr
st #k_TCR_value,*ar1
portw *ar1,#k_TCR_addr
st #k_TLR_value,*ar1
portw *ar1,#k_TLR_addr
st #k1_MCR_value,*ar1
portw *ar1,#k_MCR_addr
st #k_LCR_value,*ar1 ;为访问Xon/Xoff/EFR,LCR重设定为BFh
portw *ar1,#k_LCR_addr
st #k_Xoff1_value,*ar1 ;设置软件流控制
portw *ar1,#k_Xoff1_addr
st #k_Xon1_value,*ar1
portw *ar1,#k_Xon1_addr
st #k_Xoff2_value,*ar1
portw *ar1,#k_Xoff2_addr
st #k_Xon2_value,*ar1
portw *ar1,#k_Xon2_addr
st #k_EFR_value,*ar1 ;设置软件流控制组合方式
portw *ar1,#k_EFR_addr
st #k_LCR_dlatch_disable,*ar1
portw *ar1,#k_LCR_addr ;设定传输数据格式
st #k_IER_value,*ar1 ;设置中断
portw *ar1,#k_IER_addr
5 结束语
通过扩展串口完成TMS320VC5421与PC机串行通信硬件接口比较简单、数据传送距离远、使用经济。该电路及其软件经与微机的通信实验证明,在波特率为38400时,能够可靠地实现与PC机的通信。
利用异步通信芯片16C552实现PC机与DSP的串行通讯
摘要:介绍了异步通信芯片16C552的功能、特点、结构和内部寄存器,给出了用16C552芯片实现PC机与DSP串行通讯的方法,同时给出了它们之间的硬件接口电路和软件初始化程序。关键词:16C552;串行通讯;异步
当实现PC机与DSP的串行通讯时,通常可直接利用DSP的串行通讯接口(SCI)模块和SCI多处理器通讯协议(即空闲线路模式和地址位模式)来在同一串行线路中实现多个处理器之间的通讯,也可以采用SCI异步通讯模式实现串行通讯。这两种方式虽然都能方便地实现串行通讯,但它们都需占用系统较多的硬件和软件资源,(本网网收集整理)因而不适用于对实时性要求比较高且系统资源紧张的应用场合。笔者在研制电力有源滤波实验系统中,由于采用了异步通讯芯片16C552,从而成功解决了这个问题。本文将从电路结构和软件编程两个方面介绍该方案的实现方法。
1 16C552简介
1.1 功能特点及结构框图
16C552是TI(TL16C552)和VLSI(VL16C552)等公司生产的异步通信芯片,具有两个增强的通用异步通讯单元通道和一个增强的双向打印机端口;支持TL16C450和FIFO两种模式,其16字节的FIFO可减少CPU中断;每个通道都具有独立的发送、接收、线路状态和设置中断功能,同时具有独立的MO-DEM控制信号、可编程的串行数据发送格式(包括数据位长度、校验方式、停止位长度)和可编程波特率发生器;另外,每个通道的数据和控制总线还具有三态TTL驱动功能。
TL16C552AM是TI公司的68脚PLCC(Plastic Leaded Chip Carrier)封装芯片,其管脚及功能框图如图1所示。从图中可以看出,它的串行口主要完成两个功能,一是把外设或调制解调器接收来的串行数据转换成并行数据;二是把CPU的并行数据转换成串行数据以便发送。在正常操作过程中,CPU可以随时读取16C552的状态信息,以报告16C552传输操作的类型和状态,包括各种错误状态,如奇偶校验、溢出、帧错误和FIFO错误等。此外,16C552还具有完整的MODEM控制功能,并有CTS、RTS、DSR、DTR、RI、DCD等信号端。
16C552具有一套完善的中断系统,可以自动设定优先级。它的串行口和并行口都可以独立地工作于中断和查询两种工作方式。
1.2 16C552的内部寄存器
16C552内部有12个单字节寄存器,这些寄存器占用了8个I/O口地址,其地址由A0~A2决定。其中有些寄存器共用一个I/O口地址,共用的I/O口可以通过读/写信号和线路控制寄存器(LCR)的D7位(DLAB)来进行区分,具体描述见表1所列,需要说明的是:只有当16C552的CS0或CS1为低电平时,串行通道才能被访问。
表1 I6C552的内部寄存器
DLABA2A1A0符 号寄 存 器LLLLRBR接收缓冲寄存器LLLHTHR发送保持寄存器LLLLIER中断允许寄存器XLHHIIR中断识别寄存器XLHLFCRFIFO控制寄存器XLHHLCR线路控制寄存器XHLLMCRMODE控制寄存器XHLHLSR线路状态寄存器XHHLMSRMODEM状态寄存器XHHHSCR高速缓存器寄存器HLLLDLL除数锁存器低位HLLHDLM除数锁存器高位关于各寄存器内容的具体规定,限于篇幅,这里不作详述,有兴趣者可参看TI公司的相关产品资料介绍,但在串行通讯应用中,要重点搞清楚FCR、LCR、IER等几个寄存器的内容。此外,在实际应用中,有时可能会忽视MODEM控制寄存器中的D4位,该位为自测试循环回送状态控制位,利用它可以对串口的自测试进行控制,因此,在自测试进行完毕后,还应对该位进行复位,以保证系统的正常运行。
2 通讯系统硬件接口电路
本系统的硬件接口电路如图2所示。其中,地址译码电路可以根据实际需要采用不同的电路实现。为了使系统使用灵活方便,本方案中采用一片CPLD来进行系统的地址分配。复位电路可以利用专用复位芯片,也可用上拉电阻方式实现。外接晶振可以自行选择,然后根据晶振频率设置除数锁存器的高位和低位,从而获得通讯系统正确的波特率,本系统中使用的晶振是8MHz。此外,由于16C552A有两个串行通道和一个标准并行口,它们相互之间的.配合使用在硬件和软件上都要加以注意。建议将不用端口的片选接到高电平(16C552A的片选为低电平有效),以免出现错误。
3 串行通讯软件设计
3.1 通讯协议
本设计的通讯协议包括以下几点:
(1)波特率为9600。
(2)通讯命令由2个字节构成:第一个字节是同步字节0XFF;第二个字节是命令码,主要用来指示各种控制命令。
(3)每个字节包括8位数据位和1位停止位,无校验。
(4)在通讯过程中,上位机向TMS320F243发送同步命令,TMS320F243接收到后立即应答,若应答错误则重发。
(5)通讯程序向TMS320F243发送控制命令时,TMS320F243返回接收正确应答信号;通讯程序向TMS320F243查询系统参数命令时,TMS320F243按照规定格式返回所需数据。
PC机和TMS320F243均采用异步通讯方式,PC机采用事件驱动方式来接收数据,TMS320F243采用中断方式接收数据,而用查询方式发送数据。
3.2 上下位机通讯软件设计
在PC机上编写串行通讯程序至少有三种方法,分别为汇编语言、C语言和Visual系列通讯控件(MSComm)。相比较而言,Visual系列通讯控件能够用少量的代码轻松高效地完成编程任务。实际应用中,可用以Visual Basic(简称VB)6.0中的通讯控件MSComm为基础编写PC机的串行通讯程序,而用汇编语言编写下位机(F243)软件。上、下位机的串口程序流程分别如图3和图4所示。 16C552的初始化程序如下:
;THE 16C552 INITIALIZATION PROGRAM
C552_INIT:
LDP #00h
SPLK #83h,GSR0
OUT GSR0,0E003h ;设置LCR
SPLK #34h,GSR0
OUT GSR0,0E000h ;设置DLL
SPLK #00h,GSR0
OUT GSR0,0E001h ?; 设置DLM
SPLK #03h,GSR0
OUT GSR0,0E003h ?; 设置LCR
SPLK #08h,GSR0
OUT GSR0,0E004h ?; 设置MCR
SPLK #01h,GSR0
OUT GSR0,0E002h ?; 设置FCR
SPLK #01h,GSR0
OUT GSR0,0E001h ? ;设置IER
RET
图4
4 结束语
本文对使用异步通信芯片16C552实现PC机与DSP之间的串行通讯方法进行了研究,笔者已开发了其串行通讯软件,并在实验中调试通过。该软件不仅使用灵活方便,而且可以利用16C552的FIFO模式实现大数据量的收发,从而减少了对DSP的中断,缓解了系统资源紧张的情况。
DSP与PC间的数据通讯
摘要:DSP由于具有高性能和灵活可编程的优点而得到广泛的应用。文章给出了用PC机作主机,DSP作从机来实现DSP与PC机间有效、可靠通讯的实现方法。同时通过一个数据传输程序的例子来详细阐述如何使用VB6.0专业版作为开发工具,并利用DSP中的SCI(SerialCommunicationInterface)模块来实现DSP与微机间的数据传递方法。关键词:DSP;串口通信接口;PC机;TMS320C24X
1引言
TMS320C24x是美国TI(德州仪器)公司专为电机控制(DMC)应用而推出的一种低价格、高性能16位定点运算DSP。该器件将高性能的DSP内核和丰富的微控制器外设功能集于一身,从而为控制系统应用提供了一种理想的解决方案。TMS320C24x的串行通信接口(SCI)支持CPU与其它采用标准NRZ(不归零)格式的异步外设间的数字通信。异步模式使用两条线来与诸如采用RS-232-C格式的终端和打印机等众多标准器件进行连接,因此,利用DSP中的SCI模块来与微机间的指令和数据传递便可实现微机对生产现场的检测和控制。
VB6.0是运行于Windows上的交互式可视化集成开发环境,利用其强大的通讯控件(MicrosoftCommActiveXControl6.0)可方便地实现PC机与DSP间的通信。
2DSP部分
该DSP控制器的串行通讯接口由发送和接收两大部分组成,其与串行通讯相关的引脚如下:
SCIRXD:串行通讯接收引脚,也可用作普通I/O端口。
SCITXD:串行通讯发送端,也可用作普通I/O。
该DSP的系统时钟由SYSCLK设定,其中SYSCLK为CPUCLK/2?CPUCLK为20MHz。
通过TMS320C24x中的一个16位波特率选择器可获得超过65000种不同的可编程波特率。波特率的设置与SCIHBAUD和SCILBAUD有关,其具体算式如下:
BRR=SYSCLK/(SCI异步波特率×8)-1,
其中SYSCLK为10MHz。本软件采用9600的波特率。可编程数据字长从1位到8位,并可由SCICCR控制寄存器来编程数据格式。本软件采用8位数据字长。PC与DSP的通讯采用中断方式,可避免DSP的CPU反复查询接收与发送缓冲区满标志,从而提高设备利用率,保证其具有足够的实时性。相应的中断设置可由SCICTL2来完成。
串行通讯接口数据无论是接收还是发送,都采用NRZ(不归零)格式。本软件采用8位数据为一帧(一个接收和发送的单位)的格式。
在串行口初始化完成后,只需对数据发送缓冲器SCITXBUF和数据接收缓冲器SCIRXBUF进行操作即可。如果要发送数据,无论何时,只要把数据写入到SCITXBUF就会产生发送中断。而加入起始位、停止位、校检位数据以及在波特率规定的节拍下移位到发送引脚SCITXD/IO等工作则可由串行通讯SCI模块本身来完成。如果要接收数据,只要DSP接收到完整的帧就会产生中断,然后只要在中断程序中把SCIRXBUF的内容读出即可,因为对于引脚SCIRXD/IO移位来的信息,串行通讯SCI模块本身即可自动去掉起始位、停止位和校检位,然后将数据放到SCIRXBUF中。
对于单机通信,可不使用SLEEP设置,而使用空闲线多处理机模式,并采用中断方式在主程序中完成初始化。同时可设置一个变量用于辨别是否给PC机发数据。
接下来应考虑中断接收子程序里从PC机送来的信号(PC机要先将DSP中需要的'电机参数转换成定点数1.15、4.12、8.8、10.4等格式)。在发送子程序里,应由DSP将得到的数据回送给PC机并由PC机将定点数转换成电机参数并显示。当然,DSP也可以将内部某指定地址开始的数据传给PC机,然后由PC机按给定格式转换并处理。DSP程序流程图如图1所示。
有关SCI初始化的部分程序如下:
.bssSEND,1;向微机发送数据的标志
LDP#00E0h
SPLK#0017h?SCICCR;SCI复位,传输数据长度8位
SPLK#0013h?SCICTL1;串行输入、输出使能
S
PLK#0003h?SCICTL2;串行输入、输出中断使能
SPLK#0000h?SCIHBAUD
SPLK#0082h?SCILBAUD;波特率9600
SPLK#0022h?SCIPC2;定义引脚SCITXD和SCIRXD为功能引脚
SPLK#0033h?SCICTL1;串行输入、输出工作
………………………………
3VB部分
利用VB6.0专业版提供的功能强大的ActiveX控件MSCOMM可实现微机与DSP的通信,实际上,在VB中,串行通讯端口所传送的数据使用的是BYTE字节型数组变量,可将装载数据的数组转换为Variant型进行传输。同理?接收数据时要将数据赋给Variant型变量再进行处理。BYTE型表示数据类型为整型?范围为:0~255。Variant型是变体变量,可以是任意数据类型。同时需设置一个变量(标志变量)以用于辨别是否要求DSP发送数据给PC。
图3
由于本软件所用的DSP为定点格式,字长为16位,因此,本系统不能直接表示浮点数。而应进行格式转换。
限于篇幅,具体转换模块可参见程序中Fun8.bas.VB部分,程序流程图如图2所示,人机界面如图3所示。操作时,单击‘发送’按钮可向DSP发送数据,单击“验证”按钮则可接收DSP发送来的数据。
4结论
利用DSP的串行通信接口?SCI?和功能强大的面向对象的开发工具VB6.0专业版?可以方便地实现DSP与PC机间的单机或多机串行通信。本文所涉及的软件已在PC机和TMS320F240评估板上调试通过。
摘要:介绍一种快速的并行协议――ECP协议在高速单片机与PC机间通信的应用。高速单片机采用SX52BD,并用虚拟外设实现。
关键词:ECP协议 互锁握手 虚拟外设
引言
扩展能力端口模式ECP(Extented Capability Port)是一种IEEE 1284标准的工作模式之一。它能实现双向数据传输,具有DMA传输、数据RLE压缩、双向寻址等功能。它要求主机外设双方的硬件都必须实现状态机的功能,即自动产生各种控制信号。ECP模式是唯一定义了寄存器实现的IEEE 1284传输协议。在计算机端操作ECP并行协议,仅需对相应的寄存器进行读写就会触发硬件完成各种时序。ECP模式的数据传输率可以达到2~4MB/s。
(本网网收集整理)
SX52BD是SX系列产品,是采用CMOS工艺制造的、可配置的通信控制器。它是一种高速单片机,指令大都是单周期的,其工作频率可达到50MHz。由于其特有速度,设备可实现虚拟外设(软件代替硬件的功能)。本文讲述的通信就是基于此完成的`。
1 ECP协议
ECP传输通过标准并行端口实现。其DB25接口的引脚定义如下:
1―HostClk; 2~9―双向D1~D8;
10―PeriphClk; 11―PeriphAck;
12―nAckReverse; 13―Xflag;
14―HostAck; 15―nPeriphRequest;
16―nReverseRequest; 17―IEEE1284Active;
18~25―各信号地。
ECP模式分以下8个操作阶段。
①模式商议阶段。主机把ECP的能力请求值放到数据总线上,然后置IEEE 1284 Active为高,HostAck为低。外设应该置PeriphClk为低,nPeriphRequest为高,Xflag为高,nAckReverse为高。主机置HostClk为低,然后置HostClk和HostAck为高,表示已经确认了一个兼容于ECP模式的外设。接着,外设置nAckReverse为低,PeriphAck为低,Xflag为高,PeriphClk为高。接口进入设置阶段。
②ECP设置阶段。主机置HostAck为低,外设置nAckReverse为高,响应主机。接口进入正向空闲阶段,可以开始传输数据。
③正向空闲阶段。外设置PeriphAck为低,主机检测到此信号可开始传输数据。
④ECP正向传输阶段。主机将数据放到数据总线上,置HostClk为低。外设置PeriphAck为高,应答。主机置HostClk为高,外设接收数据并置PeriphAck为低,完成这次传输。
这种握手方式即互锁握手(interlocked handshake)。互锁握手是指每一个控制信号的跳变都由接口对方相互应答。使用这种方式,外设可以控制传输的时间以满足它进行操作的需要。
⑤ECP正向到反向转换阶段。在正向空闲阶段,主机置8位数据总线为高阻状态,并设置HostAck为低。为等待最小建立时间后,置nReverseRequest为低。外设置nAckReverse为低应答,进入反应空闲阶段。
看上去相当复杂,但PC端操作却很简单,仅需对后面介绍的寄存器读写即可。单片机端略微复杂,但也只需对I/O口置位、复位、读取,编程并不难。
2 SX52BD单片机简介
SX52BD片内程序存储器容量为4096字节,数据存储器容量为262×8位。SX52BD具有5个8位I/O端口A、B、C、D、E,2个带8位预定标器的16位定时器,1个带预定标器通用8位定时器,1个模拟比较器,1个brownout检测器及看门狗定时器,1个内部RC振荡器。端口A、B、C为双向I/O口;端口B可作为唤配置、比较器、定时器1的输入;端口C可作为定时器2的输入;端口D、E仅做输入用。
SX52BD有3种不同的寻址方式:间接寻址、直接寻址、半直接寻址。对寄存器寻址模式的选取依赖于指令中5位“fr”的值。
*间接模式:fr=00h
*直接模式:(fr bit 4=0)fr=01h~0Fh
*半直接模式:(fr bit 4=1)fr=10h~1Fh
由于SX52BD运行速度可达50MHz,由指令运行产生时序完全可达到ECP协议的时序时间要求,并且它的I/O口驱动能力满足PC机要求。因此,不用使用任何额外的硬件电路产生时序,这就是虚拟外设的概念。
由于采用了虚拟外设,因此硬件电路结构极其简单:将SX52BD单片机的25个双向I/O口接入PC机即可。
ECP通信的实现由软件完成。主机设置好BIOS后,可通过操作寄存器直接产生硬件所需时序。寄存器定义如表1。
表1 寄存器定义(基址0x378)
名 称地址偏移读 写大 小功 能ecpAFifo0x000W-R/W大小地址寄存器dsr0x001R字节状态寄存器dcr0x002R/W字节控制寄存器ecpDFifo0x400R/W双字节数据寄存器ecr0x402R/W字节扩展控制寄存器其中状态寄存器dsr位定义如图1,控制寄存器dcr的位定义如图2。扩展控制寄存器ecr中定义了ECP对FIFO、DMA的使用,在速度要求较高时才对其操作。
下面列出了实现简单的ECP协议。图3为SX52BD端的程序流程图,图4为PC机端的程序流程图。
结语
总体来说,由于ECP协议功能完善而且实现简单,对时间要求也不是很严格,在许多传输速率要求不是特别高的场合中应用价值很高。另外,SX系列单片机的虚拟外设具有很广泛的应用。
ECP协议及在SX52BD与PC机间通信的实现
摘要:介绍一种快速的并行协议――ECP协议在高速单片机与PC机间通信的应用。高速单片机采用SX52BD,并用虚拟外设实现。关键词:ECP协议 互锁握手 虚拟外设
引言
扩展能力端口模式ECP(Extented Capability Port)是一种IEEE 1284标准的工作模式之一。它能实现双向数据传输,具有DMA传输、数据RLE压缩、双向寻址等功能。它要求主机外设双方的硬件都必须实现状态机的功能,即自动产生各种控制信号。ECP模式是唯一定义了寄存器实现的IEEE 1284传输协议。在计算机端操作ECP并行协议,仅需对相应的寄存器进行读写就会触发硬件完成各种时序。ECP模式的数据传输率可以达到2~4MB/s。
SX52BD是SX系列产品,是采用CMOS工艺制造的、可配置的通信控制器。它是一种高速单片机,指令大都是单周期的.,其工作频率可达到50MHz。由于其特有速度,设备可实现虚拟外设(软件代替硬件的功能)。本文讲述的通信就是基于此完成的。
1 ECP协议
ECP传输通过标准并行端口实现。其DB25接口的引脚定义如下:
1―HostClk; 2~9―双向D1~D8;
10―PeriphClk; 11―PeriphAck;
12―nAckReverse; 13―Xflag;
14―HostAck; 15―nPeriphRequest;
16―nReverseRequest; 17―IEEE1284Active;
18~25―各信号地。
ECP模式分以下8个操作阶段。
①模式商议阶段。主机把ECP的能力请求值放到数据总线上,然后置IEEE 1284 Active为高,HostAck为低。外设应该置PeriphClk为低,nPeriphRequest为高,Xflag为高,nAckReverse为高。主机置HostClk为低,然后置HostClk和HostAck为高,表示已经确认了一个兼容于ECP模式的外设。接着,外设置nAckReverse为低,PeriphAck为低,Xflag为高,PeriphClk为高。接口进入设置阶段。
②ECP设置阶段。主机置HostAck为低,外设置nAckReverse为高,响应主机。接口进入正向空闲阶段,可以开始传输数据。
③正向空闲阶段。外设置PeriphAck为低,主机检测到此信号可开始传输数据。
④ECP正向传输阶段。主机将数据放到数据总线上,置HostClk为低。外设置PeriphAck为高,应答。主机置HostClk为高,外设接收数据并置P
[1] [2] [3]
★ 作文与兽间的友谊