LM3S2B93 I2C 模块1 作为主机通讯



我使用LM3S2B93 I2C 模块1 作为主机,使用中断的方式。在连续通讯时,在判断I2C状态时I2CMasterBusBusy(I2C1M_BASE),当总线忙时,发现SDA为低,此时  I2CMasterControl(I2C1M_BASE, I2C_MASTER_CMD_BURST_SEND_ERROR_STOP);  总线没有响应。不知道什么地方没有注意到。

谢谢!

  • 不知道你的从机接的是什么?是不是没有ACK?SDA为低时,SCL的电平呢?

    建议你用示波器抓个图传上来。

  • 我现在的想法是总线出现错误了,要恢复总线,该做怎么样的操作!

  • 你的问题没说得清楚,

    (1)总线是否已经外挂了上拉电阻?

    (2)I2C的从设备是什么IC?

    (3)你怀疑的总线错误是主机的总线出错还是从机的总线出错?如果是主机的出错,可以复位I2C模块,重新初始化,如果是从机总线出错,则需要找找从机IC的规格书,看看是否有复位I2C总线的功能(例:主机发送特定的数据过去)

    (4)最好拿示波器或逻辑分析仪来看一下波形,这样是最快的,马上就可以知道是主机出了问题还是从机出了问题