• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

使用msp430模拟IIC外挂两个设备,通讯不正常?

hangtao 2018-06-23 浏览量:994
同时挂载了两个设备 一个是存储器 一个是ELMOS 的USB 快充IC 跟USB 快充IC通信时ACK 拉不低 请问这是什么原因造成的?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以考虑是电压和驱动能力的问题,快充IC和另一个IIC设备的电压是否稳定值得怀疑,如果另一个IIC设备的电压比单片机和快充IC的引脚电平还要高或者都要低的话,那有可能会影响电平读取。

    上述情况下,并不只是ACK无法拉高这么简单,而是所有电平信息都无法读取。

    如果楼主确定只有ack没有读到的话,建议看看时序和程序逻辑,如果传入的时序不对,从机是不会返回ACK信号的(也即从机返回UACK信号)。建议用逻辑分析仪分析一下。

    • 发布于 2018-06-24
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • I2C电路中没有ACK引脚,只有SCL和SDA,ACK是主机或者从机对发过来的信息进行的响应,只有【响应】或者【不响应】,所以不解楼主说的拉低ACK是什么意思。如果是判断ACK的话,一般是在发完一个字节数据之后进行的,楼主可以上代码让大家来分析一下。

    • 发布于2018-06-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 检测一下外部电路是不是开漏,其次查找一下手册看看对iic协议的要求,许多芯片在iic通信过程并不发ack,其次检查scl是否在芯片支持的频率范围,查看一下从机地址设置是否正确。
    • 发布于2018-06-24
    • 举报
    • 评论 0
    • 0
    • 0

  • ACK信号未必在任何芯片使用都需要的,可以试试不管ack。单独的试每一个设备,先确保每个单独的都能用。
    • 发布于2018-06-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果通信对象本身不支持使用ACK,那就无法拉低
    • 发布于2018-06-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 先单独试每个设备,至于ACK信号,如果设备不需要ACK信号,那就拉不低。
    • 发布于2018-06-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 一可能是驱动不够,把上拉电阻变小一些。

    二看看程序里的地址之类的是不是写错了

    • 发布于2018-06-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 是挂在同一个IIC总线 上,还是两条不同的IIC总线上的呢

    IIC的模块方式,要注意到不要被中断打断为好

    • 发布于2018-06-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个很有可能是你的驱动时序有问题或者你的地址重复了,你要仔细检查一下的你的从机通讯地址
    • 发布于2018-06-29
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

使用msp430模拟IIC外挂两个设备,通讯不正常?