IIC 인터페이스 참조 코드
4707 단어 vivado
******************************************************************************/
/*
#include #include “platform.h” #include “xil_printf.h” #include “sleep.h” #include “xparameters.h” #include “xiicps.h”
#define DEVICE_ID XPAR_PS7_I2C_0_DEVICE_ID #define IIC_RATE 100000//100KHz #define IIC_SLV_ADDR 0x40
static XIicPs IicPs; static XIicPs_Config * IicPsCfgPtr;
int initIicPs(XIicPs *iicps,XIicPs_Config * iiccfg); double avgFilter(double * srtDataPtr,double inData,int count);
int main() { int status; double avgData[4]; status = initIicPs(&IicPs,IicPsCfgPtr); if(status != XST_SUCCESS) { printf(“fail %d”,status); return XST_FAILURE; } char CmdHum = 0xE5; char CmdTemp = 0xE3; char Hdata[2]; char Tdata[2]; double Tout,Hout; unsigned short tmp = 0; while (1) { status = XIicPs_MasterSendPolled(&IicPs,&CmdTemp,0x01,IIC_SLV_ADDR); if(status != XST_SUCCESS) { printf(“fail %d”,status); return XST_FAILURE; } status = XIicPs_MasterRecvPolled(&IicPs,Tdata,0x02,IIC_SLV_ADDR);
status = XIicPs_MasterSendPolled(&IicPs,&CmdHum,0x01,IIC_SLV_ADDR);
if(status != XST_SUCCESS)
{
printf("fail %d",status);
return XST_FAILURE;
}
status = XIicPs_MasterRecvPolled(&IicPs,Hdata,0x02,IIC_SLV_ADDR);
tmp = (Tdata[0] <<8)|(Tdata[1] & 0xFC);
Tout = 175.72*tmp/65536 -46.85;
tmp = (Hdata[0] <<8) | (Hdata[1] &0xFD);
Hout = 125*tmp / 65536 -6;
Tout = avgFilter(avgData,Tout,0x04);
printf("Temp = %.1f , Hum = %.1f
\r",Tout,Hout);
printf("Hello World
\r");
usleep(1000000);
}
return 0;
}
int initIicPs(XIicPs *iicps,XIicPs_Config * iiccfg) { int status; iiccfg = XIicPs_LookupConfig(DEVICE_ID); status = XIicPs_CfgInitialize(iicps,iiccfg,iiccfg->BaseAddress); if(status != XST_SUCCESS) { printf(“fail %d”,status); return XST_FAILURE; } status = XIicPs_SetSClk(iicps,IIC_RATE); if(status != XST_SUCCESS) { printf(“fail %d”,status); return XST_FAILURE; } return XST_SUCCESS; }
double avgFilter(double * srtDataPtr,double inData,int count) { int i; double outData; for(i = 0;i < count ; i++) { if(i < count-1) { srtDataPtr[i+1] = srtDataPtr[i]; } } srtDataPtr[0] = inData; outData = (srtDataPtr[0] + srtDataPtr[1] + srtDataPtr[2] + srtDataPtr[3])/4; return outData; }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IIC 인터페이스 참조 코드in the Software without restriction, including without limitation the rights copies of the Software, and to permit perso...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.