HPI的读写问题(5402)

[复制链接]
4067|9
 楼主| qxxqxq 发表于 2007-5-6 20:01 | 显示全部楼层 |阅读模式
DSP用的是TMS320VC5402<br />主机用的是51<br />能够读出HPIC的值,但读出的HPID和HPIA指向的地址的值对不上号!!<br /><br />请问对HPIA进行访问的时候HCNTL0为1,&nbsp;HCNTL1为0,还是HCNTL0为0,&nbsp;HCNTL1为1(我在不同资料上看到着两种情况),请高手指点<br /><br />大家帮帮忙啊~我做了一个多月了,通信都没有调通,再十天就要交论文了,女生还真不该选个理工科来读,毕不到业了555555555555555555555&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果也有做这方面的朋友,我们交流一下吧,我的邮箱是<a href="mailto:qxxqxq@163.com">qxxqxq@163.com</a><br />以下是程序:大家帮忙看看,指点一下<br />;读HPIC,写HPIA,读HPID<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;0h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LJMP&nbsp;MAIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;30h<br />MAIN:&nbsp;&nbsp;&nbsp;LCALL&nbsp;INIT&nbsp;&nbsp;&nbsp;;初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;HC_C&nbsp;&nbsp;&nbsp;;访问HPIC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;HA_C&nbsp;&nbsp;&nbsp;;访问HPIA<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;HD_C&nbsp;&nbsp;&nbsp;;访问HPID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LJMP&nbsp;MAIN<br /><br />INIT:&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R1,#0H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R2,#0H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HCS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P0,#0FFH<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br />;*********************读HPIC*************************;<br />HC_C:&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HCNTL1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HCNTL0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HBIL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;读高八位:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;R_DRV<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R1,P0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HBIL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;读低八位:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;R_DRV<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R2,P0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br />;************************写HPIA******************************/<br />HA_C:&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HCNTL1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HCNTL0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HBIL&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P0,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;W_DRV<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HBIL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P0,#055H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;W_DRV&nbsp;&nbsp;;准备读地址为0x1055的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS2<br />MANG:&nbsp;&nbsp;&nbsp;JNB&nbsp;HRDY,MANG&nbsp;&nbsp;&nbsp;;判断DSP内部传输是否完成<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br /><br />;******************读HPID*************************/<br />HD_C:&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HCNTL1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HCNTL0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HBIL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;读高八位:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;R_DRV<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R1,P0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HBIL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;读低八位:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;R_DRV<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R2,P0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HDS1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LJMP&nbsp;LOOP<br />;******************************读数据时,HDS1的下降沿锁存信号*************************<br />R_DRV:&nbsp;&nbsp;&nbsp;JNB&nbsp;HRDY,R_DRV<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;HRW<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HDS1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br />;****************************写数据时,HDS2的下降沿锁存信号**************************<br />W_DRV:&nbsp;&nbsp;&nbsp;JNB&nbsp;HRDY,W_DRV<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HRW<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;HDS2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RET<br />LOOP:&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LJMP&nbsp;LOOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END
kimjin 发表于 2007-5-7 09:06 | 显示全部楼层

遵守DS时序,做好HPIC初始化

做的时间比较久了,记不大清。<br />好象HPIA的值读出是有点问题,但HPID不应该错,只要HPID读出来是正确的就可以了。<br />遵守DS时序,做好HPIC初始化是关键。<br />对于片内SRAM的读写可以用HCNTL0=1,HCNTL1=1,较简单。
 楼主| qxxqxq 发表于 2007-5-7 10:01 | 显示全部楼层

遵守DS时序?

谢谢指教<br />我想问一下&nbsp;什么是DS时序?<br />现在我可以对HPIC,HPID进行读写了<br />但对HPIA的读写不对<br /><br />主机对HPI读写数据,首先要锁存,是否DSP有个地址空间来存放这些数据,如果有,地址又是多少?<br /><br />主机对HPIA写的数据是0055H,那访问的HPID的数据是DSP的哪个地址的数据?<br />(我用的DSP是5402)&nbsp;&nbsp;谢谢
kimjin 发表于 2007-5-7 22:25 | 显示全部楼层

ds--datasheet

