下面是小编收集整理的DSP与PC间的数据通讯,本文共7篇,供大家参考借鉴,希望可以帮助到有需要的朋友。本文原稿由网友“將軍”提供。
篇1:DSP与PC间的数据通讯
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评估板上调试通过。
篇2:TMS320C54XX系列DSP与PC机间串行通信的实现
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功能进行串行数据接收及发送收到了良好效果,进一步提升了应用系统的性能。
篇3:DSP与PC机的PCI总线高速数据传输
DSP与PC机的PCI总线高速数据传输
摘要:介绍了TI公司的高性能浮点式数字信号处理芯片TMS320C6713的接口信号及控制寄存器,并在此基础上,指出了该DSP通过PCI总线与PC机进行高速数据传输的实现方法,同时给出了TMS320C6713和PC机通过PCI9052总线接口芯片实现接口的硬件原理图。关键词:DSP;数据传输;TMS320C6713PCI9052
TMS320C6713是TI公司在TMS320C6711的基础上推出的C6000系列新一代浮点DSP芯片,它是目前为止C6000系列DSP芯片中性能最高的一种。TMS320C6713可在255MHz的时钟频率下实现1800MIPS/1350MFLOPS的定点和浮点运算,因而可极大地满足通信、雷达、数字电视等高科技领域对信号处理实时性的要求。同时其主机口(HPI)可灵活地和PCI总线控制器相连接。而PC机则可通过PCI总线控制器直接访问TMS320C6713的存储空间和外围设备,从而实现PC机与TMS320C6713之间的高速数据传输。
在TMS320C6713DSP与PC机实现高速数据传输的方案中,可选用PLX公司的PCI9052作为两者之间的接口;同时选用PLX公司的NM93CS46作为加载PCI9052配置信息的串行EEPROM;而用TI公司的SN74CBTD3384作为PCI9052与TMS320C6713HPI之间的电平转换芯片。
1TMS320C6713的HPI简介
1.1TMS320C6713HPI的接口信号
TMS320C6713的HPI是一个16位宽的并行端口。主机(上位机)掌管着该端口的主控权,可通过HPI直接访问TMS320C6713的存储空间和外围设备。表1给出了TMS320C6713HPI接口信号的基本特征。下面对它们的具体工作方式进行说明:
HD[15:0]:可以用作数据和地址的共用总线,通过HD[15:0]传送的数据包括控制寄存器的设置值、初始化的访问地址以及要传输的数据。
HCNTL[1:0]:用于控制当前访问的是HPI的哪一个寄存器,该信号同时还提供了一个对HPI数据寄存器(HPID)进行地址自增的访问方式。在该方式下,主机会连续地访问一个线性存储区域,而无需反复向HPIA写入需要的地址。表2给出了HCNTL[1:0]控制信号的功能。
HHWIL信号:用于表明并区分HD[15:0]上传输的是32位数据中的高16位还是低16位。由于TMS320C6713芯片结构决定了它与主机间所有的数据交换都是32位,而HPI端口为16位,所以每次数据访问都需要进行两次存取,而由HPI自动将HD[15:0]上连续的两个16位数据合成32位,当然,也可以用其进行反向分解。
HAS信号:用于复用地址数据总线的主机。它可使HCNTL、HHWIL和HR/W信号在一个存取周期中快速地实现状态转换。对于地址数据复用的总线来说,也可以为数据/地址的切换留出更多的时间。
HCS、HDS1和HDS2信号:这三种信号可在片内组合为一个低有效的HSTROBE信号,如图1所示。其作用是,在读取时,在HSTROBE信号的下降沿锁存输入的HPI控制信号,包括HHWIL、HR/W和HC-NTL[1:0];而在写入时,其下降沿和读取时作用相同,其上升沿则锁存写入的数据。
HRDY信号:用于表明HPI是否已准备好传输数据,其作用是在接口时序上插入等待状态。如果前一次HPI的访问尚未完成,那么当前访问的第一个半字的存取需要等待,此时,HPI会置HRDY信号为高。
表1HPI接口信号描述
信号管脚号管脚数信号功能HD[15:1]从低到高依次为147、152、155、154、156、159、161、164、165、166、167、168、172、173、17416数据/地址总线HCNTL[1:0]从低到高依次是146、1442HPI访问类型控制HHWIL1391确认半字(16位)输入HAS1351对复用地址数据总线的主机区分地址和数据HR/W1431读/写选择HCS1451输入数据选通HDS1/HDS2从低到高依次是152、1512输入数据选通HRDY1401访问HPI状态准备好HINT1391向主机发出的中断信号
表2HCNTL[1:0]控制信号的功能
HCNTL1HCNTL0功能00主机可以对HPI的控制寄存器HPIC进行读写01主机可以对HPI地址寄存器HPIA的进行读写10主机可以对HPID的数据寄存器进行读写操作,此时HPIA采用以字为单位的地址自增方式11主机可以对HPID的数据寄存器进行读写操作,但此时HPIA不受影响
1.2TMS320C6713HPI的控制寄存器
在TMS320C6713HPI中,可利用三个寄存器来完成主设备和CPU的通信,它们是HPI数据寄存器(HPID)、HPI地址寄存器(HPIA)和HPI控制寄存器(HPIC)。主机可对这三个寄存器进行读写,而CPU只能对HPIC进行访问。HPID中存放的是主机从存储空间中读取的数据,或者是主机向TMS320C6713的存储空间中写入的数据。HPIA中存放的是主机访问TMS320C6713存储空间的地址,其最低两位固定为零。HPIC中存放的是TMS320C6713的控制信息,其高16位和低16位内容相同。
主机对HPI进行访问的次序为:初始化HPIC、初始化HPIA、从HPID寄存器中读取或向其写入数据。在初始化HPIC时,HWOB位的设置是关键,它决定着高16位与低16位的传输次序。
2PCI9052与TMS320C6713HPI的接口
PCI9052是PLX公司继PCI9050之后推出的用于低成本适配器的总线目标接口芯片。它支持PCI2.1协议规范,在33MHz的总线时钟频率下,其峰值传输速度可达132MB/s,因而可大大改善数据传输中的瓶颈问题。同时它还具有方便灵活的开发特点,正是这些特点使其在PCI从模式接口卡的设计中得到了广泛的应用。
表3给出了PCI9052与TMS320C6713HPI接口信号的基本特征。下面是对它们具体工作方式的一些说明:
LAD[31:0]:利用该信号可通过设置LASIBRD局部地址空间总线区域描述寄存器的总线宽度位来调整总线宽度,当LASIBRD[23:22]=00时,采用LAD[7:0]8位宽度,当LASIBRD[23:22]=01时,采用LAD[15:0](16位),当LASIBRD[23:22]=10时,采用LAD[31:0](32位)。
LBE[3:0]字节使能信号是在总线宽度的基础上编码的。对于32位总线,LBE[3:0]表示哪一个字节被选中:LBE0对应[7:0],LBE1对应[15:8],LBE2对应[23:16],LBE3对应[31:24];而对于16位总线,LBE0对应[7:0],LBE1对应地址的第1位,LBE2不用,LBE3对应[15:8];对于8位总线,LBE0对应地址的第0位,LBE1对应地址的第1位,LBE2和LBE3不用。
CS1和CS2分别带有与之对应的'片选基地址寄存器(CSIBASE)。CSIBASE?0?为片选使能位,其中CSIBASE[27:1]为片选空间位。从片选空间位的第1位向第27位扫描时,遇到第1个“1”即决定了片选空间的大小,其余位则为片选空间的基地址。
LINT1和LINT2可通过中断控制/状态寄存器INCSR的中断使能位INCSR[6]进行使能,同时可设置其它相关信息。
表3PCI9052与TMS320C6713的接口信号描述
信号管脚号管脚数信号功能LAD[31:0]从低到高依次为91、90、89、88、87、86、85、84、83、82、79、78、77、76、75、74、73、72、71、70、69、62、61、60、59、58、57、56、55、54、53、5232数据总线LW/R1271为“1”时写,为“0”时读LA[27:1]从低到高依次是92、93、94、95、96、97、98、100、101、102、105、106、107、108、109、110、111、112、113、114、115、116、117、118、119、12227地址总线,传输28位线性地址的高26位LBE[3:0]从低到高依次是46、47、48、494字节使能信号,表示当前总线传输中哪一个字节被选中LRDY1281在局部总线读数据或可接受写数据ADS1231表明可用地址和一次新的总线存取的起始CS1、CS2130、1312片选信号RD1261通用写WR1251通用读LINT1,LINT2137、1362局部中断输入
3与PC的高速数据传输
TMS320C6713HPI与PCI9052的具体连线如图2所示。
实际上,在具体电路设计时,整个方案的实现除了需要TMS320C6713和PCI9052外,还需要有SN74CBTD3384和NM93CS46。由于TMS320C6713的I/O是在3.3V电压下工作,而PCI9052在5V电压下工作,所以TMS320C6713与PCI9052之间必须采用SN74CBTD3384进行电平转换。SN74CBTD3384是TI公司生产的10位总线转换器,它的输入、输出引脚一一对应,并分别排列在芯片的两侧封装。图2中共选用了三片SN74CBTD3384。NM93CS46是PLX公司生产的串行EEPROM存储器,用于加载PCI9052配置信息。其中按一定顺序存放着设备号(DID)、供应商代号(VID)、子设备号(SDID)、子供应商代号(SVID)、PCI总线与局部总线之间的地址空间映射关系、片选地址、控制位、状态位及其它杂项配置等。上电时,PCI总线的RST信号有效,同时PCI9052输出局部复位信号LRESET,并检查NM93CS46是否有效。若有效,且第一个16位字不是FFFFh,那么PCI9050将根据串行EEPROM的值来设置内部寄存器,否则采用默认值。
考虑到TMS320C6713HPI与PCI9052间的时序配合问题,通常在连线过程中,还必须注意下列几个问题:
(1)由于PC机中数据与地址总线是复用的,所以PCI9052的MODE引脚应接地,而PCI9052中局部数据与地址总线是非复用的,所以TMS320C6713的HAS引脚应接高电平。
(2)由于TMS320C6713的HR/W信号与PCI9052的W/R信号极性相反,因此必须通过非门进行连接。
(3)由于TMS320C6713与PCI9052分别工作在不同的时钟频率下,所以TMS320C6713的HRDY信号输出必须通过D触发器的同步后才能送入逻辑电路,以供PCI9052的LRDY信号使用。
(4)LRDY信号的逻辑表达式为:LRDY=RD.WR+(CS1+ADS+HRDY),因此,只有RD或WR有效,且CS、ADS、HRDY也有效时,LRDY才能有效。
另外,要保证TMS320C6713HPI与PCI9052的稳定协调工作,除了要设计合理的硬件电路外?还必须对PCI9052的内部寄存器进行准确配置。关于PCI9052内部寄存器的具体配置方法,可以参考PLX公司的用户手册,这里不再赘述。
笔者已将该方案应用于某电力系统精确故障定位及录波装置中。其中,由TMS320C6713DSP芯片构成的高速数据采集卡用来控制电力系统中各电参数的采集、存储与故障判断。当其HPI被设置为带地址自增的读方式时,可在一次故障记录结束后,由PC机将存储在TMS320C6713外扩SDRAM中的大量数据一次性读入。读入的数据可用来计算故障发生的精确位置,分析系统中各电参数的变化情况,同时记录各继电保护装置的动作情况。
4结束语
该方案不仅有效地解决了TMS320C6713DSP芯片与PC机间数据传输的瓶颈问题,而且简化了硬件设计。同时由于它支持即插即用技术。因此,由DSP构成的高速数据采集卡具有良好的可移植性。
篇4:用TL16C752B实现DSP和PC机的串行通信
用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机的通信。
篇5: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为高,外设接收数据并置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机要求。因此,不用使用任何额外的硬件电路产生时序,这就是虚拟外设的概念。
篇6:ECP协议及在SX52BD与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系列单片机的虚拟外设具有很广泛的应用。
篇7:ECP协议及在SX52BD与PC机间通信的实现
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]