问题描述:
1、参考例程代码,配置MSP432的I2C为从机状态,另一块开发板作主机,主机通过I2C连续循环向从机写入、读出数据;
2、系统主频使用例程默认的3M时,通信正常,主从机可以连续交互数据;
3、修改系统主频为48M,第一次循环的写入、读出过程正常,第二次循环写入正常,读出失败——MSP432将SCL持续拉低(从机拉低SCL符合I2C协议,用于从机通知主机等待——主机等等我,别那么快);
4、通信停止后,用MAP_I2C_getInterruptStatus函数读出系统中断标记,发现有发送中断被挂起,而MAP_I2C_getEnabledInterruptStatus函数读取已使能中断,却没有任何中断记录;
5、强行跳入并执行发送中断对应的代码,MSP432立刻释放SCL,通信继续;
6、问题表现为:更改系统主频为48M,I2C虽然标记了I2C发送中断,但未能进入中断;主频为3M时,并没有这个问题。
求教:
1、修改系统主频,对I2C模块有什么影响,需要同步修改I2C相关配置吗?
2、官方例程使用库模式配置I2C,调试过程与寄存器模式有和不同,为何在调试过程中找不到相应的寄存器,取而代之的是“HWREG16(XXX)”。 |