STM8 I2C主模式

2020-07-02来源: eefocus关键字:STM8  I2C  主模式

STM8 I2C主模式

在主模式时,I C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束。当通过START位在总线上产生了起始条件,设备就进入了主模式。以下是主模式所要求的操作顺序:

  • 在I2C_FREQR寄存器中设定该模块的输入时钟以产生正确的时序

  • 配置时钟控制寄存器

  • 配置上升时间寄存器

  • 编程I2C_CR1寄存器启动外设

  • 置I2C_CR1寄存器中的START位为1,产生起始条件

  • I2C模块的输入时钟频率必须至少是:起始条件
    当BUSY=0时,设置START=1,I2C接口将产生一个开始条件并切换至主模式(M/SL位置为1)。

    • 标准模式下为:1MHz

    • 快速模式下为:4MHz

注:在主模式下,设置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事件时设置停止条件。

STM8_主设备发送模式发送序列图
(图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位被清除)。

STM8_主设备接收模式接收序列图
(图97:STM8主设备接收模式接收序列图)


关键字:STM8  I2C  主模式 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501956.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8 通用异步收发器(UART)
下一篇:STM8 I2C从模式

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8 复位寄存器地址映射
复位状态寄存器(RST_SR)请参考对应的数据手册了解基地址信息。(表7:STM8复位寄存器地址映射)
发表于 2020-07-25
<font color='red'>STM8</font> 复位寄存器地址映射
STM8 复位(RST)寄存器
复位状态寄存器(RST_SR)地址偏移值:0x00复位值:未定义位7:5保留位,必须保持为0位4EMCF:EMC复位标志由硬件置位,可通过软件写"1"清除0:无EMC复位发生;1:有一个EMC复位发生(可能的复位原因:互补寄存器或选项字节不匹配)。位3SWIMF:SWIM复位标志位由硬件置位,可通过软件写"1"清除0:无SWIM复位发生;1:有一个SWIM复位发生。位2ILLOPF:非法操作码复位标志位由硬件置位,可通过软件写"1"清除0:无非法操作码复位发生;1:有一个非法操作码复位发生。位1IWDGF:独立型看门狗复位标志位由硬件置位,可通过软件写"
发表于 2020-07-25
<font color='red'>STM8</font> 复位(R<font color='red'>ST</font>)寄存器
STM8 存储器保护
读保护当选项字节中的ROP字节被编程为'0xAA'时,读保护就生效了。这种情况下,无论写保护是否生效,在ICP模式中(使用SWIM接口)读取或修改FLASH程序存储器和DATA区域都是被禁止的。即使认为没有什么保护是完全不可破解的,对于一个通用微处理器来说,STM8的读保护的特性也提供了一个非常高水平的保护级别。可以在ICP模式中通过对选项字节中的ROP字节重新编程来解除程序存储器、UBC和DATA区域的读保护。在这种情况下,程序存储器、UBC、DATA区域以及选项字节都被自动擦除,器件也可以被重新编程了。存储器存取安全系统(MASS)STM8在复位以后,主程序和DATA区域都被自动保护以防止无意的写操作。在试图
发表于 2020-07-25
STM8 用户启动区域(UBC)
用户启动区域(UBC)包含有复位和中断向量表,它可用于存储IAP及通讯程序。UBC有一个两级保护结构可保护用户代码及数据在IAP编程中免于无意的擦除或修改。这意味着该区域总是写保护的,而且写保护不能通过使用MASS密钥来解锁。在ICP模式下(使用SWIM接口)可以通过修改选项字节来配置UBC的大小。UBC选项字节指定了分配在UBC中的页的数量。UBC区域的起始地址是0x00 8000。 可以通过读取UBC选项字节来获得UBC区域的大小。请参考图6,图7和图8来了解UBC区域的存储器映射。对于选项字节部分,请参考相应的数据手册了解更多的UBC选项字节的细节。(图六:小容量STM8S的UBC区域大小)1. UBC[7:0]=0x00
发表于 2020-07-25
<font color='red'>STM8</font> 用户启动区域(UBC)
STM8 存储器组织结构
STM8S的EEPROM以32位字长(每字4字节)为基础组织起来。根据不同的器件,存储器组织机 构有所不同:小容量STM8S器件8K FLASH程序存储器,每页 64字节,共 128页640字节数据 EEPROM,每页 64字节,共 10页。数据 EEPROM包括一页的选项字节(64字节)。中容量STM8S器件从 16K到 32K FLASH程序存储器,每页 512字节,最多 64页1K字节数据EEPROM,每页 512字节,共 2页。数据 EEPROM包括一页的选项字节(512字节)。大容量STM8S器件从 64K到 128K FLASH程序存储器,每页 512字节,最多 256页从 1K到 2K字节数据 EEPROM,每页
发表于 2020-07-25
<font color='red'>STM8</font> 存储器组织结构
STM8 FLASH主要特性
STM8内部的FLASH程序存储器和数据EEPROM由一组通用寄存器来控制。用户可以使用这些寄存器来编程或擦除存储器的内容、设置写保护、或者配置特定的低功耗模式。用户也可以对器件的选项字节(Option byte)进行编程。STM8S EEPROM分为两个存储器阵列:最多至 128K字节的FLASH程序存储器,不同的器件容量有所不同。请参考4.4存储器组织结构了解更多细节。最多至 2K字节的数据EEPROM(包括option byte-选择字节),不同的器件容量有所不同。请参考4.4存储器组织结构了解更多细节。编程模式字节编程和自动快速字节编程(没有擦除操作)字编程块编程和快速块编程(没有擦除操作)在编程/擦除操作结束时和发生非法
发表于 2020-07-25
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved