Как выбрать частоту SPI на STM32?
Обновлено Редакция GAW
Содержание
Ведущий SPI у STM32 получает SCK, деля частоту своей шины APB на 2, 4, 8 … 256. Поэтому частоту не задают произвольно, а выбирают ступень — ту, что не выше наименьшего из пределов.
Три предела
- STM32. Справочное руководство разрешает до fPCLK/2, но гарантированная частота — в таблице SPI characteristics даташита: у STM32F103 18 МГц, у быстрых модулей STM32F411 — 42 или 50 МГц в зависимости от питания.
- Ведомая микросхема. Её предел — в её даташите: ENC28J60 — до 20 МГц, W5500 рассчитан на 80 МГц, но гарантированно проверен на 33,3 МГц.
- Проводка. Чем длиннее линии, тем ниже рабочая частота; это видно только на своей плате.
Пример: W5500
| Микроконтроллер, модуль | fPCLK | Предел STM32 | Ступени рядом | Выбор для W5500 (33,3 МГц) |
|---|---|---|---|---|
| STM32F103, SPI1 | 72 МГц | 18 МГц | 36 / 18 МГц | 18 МГц, BR = 001 |
| STM32F103, SPI2 | 36 МГц | 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 при указанных условиях. Запас нужен по ведомой микросхеме и по проводке: если максимум ведомого совпадает со ступенью делителя, а линии длинные, разумно взять ступень ниже (наш вывод).
Источники
- 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 МГц
- WIZnet. W5500 Datasheet v1.1.0 — разд. 5.5.4 — SCLK рассчитан до 80 МГц, гарантированная проверенная частота 33,3 МГц; искажения из-за перекрёстных наводок и длины линий
- Microchip. ENC28J60 Data Sheet (DS39662E) — табл. 16-6 — FSCK от 0 до 20 МГц
Нашли ошибку?
Смотрите также
- Делитель SPI STM32BR[2:0], шина APB, предел SCK по даташиту, режимы и код
- Тактирование STM32PLL под нужную частоту, шины, флеш-память, регистры RCC и код
- SPISCLK, MOSI, MISO, CS, режимы 0–3, daisy chain, частота, SPI в AVR
- Как проверить, что W5500 отвечает по SPI?Прочитать VERSIONR (0x0039): ответ 0x04, затем бит LNK в PHYCFGR