【经验】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支持~
相关推荐
【经验】8位MCU EFM8系列编程接口与U-EC6的连接方法
Silicon Labs 的EFM8系列的MCU是最新一代的8位MCU,芯片支持在线调试功能,采用的调试接口继承了C8051F系列的C2调试接口,这是一个两线制的调试接口,调试时只需要C2CK时钟信号与C2D数据信号就可以。本文介绍U-EC6的信号定义及Silicon Labs 8位MCU EFM8的编程接口与U-EC6的连接方法。
设计经验 发布时间 : 2019-10-31
【经验】Silicon Labs 8位MCU 烧录程序异常的解决方法
本文介绍Silicon Labs的8位MCU C8051F/EFM8系列的芯片在量产烧录过程中遇到问题的解决方法。
设计经验 发布时间 : 2019-01-27
【经验】8位MCU EFM8系列内部BOOTLOADER的空间分配
本文介绍Silicon Labs的8位MCUEFM8系列内部BOOTLOADER占用FLASH空间的情况,及程序中对FLASH空间地址的分配。
设计经验 发布时间 : 2021-08-17
【产品】集成12位高速ADC、DAC的8位MCU C8051F00x,最高执行速度达25MIPS
C8051F00x系列是Silicon Labs的一款高集成度的混合信号8位MCU,采用强大的8051微处理器,最高执行速度可达25MIPS。还集成了12位/10位多通道ADC、VDD监控器、看门狗定时器、时钟振荡器以及其他通用部件,可以作为真正的独立片上系统解决方案,可应用于诸如便携式医疗器械、测试设备和光纤系统等领域。
新产品 发布时间 : 2017-01-05
【经验】8位MCU EFM8LB1的SPI时钟频率度计算方法
EFM8LB1系列是Silicon Labs公司推出的高性能8位MCU,带有通信速率最高12 Mbps的 SPI,支持主/从模式,本文将介绍SPI时钟频率度是如何计算的,以及要产生一个时钟频率,软件如何初始化。
设计经验 发布时间 : 2020-12-24
【经验】 8位MCU EFM8LB1用定时器产生SMBUS时钟的方法
Silicon Labs公司推出的EFM8LB系列8位MCU,工作主频达72MHz,同时集成有丰富的通信接口,本文将介绍如何通过定时器产生SMBUS的时钟,以及时钟频率的计算方法。
设计经验 发布时间 : 2020-12-21
Silicon Labs EFM8系列8位MCU的IO Crossbar硬件分配
EFM8系列是Silicon Labs公司的8位MCU,总共分为4个系列:通用型EFM8BB系列、低功耗EFM8SB系列、带USB的EFM8UB系列和高性能的EFM8LB系列。EFM8系列MCU的IO具有Crossbar功能,即软件上可以分配IO的外设,为硬件设计提供了灵活性。但是Crossbar功能分配外设时并不是引脚随意分配,而是具有优先级要求的。
设计经验 发布时间 : 2018-06-27
【经验】8位MCU EFM8LB1 FLASH擦写操作步骤
EFM8LB1系列是silabs专门针对光模块以及消费市场推出的高度集成的3x3mm小封装8位MCU,内部自带温度传感器,+/-3℃温度范围,可选0-4路DAC,UART或者SMBUS bootloader,以及其他通用接口。本文主要介绍EFM8LB1系列Flash的擦写方式以及步骤。
设计经验 发布时间 : 2019-01-31
【经验】8位MCU EFM8BB3如何工作在49MHz模式?
Silicon Labs的EFM8BB3是一款小封装、多用途8位MCU,最高运行频率可达49MHz, RAM容量最大为4352B,FLASH容量最大可达64KB。EFM8BB3默认是采用内部24.5MHz的时钟,那么如何切换到内部49MHz的时钟呢?
设计经验 发布时间 : 2020-11-10
【经验】Windows无法识别Silicon Labs 8位MCU适配器的解决方法
C8051F及EFM8的适配器包括有U-EC6/ToolStick/UDA及JLINK(只适用于EFM8系列芯片),最近笔者在使用ToolStick及U-EC6时发现在IDE环境中无法选择适配器,本文介绍在WIN7/WIN10系统下出现无法识别Silicon labs 8位MCU 适配器的解决方法。
设计经验 发布时间 : 2019-03-15
EFM8LB低功耗8位MCU在使用BOOTLOADER时,如何让程序进入BOOTLOADER?
EFM8LB的芯片进入BOOTLOADER有三种方法。第一种:上电后如果0X0000地址的数据为0XFF,程序会直接进入BOOTLOADER. 第二种:在上电复 位时,如果C2D引脚保持低电平超过50uS,程序会进入BOOTLOADER.第三种: 应用程序将R0赋值为0XA5,然后执行软启动,启动后程序会自动进入 BOOTLOADER。
技术问答 发布时间 : 2017-10-10
【应用】72MHz时钟频率、3*3QFN封装的8位MCU EFM8LB11F16用于守时模块
守时模块设计中采用Silicon Labs的8位MCU EFM8LB11F16作为主控,集成了最高14位精度、采样速率高达1Msps@12位的ADC和内部校准温度传感器(±3 °C) 可以实现对模块内环境温度采集,对守时模块的的压控温度晶振进一步补偿,还集成了12位精度的DAC。
应用方案 发布时间 : 2020-11-09
【经验】8位MCU EFM8BB10 端口匹配实现外部中断的方法
本文介绍Silicon Labs 8位MCU EFM8BB10使用端口匹配功能实现外部中断的方法。
设计经验 发布时间 : 2019-09-25
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;
技术问答 发布时间 : 2018-08-29
【经验】8位MCU EFM8LB1如何将系统时钟配置为72M?
Silicon Labs公司推出的EFM8LB1系列8位MCU,集成14位ADC、3*3mm小封装,并且内部集成校准的温度传感器,精度为+/-3度,同时,内集成有24.5M,72M的振荡器,那么如何通过软件将MCU的系统时钟配置到72M呢?本文将详细介绍。
设计经验 发布时间 : 2020-11-07
电子商城
现货市场
品牌: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封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论