[Решен] порт SDFAT для ядра STM

Счастливый1
Пн 17 декабря 2018 г. 15:07
Я знаю о реализации FATFS от Cubemx, но есть ли также порт библиотеки SDFAT ?

Беннебой
Пн 17 декабря 2018 г. 15:14
[Счастливый1 - Пн 17 декабря 2018 г. 15:07] - Я знаю о реализации FATFS от Cubemx, но есть ли также порт библиотеки SDFAT ?
Если вы хотите управлять встроенным устройством SDIO, вероятно, нет.

Если это для читателя SD типа SPI, вы пробовали официальную версию -> https: // github.com/greiman/sdfat

Счастливый1
Пн 17 декабря 2018 г., 16:02
Да, я попытался, но проблема в том, что она опирается на библиотеку SPI, и реализация, которая находится в ядре STM32, не совместима.
Я также попробовал реализацию SDFAT/SPI/SDIO/STM32_DMA, которая находится в ядре STM32GENEREN, но это также не работает.

У меня больше подростков 3.6 Проект, который опирается на SDFAT, который я хочу перенести в Nucleo F7 или H7, и я не хочу использовать STM32Generic для него, потому что
это официально не поддерживается STM

Беннебой
Пн 17 декабря 2018 г. 16:57
[Счастливый1 - Пн 17 декабря 2018 г., 16:02] - Да, я попытался, но проблема в том, что она опирается на библиотеку SPI, и реализация, которая находится в ядре STM32, не совместима.
Не совместим, как? Вы получаете какие -либо ошибки? Если так, пожалуйста, опубликуйте их.

fpistm
Пн 17 декабря 2018 г., 19:28
Я никогда не пробовал SDFAT и не знаю, если бы попробовал.

Беннебой
Пн 17 декабря 2018 г., 22:09
[fpistm - Пн 17 декабря 2018 г., 19:28] - Я никогда не пробовал SDFAT и не знаю, если бы попробовал.
Я попробую завтра, если у меня будет время.

Счастливый1
Вт 18 декабря 2018 г. 15:36
Кажется, я заставил его работать с SDIO, добавив исходный код отсюда
https: // github.com/greiman/sdfat и SDIOSTM32.CPP из библиотеки STM32GERERIEREN CORE SDFAT.
Должен был только инициализировать SDIO GPIOS. Я также использовал библиотеку SDIO и STM32_DMA от STM32Generic.
Однако для меня также была бы интересна SPI SD -карта, но я не изучил это.

Беннебой
Вт 18 декабря 2018 г., 16:03
У меня может возникнуть соблазн сделать то же самое, обработка переменной при печати (может быть варианты компиляции Clib/printf и т. Д.) Похоже, что не хватает по сравнению с SDFAT... Определите поделиться своим кодом?

Беннебой
Вт 18 декабря 2018 г., 18:49
[Беннебой - Вт 18 декабря 2018 г., 16:03] - У меня может возникнуть соблазн сделать то же самое, обработка переменной при печати (может быть варианты компиляции Clib/printf и т. Д.) Похоже, что не хватает по сравнению с SDFAT... Определите поделиться своим кодом?
Нет, это не варианты Newlib.
invalid conversion from 'int' to 'const char*' [-fpermissive]

Счастливый1
Вторник 18 декабря 2018 г., 19:11
Я загрузил его здесь https: // github.com/lucky01/sdfat
Может, вы получите версию SPI. Я понятия не имею, как это инициализировать.

Беннебой
Вт 18 декабря 2018 г., 19:34
SDFAT & SPI SD отлично работает, кстати. И никаких ошибок при попытке печатать целые числа.

Счастливый1
Ср 19 декабря 2018 г., 7:14
У меня есть слот SD -карты, подключенный к SPI2 на моем STM32F4Disco. Знаете ли вы, как его запустить с помощью этой конфигурации ?

