你好对话框,
我正在使用DA14585处理传感器的I2C接口。由于没有通用I2C示例,我参考I2C_EEPROM示例。实际上,从我的传感器,我想从输出寄存器读取一个字节的数据。为此,我已经定义了#define i2c_address_size i2c_eeprom.h文件中的i2c_1byte_addr。但是在I2C_EEPROM.c中没有描述此命令。
但在I2C_EEPROM示例中,由于它使用的是2bytes-addr,因此在i2c_eeprom.c用交换机盒中定义了描述
静态void i2c_send_address(UINT32_T地址)
{
切换(MEM_ADDRESS_SIZE)
{
案例I2C_2BYTES_ADDR:
setword16(i2c_enable_reg,0x0);
// setword16(i2c_tar_reg,i2c_dev_address |((地址和0x10000)>> 16));//设置从设备地址
setword16(i2c_tar_reg,i2c_dev_address);//设置从设备地址
setword16(i2c_enable_reg,0x1);
wait_until_no_master_actity();//等到没有主活动
send_i2c_command((地址>> 8)&0xff);//设置地址MSB,写访问
休息;
案例i2c_3bytes_addr:
send_i2c_command((地址>> 16)&0xff);//设置地址MSB,写访问
send_i2c_command((地址>> 8)&0xff);//设置地址MSB,写访问
休息;
}
send_i2c_command(地址&0xff);//设置地址LSB,写访问
}
如果我在案例控制器中使用1byte_addr,则默认或者我们需要在i2c_eeprom.c中更改代码。
谢谢
D.Vishnu.
嗨Vishnuatdialog,
i2c_1byte_addr不是一个命令,它只是一个#define,当您在总线上发送地址时,它将指示数量字节发送,如果您的传感器需要1个字节地址,则应设置为I2C_1BYTE_ADDR。I2C_SEND_ADDRESS()函数中的切换盒取决于MEM_ADDRESS_SIZE变量的正确案例。此变量在I2C_EEPROM_INIT()函数中设置,并从I2C_ADDRESS_SIZE定义中获取值,该定义在USER_PERIPH_SETUP.h文件中定义。因此,为了更改,您必须将I2C_ADDRESS_SIZE定义为I2C_1BYTE_ADDR,而不是I2C_2BYTES_ADDR,这是示例的默认值。
谢谢mt_dialog.