硬件IIC写数据没有问题,读数据在发送设备地址的时候波形明显不对,没有发数据,请问是为什么呢
【已解决】硬件IIC问题
-
- Posts: 49
-
- Posts: 49
Re: 硬件IIC问题
麻烦提供所使用的芯片平台和sdk版本。
-
- Posts: 49
Re: 硬件IIC问题
版本是ble_3435_sdk_ext_39_0F0E 用的是BK3431Q芯片
-
- Posts: 49
Re: 硬件IIC问题
写错了,出问题的是要读取的地址,设备地址还能正常发送
-
- Posts: 49
Re: 硬件IIC问题
请问有结果吗
Re: 硬件IIC问题
i2c_read((UINT8_T)dev_addr, ((UINT8_T *)data)[0], &((UINT8_T *)data)[1], size-1);
直接调用的原厂的读取没有问题啊
Re: 硬件IIC问题
STATUS i2c_read(uint8_t devAddr, uint8_t addr, uint8_t*buf, uint8_t size)
{
I2C_MSG p_i2c_msg;
Code: Select all
p_i2c_msg.work_mode = 0
| ( I2C_MSG_WORK_MODE_RW_BIT) // read
& (~I2C_MSG_WORK_MODE_MS_BIT) // master
& (~I2C_MSG_WORK_MODE_AL_BIT) // 7bit address
| ( I2C_MSG_WORK_MODE_IA_BIT); // without inner address
p_i2c_msg.send_addr = devAddr; // Destiny slave address
p_i2c_msg.inner_addr = addr;
p_i2c_msg.all_data_cnt = size;
p_i2c_msg.addr_flg = 0;
p_i2c_msg.trans_done = 0;
p_i2c_msg.ack_check = 1;
p_i2c_msg.current_data_cnt = 0;
p_i2c_msg.errno = 0;
memset(p_i2c_msg.data, 0, I2C_DATA_BUFFER_LEN);
if (i2c_msg_init(&p_i2c_msg) != OK)
{
return ERROR;
}
i2c_send_start();
while (is_i2c_busy() == YES); // wait until i2c0 free
if(i2c_get_last_msg() != NULL)
{
//PrintI2CurrentMsg(i2c_get_last_msg());
memcpy(buf, i2c_get_last_msg()->data, i2c_get_last_msg()->all_data_cnt);
i2c_msg_reset();
return OK;
}
return ERROR;
}
-
- Posts: 49
Re: 硬件IIC问题
用的就是这个函数,写入的函数没有问题,读取的函数一到这个地址就不对
-
- Posts: 49