首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux I2C通信问题

Linux I2C通信问题
EN

Stack Overflow用户
提问于 2019-01-08 21:04:15
回答 1查看 590关注 1票数 1

我正在开发一个基于linux-imx kernel 4.9.11 (http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git/?h=imx_4.9.11_1.0.0_ga)的iMX6Q处理器的定制板。但是,当我向其中一个外设发送I2C消息时(我在i2c-2总线上有4个从机,处理器是唯一的主机),控制器会出现以下错误:

代码语言:javascript
运行
复制
[ 82.972843] i2c i2c-2: ioctl, cmd=0x703, arg=0x5c
[ 82.972854] i2c i2c-2: ioctl, cmd=0x720, arg=0x7ec06bbc
[ 82.972865] i2c i2c-2: master_xfer[0] R, addr=0x5c, len=1
[ 82.972871] i2c i2c-2: <i2c_imx_xfer>
[ 82.972877] i2c i2c-2: <i2c_imx_start>
[ 82.973053] i2c i2c-2: <i2c_imx_bus_busy>
[ 83.482804] i2c i2c-2: <i2c_imx_bus_busy> I2C bus is busy
[ 83.482810] i2c i2c-2: Trying i2c bus recovery
[ 83.482854] i2c i2c-2: <i2c_imx_start>
[ 83.483029] i2c i2c-2: <i2c_imx_bus_busy>
[ 83.992804] i2c i2c-2: <i2c_imx_bus_busy> I2C bus is busy
[ 83.992816] i2c i2c-2: <i2c_imx_xfer> exit with: error: -110

用示波器看一眼,我可以看到总线在空闲状态时是高电平(正如预期的那样)。然而,当我尝试开始传输时,主机在总线上设置启动条件,然后,总线保持低电平( SDA和SCL),直到传输超时,并且驱动程序警告总线正忙并出现超时错误(但实际上并非如此!)。我知道这不是一个硬件问题/bug,因为我可以通过U-Boot (以及更旧的内核版本,例如4.1.15)通过I2C进行通信。

我已经检查了I2C内核配置,看起来没问题。此外,I2C总线控制器已在设备树中正确配置。

PD:默认内核配置(imx_v7_defconfig)不起作用。

谢谢!

干杯,

丹尼尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 21:08:32

这个问题已经消失了。我只是不得不将i2c引脚配置(在设备树中)从0x1b8b0更改为0x4001b8b1...这仍然很奇怪,因为那些位(掩码0xFFFE0000)在iMX.6Q参考手册中被标记为保留,尽管它们看起来不是那么reserved...In添加,完全相同的设备树文件在旧版本的内核上没有问题...

无论在什么情况下,它现在都在按预期工作!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54092447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档