当主机开始存取DSP的数据时,首先要执行以下两步操作:·HPIC寄存器的BOB位置1(高字节与低字节必须相同)。BOB位为字节选择位。BOB位置1,表示第一字节为低字节。BOB位影响数据和地址的传送。只有主机可以修改这一位,C54X对它既不能读也不能写。·将起始地址写入HPIA寄存器。此后可正常存取DSP内部RAM的数据了。结合硬件设计和HPI的操作步骤,便可以在S3C44B0X上编写程序实现C5416的数据通信。程序主要分为两个部分:一部分是地址及数据的定义;一部分是实现代码。具体程序如下:#define HPI_BASE 0x4000000/* HPIC reg */#define HPIC_W_F *(UINT8*)(HPI_BASE 0x0) //000 0 0#define HPIC_W_S *(UINR8 *)(HPI_BASE 0x2) //000 1 0#define HPIC_R_F *(UINT8 *) (HPI_BASE 0x10) //110 0 0#define HPIC_R_S *(UNIT8 *)(HPI_BASE 0x12) //110 1 0/*define HPID_W_A_F *(UINT8 *)(HPI_BASE 0x4) //001 0 0#define HPID_W_A_S *(UINT8 *)(HPI_BASE 0x6) //001 1 0#define HPID_R_A_F *(UINT8 *) (HPI_BASE 0x14) //101 0 0#define HPID_R_A_S *(UINT8 *)(HPI_BASE 0x16) //101 1 0/* HPIA reg */#define HPIA_W_F *(UINT8 *)(HPI_BASE 0x8) //010 0 0#define HPIA_W_S *(UINT8 *)(HPI_BASE 0xA) //010 1 0#define HPIA_R_F *(UINT8 *)(HPI_BASE 0x18) //110 0 0#define HPIA_R_S *(UINT8 *)(HPI_BASE 0x1A) //110 1 0上述这些宏定义了HPI8接口寄存器的地址。对S3C44B0X来说,HPI8占用其内存的BANK2,即起始地址为0X04000000。又由于HPI8的HR/W和HBIL信号用S3C44B0X的地址线实现,因此对同一个寄存器而言,其读写地址不同。以下代码从DSP读出数据:UINT16 read_dsp(UINT16 addr){INT16 i;INT8 j;set_hpia(addr); //设置起始地址i=HPID_R_A_F; //读出第一字节j=HPID_R_A_S; //读出第二字节return (i<<8)|(j&0xff);}以下代码向DSP写入数据:void write_dsp(UINT16 addr,UINT16 dat){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的接口设计(2)
1
阅读
最新评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
- 本站是由一个众多学科的博士群体组建而成,主要创办者为成都各重点高校博士。本论文网内理工科写手均为博士,文科类写手大部分为博士,且领域涵盖广泛,写作势力强大,若有部分专业,没有相关的写手,我们给你寻找合适的写手! 依托强大的人力资源,我们本着诚心交流的宗旨,专门为您排解写作上的难题。从在科研及实践工作中稳扎稳打的经历,我们具备了研究问题,解决问题的能力。论文写作和论文发表,作为教育体系的一个重要环节,我们确实有能力给您解决好问题,正所谓,真金不怕火来炼,请相信我们的势力,没有把握的事,我们不会做!
热点关注
相关文章
赞助商链接
