【经验】Silicon Labs 8位MCU EFM8LB SMBUS通信异常状态的处理
SILICON LABS 8位MCU EFM8LB芯片工作主频可以达到72MHz,在3*3mm的极小封装内集成有14位ADC、12位DAC、±3℃温度传感器、模拟比较器及高速通信外设等功能,芯片集成度高,运算速度快,在信号处理等领域有广泛的应用。
芯片内部集成了SMBUS接口,这是双向的串行总线接口,完全兼容I2C串行总线,支持100kbps标准速率和400kbps快速速率,支持硬件地址识别功能,这个接口在实际应用中使用的比较多,即可以作为主模式也可以作为从模式使用,下图是SMBUS总线接口的功能框图:
在将SMBUS总线设置为从模式状态下,完整的从读时序过程如下:
SMBUS的主设备在在发起读过程后,在每收到一个数据后都会发出一个ACK应答直到数据接收完成,数据接收完成后主器件会发出NACK应答及STOP命令,整个读过程结束,从器件的接收中断处理一般也会如下面的代码一样进行处理。
// Slave Transmitter: Data byte transmitted
case SMB_STDB:
if (SMB0CN0_ACK == 1) // If Master SMB0CN0_ACK's, send the next byte
{
if (sent_byte_counter <= NUM_BYTES_RD)
{
// Prepare next outgoing byte
SMB0DAT = SMB_DATA_OUT[sent_byte_counter-1];
sent_byte_counter++;
}
} // Otherwise, do nothing
break;
但如果在读的过程中,如果主器件意外发出一个NACK应答后,还在继续发送读的时序时钟,这时就会出现异常的状况,我们从上面的代码中可以看出,从器件并没有对NACK做出相应的处理,只是被动的等待主器件发出STOP命令。同时在数据手册关于从发送器一节的描述中我们可以找到,在收到应答后如果没有将数据写入SMB0DAT中,SMBUS接口会由从发送器状态切换到从接收器状态,产生的后果就是主器件发出的下一个读时钟后从器件会认为是从接收状态收到了一个数据,如果程序中没有对这一状况做出处理会产生不可预期的后果。
解决这一问题的思路就是对主器件发出的STA+SLA+R/W作一个标志,表明当前的过程是一个读过程还是一个写过程,如果在读或写的过程中收到了相反状态的数据可认为通信已经出错,作出相应的出错处理,在中断服务程序中也可以对接收到NACK应答作出相应的标志判断处理,避免主器件意外出错后引起严重的后果。
- |
- +1 赞 0
- 收藏
- 评论 3
本文由John提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
评论
全部评论(3)
-
志成 Lv7. 资深专家 2019-03-01学知识,下载,学习,关注,收藏
-
鹏鹏 Lv7. 资深专家 2019-03-01学知识,下载,学习,关注,收藏
-
maomao Lv8. 研究员 2019-03-01支持~
相关推荐
【经验】Silicon Labs 8位MCU 烧录程序异常的解决方法
本文介绍Silicon Labs的8位MCU C8051F/EFM8系列的芯片在量产烧录过程中遇到问题的解决方法。
【经验】8位MCU EFM8LB1的SPI时钟频率度计算方法
EFM8LB1系列是Silicon Labs公司推出的高性能8位MCU,带有通信速率最高12 Mbps的 SPI,支持主/从模式,本文将介绍SPI时钟频率度是如何计算的,以及要产生一个时钟频率,软件如何初始化。
Silicon Labs EFM8系列8位MCU的IO Crossbar硬件分配
EFM8系列是Silicon Labs公司的8位MCU,总共分为4个系列:通用型EFM8BB系列、低功耗EFM8SB系列、带USB的EFM8UB系列和高性能的EFM8LB系列。EFM8系列MCU的IO具有Crossbar功能,即软件上可以分配IO的外设,为硬件设计提供了灵活性。但是Crossbar功能分配外设时并不是引脚随意分配,而是具有优先级要求的。
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 立即选型
东软载波推出高性能、高稳定性的8位MCU ES7P702x,多达8通道的外部中断,用于消防产品
ES7P702x是由我司精心设计的一款高性能、高稳定性、高性价比的8位MCU,其包含增强型定时器、外部中断、ADC等丰富的外设和各种功能模块,可以通过编程实现多种任务,如数据采集、信号处理、通信控制等。在消防产品中有着广泛的使用。同时也可用于电源管理、美容仪器、个人护理、小家电等行业。
【经验】8位MCU EFM8SB2擦除Flash会复位的解决方法
SILICON LABS的EFM8SB2是最节能的小封装8位MCU。采用高效的8051内核,最低睡眠电流为50nA,功耗可达170μA/MHz,可应用手持设备、电池驱动式消费电子设备、传感器接口等。
【产品】集成12位高速ADC、DAC的8位MCU C8051F00x,最高执行速度达25MIPS
C8051F00x系列是Silicon Labs的一款高集成度的混合信号8位MCU,采用强大的8051微处理器,最高执行速度可达25MIPS。还集成了12位/10位多通道ADC、VDD监控器、看门狗定时器、时钟振荡器以及其他通用部件,可以作为真正的独立片上系统解决方案,可应用于诸如便携式医疗器械、测试设备和光纤系统等领域。
【经验】8位MCU EFM8系列内部BOOTLOADER的空间分配
本文介绍Silicon Labs的8位MCUEFM8系列内部BOOTLOADER占用FLASH空间的情况,及程序中对FLASH空间地址的分配。
【经验】使用8位MCU C8051F580时如何计算CAN位时间寄存器
在使用Silicon Labs的8位MCU C8051F580的CAN功能时,相对复杂的是CAN位时间寄存器的设置,在本文将举例说明C8051F580的CAN位时间寄存器的计算方法。
【经验】8位MCU EFM8LB1 FLASH擦写操作步骤
EFM8LB1系列是silabs专门针对光模块以及消费市场推出的高度集成的3x3mm小封装8位MCU,内部自带温度传感器,+/-3℃温度范围,可选0-4路DAC,UART或者SMBUS bootloader,以及其他通用接口。本文主要介绍EFM8LB1系列Flash的擦写方式以及步骤。
【经验】如何读取8位MCU EFM8SB2的UID值?
Silicon Labs的8位MCU EFM8BB2系列中有一个唯一识别码,叫做UID。我们在开发中有些时候需要使用读取UID,本文将分享如何在程序中读取EFM8BB2系列MCU的UID。
【经验】 8位MCU EFM8LB1用定时器产生SMBUS时钟的方法
Silicon Labs公司推出的EFM8LB系列8位MCU,工作主频达72MHz,同时集成有丰富的通信接口,本文将介绍如何通过定时器产生SMBUS的时钟,以及时钟频率的计算方法。
【技术】8位MCU与32位MCU的区别
对某类应用做产品定义和规划时,首要任务之一就是选择理想的处理器/控制器,但开发人员往往难以选择合适的MCU。本文是关于微控制器的技术文章,该文从基本差异、基准性能、应用适用性等角度详细地对8位和32位MCU进行了分析。
【经验】Windows无法识别Silicon Labs 8位MCU适配器的解决方法
C8051F及EFM8的适配器包括有U-EC6/ToolStick/UDA及JLINK(只适用于EFM8系列芯片),最近笔者在使用ToolStick及U-EC6时发现在IDE环境中无法选择适配器,本文介绍在WIN7/WIN10系统下出现无法识别Silicon labs 8位MCU 适配器的解决方法。
【经验】8位MCU EFM8BB3如何工作在49MHz模式?
Silicon Labs的EFM8BB3是一款小封装、多用途8位MCU,最高运行频率可达49MHz, RAM容量最大为4352B,FLASH容量最大可达64KB。EFM8BB3默认是采用内部24.5MHz的时钟,那么如何切换到内部49MHz的时钟呢?
电子商城
现货市场
品牌: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 提交需求>
登录 | 立即注册
提交评论