双异步串口经AT89C2051与TMS320VC5402HPI口通信的解决方案

2006-05-07 15:50:09来源: 电子技术应用

串口与DSP处理器(TMS320VC5402)HPI(Host Port Interface)口通信问题的解决方案,该方案采用单片机(AT89C2051)实现数据的串/并、并/串转换,并控制DSP的HPI实现共享总线。给出了硬件连接电路和用FPGA作为总线仲裁器的设计思路,介绍HPI口的操作过程,单片机与微机串口之间通信的硬件设计方法。

本文所介绍的是我所正在研制的卫星CDMA接收机未端DSP与微机串口通信的接口电路。由于CDMA接收机支持两个独立CDMA信道的接收,并将两路解调后的数据分别经串口送至不同的计算机做后续的处理,故接收机需要带两个RS232接口

微机的异步串口与DSP处理器通信的方法通常有三种,第一种方法是采用异步通信芯片扩展串口,如用TI公司的TL16C550完成数据的串/并、并/串变换。由地TL16C550提供了丰富的控制管脚和应答信号,对其只需设置一些寄存器就可以进行灵活的控制,故编程比较简单,但对其数据的读取或写入则需要用到DSP的数据总线。第二种方法是将DSP的I/O口XF和BIO,或者将DSP的McBSP口用软件模拟成异步串口。用这种方法,虽然DSP与微机串口之间无需串/并变换器件,硬件构成十分简单,但DSP的编程比较复杂,用I/O口线模拟串口需要占用两个定时器资源,并且只有在DSP操作不繁忙的情况下这种方法才可行。第三种方法是用单片机实现数据的串/并、并/串转换。与第一种方法相比较,这种方法增加了对单片机的编程,但单片机可以作为控制器操作DSP的HPI口,对DSP存储器的数据上发可完全由单片机发起,DSP几乎无需作任何操作,也无需用到数据总线。在DSP处理过程复杂、运算量大的情况下,这种方法特别有用。

在本系统中,我们采用的DSP处理器是高性能、低功耗的TMS320VC5402,用以实现系统的MAC层控制和数据的编、解码工作,处理器的工作量很大。另外DSP数据总线需要与作为基带处理器的FPGA芯片(APEGEP20K600E)交换数据,为避免引入额外的控制逻辑实现与数据总线复用,采有单片机控制HPI口的方法实现DSP与双串口的通信。考虑到FPGA芯片的存在及节省成本,没有采用价格贵且需用高级仿真器开发的双串口单片机(如DS80C320),而是采用两片AT89C2051,并借用物理层FPGA的冗长资源作为总线仲裁器来实现同样的功能。

1 TMS320VC5402 HPI口结构

TMS320VC5402上的HPI口是增强型的8bit主机接口(Enhanced 8 bit host port interface),专门用于与主机进行通信,通过它主机可以访问TMS320VC5402片仙16K的RAM空间。这一接口由一个8bit的双向数据总线和不同的控制管脚组成,能够支持按高、低字节传送16bit数据。TMS320VC5402提供三个跟HPI操作相关的寄存器--地址寄存器HPIA、数据寄存器HPID和控制寄存器HPIC。TMS320VC5402只能访问控制寄存器,而主机则对这三个寄存器都可以访问。主机欲随机访问TMS320VC5402的片内RAM,需要先发送一个16bit地址到HPI地址寄存器(HPIA),然后通过数据寄存器(HPID)访问该地址所指向的存储单元。主机欲连续访问一段RAM空间,则要先送该段的自地址到HPIA,然后以地址自动加一的方式访问,即主机每访问一个存储单元后HPIA自动指向下一个单元。

HPI接口还提供了中断逻辑同主机进行软件握手。主机可通过对控制寄存器HPIC的第二位(DSPINT)置1中断DSP芯片;DSP芯片可通过对HPIC的第三位(HINT)置1中断主机,此时HPI的引脚HINT被置为低电平,从而向主机发出中断请求;主机还可设置HPIC的位HINT为1使HINT脚回到高电平,从而清除中断信号。

下面给出HPI口相关管脚说明:

HD0~HD7是8位双向数据线,与单片机P1口相连,用于交换数据。

HCNTL1/0的组合用于选择主机所访问的HPI寄存器,00表明主机访问HPIC;10表明访问HPIA;01和11均表明访问HPID,但01还表明同时启用HPIA自动增长的功能。

16bit数据传送时,HBIL为0表示传送的是第一字节,为1表明传送的第二字节,其中高8位在第几个字节由HPIC中的BOB位决定。

HR/W指明当前对HPI的操作是读还是写。

HAS、HDS1/2、HCS用于锁存上述控制信号。HPI提供两种锁存方式,一种是由HAS(主机地址锁存信号)的下降沿锁存各控制信号;另一种是由后三者共同完成,HCS为HPI的选通信号,接低电平,HDSI和HDS2中的任何一个的下降沿锁存各控制信号。我们采用第二种方式,即HAS不使用,始终接高,HCS和HDS2接低,控制信号的锁存由HDS1的低跳变来完成。该锁存信号还指示了一次HPI口操作过程的开始。

HRDY为HPI准备好指示。

HINT为DSP向主机发出中断的引脚。

HPIENA为HPI使能控制信号,高电平使能HPI操作。

2 单片机的I/O口分配、连线和程序设计

2.1 单片机I/O口分配

