0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用EFM8LB1/EFM8BB3 I2C slave器件

Silicon Labs 来源:互联网 作者:佚名 2018-07-27 11:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Silicon Labs(亦称“芯科科技”)EFM8 8位MCU系列产品的用户在开发产品时,需要进一步了解如何使用EFM8LB1 / EFM8BB3 I2C slave器件,使它看起来与SMBus的外设完全不同?对此,我们制作了一篇知识库文章,引导工程师们加快设计流程。欢迎往下阅读或点击阅读原文至Silicon Labs中文社区观看完整文章。

M8LB1 /BB3包含一个I2CSLAVE外设,它包含许多有助于高速传输的功能,但可能会使熟悉传统SMBus操作的用户感到困惑。在这里,我们简要介绍I2CSLAVE器件,并附加I2C SLAVE器件引导加载器示例代码以供参考。此代码示例是为EFM8BB3编写的,但如果需要,可以轻松移植到EFM8LB1。

I2C外设包含2字节FIFO和1字节移位寄存器,分别用于TX/ RX。I2C SLAVE器件支持自动ACK / NACK I2C master器件,由I2C0CN0寄存器的BUSY bit控制。默认情况下,BUSY为“1”,器件不响应I2Cmaster器件。发送到器件的所有I2C数据都将被NACKed。我们应将此BUSYbit设置为“0”,器件将确认I2Cmaster器件。 master设备持续向设备发送数据,设备自动向master设备确认最多3个ACK,因为FIFO中有两个字节,移位寄存器中有1个字节。然后SCL保持低电平以表示设备无法接收更多数据。我们应检查I2C0FCN1寄存器的RXE位,以了解FIFO中是否有数据,从I2C0DIN寄存器读取接收数据。

自动ACK功能使流量控制变得困难,如上所述,当RX FIFO已满时,SCL保持低电平,因此器件可以处理数据。 masster如何改变读/写方向呢?还有另一个功能可以帮助解决这种情况。 I2C0ADM寄存器的FACS位字段。默认值为“1”,表示FORCE_STRETCH。该位置为1时,时钟拉伸始终发生在地址字节的ACK之后,直到固件清零I2C0INT位。通过这种时钟拉伸功能,我们可以在读/写方向变化期间进行流量控制。

