***********************
HPI主机接口构成
TMS320C5402芯片的HPI接口分为HPI8(8位主机接口)和HPI16(16位主机接口)两种,其应用方式大同小异,限于篇幅本文主要介绍HPI8。HPI8实际上是一个8位的并行端口,主机通过它可以直接访问DSP片内的一段RAM。在早期的DSP中,这段公用的RAM是一段2K字的双口RAM(对于TMSVC5402则可以访问所有的片内RAM)。当主机和DSP同时访问同一地址时,主机优先。由于TI的DSP芯片都是16位的,而HPI8只有8根数据线,所以数据的传输必须以字节为单位。在DSP与主机传送数据时,HPI能自动地将外部接口传来连续的8位数组合成16位数后传送给主机。
HPI主机由以下五个部分组成:
·HPI存储器(DARAM)。HPI RAM主要用于DSP与主机之间传送数据,也可以用作通用的双导址数据RAM或程序RAM。
·HPI地址寄存器(HPIA)。它只能由主机对直接访问。该寄存器中存放着当前寻址的HPI存储单元的地址。
·HPI数据锁存器(HPID)。它也只能由主机对其直接访问。如果当前进行读 *** 作,则HPID中存放的是要从HPI存储器中读出的数据;如果当前进行写 *** 作,则HPID中存放的是将要写到HPI存储器的数据。
·HPI控制寄存器(HPIC)。DSP和主机都能对它直接访问。
·HPI控制逻辑。用于处理HPI与主机之间的接口信号。
HPI控制寄存器(HPIC)对HPI的工作模式进行控制,HPIC必须在进行HPI访问前由主机初始化。当主机要随机访问HPI RAM时,必须先发送一个地址到HPIA(HPI地址寄存器),然后访问该地址所指向的RAM单元。当主机需要连续访问一段HPI RAM中,则需要发送该段首地址到HPIA,然后以地址自增的方式访问。这时候主机每访问完一个存储单元后HPIA自动指向下一个单元。主机可以通过置位HPIC中的DSPINT位来中断DSP芯片,DSP芯片也可以通过置位HPIC中的HINT位来中断主机,此时HPI的引脚HINT被置位低电平,从而向主机发出中断请求。主机可以通过置位HINT来屏蔽此中断。HPI的数据、控制引脚都是专用的,它保证了HPI和DSP *** 作的并行性。HPI的引脚在无主机访问时呈高阻态,因此可以直接挂在主机数据总线上,使得硬件电路特别简单。
HPI引脚由以下几部分组成:
(1)HD0~HD7:双向并行三态数据总线。当不传送数据(HDSx或HCS=1)或EMU1/OFF=0时,HD0~HD7均处于高阻态。
(2)HCS:HPI片选信号。作为HPI的使能输入端,在每次寻址期间必须为低电平,而在两次寻址之间也可以停留在低电平。
(3)HAS:地址选通信号,此信号用于主机的数据线和地址线复用的情况。当不用时此信号应接高。
(4)HBIL:字节识别信号,用于识别主机传送过来的是第一个字节还是第二个字节。当HBIL=0时为第一个字节,HBIL=1时为第二个字节。
(5)HCNTL0、HCNTL1:主机控制信号,用来选择主机所要寻址的寄存器。当HCNTL1/HENTL0为00时,表明主机访问HPIC;当为01时,表明主机访问用HPIA指向的HPID,每读一次,HPIA事后增加1,每写一次,HPIA事先增加1;当为10时,表明主机访问HPIA;当为11时,表明主机访问HPID,而HPIA不受影响。
(6)HDS1、HDS2:数据选通信号,在主机寻址HPI周期内控制数据的传送。
(7)HINT:HPI中断输出信号,受HPIC中的HINT位控制。
(8)HRDY:HPI准备好端。高电平表示HPI已准备好执行一次数据传送;低电平表示HPI正忙于完成当前事务,用于连续高速主机。
(9)HR/W:HPI读写信号。高电平表示主机要读HPI,低电平表示写HPI。
(10)HPIENA:HPI允许信号,若系统选中HPI则将它连到高电平,否则悬空或接低电平。
主机访问HPI的一个字包括两个步骤:首先访问第一个字节,此时HBIL为0;然后访问第二个字节,此时HBIL为1;这两步组成一个访问单元。这个访问单元不可被拆开或颠倒,不管当前访问的是HPIA、HPIC还是HPID。
HPI有两种工作方式:
·共用寻址方式(SAM),这是常用的 *** 作方式。在SAM方式下,主机和DSP都能寻址HPI寄存器,异步工作的主机的寻址可以在HPI内部得到同步。如果DSP与主机的周期发生冲突,主机有优先权。
·仅主机寻址方式(HOM)。在HOM方式下,只能让主机寻址HPI存储器,DSP则处于复位状态或所有内部和外部时钟都停止的IDLE2空转状态(最小功耗状态);
HPI支持DSP与主机之间数据的高速传输。在SAM工作方式,若HPI每5个时钟周期传送一个字节,主机的运行频率可达(fdsp×n)/5。其中fdsp是DSP的时钟频率,n是主机进行一次外部寻址所需的周期数,通常n为3(或4)。假定DSP的运行频率为100MHz,主机的时钟频率可达60(或80)MHz,且不需插入等待周期。而在HOM方式下,主机可以更快的速度工作,且与DSP的时钟频率无关。
在SCI串行通信调试中,发现由于DSP的运行频率在100 MHz左右,造成内部数据时钟CLKG过快,不能与C51串口采样频率保持一致,需要软件加以处理,这样会额外消耗DSP资源。因此可以考虑将发送时钟CLKX和接收时钟CLKR接外部时钟源(慢于DSP时钟),以保证与C51串口采样频率的一致。另外在并行通信的调试中,可以知道通过HPI-8口并行通信完全没有硬件和软件开销,由DSP自身的硬件来协调冲突,因此HPI-8口使用于与单片机构件较好的主从双CPU处理器平台基于嵌入式系统发展的需要,提出TMS320VC5402 DSP与AT89C51单片机通信的三种设计方案。利用TMS320VC5402的多通道缓冲串口MCBSP分别实现TMS320VC5402与AT89C51的SCI和SPI串行通信,以及通过TMS320VC5402的8位增强主机接口HPI一8实现TMS320VC5402与AT89C5l并行通信。就硬件接口电路和软件编程进行详细的阐述。
关键词:单片机 DSP MCBSP HPI
将DSP和单片机构成双CPU处理器平台,可以充分利用DSP对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而DSP与单片机之间快速正确的通信是构建双CPU处理器的关键问题。下面就此问题分别设计串行SCI、SPI和并行HPI三种连接方式。
1 串行通信设计与实现
1 1 SCI串行通信设计
1.1.1 多通道缓冲串行口McBSP原理
TMS320VC5402(简称VC5402)提供了2个支持高速、全双工、带缓冲、多种数据格式等优点的多通道缓冲串行口McBSP。MCESP分为数据通路和控制通路。①数据通路负责完成数据的收发。CPU或DMAC能够向数据发送寄存器DXR写入数据,DXR中的数据通过发送移位寄存器XSR输出到DX引脚。DR引脚接收数据到接收移位寄存器RSR,再复制到接收缓冲寄存器RBR,最后复制到数据接收寄存器DRR。这两种数据多级缓冲方式使得数据搬移和片外数据通信能够同时进行。②控制通路负责内部时钟产生,帧同步信号产生,信号控制和多通道选择。另外.还具有向CPU发送中断信号和向DMAC发送同步事件的功能。MCBSP时钟和帧同步信号通过CLKR、CLKX、FXR、FSX引脚进行控制,接收器和发送器可以相互独立地选择外部时钟和帧同步信号,也可以选择由内部采样率发生器产生时钟和帧同步信号。帧同步脉冲有效表示传输的开始。
1.1.2 SCI串行接口设计
设置VC5402的McRSP输出时钟和帧同步信号由内部采样率发生器产生,内部数据时钟CLKG和帧同步信号FSG驱动发送时钟CLKX和帧同步FSX(CLKXM=l,FSXM=l,FSGM=1),输入时钟也由内部采样率发生器产生,内部数据时钟CLKG驱动接收时钟CLKR(CLKRM=1),同时由CPU时钟驱动采样率发生器(CLKSM=1)。考虑到AT89C51(简称C51)串口发送数据帧中第l位为起始位,因此可以利用该位驱动输入帧同步信号FSR,同时要置忽略帧同步信号标志为1。其中FSG帧同步脉冲宽度=(FWID+1)·CLKG;FSG帧同步脉冲周期=(FPER+1)·CLKG;采样率发生器分频系数(采样率=波特率)=FIN/(CLKGDV+1)。
SCI串口连接如图l所示。
1.1.3 波特率不一致的处理
VC5402初始化(以图1为例):
STM#SRGRl,SPSAl
STM#ooFEH,SPSDl;FSG帧同步脉冲宽度位为1个CLKG
;波特率为100 MHz/(0X(OFF)=392 156 b/s
STM#SRGR2,SPSAl
STM#3D00H,SPSDl内部采样率发生器时钟由CPU驱动
C51初始化:
MOV TMOD,#20H
MOVTLl,#FFH
MOVTHl,#FFH ;C51波特率=(2SMOD/32)*(fosc/12)[1/(256一初值)]一24 509 b/s
MOV SCON,#50H ;置串口方式l,每一帧10位数据.允许接收
MOV PCON,#80H ;设置SMOD=1
VC5402波特率/C51波特率=(392 156/24 509)=16.000 49
VC5402每发送16位数据,C51只采样1位数据。在VC5402存储器中开辟一个空间对每次发送的8位数据进行扩展,1位扩为16位,0为0000H,l为FFFFH,共扩为128位。在数据头部填加16位起始位0000H,数据尾部填加停止位FFFFH。在VC5402发送控制寄存器XCR中设置XWDLEN=000(1字含8位),即可将要发送的8位数据封装成1帧10字的数据。这也符合C51串口1方式下1帧10位的数据格式。C51以1/16的VC5402采样速率接收数据,0000H采样为0,FFFFH采样为1,由此可以将接收到的200位恢复为8位数据,停止位进入RB8。
C51每发送1位数据,VC5402要采样为16位数据。C51一次发送的10位数据的起始位触发VC5402的接收帧同步。由于VC5402以16倍C51的采样速率接收数据,1位采样为16位,0采样为0000H,1采样为FFFFH.只采样发送来的10位中的前9位,9位封装成144位,即接收的1帧数据完成。VC5402将收到的144位数据在开辟的存储器空间存放,抛弃前16位,在剩下的128位里分成8组,每组16位。比较其中间的8位,若有4位以上为1,则该16位为1,反之则为0。由此将接收到的144位恢复为8位数据。
为了不让CPU频繁地被数据接收和发送打断,将DMA和MCBSP联合使用来控制数据的接收和发送。RRDY直接驱动MCBSP向DMAC接收数据事件(REVENT事件),XRDY直接驱动MCBSP向DMAC发送数据事件(XEVENT事件)。
SCI通信协议如图2所示
1. 2 SPI串行通信设计
将C51置为主机,VC5402为从机。McBSP的时钟停止模式(CLKSTP=1X)兼容SPI模式,接收部分和发送部分内部同步。McBSP可以作为SPI的从机或主机。发送时钟BCLKX作为SPI协议的移位时钟SCK使用,发送帧同步信号BFSX作为从机使能信号nSS使用,接收时钟BCLKR和接收帧同步信号BFSR不使用。它们在内部分别与BCLKX和BFSX直接连接。BDX作为MISO,而BDR作为MOSI,发送和接收具有相同字长。
C51中的并口P1.1和P1.2作为扩展串行SPI输人输出口与VC5402连接,P1.0作为串行时钟输出口,P1.3作为帧同步信号输出口_。
SPI串口连接如图3所示。
VC5402初始化程序(以图3为例):
STM#SPCRll,SPSAl;设置时钟停止位进入MCBSP的SPI模式
STM#0X1000,SPSDl;时钟开始于上升沿(无延迟)
STM#SPCRl2,SPSAl
STM#0X0040,SPSDl;XINT由XRDY(即字尾)驱动
STM#PCRl,SPSAl
STM#0X000C,SPSDl;对发送和接收时钟,同步帧进行设置
STM#RCRll.SPSAl
STM#0X0000,SPSDl;接收数据l帧1字.1字8位
STM#XCRll,SPSAl
STM#0X0000,SPSDl;;发送数据1帧1字.1字8位;
P1.0发送到VC5402的移位时钟是保证DSP正确采样接收和发送数据的时钟。它要保证和C51的采样接收和发送数据的时钟一致.才能使主从机同步。
2 并行通信设计与实现
2.1 VC5402的HPI接口原理
HPI一8是一个8位(HD0~HD7)的连接DSP与主机设备或主处理器的并行接口。DSP与主机通过DSP的片内RAM交换数据,整个片内RAM都可以作为HPI一8的存储器。HPIA地址寄存器只能由主机直接访问,存放当前寻址的存储器的地址;HPID数据锁存器只能由主机直接访问,存放当前要写入或读出的数据;HPIC控制寄存器可以被主机和VC5402共同访问。HPI本身的硬件中断逻辑可以完成主从设备之间的握手,主机通过置HPIC中的特定位产生DSP中断,同样DSP通过nHINT引脚对主机产生中断。HRDY引脚用于自动调节主机访问HPI的速度,使慢速外部主机与DSP能很好地匹配。HRDY由HCS使能,即当HCS为高时HRDY一直为高,而当EMUl/nOFF为低时,HDRY输出高阻。
HPI连接如图4所示。
2.2 并行接口设计
将C51置为主机,VC5402置为从机。C51的PO口和HPI的8位数据线HD0~HD7相连作为数据传输通道,P1.0~P1.3设置为输出控制HPI口的 *** 作。其中P1.0作为读写控制选通信号连接HR/W;P1.1连接字节识别信号HBIL,控制读写数据是属于16位字的第1还是第2字节;P1.2和P1.3分别连接HCNTL0和HCNTLl,以实现对HPIC、HPIA和HPID寄存器的访问;nRD和nWR连接nHDSl和nHDS2作为数据选通信号来锁存有效的HCNTLO/1、HBIL和HR/W信号。nINTl作为输入,与HPI口的主机中断信号nHINT相连。nHCS一直接地,而nHAS口和ALE口相连接,在HCNTL0/I、HBIL和HR/W信号有效之后,设置nHDSl为低电平,则实现了读写的数据选通,从而完成C51对VC5402 HPI口的读写 *** 作。在数据交换过程中,C51向HPI发送数据时,通过置VC5402的HPI控制寄存器HPIC中的DSPINT位为l来中断VC5402。C51接收来自HPI的数据时通过查询方式,当VC5402 DSP准备发送数据时,置nHINT信号为低;C51查询到nlNTl为低时,调用接收数据子程序来实现数据的接收。
C51与VC5402的并行连接如图5所示。
主机接收和发送初始化程序(以图5连接为例):
RTITEADDRESS:;写入VC5402存储器地址信息
CLR P1.2
注:①HBlL脚在传输过程中指示当前字节为第l还是第2字节。
②为方便DSP自举引导加载程序.常采用将nHlNT脚直接与INT2
脚相连。
图5 AT89C51与V05402的并行连接
SETB P1.3;主机可读写HPlA地址寄存器
CLR P1.0;主机要求写选通HPI一8
MOV P0,A;写入8位地址
CALL DELAY ;等待地址写入完成
READDATA:;读出VC5402存储器数据信息
SETB P1.2
CLR P1.3;主机可读写HPID数据寄存器
SET P1.0;主机要求读选通HPI一8
MOVA,P0;读出8位数据
CALL DELAY ;等待数据读出完成
WRITEDATA:;写入VC5402存储器数据信息
SETB Pl.2
CLR P1.3;主机可读写HPID数据寄存器
CLR P1.0;主机要求写选通HPI一8
MOV P0,A写入8位数据
CALL DELAY ;等待数据写入完成
不管是串行连接还是并行连接,都要考虑到VC5402是采用3.3 V供电,C51采用5 V供电。两者之间存在信号电平的差异而不能直接相连,应互连接口隔离器件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)