mt6762在连接一些外设时,i2c在低电平会拉不低的情况,最低电平在0.4V左右.这时需要去掉外设的上拉电阻或调整硬件i2c的驱动电流.

修改文件路径:

vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/i2c.c

修改函数:

int i2c_hw_init(void)

1 修改上拉电阻

/* Switch internal resistor */
    /* 0x0:75k 0x1:5k */
    /* 0x2:15k 0x3:1k */
    /*I2C0,1*/
    I2C_SET_REG32(0x10002a00 + 0x70, 0xFF, 0xFF);
    /*I2C2,4*/
    I2C_SET_REG32(0x10002800 + 0xA0, 0xFF, 0xFF);
    /*I2C6*/
    I2C_SET_REG32(0x10002c00 + 0x70, 0xF, 0xF);
    /*I2C3,5*/
    I2C_SET_REG32(0x10002600 + 0xb0, 0xFF, 0xFF);

2修改驱动电流

/* Just for MT6765/MT6762, config driving set EH2,EH1= 2'b01 */
    /* EH: 1, i2c mode;0, GPIO mode */
    /* [EH2,EH1]: 2'b00,0.31;2'b01,0.61;2'b10,1.1;2'b11,1.41 单位为mA*/
    /* [EH,EH2,EH1] = [bit2,bit1,bit0] */
    /*I2C0,1*/
    I2C_SET_REG32((0x10002a00 + 0x20), 0x0FFF, 0x0B6D);
    /*I2C2,4*/
    I2C_SET_REG32((0x10002800 + 0x20), 0x0FFF, 0x0B6D);
    /*I2C6*/
    I2C_SET_REG32((0x10002c00 + 0x20), 0x3F, 0x2D);
    /*I2C3,5*/
    I2C_SET_REG32((0x10002600 + 0x20), 0x0FFF, 0x0B6D);

3我们以i2c4为例,修改其内部上拉电阻与驱动电流看波形有哪些影响.

设置i2c4,DWS i2c4配置为Pull&Push En打勾

(1)上拉电阻为1K,2b'11

/*I2C2,4*/
    I2C_SET_REG32(0x10002800 + 0xA0, 0xFF, 0xFF);

驱动电流为1.1mA,[EH,EH2,EH1] = 2b'110

/*I2C2,4*/ 
    I2C_SET_REG32((0x10002800 + 0x20), 0x0FFF, 0x0B6D);

对应波形如下

可见i2c第九个clk为读取ACK的电平没有完全拉地低.

(2)上拉电阻为1K,2b'11

/*I2C2,4*/
    I2C_SET_REG32(0x10002800 + 0xA0, 0xFF, 0xFF);

驱动电流为1.41mA,[EH,EH2,EH1] = 2b'111

/*I2C2,4*/ 
    I2C_SET_REG32((0x10002800 + 0x20), 0x0FFF, 0x0FFF);

对应波形如下

可见驱动电流增加波形没改善.

(3)上拉电阻为15K,2b'10

/*I2C2,4*/
    I2C_SET_REG32(0x10002800 + 0xA0, 0xFF, 0xAA);

驱动电流为1.41mA,[EH,EH2,EH1] = 2b'111

/*I2C2,4*/ 
    I2C_SET_REG32((0x10002800 + 0x20), 0x0FFF, 0x0FFF);

对应波形如下

可见增大上拉电阻,2c第九个clk为读取ACK的电平完全拉低,但是第9个CLK后高电平建立时间变长.

(4)上拉电阻为75K,2b'00

/*I2C2,4*/
    I2C_SET_REG32(0x10002800 + 0xA0, 0xFF, 0x00);

驱动电流为1.41mA,[EH,EH2,EH1] = 2b'111

/*I2C2,4*/ 
    I2C_SET_REG32((0x10002800 + 0x20), 0x0FFF, 0x0FFF);

对应波形如下

可见上拉电阻越大,第9个CLK后高电平建立时间越长.

4 如果直接把DWS i2c4配置为Pull&Push En打勾去掉

高低电平建立的时间会变长,波形有畸变,如下图

5 总结,

