论坛风格切换切换到宽版
发帖 回复
返回列表  提醒:不能用迅雷等P2P下载,否则下载失败标(二级)的板块,需二级才能下载,没二级不要购买,下载不了
  • 1038阅读
  • 0回复

[技术文章]HPI在MCU和DSP接口中的应用 [复制链接]

上一主题 下一主题
离线bossdeng110
 

性别:
人妖
发帖
138
金币
606
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看楼主 倒序阅读 使用道具 0楼 发表于: 2015-12-21
— 本帖被 老吴 从 DSP技术 移动到本区(2017-05-12) —
wv`ar>qVL  
导读: 描述HPI接口的工作原理及C8051F060和TMS320VC5409(简称C5409)之间的接口电路设计,给出了HPI接口的软件设计。该系统具有设计灵活、数据传输速度快、适用于其他含有HPI接口的DSP应用系统,为开发人员提供了一种便捷稳定的数据共享、传输方式。 P 'o]#Az  
wA"d?x  
wwet90_g  
A<^X P-Nrp  
  OFweek电子工程网讯:描述HPI接口的工作原理及C8051F060和TMS320VC5409(简称C5409)之间的接口电路设计,给出了HPI接口的软件设计。该系统具有设计灵活、数据传输速度快、适用于其他含有HPI接口的DSP应用系统,为开发人员提供了一种便捷稳定的数据共享、传输方式。 IEd?-L  
  1.TMS320VC5409的HPI-8接口 d+vAm3.Dg  
  C5409的HPI-8是一个增强型8位HPI8接口,主要用来与主处理器接口。C5409内部有32K的RAM空间,除了DSP本身可以访问该RAM区域外,主机也可以通过HPI口实现对整个RAM的访问,从而实现主机与DSP的通信。HPI-8接口通过HPI控制寄存器HPIC、地址寄存器HPIA、数据寄存器HPID等3个HPI寄存器进行控制和实现数据传输。各寄存器功能如下:HPI-8地址寄存器(HPIA),该寄存器只能由主机对其直接访问,寄存器中存放当前寻址HPI-8存储单元地址。HPI-8逻辑控制单元(HPIC)。主机和C5409都能对它进行直接访问,它映射到C5409的数据空间002CH单元。HPIC只有4位用于控制HPI的操作,由于HPIC的高8位和低8位是相同的,因此这4位分别位于高字节和低字节的低4位。Bit0/8(BOB)———用于字节顺序控制,BOB=1表示第1个字节为低字节,否则第1个字节为高字节。Bitl/9(SMOD)———访问模式控制,SMOD=l表示共享访问模式(SAM),否则为主机访问模式(HOM)。Bit2/10(DSPINT)———主机通过将该位写l来向DSP发送1次HPI中断。Bit3/11(H1NT)———DSP通过向该位置l,使外部引脚HINT产生一个低电平作为给主机的中断,中断的清除必须由主机向该位写l来清除。HPI-8数据锁存器(HPID),只能由主机对其进行访问,主机通过读写该寄存器来实现对共享RAM的读写,RAM的地址则由HPIA地址寄存器的内容来决定。因此,主机对DSP的访问过程是,先往HPI地址寄存器HPIA写入欲访问的地址,然后再对数据寄存器HPID进行读或写访问。 6b%IPbb  
  HPI接口信号包括: /6F\]JwU  
  HCS———片选信号。作为HPI-8的使能输入端,在每次寻址期间为低电平,在两次寻址期间也可以停留在低电平。 4 aE{}jp1  
  HAS———地址选通信号,此信号用于主机的数据线和地址线复用的情况。当不用时此信号应接高。 kT]jJbb"  
  HBIL———字节识别信号,用于识别主机传送过来的是第一个字节还是第二个字节。当HBIL=0时为第一个字节,HBIL=1时为第二个字节。 mHAfKB  
  HCNTL1/HCNTL0———主机控制信号,HPI寄存器的访问地址信号,主机用来选择访问的HPI寄存器。当HCNTL1/HCNTL0为00时,表明主机访问HPIC;当为01时,表明主机访问用HPIA指向的HPID,每读一次,HPIA事后增加1,每写一次,HPIA事先增加1;当为10时,表明主机访问HPIA;当为11时,表明主机访问HPID,而HPIA不受影响。当主机访问HPI时,先完成外部接口部分的操作,即先初始化HPIC寄存器,然后初始化HPIA寄存器,再从HPID寄存器中读出或写入数据,一般在DSP的初始化程序中对HPIC进行了初始化后就无须再对HPIC操作了,其余的工作就完全由主机完成。HPI的传送控制是由HPI-8内部选通信号实现的,由3个信号完成:/HDS1、/HDS2、/HCS。由图1HPI-8内部选通逻辑电路图可知,只有当/HDS1、/HDS2信号不同时为零,且/HCS信号为低电平时,内部HPI才被选通。 &grvlK  
j;qV+Rq]t  
vL;>A]oM2  
@FZ_[CYg  
  具体设置过程如下: `e`DSl D>  
  a)首先初始化HPIC寄存器,特别是BOB位。具体方法为:先设置HCNTL1=HCNTL0=0,选择将要对HPIC进行操作。然后将HPIC的值写入HPI。注意HPIC的高8位和低8位是一样的。 XwfR/4  
  b)设置地址寄存器HPIA。先设置HCNTL1=1&HCNTL0=0,选择将要对HPIA进行操作。然后将要访问的C54x片内RAM的地址写入HPI,高8位先写,低8位后写。 fq4uiFi<  
  c)读写C54x的片内RAM。先设置HCNTL1/0,选择将要对数据锁存器HPID进行操作。如果设置HCNTL1=0&HCNTL0=1,表示使用地址自动增加模式;如果设置HCNTL0=HCNTL1=1时,表示不使用地址自动增加模式,这时完成读写操作后,地址寄存器HPIA将不会变。 ;>/yY]F7  
  以下是C8051F060的HPI接口程序: cv1PiIl  
  (1)读HPID寄存器程序 8_ascvs5  
  unsignedintHPID_Read() '? -N  
  { ;" D~F  
  unsignedcharH_Byte,L_Byte; cs _  
  HDS2=1; x3( ->?)D  
  HCS=0;使能HPI \3] O?'  
  HCNTL0=1; 2.=G  
  HCNTL1=0;主机可读写HPID E!.&y4  
  HBIL=0;当前是第一字节 =c$x xEDD  
  HRW=1;主机要求读选通HPI .LDp.#d9r1  
  HDS1=0;开始数据操作 W'=}2Y$]u  
  H_Byte=P1;读出高8位数据 *wsZ aQ  
  Delay(2);等待数据读出完成 K<r5jb  
  HDS1=1;结束数据操作 2#00<t\  
  HBIL=1;当前是第二字节 WMW=RgiW\  
  HRW=1;主机要求读选通HPI 4;>HBCM4-  
  HDS1=0;开始数据操作 #qUGc`  
  L_Byte=P1;读出低8位数据 ._t1eb`m{  
  Delay(2);等待数据读出完成 DF>tQ  
  HDS1=1;结束数据操作 ,t;US.s([.  
  } 717G CL@  
  (2)写HPID寄存器程序 dz>Jl},`k  
  voidHPID_Write(unsignedintW_data) xG(iSuz  
  { FV3[7w=D\  
  HDS2=1; &cd>.&1<2  
  HCS=0;使能HPI Fa\jVFIQ  
  HCNTL0=1; xt IF)M  
  HCNTL1=0;主机可读写HPID R/Z7}QW  
  HBIL=0;当前是第一字节 ADVS}d!;]  
  HRW=0;主机要求写选通HPI a1Q%Gn@R  
  HDS1=0;开始数据操作 Gg]Jp:GF  
  P1=(unsignedchar)((W_data>>8)&0xFF);写入高8位数据 [k(b<'  
  Delay(2);等待数据写入完成 `S5::U6E  
  HDS1=1;结束数据操作 Qca3{|r`  
  HBIL=1;当前是第二字节 Owgy<@C  
  HRW=0;主机要求写选通HPI Ww\ WuaY  
  HDS1=0;开始数据操作 @$j u Qm  
  P1=(unsignedchar)(W_data&0xFF);写入低8位数据 61_-G#W  
  Delay(2);等待数据写入完成 qX; F+~  
  HDS1=1;结束数据操作 RHpjJZUV  
  } 1X`,7B@pz  
  3结束语 lN8l71N^  
  本设计方案具有硬件结构简单、使用方便等优点,有很好的使用价值。经在某导航系统中实际使用的效果来看,证明该设计方案简单、性能稳定、高效可靠,达到了预期的设计目的。 jN'h/\  


评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

一般

差劲
快速回复
限150 字节
 
上一个 下一个