Перейти к содержанию

Как выбрать частоту SPI на STM32?

Обновлено Редакция GAW

Ведущий SPI у STM32 получает SCK, деля частоту своей шины APB на 2, 4, 8 … 256. Поэтому частоту не задают произвольно, а выбирают ступень — ту, что не выше наименьшего из пределов.

Три предела

  1. STM32. Справочное руководство разрешает до fPCLK/2, но гарантированная частота — в таблице SPI characteristics даташита: у STM32F103 18 МГц, у быстрых модулей STM32F411 — 42 или 50 МГц в зависимости от питания.
  2. Ведомая микросхема. Её предел — в её даташите: ENC28J60 — до 20 МГц, W5500 рассчитан на 80 МГц, но гарантированно проверен на 33,3 МГц.
  3. Проводка. Чем длиннее линии, тем ниже рабочая частота; это видно только на своей плате.
fSCK=fPCLK2BR+1f_{SCK} = \frac{f_{PCLK}}{2^{BR+1}}

Пример: W5500

Микроконтроллер, модульfPCLKПредел STM32Ступени рядомВыбор для W5500 (33,3 МГц)
STM32F103, SPI172 МГц18 МГц36 / 18 МГц18 МГц, BR = 001
STM32F103, SPI236 МГц18 МГц18 / 9 МГц18 МГц, BR = 000
STM32F411, SPI1, 3,3 В100 МГц50 МГц50 / 25 МГц25 МГц, BR = 001

Расчёт наш по данным RM0008, DS5319, DS10314 и W5500. У STM32F411 ступень 50 МГц разрешена микроконтроллером, но выше гарантированной частоты W5500, поэтому берут 25 МГц.

Как проверить

Поднимайте частоту ступенями и проверяйте обмен чтением регистра с известным значением — для W5500 это регистр версии, см. «Как проверить, что W5500 отвечает по SPI». Если ошибки появляются на высокой ступени, оставьте предыдущую.

Делитель, шину модуля и предел даташита для вашего корпуса подберёт калькулятор частоты SPI STM32, частоты шин APB — калькулятор тактирования STM32, а режимы и устройство шины описаны в статье «Интерфейс SPI».

Похожие вопросы

Почему SPI работает на макетной плате только на низкой частоте?

Длинные провода добавляют ёмкость и индуктивность: фронты затягиваются, появляется звон и перекрёстные наводки, и ведомый ошибается. WIZnet прямо объясняет, почему гарантирует W5500 лишь 33,3 МГц из 80: искажения от наводок и длины линий. На проводах длиной в десятки сантиметров начинают с единиц мегагерц и поднимают частоту, проверяя обмен (наш совет).

Можно ли получить частоту между ступенями делителя?

Делителем BR — нет, он даёт только fPCLK/2, /4 … /256. Промежуточную частоту получают, меняя делитель шины APB или системную частоту, — это делает калькулятор тактирования STM32. Обычно проще взять ближайшую ступень ниже.

Нужен ли запас по частоте относительно даташита?

Предел из таблицы SPI characteristics уже гарантирован ST при указанных условиях. Запас нужен по ведомой микросхеме и по проводке: если максимум ведомого совпадает со ступенью делителя, а линии длинные, разумно взять ступень ниже (наш вывод).

Источники

  1. STMicroelectronics. RM0008 Rev 21; даташиты STM32F103x8/xB (DS5319 Rev 20) и STM32F411xC/xE (DS10314 Rev 8) — RM0008, 25.5.1 — BR[2:0]: fPCLK/2 … fPCLK/256; DS5319, табл. 43 — fSCK ведущего и ведомого до 18 МГц; DS10314, табл. 60 — SPI1/4/5 ведущий 42 МГц от 2,7 В и 50 МГц от 3,0 В, при 1,7 В и для SPI2/3 — 25 МГц
  2. WIZnet. W5500 Datasheet v1.1.0 — разд. 5.5.4 — SCLK рассчитан до 80 МГц, гарантированная проверенная частота 33,3 МГц; искажения из-за перекрёстных наводок и длины линий
  3. Microchip. ENC28J60 Data Sheet (DS39662E) — табл. 16-6 — FSCK от 0 до 20 МГц

Нашли ошибку?