Слияние кода завершено, страница обновится автоматически
Необходимо небольшое изменение процесса на стороне(host):
int host_iic_read_data(u8 id, u8 reg, u8 *data, u16 len)
{
int ret = 0;
/* логируем информацию "%s[len:%d]" */
soft_iic_start(id);
ret = soft_iic_tx_byte(id, WRITE_ADDR);
if (0 == ret) {
ret = -1;
goto __end;
}
delay(soft_iic_cfg[HOST_ID].delay);
ret = soft_iic_tx_byte(id, reg);
if (0 == ret) {
ret = -2;
goto __end;
}
delay(soft_iic_cfg[HOST_ID].delay);
+ soft_iic_stop(id); // при использовании контроллера AC635 как IIC-мастера, перед повторным запуском требуется отправка команды stop
soft_iic_start(id);
ret = soft_iic_tx_byte(id, READ_ADDR);
if (0 == ret) {
ret = -3;
goto __end;
}
delay(soft_iic_cfg[HOST_ID].delay);
ret = soft_iic_read_buf(id, data, len);
if(0 == ret){
ret = -4;
goto __end;
}
__end:
soft_iic_stop(id);
delay(soft_iic_cfg[HOST_ID].delay);
/* логируем информацию "%s[ret:0x%x]" */
return ret;
}
Ссылка: https://pan.baidu.com/s/1XbI8sD0_-7EXJZkn0b7Bmg
Код: hjfw
Исходный код сосредоточен в файлах iic_test.c
и iic_hw.c
, функция void iic_test_main(void)
;
Вход Перед тем как оставить комментарий