ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【经验】8位MCU EFM8LB1 I2C_Slave多地址接收原理详解,光模块普遍使用该功能

2019-03-11 09:47:53  阅读:853  来源: 互联网

标签:Slave 地址 寄存器 发送数据 bit I2C MCU


8位MCU EFM8LB1Silicon Labs专门针对光模块、小家电推荐的一款小封装、高性价比微控制器解决方案,EFM8LB1系列MCU,可选I2C bootloader、UART bootloader功能,内部自己温度传感器,精度+/-3℃,14bit精度ADC,3X3mm小封装,

在光模块以及小家电市场中,有非常多的成功案列,尤其是光模块市场,占有90%以上的市场份额。

 

本文主要讲解EFM8LB1系列8位MCU的I2C_slave的多地址模式,在光模块中普遍会用到这个功能。

1、I2C_Slave模式最高速率可达3.4Mbps,I2C主机想访问I2C_Slave设备,需要知道I2C_Slave设备的地址。

2、在寄存器I2C0SLAD: I2C0 Slave Address中可以设置设备的从地址,寄存器如下:

在这个寄存器中只可以设置一个从地址,比如设置为0x50,当主机只有发送数据到地址0xA0的时候,从地址才可以收到数据,

 

比如设置为0x51,那么当主机只有发送数据到地址0xA1的时候,从地址才可以收到数据,那么如何不论主机发送数据到地址0xA0或者0xA1的时候,从设备都可以接收到I2C_Master的数据呢?

 

下面讲解I2C_Slave的另外一个寄存器,从地址掩码I2C0ADM: I2C0 Slave Address Mask:

从地址掩码的功能是掩盖掉需要核对的bit,也就是说,可以通过这个寄存器把地址的某个比较bit去掉不进行硬件比较,从而直接接收到来自被掩盖掉bit的之后,地址相同的数据,举例:

把寄存器I2C0ADM = 0x7E,把最后一个bit屏蔽掉,那么需要比较的地址为0x50、0x51,忽略掉最后一个bit,那么两个0x50 = 0x51,两个地址是相同的,所以,此时,不论主机发送数据到从地址0xA0或者0xA1,在slave端,判断地址0x50、0x51为同一个地址,从设备会接收到来自Master的数据。

标签:Slave,地址,寄存器,发送数据,bit,I2C,MCU
来源: https://blog.csdn.net/yhy08090/article/details/88387663

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有