匿名
未登录
登录
丢石头百科
搜索
STM8 I2C主模式
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
Admin
(
讨论
|
贡献
)
2019年11月18日 (一) 16:33的版本
(STM8 I2C主模式在主模式时,I C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束。当通过START位在总线上产生了起始条件,设备就进入了主模式。以下是主模式所要求的操作顺序:在I2 ...)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
<tbody></tbody>
STM8 I2C主模式
在主模式时,I C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束。当通过START位在总线上产生了起始条件,设备就进入了主模式。以下是主模式所要求的操作顺序:* 在I2C_FREQR寄存器中设定该模块的输入时钟以产生正确的时序
配置时钟控制寄存器
配置上升时间寄存器
编程I2C_CR1寄存器启动外设
置I2C_CR1寄存器中的START位为1,产生起始条件
I2C模块的输入时钟频率必须至少是:
标准模式下为:1MHz
快速模式下为:4MHz
起始条件 当BUSY=0时,设置START=1,I2C接口将产生一个开始条件并切换至主模式(M/SL位置为1)。 注:在主模式下,设置STM8的START位将在当前字节传输完后由硬件产生一个重开始条件。
一旦发出开始条件:
SB位被硬件置为1,如果设置了ITEVFEN位,则会产生一个中断。然后主设备等待读SR1寄存器,紧跟着将从地址写入DR寄存器
从地址的发送
从地址通过内部移位寄存器被送到SDA线上。
* 在10位地址模式时,发送一个头段序列产生以下事件:
ADD10位被硬件置为1,如果设置了ITEVFEN位,则产生一个中断。然后主设备等待程序读取SR1寄存器,并将第二个地址字节写入DR寄存器。* ADDR位被硬件置为1,如果设置了ITEVFEN位,则产生一个中断。
在7位地址模式时,只需送出一个地址字节。一旦该地址字节被送出。
ADDR位被硬件置为1,如果设置了ITEVFEN位,则产生一个中断。随后主设备等待程序一次读SR1寄存器,跟着读SR3寄存器.根据送出从设备地址的最低位,主设备决定进入发送模式还是进入接收模式。
* 在7位地址模式时
要进入发送模式,主设备发送从地址时置最低位为'0'。* 要进入接收模式,主设备发送从地址时置最低位为'1'。
* 在10位地址模式时
要进入发送模式,主设备先送头字节,然后送最低位为'0'的从地址。
要进入接收模式,主设备先送头字节,然后送最低位为'0'的从地址。接着再发送一个重复开始条件,后面跟着一个和地址匹配的头字节,并且最低位为'1'(11110xx1)。 TRA位指示主设备是在接收模式还是发送模式。
主设备发送模式
在发送了地址和清除了ADDR位后,主设备通过内部移位寄存器将字节从DR寄存器发送到SDA线上。 主设备等待,直到TxE被清除,(见图96传送序列的EV8)。 当收到应答脉冲时:
TxE位被硬件置为1,如果设置了ITEVFEN和ITBUFEN位,则产生一个中断。 如果TxE位为1并且在上一次数据发送结束之前没有新数据写入到DR寄存器,则BTF位被置为1,I2C接口等待BTF被清除。
关闭通信
在DR寄存器中写入最后一个字节后,通过设置STOP位产生一个停止条件(见图96传送序列的EV8_2),然后I2C接口将自动回到从模式(M/S位清除)。 注:TxE或BTF位置位时,应该在EV8_2事件时设置停止条件。
(图96:STM8主设备发送模式发送序列图)
主设备接收
在发送地址和清除ADDR之后,I2C接口进入主设备接收模式。在此模式下,I2C接口从SDA线接收数据字节,并通过内部移位寄存器送至DR寄存器。在每个字节后,I2C接口依次执行以下操作:* 如果ACK位被置为1,发出一个应答脉冲。
硬件设置RxNE=1,如果设置了INEVFEN和ITBUFEN位,则会产生一个中断(见图97传送序列的EV7)。 如果RxNE位被置为1,并且在接收新数据结束前,DR寄存器中的数据没有被读走,硬件将设置BTF=1,I2C接口等待读DR寄存器。
关闭通信
主设备在接收到从设备发送的最后一个字节后发送一个NACK。从设备接收到NACK后,释放对SCL和SDA线的控制;主设备就可以发送一个停止/重起始条件。* 为了在收到最后一个字节后产生一个NACK脉冲,在读倒数第二个数据字节之后(在倒数第二个RxNE事件之后)必须清除ACK位。
为了产生一个停止/重起始条件,软件必须在读倒数第二个数据字节之后(在倒数第二个RxNE事件之后)设置STOP/START位。 在产生了停止条件后,I2C接口自动回到从模式(M/SL位被清除)。
(图97:STM8主设备接收模式接收序列图)
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
可打印版本
固定链接
页面信息
页面日志