I can't get it working (but it always returns me 0 in my buffer).
My configuration is between 2 frm-kl03z. And yes i2c works well (tested via i2c slave/master demo).
#define FC_CMD_ACK 0xfc
#define FC_CMD_HOOK 0x02
#define FC_CMD_HOOK_LENGTH 0x06
#define FC_CMD_HOOK_ACK 0x82
#define FC_CMD_HOOK_CHECKSUM 0x08
i2c_device_t slave_device = { .address = 0x10, .baudRate_kbps = 100 };
i2c_status_t write_bytes(uint8_t reg_addr, uint8_t length, uint8_t * data) {
uint8_t cmdBuff[1] = { reg_addr };
return I2C_DRV_MasterSendDataBlocking(FSL_I2CCOM1, &slave_device, cmdBuff, 1, data, length, 500);
}
i2c_status_t read_bytes(uint8_t reg_addr, uint8_t length, uint8_t * data) {
uint8_t cmdBuff[1] = { reg_addr };
return I2C_DRV_MasterReceiveDataBlocking(FSL_I2CCOM1, &slave_device, cmdBuff, 1, data, length, 500);
}
uint8_t hook() {
uint8_t buffer[6]= {FC_CMD_HOOK_LENGTH,0x00,0x00,0x00,FC_CMD_HOOK,FC_CMD_HOOK_CHECKSUM};
write_bytes(FC_CMD_HOOK_LENGTH,5, &buffer[1]);
OSA_TimeDelay(100);
read_bytes(FC_CMD_HOOK_ACK,6, buffer);
if (buffer[0]!=FC_CMD_HOOK_ACK || buffer[1]!=FC_CMD_ACK){
printf("Error buffer[0]=%x, buffer[1]=%x \r\n",buffer[0],buffer[1]);
return 0;
}
int main(void) {
...
hook();
}