软件iic网上代码很多,也便于移植,但硬件iic相关教程就很少了,受限于硬件型号,没有找到可直接使用的代码例程。
我研究了好几天终于入门,讲讲我的一些经验。
这是两篇收益匪浅的文章:
MSP430 G2553 硬件IIC OLED 单片机 OLED滚动显示_ucb0txifg-CSDN博客
踩过的一些坑:
1. IIC的地址为7位,总长为8位,最低位为读写控制位。硬件IIC与软件IIC写入的从机地址不一样。IIC初始化时需填入的地址是长度为7位的地址。
2. msp430单片机内部有USCI_A和USCI_B两种USCI模块,其中只有USCI_B可以配置成I2C模式。
3. 这里把USCI_B硬件模块配置成了IIC,所以连线是连USCI_B模块,而非芯片原理图上的I2C接线。
4. 默认状态下,开发板USCI_B模块的一个引脚(P1.6)通过一个跳帽与某引脚相连,具体功能不明,但导致I2C通信异常。需去掉该跳帽。
数据发送流程如下:
1、 写入从机地址
2、 配置为发送模式
3、 产生起始信号
4、 判断发送缓冲寄存器是否为空:while((