STM32H750VB CAN口使用快速上手笔记

stm32h750vet6的总结(1) 基于高性能Arm Cortex-M7 32位RISC内核,工作频率高达480 MHz.集成了高速嵌入式存储器和高达2 MB的双组闪存、高达1 MB的RAM(包括192 KB的TCM RAM、高达864 KB的用户SRAM和4 KB的备份SRAM),以及连接到APB总线的各种增强型I/O和外设, AHB 总线、2x32 位多 AHB 总线矩阵和支持内部和外部存储器访问的多层 AXI 互连。如果将一个函数移植到另一个。在函数内部定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也就是全局变量。 阅读详情
AI摘要

本文为F103系列老手快速掌握H750 VB平台的FDCAN接口提供指南,重点介绍其10MBIT/S的高速率特性及配置方法。通过CUBEMX进行时钟、引脚配置,详细解析波特率计算,并给出发送、接收函数及中断处理示例。

:),作为多年的程序老手了,学习新的东西已经木有太多的耐心了,现在的处理器平台强大到早就过了那个需要对所有单 片机资源精打细算的年代了,新的开发工具也变得非常强大傻瓜化,从F103到H750平台硬件资源的更新,让使用也亦一些不习惯,本文为F103系列老手快速上手H750笔记之CAN口篇:)
正题:)H750VB的CAN口为新的FDCAN,最看重的是支持10MBIT/S的速率,这个是很舒服,大大的提高的通信能力,测试了一下,1MB的速率下,传输一个8字节的标准ID数据帧为120uS的时间,用FDCAN使用2MB的速率,传输时间就到了73uS左右,(这里因为仲裁帧还是用的1MB速率),用在一些高频率小数据传输场合极度合适:),下面说怎么用:)
还是用CUBEMX来先进行配置:)先是时钟,CPU480MHZ,CAN选择PLL1Q=40MHZ,下图:)在这里插入图片描述
在这里插入图片描述
引脚配置,如图:)
在这里插入图片描述
基本功能配置
在这里插入图片描述
其他的不做太多说明,这里对波特率说明一下:)
仲裁段can波特率= fdcan_ker_ck/Nominal Prescaler/(Nominal Sync Jump Width+Nominal Time Seg1 +Nominal Time Seg1 )
仲裁段波特率=40/1/(1+31+8)=1Mbit/S
数据段can波特率= fdcan_ker_ck/Nominal Prescaler/(Nominal Sync Jump Width+Nominal Time Seg1 +Nominal Time Seg1 )
数据段波特率=40/1/(1+14+5)=2Mbit/S
这几个数据的组合,我一般Sync Jump Width设定为1,Nominal Time Seg1 >Nominal Time Seg2*3:),因为Nominal Time Seg1包含了Propagation_segment段。
实际测试通信效果非常好:)
然后是中断设置,我的应用是发送不中断,接收产生中断并处理数据,如下图:)
在这里插入图片描述
点击产生代码,然后到MDK里面:)
在这里插入图片描述
主程序 的初始化程序会产生这样一个初始化,但这个初始化只是初始化的硬件部分和IO,中断这些都不在这里初始化,需要自行增加:)
//下面这些中断需要自己打开
在这里插入图片描述

__HAL_FDCAN_ENABLE_IT(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE);//打开FIFO0新信息中断
HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn);//打开FDCAN1_IT0_IRQn中断,
// HAL_NVIC_EnableIRQ(FDCAN1_IT1_IRQn);
/* Configure Rx filter */
//初始化接收的ID码过滤器
sFilterConfig.IdType = FDCAN_STANDARD_ID;
sFilterConfig.FilterIndex = 0;
sFilterConfig.FilterType = FDCAN_FILTER_MASK;
sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
sFilterConfig.FilterID1 = 0x0;
sFilterConfig.FilterID2 = 0x0; // For acceptance, MessageID and FilterID1 must match exactly
HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig);

//配置CAN口FIFO0深度为0,这里因为接收的信息比较少
/* Configure Rx FIFO 0 watermark to 2 /
HAL_FDCAN_ConfigFifoWatermark(&hfdcan1, FDCAN_CFG_RX_FIFO0, 2);
/
Activate Rx FIFO 0 watermark notification */
//启动激活接收FIFO0,因为只用到接收FIFO0
HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_WATERMARK, 0);
HAL_FDCAN_Start(&hfdcan1);//启动CAN1口
这里就完成启动CAN1口了,可以发送,可以接收CAN数据了:)
先定义两个变量,发送和接收的描述变量
FDCAN_RxHeaderTypeDef FDCAN1_RxHeader;
FDCAN_TxHeaderTypeDef FDCAN1_TxHeader;

