Каковы правильные настройки Can Bus для STM32F4-Disc для скорости 250 кбит/с при использовании nanoFramework?

Я пытаюсь подключить плату BluePill (настроенную STM32CubeMX) с STM32F4-Discovery (настроенную ChibiOS и nanoFramework).

BluePill имеет следующие параметры:

  • Периферийная тактовая частота APB1: 24 МГц
  • Прескалер (для кванта времени): 6
  • Квант времени: 250,0 нс [как результат]
  • Временные кванты в битовом сегменте 1: 13 раз
  • Временные кванты в битовом сегменте 2: 2 раза
  • Время на один бит: 4000 нс [как результат]
  • Скорость передачи данных: 250 000 бит/с [как результат]
  • Ширина прыжка ресинхронизации: 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 платы Discovery:

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

Я попытался настроить плату CAN of Discovery в коде:

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

где

  • Предварительный делитель скорости передачи данных по шине: 6
  • [Квант времени: 6/21+E6 = 285,71 нс в результате]
  • Фазовый сегмент 1: 11
  • Фазовый сегмент 2: 2
  • [Время для одного бита: 285.71-E9 * (1 + 11 + 2) = 4000 нс в результате]
  • [Скорость передачи данных: 1/4-E6 = 250 000 бит/с в результате]
  • Ширина прыжка синхронизации: 1

Соединение не работает.

Если я использую настройки из какого-то примера кода для неизвестной скорости — CanSettings(6, 8, 1, 0) — это работает, но это 350 кбит/с (для тактовой частоты APB1 21 МГц).

Я ценю любую помощь в понимании этого.

1 ответ

Вот документ оCanSettings.

Обязательно передайте эти значения конструктору с правильными параметрами. Я не проверял, верны ли они. Чтобы упростить задачу, предложите вам воспользоваться одним из калькуляторов STM.

Другие вопросы по тегам