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 */

}

发送数据失败:

波特率配置成功:

数据发送成功。

相关推荐
单片机仿真设计1 小时前
【proteus仿真】基于 STC89C52 单片机家用智能台灯设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
2601_950790681 小时前
深圳国产单片机厂商怎么选?技术能力与服务能力检查表
单片机·嵌入式硬件·国产mcu·芯片厂商·深圳单片机·单片机选型
CDN3602 小时前
节点智能调度实操:解决出海区域访问快慢不均、节点拥堵、跨洋延迟高,CDN 全网择优落地方案
运维·服务器·网络
roman_日积跬步-终至千里2 小时前
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制
java·服务器·网络
笨笨饿3 小时前
#135_代码中的类型重定义艺术:从基础封装到函数类型设计
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
西城微科方案开发4 小时前
高精度低功耗胎压计方案——气压表解决方案
单片机·嵌入式硬件
可乐鸡翅yeah_4 小时前
个人 / 外包流媒体项目交付实战,M3U8 验收与问题闭环完整工作流
运维·网络·python·低代码·django·m3u8·在线播放
LavaLin015 小时前
STM32H562RGT6 与 STM32F722RET6 规格对比
stm32
VALENIAN瓦伦尼安教学设备5 小时前
设备状态检测振动分析实训台案例分析
大数据·数据库·人工智能·嵌入式硬件·算法
米饭不加菜5 小时前
一些常用模块简介
经验分享·笔记·嵌入式硬件