搜索
bottom↓
回复: 0

ARM与DSP利用HPI总线通信的寄存器便宜地址如何计算?

[复制链接]

出0入0汤圆

发表于 2013-5-23 15:12:05 | 显示全部楼层 |阅读模式

我现在用TQ2440的总线接口连接DM642的DSP开发板,使用HPI-16接口通信,连接图如下图所示。


为了控制HPI寄存器的选择和读写,采用地址线方法控制,由于HPI接入到nGCS3,所以对应的是BANK3地址是从0x18000000开始的
那么对应的个地址我们入下图所示
*---------------------------------------------------------------------------------------------------------------------------
*           AD4       AD3        AD2         AD1        AD0    偏移地址                 说明
*           HR/W   HCNTL1   HCNTL0   HHWIL                                     (ADDR[0-4])   
*             0         0             0            0              X      0X00                控制寄存器HPIC 高字节
*             0         0             0            1              X      0X02                写控制寄存器HPIC 低字节
*             1         0             0            0              X      0X10                读控制寄存器HPIC 高字节
*             1         0             0            1              X      0X12                  读控制寄存器HPIC 低字节
*
*
*             0         1             0            0              X      0X08            写地址寄存器HPIA 高字节
*             0         1            0           1              X     0X0A            写地址寄存器HPIA 低字节
*             1         1             0            0              X     0X18            读地址寄存器HPIA 高字节
*             1         1             0            1              X     0X1A            读地址寄存器HPIA 低字节
*
*
*             0          0           1              0             X     0X04            写数据寄存器HPID 高字节  地址自增
*             0          0            1              1           X     0X06            写数据寄存器HPID 低字节  地址自增
*             1          0            1              0            X     0X14            读数据寄存器HPID 高字节  地址自增
*             1          0            1             1            X     0X16            读数据寄存器HPID 低字节  地址自增
*
*
*             0           1            1              0            X     0X0C            写数据寄存器HPID 高字节  
*             0          1            1             1            X     0X0E            写数据寄存器HPID 低字节  
*             1           1            1              0            X     0X1C            读数据寄存器HPID 高字节  
*             1          1            1              1            X     0X1E            读数据寄存器HPID 低字节  
*
*****************************************************************************************************/

那么当我对0x18000000+(addr)上述偏移地址读写的时候,nCGS3自动会变低, 相应的nOE nWE也会被ARM自动置低或高,同时,地址总线也会根据我们的地址内容去跳变。
但是我对0x18000000+0x00、0x02、0x10、0x12 进行读写的时候ADDR2 就为0,此时为正确的。
接下来我对 0x18000000+0x08 0xa 0x18 0x1a进行读写的时候ADDR2就为1,此时与我理论上的配置相反。(如下图所示,黄色为nGCS3,蓝色为ADDR2,图中的波形代表红色代码的波形)


部分代码:
#define HPI_BASE_ADDRESS  0x18000000

#define HPIC_WRITE_H  (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x02)) //写控制寄存器HPIC 高字节
#define HPIC_WRITE_L  (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x00)) //写控制寄存器HPIC 低字节
#define HPIC_READ_H   (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x12)) //读控制寄存器HPIC 高字节
#define HPIC_READ_L   (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x10)) //读控制寄存器HPIC 低字节


#define HPIA_WRITE_H  (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x06)) //写地址寄存器HPIA 高字节
#define HPIA_WRITE_L  (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x04)) //写地址寄存器HPIA 低字节
#define HPIA_READ_H   (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x16)) //读地址寄存器HPIA 高字节
#define HPIA_READ_L   (*(volatile unsigned short *)(HPI_BASE_ADDRESS+0x14)) //读地址寄存器HPIA 低字节



        rBWSCON=rBWSCON|(1<<14)|(0x01<<12);//使能BANK3 nWAIT 16位带宽
        rBANKCON3=(0x10<<13)|(0x100<<8)|(0x11<<6);
        ChangeRomCacheStatus(RW_NCNB);//关闭ARM CACHE

               HPIC_WRITE_L=0x0005;
        HPIC_WRITE_H=0x0005;
        a=HPIC_READ_L;   
        b=HPIC_READ_H;   
        HPIA_WRITE_L=0x1000;  
        HPIA_WRITE_H=0x8000;
        c=HPIA_READ_L;  
        d=HPIA_READ_H;

  




请问是我的偏移地址有问题吗?还是什么原因出现的这种情况?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 03:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表