|
After hooking up an OmniVision OV5620 to test the comms we found it worked OK, just like any other I2C device.
Anyway here is the code:-
/* Functions for OmniVision Chips */
void sccb_read_reg(uint8_t reg, uint8_t *data)
{
CyU3PReturnStatus_t apiRetStatus;
CyU3PI2cPreamble_t preamble;
preamble.buffer[0] = 0x60;
preamble.buffer[1] = reg;
preamble.buffer[2] = 0x61;
preamble.length = 3;
preamble.ctrlMask = 1 << 1;
apiRetStatus = CyU3PI2cReceiveBytes(&preamble, data, 1, 0);
if(apiRetStatus != CY_U3P_SUCCESS){
CyU3PDebugPrint(8, "i2c Receive Failed, Error Code = %d\n\r", apiRetStatus);
}else{
CyU3PDebugPrint(8, "i2c Receive Data = %x,%x\n\r", reg, *data);
}
}
void sccb_write_reg(uint8_t reg, uint8_t *data)
{
CyU3PReturnStatus_t apiRetStatus;
CyU3PI2cPreamble_t preamble;
preamble.buffer[0] = 0x60;
preamble.buffer[1] = reg;
preamble.length = 2;
preamble.ctrlMask = 0 << 2;
apiRetStatus = CyU3PI2cTransmitBytes(&preamble, data, 1, 0);
if(apiRetStatus != CY_U3P_SUCCESS){
CyU3PDebugPrint(8, "i2c Send Failed, Error Code = %d\n\r", apiRetStatus);
}else{
CyU3PDebugPrint(8, "i2c Send Data = %x,%x\n\r", reg, *data);
}
}
|