Page 1 of 2

【已解决】硬件IIC问题

Posted: 2023年 Apr 17日 10:17
by 15179276401

硬件IIC写数据没有问题,读数据在发送设备地址的时候波形明显不对,没有发数据,请问是为什么呢


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 10:19
by 15179276401

发送设备地址的波形如图


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 10:25
by NICE

麻烦提供所使用的芯片平台和sdk版本。


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 10:27
by 15179276401

版本是ble_3435_sdk_ext_39_0F0E 用的是BK3431Q芯片


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 10:39
by 15179276401

写错了,出问题的是要读取的地址,设备地址还能正常发送


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 13:49
by 15179276401
NICE 2023年 Apr 17日 10:25

麻烦提供所使用的芯片平台和sdk版本。

请问有结果吗


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 14:56
by TripleJay

i2c_read((UINT8_T)dev_addr, ((UINT8_T *)data)[0], &((UINT8_T *)data)[1], size-1);
直接调用的原厂的读取没有问题啊


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 14:57
by TripleJay

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;

}


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 14:59
by 15179276401

用的就是这个函数,写入的函数没有问题,读取的函数一到这个地址就不对


Re: 硬件IIC问题

Posted: 2023年 Apr 17日 15:06
by 15179276401

这是使用的函数和波形,是不是进入中断发送数据太晚了,为什么呢