打印

HPI的读写问题(5402)

[复制链接]
3095|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qxxqxq|  楼主 | 2007-5-6 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP用的是TMS320VC5402
主机用的是51
能够读出HPIC的值,但读出的HPID和HPIA指向的地址的值对不上号!!

请问对HPIA进行访问的时候HCNTL0为1, HCNTL1为0,还是HCNTL0为0, HCNTL1为1(我在不同资料上看到着两种情况),请高手指点

大家帮帮忙啊~我做了一个多月了,通信都没有调通,再十天就要交论文了,女生还真不该选个理工科来读,毕不到业了555555555555555555555          如果也有做这方面的朋友,我们交流一下吧,我的邮箱是qxxqxq@163.com
以下是程序:大家帮忙看看,指点一下
;读HPIC,写HPIA,读HPID

        ORG 0h
        LJMP MAIN
        ORG 30h
MAIN:   LCALL INIT   ;初始化
        LCALL HC_C   ;访问HPIC
        LCALL HA_C   ;访问HPIA
        LCALL HD_C   ;访问HPID
        LJMP MAIN

INIT:   NOP
        MOV R1,#0H
        MOV R2,#0H
        CLR HCS
        SETB HDS1
        SETB HDS2
        MOV P0,#0FFH
        RET
;*********************读HPIC*************************;
HC_C:   NOP
        CLR HCNTL1
        CLR HCNTL0     
        CLR HBIL       
     ;读高八位:
        LCALL R_DRV
        MOV R1,P0
        NOP
        NOP
        SETB HDS1
        SETB HBIL
      ;读低八位:
        LCALL R_DRV
        MOV R2,P0
        NOP
        NOP
        SETB HDS1
        RET
;************************写HPIA******************************/
HA_C:   NOP
        CLR HCNTL1
        SETB HCNTL0
        CLR HBIL   
        MOV P0,#00H
        LCALL W_DRV
        NOP
        NOP
        SETB HDS2
        SETB HBIL
        MOV P0,#055H
        LCALL W_DRV  ;准备读地址为0x1055的数据
        NOP
        NOP
        NOP
        SETB HDS2
MANG:   JNB HRDY,MANG   ;判断DSP内部传输是否完成
        RET

;******************读HPID*************************/
HD_C:   NOP
        SETB HCNTL1
        SETB HCNTL0
        CLR HBIL
        ;读高八位:
        LCALL R_DRV
        MOV R1,P0;
        NOP
        NOP
        SETB HDS1
        SETB HBIL
        ;读低八位:
        LCALL R_DRV
        MOV R2,P0;
        NOP
        NOP
        SETB HDS1
        LJMP LOOP
;******************************读数据时,HDS1的下降沿锁存信号*************************
R_DRV:   JNB HRDY,R_DRV
         SETB HRW
         NOP
         NOP
         CLR HDS1
         NOP
         NOP
         NOP
         NOP
         RET
;****************************写数据时,HDS2的下降沿锁存信号**************************
W_DRV:   JNB HRDY,W_DRV
         NOP
         NOP
         CLR HRW
         NOP
         NOP
         NOP
         CLR HDS2
         NOP
         NOP
         NOP
         RET
LOOP:    NOP
         NOP
         LJMP LOOP
         END

相关帖子

沙发
kimjin| | 2007-5-7 09:06 | 只看该作者

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

做的时间比较久了,记不大清。
好象HPIA的值读出是有点问题,但HPID不应该错,只要HPID读出来是正确的就可以了。
遵守DS时序,做好HPIC初始化是关键。
对于片内SRAM的读写可以用HCNTL0=1,HCNTL1=1,较简单。

使用特权

评论回复
板凳
qxxqxq|  楼主 | 2007-5-7 10:01 | 只看该作者

遵守DS时序?

谢谢指教
我想问一下 什么是DS时序?
现在我可以对HPIC,HPID进行读写了
但对HPIA的读写不对

主机对HPI读写数据,首先要锁存,是否DSP有个地址空间来存放这些数据,如果有,地址又是多少?

主机对HPIA写的数据是0055H,那访问的HPID的数据是DSP的哪个地址的数据?
(我用的DSP是5402)  谢谢

使用特权

评论回复
地板
kimjin| | 2007-5-7 22:25 | 只看该作者

ds--datasheet

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

使用特权

评论回复
5
qxxqxq|  楼主 | 2007-5-8 15:00 | 只看该作者

读出的数据无法定位!

谢谢指教!

还有一些问题:
HPIA,HPID是否有地址,(HPIC的地址是0x2c)有的话是多少呢?

现在HPID能读出的数据
但此数据的值与我写入HPIA的地址所对应的值对不上号!!

我在资料上看到了这么一句话:“C54x的HPI存储器是一个2K×16位的DARAM,他在数据存储空间的地址范围为1000H-17FFH。”

0055H不在HPI存储器的地址范围内,
那么向HIPA访问时,写0055H,访问的是片内0055H还是1055H或是其他地址的数据?(同时我也试过向HPIA写0x1055)
现在的主要问题是读出的数据不能定位,不知道读的是哪个地址空间的值,请高手指点一下!

谢谢

使用特权

评论回复
6
kimjin| | 2007-5-8 18:50 | 只看该作者

HPI可访问全部片上RAM

你对HPI的理解有误,导致你不能正确操作它。
HPIA、HPID的地址无关紧要,只要正确应用HCNTL0和HCNTL1电平就可以访问HPIA、HPID、HPIC。由于HPIC在寄存器中有地址,所以向HPIA写入0x2c然后读HPID,也可达到HCNTL0=0和HCNTL1=0时进行读操作的效果。

0055就是片上0055,不是1055.C54的HPI只能访问片上空间,不能访问片外存储器。
当在对片外存储器操作时,若要向FLASH的0055写入数据,需要将0055+8000,
即8055。FLASH对命令的解释不对高位地址译码,只译码15位(对5402),所以DSP访问FLASH的地址就是0055.

使用特权

评论回复
7
qxxqxq|  楼主 | 2007-5-9 11:06 | 只看该作者

HPID读出的数据有问题

谢谢指教!

现在还有如下问题:
进行下面的操作:
1.写HPIC,写HPIA,读HPID:
复位后,设置好HPIC,无论HPIA如何变化,HPID读出的数一直都是相同的一个数

2.写HPIC,写HPID,读HPID:
例如:向HPID写0055H,读出的数据也是0055H;此时,把写HPID改成写HPIA,无论HPIA如何变化,HPID读出的数据永远都是刚才我写到HPID的0055H

这是为什么呢?可能是哪里出错了?

请高手指点
谢谢


使用特权

评论回复
8
qxxqxq|  楼主 | 2007-5-10 09:21 | 只看该作者

help

好心人,帮忙看看
指点一下嘛~

使用特权

评论回复
9
qxxqxq|  楼主 | 2007-5-10 11:18 | 只看该作者

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

请问对HPIA进行访问的时候HCNTL0为1, HCNTL1为0,还是HCNTL0为0, HCNTL1为1

我在实际应用中对HPIA是HCNTL0为1, HCNTL1为0,
因为如果HCNTL0为0, HCNTL1为1写入数据(0055H),再用HCNTL0为1, HCNTL1为1,读出数据就和我写进去的数据一模一样(0055H)

所以我判断:HCNTL0为1, HCNTL1为0是对HPIA进行操作.

但文档上与我的实际操作不符

请高手指教

使用特权

评论回复
10
菲59240| | 2010-3-21 17:00 | 只看该作者
楼主能把你的发给我么,我也做这个,谢谢你了,邮箱是xuxiao_59240@126.com,参考下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

1

粉丝