【CAN总线】STM32的CAN外设

目录

CAN外设

在STM32F10xx参考手册第22章 控制器局域网 bxCAN

• STM32内置bxCAN外设(CAN控制器),支持CAN2.0A和2.0B,可以自动发送CAN报文和按照过滤器自动接收指定CAN报文,程序只需处理报文数据而无需关注总线的电平细节

• 波特率最高可达1兆位/秒 (1Mbps)

• 3个可配置优先级的发送邮箱(发送的时候,有三个缓存区)

• 2个3级深度的接收FIFO(三个接收的缓存区,总共可以缓存2*3=6个报文)

• 14个过滤器组(互联型28个)

• 时间触发通信、自动离线恢复、

自动唤醒、禁止自动重传、

接收FIFO溢出处理方式可配置、

发送优先级可配置、双CAN模式

• STM32F103C8T6 CAN资源:CAN1(只有一个CAN外设)

CAN网络拓扑结构

每个CAN节点都挂载在CAN总线上,对于一个节点,都由CAN控制器CAN收发器CAN控制器一般集成在CPU(集成在CPU里面),本次用的CAN外设就是集成在STM32内部的。

接线:STM32引出CAN_RXCAN_TX与收发器连接,收发器引出CAN_HighCAN_Low,这两根线接到CAN总线。
CAN_RX --- PA11
CAN_TX --- PA12

这款芯片中,USB和CAN是无法同时使用的!

CAN收发器电路

TJA1050收发器模块

模块原理图

TJA1050芯片手册的应用电路

注意VCC5V,不能接3.3V,因为CAN_H引脚显性电平都是3.5V
CAN控制器CAN收发器是TX接TX,RX接RX,和串口是不一样的。

  • 如果我们使用3个设备进行CAN通信,那么总线上就有3个120欧的终端电阻
  • 实际上3个120欧的终端电阻是没有问题的!一方面是阻抗匹配,防止回波反射(最好使用双绞线),另一方面,3个终端电阻,总线收紧的作用会更强,所以总线张开的力就会更大,总线的功率会更大!(3个终端电阻还在可承受的范围内)

CAN框图

  • STM32F103CT6没有CAN2,只看上半部分即可
  • CAN2和CAN1不是单独的,CAN2是辅助CAN1工作的!
    ==程序通过读写寄存器来操纵电路的运行!

发送邮箱有3个,每个邮箱可以存放一个CAN报文,如果我们想发送一个报文,那就把报文写到一个空置邮箱中,然后设置寄存器请求发送就ok了,剩下的等待总线空闲,操作引脚输出波形,位同步,仲裁都是由硬件电路自动完成的。

收到的报文,如果能通过接收过滤器,就存入接收FIFO(先进先出寄存器(队列)),不能通过接收过滤器的报文直接扔掉,减轻软件的负担。

17.00

相关推荐
恒锐丰科技韩生6 分钟前
率能 SS6635E|3.0~30V 直流双向 H 桥电机驱动 SOP8 玩具电子锁机器人分享
嵌入式硬件·硬件工程
嘉子的秃头日记7 分钟前
机械革命“自动修复”无法修复你的电脑
stm32·单片机·电脑
恒锐丰科技林技术员9 分钟前
高集成双通道 H 桥驱动芯片 SS6850H:低压直流电机驱动优选方案
嵌入式硬件·硬件工程
森旺电子16 分钟前
电子负载使用介绍
单片机·嵌入式硬件
hsjiasb10 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
WWJA王文举11 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
LCG元11 小时前
STM32+ESP8266+MQTT 物联网气象站:从零搭建温湿度远程监测系统(附完整源码)
stm32·物联网·struts
qq_4480111612 小时前
C语言中的动态内存分配
c语言·开发语言·php
FakeOccupational13 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
动词ing13 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习