欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 嵌入式硬件篇---CAN

嵌入式硬件篇---CAN

2025/6/1 20:19:22 来源:https://blog.csdn.net/2301_79556402/article/details/147868611  浏览:    关键词:嵌入式硬件篇---CAN

文章目录

  • 前言
  • 1. CAN协议基础
    • 1.1 物理层特性
      • 差分信号线
      • 终端电阻
      • 通信速率
      • 总线拓扑
    • 1.2 帧类型
    • 1.3 数据帧格式
  • 2. STM32F103RCT6的CAN硬件配置
    • 2.1 硬件连接
    • 2.2 CubeMX配置
      • 启用CAN1
      • 模式
      • 波特率
      • 引脚分配
      • 过滤器配置(可选)
  • 3. HAL库代码实现
    • 3.1 CAN初始化
    • 3.2 发送CAN数据帧
    • 3.3 接收CAN数据帧(中断模式)
  • 4. 过滤器配置(接收特定ID)
  • 5. 波特率计算
  • 6. 常见问题与调试
    • 6.1 通信失败原因
      • 波特率不匹配
      • 终端电阻缺失
      • ID冲突
      • 硬件连接错误
    • 6.2 逻辑分析仪抓包
  • 7. 完整示例:双机通信
    • 节点A(发送数据)
    • 节点B(接收数据)
  • 总结
    • 硬件配置
    • 数据收发
    • 调试工具
    • 应用场景


前言

CAN(Controller Area Network)是一种高可靠性、多主机的串行通信协议,广泛应用于汽车电子、工业控制等领域。STM32F103RCT6内置了bxCAN控制器(Basic Extended CAN),支持CAN 2.0A/B标准。以下是详细协议解析及代码实现


1. CAN协议基础

1.1 物理层特性

差分信号线

CAN_H(高电平线)
CAN_L(低电平线)

终端电阻

终端电阻:120Ω(两端各一个,抑制反射)。

通信速率

通信速率:最高1 Mbps(常见波特率:125kbps、250kbps、500kbps)。

总线拓扑

总线拓扑:线性总线结构,支持多节点(最多110个节点)。

1.2 帧类型

帧类型 用途
数据帧 传输实际数据(核心帧类型)
远程帧 请求其他节点发送数据
错误帧 报告通信错误
过载帧 通知节点延迟响应

1.3 数据帧格式

[帧起始] [仲裁段] [控制段] [数据段] [CRC段] [ACK段] [帧结束]
仲裁段:
标准帧(11位ID):CAN 2.0A。
扩展帧(29位ID):CAN 2.0B。
数据段:0~8字节有效载荷。

2. STM32F103RCT6的CAN硬件配置

2.1 硬件连接

CAN信号 STM32引脚 说明
CAN_RX PA11 接收引脚
CAN_TX PA12 发送引脚
CAN_H 连接总线 高电平线
CAN_L 连接总线 低电平线
终端电阻 120Ω 接在总线两端

2.2 CubeMX配置

启用CAN1

模式

模式:Normal(正常模式)。

波特率

波特率:500kbps(时钟分频需匹配APB1时钟,默认36MHz)。

引脚分配

引脚分配:

CAN_RX → PA11
CAN_TX → PA12

过滤器配置(可选)

设置接收过滤器(如仅接收特定ID的帧)。

3. HAL库代码实现

3.1 CAN初始化

#include "stm32f1xx_hal.h"CAN_HandleTypeDef hcan;void MX_CAN_Init(void) {hcan.Instance = CAN1;hcan.Init.Prescaler = 9;          // 波特率 = 36MHz / (Prescaler * (1 + BS1 + BS2)) = 500kbpshcan.Init.Mode = CAN_MODE_NORMAL;  // 正常模式(非环回)hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;hcan.Init.TimeSeg1 = CAN_BS1_4TQ;  // BS1 = 4时间单位hcan.Init.TimeSeg2 = CAN_BS2_3TQ;  // BS2 = 3时间单位hcan.Init.TimeTriggeredMode = DISABLE;hcan.Init.AutoBusOff = DISABLE;hcan.Init.AutoWakeUp = DISABLE;hcan

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词