DA14585 I2C接口与外部传感器

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
2个帖子/ 0新
最后一篇
vishnuatdialog
离线
最后一次露面:8个月5天前
加入:2017-07-25 07:44
DA14585 I2C接口与外部传感器

你好对话框,
我正在使用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.

设备:
mt_dialog.
离线
最后一次露面:1个月3周前
职员
加入:2015-06-08 11:34
嗨Vishnuatdialog,

嗨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.