Я тестирую возможности 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, как вы думаете?Что-то не так в моей процедуре?