下面是发送函数,这里一定要注意字节数只能用定义的宏来做,不然不对,和以前不一样,:)
在这里插入图片描述
void CAN_wrMsg1 (CanTxMsg *msg) {//发送CAN数据帧
FDCAN1_TxHeader.Identifier=msg->StdId; //32位ID
FDCAN1_TxHeader.IdType=FDCAN_STANDARD_ID;//标准帧FDCAN_STANDARD_ID
FDCAN1_TxHeader.TxFrameType=FDCAN_DATA_FRAME ;//数据帧
FDCAN1_TxHeader.DataLength=FDCAN_DLC_BYTES_8;//数据长度=8字节
FDCAN1_TxHeader.ErrorStateIndicator=FDCAN_ESI_ACTIVE;
FDCAN1_TxHeader.BitRateSwitch=FDCAN_BRS_ON;//打开CAN速率切换 FDCAN_BRS_OFF;//关闭速率切换
FDCAN1_TxHeader.FDFormat=FDCAN_FD_CAN;//FDCAN模式 FDCAN_CLASSIC_CAN;//传统的CAN模式
FDCAN1_TxHeader.TxEventFifoControl=FDCAN_NO_TX_EVENTS; //无发送事件
FDCAN1_TxHeader.MessageMarker=0;
TX_Statues=HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1,&FDCAN1_TxHeader,msg->Data);//发送
//HAL_FDCAN_AddMessageToTxBuffer(&hfdcan1,&FDCAN1_TxHeader,msg->data,1);//发送
}
接收函数:)CAN_ID,帧格式等除了数据都在 FDCAN1_RxHeader变量里,数据在msg_data指向的数据缓存中:)
在这里插入图片描述
void CAN_rdMsg (CAN_msg *msg) {
//提取FIFO0中接收到的数据
HAL_FDCAN_GetRxMessage(&hfdcan1,FDCAN_RX_FIFO0,&FDCAN1_RxHeader,msg->data);
// HAL_FDCAN_GetRxMessage(&hfdcan1,FDCAN_RX_BUFFER0,&FDCAN1_RxHeader,msg->data);
}
这就是CAN操作的其本变量和函数了,老手有这些基本能快速上手,常规数据传输基本就这些,其他的如J1939等不在此讨论了:)另外还亦中断处理:)
void FDCAN1_IT0_IRQHandler(void){

 if (__HAL_FDCAN_GET_FLAG(&hfdcan1, FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE) != 0U){//是新数据接收中断
  /* Clear the Rx Buffer New Message flag */
  __HAL_FDCAN_CLEAR_FLAG(&hfdcan1, FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE);//清除中断标志
    CAN_rdMsg (&CAN_RxMsg);                       // 读取CAN新的数据帧
 }

}
其他的中断处理可以依此类推,:)

STM32H750VB FDCAN实战:从经典CAN到10Mbps高速通信的迁移指南 本文详细介绍了STM32H750VB FDCAN模块从经典CAN迁移到10Mbps高速通信的实战指南。通过对比FDCAN与经典CAN的关键差异,提供CubeMX配置技巧、HAL库代码实现及性能优化建议,帮助开发者快速掌握高速CAN通信技术,适用于工业4.0和智能驾驶等场景。 阅读详情

相关推荐

STM32H7无感FOC电机控制开发板硬件设计解析

无传感器磁场定向控制(无感FOC)是现代BLDC与PMSM电机驱动的核心技术,其本质是通过电流、电压等可观测量实时估算转子位置与速度,摆脱物理传感器依赖。实现高精度无感FOC需兼顾算法实时性、信号采样同步性与功率级响应确定性。ARM Cortex-M7内核MCU凭借双精度FPU、高速主频与高级定时器资源,成为中功率工业驱动的理想计算平台;而三电阻电流采样、同步ADC触发、硬件死区保护等电路设计,则直接决定FOC环路稳定性与抗扰能力。本文以一款基于STM32H723VE的工程级电机开发板为例,深入剖析其在无感

weixin_33240461的博客 254

STM32H750 更好用的CANFD 用例详解

目录前言Message RAM分配STM32工程搭建串口配置100us定时器FDCAN配置Bus-Off处理新消息接收处理发送处理使用Xavier配合测试一下完整工程下载关于用作Classic CAN微信公众号 前言 参考前几篇: Jetson Xavier/XavierNX/TX2 CANFD 配置使用 STM32 CANFD 基础知识 STM32G474 CANFD 用例详解 STM32H7系列的FDCAN目前最大也支持3路, 如STM32H730/723/725/733/735等, Message

