知道所有的状态之后,配置好I2C,然后在中断里面查看STATUS寄存器,处理状态就可以了。超时中断是用户设定时间内没有发生状态改变,就会发生超时中断,这个可以防止软件被hold住。
下面是一个读/写EEPROM的例子。照样是先选择用到的IP的时钟源,使能各个IP的时钟,然后配置多功能引脚,然后是I2C IP功能初始化。另外是I2C 的中断处理函数。中断处理函数中根据STATUS寄存器的值,进行状态处理。只要调用函数I2C_SET_CONTROL_REG(I2C0, I2C_SI);清除状态改变标志,I2C IP就会自动开始下一个状态。
void I2C0_IRQHandler(void)
return 0;
}
|