STM32 CUBEMX CAN通信数据发送失败原因分析

CAN通信是一种数据通信协议,用于在不同设备之间进行通信。它是一种高效的、实时的、可靠的、多主机的、串行通信系统,通常用于汽车电子、工业自动化等领域。CAN通信协议是由德国BOSCH公司于1986年引入,并在欧洲和日本广泛使用。CAN通信具有独特的优点,如数据传输速度快、可靠性高、系统稳定等,因此在各种行业得到广泛应用。

CAN通信协议采用基于事件的异步通信方式,该方式可以使多个节点同时访问同一个总线,不会引起冲突。此外,CAN通信协议可以通过数据帧的重发和错误检测机制保证数据传输的可靠性。CAN通信协议还具有较高的扩展性和灵活性,可以通过添加特定的功能模块和软件配置满足不同应用场景的需求。

在CAN通信协议中,每个节点都可以发送和接收消息。发送和接收的消息由数据帧来表示,数据帧包括帧头和帧体。帧头包括了帧标识符,用于表示标准和扩展帧的类型和帧的优先级。帧体包括了节点发送的数据。CAN通信协议中的帧结构良好,数据透明,易于处理和解析。

总之,CAN通信协议是一种广泛应用的通信协议,用于在各种应用场景中进行高效、可靠和稳定的数据通信。

1.使用CAN通信发送数据发现依照步骤配置后,无法发送数据,最后分析发现是波特率配置问题:

波特率配置失败:

c 复制代码
/* CAN init function */
void MX_CAN_Init(void)
{

  /* USER CODE BEGIN CAN_Init 0 */

  /* USER CODE END CAN_Init 0 */

  /* USER CODE BEGIN CAN_Init 1 */

  /* USER CODE END CAN_Init 1 */
  hcan.Instance = CAN1;
  hcan.Init.Prescaler = 24;
  hcan.Init.Mode = CAN_MODE_NORMAL;
  hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
  hcan.Init.TimeSeg1 = CAN_BS1_1TQ;
  hcan.Init.TimeSeg2 = CAN_BS2_1TQ;
  hcan.Init.TimeTriggeredMode = DISABLE;
  hcan.Init.AutoBusOff = DISABLE;
  hcan.Init.AutoWakeUp = DISABLE;
  hcan.Init.AutoRetransmission = DISABLE;
  hcan.Init.ReceiveFifoLocked = DISABLE;
  hcan.Init.TransmitFifoPriority = DISABLE;
  if (HAL_CAN_Init(&hcan) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN CAN_Init 2 */

  /* USER CODE END CAN_Init 2 */

}

发送数据失败:

波特率配置成功:

数据发送成功。

相关推荐
阿巴~阿巴~26 分钟前
私网与公网的协同之道:NAT、IP架构与互联网连接全景解析
网络·网络协议·tcp/ip·架构·ip·tcp·公网私网ip
电子科技圈1 小时前
芯科科技出展CES 2026并展出如何加速互联智能的未来
科技·嵌入式硬件·mcu·物联网·iot
源远流长jerry6 小时前
curl、ping、iptables、iperf、tcpdump解析
网络·网络协议·测试工具·ip·tcpdump
点灯小铭7 小时前
基于单片机的多路热电偶温度监测与报警器
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
米羊1217 小时前
OA 系统防护与渗透测试(上)
网络·安全
林疏safe7 小时前
应急演练剧本
网络
manuel_897579 小时前
六 系统安全
网络·数据库·系统安全
无忧智库9 小时前
深度解读《某低空经济试验区“十五五”通用航空机场与无人机物流网络初步设计方案》:构建未来低空经济数字底座的全景蓝图
网络·无人机
Arwen30310 小时前
SSL 加密证书助力企业构建安全的网络环境
网络·网络协议·tcp/ip·安全·php·ssl
乾元10 小时前
ISP 级别的异常洪泛检测与防护——大流量事件的 AI 自动识别与响应工程
运维·网络·人工智能·安全·web安全·架构