Arduino Bluepill STM32 spi не работает

Кто-нибудь успешно использовал SPI1 этих контактов?

SCLK -> PB3 
SDIO -> PB5 
SDO -> PB4 
MISO CS -> PA15

Я пытался использовать другую сторону контактов SPI1 на других сторонах платы (PA4, 5, 6, 7), и я могу успешно связаться с

, 👍0

Обсуждение

Arduino и STM32 Blue Pill — это не одно и то же, это разные платформы. И вам необходимо предоставить более подробную информацию, например, полный код., @RocknRoll

я использовал ядро stm32arduino, поэтому я буду работать как Arduino, и код очень простой, просто вывод SPI на датчик, он вообще не реагирует, пока я не переключу контакт, он будет работать нормально, @Settasak


2 ответа


Лучший ответ:

0

Это зависит от того, как вы используете объект SPI. Если вы используете объект SPI напрямую, как Arduino Uno, не создавая экземпляр объекта, конструкция SPI по умолчанию будет PA4-PA7, см. определение выводов по умолчанию и конструкция класса по умолчанию для Blue Pill.

Для STM32 Arduino Core (Stm32duino) существует четыре специальных API STM32 Arduino Core для настройки альтернативных контактов SPI.

void setMISO(uint32_t miso)
void setMOSI(uint32_t mosi)
void setSCLK(uint32_t sclk)
void setSSEL(uint32_t ssel)

Эти должны вызываться перед SPI.begin().

Еще один альтернативный способ использования альтернативных выводов SPI — создать объект SPI и передать назначения выводов следующим образом:

#include <SPI.h>

SPIClass mySPI(PB5, PB4, PB3, PB15); //mosi, miso, sclk, ssel

См. альтернативную конструкцию API и дополнительную информацию можно найти на вики-странице STM32duino.

,

Большое спасибо, вы даже не представляли, сколько часов я трачу на это дело :), @Settasak


0

Arduino и STM32 Blue Pill — это не одно и то же, это разные платформы. И вам нужно предоставить более подробную информацию, например, полный код.

,

я использовал ядро stm32arduino, поэтому я буду работать как arduino, и код очень прост, просто вывод spi на датчик, он вообще не отвечает, пока я не переключу контакт, он будет работать нормально, @Settasak