菲59240 发表于 2010-3-21 16:24

基于单片机与DSP的HPI接口通信设计

本人大四了,毕业设计要做这个题目,我学通信的,老师让我做这个题目,对DSP了解就一点点,我就想谁能提供我一些资料,最好有程序,C语言编的,CCS可以调试出来的,感激不尽,怎么编程让单片机通过DSP的HPI接口进行通信

lelee007 发表于 2010-3-21 18:43

免费的代码么?

菲59240 发表于 2010-3-21 19:01

有么?只要这个设计的程序,汇编和C语言都可以吧

菲59240 发表于 2010-3-24 18:33

其实就要这个课题的一个程序,希望有做过的好心人能提供这方面资料,谢谢了

tiger84 发表于 2010-3-24 20:41

可以参考下,我也打算用这个来弄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);
}

大秦正声 发表于 2010-3-28 16:17

工作原理:单片机是主机,DSP是从机,通过总线来访问DSP中hpi里的数据.

hpi有8位和6位的.单片机需要3伏的.

菲59240 发表于 2010-5-13 21:00

你又设计版本么?

金戈铁马 发表于 2010-11-3 09:36

楼上le通常表示单片机为低电压产品(通常为3.3V)所以可以连在一起。跟容量没关系

zhongxon 发表于 2010-11-3 10:05

这是我以前做过的一块板子,图中是dm642的HPI接口与一片单片机连接在一起,单片机通过HPI接口给DSP装载程序和数据通讯.
QQ:199663740

ningjing1e 发表于 2012-7-15 20:18

谢谢分享

天马兰兰 发表于 2012-7-16 14:24

HPI连线太多了。

阿尔法99 发表于 2012-7-24 10:47

我看有的文档说是DSP的CODE和DATA(初始化数据)分开写入。5楼同学应该是合在 一起写入的吧?
页: [1]
查看完整版本: 基于单片机与DSP的HPI接口通信设计