weifengdq的专栏 1万+

OpenEAI-Platform:开源6+1自由度机器人基座与嵌入式VLA模型实战

机器人智能体是实现具身AI的核心载体,其本质是感知-决策-执行闭环系统。理解多模态融合原理、实时控制架构与硬件协同设计,是构建可落地VLA(视觉-语言-动作)系统的关键技术基础。OpenEAI-Platform作为少有的全栈开源平台,以‘6+1自由度’创新解耦运动与触觉感知,并采用mmap轻量通信替代ROS2,在Jetson Orin Nano上实现23FPS端到端VLA推理与3.2ms确定性控制延迟。它不仅提供标准ROS2兼容数据接口,更深度整合力觉反馈通道与INT8量化VLA模型,显著提升动态抓取鲁棒性

weixin_33787529的博客 359

STM32本质是MCU芯片,不是开发板

STM32是意法半导体推出的基于ARM Cortex-M内核的32位微控制器(MCU)芯片家族,其核心在于硬件资源调度与外设状态机协同。理解其存储器映射、时钟树架构和寄存器级操作原理,是实现高可靠嵌入式系统的基础。该技术具备确定性实时响应、低功耗与工业级外设集成等价值,广泛应用于物联网网关、电机控制、传感器融合及工业通信(如CAN、LIN、USB Host)等场景。本文聚焦‘stm32 adc切换通道’‘stm32 can通信突然连不上’等典型问题背后的真实硬件约束与系统性设计逻辑。

weixin_33984032的博客 418

嵌入式工程师进阶:从裸机到量产的七道硬核关卡

嵌入式系统开发远不止点亮LED或调用HAL库,其本质是软硬协同的系统工程——涉及启动流程、中断优先级、RTOS调度机制、寄存器级驱动、低功耗时序约束及通信协议栈底层实现。理解CMSIS标准、掌握FreeRTOS任务状态迁移与Tick机制,是构建高可靠固件的基础;而真实量产场景中的HardFault定位、DMA双缓冲配置、STOP模式唤醒偏差等难题,往往源于对芯片手册时序图、电源轨稳定性及编译链接过程的深度认知。本内容聚焦进阶工程师能力跃迁,覆盖STM32H7平台下的GCC工具链实战、逻辑分析仪协同调试、外设

weixin_34204722的博客 222

STM32H750智能学生系统开发实战指导

本文还有配套的精品资源,点击获取 简介:基于STM32H750微控制器,本文介绍了智能学生系统的设计与实现,涵盖身份识别、传感器网络、无线通信、显示界面、电源管理、安全功能和机器学习集成等多个关键部分。文档详细解析了如何利用STM32H750的高性能处理能力和丰富接口,通过RTOS等软件技术,提高系统的响应速度和稳定性,实现一个全面的智能学生系统。 1. STM3...

weixin_28913879的博客 3416

国内STM32工程师的真实参考设计获取指南

STM32参考设计并非仅依赖官方文档,而是融合硬件电路、驱动代码与实战调试经验的技术综合体。其核心原理在于将芯片外设特性、PCB电气约束与嵌入式软件协同验证;技术价值体现在大幅缩短项目启动周期、规避量产级设计风险;典型应用场景包括物联网网关、电机控制、传感器采集等国产化开发任务;尤其在国产替代(如GD32)、长尾应用(如智能鱼缸、巴法云接入)和高频问题(如stm32 can通信突然连不上、stm32 adc切换通道残留)中,非官方渠道提供的已打板验证设计与实测参数更具工程落地性。本文聚焦国内真实可用的五大资

weixin_34186128的博客 370

STM32H750VB核心开发板全面开发资源包

STM32H750VB开发板是由STMicroelectronics推出的一款高性能开发平台,它搭载了功能强大的Arm Cortex-M7核心。该开发板专为需要高计算能力的嵌入式应用而设计,例如复杂的算法处理、图像和图形显示、以及实时数据处理等。本章节将介绍STM32H750VB的基本特性、功能规格以及与其他开发板的区别。实现自定义引导程序需要对STM32H7的启动模式和QSPI接口有深入的理解。

weixin_28850145的博客 941

STM32不是芯片型号,而是一套可裁剪的硬件API

STM32是基于ARM Cortex-M内核的32位微控制器家族统称,本质是一套标准化、可配置的嵌入式硬件开发范式。其核心价值在于统一的寄存器架构、外设互联机制与跨系列兼容的开发模型,使工程师能按需匹配资源——如超低功耗选L系列、实时控制选H7、无线集成选WBA。Cortex-M内核通过精简指令集与确定性实时能力,省去MMU、虚拟内存等复杂抽象,降低系统不确定性;而GPIO、ADC、DMA等外设并非孤立模块,而是通过硬件事件链协同工作的‘神经末梢’。这种‘同源异构’设计,支撑从点灯原型到工业量产的平滑演进。

