基于单片机的TMS320VC5402的HPI通信设计

发布者:温暖的拥抱最新更新时间:2013-02-07 来源: 21IC 关键字:单片机  MS320VC5402  HPI通信 手机看文章 扫描二维码
随时随地手机看文章

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

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

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

1 TMS320VC5402 简介

  TMS320VC5402是TI公司C54x系列定点DSP芯片中的新产品它集中了此系列早期产品的优点,并提供了许多新的功能,开发和使用更加方便。C5402具有灵活的指令系统和操作性能,它可选择助记符指令或算术指令作为编程指令,同时支持汇编语言和C语言的单独或混合编程。C5402采用改进的Harvanl处理结构,指令流水线操作。计算和处理速度很高,系统单指令周期可达到10ns。在片内提供16k的RAM用作程序和数据存储,其最大可扩展寻址空间为1M字节。C5402提供的McBSP串口和DAM数据传送方式极大地方便它在通信领域的应用和开发。C5402由于其高性能价格而成为当前语言和静态图象处理和主流产品。

2 TMS320VC5402 HPI口结构

    HPI(主机接口)是主机与TMS320VC5402进行数据交换的8 bit并行数据口。该接口在TMS320VC5402芯片上,内部有数据寄存器(HPID),控制寄存器(HPIC)及地址寄存器(HPIA)。HPI口可用8 bit数据线传输16 bit的数据,并可通过设置控制寄存器的相关位来控制高8位和低8位传输。HPI有两种工作方式:一种是主机独占模式 (HOM); 另一种是主机和TMS320VC5402共享模式(SAM)。其中SAM是通用方式,二者都可寻址HPI存储器(DARAM)。当二者产生冲突时,主机具有较高的优先权,而在TMS320VC5402插人一个等周期。通过HPI传输的数据率是每5个CLKOUT时钟周期传输1字节。

  HPI通信主要是通过对HPIA、HPIC和HPID3个寄存器赋值来实现的。简单地说,HOST通过外部引脚HCNTL0和HCNTLl选中不同的寄存器后,就将当前8位数据发送到该寄存器中了。由于HPIC是16位寄存器,而HPI口总是传送8位数据宽度,所以用HOST向HPIC写数据时,需要发送两个一样的8位数据。对TMS320VC5402来说,仅低8位有意义。当地址寄存器HPIA选择后,直接向它写数据就可以了,但是要注意MSB和LSB的顺序。另外,HPIA具有自动增长的特性,即在每写入一个数据前和每读一个数据后HPIA都会自动加1。这样,如果使用了该功能,只需设定一次HPIA即可实现连续数据块的写入和读出,只是在实现时,数据应首先从主机发到HPID中,然后再根据HPIA指定的地址把HPID中的数据再写到片内RAM的地址中。

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

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

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

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

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

    

    HPI提供两种锁存方式,一种是由(主机地址锁存信号)的下降沿锁存各控制信号;另一种是由后三者共同完成,任何一个的下降沿锁存各控制信号。我们采用第二种方式,控制信号的锁存由的低跳变来完成。该锁存信号还指示了一次HPI口操作过程的开始。 

    HRDY为HPI准备好指示。 

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

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

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

3.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锁存,控制

    P3.2接HPI的

    P3.3接HPI的XF; 

    P3.4接HPI的HRDY; 

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

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

 

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

3.2 单片机程序设计要点

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

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

4 总线仲裁器的设计

    总线仲裁器的功能主要是根据单片机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外中断脚,用于中断DSP,并且将状态机的当前状态通过脚告知DSP,指明正在请求使用总线的单片机。 

    此外,如前所述,FPGA内部还设置一锁存器,由P1.0的高跳变将P1口送出的HPI口控制信号锁存。至于控制的两个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电平的相互转换。

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

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

参考文献:

[1]. AT89C2051 datasheet http://www.dzsc.com/datasheet/AT89C2051_.html.
[2]. RS232 datasheet http://www.dzsc.com/datasheet/RS232_585128.html.
[3]. TL16C550 datasheet http://www.dzsc.com/datasheet/TL16C550_.
[4]. TTL datasheet http://www.dzsc.com/datasheet/TTL_1174409.html.
[5]. MAX232 datasheet http://www.dzsc.com/datasheet/MAX232_1074207.html.

关键字:单片机  MS320VC5402  HPI通信 引用地址:基于单片机的TMS320VC5402的HPI通信设计

上一篇:单片机控制的智能路灯模拟系统
下一篇:跟我学51单片机(三):单片机串口通信实例

推荐阅读最新更新时间:2024-03-16 13:18

把32位微控制器性能带入工业和汽车应用
    现今的嵌入式工业及汽车系统中,有许多是基于8位或16位微控制器架构来设计的。随着新的低功耗32位架构的面市,这些应用有可能获得更高的性能、准确度和功效。此外,处理能力的提高也有助于实现新产品的差异性功能,包括先进的控制算法,GUI显示器、语音控制,以及电容式触摸感测等下一代接口。     例如,在许多工业应用中,马达效率是影响功耗的主要因素之一。利用先进的控制算法可以提高马达效率,但这些算法又需要更高性能的微控制器来实现。另一方面,通信速度也同样会影响效率,因为通信速度越高,系统就能够从传感器收集到更多的信息,同时更快速地识别事件并采取相应的行动。     过去32位架构转换一直受拖延的原因很多,比如微控制器的成本