mt6762在连接一些外设时,i2c在低电平会拉不低的情况时,可以尝试从外部更改外部上拉电阻,i2c内部上拉电阻,以及寄存器修改驱动电流三个方面去优化i2c的波形,适配对应外设i2c波形,达到满足i2c数据通行的要求.

mt6762/mt6765平台i2c驱动能力修改与波形优化相关推荐

  1. Android 驱动(15)---如何修改USB驱动能力

    如何修改USB驱动能力 修改或查看USB驱动能力有三种方法:  1.工模菜单 通过"*#*#3646633#*#*"进入工程模式,通过如下菜单可以查看修改USB驱动能力: hard ...

  2. 如何修改USB驱动能力

    Android 驱动(15)---如何修改USB驱动能力 如何修改USB驱动能力 修改或查看USB驱动能力有三种方法:  1.工模菜单 通过"*#*#3646633#*#*"进入工 ...

  3. MTK 平台修改或查看USB驱动能力有三种方法

    MTK 平台修改或查看USB驱动能力有三种方法:  1.工模菜单 通过"*#*#3646633#*#*"进入工程模式,通过如下菜单可以查看修改USB驱动能力: hardware t ...

  4. host速度 mtk usb_[MTK] 如何修改usb驱动能力

    [MTK] 如何修改usb驱动能力 2020-03-5 阅读:2732 [DESCRIPTION] USB驱动能力调节方法: USB眼图测试fail处理方法: [SOLUTION] 1.USB眼图测试 ...

  5. MTK如何修改usb驱动能力

    [DESCRIPTION] USB驱动能力调节方法: USB眼图测试fail处理方法: [SOLUTION] 1.USB眼图测试fail通常需要修改如下两个register调节USB驱动能力: RG_ ...

  6. 【驱动】linux下I2C驱动架构全面分析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  7. linux下I2C驱动架构全面分析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  8. linux I2C 驱动

    原文地址: http://hello2mao.github.io/2015/12/02/Linux_I2C_driver.html 目录 一.LinuxI2C驱动--概述 1.1 写在前面 1.2 I ...

  9. 【正点原子MP157连载】第四十章 Linux I2C驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

最新文章

  1. Python多线程threading用法
  2. PHP 接收 UDP包_PHP早已不是十年前的鸟样!!!
  3. 113 - Power of Cryptography 浮点数 pow()函数
  4. python读取excel画散点图-matplotlib两种画散点图的方式
  5. SQL SERVER CURSOR
  6. unity中如何解决镜头穿透模型?
  7. 在批评数据湖的时候,你有没有想过,它并不是取代数据仓库的
  8. .NET的托管堆中是否可能出现内存泄漏现象
  9. POJ 3666 Making the Grade (DP滚动数组)
  10. 【三石jQuery视频教程】01.图片循环展示
  11. 基于java的密码字典生成
  12. IT服务公司经理专栏:小公司管理(3)
  13. 掌握这个技能,再也不用为面试发愁了
  14. DC综合基础知识学习
  15. 这是我见过描写天津女孩中最真实的
  16. android学习:模拟微博看看界面
  17. python package什么意思_Python模块、包(Package)概念与用法分析
  18. nginx日志[配置解释]
  19. 开发人员项目开发的步骤
  20. 论文笔记MEMC-Net TPAMI

热门文章

  1. 54:第五章:开发admin管理服务:7:人脸入库流程;人脸登录流程;浏览器开启视频调试模式(以便能够在本机的不安全域名的情况下,也能去开启摄像头);
  2. 怎么提升淘宝网店的转化率
  3. 学习这东西确实得稳扎稳打,勿焦勿躁
  4. 鸿蒙渊主线任务,《天下3》更新公告(版本2.0.848)
  5. 利用卷积神经网络实现手写字识别
  6. 【WC2013】糖果公园 树上莫队
  7. 爱博精电亮相四川省节能环保品牌推广全川行——乐山站
  8. 高德地图使用(一)---添加自定义标注和标注事件
  9. bugku 我永远喜欢穹妹
  10. 开源量化框架Catalyst中文教程(3)——双均线策略