ARM CPU S3C44B0X与C54X DSP的接口设计
(UINT8*)(HPI_BASE+0x8)//01000
#defineHPIA_W_S*(UINT8*)(HPI_BASE+0xA)//01010
#defineHPIA_R_F*(UINT8*)(HPI_BASE+0x18)//11000
#defineHPIA_R_S*(UINT8*)(HPI_BASE+0x1A)//11010
上述这些宏定义了HPI8接口寄存器的地址。对S3C44B0X来说,HPI8占用其内存的BANK2,即起始地址为0X04000000。又由于HPI8的HR/W和HBIL信号用S3C44B0X的地址线实现,因此对同一个寄存器而言,其读写地址不同。
以下代码从DSP读出数据:
UINT16read_dsp(UINT16addr)
{
INT16i;
INT8j;
set_hpia(addr);//设置起始地址
i=HPID_R_A_F;//读出第一字节
j=HPID_R_A_S;//读出第二字节
return(i<<8)|(j&0xff);
}
以下代码向DSP写入数据:
voidwrite_dsp(UINT16addr,UINT16dat)
{
set_hpia(addr-1);//设置起始地址
HPID_W_A_F=(UINT8)((dat>>8)&0xff);//写入第一字节
HPID_W_A_S=(UINT8)(dat&0xff);//写入第二字节
}
在嵌入式系统设计中,用S3C44B0X作为主控制器,用TMS320C5416进行运算,然后通过HPI接口进行通信和交换数据。事实证明,用HPI接口在ARM和DSP间通信满足嵌入式系统的实时性要求。
《ARM CPU S3C44B0X与C54X DSP的接口设计(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/165729.html
#defineHPIA_W_S*(UINT8*)(HPI_BASE+0xA)//01010
#defineHPIA_R_F*(UINT8*)(HPI_BASE+0x18)//11000
#defineHPIA_R_S*(UINT8*)(HPI_BASE+0x1A)//11010
上述这些宏定义了HPI8接口寄存器的地址。对S3C44B0X来说,HPI8占用其内存的BANK2,即起始地址为0X04000000。又由于HPI8的HR/W和HBIL信号用S3C44B0X的地址线实现,因此对同一个寄存器而言,其读写地址不同。
以下代码从DSP读出数据:
UINT16read_dsp(UINT16addr)
{
INT16i;
INT8j;
set_hpia(addr);//设置起始地址
i=HPID_R_A_F;//读出第一字节
j=HPID_R_A_S;//读出第二字节
return(i<<8)|(j&0xff);
}
以下代码向DSP写入数据:
voidwrite_dsp(UINT16addr,UINT16dat)
{
set_hpia(addr-1);//设置起始地址
HPID_W_A_F=(UINT8)((dat>>8)&0xff);//写入第一字节
HPID_W_A_S=(UINT8)(dat&0xff);//写入第二字节
}
在嵌入式系统设计中,用S3C44B0X作为主控制器,用TMS320C5416进行运算,然后通过HPI接口进行通信和交换数据。事实证明,用HPI接口在ARM和DSP间通信满足嵌入式系统的实时性要求。
《ARM CPU S3C44B0X与C54X DSP的接口设计(第3页)》