Я в основном работаю с ардуино, с STM32 почти никогда не сталкивался. Но вот решил сделать один проект. Нужно много пинов (управление различной электроникой) и скорость по-больше чем 16 Мгц. Выбор пал на stm32f103c8t6 (Blue Pil). Плата хорошая.
Вникать в среду разработки под STM не целесообразно для единичного проекта. По этому решил сделать поддержку STM32 в среде Ардуино ИДЕ.
Ядро брал здесь: https://github.com/stm32duino/Arduino_Core_STM32
Прошиваю через ST Link V2. Все работает. Светодиодом помигал. SPI проверил и переназначил. Распиновка платки:
Хочу подключить nrf24l01 к stm32f103c8t6. Стандартно подключается к пинам PA5 (SCK1), PA6(MOSO1), PA7(MOSI1). У меня эти пины заняты, уже печатка разведена, по этому их использовать не получится. В тоже время на stm32f103c8t6 есть еще один порт SPI, тоже под номером "1" (???): PB3 (SCK1), PB4 (MISO1), PB5 (MOSI1)
В скетче переназначил так:
Код: Выделить всё
SPIClass SPI_2(PB5, PB4, PB3, SPI2_NSS_PIN);Спойлер
Код: Выделить всё
#include <SPI.h>
#define SPI2_NSS_PIN PA15 //SPI_2 Chip Select pin is PB12. You can change it to the STM32 pin you want.
// mosi, miso, sclk, ssel
SPIClass SPI_2(PB5, PB4, PB3, SPI2_NSS_PIN); //Create an instance of the SPI Class called SPI_2 that uses the 2nd SPI Port
byte data;
void setup() {
// Setup SPI 2
SPI_2.begin(); //Initialize the SPI_2 port.
SPI_2.setBitOrder(MSBFIRST); // Set the SPI_2 bit order
SPI_2.setDataMode(SPI_MODE0); //Set the SPI_2 data mode 0
SPI_2.setClockDivider(SPI_CLOCK_DIV16); // Use a different speed to SPI 1
pinMode(SPI2_NSS_PIN, OUTPUT);
}
void loop() {
sendSPI2();
delayMicroseconds(10); //Delay 10 micro seconds.
}
void sendSPI2()
{
digitalWrite(SPI2_NSS_PIN, LOW); // manually take CSN low for SPI_2 transmission
data = SPI_2.transfer(0x55); //Send the HEX data 0x55 over SPI-2 port and store the received byte to the <data> variable.
digitalWrite(SPI2_NSS_PIN, HIGH); // manually take CSN high between spi transmissions
}Может нужно какую-то специальную библиотеку использовать? Хотя во многих примерах (для STM) я видел именно эту библиотеку...
Попробовал поковырять эту библиотеку, но это оказалось для меня слишком сложным
Может вы посоветуете что мне делать? Нужно заставить работать nrf24l01 на пинах PB3 (SCK1), PB4 (MISO1), PB5 (MOSI1)
