利用前两节的基础函数,根据1002的波形,得出以下两个应用函数:
SI MODULE_I2c_ACMD_Write(U8 cModuleDeviceId, U8 cAcmd, U8 cCmd)
{
U8 pcBuffer[4];
SI sts=WRONG;
pcBuffer[0]=cModuleDeviceId; //芯片地址
pcBuffer[1]=cAcmd; //命令
pcBuffer[2]=0x01; //参数个数
pcBuffer[3]=cCmd; //命令参数
sts=dtv_i2c_send(4,pcBuffer); //4是写入参数个数,pcBuffer是参数数组
return sts;
}
典型应用: MODULE_I2c_ACMD_Write(SPHE100X_DEVICE_ID,PCMD_SETTING_W,PCMD_SETTING_AREA_SCAN);
SI MODULE_I2c_ACMD_Read(U8 cModuleDeviceId, U8 cAcmd, U8 len, U8* cDataArray)
{ //len要读的数据长度,cDataArray要回传数据的指针空间
U8 pcBuffer[8],i;
SI sts=WRONG;
pcBuffer[0]=cModuleDeviceId; //设备地址
pcBuffer[1]=cAcmd; //命令
pcBuffer[2]=0x00;
sts=dtv_i2c_recv( len+4,3,pcBuffer); //len+4总的数据长度,3表示从数组[3]开始存储读回数据
if(sts == TRUE)
{
for( i=1;i<len+1;i++)
*(cDataArray+i-1)=*(pcBuffer+3+i); //读出后,将值取出赋给要回传的指针空间
}
return sts;
}