软件IIC
SCL 、SDA 设置为通用开漏输出
第一步:配置GPIO 将SCL 、SDA 设置为开漏输出 并将二者置为高电平
第二步;编写 写SCL、SDA函数 读SDA函数 0给应答
第三步:
编写 start函数(兼容重复start条件)需要先将SDA置1,再将SCL置1 拉低SDA 拉低SCL
编写 stop条件
发送一个字节 先写高位 再依次写低位
发送数据 我们将数据的某一位放在SDA 先将SCL拉高 然后再将SCL拉低 连发8次即可达到发送效果
接收一个字节 接收一个字节之前 需要先将SDA置1 防止从机干扰
发送应答 发送一个字节的简化版
接收应答 接收一个字节的简化版
第四步:
指定地址读
开始 发送ADDRESS位 接收应答 发送地址位 接收应答
发送数据 接收应答 停止
指定地址写
开始 发送ADDRESS位 接收应答 发送地址位 接收应答
重复开始 发送ADDRESS并将最低位置1 接收应答 读取数据 发送应答(还想读数据的话,则发送1,不想读了的话,则发送0;默认为1) 结束
第五步:
读寄存器
写寄存器
需要先解除睡眠模式
硬件IIC
第一步:IIC外设配置——初始化
开启时钟 引脚设置位复用开漏模式 结构体配置 使能IIC
RCC IIC和GPIO
第二步:控制外设电路 实现指定地址写的程序
第三步; 控制外设电路 实现指定地址读的程序
剩余步骤与上文一致
内容参考 江协