C代码定义:

typedef struct _DataRate
{uint32_t DataRate;uint32_t DataPrescaler; /*!< Specifies the value by which the oscillator frequency isdivided for generating the data bit time quanta.This parameter must be a number between 1 and 32             */uint32_t DataSyncJumpWidth; /*!< Specifies the maximum number of time quanta the FDCANhardware is allowed to lengthen or shorten a data bit toperform resynchronization.This parameter must be a number between 1 and 16             */uint32_t DataTimeSeg1; /*!< Specifies the number of time quanta in Data Bit Segment 1.This parameter must be a number between 1 and 32             */uint32_t DataTimeSeg2; /*!< Specifies the number of time quanta in Data Bit Segment 2.This parameter must be a number between 1 and 16             */
} DataRate_t;const DataRate_t DataRateMaps[] =//从上位机那边复制过来
{{ 125000,12,8,69,10 }, //125KBps:prescaler:12,clk:10Mhz,ts1:69,ts2:10,samplePoint:87.50%{ 250000,6,8,69,10 }, //250KBps:prescaler:6,clk:20Mhz,ts1:69,ts2:10,samplePoint:87.50%{ 500000,10,8,20,3 }, //500KBps:prescaler:10,clk:12Mhz,ts1:20,ts2:3,samplePoint:87.50%{ 1000000,5,8,20,3 }, //1000KBps:prescaler:5,clk:24Mhz,ts1:20,ts2:3,samplePoint:87.50%{ 2000000,1,8,51,8 }, //2000KBps:prescaler:1,clk:120Mhz,ts1:51,ts2:8,samplePoint:86.67%{ 3000000,1,8,34,5 }, //3000KBps:prescaler:1,clk:120Mhz,ts1:34,ts2:5,samplePoint:87.50%{ 4000000,1,8,25,4 }, //4000KBps:prescaler:1,clk:120Mhz,ts1:25,ts2:4,samplePoint:86.67%{ 5000000,1,8,20,3 }, //5000KBps:prescaler:1,clk:120Mhz,ts1:20,ts2:3,samplePoint:87.50%{ 6000000,1,8,16,3 }, //6000KBps:prescaler:1,clk:120Mhz,ts1:16,ts2:3,samplePoint:85.00%{ 8000000,1,8,12,2 }, //8000KBps:prescaler:1,clk:120Mhz,ts1:12,ts2:2,samplePoint:86.67%
};

