通过官方底板i2c接口所接出的第三方扩展板上的20地址总是显示UU

固件类型:官方提供的固件
固件文件名称:debian 10
固件下载地址:http://noexists.com
Log日志:none.zip

本帖最后由 music1913 于 2022-8-2 15:38 编辑

因 rv1126 官方底板默认仅引出2个 gpio 接口,但我需要4个,通过早期的交流,我被告之可以通过编译内核,更改一组 uart 接口为 gpio 接口的方法来满足需求 ,详细讨论可见原帖子:https://dev.t-firefly.com/thread-122181-1-1.html

但发现通过此方法扩展出来的额外 gpio 口与底板原生的2个 gpio 物理距离过远,不利于接线。同时产品未来也可能需要更多的 gpio 口,仍可能满足不了。

因我对硬件了解非常有限,某第三方硬件设计方在听取了我的需求后,帮我设计了一块扩展板,扩展板上设计了多个 gpio 口,以供外部 gpio 传感器接入, 同时此扩展板接入官方底板的 i2c 接口并通讯,然后我方应用程序通过发送 i2c 通讯消息至官方底板,以间接来控制扩展板上的 gpio 口,并最终行使控制外部传感器的功能。

在接好扩展板与官方底板的 i2c 连线后,我运行 i2cdetect 以及其它几个命令得到以下结果:

sudo i2cdetect -y -r 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77

lsmod
Module                  Size  Used by
galcore               319488  0

cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

应注意的是:其中 68,77 是扩展板上的加速度、气压计传感器(它俩本身也是 i2c 接口的),它俩均已经可正常工作,即通过我的应用程序都可以正常的去读数和操。

但可以见到,位于扩展板上 20x 地址上的 gpio 口,则一直显示 UU,通过大概了解,它代表了此地址被占用,所以我的应用程序还无法操作此 gpio 口,请问这个问题如何处理呢?

此为扩展板的一些参数:

tchip_askquestions
none.zip (154 Bytes)

你要用 I2C 的脚就需要再内核把 对应的 i2c 总线关掉啊 ,不然肯定无法使用 gpio 功能。

本帖最后由 music1913 于 2022-8-2 15:38 编辑

板蓝根 发表于 2022-8-2 14:38
你要用 I2C 的脚就需要再内核把 对应的 i2c 总线关掉啊 ,不然肯定无法使用 gpio 功能。

不太理解您的意思。
对于rv1126底板来说,我的扩展板是一个 i2c 设备,是吗?不过同时扩展板上又可以挂载多个 gpio 接口,这样的需求需要改内核吗?

明白了,我以为你是想用 i2c 复用成 gpio。你的意思是你接了这颗 i2c 扩展 gpio 芯片,那么你在内核上添加了对应驱动了吗?设备树添加对应节点了吗?

本帖最后由 music1913 于 2022-8-2 16:18 编辑

板蓝根 发表于 2022-8-2 14:54
明白了,我以为你是想用 i2c 复用成 gpio。你的意思是你接了这颗 i2c 扩展 gpio 芯片,那么你在内核上添加 …

搜索了一把,好像没太找到 TCA9534 相关驱动的信息,仅看到这样一个文件:https://github.com/torvalds/linu … gpio/gpio-pca953x.c 还请帮忙提供一些指点哦?
还以后续的“到内核添加对应驱动”,“设备权添加节点”,请问这些步骤有文档可供参考吗?
谢谢!

你可以参考一下我们的适配的另一款扩展 gpio 芯片来配置 PCA9555。但是你没有从事过内核工作的话很难搞,这些都是 BSP 工程师的工作,如果贵公司没有相关工程司还是请走商务流程,或者看看第三方能否适配呢。