⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hpi.h

📁 lpc2290通过HPI访问DSP5402的子程序
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                              深圳振华重大新电气有限公司
**                                      技术开发部
**
**-----------------------------------------------------------------------------------------------------
** 文件名:			HPI.h
** 最后修改日期:    2005-08-25
** 最后版本:		1.0
** 描述:		    文件HPI.c的头文件
**
**------------------------------------------------------------------------------------------------------
** 创建者:			CXP,LSJ
** 创建日期:		2005-08-25
** 版本:			1.0
** 描述:		    原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改者:
** 修改日期:
** 版本:
** 描述:
**
********************************************************************************************************/

#ifdef   HPI_GLOBALS     
#define  HPI_EXT     
#else                  
#define  HPI_EXT  extern
#endif

#include  "config.h" 

/********************************************************************************************************
**                                           宏定义
********************************************************************************************************/
/** 系统寄存器宏定义 **/
#define  ResetDspFootIO    0xffcfffff  /* P0.10 为IO口,设为0   */
#define  ResetDspFootDir   0x00000400  /* p0.10 为输出口,设为1  */
#define  ResetDspFootHigh  0x00000400  /* 用于IO0 SET           */
#define  ResetDspFootLow   0x00000400  /* 用于IO0 CLR           */

#define  HPI_BASE          0x83000000
                                           
#define  HPIC_W_F *((uint8 *)(HPI_BASE + 0x0))    /*000 0 0    写HPIC低位                              */
#define  HPIC_W_S *((uint8 *)(HPI_BASE + 0x2))    /*000 1 0  写HPIC高位							   */
#define  HPIC_R_F *((uint8 *)(HPI_BASE + 0x10))   /*100 0 0   读HPIC低位							   */
#define  HPIC_R_S *((uint8 *)(HPI_BASE + 0x12))   /*100 1 0    读HPIC高位							   */
                                            
#define  HPID_W_A_F *((uint8 *)(HPI_BASE + 0x4))  /*001 0 0   写HPID低位且HPIA自动加1                 */
#define  HPID_W_A_S *((uint8 *)(HPI_BASE + 0x6))  /*001 1 0   写HPID高位且HPIA自动加1			       */
#define  HPID_R_A_F *((uint8 *)(HPI_BASE + 0x14)) /*101 0 0    读HPID高位且HPIA自动加1                 */
#define  HPID_R_A_S *((uint8 *)(HPI_BASE + 0x16)) /*101 1 0    读HPID高位且HPIA自动加1                 */
                                         
#define  HPIA_W_F *((uint8 *)(HPI_BASE + 0x8))    /*010 0 0    写HPIA低位                              */
#define  HPIA_W_S *((uint8 *)(HPI_BASE + 0xA))    /*010 1 0  写HPIA高位                              */
#define  HPIA_R_F *((uint8 *)(HPI_BASE + 0x18))   /*110 0 0  读HPIA低位                              */
#define  HPIA_R_S *((uint8 *)(HPI_BASE + 0x1A))   /*110 1 0  读HPIA高位                              */

/** 用户宏定义 **/
#define  ARM_TO_DSP_CMD_ADDR    0x0080            /* ARM 通过HPI发送命令给DSP的单元地址                */       
#define  DSP_TO_ARM_CMD_ADDR    0x0081            /* DSP 通过HPI发送命令给ARM的单元地址                */
#define  ARMtoDSPAppBaseAddr    0x008C            /*ARM->DSP,HPI应用通信的命令参数区                  */
#define  DSPtoARMAppBaseAddr    0x0082            /*DSP->ARM,HPI应用通信的命令参数区                  */

#define  TIME_SEC_SYNC          0x6011	  /* [0x80]	ARM→DSP   整秒同步命令                            */
#define  TIME_SAMP_SYNC	        0x6022	  /* [0x80]	ARM→DSP   采样周期同步命令(目前不用)            */

#define  SEND_RECORD_WAVE	    0x8011	  /* [0x81]	DSP→ARM   DSP发送一次录波数据完毕命令             */
#define  DSP_SELFCHECK_ERROR	0x8022	  /* [0x81]	DSP→ARM   DSP自检出错命令,要求ARM重新下载程序    */
#define  DSP_INIT_FINISHED	    0x8033	  /* [0x81]	DSP→ARM   DSP应用程序完成初始化,ARM可读取其版本号*/
#define  DSP_REQ_SAMPLE_PULSE   0x8044    /* [0x81]	DSP→ARM   DSP初始化完成后,长时间没有收到采样脉冲 */
#define  SEND_RELAY_DATA        0x8055    /* [0x81]	DSP→ARM   DSP发送一次保护数据完毕命令             */


/********************************************************************************************************
**                                           全局变量
********************************************************************************************************/
HPI_EXT  BOOLEAN   FlagDSPIntARM;             /* DSP中断ARM的标记位                                    */
HPI_EXT  OS_EVENT  *SemHPI;                   /* HPI访问信号量                                         */
HPI_EXT  OS_EVENT  *SemHPIInterrupt;          /* 接收到DSP的HPI中断信号量                              */


/********************************************************************************************************
**                                           函数原型
********************************************************************************************************/
void   HPIInit(void);
void   HPISetAddr(uint16 addr);
uint16 HPIReadOneData(uint16 addr);

uint8  HPIReadLenData(uint16 addr,uint16 len,uint8 *data1);/* 从DSP中读出指定数据到指定地址           */
uint8  HPIReadLenDataSem(uint16 addr, uint16 len, uint8 *data1);/* 从DSP中读指定长度数据,每个半字用信号量保护 */
void   HPIWriteOneData(uint16 addr,uint16 data);            /* 写单个数据到DSP中去                     */
uint8  HPIWriteLenData(uint16 addr,uint16 len,uint16 *data1); /* 写指定长度数据到指定地址              */                                                  
uint8  HPIWriteLenCharData(uint16 addr,uint16 len,uint8 *data1);
                                      /* 写入数据,数据放在data1中,以字节形式存在,高位在前,低位在后 */
uint8  HPIWriteLenCharData2(uint16 addr,uint16 len,uint8 *bufh,uint8 *bufl);
                       /* 写入数据,数据放在bufh和bufl中,bufh在存高字节,bufl中存低位,两者长度要相等 */
void   HPIInterruptDSP(void);        /* ARM中断DSP                                                     */
void   HPIInterruptClear(void);      /* ARM 清除来自DSP的中断                                          */
void   IRQ_EINT2(void);
void   Init_ARM_HPI_INT(void);       /* 初始化ARM的外部中断2入口,即DSP产生的HPI中断                   */
void   BootInitReset(void);
void   ResetDsp(void);


/********************************************************************************************************
**                                           文件结束
********************************************************************************************************/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -