|
5芯积分
我现在用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;
请问是我的偏移地址有问题吗?还是什么原因出现的这种情况?
|
|
|