基于单片机与DSP的HPI接口通信设计
本人大四了,毕业设计要做这个题目,我学通信的,老师让我做这个题目,对DSP了解就一点点,我就想谁能提供我一些资料,最好有程序,C语言编的,CCS可以调试出来的,感激不尽,怎么编程让单片机通过DSP的HPI接口进行通信 免费的代码么? 有么?只要这个设计的程序,汇编和C语言都可以吧 其实就要这个课题的一个程序,希望有做过的好心人能提供这方面资料,谢谢了 可以参考下,我也打算用这个来弄HPI接口,不过还没测试,仅仅通过51来存储DSP的代码// 定义寄存器端口地址
#define HPICL XBYTE
#define HPICH XBYTE
#define WR_HPIL0_D XBYTE
#define WR_HPIH0_D XBYTE
#define WR_HPIL_A XBYTE
#define WR_HPIH_A XBYTE
#define WR_HPIL1_D XBYTE
#define WR_HPIH1_D XBYTE
#define RD_HPIL0_D XBYTE
#define RD_HPIH0_D XBYTE
#define RD_HPIL1_D XBYTE
#define RD_HPIH1_D XBYTE
#define WR_CR XBYTE
#define WR_PARA XBYTE
#include"global.h"
#include<dspcode.h>
sbitNRST =P1^2;
void hpi_restart(void)
{
NRST=0;
delay_ms(10);
NRST=1;
delay_ms(10);
}
uint8 hpi_read(uint16 addr)
{
unsigned char i;
WR_HPIL_A=addr/256;
WR_HPIH_A=addr%256;
i=RD_HPIL0_D;
i=RD_HPIH0_D;
return(i);
}
void hpi_write(uint16 addr,uint16 dat)
{
WR_HPIL_A=addr/256;
WR_HPIH_A=addr%256;
WR_HPIL1_D=dat/256;
WR_HPIH1_D=dat%256;
}
void hpi_code_load(void)
{
uint8code *dspptr,*temp;
uint8 len;
char i;
uint16 addr;
HPICL=0x08;//clear HPIint,least is first
HPICH=0x08;
dspptr=dspcode; // 这里的dspcode是我通过DSP生成.out文件,然后转化的code代码
while(1)
{
len=*dspptr++;
if(len==0) break;
else
{
addr=((*dspptr++)*256)+(*dspptr++);
addr--;
temp=dspptr;
again:
WR_HPIL_A=addr/256;
WR_HPIH_A=addr%256;
for(i=0;i<len/2;i++)
{
WR_HPIL0_D=*dspptr++;
WR_HPIH0_D=*dspptr++;
}
dspptr=temp;
addr++;
WR_HPIL_A=addr/256;
WR_HPIH_A=addr%256;
for(i=0;i<len/2;i++)
{
if(RD_HPIL0_D!=*dspptr++)goto again; //不相等,再写
if(RD_HPIH0_D!=*dspptr++)goto again;
}
}
}
WR_HPIL_A=0x00;
WR_HPIH_A=0x7f;
WR_HPIL1_D=0x00; //THE START ADDRESS OF RUN
WR_HPIH1_D=0x80;
}
uint8 hpi_get(void)
{
WR_HPIL_A=0;
WR_HPIH_A=0x7d;
return(RD_HPIH0_D);
} 工作原理:单片机是主机,DSP是从机,通过总线来访问DSP中hpi里的数据.
hpi有8位和6位的.单片机需要3伏的. 你又设计版本么? 楼上le通常表示单片机为低电压产品(通常为3.3V)所以可以连在一起。跟容量没关系 这是我以前做过的一块板子,图中是dm642的HPI接口与一片单片机连接在一起,单片机通过HPI接口给DSP装载程序和数据通讯.
QQ:199663740
谢谢分享 HPI连线太多了。 我看有的文档说是DSP的CODE和DATA(初始化数据)分开写入。5楼同学应该是合在 一起写入的吧?
页:
[1]