STM32CubeMX的CAN总线波特率设置

24 篇文章 12 订阅
1 篇文章 0 订阅

最近在搞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的初始化函数内进行修改即可!

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,根据您提供的引用内容,我没有找到与CAN例程相关的信息。但是,我可以为您提供一些关于STM32CubeMXCAN总线的基本知识和使用方法。 STM32CubeMX是一个图形化的配置工具,可用于生成STM32微控制器的初始化代码。它可以帮助您快速配置和生成代码,以便您可以专注于应用程序的开发。CAN总线是一种串行通信协议,用于在微控制器之间传输数据。它通常用于汽车电子和工业自动化等领域。 要在STM32CubeMX中配置CAN总线,您可以按照以下步骤操作: 1. 打开STM32CubeMX并创建一个新项目。 2. 选择您的STM32微控制器型号。 3. 在“Pinout & Configuration”选项卡中,配置CAN总线的引脚。 4. 在“Clock Configuration”选项卡中,配置CAN总线的时钟。 5. 在“Configuration”选项卡中,启用CAN总线并配置其参数,例如波特率和过滤器。 6. 生成代码并将其导入到您的IDE中。 以下是一些可能有用的代码片段,用于在STM32CubeMX中配置和使用CAN总线: 1. 配置CAN总线的引脚: ```c /* CAN GPIO Configuration */ GPIO_InitStruct.Pin = CAN_RX_Pin|CAN_TX_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF9_CAN1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); ``` 2. 配置CAN总线的时钟: ```c /* CAN1 clock enable */ __HAL_RCC_CAN1_CLK_ENABLE(); ``` 3. 启用CAN总线并配置其参数: ```c /* CAN1 init */ hcan1.Instance = CAN1; hcan1.Init.Prescaler = 5; hcan1.Init.Mode = CAN_MODE_NORMAL; hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan1.Init.TimeSeg1 = CAN_BS1_13TQ; hcan1.Init.TimeSeg2 = CAN_BS2_2TQ; hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = DISABLE; hcan1.Init.AutoWakeUp = DISABLE; hcan1.Init.AutoRetransmission = ENABLE; hcan1.Init.ReceiveFifoLocked = DISABLE; hcan1.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan1) != HAL_OK) { Error_Handler(); } /* CAN filter init */ sFilterConfig.FilterBank = 0; sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; sFilterConfig.FilterIdHigh = 0x0000; sFilterConfig.FilterIdLow = 0x0000; sFilterConfig.FilterMaskIdHigh = 0x0000; sFilterConfig.FilterMaskIdLow = 0x0000; sFilterConfig.FilterFIFOAssignment = CAN_FILTER_FIFO0; sFilterConfig.FilterActivation = ENABLE; sFilterConfig.SlaveStartFilterBank = 14; if (HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig) != HAL_OK) { Error_Handler(); } ``` 希望这些信息能够帮助您更好地了解STM32CubeMXCAN总线的使用。如果您有任何其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值