MT6739 Android 8.1 I2C口电平转换低电平无法到0V的解决办法

MT6739 Android 8.1 I2C口电平转换低电平无法到0V的解决办法

项目使用MOS管做I2C的电平转换,I2C有内部上拉电阻,如下图:
在这里插入图片描述
同样的电路在其他平台已经验证过了,到了MT6739这个平台发现,当I2C为master,向salve发送数据时,S1点(蓝色)和D1点(黄色)的低电平如下:
在这里插入图片描述
可以看到S1点没有完全到0V,导致MOS管没有完全导通,所以D1点也没有降为0V;
感觉像是GPIO口内部,低电平时候,先经过一个等效电阻R之后,才到GND,如图:
在这里插入图片描述
为了验证上面的猜测,将电平转换电路的R2电阻,改为47K,减小MOS管的DS电流之后,S1点(蓝色)和D1点(黄色)的低电平如下:
在这里插入图片描述
可以看到此时S1和D1的低电平都接近0V,推测原因,可能是因为,DS的电流减小之后,流过内部等效电阻R的电流减小,R上的压降也减小,S1点电压接近0V,MOS管导通,D1点也可以被拉到接近0V;

猜测内部电阻产生的原因是因为IO口内部有电流限制,当限制的电流比较小的时候,内部等效电阻R的阻值就比较大
在这里插入图片描述
将电平转换电路的R2电阻,恢复为4.7K,然后修改IO口的驱动电流到最大值,下面DRV_CFG寄存器:
在这里插入图片描述
再测S1点(蓝色)和D1点(黄色)的低电平如下:
在这里插入图片描述
可以看到此时S1和D1的低电平都接近0V,放大看如下图:
在这里插入图片描述
但最低还是没有完全到0V,推测原因,可能是因为,增大IO驱动电流之后,内部等效电阻R的阻值确实减小,但是还有一定的阻值;

所以,确实是因为电流限制的原因,导致内部形成等效电阻,哪如何能不限制电流?
询问MTK后,修改如下寄存器:
在这里插入图片描述
EH_CFG寄存器设置为0,GPIO mode,测试如下:
在这里插入图片描述
可以明显看到,低电平几乎是0V,并且低电平下降速率也更快了,和其他平台的表现一致,回头再修改DRV_CFG寄存器,基本上对波形没有什么影响了!

所以,应该是EH_CFG寄存器为1,I2C mode的时候,IO口对电流的限制比较小,导致内部等效电阻R阻值比较大;当EH_CFG寄存器为0,GPIO mode的时候,IO口对电流的限制比较宽,或者几乎没有限制,内部等效电阻R阻值非常小!

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值