欢迎光临散文网 会员登陆 & 注册

CH32V103学习笔记之五——硬件IIC

2021-09-26 11:47 作者:修地球八级工  | 我要投稿

1、前言

        距离上篇文章更新已经过去一个半月了,期间并没有在摸鱼,而是探索了不少有实际意义的知识点。结合目前正着手移植的程序,重点解决了硬件IIC的连续读写和SPI DMA读写问题。现在将学习结果做些小结分享出来。

        本篇文章主要总结硬件IIC的配置流程,结合使用IIC通信的OLED液晶屏和MPU6050模块来说明硬件IIC的使用。

2、IIC的初始化流程

        IIC作为嵌入式MCU一个常见外设,配置流程和其他外设并没有区别。使能外设IO时钟、复用外设IO(必要时重映射IO),使能IIC时钟、初始化IIC工作模式、使能IIC。

iic.c

iic.h

在使用IIC模块之前,需要调用IIC初始化函数完成IIC的初始化。

3、使用IIC向从设备读、写一字节数据

        为了能简单明了说明IIC的通信时序,这里截取了某品牌M32F4参考手册中IIC章节内容,CH32V103参考手册IIC章节没有此说明图表。

写一字节数据配置流程

IIC主发送器传输时序图

读一字节数据配置流程

主接收器的传输序列图

EV事件超时处理函数

5、中断对IIC通讯的影响

        先上一张逻辑分析仪抓的时序图。在时序图中可以看到,IIC在被中断前会完成当前字节的传输,并发送出ACK信号。再拉低SCL,释放SDA,再中断函数执行完之后会继续完成IIC通讯。

中断对IIC通讯的影响

5、小结

      最开始接触32位MCU的时候,能找到的关于IIC的资料,多以普通IO模拟IIC通讯时序实现数据传输,介绍硬件IIC使用的资料没有多少。流传的原因无非是早年某品牌MCU IIC的硬件BUG容易造成程序卡死,造成很多人习惯了使用软件模拟的IIC。CH32V103R8作为一种新架构的MCU在设计IIC应该是注意过此问题,经过实际验证,硬件IIC和其他片内外设一样,并没有什么问题,可以正常使用。

        下一篇将介绍IIC连续读写数据与OLED液晶屏和MPU6050通讯。


CH32V103学习笔记之五——硬件IIC的评论 (共 条)

分享到微博请遵守国家法律