最近硬件测试工程师反馈一个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信号识别错误,导致问题,当然出现这种情况的概率很小。就算出现了,只要降低速率就能解决。
-
单片机
+关注
关注
6037文章
44558浏览量
635349 -
内核
+关注
关注
3文章
1372浏览量
40290 -
IIC
+关注
关注
11文章
300浏览量
38338 -
时序
+关注
关注
5文章
387浏览量
37333 -
Cortex-M3
+关注
关注
9文章
270浏览量
59480
发布评论请先 登录
相关推荐
评论