做硬件设计,总难以避免的要与各种接口打交道,常用的诸如I2C,UART,SPI,网口。每一种类型的接口,在设计上都会有一些自己的哀求,但是再大略的东西,也有它独特的地方,本日要讲的是I2C的时序延展。
网上搜索一下I2C的资料,基本每一篇文章,每一个文档都会见告你,I2C线路在硬件上须要做上拉处理,其他的没有特须要求,然后软件上时序跟下图同等即可知足你的运用处景。本来我们也是这样以为的。
最近我们用到一颗TI的芯片,芯片选用I2C作为掌握芯片,读取或者写入用户数据,调试的过程中创造用TI的烧录器,每次都能成功,但是改换成我们的主控来做掌握,读取寄存器就会涌现问题。
首先工程师疑惑硬件问题,由于这个I2C的程序在其余一个程序上做了验证,可以正常掌握从设备,于是拆掉其他的I2C设备,只留着这一颗芯片进行测试。创造还是一样的情形。我们拿逻辑剖析仪抓波形,创造通信每隔一次都会通信失落败一次,IO时序不对应。于是确定是软件逻辑问题。软件工程师验证了TI其余一个型号的芯片,创造数据读取写入都是正常,这个问题就这样陷入了僵局。
项目工程师决定重新去看一下芯片资料,这一看创造一个没有被大家把稳的点:Clock Stretching。规格书是这样描述的:
网上查了一些资料,翻译过来便是在从机休眠的时候,从机会将SCL连续下拉一段韶光,这个时候主机要判断SCL是否为高,才能连续传输数据,等从机准备好之后,就会开释SCL的掌握,这个时候,就可以开始愉快的通信了。
后面反过来去查询了一下主芯片的设置,创造也有时钟延展的配置,打开这个功能之后,系统就可以正常读写该芯片了。以是下次碰着I2C通信不正常的时候,记得核对一下是不是这个问题导致的。
文|原创:点点校订:上尉Shonway更多精彩,专注IT技能,请关注
微信 | 微博:搜"卧龙会IT技能"
------本文由卧龙会自媒体小组成员点点原创,请勿抄袭,转载,转载联系卧龙会进行授权,否则深究法律任务