作者| koda.xu、An、Peng.Xiong、user_华仔
Comake社区技术问题汇总,第20230901期,本期将分享i2c相关的问题。
本期问题速览
▪ 应用层动态设置i2c速度
▪ I2c 数据线的波形有一个异常的尖峰
▪ 目前使用两组I2C,测试发现,通信失败后I2C0会发送5次,而I2C1只发送一次
▪ [SSD21x/22X]如何修改I2C速率?
▪ 如何修改kernel 下I2C速率?
▪ i2c_read_write工具是否可以设置NO STOP格式的i2c?
▪ i2c设备地址什么时候包含读写位,什么时候不包含读写位?
▪ i2c写设备数据正常,读设备数据全为F
▪ i2c如何开关dma?
▪ 【I2C】Uboot阶段如何根据实际硬件连接切换Padmux?
Q1:用户使用过程中可能需要支持多种不同速率的i2c从设备,如何实现在用户层动态设置i2c总线的clk?
A1:适用于SSD22X。用户层来设置i2c clk有下面两种方式:
1. 通过ioctl方式来设置。需要i2c原生驱动这一层提供支持,当前kernel版本的原生驱动并没有提供支持设置i2c clk的命令和接口。
2. 修改sigma平台i2c驱动,提供设置i2c clk的接口。
当前我们选择在sigma的i2c驱动这一层做修改,添加“speed”属性节点,支持echo方式修改和以文件方式打开修改。相关修改如下:
20230810_support_set_i2c_speed.rar
当前i2c支持clk:
添加speed节点,支持动态设置i2c clk,设置方法如下。
查看i2c clk信息:
设置i2c clk,共0~9十个档位,分别对应i2c支持的十个档位的clk:
注意,主控一般是预设好i2c总线的频率,然后在和外设通讯过程中保持频率不变。应用层需要保证在设备工作前设定好总线频率,在设备工作过程中不会去修改i2c总线频率。
Q2:I2c 数据线的波形有一个异常的尖峰
A2:目前释放sda是i2c硬件的行为,硬件ip 在第八个clk 结束就释放sda了,所以导致了这个尖峰。参照I2C标准,clk为低的时候.这个尖峰不影响使用。
Q3:目前使用两组I2C,测试发现,通信失败后I2C0会发送5次,而I2C1只发送一次
如您在开发的过程中遇到i2c相关问题,或您需要技术支持、选型支持、商务支持,欢迎进入Comake社区开发论坛发帖咨询,社区技术工程师和运营人员将会及时响应您的诉求。
往期回顾
周五见| SSD21X/22X相关问题讲解
周五见| SSD22X相关问题讲解
周五见| SSD20X相关问题讲解
周五见| IQ与PQ相关问题讲解
周五见| mipi相关问题讲解
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买