主要用到的读写是这两个write和read
AD_Write(adc_i2c_addr_write,chal0_config);
CyU3PBusyWait(700000);
AD_Read (adc_i2c_addr_read, buffer_0);
下面是定义:
void AD_Write (uint8_t slaveAddr,uint8_t data)
{
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
CyU3PI2cPreamble_t preamble;
uint8_t buf[1];
buf[0] = data;
preamble.buffer[0] = slaveAddr;
preamble.buffer[1] = buf[0]; //一旦写入配置,配置信息字节之后的字节都将会忽略
preamble.length = 2;
preamble.ctrlMask = 0x0000;
status = CyU3PI2cTransmitBytes (&preamble, buf, 1, 0);
if(status == CY_U3P_SUCCESS)
{
status = CyU3PI2cWaitForAck(&preamble, 0);
}
CyU3PBusyWait(5) ;//CyU3PThreadSleep(10);//100.200:color not right.(speed)
}
void AD_Read (uint8_t slaveAddr, uint8_t *buf)
{
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
CyU3PI2cPreamble_t preamble;
preamble.buffer[0] = slaveAddr ;
// preamble.buffer[1] = regAddr;
preamble.buffer[1] = slaveAddr;
preamble.length = 2;
preamble.ctrlMask = 0x0001; /* slaveAddrPos: Send start bit after 1 byte of preamble.!! */
status = CyU3PI2cReceiveBytes (&preamble, buf, 3, 0);
while(buf[2] & 0x80)
{
status = CyU3PI2cReceiveBytes (&preamble, buf, 3, 0);
}
CyU3PThreadSleep (1);
}
|