带你了解STM32中的I2C
想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。假如我们直接控制STM32的两个GPIO引脚,分别用作SCL及SDA,按照上述信号的时序要求,直接像控制LED灯那样控制引脚的输出(若是接收数据时则读取SDA电平),I2C就可以实现通讯。同样,假如我们按照USART的要求去控制引脚,也能实现USART通讯。所以只要遵守协议,就能按通讯标准交互。
直接控制GPIO引脚电平产生通讯时序时,需要由CPU控制每个时刻的引脚状态,这个方式叫作“软件模拟协议”。
当然还有“硬件协议”方式,STM32的I2C片上外设专门负责实现I2C通讯协议,只要配置好这个外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理I2C协议的方式减轻了CPU的工作,而且让软件设计更加简单。
STM32的I2C外设简介
STM32的I2C外设可用作通讯的主机及从机,支持100Kbit/s和400Kbit/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。它的I2C外设还支持SMBus2.0协议,SMBus协议与I2C类似,主要应用于笔记本电脑的电池管理中。
STM32的I2C架构剖析