如我前面所说,HPIA寄存器读出的值与对其写入的值可能不同,我也不清楚原因,没有研究过:-p。<br />主机对HPI读写数据,首先要锁存,<br />正确<br />是否DSP有个地址空间来存放这些数据,<br />是的<br />如果有,地址又是多少?<br />HPIA锁存地址,HPID锁存数据,<br />主机对HPIA写的数据是0055H,那访问的HPID的数据是DSP的哪个地址的数据?<br />访问的是片内0055H的数据,应该是在SCRACH寄存器部分的一个地址。
 楼主| qxxqxq 发表于 2007-5-8 15:00 | 显示全部楼层

读出的数据无法定位!

谢谢指教!<br /><br />还有一些问题:<br />HPIA,HPID是否有地址,(HPIC的地址是0x2c)有的话是多少呢?<br /><br />现在HPID能读出的数据<br />但此数据的值与我写入HPIA的地址所对应的值对不上号!!<br /><br />我在资料上看到了这么一句话:“C54x的HPI存储器是一个2K×16位的DARAM,他在数据存储空间的地址范围为1000H-17FFH。”<br /><br />0055H不在HPI存储器的地址范围内,<br />那么向HIPA访问时,写0055H,访问的是片内0055H还是1055H或是其他地址的数据?(同时我也试过向HPIA写0x1055)<br />现在的主要问题是读出的数据不能定位,不知道读的是哪个地址空间的值,请高手指点一下!<br /><br />谢谢
kimjin 发表于 2007-5-8 18:50 | 显示全部楼层

HPI可访问全部片上RAM

你对HPI的理解有误,导致你不能正确操作它。<br />HPIA、HPID的地址无关紧要,只要正确应用HCNTL0和HCNTL1电平就可以访问HPIA、HPID、HPIC。由于HPIC在寄存器中有地址,所以向HPIA写入0x2c然后读HPID,也可达到HCNTL0=0和HCNTL1=0时进行读操作的效果。<br /><br />0055就是片上0055,不是1055.C54的HPI只能访问片上空间,不能访问片外存储器。<br />当在对片外存储器操作时,若要向FLASH的0055写入数据,需要将0055+8000,<br />即8055。FLASH对命令的解释不对高位地址译码,只译码15位(对5402),所以DSP访问FLASH的地址就是0055.<br /><br />
 楼主| qxxqxq 发表于 2007-5-9 11:06 | 显示全部楼层

HPID读出的数据有问题

谢谢指教!<br /><br />现在还有如下问题:<br />进行下面的操作:<br />1.写HPIC,写HPIA,读HPID:<br />复位后,设置好HPIC,无论HPIA如何变化,HPID读出的数一直都是相同的一个数<br /><br />2.写HPIC,写HPID,读HPID:<br />例如:向HPID写0055H,读出的数据也是0055H;此时,把写HPID改成写HPIA,无论HPIA如何变化,HPID读出的数据永远都是刚才我写到HPID的0055H<br /><br />这是为什么呢?可能是哪里出错了?<br /><br />请高手指点<br />谢谢<br /><br /><br />
 楼主| qxxqxq 发表于 2007-5-10 09:21 | 显示全部楼层

help

好心人,帮忙看看<br />指点一下嘛~
 楼主| qxxqxq 发表于 2007-5-10 11:18 | 显示全部楼层

对HPIA访问时,HCNTL0/1为何值?

请问对HPIA进行访问的时候HCNTL0为1,&nbsp;HCNTL1为0,还是HCNTL0为0,&nbsp;HCNTL1为1<br /><br />我在实际应用中对HPIA是HCNTL0为1,&nbsp;HCNTL1为0,<br />因为如果HCNTL0为0,&nbsp;HCNTL1为1写入数据(0055H),再用HCNTL0为1,&nbsp;HCNTL1为1,读出数据就和我写进去的数据一模一样(0055H)<br /><br />所以我判断:HCNTL0为1,&nbsp;HCNTL1为0是对HPIA进行操作.<br /><br />但文档上与我的实际操作不符<br /><br />请高手指教<br />
菲59240 发表于 2010-3-21 17:00 | 显示全部楼层
楼主能把你的发给我么,我也做这个,谢谢你了,邮箱是xuxiao_59240@126.com,参考下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部