Я пытаюсь перенести некоторые из моих AVR-кодов, чтобы управлять простым ЖК-дисплеем SPI для ARM в качестве учебного упражнения (я очень новичок в ARM в целом). Для этого мне просто нужно использовать SPI в главном режиме.STM32F1 - Использование основного SPI на голом металле
Я посмотрел в datasheet для своего устройства (STM32F103C8) и обнаружил, что требуемые штыри SPI1, SCK и MOSI отображаются как альтернативные функции PA5 и PA7 соответственно, а также другие периферийные устройства (стр. 29). Я понимаю, что для того, чтобы использовать функцию SPI на этих контактах, мне нужно убедиться, что что-либо еще, сопоставленное с одним и тем же выводом, отключено. Однако, смотря на значения по умолчанию для регистра периферийных часов, похоже, что другие функции уже отключены.
Я рассмотрел раздел SPI в разделе reference manual, включая раздел 25.3.3 - Конфигурирование SPI в режиме мастера. Сначала я включил мастер-часы SPI1 в APB2ENR и выполнил шаги в этом разделе, чтобы настроить SPI1 на мои нужды. Я также изменил настройки для PA5/7, чтобы установить их режим на «Alternate Function Output push-pull» (9.1.4). Наконец, я включил SPI1, установив CR1_SPE.
Из моего чтения я подумал, что, загрузив значение в регистр данных SPI1 после настройки SPI, как указано выше, данные будут сдвинуты. Однако после записи данных флаг TXE в регистре состояния SPI никогда не устанавливается, указывая, что данные, которые я написал в нем, просто сидят там.
На этом этапе я предполагаю, что есть что-то еще, что я не смог правильно настроить. Например, я не уверен на 100% о том, что делать с контактами PA5/7. Я пытался понять, что могу, из таблиц, но я никуда не денусь. Есть ли что-то еще, что нужно сделать, прежде чем он сработает?
Я не думаю, что неправильно сконфигурированные контакты остановили бы SPI, пытающийся передать данные. Это никуда не денется, но периферия все равно. Я бы предположил, что периферийное устройство настроено неправильно. Вы включили часы для SPI? Включили ли вы SPI? –
опубликуйте свой код, в противном случае все, что мы можем сделать, это догадаться ... –