全志平台A40I : I2C通讯问题调试笔记

简介: 全志平台A40I : I2C通讯问题调试笔记

在全志平台上进行I2C调试时,我们可能会遇到各种问题。以下是我在调试过程中的一些笔记和经验分享,希望对你有所帮助。

在全志平台上使用I2C时,需要注意以下几点:

1. I2C工具的移植。

在全志平台上,默认情况下,并没有提供i2cdetect等工具,需要自己移植。移植的步骤如下:

  • 下载i2c-tools源码包,并解压。
  • 放到android external目录 , 执行 mmm external/i2c-tools-4.2/。
  • 什么 你告诉你是linux系统 , 那就改下makefile 做交叉编译就可以拿到这些文件了。

 

2. I2C节点的配置。

       在全志平台上,每个I2C控制器都有一个对应的节点,如i2c0i2c1i2c2等。每个节点都有一个属性twi_id,用来指定该节点使用哪个I2C控制器。例如,如果twi_id = <3>,则该节点使用i2c3控制器。此外,每个节点还需要配置其所连接的从设备的地址和驱动名,如gt9xx@5d等。这些配置信息可以写在设备树(DTS)文件或者系统配置(sys_config)文件中。如果配置正确,那么在系统启动后,就可以在/sys/class/i2c-adapter/i2c-3/3-005d等目录下看到相应的设备文件。

3. I2C功能的复用。

       由于全志平台的引脚有限,很多引脚都有多种功能,需要通过复用(muxing)来选择。例如,PI0和PI1引脚可以作为I2C3的SCL和SDA信号线,也可以作为普通GPIO。要想使用I2C3功能,就需要将PI0和PI1引脚的功能设置为3(即TWI3)。这个功能设置可以在DTS文件或者sys_config文件中指定,也可以通过修改内核参数来实现。例如,在/proc/sys/debug/sunxi_pinctrl目录下有一个文件function,可以用来读取或者修改引脚的功能。如果想将PI0引脚的功能设置为3(即TWI3),可以执行以下命令:

echo PI0 3 > function

如果想查看PI0引脚的当前功能,可以执行以下命令:

如果输出结果是:

130|a40-p1:/ # mount -t debugfs debug /proc/sys/debug # 挂载 debugfs 文件系统
130|a40-p1:/ # cd /proc/sys/debug/sunxi_pinctrl       # 进入全志的引脚控制目录
130|a40-p1:/proc/sys/debug/sunxi_pinctrl # mount -t debugfs debug /proc/sys/debug
130|a40-p1:/proc/sys/debug/sunxi_pinctrl # cat sunxi_pin_configure
pin[PI1] funciton: 3
pin[PI1] data: 1
pin[PI1] dlevel: 1
pin[PI1] pull: 0
 
a40-p1:/proc/sys/debug/sunxi_pinctrl # cat sunxi_pin_configure
pin[PI0] funciton: 1
pin[PI0] data: 0
pin[PI0] dlevel: 1
pin[PI0] pull: 0
a40-p1:/proc/sys/debug/sunxi_pinctrl # echo PI0 3 > function
a40-p1:/proc/sys/debug/sunxi_pinctrl # cat sunxi_pin_configure
pin[PI0] funciton: 3
pin[PI0] data: 0
pin[PI0] dlevel: 1
pin[PI0] pull: 0

那么说明PI0引脚已经设置为TWI3功能。

4. I2C设备的检测。

如果想要测试I2C设备是否正常工作,可以使用一些工具来进行检测。例如,在Linux系统中,有一个工具叫做i2cdetect,它可以扫描指定的I2C总线上的所有从设备地址,并显示出来。例如,如果想要扫描i2c3总线上的所有从设备地址,可以执行以下命令:

i2cdetect -ya 3

如果输出结果类似于: 如果是UU说明被占用 , 如果是比如5d , 说明检测到 但是没用driver用。

130|xxx-p1:/proc/sys/debug/sunxi_pinctrl # i2cdetect -ya 3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

如果输出这个内容

1|a40-p1:/ # i2cdetect -y 1
i2cdetect -y 1
Error: Could not open file `/dev/i2c-1' or `/dev/i2c/1': No such file or directory
1|a40-p1:/ # i2cdetect -y 2
i2cdetect -y 2
Error: Could not open file `/dev/i2c-2' or `/dev/i2c/2': No such file or directory
1|a40-p1:/ # i2cdetect -y 3
i2cdetect -y 3
Error: Could not open file `/dev/i2c-3' or `/dev/i2c/3': No such file or directory

提示无法打开/dev/i2c-1/dev/i2c/1文件。这可能是因为我们的系统中没有I2C总线1,或者I2C总线1没有正确地配置。

linux/drivers/i2c/Makefile 有个CONFIG_I2C_CHARDEV=y宏需要打开。

以上没问题那么说明i2c3总线上有一个从设备,其地址是0x5d,即gt9xx触摸屏。如果输出结果中没有显示任何从设备地址,那么可能有以下几种原因:

  • I2C节点的配置错误。例如,twi_id指定的I2C控制器和实际连接的不一致,或者从设备的地址和驱动名写错了。
  • I2C功能的复用错误。例如,I2C信号线所对应的引脚的功能没有设置为TWI,而是设置为了其他功能,导致信号无法传输。
  • I2C硬件的连接错误。例如,I2C信号线没有正确地连接到从设备的SCL和SDA引脚上,或者信号线有断路、短路等问题,导致信号干扰或者丢失。

如果遇到这些问题,可以通过检查DTS文件、sys_config文件、内核参数、引脚功能、硬件连接等方式来排查和解决。

以上就是我对全志I2C调试笔记的一些补充和注释,希望对你有帮助。如果你还有其他问题欢迎留言。

相关文章
|
6月前
stm32f407探索者开发板(十三)——JLINK在线调试_软件调试_方法与技巧
stm32f407探索者开发板(十三)——JLINK在线调试_软件调试_方法与技巧
374 0
|
7月前
|
物联网 数据处理 数据安全/隐私保护
程序与技术分享:BL602&BL604综合项目2:dolphin蓝牙跳蛋
程序与技术分享:BL602&BL604综合项目2:dolphin蓝牙跳蛋
|
8月前
|
Android开发 数据安全/隐私保护 芯片
全志平台A40I : TWI2通讯验证
全志平台A40I : TWI2通讯验证
72 2
|
Linux
海思3559万能平台搭建:串口编程
海思3559万能平台搭建:串口编程
325 0
海思3559万能平台搭建:串口编程
|
测试技术 网络安全 数据安全/隐私保护
树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
|
芯片 Windows
树莓派开发笔记(十三):入手研华ADVANTECH工控树莓派UNO-220套件(二):安装rtc等驱动
树莓派开发笔记(十三):入手研华ADVANTECH工控树莓派UNO-220套件(二):安装rtc等驱动
树莓派开发笔记(十三):入手研华ADVANTECH工控树莓派UNO-220套件(二):安装rtc等驱动
|
IDE 物联网 C#
ServerSuperIO Designer IDE 发布,打造物联网通讯大脑,随心而联。附:C#驱动源代码。
1.概况       注:ServerSuperIO Designer IDE 同行业网友随便使用,不涉及到软件使用限制的问题。      从2015年到现在的将近两年的时间,一直在开发、完善ServerSuperIO(SSIO)的基础框架,包括:多通讯机制、稳定性、扩展性等,没有太多时间把工作放在UI的设计与开发上,从二次开发者角度来讲易用性是短板。
1490 0