STM32 SPI полоса пропускания с процедурой оценки - PullRequest
0 голосов
/ 10 июня 2019

Я тестирую возможности SPI STM32H7.Для этого я использую примеры SPI, представленные в STM32CubeH7 на 2 платах Nucleo-H743ZI.Возможно, я не буду хранить этот код в своей собственной разработке. Теперь цель состоит в том, чтобы понять, как работает SPI и какую полосу пропускания я могу получить в различных режимах (с DMA, с включенным кешем или нет, и т. Д.).

Я хотел бы поделиться цифрами, которые я вычислил, поскольку они не кажутся очень высокими.В этом примере, если я правильно понял, процессор имеет частоту @ 400 МГц, а частота шины SPI @ 100 МГц.

Для режима опроса я измерил количество циклов вызова функции HAL_SPI_TransmitReceive.

Для прямого доступа к памяти я измерил между вызовом HAL_SPI_TransmitReceive_DMA и вызовом обратного вызова завершения передачи.

Измерения циклов, когда SysTick синхронизировался на внутренних часах.Поскольку низкое энергопотребление отсутствует, оно должно быть точным.

Я только что изменил примеры ST для отправки буфера размером 1 КБ.

Я получаю около 200 000 циклов ЦП в режиме опроса, чтоозначает около 2 МБ / с

и около 3 МБ / с в режиме DMA.

Поскольку тактовая частота SPI работает на 100 МГц, я бы ожидал гораздо большего, особенно в режиме DMA, как вы думаете?Что-то не так в моей процедуре?

...