Проблема с STM32 и SDFat lib на другом порту SPI

Я использую STM32F103C8 и пытаюсь скомпилировать код с библиотекой SDFat. Проблема в том, что мне нужно использовать второй канал SPI1 (контакты PB5, PB4, PB3, PA15):

Я обнаружил, что можно использовать библиотеку SDFat и включить SPIClass в ее конструктор. Тогда я мог бы использовать этот код:

SPIClass SPI_1(PB5,PB4,PB3, PA15);
SdFat sd(&SPI_1); 

Проблема заключается в этой ошибке компиляции:

no matching function for call to 'SdFat::SdFat(SPIClass*)'

Есть ли у вас идеи, как решить эту ошибку или как работать с SD-картой на разных контактах?

Вот исходный код этой библиотеки: https://github.com/greiman/SdFat/blob/master/src/SdFat.h< /а>

, 👍1

Обсуждение

где-нибудь определен IMPLEMENT_SPI_PORT_SELECTION или DOXYGEN? Как это определяется?, @Delta_G

Это внутри библиотеки SDFat. я не уверен, что это значит, @LucasN

Хорошо, если он определен как 0 или не определен, тогда этот конструктор, который вы подчеркнули, не является частью кода. Эта директива препроцессора решает, будет ли эта строка включена или нет. Вам придется поискать и посмотреть, сможете ли вы его найти., @Delta_G

Можешь поделиться своей схемой? Я пытаюсь сделать то же самое, но он всегда не инициализируется., @Shubham Jain


1 ответ


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

1

Хорошо, я узнал, что библиотека sdFat не поддерживается на stm32 bluepill (периферийные устройства HAL SD-карты не включены), поэтому я решил использовать базовую библиотеку Arduino SD (она использует команды SPI, а не HAL).

Также мне нужно изменить выводы (с SPI1_1 на SPI1_2) в файлах variant.h и PeripheralPins.c платы bluepill. - И, наконец, это работает (SPI1_2).

,