poppig 发表于 2018-8-6 15:55:55

关于STM32 通过HAL I2C主从机通讯的地址配置

为什么,在软件配置从地址后,打开keil,里面地址变成两倍:L

poppig 发表于 2018-8-6 15:56:42

是不是左移一位给读写位了?:(

发表于 2018-8-6 16:33:02

楼主,I2C硬件的地址占用7位,如下图所示,从代码上来看是直接左移了一位。
/*---------------------------- I2Cx OAR1 Configuration ---------------------*/
/* Configure I2Cx: Own Address1 and addressing mode */
hi2c->Instance->OAR1 = (hi2c->Init.AddressingMode | hi2c->Init.OwnAddress1);

/*---------------------------- I2Cx OAR2 Configuration ---------------------*/
/* Configure I2Cx: Dual mode and Own Address2 */
hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2);

butterflyspring 发表于 2018-8-6 17:36:12

cubeMx的是7位地址,代码是8位地址

huangyanga 发表于 2018-8-6 18:22:48

关键是这样代码还能正常工作不

feixiang20 发表于 2018-8-7 00:04:04

修改这个数值看看结果相差的变化

poppig 发表于 2018-8-7 11:45:56

我两个板子可以正常通讯,但是我是觉得那我在CUBUMX软件里面设置地址就没有异议了:L,有点鸡肋的赶脚

poppig 发表于 2018-8-7 11:54:37

所以硬件I2C的读写位是不能自行设置的,大概明白了:D
页: [1]
查看完整版本: 关于STM32 通过HAL I2C主从机通讯的地址配置