📄 hpi.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 + -