- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
I2C电平转换电路调试测试记录
本次调试测试的硬件系统信息如下:
CPU部分I2C接口1.8V,地磁传感器I2C接口为2.9V
电路中的MOS管使用
ONSEMI的双N-MOS管NTJD4401NT1G和
ROHM的双N-MOS管UM6K1NTN
同一块电路板测试波形见下图
使用ONSEMI的NTJD4401NT1G,SDA信号波形(地磁侧和CPU侧)
SCK信号(CPU侧和地磁侧)
使用ROHM的UM6K1NTN,SDA信号(地磁侧和CPU侧)
使用ROHM的UM6K1NTN,SCK信号(地磁侧和CPU侧) [p]
分析:
两个不同的管子,读器件ID都正常,说明I2C通信已经没有什么问题,但是SDA波形差异较大,ROHM的已经严重变形,存在不确定性,实际测试中也有发现地磁有时工作不正常。
分析第3张波形图,地磁传感器侧的SDA是有接近0V输出的,
根据I2C协议,正常工作的话,SDA的最后一位,也就是第9位的应答信号是有slave设备响应的,就是说slave侧可以把SDA拉低,只是CPU那侧不能将SDA拉低。猜测可能是CPU部分的I2C_SDA脚驱动电流限制,导致CPU侧的电平拉不下来,更改slave侧SDA的上拉电阻,从2.2K改成10k,波形正常(图片省略);查看CPU规格书,默认I2C驱动能力1mA,至于SCK正常,确认是软件在其它部分有所设置;
而ONSEMI管子正常,应该是Rds(on)比ROHM的小很多导致,这可以从它们的规格书中查到
更改措施:
1.软件修改CPUI2C驱动电流,从1mA改为4mA;
2.修改slave侧的上拉电阻,改动比较有限,因为上拉电阻可能会影响正常通信;
采取方案一进行试验
2010-9-25
采取上面提到的方案一,跟踪软件修改驱动电流进行试验
使用默认的1mA,ROHM的UM6K1NTN,SDA波形如下:
修改驱动电流为4mA后,SDA波形:
到此,可以看出I2C调试时,关于驱动电流,软硬件上面都要仔细确认。
END