如题,cypress提供了一个CyU3PI2cPreamble_t结构来操作I2C,根据他的说明,我在代码中想读一个8bit 地址的I2C设备,比如一个设备的DevAddress 为0xaa,我想读他的地址0xf0,的值:代码如下面这样写:
CyU3PI2cPreamble_t preamble;
devAddr = 0xaa;
byteAddress = 0xf0;
preamble.length = 3;
preamble.buffer[0] = devAddr;
preamble.buffer[1] = (uint8_t)(byteAddress);
preamble.buffer[2] = devAddr + 1;
preamble.ctrlMask = 0x0002;
status = CyU3PI2cReceiveBytes (&preamble, buffer, 1, NULL);
if(status != CY_U3P_SUCCESS)
{
return status;
}
看上去像是返回值status 没有成功,不知道问题在哪,而且还不是非常清晰的理解ctrlMask 这个参数,修改了几次这个值都没有效果,示波器上测试I2C SDA线上好像只有第一个DevAddr,后面的就都没有了,硬件上连接应该没有其他问题的,换成之前的USB2.0芯片的话,I2C就可以正常读写了,是我代码写错了么??? |