tag 标签: gio

相关博文
  • 热度 16
    2012-10-22 16:59
    1678 次阅读|
    1 个评论
    GIO 内部下拉带来的问题 问题和测试                 在某产品中,一颗 CMOS sensor 的复位信号 CMOS_RST 和休眠信号 CMOS_STB 分别使用了 1.5K 电阻上拉,并且也分别连接到了 CPU ( TI 的 DM355 )的两个 GPIO 上。 由于发现了 sensor 的 CMOS_RST 和 CMOS_STB 信号一直处于不可控状态(经软件检测确认是管脚分配错误),仅靠 1.5K 上拉电阻使其维持在大约 2.8V 的高电平状态(貌似不太影响整个 sensor 的一般工作,正常高电平应该是 3.3V )。因为产品有一些问题存在,在查错过程中找到了这两个异常 GPIO ,后文是对其的一些测试和研究。                 在 CMOS_RST 和 CMOS_STB 信号的 1.5K 上拉电阻不变的情况下,做了一些测试,发现 CPU 控制的 GIO=0 无法将实际的输出拉到低电平。对 CMOS_RST 信号做了一些测试,如表 1 所示。 表 1 测试条件 CPU 控制 GIO=1 CPU 控制 GIO=0 空载, R=NC 3.28V 0V 空载, R=1.5K (外部上拉) 3.28V 2.65V 空载, R=10K (外部上拉) 3.28V 1.92V 负载, R=NC 3.28V 0V 负载, R=10K (外部上拉) 3.28V 1.90V                   从表 1 的测试中发现,无论是上拉 1.5K 还是 10K 都无法在 GIO 输出低电平时使 CMOS_RST 的实际电压达到 0.8V 以下。   原因分析                 查看 CPU 的 datasheet ,如图 1 所示。用于连接 CMOS_RST 和 CMOS_STB 信号的 GIO100 和 GIO83 内部有下拉电阻的设置,因此前面测试到外接 1.5K 或 10K 上拉电阻的低电平无法拉“低”的现象就可以解释了。 图 1 此外,在 DM355 的 datasheet 并没有找到任何更多的信息,因此在 TI 官网一阵还找,终于发现了一些相关线索。在 TI 另一颗 CPU 中有关于 GIO 内部上下拉的比较详细的资料。 http://www.ti.com.cn/cn/lit/ds/sprs660e/sprs660e.pdf page66                 这里不仅比较详细的说明了 TI 的 CPU 内部会有 PD/PU ,也提到了设计者如何考虑外部 PD/PU 的使用,主要是一些如配置管脚或特殊应用的管脚,需要有一个较明确的状态。而对于内部的 PD/PU ,虽然也没有太明确的说明,但特权同学找到了相关配置 PD/PU 的选择寄存器,如图 2 所示是可配置的。不过,对于这个案例中使用的 DM355 ,找遍了寄存器手册,还是没有任何“可编程”或 PU/PD 可设置的相关寄存器。因此,只能怪咱运气不好,惹不起咋还躲不起吗,解决办法有一个, so easy —— 图 2   解决策略                 将连接到有 PD 的两个 GIO 信号外部的上拉电阻删除,问题解决。一个很细节的设计 case ,但它却是很可能启发一些大问题,所以望大家引以为戒。