全志平台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调试笔记的一些补充和注释,希望对你有帮助。如果你还有其他问题欢迎留言。

相关文章
|
安全 物联网 开发者
开放下载!《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》
弄潮新基建,玩转智能生活!《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》电子书现已开放下载,立即加入书单吧!
16961 0
开放下载!《无需从0开发  平头哥教你1天上手蓝牙Mesh应用解决方案》
|
6月前
|
物联网 数据处理 数据安全/隐私保护
程序与技术分享:BL602&BL604综合项目2:dolphin蓝牙跳蛋
程序与技术分享:BL602&BL604综合项目2:dolphin蓝牙跳蛋
|
7月前
|
Android开发 数据安全/隐私保护 芯片
全志平台A40I : TWI2通讯验证
全志平台A40I : TWI2通讯验证
58 2
|
存储 固态存储 Ubuntu
基于飞腾芯片的设计与调试入门指导
基于飞腾芯片的设计与调试入门指导
638 0
|
Linux 开发工具
麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo
国产麒麟系统开发上,使用宇视摄像头,本篇使用宇视官网的提供的SDK,搭建基础的国产系统上宇视摄像头SDK开发化境Demo。
麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo
|
小程序 物联网 机器人
基于STM32+ESP8266设计物联网产品(重点:支持微信小程序一键配网连接腾讯云平台)
基于STM32+ESP8266设计物联网产品(重点:支持微信小程序一键配网连接腾讯云平台)
1480 0
基于STM32+ESP8266设计物联网产品(重点:支持微信小程序一键配网连接腾讯云平台)
|
数据采集 API C#
“Unity开发也能跟硬件联动”--快来看看吧(串口通信)
简单的串口通信工具,基于C#应用程序WinFrom实现 串口介绍 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。(至于再详细,自己百度) 串口应用 工业领域使用较多,比如:数据采集,设备控制等等,好多都是用串口通信来实现!你要是细心的话,你会发现,目前家用国网智能电能表就具备RS485通信总线(串行总线的一种)与RS232可以相互转化(当然一般,非专业的谁也不会闲的蛋疼,趴电表上瞎看,最多也就看看走了多少度电)
|
XML 监控 数据可视化
组态软件厂家一览
组态软件厂家一览
706 0
|
人工智能 物联网
一次开发、多端分发,阿里巴巴发布AliOS车载小程序
4月16日上海国际车展首日,阿里巴巴小程序有了新动态:正在研发基于AliOS的车载小程序。
15114 0
|
Web App开发 人工智能 Java
4月16日云栖精选夜读 | 一次开发、多端分发,阿里巴巴发布AliOS车载小程序
4月16日上海国际车展首日,阿里巴巴小程序有了新动态:正在研发基于AliOS的车载小程序。
3339 0