历史上的今天
今天是:2025年03月25日(星期二)
2021年03月25日 | TI54xxDSP与51单片机的接口技术
2021-03-25 来源:eefocus
1 硬件设计
1.1 时序匹配
HPI8总共有18根信号线。其中数据线8根(HD0~HD7),其余10根都是控制线,如表1所列

点击看原图
①HAS:在数据线和地址复用的MCU中,与ALE信号连接,在下降沿锁存HBIL、HCNTL0/1、HR/W,因数这些信号通常与地址线连接。如果MCU的数据线和地址线没有复用,则应该接高电平。
②HDS1、HDS2:数据传输的时序控制。时序见图1,即下降沿传输开始,上升沿传输结束。另外如果不使用HAS(即接高电平),也可以配合HCS对HBIL、HCNTL0/1、HR/W进行锁存。

③HCNTL0/:选择HPI内部寄存器,如表2所列。

1.2 电平匹配
54xxDSP的外部I/P引脚用的是3.3V的逻辑电平,而大部分51郑易里片机用的是5V的逻辑电平。前者输出高电平,最小值为2.4V;后者输入高电平,最小值为2.0V。所以前者的输出可以直接接到才者的输入。但是前者允许输入高电平最大值为3.6V,而后者的输出高电平一般都在4.6V以上。所以前者的输入和后者的输出不能直接连接,需要做电平转换。如果引脚数量少,可以直接用三极管电阻来转换。这里由于引脚较多,所以选用TI74LVC16245A芯片来进行电平转换。
74LVC16245A是TI公司的一种16位双向总线收发器。它可以接收高达5.5V的高电平,而输出的高电平可以达到3.3V左右,内部包括16路如图2所示的结构单元。

图2中G为使能端,低电平有效;DIR为方向控制端,高电平A→B,低电平B→A。另外要注意,74LVC 16245A的操作电压引脚VCC应该接3.3V。整个硬件连接如图3所示。

2 软件设计
HPI的数据传输分为两部分:外部传输和内部传输。外部传输是指主机和HPI寄存器之间的传输,由主机发出指令完成。内部传输是指HPI寄存器和DSP内部RAM之间的传输,由DSP内部的DMA控制器自动完成。主机在进行外部传输时,要先检查内部传输是否完成,这是通过检测HRDY信号实现的。外部传输操作的一般步骤是:
*检查HRDY信号的电平。为高,表示可以进行传输;为低,表示DSP正在进行内部传输,此时不能进行外部传输。
*主机发出指令,设置HCNTL0、HCNTL1、BHIL、HR/W信号的状态,以确定读或写的寄存器以及字节的选择。
*主机发出时序控制信号,按照图1所示的时序进行操作,从而完成一次外部传输。
编程时还要注意以下问题:
①由于DSP的数据是16位,而单片机的数据是8位,所以单片机要分两次将数据传给DSP,即将16位的数据分成两个字节来传输。这时,可以通过控制HPI口的HBIL信号来指定此次传输的是第1个还是第2个字节。另外,还要通过HPI的控制寄存器(HPIC)中的BOB位来指定第1个字节作为高8位还是低8位,所以主机在访问HPI1时,应首先对HPIC进行初始化,并注意对BOB位的设置。HPIC的各位设置如下:

&n
bsp; ②主机对地址寄存器(HPIA)的写操作会初始化一次内部传输。当主机通过两次对HPIA的写操作后,HPIA就得到了主机要访问的地址。这时内部的DMA控制器就会根据这个地址将相应单元的内容读到HPI内部的数据锁存器中,再对HPID进行两次读操作就可以将数据读出。如果将HPIA设置成自动递增模式,就会在数据传输的同时完成HPIA加1,于是又启动了一次内部传输。这样有利于数据的连续转移。
③注意设置HPIC中的XHPIA位。XHPIA=1时,表示对DSP的7位扩展地址进行操作;XHPIA=0时,表示对DSP的低16位地址进行操作。由于DSP复位后,XHIPA的状态是不确定的,所以必须首先对HXPIA进行设置。
④主机和DSP可以互相中断。主机通过向HPIC中的位DSPINT写入1来中断DSP。该痊总是被读出为0,而且DSP对该位的写操作是无用的。而DSP要中断主机时,向HPIC中的位HINT写入1,这时HPI的接口引脚HINT被置低,从而使主机产生中断。该位总是读出为1,主机可以对该位写1来清除中断,这时HINT引脚就恢复高电平。
下面给出一段程序实例:单片机将DSP内部RAM1000H单元的内容读出。硬件按照图1所示连接。

3 总结
当然DSP与单片机之间还有许多其它的连接方式,例如利用双口RAM,或者是通过串口,但是它们都占用DSP的处理时间,在要求苛刻的场合可能会影响到系统的实时性。而HPI接口是通过DSP片内的DMA控制器来访问片内存储器的,不需要DSP的干预。可以说,HPI接口是DSP的一个“后门”,单片机通过这个“后门”可以访问到DSP的片内存储器。只有当HPI接口和DSP同时对同一地址进行访问时,由于HPI具有访问优先权,这时DSP的执行会被延迟一个周期,而这种情况对系统实时性的影响是非常小的。
上一篇:单片机串行口介绍-经典
史海拾趣
|
仅用鼠标就搞定的第一个C++程序 学习C++,不同IDE的控制台程序,新建、点击后产生的第一个C++程序,有的仅用鼠标就能搞定,“正常显示”,而有的则需要补充些语句才能通过编译到“正常显示”状态。 这里没有别的意思,只是想说 ...… 查看全部问答> |
|
国家统计局的数据则表明,未来五年,电磁炉在国内将有7000万至8000万台的市场潜力,市场容量将达到数百亿元。但是,当电磁炉大批走进千家万户之时,其电磁污染的病症也日益显现。 那么什么是磁泄漏呢?中国室内装饰协会室内环境监测委员会副主任赵 ...… 查看全部问答> |
|
在蓝牙协议中,主从设备间只支持一条ACL链路和三条SCO链路,是不是就是说在某一时刻,主从服务间只有一个服务使用这个ACL链路??? 如题,现在很急的一个问题, 想请教高手, 蓝牙协议中的主从设备间只支持一条ACL链路和三条SCO链路,是不是就是等价于说在某一时刻,主从服务间只有一个服务使用这个ACL链路??? 举个例子就是,某一时刻文件传输服务和蓝 ...… 查看全部问答> |
|
最近做仿真软件开发,要求实时性很强,为了方便开发和用户使用,就不想换操作系统,看到可以在Windows下使用RTX来实现,只是我同用过,哪位大侠用过,说下~~ … 查看全部问答> |
|
题目是:同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms输出1k(hz)的方波。 我的代码是:#include #include #define uint unsigned int #define uchar unsigned char uint t1=0,t2=0; sbit b ...… 查看全部问答> |
|
这几天拼命在学这个了! 学了几遍,因为学完的比较早,做题过的也比较早,后来就只看资料了,没有想到当时忘记把图截完了! 当时以后系统可以在后台统计! 麻烦管理员朋友帮忙查看一下!辛苦了!!… 查看全部问答> |
|
本帖最后由 huayuliang 于 2014-11-8 18:38 编辑 算是正式开始了吧,不过俺只能想到(用到)哪里写到哪里,结果就如之前描述的——很乱。。。 其实所谓的技巧,只是基本命令的使用,不过是和实际应用相关的一些可能你没有想过的用法而已···· ...… 查看全部问答> |




