STM32F1 - Использование мастер SPI на голом металле

Я пытался перенести часть своего кода AVR для управления простым SPI LCD на ARM в качестве учебного упражнения (я вообще новичок в ARM). Для этого мне просто нужно использовать SPI в режиме мастера.

Я посмотрел в таблице данных для моего устройства (STM32F103C8) и обнаружил, что нужные мне контакты SPI1, SCK и MOSI отображаются как альтернативные функции PA5 и PA7, соответственно, наряду с другими периферийными устройствами (стр.29). Насколько я понимаю, чтобы использовать функцию SPI на этих выводах, мне нужно убедиться, что все остальное, сопоставленное этому же выводу, отключено. Однако, если посмотреть на значения по умолчанию для регистра управления периферийными часами, похоже, что другие функции уже отключены.

Я посмотрел на раздел SPI в справочном руководстве, включая раздел 25.3.3 - Настройка SPI в режиме master. Сначала я включил основные часы SPI1 в APB2ENR и следовал инструкциям в этом разделе, чтобы настроить SPI1 для своих нужд. Я также изменил настройки PA5/7, чтобы установить для них режим "Двухтактный выход альтернативной функции" (9.1.4). Наконец, я включил SPI1, установив CR1_SPE.

Из моего чтения я подумал, что при загрузке значения в регистр данных SPI1 после настройки SPI, как указано выше, данные будут удалены. Однако после записи данных флаг TXE в регистре состояния SPI никогда не устанавливается, что указывает на то, что данные, которые я записал в него, просто находятся там.

На данный момент, я предполагаю, что есть что-то еще, что я не смог правильно настроить. Например, я не уверен на 100%, что делать с выводами PA5/7. Я пытался понять, что я могу из таблиц, но я никуда не денусь. Есть ли что-то еще, что нужно сделать, прежде чем это сработает?

1 ответ

Решение

Я почти уверен, что вы не установили SSM а также SSI биты в SPIx->CR1 регистр. SPI в этих чипах довольно прост, для опрашиваемых передач нужно установить SSM, SSI, SPE, MSTR, правильный формат (LSBFIRST, CPOL, CPHA) и правильная скорость передачи (BR) в SPIx->CR1 и ты в порядке.

Другие вопросы по тегам