我正在尝试将 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 时钟)。
感谢您对理解这一点的任何帮助。