使用 nanoFramework 的 STM32F4-Disc 250 kbps 的正确 Can Bus 设置是什么?

问题描述 投票:0回答:1

我正在尝试将 BluePill 板(由 STM32CubeMX 设置)与 STM32F4-Discovery(由 ChibiOS 和 nanoFramework 设置)连接。

BluePill 具有以下参数:

  • APB1 外围时钟:24 MHz
  • 预分频器(时间量子):6
  • 时间量子:250.0 ns [作为结果]
  • 位段1的时间份额:13倍
  • 位段2的时间份额:2倍
  • 一位的时间:4000 ns [作为结果]
  • 波特率:250 000 bit/s [作为结果]
  • 再同步跳转宽度:1次

ChibiOS 中 Discovery 板的时钟配置(mcuconf.h):

#define STM32_SW                            STM32_SW_PLL
#define STM32_PLLSRC                        STM32_PLLSRC_HSE
#define STM32_PLLM_VALUE                    4
#define STM32_PLLN_VALUE                    168
#define STM32_PLLP_VALUE                    2
#define STM32_PLLQ_VALUE                    7
#define STM32_HPRE                          STM32_HPRE_DIV1
#define STM32_PPRE1                         STM32_PPRE1_DIV8

探索板APB1外设时钟我的计算:

Fext_osc / PLLM * PLLN / PLLP  / HPRE / PPRE1 = 8 000 000 / 4 * 168 / 2 / 1 / 8 = 21 MHz

我尝试在代码中设置 Discovery 板的 CAN:

var canSettings = new CanSettings(6, 11, 2, 1);

在哪里

  • 总线波特率预分频器:6
  • [时间量子:6 / 21+E6 = 285.71 ns 作为结果]
  • 相段 1:11
  • 相段 2:2
  • [一位的时间:285.71-E9 * (1 + 11 + 2) = 4000 ns 结果]
  • [波特率:1 / 4-E6 = 250 000 bit/s 作为结果]
  • 同步跳转宽度:1

连接不工作。

如果我使用来自某些代码的设置sample 未知速度 - CanSettings(6, 8, 1, 0) - 它有效但它是 350 kbps(对于 21 MHz APB1 时钟)。

感谢您对理解这一点的任何帮助。

stm32 stm32f4discovery bluepill nanoframework chibios
1个回答
0
投票

这是关于

CanSettings
的文档。

确保将这些值以正确的参数传递给构造函数。 我还没有验证它们是否正确。建议您使用STM计算器之一以使其变得简单。

© www.soinside.com 2019 - 2024. All rights reserved.