Скематик
Вторник 23 мая 2017 г. 22:47
Я пытался получить синюю таблетку с модулем SD -карты. Модуль SD работает с Arduino, однако ни одна из библиотек, с которыми я знаком, не работает с STM32F103.
Мои соединения (модуль SD -> синяя таблетка)
CS -> PA15
SCK -> PB3
Мисо-> PB4
Моси -> PB5
Гнездо->Гнездо
VCC подключен к внешнему 5V
SD Библиотека Cardinfo:
Мои соединения (модуль SD -> синяя таблетка)
CS -> PA15
SCK -> PB3
Мисо-> PB4
Моси -> PB5
Гнездо->Гнездо
VCC подключен к внешнему 5V
SD Библиотека Cardinfo:
/*
SD card test
This example shows how use the utility libraries on which the'
SD library is based in order to get info about your SD card.
Very useful for testing a card when you're not sure whether its working or not.
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
** CS - depends on your SD card shield or module.
Pin 4 used here for consistency with other Arduino examples
created 28 Mar 2011
by Limor Fried
modified 9 Apr 2012
by Tom Igoe
*/
// include the SD library:
#include
#include
// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;
// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = PA15;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("\nInitializing SD card...");
// we'll use the initialization code from the utility libraries
// since we're just testing if the card is working!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card inserted?");
Serial.println("* is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
return;
} else {
Serial.println("Wiring is correct and a card is present.");
}
// print the type of card
Serial.print("\nCard type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
}
// Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
return;
}
// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();
volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we'll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume);
// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}
Rogerclark
Ср 24 мая 2017 г., 4:23
Похоже, у него есть преобразователь уровня для работы с оборудованием AVR 5V.
Это может не работать с 3.3V аппаратное обеспечение STM32, так как преобразователь уровня не требуется (и, скорее всего, приведет к отправке неправильных уровней напряжения на SD -карту)
Это может не работать с 3.3V аппаратное обеспечение STM32, так как преобразователь уровня не требуется (и, скорее всего, приведет к отправке неправильных уровней напряжения на SD -карту)
AG123
Ср 24 мая 2017 г. 9:41
Получить их без преобразователя уровня и без серийных резисторов, подтягивания, соответствующие спецификациям SD, в порядке, но серии резисторов, вероятно, усугубляют ситуацию, образуя цепь RC, искажая сигналы в диапазонах MHZ
http: // www.eBay.com/sch/i.HTML?_from = r4 ... Duino+3.3В
http: // www.eBay.com/sch/i.HTML?_from = r4 ... Duino+3.3В
Скематик
Ср 24 мая 2017 г. 9:54
Я закажу один с 3.3V логическое напряжение.
В то же время я хочу начать экспериментировать с SD. Я пытался использовать преобразователь логического уровня для линий SPI между модулем STM32F103 и SD, однако результаты также разочаровывают (возможно, преобразователь уровня слишком медленный?). Нет ли способ начать работу с модулем SD, который у меня сейчас?
В то же время я хочу начать экспериментировать с SD. Я пытался использовать преобразователь логического уровня для линий SPI между модулем STM32F103 и SD, однако результаты также разочаровывают (возможно, преобразователь уровня слишком медленный?). Нет ли способ начать работу с модулем SD, который у меня сейчас?
AG123
Ср 24 мая 2017 г., 10:06
Я думаю, что SD -карты суетливы с уровнями напряжения, в частности, VCC и напряжения питания земли, 3.3 В после того, как выброшенный LDO, возможно, оставлен около 2.2V, затем * Серия * Резисторы, вероятно, искажают сигналы в диапазонах MHZ, подтягивание, встречая спецификации SD, в порядке.
То, что можно попытаться сделать, - это начало с низкой скорости тактовой частоты SPI
кажется, эти 3.3V TF Micro-SD-адаптеры меньше этих серийных резисторов «трудно найти» на eBay, многие из них помещают серионные резисторы или некоторых переводчиков ровного уровня, и они сдерживали это 3.3 В/5 В. Но я думаю, что это влияет на производительность 3.3v, как только вы поднимаете часы SPI до диапазонов MHZ, но именно здесь мы хотим работать, иначе вы можете в конечном итоге получить скорость передачи, скажем, в низких сотнях Kbytes/S <100 кбайт/с в лучшем случае
Что я сделал, так это удалил резисторы из 3 серии (заменен проводами) на моем ЖК -дисплее ILI9341 с адаптером SD и использовал этот адаптер
http: // www.STM32duino.com/viewtopic.PHP?F = 44&T = 2026
Обратите внимание, что ваш адаптер, кажется, использует буфер/приемопередачу, я думаю, что буферные ICS все еще должны работать для линий данных.
Но если вы хотите питать карту, вы можете попытаться найти источник напряжения 5 В, если вы хотите подключиться перед LDO
Если вы обходитесь с 3.3V по всему LDO, выброс, вероятно, будет не менее 0.5 В (оставив 2.7 В) или в некоторых случаях 1 В (оставив 2.2 В)
Но будьте осторожны с тем, чтобы поставить VCC 5 В, так как это может повредить чип STM32F1 и или или SD, если это сделано неправильно, SPI 1 на STM32F103 находится на аналоговых контактах, что не является толерантным 5 В
То, что можно попытаться сделать, - это начало с низкой скорости тактовой частоты SPI
кажется, эти 3.3V TF Micro-SD-адаптеры меньше этих серийных резисторов «трудно найти» на eBay, многие из них помещают серионные резисторы или некоторых переводчиков ровного уровня, и они сдерживали это 3.3 В/5 В. Но я думаю, что это влияет на производительность 3.3v, как только вы поднимаете часы SPI до диапазонов MHZ, но именно здесь мы хотим работать, иначе вы можете в конечном итоге получить скорость передачи, скажем, в низких сотнях Kbytes/S <100 кбайт/с в лучшем случае
Что я сделал, так это удалил резисторы из 3 серии (заменен проводами) на моем ЖК -дисплее ILI9341 с адаптером SD и использовал этот адаптер
http: // www.STM32duino.com/viewtopic.PHP?F = 44&T = 2026
Обратите внимание, что ваш адаптер, кажется, использует буфер/приемопередачу, я думаю, что буферные ICS все еще должны работать для линий данных.
Но если вы хотите питать карту, вы можете попытаться найти источник напряжения 5 В, если вы хотите подключиться перед LDO
Если вы обходитесь с 3.3V по всему LDO, выброс, вероятно, будет не менее 0.5 В (оставив 2.7 В) или в некоторых случаях 1 В (оставив 2.2 В)
Но будьте осторожны с тем, чтобы поставить VCC 5 В, так как это может повредить чип STM32F1 и или или SD, если это сделано неправильно, SPI 1 на STM32F103 находится на аналоговых контактах, что не является толерантным 5 В
Rogerclark
Ср 24 мая 2017 г. 10:32
Похоже, что чип преобразователя уровня просто берет MOSI и SCLK и преобразует их в 3.3V, трудно понять, делает ли он мисо, глядя на фотографии
Вы могли бы попробовать выпадать в распад преобразователь уровня и тщательно паять входы на выходы для MOSI и SCLK.
Но, как сказал @AG123, могут также возникнуть проблемы с регулятором, поэтому убедитесь, что вы предоставите его 5V или альтернативно подключите 3.3v на выход регулятора напряжения.
Возможно, вам также потребуется удалить и в регуляторе напряжения, но, по моему опыту, те, которые я использовал, не втягивают ток через свой выход, если они поставляются с 3.3В
Вы могли бы попробовать выпадать в распад преобразователь уровня и тщательно паять входы на выходы для MOSI и SCLK.
Но, как сказал @AG123, могут также возникнуть проблемы с регулятором, поэтому убедитесь, что вы предоставите его 5V или альтернативно подключите 3.3v на выход регулятора напряжения.
Возможно, вам также потребуется удалить и в регуляторе напряжения, но, по моему опыту, те, которые я использовал, не втягивают ток через свой выход, если они поставляются с 3.3В
Стивестронг
Ср 24 мая 2017 г. 13:12
Как сказал @AG123, снимите скорость SPI при использовании переводчика уровня.
Скематик
Ср 24 мая 2017 г., 22:47
Спасибо за все отзывы.
Кажется, что, по крайней мере, некоторые модификации требуются для моего текущего модуля SD, однако, если возможно, я бы хотел отклониться от SMD -пайки Будут ли некоторые контакты за заголовком, припаянные непосредственно к булавкам адаптера MicroSD-SD? Я посмотрел вверх булавки от SD -карты, Похоже, есть линии SPI и 3.3v толерантный. Я пошел вперед и припаяли несколько булавок к адаптеру MicroSD.(не моя картина, но выглядит очень похожим) Я отложил модуль SD в сторону и подключил SD -карту непосредственно к плате микроконтроллера.
Общение с 3.3V Arduino Pro Mini работает нормально! Обе библиотеки выводят правильную информацию о вставленной SD -карте и перечисляют все файлы на карте хранения.
На STM32F103 он, по крайней мере, распознает SD -карту, однако она все еще сталкивается с проблемами (правильный размер карты 8 ГБ);
SD библиотека Cardinfo.серийный вывод INO (код в открытии сообщения):
Кажется, что, по крайней мере, некоторые модификации требуются для моего текущего модуля SD, однако, если возможно, я бы хотел отклониться от SMD -пайки Будут ли некоторые контакты за заголовком, припаянные непосредственно к булавкам адаптера MicroSD-SD? Я посмотрел вверх булавки от SD -карты, Похоже, есть линии SPI и 3.3v толерантный. Я пошел вперед и припаяли несколько булавок к адаптеру MicroSD.(не моя картина, но выглядит очень похожим) Я отложил модуль SD в сторону и подключил SD -карту непосредственно к плате микроконтроллера.
Общение с 3.3V Arduino Pro Mini работает нормально! Обе библиотеки выводят правильную информацию о вставленной SD -карте и перечисляют все файлы на карте хранения.
На STM32F103 он, по крайней мере, распознает SD -карту, однако она все еще сталкивается с проблемами (правильный размер карты 8 ГБ);
SD библиотека Cardinfo.серийный вывод INO (код в открытии сообщения):
ializing SD card...Wiring is correct and a card is present.
Card type: SD2
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card
Стивестронг
Ср 24 мая 2017 г. 11:19
Скематик написал:Я хочу попытаться снизить скорость SPI, где я могу это сделать?
Скематик
Ср 24 мая 2017 г. 11:36
Стивестронг написал:Скематик написал:Я хочу попытаться снизить скорость SPI, где я могу это сделать?
Стивестронг
Чт 25 мая 2017 г., 6:36
Вы проверили 3.3V снабжение? На синей таблетках 5V->3.Регулятор напряжения 3V не очень сильный.
Кажется, что данные чтения в основном 0x00, так что там все еще должно что -то не так.
Кажется, что данные чтения в основном 0x00, так что там все еще должно что -то не так.
Скематик
Чт 25 мая 2017 г. 9:23
Стивестронг написал:Вы проверили 3.3V снабжение? На синей таблетках 5V->3.Регулятор напряжения 3V не очень сильный.
Кажется, что данные чтения в основном 0x00, так что там все еще должно что -то не так.
Кажется, что данные чтения в основном 0x00, так что там все еще должно что -то не так.
Скематик
Пт 26 мая 2017 г. 14:13
Все, что я мог попробовать?
Пито
Пт 26 мая 2017 г. 16:50
Какой у вас булавка Chipselect?? Попробуйте использовать другой.
Также попробуйте обменять булавки MOSI/MISO..
Также попробуйте обменять булавки MOSI/MISO..
AG123
Пт 26 мая 2017 г., 18:32
Поскольку у вас есть регулятор LDO на плате SD Breakout
Вы можете попытаться направить штифт 5 В от вашего чертежа на штифт VCC на плате SD Breakout
*Предупреждение*, когда все это сделает, есть под рукой вольтметра. После подключения 5 В VCC My Shought - это сначала измерение напряжений от MSOI, MOSI, SCK, CS -штифтов на прорыве, прежде чем даже соединить его с Bluepill, поскольку SPI 1 не является толерантным 5 В
Вам, вероятно, нужно измерить напряжения на синих таблетках E.глин. штифт 5 В, который, казалось, был вывод 3, чтобы установить, что это правильный штифт
Схема находится на форуме STM32Duino Wiki
http: // wiki.STM32duino.com/index.PHP?title = blue_pill
Вы можете попытаться направить штифт 5 В от вашего чертежа на штифт VCC на плате SD Breakout
*Предупреждение*, когда все это сделает, есть под рукой вольтметра. После подключения 5 В VCC My Shought - это сначала измерение напряжений от MSOI, MOSI, SCK, CS -штифтов на прорыве, прежде чем даже соединить его с Bluepill, поскольку SPI 1 не является толерантным 5 В
Вам, вероятно, нужно измерить напряжения на синих таблетках E.глин. штифт 5 В, который, казалось, был вывод 3, чтобы установить, что это правильный штифт
Схема находится на форуме STM32Duino Wiki
http: // wiki.STM32duino.com/index.PHP?title = blue_pill
AG123
Пт 26 мая 2017 г., 19:25
Вы используете SD Fat 'Greiman'? В настоящее время это кажется тем, что работает довольно хорошо
http: // www.STM32duino.com/viewtopic.PHP?f = 13&t = 20
https: // github.com/greiman/sdfat
Кроме того, я на самом деле использовал SPI.CPP, SPI.H 'драйверы' в библиотеках/SPI
https: // github.com/rogerclarkmelbourne/ ... Спутники/SPI
Вы могли бы использовать библиотеки SD Fat, с которыми вы знакомы, но я думаю, вам нужно будет проверить, где они подключены к SPI.час.
я люблю копировать SPI.С, SPI.H из библиотек/SPI и поместите это в ту же папку, что и набросок, и обновить коды, чтобы включить «SPI.h ", а не <SPI.час>. Похоже, в ядро Libmaple есть некоторые коды, касающиеся SPI. Я скопировал файлы и поместил их в ту же папку, чтобы избежать, включая неверные библиотеки из ядра Libmaple
Эти булавки тоже выглядят немного странно для меня CS -> PA15
SCK -> PB3
Мисо-> PB4
Моси -> PB5
Гнездо->Гнездо SPI1 обычно на
http: // www.STM32duino.com/viewtopic.PHP?f = 13&t = 20
https: // github.com/greiman/sdfat
Кроме того, я на самом деле использовал SPI.CPP, SPI.H 'драйверы' в библиотеках/SPI
https: // github.com/rogerclarkmelbourne/ ... Спутники/SPI
Вы могли бы использовать библиотеки SD Fat, с которыми вы знакомы, но я думаю, вам нужно будет проверить, где они подключены к SPI.час.
я люблю копировать SPI.С, SPI.H из библиотек/SPI и поместите это в ту же папку, что и набросок, и обновить коды, чтобы включить «SPI.h ", а не <SPI.час>. Похоже, в ядро Libmaple есть некоторые коды, касающиеся SPI. Я скопировал файлы и поместил их в ту же папку, чтобы избежать, включая неверные библиотеки из ядра Libmaple
Эти булавки тоже выглядят немного странно для меня CS -> PA15
SCK -> PB3
Мисо-> PB4
Моси -> PB5
Гнездо->Гнездо SPI1 обычно на
PA4 - SS (you could use this as /CS if you'd like)
PA5 - SCK1
PA6 - MISO1
PA7 - MOSI1
Sweetlilmre
Солнце 16 июля 2017 г. 16:40
[AG123 - Пт 26 мая 2017 г., 19:25] -
SPI1 обычно на
PA4 - SS (you could use this as /CS if you'd like)
PA5 - SCK1
PA6 - MISO1
PA7 - MOSI1
Tfried
Сб 30 декабря 2017 г., 8:21 вечера
Не для возрождения мертвого потока, а для тех, кто ищет ту же проблему:
Я столкнулся с такими же проблемами, и в моем случае проблема заключалась в том, что читатель SD -карт не работал в 3.3V (хотя спецификации сказали об этом). Как только я включил его с 5V, вместо этого он начал работать просто отлично (используя библиотеку «по умолчанию» Arduino SD) тоже).
Обратите внимание, что при питании с помощью 5V вы захотите, чтобы они либо использовали преобразователь логического уровня, либо подключиться к SPI2 (PINS PB12-PB15, которые обозначены как толерантные 5 В). Использовать
Я столкнулся с такими же проблемами, и в моем случае проблема заключалась в том, что читатель SD -карт не работал в 3.3V (хотя спецификации сказали об этом). Как только я включил его с 5V, вместо этого он начал работать просто отлично (используя библиотеку «по умолчанию» Arduino SD) тоже).
Обратите внимание, что при питании с помощью 5V вы захотите, чтобы они либо использовали преобразователь логического уровня, либо подключиться к SPI2 (PINS PB12-PB15, которые обозначены как толерантные 5 В). Использовать
SPI.setModule(2);
Rogerclark
Сб 30 декабря 2017 г., 8:31 вечера
Обратите внимание, что максимальная скорость на SPI2 - это половина SPI1
Но, возможно, это достаточно быстро для SD
Но, возможно, это достаточно быстро для SD
Mrburnette
Солнце 31 декабря 2017 г., 17:05
[Tfried - Сб 30 декабря 2017 г. 8:21 вечера] - Не для возрождения мертвого потока, а для тех, кто ищет ту же проблему:Мне еще предстоит найти читатель SD -карты, который не 3.3В ... Я получил карты, у которых есть 3.3 Вольт регулятор для входа 5 В в VCC. В этом случае один только шорт с регулятором. Часто карты 5V имеют резисторы последовательно с сигнальными линиями, чтобы обеспечить квазиолтаж разделитель ... бедный. Эти резисторы могут быть удалены и установлены 0-ом SMD-блоки или просто перемычки для проводов. Единственный штифт, на который вы можете оставить резистор,-это переключатель вставки SD-карты.
Я столкнулся с такими же проблемами, и В моем случае проблема заключалась в том, что читатель SD -карты не работал в 3.3В (Хотя спецификации сказали об этом). Как только я включил его с 5V, вместо этого он начал работать просто отлично (используя библиотеку «по умолчанию» Arduino SD) тоже).
...
Производительность на картах 5V чуть лучше, чем паршивая. .. Вставленное сопротивление вызывает проблемы с временем с непрерывной емкостью и индуктивностью.
Луча
Chpr
Чт 22 марта 2018 г. 15:24
У меня 3.3 V µSD чтения карты нравится Вот этот (Без какого -либо регулятора, просто ограниченные резисторы), и я попытался заставить его работать с кодом, приведенным на начале этого поста. У меня такие же проблемы, мой карт Connecter или на 3.3 В или 5 В.
Я достиг, чтобы заставить его работать с решением использования «SPI.SetModule (2); «Это даже работает с" spi_full_speed "
Искренне.
Пьер
Я достиг, чтобы заставить его работать с решением использования «SPI.SetModule (2); «Это даже работает с" spi_full_speed "
Искренне.
Пьер
Пито
Чт 22 марта 2018 г., 20:02
У меня 3.3 V µSD Reader Card, как этот (без какого -либо регулятора, только ограниченные резисторы)
Эти 10 тысяч на доске (103)-это подтягивания, а не «ограниченные резисторы».. Использовать с 3.Только 3v !!
Chpr
Пт 23 марта 2018 г. 9:38 утра
[Пито - Чт 22 марта 2018 г. 20:02] - У меня 3.3 V µSD Reader Card, как этот (без какого -либо регулятора, только ограниченные резисторы) Эти 10 тысяч на доске (103)-это подтягивания, а не «ограниченные резисторы».. Использовать с 3.Только 3v !!Вы жестко.
Не намеренно, я связал эту SD -карту с 5 В ... Всегда жив !
Искренне.
Пьер