hc32和stm32 can波特率设置

news2024/11/27 12:46:31

前言

笔者在调试一款新的mcu的can通信时候,最麻烦的是波特率设置。由于没有弄明白其计算原理,经常出错,且不同的波特率有不同的采样点的要求。浪费了不少时间。这次一次搞明白can波特率的计算公式。

can波特率计算

在ISO 11898-1-2015 标准中有对can波特了的描述
在这里插入图片描述
其中nominal bit rate 即为波特率。nominal bit time 由Sync_seg,Prop_seg,Phase_seg2,Phase_seg2这四部分组成。
在这里插入图片描述
其中 Sync_Seg为1个tq 其他都是n个tq,则
假设Prop_seg = prop_segtq;
phase_seg1= seg1
tq
phase_seg2= seg2*tq
BAUD = 1/(tq(1+pro_seg+seg1+seg2))

seg配置:在标准中推荐了seg配置范围
在这里插入图片描述

tq为时间片,即为can通信的时钟周期。
接下来看下stm32 和hc32can内部结构

stm32 can

在这里插入图片描述
在stm32中,可以看到其BS1实际上是Prop_seg+phase_seg1。
经过转换,其波特率为
baudRate = fpclk/(BRP+1)/(1+ tbs1+1 + tbs2+1)

其在can初始化配置的结构体定义如下:
在这里插入图片描述
其中 TimeSeg1 = tbs1+1
TimeSeg2 = tbs2+1
Prescaler = BRP+1
从而得出:
baudRate = fpclk/Prescaler/(1+ TimeSeg1 + TimeSeg2 )其中在stm32f407中fpclk=APB1=42M
采样点 sample_point = (TimeSeg1)/(1+ TimeSeg1 + TimeSeg2 )

目前采样点暂时没有找到官方的要求,一般是如下要求
75% when BaudRate > 800K
80% when BaudRate > 500K
87.5% when BaudRate <= 500K
比如波特率500k ,尽量将采样点设置为80%。

hc32 can

笔者使用的是hc32f4a0
在这里插入图片描述
在其数据手册中可以看到,其将sync_seg也融合到了Seg1了。
其波特率计算公式为:

在其初始结构体中定义如下:
在这里插入图片描述
HC推荐can控制器的时钟设置为40M
最终的计算公式为:
baudrate = CANclock /u32Prescaler/(u32TimeSeg1+u32TimeSeg2)
samplepoint = u32TimeSeg1/(u32TimeSeg1+u32TimeSeg2)

数据手册中还推荐了其他配置规则
在这里插入图片描述u32TimeSeg1 >=u32TimeSeg2+1
u32TimeSeg2 >=u32SJW

实际上由于hc32支持fanfd 。所以u32TimeSeg2 u32TimeSeg1 可以大于8。stm32f4不支持canfd,所以其配置要小于8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/92138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音视频基础概念(2)——音频

目录 1. 基本知识 2.采样率和采样位数 3.音频编码 4. 声道数 5. 码率 6. 音频格式 日常生活中&#xff0c;音视频随处可见&#xff0c;包括视频、音频、编解码、封装容器、音视频等概念。 1. 基本知识 音频数据的承载方式最常用的是脉冲编码调制&#xff0c;即PCM。于…

JAVA面试(2022年Java常见面试问题)

1、谈谈你对Spring中IOC和AOP的理解。 答案&#xff1a; 2、谈谈Spring的bean的创建过程和生命周期。 答案&#xff1a; 3、谈一下JVM的内存分配和垃圾回收机制。 答案&#xff1a; 4、谈一下你使用比较多的设计模式和场景。 答案&#xff1a; 5、谈一些mysql的事务隔离。 …

什么是文件系统?

【推荐阅读】 一文了解Linux上TCP的几个内核参数调优 一文剖析Linux内核中内存管理 分析linux启动内核源码 文件系统是操作系统用于明确存储设备&#xff08;常见的是磁盘&#xff0c;也有基于NAND Flash的固态硬盘&#xff09;或分区上的文件的方法和数据结构&#xff0c;…

传奇列表上传登录器公告小窗口怎么修改

传奇列表上传登录器公告小窗口怎么修改 很多小伙伴不会上传列表&#xff0c;我是艾西今天给大家分享下怎么上传列表 我们开始实操&#xff08;纯教学分享&#xff09; 在我们的网站文件夹里创建一个列表.txt 在浏览器里找一个列表模板例&#xff1a;www.pkp123.cn:88&#xff…

1570_AURIX_TC275_SCU_ERU

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 从系统的逻辑图看&#xff0c;能够很清楚看到这个模块的功能处理过程&#xff1a;首先是边沿信号的识别&#xff0c;接着是根据判断进行置位处理&#xff0c;最后进行工作触发。如果设置的…

使用Nordic的nRF52840 Dongle配合Wireshark对蓝牙设备抓包(BLE)

硬件准备&#xff1a; 1&#xff09;nRF52840 Dongle 2&#xff09;待抓包的蓝牙设备 软件准备&#xff1a; 1&#xff09;Python 2&#xff09;Wireshark 3&#xff09;nRF Sniffer for Bluetooth LE Python安装 需要注意的是下载的nRF Sniffer for Bluetooth LE版本是否…