在本系统中,考虑到板子的面积,选择了体积小的AT89C2051单片机,并省去了P0和P2口,增加了一个精密的模拟比较器,P1.0和P1.1除了作为I/O口(需外部电阻上拉)外,还同时作为比较器的正负极输入,而P3.6则专门用作比较器输出。因此AT89C2051提供了15根双向I/O口线,除去P3.0和P3.1用作异步串口和P1.0~P1.7用作与HPI口数据总线通信外,还有5根I/O口线可用。由于还需要控制HPI口的各控制信号和与DSP的握手信号,剩下的5根I/O口线显然不够,所以还在FPGA里设计一锁存器,把P1口用作控制/数据复用口。具体的I/O口信号分配如下:

P1.0~P1.7接HPI口的数据线HD0~HD7。当作控制信号复用时,

P1.0接FPGA内锁存器的锁存信号;

P1.1经FPGA锁存,控制HCNTL0;

P1.2经FPGA锁存,控制HCNTL1;

P1.3经FPGA锁存,控制HBIL;

P1.4经FPGA锁存,控制HR/W;

P3.2接HPI的HINT;

P3.3接HPI的XF;

P3.4接HPI的HRDY;

P3.5为单片机请求发送信号,接FPGA的P3.5;

P3.7经FPGA控制HDS1,锁存HPI的各控制信号

图1给出了HPI接口与两片AT89C2051之间的连接图。

2.2 单片机程序设计要点

上面讲到,P3.5作为单片机的发送请求信号,当天数据发送时为高电平,当为低电平时则表示单片机想要发送数据,向总线仲裁器申请使用总线,总线仲裁器判断当前谁可以使用总线,然后通过外中断0中断DSP处理器,同时通过BIO口告知DSP当前可以使用总线的单片机,最终由DSP通过XF管脚集中控制单片机的总线使用权。单片机在获取总线使用权并送完数据后,向HPI的控制寄存器的DSPINT位写1,用中断通知DSP。在单片机需接收数据时,DSP首先设置XF脚,选择由哪个单片机接收,然后设置HINT脚为低,通过中断告知单片机进行接收。单片机从HPI口接收时也应置P3.5为低,以便保持总线仲裁器的单片机选择信号BIO与XF脚一致。

在对单片机编程时需要注意以下几点:(1)由于两个单片机共享总线,为保证相互之间不会干扰,没有使用总线的单片机P1口必须处于高阻态。根据P1口的内部结构,单片机不使用总线时,往P1口的内部结构,单片机不使用总线时,往P1口写入0xFF即可达到这一目的。(2)由于P1口作为控制/数据信号复用口,故编程时,对每次HPI口操作,先在P1口送出控制信号,接着设置P1.0产生低→高的跳变,把控制HPI口的P1.1~P1.4信号锁存到FPGA内部的锁存器,这时P1口才能作为数据端口,在P3.7产生一低跳变后,发起一次数据传递。(3)编程时,应防止单片机被同时要求对HPI口进行收、发操作。这可以依据实际情况,灵活地进行处理,限于篇幅,不再述。

3 总线仲裁器的设计

总线仲裁器的功能主要是根据单片机P3.5的总线请求信号,选择当前可以使用总线的单牒 同,仲裁器的设计需做到单片机能够公平竞争总线使用权。在两个单片机竞争总线的情况下,用一个简单的状态机即可达到目的。状态机state仅有两个状态S0和S1,P3.5为高电平时,不申请总线,状态机保持原状态;P3.5为低电平时,则根据当前请求总线的单片机,状态机转换相应的状态。如单片机同时申请使用总线,则保持当前的状态不变。下面给出状态转换表(S0表示选择单片机1,S1表示选择单片机2):

state, MCU1_P3.5, MCU2_P3.5 =>state;

S0, 0, x =>S0;

S0, 1, 0 => S1;

S0, 1, 1 => S0;

S1, x, 0 => S1;

S1, 0, 1 => S0;

S1, 1, 1 => S1;

当状态机有状态变换时,用FPGA产生一个脉宽约为1μs的低电平脉冲。这一信号接DSP外中断INT0脚,用于中断DSP,并且将状态机的当前状态通过BIO脚告知DSP,指明正在请求使用总线的单片机。

此外,如前所述,FPGA内部还设置一锁存器,由P1.0的高跳变将P1口送出的HPI口控制信号锁存。至于控制HDS1的两个P3.7信号,在FPGA内部只需将两信号相与即可。

4 单片机与微机串口的硬件连线

在IBM PC/XT微机系统中,其串口符合RS-232C接口标准。为提高抗干扰能力,RS-232C标准采用负逻辑,低电平在-5V~-15V之间(通常用-12V表示)为逻辑"1",高电平在+5V~+15V之间(通常用+12V表示)为逻辑"0"。上述电平称为EIA电平,它与TTL电平和CMOS电平不同。为了使AT89C2051能与微机进行串行通信,可以利用MAX232完成RS-232C电平与TTL电平的相互转换。图2给出了硬件连线图。

单片机程序在完成对串口的工作模式和波特率设置等初始化过程后,即可开始与串口通信。通信方式有查询方式和中断方式两种。由于查询方式需CPU不断查询标志位,程序效率不高,故在单片机操作比较繁忙时通常采用中断方式,具体的编程应用这里不再介绍。

介绍了通过FPGA芯片作为总线仲裁器,实现微机双串口各自通过AT89C2051与DSP HPI口通信的设计方法。该电路与采用专用芯片的电路相比,并不显得复杂,比较实用。由于与DSP存储器之间的数据交换完全由单片机发起,DSP就可以从数据的传送中解脱出来,去完成更复杂的控制和运算。实际证明,这一电路能很好地达到我们的设计要求,在异步数据传输速率为9600bps情况下,可以可靠地实现微机双串口与DSP之间的通信。

关键字:异步  串口  通信  解决

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200605/3068.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
异步
串口
通信
解决

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved