Board logo

标题: STM8L的I2C基本读写方法详解 含例程 [ [打印本页]

作者: yuchengze    时间: 2016-12-23 20:51     标题: STM8L的I2C基本读写方法详解 含例程 [

STM8L的硬件I2C支持100KHz~400KHz的读写速度,作为主设备使用时,不需要配置IO,开启I2C硬件后,对应的IO会自动启用复用功能。本文选取24C02作为I2C从设备,STM8L作为主设备,进行I2C读写功能测试。
STM8L作为I2C主设备时,官方的数据手册给出的配置流程如下图:

详细配置I2C为主设备的流程如下:

①打开I2C外设时钟
②I2C输入时钟频率大小选择
③配置时钟控制寄存器
④配置上升沿时间寄存器
⑤开启I2C功能


STM8L的I2C默认为从设备,当发送一个START信号后,自动从从模式转成主模式.

STM8L的I2C的实现写一字节的描述如下:
①CR2寄存器中的START位被置位后,发送一个起始信号,SR1中的SB被硬件置位.读取SR1寄存器,清除该标志位.
②向DR寄存器写入从设备地址,SR1中的ADDR会被硬件置位,通过读SR1,然后再读SR3,清除该标志位.
③DR寄存器为空后,将从设备寄存器地址写入DR
④DR寄存器为空后,将从要写入的数据写入DR
STM8L读取一字节数据,这里不在赘述.
注意:I2C的时钟频率为2M以下时,根据数据手册,在检测到SB,ADDR,BTF,这些标志位后,必须在其后插入5个NOP再清除标志位.


STM8S中文文档中,对此描述如下.






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0