首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM8L的I2C基本读写方法详解 含例程 [

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中文文档中,对此描述如下.

返回列表