一。STM32 CAN控制器简介-bxCAN
什么是bxCAN:STM32自带了基本扩展CAN外设,又称bxCAN。
F103最多有14个过滤器组,F407有28个。
(二)STM32 CAN控制器的模式简介
工作模式:开始必须是初始化模式,对CAN进行初始化,然后是正常模式,可以正常的收发数据,通过CAN_MCR寄存器控制INRQ和SLEEP。睡吗模式是为了降低功耗用的。
测试模式:通过CAN_BTR寄存器控制LBKM和SILM位。
1. 静默模式:
静默模式下可以接收CANRX上的数据,但不会发送任何数据到CANTX上,一直等于1,也就是发送 隐形电平。
这么模式可以监控总线上面的数据。
2. 环回模式
环回模式可以发送数据到总线上,但是不接收总线上的数据,可以发送数据到CANTX,用示波器可以观察CANTX有波形,而且它发送的数据可以通过里面的环路给接收端,可以自发自收,可以自己检测发送的数据有没有发送出去。如果CAN出现问题可以 用这个模式,用示波器观察波形。
3. 环回静默模式
环回静默模式不管总线上的电平如何都不理,只是自己发送给自己接收,也是测试用的一个模式,用的比较少。
用环回模式就可以检测发送的数据对不对,而且可以在CANTX上用示波器看到发送的数据。
4. 调试模式比较少用。
(三)CAN控制器框图
对于F103只有一个主CAN,对于F407有2个CAN,主和从。
两个CAN分别拥有自己的发送邮箱和接收FIFO,但是他们共用28个筛选器。
(四)标识符筛选器
(五)通过CAN_FM1R和CAN_FS1R可配置筛选器的位宽和模式
可以通过CAN_FM1R和CAN_FS1R这两个寄存器来配置筛选器的位宽和模式。
关键字:STM32 CAN控制器
引用地址:
57。STM32 CAN控制器原理与配置
推荐阅读最新更新时间:2024-03-16 16:16
关于STM32的计数和延时
读者*丽杰*问: 问个问题,我想要获得比较准确的延时时间,用stm32哪个时钟,通过什么方法让他准确? 我的回答: 通过STM32的任意一个TIM定时器都可以达到比较精确的延时时间。 Ⅰ 关于STM32的计数和延时 在STM32中,具有计数(或计时)功能的模块基本都能实现延时功能。如:系统滴答SysTick、定时器TIM、实时时钟RTC、看门狗WDG。 精确延时一般使用定时器TIM即可实现。当然,是否精确,取决于你的主频(也就是晶振)是否准确,如果主频精确,那么实现的延时也一定精确。 一般来说,常温下实现us微秒级的延时,误差还是挺小的(应该说挺精确)。拿F407,主频168M来说,可以实现几十ns纳秒
[单片机]
STM32之I2C原理
一、概述 1、I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成\线与\关系。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平(SDL=1;SCL=1)。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 2、主设备与从设备 系统中的所有外围器件都具有一个7位的\从器件专用地址码\,其中高4位为器件类型,由生产厂家制定,低3位为器件引脚定义地址
[单片机]
完善STM32产品线 意法发布STM32 F3系列
今年5月份,意法半导体发布了基于ARM Cortex-M0架构的STM32 F0系列入门型微控制器,至此,STM32系列产品已经拥有了基于Cortex-M系列内核的完整解决方案,从入门级的微控制器STM32 F0到内置DSP和FPU的高性能微控制器STM32 F4系列,至此,细心认识也许会产生疑问:F3在哪里?它在STM32家族中的地位又将如何?9月13日,意法半导体的32位微控制器产品线经理 Jean-Marc Mathieu专程抵京,为业界揭开了STM32 F3系列产品的神秘面纱。 这套搭载ARM Cortex-M4内核的STM32 F3系列产品不仅内置了DSP和FPU功能,且拥有无与伦比的模拟外设组合,定位介于F1
[单片机]
stm32复位电路工作原理
stm32复位电路工作原理 相信大家对复位电路已经很熟悉了,复位电路是一种用来使电路恢复到起始状态的电路设备,这次我们来讨论一下stm32复位电路工作原理。 stm32是嵌入式单片机,专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核,主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)。 stm32复位电路设计 复位电路能够让系统恢复到初始状态,单片机的复位方式一共有上电复位、系统复位、备份区域复位。
[单片机]
STM32驱动MPU6050(二)——软件实现
软件实现将从下面三个部分来介绍:IIC通信;MPU6050数据读取;数据融合。 1. IIC通信 为了移植的方便,这里的 IIC 采用软件模拟的方式实现。关于 IIC 的基础知识介绍,可参考IIC专题(一)——基础知识准备。 下面以程序的实现过程,梳理一下 IIC 的通信时序。注:这里就采用正点原子的 mpu6050 的学习教程进行学习。 1.1 SDA 和SCL初始化 //初始化IIC void MPU_IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO
[单片机]
STM32外设有哪些?外设在总线上是怎么挂载的?
一:STM32外设有哪些? 外设在STM32库文件的下面路径下:(STM32库:stm32f10x_stdperiph_lib) stm32f10x_stdperiph_libSTM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver 1.MISC:把NVIC的外设驱动放在了misc.c中(NVIC提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器) 2.ADC:模数转换 3.BKP:备份数据 4.CAN:CAN总线是一种通信方式。STM32主要负责程序的运行,而CAN总线只是一种通信协议。STM32之间的通信可以通过CAN总线进行数据交换。
[单片机]
stm32学习笔记——外部中断的使用
基本概念 stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个。比如说,PA0,PB0,PC0,PD0,PE0,PF0,PG0这些为1组,如果我们使用PA0作为外部中断源,那么别的就不能再使用了。在此情况下,我们只能使用类似于PB1,PC2这种末端序号不同的外部中断源。每一组使用一个中断标志EXTIx。EXTI0-EXTI4这5个外部中断有着自己单独的中断响应函数,EXIT5-EXIT9共用一个中断响应函数,EXIT10-EXIT15共用一个中断响应函数。 对于中断的控制,stm32有一个专用的管理机构:NVIC。对于NVIC的详细解释,可以参考《AR
[单片机]
STM32 串口驱动,分层通信
以前在使用串口的时候都是直接使用中断,每收发一个字节都要进一次中断,然后直接在中断进行封包,现在做了一个简单的分层设计,其实这个设计还是驱动设计,后期将逻辑层划分再细致一点,争取做到和linux的shell类似的分层。 软件分层如下 驱动层:串口、DMA、初始化,串口只开启接收空闲中断,DMA中断不开启。 缓冲区:利用malloc和free函数创建的链表,缓冲区管理有两个,一个是接收缓冲区,每次进入接收空闲中断就把数据扔到接收缓冲队列里面去;另一个是发送缓冲区,发送缓冲区无逻辑,这只是一个数据结构。 示意图中的数据指针实际上用的是uint8 数组,当然,第一个数据完全可以塞到第二个数据里面,但是如果使用的是M0芯
[单片机]