这里有几个潜在的问题:1)您的代码是写成阻塞的,例如,您正在等待开始条件完成。如果您打算等待,就不需要I2C中断——禁用它们以避免问题。2)在ISR内部,您正在使用RMW序列操纵CPU寄存器(IFS1)中的位字段——这是糟糕的形式,在某些情况下可能给您带来麻烦。我建议将其更改为IFS1CLR=_IFS1_I2C1MIF_MASK;3)在第一个字节的ack期间停止意味着从服务器已经NACKED事务(没有响应)——可能是错误的地址或其他错误。
这里有几个潜在的问题:1)您的代码是写成阻塞的,例如,您正在等待开始条件完成。如果您打算等待,就不需要I2C中断——禁用它们以避免问题。2)在ISR内部,您正在使用RMW序列操纵CPU寄存器(IFS1)中的位字段——这是糟糕的形式,在某些情况下可能给您带来麻烦。我建议将其更改为IFS1CLR=_IFS1_I2C1MIF_MASK;3)在第一个字节的ack期间停止意味着从服务器已经NACKED事务(没有响应)——可能是错误的地址或其他错误。
举报