weixin_34405354的博客 302

正点原子北极星开发板(STM32H750)适配RT-Thread 4.1.1的可直接编译工程

这个工程专为正点原子STM32H750北极星开发板设计,完整集成RT-Thread实时操作系统v4.1.1,开箱即用。源码包含RTOS核心功能:线程调度、内存管理(动态/静态)、软件定时器、信号量、互斥量、事件集、邮箱、消息队列等IPC机制,以及空闲线程和系统初始化流程。底层已适配Cortex-M7内核特性,支持FPU运算、TCM内存访问、指令/数据Cache配置与一致性维护。libcpu目录下提供中断控制器(NVIC)、上下文切换、寄存器保存恢复、Cache操作等关键移植代码。设备驱动层覆盖USART、G

ii567的博客 259

STM32H750的FDCAN配置

STM32H750的FDCAN配置,配置为传统CAN,波特率500K,文章见我的博客。电路末端需要增加120欧的终端电阻,原文路径https://blog.youkuaiyun.com/13011803189/article/details/123839036

STM32参考设计选型指南:量产级资源识别与验证方法

STM32参考设计并非简单代码与原理图的组合,而是融合电源完整性、时钟树设计、信号完整性、EMC防护及量产验证的系统性工程资产。其核心原理在于芯片外设电气特性与PCB物理实现的深度耦合,技术价值体现在缩短调试周期、规避批量返工风险、支撑工业/医疗/车规等高可靠性场景落地。当前工程师常混淆功能验证片段与可投产设计,导致USB枚举失败、CAN FD误码率超标、低温启动失效等典型问题。本文聚焦‘量产可用性’这一关键维度,结合VDDA滤波电容、USB PHY供电稳定性等高频实操热词,解析如何从设计完整性、参数自洽性

weixin_33910385的博客 476

STM32H750VBT6 CAN通信收发

CubeMAX配置引脚功能。 CAN通信设置为传统正常模式,波特率为1Mbps。 芯片: STM32H750VBT6 功能介绍: 1、按一次按键发送一则CAN报文 2、接收CAN报文并通过串口打印

STM32五大主流嵌入式操作系统选型指南

嵌入式操作系统(RTOS)是MCU从裸机迈向多任务、网络化与工业级可靠性的核心基础设施。其本质是通过任务调度、同步机制与内存管理,在资源受限的微控制器上构建确定性执行环境,从而支撑实时控制、低功耗通信、OTA升级等关键能力。技术价值在于降低软件复杂度、提升系统可维护性与长期稳定性。典型应用场景涵盖智能传感终端、工业PLC模块、边缘网关及便携医疗设备等。在STM32全系列平台(F0/F1/F4/H7/L4/U5)上,FreeRTOS与RT-Thread因ST官方集成度高、中文生态完善而成为工程落地首选;Zep

weixin_34198453的博客 253

从零开始之stm32之CAN通信

CAN通信极简教程(小白友好版),从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。

qq_30993593的博客 1308

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2017

嵌入式AI编程:STM32开发流程重构与本地化实践

嵌入式AI编程不是简单用大模型生成代码,而是面向资源受限、时序敏感、硬件强耦合的微控制器开发场景,构建可验证、可追溯的工程师-AI协作范式。其核心原理在于将AI定位为‘寄存器翻译官’与‘时序校验哨兵’,依托本地化轻量模型(如Qwen2.5-Coder)实现对STM32外设手册、HAL库约束、CubeMX配置逻辑的精准理解。技术价值体现在大幅压缩需求解构、架构设计、参数推演和调试根因分析周期,同时通过三重校验(寄存器级比对、时序仿真、资源冲突扫描)保障生成结果的物理可行性。典型应用场景覆盖电机控制、USB/C

weixin_34121282的博客 242

SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查)

本文详细介绍了如何使用SpyGlass CDC工具链中的sgdc约束文件解决跨时钟域(CDC)报错问题。从基础约束文件架构到复杂场景调试,涵盖了时钟域定义、复位信号约束、Waiver策略等关键技巧,并附有常见错误排查方法,帮助工程师高效处理CDC验证挑战。

loss4bartender的博客 1148

嵌入式AI编程:Claude Code可信配置与实战指南

