Я работаю над SPI-связью между двумя платами Nucleo-H743ZI.Я использую ST HAL и API опроса SPI HAL_SPI_TransmitReceive.
Работает нормально до полосы пропускания 12 Мбит / с (тактовая частота ядра SPI 200 МГц и прескалер 16, ЦП всегда на 400 МГц), но не работает выше(меньший прескалер).
Я хочу понять, поскольку скорость 24 или 48 Мбит / с невелика даже при опросе с некачественным программным обеспечением.нет ошибки SPI, такой как переполнение или другое (я проверял непосредственно в регистрах), однако данные не верны.Глядя ближе к данным, я заметил, что есть только сдвиг в один бит.
Точнее, я должен получить (в гекса): 0x30 0x31 0x32 ... И я получаю 0x18 0x18 0x99 ...
В двоичном формате:
Если я смещу полученный битовый поток влево, я получу абсолютно правильный результат.
Это вам что-то говорит?Может ли это быть из-за неправильной конфигурации?
Очевидно, что главный и подчиненный имеют одинаковую конфигурацию в отношении фазы и полярности (и всего остального, поскольку исходный код в основном идентичен).