K8s 之 Deployment 应用案例

目录一、YAML 配置文件二、运行服务三、更新 Deployment3.1 动态伸缩容3.2 触发上线四、故障自动转移五、指定节点运行 Pod六、删除 deployment一、YAML 配置文件 我们要清楚&#xff0c;在 K8s 中有两种创建资源的方式&#xff1a; &#xff08;1&#xff09;命令行方式&…

【GO】 K8s 管理系统项目[API部分--Pod]

K8s 管理系统项目[API部分–Pod] 前端: Vueelement plus 后端: gogin 1. 功能设计 2. 初始化 2.1创建项目 2.2 配置goproxy GOPROXYhttps://goproxy.cn 2.3 添加格式化工具 2.4 安装模块 go get k8s.io/client-go/tools/clientcmd go get k8s.io/api/core/v1 go get k8s.i…

使用 docker buildx 构建跨平台 Go 镜像

目录 前提 docker buildx 启用 Buildx builder 实例 构建驱动 buildx 的跨平台构建策略 一次构建多个架构 Go 镜像实践 源代码和 Dockerfile 执行跨平台构建 验证构建结果 如何交叉编译 Golang 的 CGO 项目 准备交叉编译环境和依赖 交叉编译 CGO 示例 总结 参考链接…

供水设备远程监控客户案例

一、客户介绍 客户积累多年的技术研发和工程运维经验&#xff0c;对传统的恒压供水工程所面临的维护难、维修难、运维效率低和能耗管控弱等诸多问题有深刻的体会&#xff0c;经过广泛调研&#xff0c;客户最终选择使用蓝蜂物联网的云平台和边缘计算产品对恒压供水设备和工程进行…

数据处理指令(一)—— 搬移指令MOV、MVN

数据处理指令指的是和数学运算、逻辑运算相关的指令&#xff0c;比如加减乘、与或非、赋值比较等 目录 1、MOV —— 直接搬移 (1) MOV 指令格式 (2) MOV生成指令的策略&#xff08;MOV的优点&#xff09; (3) MOV 只能搬移“立即数”的原因&#xff08;MOV的缺点&#x…

问卷设计一:问卷题目哪些有类型和注意要点?

问卷法常被人们应用于社会调查中&#xff0c;它能反馈出最真实的社会信息。所以&#xff0c;很多企业为了最大程度地了解市场&#xff0c;也经常使用问卷调查法进行研究。不过&#xff0c;想要发挥出问卷法的最大用处&#xff0c;前提是要将问卷设计规范并且可量化。 想要设计…

用ArkTs在鸿蒙系统上画一个世界杯海报

偶然看到了CSDN关于世界杯的征文活动&#xff1a; 用代码画一个足球&#xff1f; 哈哈很有意思&#xff01; 想了想&#xff0c;画一个自定义View&#xff08;足球&#xff09;&#xff0c;当然是使用Canvas了&#xff0c;但除了Canvas还有没有其它方法呢&#xff1f;那是必须…

c语言算数转换 操作符

【题目名称】下面代码的结果是&#xff1a;( b)#include <stdio.h> int main() {int a, b, c;a 5;c a;b c, c, a, a;//逗号表达式从左向右以此计算 表达式结果是最后一个表达式b a c; //a9 先算加后算加等printf("a %d b %d c %d\n:", a, b, c);retu…

【软件测试】工作瓶颈?测试的出路在哪?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 3年软件测试经验&am…

【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议

目录 一、基础知识 二、隧道技术 1、简介&#xff1a; 2、SMB隧道 3、ICMP隧道 4、DNS隧道 5、SSH协议 6、控制上线-插件 一、基础知识 【内网安全-基础】基础知识、信息收集、工具https://blog.csdn.net/qq_53079406/article/details/128292587?spm1001.2014.3001.55…

Seata 术语

爬虫组件分析目录概述需求&#xff1a;设计思路实现思路分析1.TC (Transaction Coordinator) - 事务协调者2.TM (Transaction Manager) - 事务管理器3.RM参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&…

[附源码]Nodejs计算机毕业设计基于的防疫隔离服务系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

ruoyi-vue 集成electron详细步骤

刚使用ruoyi-vue开始集成electron的可以直接去这个地址下载源码 ruoyi-vue-electron: 使用ruoyi-vue集成electron 集成步骤&#xff1a; 1、在ruoyi-vue项目中安装electron相关插件 //进入ruoyi-ui 按顺序执行安装以下4个插件yarn add electron yarn add electron-devtools-…

5、英飞凌-AURIX-TC3X7: PWM实验之使用 GTM -TOM 实现

目录5、英飞凌-AURIX-TC3X7&#xff1a; PWM实验之使用 GTM -TOM 实现1、GTM -TOM简介2、TOM框图3、TOM全局通道控制--TGC0, TGC14、实验简介4.1、实验目的4.2、TC3X7 GTM 简介4.3、具体配置流程5、具体实现5.1、Cpu0_Main.c5.2、TOM_PWM.C5.3、TOM_PWM.h5、英飞凌-AURIX-TC3X7…