上位机计算波特率的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CanSamplePointCal
{class Fuck_Autosar{static void Main(string[] args){int busclk = 120 * 1000 * 1000;//外设总线频率int prescaler_min = 1, prescaler_max = 512, prescaler = prescaler_min;int sjw_min = 1, sjw_max = 128, sjw = sjw_min;int ts1_min = 2, ts1_max = 256, ts1 = ts1_min;int ts2_min = 2, ts2_max = 128, ts2 = ts2_min;double samplePoint_min = 60.0 / 100.0d, samplePoint_max = 87.5 / 100.0d;//采样点设置int NominalSyncJumpWidth = 8;int need_can_baudrate = 500* 1000;for (prescaler = prescaler_min; prescaler <= prescaler_max; prescaler++){if ((busclk % prescaler) != 0)continue;for (sjw = sjw_min; sjw <= sjw_max; sjw++){for (ts1 = ts1_min; ts1 <= ts1_max; ts1++){for (ts2 = ts2_min; ts2 <= ts2_max; ts2++){var clk = busclk / prescaler;if ((clk % (1 + ts1 + ts2)) != 0)continue;var br = clk / (1 + ts1 + ts2);var sp = (1.0d + ts1) / (1.0d + ts1 + ts2);if ((br == need_can_baudrate)&& (sp >= samplePoint_min)&& (sp <= samplePoint_max)){string clkstr = clk >= (1000 * 1000) ? $"{clk / (1000 * 1000d)}Mhz" : $"{clk / 1000d}Khz";string code = $"{{ {br},{prescaler},{NominalSyncJumpWidth},{ts1},{ts2} }},";Console.WriteLine($"{code} //{need_can_baudrate / 1000}KBps:prescaler:{prescaler},clk:{clkstr},ts1:{ts1},ts2:{ts2},samplePoint:{sp:P}");}}}}}Console.WriteLine("End!");Console.ReadLine();}}
}

STM32 CANFD波特率计算器相关推荐

  1. 关于STM32串口波特率的产生,以及USARTDIV写入到USART_BRR寄存器的值

    #关于STM32串口波特率的产生,以及如何从USART_BRR寄存器值得到USARTDIV fCK是时钟频率,这里我们假设72000000Hz,如果需要设置的波特率为115200,那我们可以计算出US ...

  2. STM32 CAN波特率计算

    STM32 CAN波特率计算 简介 CAN总线收发,中断方式接收配置 代码部分 reference 简介 CAN通信帧共分为数据帧.远程帧.错误帧.过载帧和帧间隔,本文这里以数据帧为例. 显性电平对应 ...

  3. 基于STM32设计的计算器(实现基本运算)

    1. 项目介绍 计算器是最常见的工具了,现在不管是手机.电脑都带有计算器功能,支持强大的科学运算等. 当前文章介绍的是STM32+LCD触摸屏设计的一个触摸计算器功能,实现基本的加减乘除,二进制转换显 ...

  4. 嵌入式 STM32 串口波特率生成器BRR的值计算笔记

    波特率寄存器,生成波特率 fck 时钟源 over8 八倍采样=1 16倍采样=0 USARTDIV 串口分频值(未知需要求出来) USARTDIV = fCK / 波特率 X 8 X (2-OVER ...

  5. STM32——串口概念及应用

    目录 通讯接口背景知识 两种通讯方式对比 串口通讯 常见的串行通信接口 STM32串口通信基础 STM32的串口通信接口 UART异步通信方式引脚连接方法 UART异步通讯方式特点 串口通信过程 串口 ...

  6. STM32H750 更好用的CANFD 用例详解

    目录 前言 Message RAM分配 STM32工程搭建 串口配置 100us定时器 FDCAN配置 Bus-Off处理 新消息接收处理 发送处理 使用Xavier配合测试一下 完整工程下载 关于用 ...

  7. STM32串口的使用(原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯)

    参考:串口的结构体 重定向printf串口发送stm32等博文 作者:点灯小哥 发布时间: 2021-03-06 21:46:33 网址:https://blog.csdn.net/weixin_46 ...

  8. STM32 串口详解

    目录 01.USART的特点 02.USART简介 2.1.数据传输模型 2.2.帧结构 2.3.波特率 03.STM32的USART 04.代码配置 01.USART的特点 USART是通用异步收发 ...

  9. STM32—串口通讯详解

    串口通讯目录 物理层 协议层 USART简介 开发板与上位机的连接 代码讲解: 一.初始化结构体 二.NVIC配置中断优先级 三.USART配置函数讲解 四.传输数据的函数: 1.发送一个字节 2.发 ...

  10. can总线隔离中继器、canbridge、CanRepeater的can波特率和滤波设置

    can总线隔离中继器.canbridge.CanRepeater的can波特率和验收滤波设置.波特率支持2.5kbps~1Mbps之间任意设置,验收滤波设置支持20个组合的列表或屏蔽模式的ID过滤. ...

最新文章

  1. jquery json
  2. java 拉姆表达式_Java8 lambda表达式10个示例
  3. VTK:几何对象之OrientedCylinder
  4. 5分钟了解什么是真正的深度学习
  5. react中嵌入网页_在网站中添加 React
  6. 轻量必应每日一图接口-前端网站源码 支持上传到又拍云调用
  7. iframe高度自适应的6个方法
  8. window.onerror=hide_error_message;
  9. 中国统计年鉴2021(各省份经济指标,人口规模,工农业数据,主要社会经济指标)
  10. 【Ubuntu和本地电脑互传文件】
  11. 2016手机数据恢复软件哪个好?
  12. 苹果手机一直显示搜索服务器,苹果手机safari浏览器搜索页面没有了
  13. STM32存储器 — 2STM32存储器知识的相关应用(IAP、Bit Banding)
  14. BTC 查询交易明细信息
  15. RabbitMQ笔记
  16. 记录大疆研发管理岗初面
  17. 室内定位——UWB测距及定位原理
  18. GORM v2 关联预加载Preload和Joins的区别
  19. python判断汉字偏胖_python实现在线分词
  20. 农夫山泉有点牛!港股打新把暗盘系统都整崩溃了

热门文章

  1. linux之tcpdump抓包工具
  2. python怎么放音乐_python怎么添加背景音乐
  3. 摄氏温度和华氏温度换算(vb源码)
  4. excel从html文件传输乱码,打开乱码解决步骤7:在Excel中直接打开该文本文件
  5. Windows xp 安装的屏幕保护程序
  6. html网页视频播放器代码,HTML网页制作视频播放器现成代码
  7. Qt 环境下MAPX组件的编程
  8. CC2530定时器唤醒
  9. linux下oracle安装教程
  10. Oracle 19c 安装步骤