Лучший SPI Baudrate Prescaler - PullRequest
       108

Лучший SPI Baudrate Prescaler

0 голосов
/ 27 сентября 2019

мой вопрос содержит частоту SPI.Как узнать, какой прескалер использовать?должно ли оно основываться на устройстве, с которым я хотел бы поговорить по протоколу?

Пример использования библиотеки HAL состоит в том, что она имеет следующие переменные прескалера

  • SPI_BAUDRATEPRESCALER_2
  • SPI_BAUDRATEPRESCALER_4
  • SPI_BAUDRATEPRESCALER_8
  • SPI_BAUDRATEPRESCALER_16
  • SPI_BAUDRATEPRESCALER_64
  • SPI_BAUDRATEPRESCALER_128
  • SPI_BAUDRATEPRESCALER_256

Меньшие переменные прескалера приводят к ускорению передачи данных.Но как мне узнать, какой из них использовать или какой дает наилучшие оптимальные результаты?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Предварительный масштабер - это что-то аппаратное.Таким образом, HAL вообще не должен заниматься этим.HAL должен принимать два параметра: системные часы и желаемую скорость передачи данных.Вот и все.Определенная скорость передачи данных может поддерживаться или не поддерживаться с учетом системных часов.

Если вы смотрите на раздутое ПО STM32, чтобы узнать, как написать HAL, остановитесь.Они называют это HAL, но это скорее «скрыть низкоуровневый доступ к регистрам за функциями, потому что регистры страшны».В то время как настоящий HAL добавляет более высокий уровень абстракции вокруг периферийного драйвера whole hw.Таким образом, название слой абстракции - не "слой запутывания".

1 голос
/ 27 сентября 2019

Вам необходимо прочитать документацию на устройство, с которым вы хотите поговорить.Он имеет максимальную тактовую частоту.

Затем вам нужно посмотреть системные часы вашей системы, как они используются модулем SPI и как прескалер делит эти часы.Вы можете записать таблицу со строкой для каждого параметра предварительного масштабирования.

Теперь оцените, насколько быстро вам нужно прочитать устройство, чтобы удовлетворить требования вашего приложения.Для этого вам нужно найти количество байтов для передачи, включая адресацию и команды и т. Д.

Затем сравните итоговые тактовые импульсы SPI с максимально допустимым тактовым сигналом устройства.Используйте тот, который достаточно быстр для вашего приложения и ниже максимума.

Если вам требуется более высокая тактовая частота, чем максимум устройства, выполнить требования невозможно.

...