STM32 CAN 波特率设置及采样点设置
一、CAN波特率
STM32 位时间定义:
● 同步段(SYNC_SEG):通常期望位的变化发生在该时间段内。其值固定为1
个时间单元(1 x tCAN)。
● 时间段1(BS1):定义采样点的位置。它包含CAN 标准里的 PROP_SEG 和
PHASE_SEG1。其值可以编程为1 到16 个时间单元,但也可以被自动延
长,以补偿因为网络中不同节点的频率差异所造成的相位的正向漂移。
● 时间段2(BS2) : 定义发送点的位置。它代表CAN 标准里的
PHASE_SEG2。其值可以编程为1 到8 个时间单元,但也可以被自动缩短
以补偿相位的负向漂移
BRP[9:0]: 波特率分频器
PCLK1 = 36M
bps = 36M/(BRP[9:0]*(BS1+BS2+SYNC_SEG))
其中SYNC_SEG固定为1个时间单元所以 bps = 36M/(BRP[9:0]*(BS1+BS2+1)),此时注意跟同步跳转宽度SJW没关系,尽管他也一直设置为1.
二、CAN采样点
采样点位于时间段1和时间段2之间。根据CIA推荐采样点,最好设置在85%~90%。
在网上查了好多,基本上都是这么计算 (BS1+1)/(1+BS1+BS2),得出的结果就是BS1比较大而BS2比较小基本上为1.
STM32 CAN 波特率设置及采样点设置的更多相关文章
- STM32 Option Bytes位 重置为出厂设置
STM32 Option Bytes位 重置为出厂设置 JLINK 按照说明,在IAR安装目录下找到指定的运行程序JLinkSTM32.exe(D:\Program Files (x86)\IAR S ...
- 【原创】STM32下波特率计算详解
波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1.在STM32中,有个波特率寄存器USART_BRR,如下: ...
- WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享
WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我们有时需要对某容器内的所有控件做批量操作.如批量判断是否允许为空?批量设置为只读.批量设置 ...
- iOS开发--应用设置及用户默认设置【2、读取应用中的设置】
在上一节中,我们通过探讨应用的系统设置的基本功能,了解运用bundle捆绑包以及plist文件的基本开发.用户能够使用设置应用来声明他们的偏好设置,那么我们怎样去调用用户所设置的参数呢 ...
- iOS开发--应用设置及用户默认设置【1、bundle的运用】
在iphone里面,应用都会在“设置”里面有个专属的应用设置,选择该菜单界面,用户便可以在其中输入和更改各种选项,协助用户更便捷设置个人喜好与习惯. 在这一节中,希望能通过对捆绑包(bu ...
- iOS开发--应用设置及用户默认设置——转载
[链接]iOS开发--应用设置及用户默认设置[1.bundlehttp://www.jianshu.com/p/6f2913f6b218 在iphone里面,应用都会在“设置”里面有个专属的应用设置, ...
- TP-Link 无线路由器设置图文教程----怎么设置TP-Link无线路由器图解
转自:http://www.jb51.net/softjc/39399.html 无线路由器的基础配置 在我们第一次配置无线宽带路由器时,参照说明书找到无线宽带路由器默认的IP地址是192.168.1 ...
- 跨域访问-需要设置HTTP响应标头设置
跨域访问-需要设置HTTP响应标头设置 前提:服务端网站的配置(被请求的网站) 1.需要在IIS服务器站点的功能视图中设置HTTP响应标头: 2.双击“HTTP响应标头”进入设置界面 3.点击右侧添加 ...
- Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)
Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen,发布日期: 2014-05- ...
随机推荐
- 鼠标双击范围基于Win7
TP鼠标双击范围主要是修改Registry中的HKEY_CURRENT_USER\Control Panel\Mouse里面的两个参数 DoubleClickHeight跟DoubleClickWid ...
- 1_Linux_目录简介
1. Linux中所以内容以文件形式保存,包括硬件,所以在用命令行配置文件时,该配置仅仅是临时生效. 2. Linux不靠扩展名区分类型,而是靠文件权限.之所以有扩展名是为了便于管理. .rpm二 ...
- 动态用javascript来修改单选框性别
<script> window.onload=function(){ if(<{$data.sex}>==0){//<{$data.sex}>是在数据读出来: do ...
- jsonp Ajax跨域请求
什么是JSONP? JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域 ...
- Swift - 29 - 参数的默认值
// 参数设置了默认值之后, 在调用的时候, 可以写这个参数 // 在参数前面添加"_", 表示取消外部参数名, 但还是建议使用苹果默认格式 func sayHello(nickN ...
- c#读取通达信历史数据的方法
public Bar ReadBarMin(BinaryReader br, int instrumentId, long size) { int date = br.ReadUInt16(); in ...
- Puer是一个可以实时编辑刷新的前端服务器
##Puer是一个可以实时编辑刷新的前端服务器 确保你安装了nodejs(现在还有没nodejs环境的前端? 拖出去喂狗吧) 使用npm全局安装puer命令 npm install puer -g 输 ...
- centos 6.X 安装node
1.源码安装 Source Code yum -y install gcc make gcc-c++ openssl-devel wget //yum下载相关的依赖包 wget http://node ...
- 跟我学android-Android应用基本组件介绍(五)
Activity activity 是最基本的模块,我们成为活动,一个activity通常就是一个单独的屏幕,每一个活动都被实现为一个独立的类,且都继承活动的基类.在activity的实现类里显示用户 ...
- NHibernate考察实例:简单映射
建立一个Company类用来测试,对应的表为TBLCOMPANY. 1. 下载NHibernate(版本1.2.0.CR1),将NHibernate \bin\net-2.0下面的文件拷贝到lib ...