在使用GD的I2C时,按照官方的例程进行修改,在修改的过程中,发现对于主机地址和从机从机地址、双从机地址模式的介绍很少,容易让人产生疑惑,特地做个
本机地址
在使用I2C时,一般调用以下函数进行I2C模式以及地址的配置
i2c_mode_addr_config(uint32_t i2c_periph,uint32_t mode, uint32_t addformat,uint32_t addr)
其中形参addr最终赋值给I2C_SADDR0_ADDRESS,至于I2C_SADDR0_ADDRESS是什么并未有相关文档进行详细的描述,只说了是从机地址
实际上,I2C_SADDR0_ADDRESS是代表工作在从机模式下的本机地址,即在做为主机使用时其实并没有作用。
例程中,这个addr形参给的与I2C发送的从机设备地址是一致的,都是0xA0,这个容易让人误以为是配置从机地址的地方,实际上从机地址并不是在这里进行配置,而是在通信过程中发送的。
I2C初始化配置例程(EEPROM_BLOCK0_ADDRESS和I2C0_SLAVE_ADDRESS7都是0xA0):
从机地址
这里说的从机地址是本机作为主机时,需要查询或通信的从机模块的地址。该地址是在通信过程中发送的数据信息。如下图:
双地址模式
可以实现从机模式下,同时响应两个地址的功能。