IIC时序问题的解决方法

描述

最近硬件测试工程师反馈一个BUG,和IIC的时序有关,这个BUG目前没有带来使用方面的影响,但是不符合规范,要求整改。我们使用的单片机是cortex-m3内核的芯片,美信公司生产,使用此芯片读取电容屏的坐标数据。目前电容屏都是自带芯片的设计,芯片检测到触摸后产生一个GPIO中断,单片机接收到中断后读取电容屏IC的坐标数据,使用比较简单。

由于此款单片机手册没有给出IIC时序图,硬件测试工程师把IIC的通用规范作为标准进行时序测试,认为以下两个数据指标不达标,此数据符合IIC快速模式(最高可达400kHz)标准,但是不符合标准模式(最高100kHz)标准。这两个时间参数只限制了最小值,是为了让速率慢的IIC设备能够正确的接收起始和停止信号,因为速率慢的器件反应慢。

tHD_STA = 2.5us(标准是4us)

tSU_STO = 2.6us(标准是4us)

内核

 

内核

 

内核

 

内核

我们单片机操纵IIC接口的频率是100kHz,测试人员认为其属于标准模式,于是按照标准模式判定是否合格。因为此款产品是量产产品,并无市场反馈有实际问题,于是本着尽量不改动的原则和人家商讨,100KHz正好是界限,也可以认为是快速模式,可以按照快速模式标准判断,而且软件操纵IIC并非GPIO模式方式,使用了硬件IIC接口,这两个时间参数不可控,都是硬件行为,讨论了半天,结果碰了一鼻子灰,被人家的执着打败了。解决办法只有一个就是提高速率,让它满足快速模式标准。以下是速率提高至200kHz的测量结果,满足了要求。

tHD_STA = 1.2us

tSU_STO = 1.3us

内核

 

内核

软件上改速率很好改,无非是100改为200,换个数字而已,但是其它工作量比较大,因为是量产产品,而且这款屏幕有替代料,速率提高了,替代料也要测量是否工作正常,而且不能验证一台就拉倒了。这个问题真的有必要修改吗?个人认为完全没有必要,如果处于研发中的产品改了就改了,量产的产品完全没有必要,而且有未知风险,有时候是没有办法的事情。

解决这个问题的过程中,一直有个疑问,如果单片机的速率配置为100kHz以下,能否满足标准速率标准呢?示波器抓了几个速率的时间参数如下:

90kHz,不符合标准速率标准。

tHD_STA = 2.7us

tSU_STO = 2.9us

内核

 

内核

70kHz,不符合标准速率标准。

tHD_STA = 3.5us

tSU_STO = 3.7us

内核

 

内核

60kHz,符合标准速率标准。

tHD_STA = 8.3us

tSU_STO = 9.4us

内核

 

内核

从测量结果来看,这两个时间参数是随着速率降低不断增大的,在70kHz-100kHz区间内,不满足标准速率标准。所以说这款单片机的IIC接口还是有瑕疵的,如果某个标准速率的IIC器件工作在这个区间内,有可能对START和STOP信号识别错误,导致问题,当然出现这种情况的概率很小。就算出现了,只要降低速率就能解决。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分