【应用】如何使用EFM8 8位MCU的I2C Slave外设
SILICON LABS(亦称“芯科科技”)EFM8 8位MCU系列产品的用户在开发产品时,需要进一步了解如何使用EFM8LB1 / EFM8BB3 I2C slave器件,使它看起来与SMBus的外设完全不同?对此,我们制作了一篇知识库文章,引导工程师们加快设计流程。
M8LB1/M8BB3包含一个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机状态机的工作原理。(https://www.sekorm.com/doc/627258.html)
有几个原因导致某些状态未包含在Bootloader代码中:
Bootloader代码的编写方式使得上述某些情况永远不会发生,即使它们发生,它们也可以在默认情况下捆绑在一起。我们主要关注RD,WR和RD+ NACK状态。
Bootloader的代码受大小限制。我们尝试将其放入一个Flash页面,这反过来意味着我们包含的代码只是Bootloader运行所必需的,而不是考虑永远不会发生的情况。
- |
- +1 赞 0
- 收藏
- 评论 5
本文由下线老捷达转载自Silicon Labs,原文标题为:【MCU知识库】如何使用EFM8 8位MCU的I2C Slave外设,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
评论
全部评论(5)
-
用户68909777 Lv5. 技术专家 2018-11-15了解下
-
qditz Lv9. 科学家 2018-10-25不错的资料
-
地瓜糖 Lv6. 高级专家 2018-10-13学习了
-
守猪待兔 Lv7. 资深专家 2018-08-08学习了
-
闲云 Lv7. 资深专家 2018-08-08好文章
相关推荐
SILICON LABS 8-bit Microcontroller选型表
SILICON LABS 8位MCU选型,MCU Core 8051,频率20MHz~100MHz,Flash存储2kB~120kB,RAM存储0.25kB~8kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Dig I/O Pins
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
DAC
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
EMIF
|
CAN
|
LIN
|
VREF
|
Debug Interface
|
C8051F392-A-GM
|
8位MCU
|
C8051F39x Small Form Factor
|
50
|
16
|
1
|
1.8
|
3.6
|
QFN20
|
4x4
|
±2
|
17
|
10-bit, 16-ch., 500 ksps
|
Temp Sensor
|
6
|
3
|
10-bit, 2-ch.
|
1
|
1
|
1
|
2
|
0
|
0
|
0
|
0
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
关于Silicon Labs EFM8系列8位MCU,bootloader烧录/升级最新固件的问题。
需要注意的是I2C接口的硬件连接,连接的线不要过长,可以考虑在线的两端都加上拉电阻。另外,C2接口是芯片的调试接口,可以直接对芯片的FLASH进行烧录,者的烧录原理不一样,但同样的,C2接口的连接线也不能过长。
SILICON LABS EFM8 Sleepy Bee 8-bit Microcontrollers选型表
SILICON LABS 8位MCU选型,基于25MHz Frequency,2~64kB Flash,0.25~4kB RAM等参数进行选型
产品型号
|
品类
|
MCU Core
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
I2S
|
EMIF
|
CAN
|
LIN
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
VREF
|
Debug Interface
|
Temperature Range (ºC)
|
EFM8SB10F8G-QFN20
|
Microcontroller
|
8051
|
25
|
8
|
0.5
|
16
|
12-bit, 9-ch.
|
Temp Sensor
|
4
|
3
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1.8
|
3.6
|
QFN20
|
3x3
|
±2
|
VREF
|
C2
|
-40 to 85
|
选型表 - SILICON LABS 立即选型
Silicon Labs EFM8LB12系列8位MCU有ES0,ES1两个版本,两者之间的区别是什么?
ES0版本的mcu bootloader引脚是P0.2,P0.3;ES1版本的mcu bootloader引脚是P0.2,P0.3;此外两个芯片的 Derivative ID也是不同的,具体要看芯片封装和Flash尺寸;
Silicon Labs的8位MCU EFM8SB10F8G下载程序方式有哪些?
Silicon Labs的8位MCU EFM8SB10F8G可以通过C2接口和串口(在确定片上已含bootloader的情况下)下载程序。
SILICON LABS EFM8 Universal Bee 8-bit Microcontrollers选型表
SILICON LABS 8位MCU选型,基于48MHz Frequency,8~64kB Flash,2~4kB RAM等参数进行选型
产品型号
|
品类
|
MCU Core
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
5 Volt Tolerant
|
ADC 1
|
USB
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
Comparators
|
UART
|
SPI
|
I2C
|
EMIF
|
CAN
|
LIN
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
VREF
|
Debug Interface
|
Temperature Range (ºC)
|
EFM8UB20F64G-QFP48
|
Microcontroller
|
8051
|
48
|
64
|
4
|
40
|
5 Volt Tolerant
|
10-bit, 32-ch.
|
USB
|
Temp Sensor
|
6
|
5
|
2
|
2
|
1
|
2
|
1
|
0
|
0
|
2.7
|
5.25
|
QFP48
|
7x7
|
±1.5
|
VREF
|
C2
|
-40 to 85
|
选型表 - SILICON LABS 立即选型
Silicon Labs的EFM8LB11系列8位MCU如何区分芯片自带的bootloader通信接口是UART还是SMBus?
Silicon Labs的EFM8LB11系列8位MCU识别芯片自带的bootloader通信接口方法如下: 查看芯片完整型号,如果型号中带有“S0”,则说明bootloader通信接口为SMBus,例如:EFM8LB11F32ES0-B-QFN24; 反之,如果芯片中没有“S0”,则说明bootloader通信接口为UART,例如:EFM8LB11F32E-B-QFN24;
【经验】8位MCU EFM8BB3如何工作在49MHz模式?
Silicon Labs的EFM8BB3是一款小封装、多用途8位MCU,最高运行频率可达49MHz, RAM容量最大为4352B,FLASH容量最大可达64KB。EFM8BB3默认是采用内部24.5MHz的时钟,那么如何切换到内部49MHz的时钟呢?
芯科的EFM8 8位MCU,提供demo板吗?
EFM8各系列都有对应的开发板,例如EFM8BB1的开发板,可以在电商平台上搜索“EFM8BB1开发板”,就会显示相关的开发板的型号,价格及库存情况。
Silicon Labs EFM8BB1系列8位MCU的量产软件有哪些?
Silicon Labs EFM8BB1系列8位MCU的量产软件可以采用Silicon Labs 原厂提供的MCU Production Programmer 和 Flash Programming Utility软件,建议采用前者,下载效率更高;
Silicon Labs EFM8LB1系列8位MCU的HEX文件如何转换为bootloader引导程序可识别的.efm8文件?
需要借助Hex2boot工具,该工具是一个DOS程序,需要在DOS下通过命令实现格式转换。创建一个EFM8文件可以使用如下命令: hex2boot.exe input_file.hex -o Filename.efm8 // input_file.hex为需要转换的hex文件,Filename.efm8为bootloader烧写文件
【经验】8位MCU EFM8LB1如何将系统时钟配置为72M?
Silicon Labs公司推出的EFM8LB1系列8位MCU,集成14位ADC、3*3mm小封装,并且内部集成校准的温度传感器,精度为+/-3度,同时,内集成有24.5M,72M的振荡器,那么如何通过软件将MCU的系统时钟配置到72M呢?本文将详细介绍。
Silicon Labs 8位MCU EFM8LB12自带的bootloader,下载接口是哪种?
Silicon Labs 8位MCU EFM8LB12 bootloader下载接口类型,要看选定的MCU的型号, 如果芯片型号中带有“S0或S1”bootloader就是SMBUS接口,否则就是UART。
Silicon Labs 8位MCU C8051F330采用外部16M晶体作为系统时钟,但是晶体无法起振,软件初始化应该如何设置?
Silicon Labs 8位MCU C8051F330采用外部16M晶体作为系统时钟,晶体无法起振,首先确定硬件没有问题的情况下,软件系统时钟初始化应做如下设置: OSCXCN = 0x66; for (i = 0; i < 3000; i++); while ((OSCXCN & 0x80) == 0); CLKSEL = 0x01
Silicon Labs 8位MCU系统是否需要外部VDD监视器?
在大多数情况下,内部VDD监视器就足够了,并且不需要外部VDD监视器,除非应用程序有特殊要求要求使用外部VDD监视器。每当使用内部VDD监视器时,都应注意使用8位MCU,以确保始终将监视器用作复位源,并且不会因写入RSTSRC而被意外禁用。在高于50 MHz的频率下运行的C8051F12x或C8051F36x器件的最低电源电压规格为3.0V。但是,内部VDD监视器的校准值通常为2.7V。在这种情况下,可能需要一个外部VDD监视器。
电子商城
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论