STM32CubeMX的CAN总线波特率设置

最近在搞CAN相关的问题,传输速率从125Kbps到1Mbps不等,由于使用STM32CubeMX作为代码生成平台,所以计算CAN波特率就需要自己动手算,但是算一次又记不住,索性就直接一次算好之后记下来!

CAN的波特率是靠时钟树的APB1 Clock的频率进行切分得到的,主要参数有:

  • 预分频系数
  • 时间片1
  • 时间片2
  • SWJ

以下CAN参数是以APB1 Clock为36MHz计算的:

波特率bps预分频系数时间片1时间片2SWJ
100K60321
125K48321
200K30321
250K24321
400K10531
500K12321
800K5531
1M6321

遇到表格中的内容如果STM32CubeMX不允许的情况就随便设置,生成代码后在CAN的初始化函数内进行修改即可!

### 配置STM32 CubeMX中的波特率STM32CubeMX中配置UART接口的波特率是一个相对简单的过程。通过图形化界面可以轻松设置通信参数,确保数据传输速率匹配硬件需求。 #### 打开项目并选择外设 启动STM32CubeMX软件后加载已有的工程文件或创建一个新的项目。接着从左侧设备列表里找到要使用的串口资源(例如USART1),点击进入其配置页面[^2]。 #### 设置波特率参数 在 USART 初始化选项卡下的“Parameter Settings”部分可以看到Baud Rate字段,默认可能是9600 bps。根据实际应用场景调整此数值到所需的比特率,比如常见的有115200bps用于高速通讯场景下。注意这里输入的是整数形式表示每秒传送的数据量单位为bit/s。 #### 应用更改与生成代码 完成上述设定之后记得保存修改,并继续按照向导提示操作直至最终生成初始化源码。此时会自动生成必要的寄存器赋值语句来实现所选波特率及其他相关属性的配置。 ```c /* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_Init 0 */ huart1.Instance = USART1; huart1.Init.BaudRate = 115200; // Set Baudrate here huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值