Conversation
| if (msg->flags & RT_I2C_RD) | ||
| { | ||
| xfer.slaveAddress = msg->addr; | ||
| xfer.slaveAddress = msg->addr >> 1; |
There was a problem hiding this comment.
There was a problem hiding this comment.
我看库里面是不是做了处理了?
(addr>>1)<<1=addr
There was a problem hiding this comment.
那其他的mcx的drv_i2c是不是也改一下
好像不止mcx系统是七bit地址,我看lpc系列好像也是,不知道是不是nxp的库i2c的地址都是七bit的
There was a problem hiding this comment.
RTT I2C框架默认输入就是7bit地址,靠 flag 里的 RD 和 WR 区分方向,driver层接收到的 stuct i2c_msg 也是包含7bit地址和flag的。因此接收7bit地址的bsp不需要对地址做处理,反而是需要自行添加R/W bit的bsp(如STM32,ESP32等)在接收到7bit地址的 i2c_msg 时需要左移一位根据 flag 添加R/W bit。
在MCUXpresso驱动中地址也会根据 direction 中的 kI2C_Read / kI2C_Write 左移添加R/W bit,与RTT传入的地址是相符的,因此我认为不需要进行额外右移操作。
Ref:
rt-thread/bsp/stm32/libraries/HAL_Drivers/drivers/drv_hard_i2c.c
Lines 258 to 306 in 8adae07
There was a problem hiding this comment.
RTT I2C框架默认输入就是7bit地址,靠
flag里的RD和WR区分方向,driver层接收到的stuct i2c_msg也是包含7bit地址和flag的。因此接收7bit地址的bsp不需要对地址做处理,反而是需要自行添加R/W bit的bsp(如STM32,ESP32等)在接收到7bit地址的i2c_msg时需要左移一位根据flag添加R/W bit。 在MCUXpresso驱动中地址也会根据direction中的kI2C_Read/kI2C_Write左移添加R/W bit,与RTT传入的地址是相符的,因此我认为不需要进行额外右移操作。Ref:
rt-thread/bsp/stm32/libraries/HAL_Drivers/drivers/drv_hard_i2c.c
Lines 258 to 306 in 8adae07
accept
|
@imi415 大佬帮看看 |
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
i2c的地址为7位
你的解决方案是什么 (what is your solution)
请提供验证的bsp和config (provide the config and bsp)
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up