这里有一个基于AN945的I2C SLAVE引导加载程序示例代码,请查看它并参考I2C SLAVE机状态机的工作原理。 I2C Slave状态机在参考手册中的两个流程图(图17.7和图17.8)中可以看到,可以压缩到此状态解码表(参考手册中的表17.1 -

https://www.silabs.com/documents/public/reference-manuals/efm8bb3-rm.pdf)

I2C Bootloader的工作原理与SMBus Bootloader类似,详见AN945 -

https://www.silabs.com/documents/public/application-notes/an945-efm8-factory-bootloader-user-guide.pdf。附件中的boot_I2C.c文件显示了I2CSlave外设的使用方式 - 人们可能会注意到代码中只定义了三种状态,而上面显示的表描述了更多。有几个原因导致某些状态未包含在Bootloader代码中–

  1. Bootloader代码的编写方式使得上述某些情况永远不会发生,即使它们发生,它们也可以在默认情况下捆绑在一起。我们主要关注RD,WR和RD+ NACK状态。

  2. Bootloader的代码受大小限制。我们尝试将其放入一个Flash页面,这反过来意味着我们包含的代码只是Bootloader运行所必需的,而不是考虑永远不会发生的情况。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20141

    浏览量

    328642
  • Silicon Labs
    +关注

    关注

    11

    文章

    343

    浏览量

    63529
  • efm8lb1
    +关注

    关注

    0

    文章

    2

    浏览量

    3355

原文标题:【MCU知识库】如何使用EFM8 8位MCU的I2C Slave外设

文章出处:【微信号:SiliconLabs,微信公众号:Silicon Labs】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入剖析I2C协议

    I2C是由Philips开发的简单的双向两线总线,在深入浅出理解SPI协议中,我们区分了单工,半双工,全双工协议数据流向的区别,根据特征,I2C协议属于半双工协议(即同一时刻,数据单向流动)。此外
    的头像 发表于 08-21 15:10 3259次阅读
    深入剖析<b class='flag-5'>I2C</b>协议

    STM32有哪些MCU能支持I2C HS模式和同时支持I3C 的吗?

    如题,想请问下STM32有哪些产品,能支持I2C HS模式,速率3.4Mbit/s。同时又支持I3C的(SDR12.5M),现在有个外设 分别支持I2C HS slave
    发表于 08-04 06:06

    能否使用 CY8CKIT-002 miniprog3 除调试器通过 I2C 接口对 CCG4 器件进行编程?

    能否使用 CY8CKIT-002 miniprog3 除调试器通过 I2C 接口对 CCG4 器件进行编程?
    发表于 05-30 06:47

    如何在I2C上将IMX8MP配置为slave

    我们有一个场景,我们需要将 IMX8MP 处理器配置为 I2C 从机。在同一总线上,连接了一个微控制器,它将作为主控制器运行。 感谢您支持将 IMX8MP 设置为 I2C 从机。
    发表于 04-01 08:23

    使用stm8作为从机与esp32进行i2c通讯,主机扫描的i2c地址与stm8从机设置的i2c地址不一样,如何解决?

    to master *//* EV3: TxE = 1, 写DR寄存器清除DR */else if ((Event == (I2C_EVENT_SLAVE_BYTE_TRANSMITTED)) ||(Event
    发表于 03-12 07:57

    I2C总线复用

    帝晶智慧屏I2C总线复用
    的头像 发表于 03-11 17:20 1852次阅读

    I2C总线通信原理 如何设计I2C总线电路

    I2C总线通信原理 I2C(Inter-Integrated Circuit)总线是一种用于集成电路之间进行通信的串行通信协议。它最早由飞利浦公司(现被恩智浦电子收购)于1982年推出,是一种简单
    的头像 发表于 01-31 15:01 1874次阅读

    I2C总线的优缺点分析

    I2C总线作为一种广泛使用的串行通信协议,以其简单性和高效性在嵌入式系统中占据着重要地位。 I2C总线的优点 1. 简单性和低成本 I2C总线只需要两条线(数据线SDA和时钟线SCL)
    的头像 发表于 01-17 15:50 1759次阅读

    I2C总线与Arduino的接口示例

    在现代电子设计中,I2C总线因其简单性和灵活性而广受欢迎。它允许多个设备共享同一通信线路,从而节省空间和成本。Arduino,作为一个多功能的微控制器平台,自然也支持I2C通信。 I2C总线
    的头像 发表于 01-17 15:34 2354次阅读

    I2C总线的工作模式介绍

    在现代电子系统中,I2C总线作为一种多主机、多从机的串行通信协议,扮演着至关重要的角色。它允许多个设备共享同一总线,进行数据传输,从而简化了系统设计并降低了成本。 I2C总线的基本特性 I2C总线由
    的头像 发表于 01-17 15:32 1633次阅读

    I2C总线协议详细解析

    1. I2C总线简介 I2C总线由Philips Semiconductor(现为NXP Semiconductors)在1980年代初期开发。它是一种多主机总线,允许多个设备共享同一总线。I
    的头像 发表于 01-17 15:22 1567次阅读

    I2C总线故障排除技巧

    导致整个系统的功能受到影响。 1. 检查硬件连接 1.1 确认电源和接地 首先,确保I2C设备的电源和接地连接正确无误。不良的电源或接地连接可能导致信号不稳定,从而引发通信错误。 1.2 检查总线线缆 检查SDA和SCL线是否正确连接,并且没有损坏。在长距离传
    的头像 发表于 01-17 15:20 3848次阅读

    I2C总线设备地址设置方法

    通常是一个7位或10位的数字,用于标识总线上的每个设备。在7位寻址模式下,地址范围是0x00到0x7F,而在10位寻址模式下,地址范围是0x000到0x3FF。I2C地址的最低位(LSB)通常用于指示读/写操作。 硬件地址设置 1
    的头像 发表于 01-17 15:17 6942次阅读

    I2C总线应用实例分析

    在现代电子系统中,I2C总线因其简单、灵活和高效的特点而被广泛应用于各种设备之间的通信。 I2C总线概述 I2C总线由Philips(现为NXP)在1980年代初期开发,最初用于音频和视频设备
    的头像 发表于 01-17 15:09 1229次阅读

    湖南静芯推出用于USB 3.2的深回扫型静电保护器件SEUCS2X3V1BB

    ​  【新品发布】湖南静芯推出用于USB 3.2的深回扫型静电保护器件SEUCS2X3V1BB 湖南静芯宣布推出全新产品SEUCS2X3V1BB 。SEUCS2X3V1BB是一款保护高
    的头像 发表于 01-07 16:01 1081次阅读
    湖南静芯推出用于USB 3.2的深回扫型静电保护<b class='flag-5'>器件</b>SEUCS<b class='flag-5'>2X3V1BB</b>