[嵌入式]
单片机控制的PWM斩波式交流净化稳压电源
    摘要: 介绍了传统的正弦能量分配交流净化稳压电源的基本原理及如何用高频斩波和单片机技术对其进行改造。     关键词: 高频 斩波 交流稳压器 AVR 目前,在各种交流稳压电源中,采用正弦能量分配技术的交流净化稳压电源是一种技术先进的稳压电源。这种电源主要是通过改变晶闸管的触发角θ,来控制调感支路的等效电感,从而起到稳定输出电压的作用。它具有性价比高、可靠性好等特点。     但是这种方式产生的谐波较多,电感损耗较大,噪音明显,尤其对电网产生很大干扰。为此,笔者用高频PWM斩波技术对其进行改造,用M
[工业控制]
星载单片机系统抗干扰技术
1 引言 目前,单片机系统在星载仪器中担负着非常重要的任务,星载仪器往往处于复杂的空间环境之中,存在着大量的干扰源,如高能带电粒子主要通过单粒子效应对单片机系统构成影响,使其发生单粒子翻转事件,将导致程序走向混乱,使系统无法正常工作。因此,在系统设计上充分考虑抗干扰设计,提高系统的可靠性尤为重要。对于单片机系统而言,干扰有两种,一是来源于系统外部环境和其它电气设备产生的干扰,通过传导和辐射等途径影响单片机系统正常工作;二是来源于系统内部,由系统结构、制造工艺等决定以及内部元器件在工作时产生干扰,通过地址、电源线、信号线、分布电容等传输,影响系统工作状态。单片机系统抗干扰措施主要从硬件、软件两个方面展开避错、容错设计,以提高系统
[单片机]
如何设置PIC单片机的端口
在学习这个部门的时候,曾经碰到过一些题目.PIC单片机的引脚未几,大多都是复用引脚,例如AD、IO、比较器、外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要讲的是通用IO口的设置题目。 PIC16F616有12个IO口,但是有一个引脚(RA3)只能作为输入引脚用,不能用作输出,另外,A口具有电平变化间断的功能,而C口没有,在设计的时候要留意。 在设置的时候,一般要进行以下几项设置: (1)设置端口是模拟端口仍是数字端口,可以通过寄存器ANSEL来设置。例如你想用AD,就要将相应的引脚设置为模拟输入端口。 (2)假如你选择的是数字端口,接下来就要设置端口的方向,是输入仍是输出(RA
[单片机]
如何设置PIC<font color='red'>单片机</font>的端口
用汇编语言做一个看门狗测试
用STC的MCU的IO方式控制74HC595驱动8位数码管。 ; 用户可以修改宏来选择时钟频率. ; 显示效果为: 显示秒计数, 5秒后不喂狗, 等复位. Fosc_KHZ EQU 22118 ;22118KHZ STACK_POIRTER EQU 0D0H ; 堆栈开始地址 DIS_DOT EQU 020H DIS_BLACK EQU 010H DIS_ EQU 011H AUXR DATA 08EH P4 DATA 0C0H P5 DATA 0C8H P0M1 DATA 0x93 ; P0M0 DATA 0x94 ; P1M1 DATA 0x91 ; P1M0 DATA 0x92 ; P2M1 DATA 0x95 ; P2M0
[单片机]
IAR + Proteus7.6仿真MSP430单片机的设置
Proteus7.6增加了MSP430系列单片机,iar embedded workbench 和Proteus7.6联调可完成对MSP430的软件仿真,步骤如下。 1.设置IAR软件,生产XX.HEX文件 (1) 在IAR建立MSP430工程及X.C文件,并编写X.C代码,界面如下图, (2) 设置IAR软件以生成X.HEX文件 点击软件页面中的Project,在下拉菜单中选择Opintion....,打开如下界面, (3) 在左边选择Linker选项,在右边选择Output,按下图中设置选项。 (4)编译X.C文件生成XX.hex文件,XX.hex在工程中的Debug文件下的Exe文件夹下
[单片机]
IAR + Proteus7.6仿真MSP430<font color='red'>单片机</font>的设置
51单片机串口通信实验电路详解
  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。   很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。   单片机的串口通信看起来是很复杂的,主要是因为他用到了更多的寄存器,与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了。而前面学习过的定时器
[单片机]
51<font color='red'>单片机</font>串口<font color='red'>通信</font>实验电路详解
HC89S103K6T6单片机的简单介绍
HC89S103K6T6是芯圣兼容STM8S系列Flash单片机,内置增强型8051内核,拥有32K的Flash内存以及1K+256Bytes的RAM;HC89S103K6T6拥有丰富的外设资源,包括5个16位的定时/计数器、3组12位带死区控制以及1路8位的PWM、16+2路12位的ADC、1个SPI、2个UART、1个IIC以及26个外部中断源;HC89S103K6T6还支持2.0~5.5V的工作电压与-40℃~+85℃的工作温度。 以下为该系列目前在售的型号及对应参数: HC89S103K6T6作为芯圣兼容STM8S系列Flash产品,资源非常丰富,客户无需更改PCB,直接替换STM8S103K3产品。可以广泛应用于
[单片机]
HC89S103K6T6<font color='red'>单片机</font>的简单介绍
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved