python脚本计算STM32的bxCAN的波特率
CAN波特率的计算公式:
baudRate = pClk / (brp[9:0]+1)/(1+(ts1[3:0]+1)+(ts2[2:0]+1))
采样点 = (1+ts1[3:0]+1) / (1+ts1[3:0]+1+ts2[2:0]+1)
需要满足的条件:
tBS1 >= tBS2
tBS2 >= tq
tBS2 >= 2*tSJW
采样点需要满足的条件:
波特率 采样点
<= 500K 87.5%
> 500K 80%
> 800K 75%
'''计算当前频率下的所有配置的波特率配置需要满足的条件:1. tBS1 >= tBS2 tBS2 >= tqtBS2 >= 2*tSJW2. 采样点采样点需要满足的条件:<= 500K 87.5%> 500K 80%> 800K 75%采样点的计算方式:smp = (1+TS1)/(1+TS1+TS2)
'''RST = {'brp': [],'pClk': [],'ts1': [],'ts2': [],'baudRate': [],'sam': []
}def calc(pClk):for brp in range(1024):for ts1 in range(16):for ts2 in range(8):baudRate = pClk / (brp+1) / (1+(ts1+1)+(ts2+1))sam = (2 + ts1) / (3 + ts1 + ts2)RST['brp'].append(brp)RST['ts1'].append(ts1)RST['ts2'].append(ts2)RST['baudRate'].append(baudRate)RST['sam'].append(sam)def findTargetBaudRate(tarBaud):for i in range(len(RST['baudRate'])):# 筛选目标波特率的配置if (tarBaud > RST['baudRate'][i] - 1) and (tarBaud < RST['baudRate'][i] + 1):# 根据目标波特率筛选合适的配置''' tBS1 >= tBS2 tBS2 >= tqtBS2 >= 2*tSJW'''if (RST['ts1'][i] >= RST['ts2'][i]) and (RST['ts2'][i] >= 1):if (RST['sam'][i] > 0.740) and (RST['sam'][i] < 0.88):print("%d, %d, %d, %f, %f" %(RST['brp'][i], RST['ts1'][i], RST['ts2'][i], RST['baudRate'][i], RST['sam'][i]))if __name__ == "__main__":pClk = float(input("请输入当前的Pclk(Hz), eg: 1000000 为1MHz. :"))targetBaudRate = float(input('请输入想要得到的目标波特率(Hz):'))calc(pClk)print("brp[9:0], ts1[3:0], ts2[2:0], baudRate, sample")findTargetBaudRate(targetBaudRate)
注意:这里最终的结果为:
1. 计算出的值均为寄存器的原始值,具体是标准库或HAL库中的哪个宏,请自行匹配。。。。。。
2. 计算出的多个匹配的参数,请自行根据采样点进行选择,程序中仅输出了74%–88%的匹配值
python脚本计算STM32的bxCAN的波特率相关推荐
- 如何写python脚本抓取数据并计算_【小工具】利用Python脚本从Gaussian计算结果中提取信息...
1.前言 高斯(Gaussian)是一个功能强大的量子化学综合软件包,所有从事计算化学相关领域的科研工作者应该都使用或者了解过这个软件.它的输出文件(.log文件)是一个文本文件,可以利用文本工具打开 ...
- python中的tail()_让VASP实现固定应力张量计算的python脚本
最近在研究指定的应力张量下晶体缺陷的行为.本来想用VASP来进行相应的DFT模拟.但查了半天,发现VASP并不支持指定应力的计算(除非是isotropic的应力). 具体来说,你可以输入一个应变,VA ...
- 新版个人所得税计算python_2019年新税率工资计算器(python脚本) | linux系统运维...
#!/usr/bin/evn python # coding=utf-8 # 2019年新税率个人所得税计算器,本脚本仅供学习 # blog: http://www.linuxyw.com # aut ...
- Python: 用于计算txt文档的字数的小脚本
在一次实践中,需要计算txt文档(英文和数字)的字数,并且还要统计路径下的所有txt文档的字数总数. 本来以为很简单,但是在编写的过程中还是出现了一些问题. 首先就是,字数和字符数是不一样的,不能简单 ...
- python输入个人所得税计算_2020年你会算个人所得税吗?没关系,python脚本帮助你!...
2020年你会算个人所得税吗?没关系,python脚本帮助你! 引文 小编辛苦精心为各位网友准备了2020年最新个人所得税税率表,个税税率表,5000元起征点,包括工资税率表.年终奖税率表.劳务税率表 ...
- 创建一个Python脚本,实现以下功能。(1)定义一个函数,用于计算圆柱体的表面积、体积,函数名为comput,.输入参数为底半径(r)、高(h),返回值为表面积(S)、体积(V),返回多值的函
创建一个Python脚本,实现以下功能. (1)定义一个函数,用于计算圆柱体的表面积.体积,函数名为comput,.输入参数为底 半径(r).高(h),返回值为表面积(S).体积(V),返回多值的函数 ...
- 用python计算个人所得税2020年_2020年你会算个人所得税吗?没关系,python脚本帮助你!...
2020年你会算个人所得税吗?没关系,python脚本帮助你! 引文 小编辛苦精心为各位网友准备了2020年最新个人所得税税率表,个税税率表,5000元起征点,包括工资税率表.年终奖税率表.劳务税率表 ...
- python脚本编写_【PyQGIS】编写用于处理框架(QGIS3)的Python脚本
可以编写可通过QGIS中的Python控制台运行的独立pyqgis脚本.进行一些调整,即可使您的独立脚本通过处理框架运行.这具有几个优点.首先,获取用户输入和写入输出文件要容易得多,因为Process ...
- Python:计算两个蛋白或小分子之间的RMSD
Python脚本:计算两个蛋白或小分子之间的RMSD 用法: python rmsd.py protein1.pdb protein2.pdb rmsd.py # Root-mean-square d ...
最新文章
- python带我起飞 豆瓣评分_你听过后觉得爽到飞起的电音是哪一首?
- 网络不通 从“本地连接”中找问题
- SpringFlux入门(上篇)
- 虚拟化技术—docker容器—私有库篇
- Noise噪音halcon算子,持续更新
- 判断使用设备是PC还是phone
- Eclipse Console 加大显示的行数,禁止弹出
- Java JSR303 valid
- matlab 引号内变量,MATLAB 7.0 单引号内变量现实问题!
- 笑出腹肌的程序猿搞笑趣图
- Error:field larger than field limit(131072)解决方法
- 通过注册表改变“我的文档”等的默认位置
- 未来第五代计算机的发展方向,走进新时代 从五代酷睿看未来电脑发展
- 【转载】经典SQL语句大全(绝对的经典)
- matlab机器人,MATLAB机器人可视化
- Linux内核版本号的含义
- Kotlin拿Android本地视频缩略图
- 海报设计之色彩搭配与均衡构图
- react mvvm_SwiftUI与React式MVVM iOS架构
- steemit、亿书、币乎与IVERYONE对比