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

📄 test_hpi.c

📁 ARM HPI程序。 用于ARM与DSP之间通信
💻 C
字号:
/*this file realize simple write and read data via hpi to verify hardwareauthor:yudayong  <sinbadak@163.com>date :2006.03.25*/#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>/******address define*************//****************************/#define HPIC_ADDR 	0X00#define HPIA_ADDR 	0X02 #define HPID_INC 	0X04#define HPID_FIX  	0X06/****************************/#define HRnW_nW		0X00#define HRnW_R	  	0X08/****************************/#define HHWL_H    	0X10#define HHWL_L    	0X00/****************************/#define HWOB 0#define DELAYER 0	int fd1;	int i,ret;	//1st byte is offset address, 2nd byte is data low 8 bit, 3rd byte is data high 8 bit	char write_buffer[3]={0,0,0};	char read_buffer[3]= {0,0,0};	void open_hpi(void){	fd1=open("/dev/hpi",O_RDWR);	if (fd1<0)	{printf("Error open HPI_DM642\n");sleep(2);}	else{printf("Open HPI_DM642 success!\n");}}void send_low_16(unsigned long value){write_buffer[1]=(char)value&0xff;write_buffer[2]=(char)((value&0xff00)>>8);write(fd1,&write_buffer,sizeof(write_buffer));	//usleep(DELAYER);}void send_high_16(unsigned long value){write_buffer[1]=(char)((value&0xff0000)>>16);write_buffer[2]=(char)((value&0xff000000)>>24);write(fd1,&write_buffer,sizeof(write_buffer));	//usleep(DELAYER);}void set_hpic_reg(unsigned long value) {write_buffer[0]=HPIC_ADDR + HRnW_nW + HHWL_L ;send_high_16(value);	//usleep(DELAYER);write_buffer[0]=HPIC_ADDR + HRnW_nW + HHWL_H ;send_low_16(value);	//usleep(DELAYER);} unsigned long  get_hpic_reg(void) {unsigned long ret;if (HWOB==0){read_buffer[0]=HPIC_ADDR + HRnW_R + HHWL_L ;read(fd1,&read_buffer,sizeof(read_buffer));ret=read_buffer[1]+(read_buffer[2]<<8);	//usleep(DELAYER);read_buffer[0]=HPIC_ADDR + HRnW_R + HHWL_H ;read(fd1,&read_buffer,sizeof(read_buffer));ret=(ret<<16)+read_buffer[1]+(read_buffer[2]<<8);	//usleep(DELAYER);}return ret;} void set_hpia_reg(unsigned long value){  if (HWOB==0)    {	write_buffer[0]=HPIA_ADDR + HRnW_nW + HHWL_L ;	send_high_16(value);	//usleep(DELAYER);	write_buffer[0]=HPIA_ADDR + HRnW_nW + HHWL_H ;	send_low_16(value);	//usleep(DELAYER);     }}unsigned long get_hpia_reg(void){unsigned long ret;if (HWOB==0){read_buffer[0]=HPIA_ADDR + HRnW_R + HHWL_L;read(fd1,&read_buffer,sizeof(read_buffer));	//usleep(DELAYER);ret=read_buffer[1]+(read_buffer[2]<<8);read_buffer[0]=HPIA_ADDR + HRnW_R + HHWL_H ;read(fd1,&read_buffer,sizeof(read_buffer));	//usleep(DELAYER);ret=(ret<<16)+read_buffer[1]+(read_buffer[2]<<8); }return ret;}set_hpid_reg(unsigned long value){unsigned long temp;  if (HWOB==0)    {	write_buffer[0]=HPID_FIX + HRnW_nW + HHWL_L ;	send_high_16(value);	//usleep(DELAYER);	write_buffer[0]=HPID_FIX + HRnW_nW + HHWL_H ;	send_low_16(value);	//usleep(DELAYER);    }}unsigned long get_hpid_reg(void){unsigned long ret;if (HWOB==0){read_buffer[0]=HPID_FIX + HRnW_R + HHWL_L ;read(fd1,&read_buffer,sizeof(read_buffer));read(fd1,&read_buffer,sizeof(read_buffer));	//usleep(DELAYER);//read(fd1,&read_buffer,sizeof(read_buffer));ret=read_buffer[1]+(read_buffer[2]<<8);printf("high: 0:%x ,1: %x ,2: %x\n",read_buffer[0],read_buffer[1],read_buffer[2]);read_buffer[0]=HPID_FIX + HRnW_R + HHWL_H ;read(fd1,&read_buffer,sizeof(read_buffer));ret=(ret<<16)+read_buffer[1]+(read_buffer[2]<<8);	//usleep(DELAYER); }return ret;}int main(){unsigned long temp, temp1=0;int i;	open_hpi();		set_hpic_reg((HWOB<<16)+HWOB); 	printf("write comMAND value is 0x%x\n",(HWOB<<16)+HWOB);	sleep(2);        temp=get_hpic_reg();	printf("read com value is 0x%x\n",temp);        sleep(2);for(i=0;i<32;i=i+4){        set_hpia_reg(0x23400+i);        temp=get_hpia_reg();	printf("read addr value is 0x%x\n",temp);        set_hpid_reg(0x11234500+i+1);        printf("set  data value is 0x%x\n",0x11234500+i+1);}//sleep(12);        printf("*******************************************\n");for(i=0;i<32;i+=4){	set_hpia_reg(0x23400+i);        temp=get_hpid_reg();        printf("read data value is 0x%x\n",temp);}	close(fd1);	return 0;}

⌨️ 快捷键说明

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