嵌入式开发中的AI编程工具,本质是构建可验证、可追溯、可审计的代码生成闭环。其核心不在模型调用本身,而在于执行环境可控性、上下文精准注入与硬件级输出校验——这直接决定生成代码能否通过GCC编译、Cppcheck静态分析及QEMU模拟验证。Claude Code在STM32、FreeRTOS、HAL库等典型嵌入式场景中,需绕过默认Web配置,采用WSL2+Ollama本地模型+Node.js v18.19.0+工程感知提示词工程,才能真正替代重复性技术判断,如中断安全约束、寄存器位域操作、实时内存模型合规性等

weixin_29192141的博客 202

快充协议全兼容!HUSB390对比测试:iPhone/小米/华为哪个充电最快?

本文深入评测了HUSB390快充协议芯片的全兼容性能,展示了其在iPhone、小米和华为设备上的极速充电表现。通过智能功率分配算法和多协议并行处理引擎,HUSB390实现了高效的动态调压和温度控制,显著提升多设备充电效率。特别适合需要同时为不同品牌设备快充的用户。

dd012的博客 1万+

SAP PP工艺路线Routing保姆级配置指南:从CA01创建到替代/并行顺序实战

本文详细解析SAP PP模块中工艺路线(Routing)的配置与应用,从基础创建(CA01)到高级功能如替代顺序和并行顺序的实战操作。通过真实案例演示,帮助用户掌握SAP PP工艺路线的精细化管理,提升生产流程效率。

weixin_30898555的博客 389

Qwen2.5-VL-7B-Instruct与Keil5集成开发:嵌入式AI实战教程

本文介绍了如何在星图GPU平台上自动化部署👁️Qwen2.5-VL-7B-Instruct镜像,赋能嵌入式AI应用。通过平台化部署,开发者可快速构建本地化多模态推理能力,典型应用于工业电路板元件识别——实现图像采集、端侧视觉语言理解与结构化诊断结果输出,全程无需云端依赖,保障数据安全与实时响应。

weixin_31459297的博客 285

DirectX function “GetDeviceRemovedReason“ failed with DXGI_ERROR_DEVICE_HUNG (“The GPU will not resp

游戏报错"DXGI_ERROR_DEVICE_HUNG"的解决方案 在使用RTX 40系显卡运行FIFA 23等游戏时,可能出现DirectX报错导致游戏崩溃。这主要由于最新显卡驱动与DirectX 12的兼容性问题。解决方法包括: 降级显卡驱动版本 修改游戏配置文件,将DIRECTX_SELECT设为1 在显卡控制面板中关闭垂直同步、抗锯齿、DLSS 3等功能 调整电源模式为性能优先 这些操作可以有效解决因驱动兼容性导致的游戏崩溃问题。

猿小白的博客 3893

VS Code C/C++工程化配置:从编译调试到CI/CD实战

VS Code 不是轻量编辑器,而是基于LSP/DAP协议构建的C/C++工程级开发平台。其核心价值在于解耦工具链与IDE,实现跨平台、跨芯片、跨操作系统的统一开发体验。通过tasks.json调度构建、c_cpp_properties.json同步IntelliSense、launch.json映射GDB指令,可支撑嵌入式裸机、Linux服务、Windows应用等多场景开发。结合CMake、OpenOCD、RT-Thread等工业级工具链,能落地可复现、可版本化、可CI/CD自动化的工程基础设施。本文深入

weixin_34174422的博客 307

HyperLynx(十九)DDR(二)DDR的地址仿真

(5)设置水平标尺为2ns/div,垂直标尺为500mV/div,如果有必要,可以通过多次仿真,得到一个更加理想的结果。此外,还可以看到信号在高低电平切换时,反射波形基本趋于平缓,许多大的反射切换边缘已减小,这给了我们更大的定时裕量。如果这些DIMM是缓冲过的,则4个DIMM通道是可行的,但因为这是一个无缓冲DIMM,(20)在编辑传输线对话框中,选择“Values”选项卡,改变传输线长度为3in,具体设置如图所示,单击“确定”按钮。(17)为了增加电压摆幅,选择一个比原来的47Ω小的电阻。

小幽余生不加糖 4258

ATT MTU 交换机制:提升 BLE 数据传输效率的关键

在低功耗蓝牙(BLE)技术的面试中,ATT MTU 交换机制始终是高频考点。无论是芯片厂商的固件开发岗,还是物联网设备的协议栈调试岗,面试官都爱通过这个知识点考察候选人对 BLE 数据传输底层逻辑的理解。本文将系统梳理核心考点,结合历年真题详解应答思路,轻松应对这类问题。​

byte轻骑兵的技术小窝 2411
上一篇: STM32H750 480MHZ频率 RAM分配处理 KEIL工程
devicenet
博客等级 码龄17年 23粉丝 5原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值