Беннебой
Ср 19 декабря 2018 г. 8:31
Я написал длинный пост, объясняющий, как это настроить.

Любая причина, по которой вы не можете поделиться SPI1?

Беннебой
Ср 19 декабря 2018 г. 9:03
И как будто по магии новая версия SDFAT выскочила в IDE...

Похоже, сейчас есть метод для перехода на альтернативные экземпляры SPI.... (или я пропустил это ранее)

Setport
void SdSpiAltDriver::setPort(uint8_t portNumber) { m_spi = &m_SPI1; #if BOARD_NR_SPI >= 2 if (portNumber == 2) { m_spi = &m_SPI2; } #endif // BOARD_NR_SPI >= 2 #if BOARD_NR_SPI >= 3 if (portNumber == 3) { m_spi = &m_SPI3; } #endif // BOARD_NR_SPI >= 2

Беннебой
Ср 19 декабря 2018 г. 10:08
PS, я буду играть в использовании SPI2 на одном из моих 407Vet6 позже.

Беннебой
Ср 19 декабря 2018 г., 11:39
Похоже, что препроцессоры архитектуры в SDFAT потребуют, чтобы SPI2 работал на ядро ​​STM, метод для вызова SDFAT, заявляя, что порт SPI не удается, когда я пытаюсь скомпилировать.

Нет совпадения функции для вызова 'sdfat :: sdfat (int)'

Беннебой
Вт 15 января 2019 г. 14:41
Если кто -то заинтересован, я спрашиваю Греймана, он добавит поддержку Hal Sdio в SDFAT, и указал ему на работу, проведенную Danielf и Lucky -> https: // github.com/greiman/sdfat/проблемы/124

Счастливый1
Чт 17 января 2019 г. 11:17
[Беннебой - Вт 18 декабря 2018 г., 19:34] - SDFAT & SPI SD отлично работает, кстати. И никаких ошибок при попытке печатать целые числа.
Я только что попробовал SDFAT со SPI на моей дискотеке STM32F407 без успеха.
Как вы подключили слот SD ?

Беннебой
Чт 17 января 2019 г. 11:39
Я использовал внешний слот SD, невозможно использовать встроенный считыватель SD через SPI.

Счастливый1
Чт 17 января 2019 г. 13:06
[Беннебой - Чт 17 января 2019 г. 11:39] - Я использовал внешний слот SD, невозможно использовать встроенный считыватель SD через SPI.
Я тоже использую внешний слот, но какие булавки вы подключили его к ?

Беннебой
Чт 17 января 2019 г. 13:10
Я установил свой таким образом:

MOSI PB5 // hwspi экземпляр 1
Мисо pb4 // hwspi экземпляр 1
CLK PB3 // hwspi экземпляр 1
CS PE13 // Любое GPIO - вам не нужно использовать SS PIN -пара с экземпляром SPI, так как это все равно контролируется S/W

Счастливый1
Чт 17 января 2019 13:43
[Беннебой - Чт 17 января 2019 г. 13:10] - Я установил свой таким образом:

MOSI PB5 // hwspi экземпляр 1
Мисо pb4 // hwspi экземпляр 1
CLK PB3 // hwspi экземпляр 1
CS PE13 // Любое GPIO - вам не нужно использовать SS PIN -пара с экземпляром SPI, так как это все равно контролируется S/W
Не работает. Мой тестовый код выглядит так. Любая идея ?
SdFat SD; SD.begin(); File myFile = SD.open("test.txt", FILE_WRITE); if(myFile.isOpen()) { myFile.println("testing 1, 2, 3."); myFile.close(); }

Счастливый1
Чт 17 января 2019 г. 14:03
Работает ! Моя SD -карта была неисправной !! Грррр !
Спасибо за вашу помощь

Беннебой
Ср 23 января 2019 г. 16:29
Кстати, последняя версия SDFAT позволяет использовать альтернативные порты SPI...
explicit SdFat(SPIClass* spiPort);