【经验】C8051F50X 8位MCU CAN通信时的ID识别方法
SILICON LABS 汽车和工业级MCU C8051F50X采用32引脚、48引脚的小型封装,芯片集成了CAN2.0B总线和LIN2.1总线,可以小体积的CAN通信功能产品。
芯片内部集成的是Bosch –CAN内核,CAN内核的寄存器已经映射到C8051F500的SFR,通过SFR就可以直接访问CAN的相关寄存器。
在使用CAN通信的过程中,产品中有时需要使用信息标识符(ID)对接收的信息做判断,如果只是要接收一个指定的ID的数据,可以使用信息掩码功能(MSK28-0)对ID进行过滤,这样只有指定ID信息报才会被接收,但在IDE的参考程序中只能看到CAN中断中对信息报的编号及数据的处理过程,如下:
uint8_t Interrupt_ID = CAN0IID; // 读取哪一个信息报引起的中断
rx_data.u16[0] = CAN0IF1DA1; // 第一对数据
rx_data.u16[1] = CAN0IF1DA2; // 第二对数据
rx_data.u16[2] = CAN0IF1DB1; // 第三对数据
rx_data.u16[3] = CAN0IF1DB2; //第四对数据
并没有对ID码的读取并判断,而且从寄存器中我们也看不到是哪一个寄存器对应的ID,如果要对ID码做判断,我们首先要信息报的内容,如下图,一个完整的信息报是包括29位ID码的,而且信息报是存储在RAM中的,但我们不能直接访问这些数据,要通过IFX寄存器间接访问。
对于每个信息报来说,可以使用IFX仲裁寄存器(IF Arbitration)访问ID28-0,Xtd和Dir位,而且通过下面的SFR对应对可以查到CAN0IF1A1,CAN0IF1A2就是这仲裁寄存器对应的特殊功能寄存器,在读取前先将信息报读取到IF接口。如下:
CAN0IF1CM = 0x007F; //读取所有信息报到IF1
CAN0IF1CR = Interrupt_ID; //启动读取命令
Uint16 New_ID1 = CAN0IF1A1;
Uint16 New_ID2 = CAN0IF1A2;
这样就可以读取到接收到的信息报的ID,并由程序来做判断了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由John提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】Silicon Labs 8位MCU 烧录程序异常的解决方法
本文介绍Silicon Labs的8位MCU C8051F/EFM8系列的芯片在量产烧录过程中遇到问题的解决方法。
【经验】8位MCU EFM8LB1的SPI时钟频率度计算方法
EFM8LB1系列是Silicon Labs公司推出的高性能8位MCU,带有通信速率最高12 Mbps的 SPI,支持主/从模式,本文将介绍SPI时钟频率度是如何计算的,以及要产生一个时钟频率,软件如何初始化。
简单至关重要:为何8位MCU将持续发展?
几十年来,8位MCU一直是无数嵌入式应用的主力,尤其是消费产品和医疗器械中的应用。简单、有效的8位MCU在推动智能物联网产品的发展中发挥了核心作用。虽然其后代的功能(如32位和无线MCU)继续领先,但对于广泛的应用来说,8位MCU的普及和偏好没有放缓的迹象。
Silicon Labs EFM8系列8位MCU的IO Crossbar硬件分配
EFM8系列是Silicon Labs公司的8位MCU,总共分为4个系列:通用型EFM8BB系列、低功耗EFM8SB系列、带USB的EFM8UB系列和高性能的EFM8LB系列。EFM8系列MCU的IO具有Crossbar功能,即软件上可以分配IO的外设,为硬件设计提供了灵活性。但是Crossbar功能分配外设时并不是引脚随意分配,而是具有优先级要求的。
【经验】8位MCU EFM8SB2擦除Flash会复位的解决方法
SILICON LABS的EFM8SB2是最节能的小封装8位MCU。采用高效的8051内核,最低睡眠电流为50nA,功耗可达170μA/MHz,可应用手持设备、电池驱动式消费电子设备、传感器接口等。
【应用】主频高达50MHz的芯科科技8位MCU用于电子烟,静态功耗低至1.3μA
芯科科技EFM8BB51F8G-A-QFN20这颗多功能的8位MCU,具有小型的综合功能集包裹具有高效的8051核、支持5V的I/O、精确模拟和增强的脉宽调制,本文主要介绍芯科科技EFM8BB51F8G-A-QFN20 MCU应用于电子烟产品。
【经验】简介EFM8SB2 8位MCU的3线制SPI配置,使片选线(CS/NSS)的选择更灵活
嵌入式开发中,我们经常会用到SPI通讯,本文主要介绍Silencon Labs EFM8SB2 8位MCU的3线制SPI。当使用3线制的SPI时,我们可以更方便的配置片选线。
【经验】8位MCU EFM8系列内部BOOTLOADER的空间分配
本文介绍Silicon Labs的8位MCUEFM8系列内部BOOTLOADER占用FLASH空间的情况,及程序中对FLASH空间地址的分配。
【应用】芯科8位MCU用于分酸分注器上,集成12位分辨率的ADC采样,主频达49MHz
分酸分注器,通过控制电机打开关闭阀门,将酸性液体注入到石油中,采用芯科的8位MCU EFM8BB31F64I-D-5QFN32作为信息采集和控制信号发送,此芯片集成了2个UART和 1个IIC接口,满足产品对外设接口的需求。
【经验】8位MCU EFM8LB1 FLASH擦写操作步骤
EFM8LB1系列是silabs专门针对光模块以及消费市场推出的高度集成的3x3mm小封装8位MCU,内部自带温度传感器,+/-3℃温度范围,可选0-4路DAC,UART或者SMBUS bootloader,以及其他通用接口。本文主要介绍EFM8LB1系列Flash的擦写方式以及步骤。
【经验】Silicon Labs 8位MCU EFM8LB SMBUS通信异常状态的处理
Silicon Labs 8位MCU EFM8LB芯片工作主频可以达到72MHz,在3*3mm的极小封装内集成有14位ADC、12位DAC、±3℃温度传感器、模拟比较器及高速通信外设等功能,芯片集成度高,运算速度快,在信号处理等领域有广泛的应用。 本文介绍Silicon Labs 8位MCU EFM8L SMBUS总线通信异常的分析及解决方法。
【经验】使用8位MCU C8051F580时如何计算CAN位时间寄存器
在使用Silicon Labs的8位MCU C8051F580的CAN功能时,相对复杂的是CAN位时间寄存器的设置,在本文将举例说明C8051F580的CAN位时间寄存器的计算方法。
【经验】如何读取8位MCU EFM8SB2的UID值?
Silicon Labs的8位MCU EFM8BB2系列中有一个唯一识别码,叫做UID。我们在开发中有些时候需要使用读取UID,本文将分享如何在程序中读取EFM8BB2系列MCU的UID。
【技术】8位MCU与32位MCU的区别
对某类应用做产品定义和规划时,首要任务之一就是选择理想的处理器/控制器,但开发人员往往难以选择合适的MCU。本文是关于微控制器的技术文章,该文从基本差异、基准性能、应用适用性等角度详细地对8位和32位MCU进行了分析。
【经验】在KEIL中建立8位MCU C8051F580分页(BANK)项目的方法
在KEIL中建立Silicon Labs 8位MCU C8051F580的程序时,如果程序大于64KB就要使用分页的方法,否则无法产生大于64KB的目标程序。本文介绍在KEIL环境下建立C8051F580分页项目的方法以及相关的注意事项。
电子商城
现货市场
品牌: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 提交需求>
登录 | 立即注册
提交评论