Не видит CD карту (mega 2560 + TFT LCD 320X480&SDcard)
- Войдите на сайт для отправки комментариев
Чт, 26/11/2015 - 02:35
Что имеем mega 2560 с дисплеем 320X480 (вот такой) в нем есть слот карты, но карту не могу инициализировать... карта на 256 мегабайт, пробовал форматировать и в FAT16 и FAT32, может кто сталкивался... буду рад любой помощи.
тестовый код:
/* 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 <SPI.h> #include <SD.h> // 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 = 53; // change this to 53 on a mega void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print("\nInitializing SD card..."); // On the Ethernet Shield, CS is pin 4. It's set as an output by default. // Note that even if it's not used as the CS pin, the hardware SS pin // (10 on most Arduino boards, 53 on the Mega) must be left as an output // or the SD library functions will not work. pinMode(53, OUTPUT); // change this to 53 on a mega // 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 is 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) { }
У шилда есть колодка ICSP? Если нет, то разводи SPI проводками.
Ну и прозвони до кучи. На меге SPI на других пинах выведена.
У меня такая же проблема. Решение ни кто не нашел?
Промудохался тогда 2 дня и толку нуль!
Я мудохаюсь уже почти неделю. ХЗ че делать. Хочу попробовать сам собрать картридер и попробовать.
Попробуйте эту библиотеку, там есть возможность форматировать карту. Я только этой либой отформатировал, тогда и стандартная почала работать.
https://github.com/greiman/SdFat
1. Выводы SD подключены через шинный формирователь, разберитесь все ли верно разведено на плате.
2. Питаете только через USB разъем ваш пирог, попробуте подключить внешнее питание, может не хватает мощьности/
Спаял внешний картридер по простенькой схемке: 3 резистора 3.3 кОм, и 3 резистора 1.8 кОм (в инете легко найти) и сразу пошло с примером CardInfo, который прислали китайские друзья. А то я думал на SD карту, до этого тоже пробовал библиотеку SdFat, но безрезультатно. Походу картридер на плате не пашет или распиновка не соответствует действительности, одно радует, что экран работает и достаточно качественно. Время будет попробую вызвонить распиновку на плате. Еще надо попробовать подключить TFT совместно с левым картридером, а то может чего-то не хватает.
Плата 3,5" ilil9481. Та же проблема. Не видел SD карту ни в каком виде. Подключаю отдельную плату картридера - всё работает. Попробовал добавить внешнего питания и процесс пошёл, но нестабильный. Из пяти включений CardInfo распознаёт карту только в одном случае и то пишет, что не может найти Fat16/32 partition. В чём может быть проблема?
Прозвонил выходы с SD карты на плате. Через резисторную сборку (10 кОм) попадают на пины 50-53 (по-моему так и должно быть)
Думаю нет согласования уровней SD и контроллера. Можно попробовать поиграть с ограничительными резисторами, например уменьшить их до 5.1 кОм. Посмотрел на свой старый шилд tft 2.8, там microSd подключено к ардуино напрямую и работало.
Пробовал подключить внешнее питание нашел блок с выходным напряжением при замерах вольтметром 16 В, хотя на нем написанно было 12 В (че было то и воткнул, по документации максимальное предельно 20В). Ардуинка не реагировала ни как, вообще не работала и экран не горел. Нашел зарядник от телефона - 5В, ардуинка заработала, загорелся экран, но встроенный картридер в TFT все равно не фурычил! Кстати в инете встречались схемы с делителем где было 3 резистора 4.7 кОм и 3 резистора 10 кОм спаивались по аналогии с моей схемой, просто номинал другой. Я спаял по первой попавшей.
Пробовал подключить внешнее питание нашел блок с выходным напряжением при замерах вольтметром 16 В, хотя на нем написанно было 12 В (че было то и воткнул, по документации максимальное предельно 20В). Ардуинка не реагировала ни как, вообще не работала и экран не горел.
А вы полярность на разъеме БП проверили? Для справки, на входе arduino по питанию стоит диод, он защищает его от переполюсовки.
Да проверял. Почему отдал предпочтение блоку питания 16 В? Ответ простой, на нем был уже готовый разъем. А когда решил поставить 5 В на питание, пришлось отрезать разъем и устанавливать полюсность.
По поводу согласования входов-выходов установил, что на плате для согласования используется двунаправленный шинный транслятор HC245(в инете он находится как 74HC245D, думаю аналог). Их там 3 штуки. Они используются для согласования матрицы LCD и слота SD.
Интересная статья про согласование: http://we.easyelectronics.ru/Shematech/soglasovanie-logicheskih-urovney-5v-i-33v-ustroystv.html
И вот HC245 http://chip-nn.ru/doc/all/2091/2091.zip
Решение нашлось. Припаял перемычки поверх резиторной сборки. Читает карту и по USB и с внешним источником питания. Чётко, ни одного сбоя. Спасибо diger67 за рекомендации в каком направлении двигаться.
Пришли фотку и как-то разъясни. Всем интересно.
Пришли фотку и как-то разъясни. Всем интересно.
Зачем фотка. Заменяем сборки относящиеся к SD 4х10 кОм перемычками. Если у вас стоит 74HC245 или ее аналог, то так же обходим перемычками. Во втором случае несколько сложнее. Выоды шин смещены на одну ногу. Проблема заключается в том, что почти все модификации 74HC245 нельзя использовать как преобразователи уровня. Это прямо прописано в даташите на микросхему. Для этих целей делают 20 пинового жука с раздельным питанием шины "А" и шины "В".
Пришли фотку и как-то разъясни. Всем интересно.
Ну вот как-то так:
Можно купить сборку "ноль перемычка х 4" и заменить, будет истетично и меньше вероятность коротнуть.
Можно купить сборку "ноль перемычка х 4" и заменить, будет истетично и меньше вероятность коротнуть.
Согласен. Это ведь так сделано - для проверки работоспособности.
А вот что у меня... ума не приложу как ее запустить
У меня как у Sanyaba - 3.2". Выходит надо перемкнуть входы-выходы HC245: SCK (CSK), MOSI (DATA-IN, DI), SS (CS)?
Вот, что я напаял, если кому интересно. Три делителя на выходы SD-карты, которы упомянул ранее.
да в том то и дело, что неохота сдувать разъем с платы TFT LCD 320X480, если бы был хоть какой то разъем под карту памяти можно было бы самому распаять за 5 минут, перерыл все мобилы и гамнитофоны, значит пока проект заморозил...
да в том то и дело, что неохота сдувать разъем с платы TFT LCD 320X480, если бы был хоть какой то разъем под карту памяти можно было бы самому распаять за 5 минут, перерыл все мобилы, значит пока проект заморозил...
Понял тебя. Согласен. Посмотрим может, что ребята посоветуют. И я на следующей неделе на работу выйду попробую вызвонить выводы. Будет о чем подумать. Напишу если что-то будет интересное.
да в том то и дело, что неохота сдувать разъем с платы TFT LCD 320X480, если бы был хоть какой то разъем под карту памяти можно было бы самому распаять за 5 минут, перерыл все мобилы и гамнитофоны, значит пока проект заморозил...
Сдуваь разъем, что за блаж. Если 74HC245 отвечает только за SD , смело ее выпаеваем и ставим перемычки по MISO, MOSI, SCL, SS.
Как видно полностью выпаять не получится. Это видно по разводке платы. Попытаться установить перемычки - работа для муравьев, мелко слишком. И еще они как-то завязанны с флеш-памятью. И вообще с этой флешь какие-то не понятки, информации по объему нет никакой. Вывод INPUT для флеш памяти присутствует. Вероятно это память для нормальной работы LCD...
diger67 получается мы будем передавать 5В на входы SD напрямую без делителя (согласования). Как это отразится на работе SD? не зря же придуман делитель, будь-то на чипе или на резистивной сборке?
diger67 получается мы будем передавать 5В на входы SD напрямую без делителя (согласования). Как это отразится на работе SD? не зря же придуман делитель, будь-то на чипе или на резистивной сборке?
Я писал выше. У меня на шилде SD подключена напрямую к выводам идущим на arduino. Место на шилде под flash предназначено для установки памят с SPI типа 25w128, вот в этом случае шинный формирователь как раз к стати, эта память работает на уровнях мах 3.6 вольта. Т.е. или SD в слот, или память на плату. Я гдето внутри подозреваю, что согласующие элементы есть в самой SD, хотя могу ошибаться. У меня же работает и не одна SD не сгорела.
А по натуре! Че я парюсь? Я могу перемкнуть делитель сначала на мной спаянном картридере, и узнать как себя поведет SD-карта. И если прокатит. То вызвонить выводы на TFT плате и перемкнуть.
Ответ простой!!! Не качественная пайка на разъеме TFT дисплея. Стал вызванивать и обнаружил что не звонится. Прогрел место пайки паяльником и все заработало. Далее краткое пояснение кто с подобным случаем столкнется. И как справка для всех заинтересованых.
На рисунке изображен слот SD карты как стоит на плате, с пронумерованными выводами, наименование выводов SD-карты и номер пина на Mega 2560. Обведенны выводы которые идут через чип HC245, выводы которые я на самодельно картридере подключал через делитель напряжения. Вызвонить напрямую с вывода SD-слота на разъем не получится не пропускает HC245. Поэтому приходится с SD-слота вызвонить до выхода чипа HC245, а потом со смещением на один пин(как на картинке), вызвонить с разъема до входа. На рисуке изображен разъем которой стоит на TFT, и подписанна нумерация выводов как будете видеть их вы. Напряжение питания приходит с вывода разъема - 5В проходит через чип U1 и по ходу преобразуется в 3.3В. MISO идет напрямую и должен вызвониться на разъеме TFT, так же как и GND.
У меня не звонился пин разъема 52 и GND с одной стороны. Пусть отсутствие GND и не вызывает беспокойство, есть другой пин GND, но это обстоятельство и заставило меня задуматься о качестве пайки всех остальных пинов. Удачи всем!!!
Спасибо за полезную информацию, если вас не затруднит покажите код которым проверяете работу CD карты на данном шилде, очень буду признателен.
А тот что вы в самом начале темы предлагали на рассмотрение. Главное удостовериться что chipSelect 53 пин.
А так китайские друзья прислали мне Datasheet по этому TFT экрану, от туда я и взял CardInfo.
С качеством сборки это давняя история. Хорошо хоть не накосячили с распиновкой шлейфа самого TFT. такое тоже встречается.
Sanyaba отпишись, как что-то найдешь. Всем интересно.
не могу скопировать изображение, я только начинаю с картами работать, скинь его пожалуйста на почту, думаю пригодиться , тк у меня ардуино на 5в а карты на 3.3 вроде работают
447408335@inbox.ru заранее благодарен
как только, сразу отпишусь, немного занят сейчас, стол завален ... до клавиатуры еле добираюсь
как только, сразу отпишусь, немного занят сейчас, стол завален ... до клавиатуры еле добираюсь
БЫЛ БЫ У МЕНЯ СТОЛ СВОБОДЕН, я бы на листок списал(как всегда с ошибками и матюкал бы тебя за кривую схему( жалко смайликов нет)
не зря говорят , за двумя зайцам не угонишься( в данный момент я вай фай модуль мучаю)
не зря говорят , за двумя зайцам не угонишься( в данный момент я вай фай модуль мучаю) плюс айфон на запчасти пускаю- дисплей нужен
скажу без всяких... за зиму сильно очень загадил рабочее место, люблю когда все лежит на своих местах (в коробочках, в коробках...) но когда ченить начинаешь делать то эти все коробочкм и коробки из кладовой выстраиваются на столе нереальными стопками... монитора едвали видать... ... ... было бы время КУЧА, много Б чего перемучал!
разочарование... взял еще одну карту но уже на 2GB, результат тот же!
и тут в коробочке в флешками мне попалась 4GB Micro SD флешка которуюю подкинул к шилду через адаптер, и о чудо
в итоге, две старые флехи имели мне мозги!
Тебя не смущает что MMC - это не эквивалент SD?
теперь уже смущает ибо невнимательный!
и смущает то что китаёзы не предоставляют инфы по этим шилдам на странице описания товара
Sanyba испытывал дисплей?
Как работает? Я тут натолкнулся на такую проблему может кто-то даст совет?! Проблема вот в чем!!!
Загружаю простенькую программку. Для иследования работы с цветами дисплея. Получается что дисплей не выдает цвета так как они должны быть. Вплоть до наоборот черный высвечивается на экране как белый, а белый, соответственно, как черный. Подозреваю что проблема в драйвере TFT-дисплея, а как узнать какой нужен драйвер? Китайские друзья прислали мне Datasheet как помойное ведро, всего накидали и драйвера и описание разных TFT дисплеев (Причем на китайском!!!) Че делать? В какую сторону думать?
а 10 рублей работают? я то дома лежит несколько штук, может сервер сделать
MrAcsacal, дисплей вроде как работает, особо ничего серьезного на него не выводил, максимум что выводил - миниатюры картинок все цвета совпадают, брал инфу по выводу на дисплей тут http://wiki.amperka.ru/продукты:tft-lcd-480x320 а саму библиотеку тут https://github.com/amperka/UTFT
Да дело в драйвере TFT. В строчке кода, где есть ссылка на драйвер HX8357B, ради интереса заменил букву на HX8357C. Цвета стали передаваться как и того и требуется, но походу настройки чуть другие и получается, что не весь экран перекрашивается. В параллельной теме нашел предложение скачать библиотеку UTFT, скачал. У меня заработала функция lcdOff() и lcdOn(), а смоей библиотекой не работала. Вот тема: http://arduino.ru/forum/programmirovanie/trend-na-arduino-mega-2560-tft-lcd-320kh480-hx8357b?page=1. По идее демострационный вариант должен выглядеть так:
А у меня с точностью до наоборот, черный-белый, белый-черный, а другие цвета совсем не понятно как. Можете попробовать код загрузить код демо-варианата? Посмотреть, как он будет выглядеть у Вас?
Если все будет как на картинке, то попрошу Вас прислать мне для эксперимента Вашу библиотеку UTFT.
Да кстати, с библиотекой UTFT, которую скачал по ссылке, которую показал ранее. Изменение буквы ни как не влияет на работу. Но работают функции lcdOff() и lcdOn().