tridentxp 0 5 ноября, 2016 Опубликовано 5 ноября, 2016 (изменено) · Жалоба Фсем ПРИВЕТ ! парни, помoгите бедолаге. имею 4Гб микро СДху неизвестного производителя. на ACMD41 пару раз отвечает 01, после чего как и положенно 0. после нуля запрашиваю CMD58-> C0 00 FF 80 00. значит вышла из idle state. ставлю kingston 8GB - 6 раз 0x01, после чего вечный FF. всю гуглю изрыл, у буржуев такую же проблему видел. решения не нашёл. я уж и меж CMD55 и 41 CS-сом дрыгаю, и ваще всё, всё ,всё. ну не отвечает и всё тут - валится в игнор. но на комманду 0 и последующую 8 отвечает как надо. Изменено 6 ноября, 2016 пользователем trientxp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 5 ноября, 2016 Опубликовано 5 ноября, 2016 · Жалоба Перед ACMD41 выполнить CMD58 не пробовали? Она только "рекомендуется", но, кажется, попадались мне карты, которые без неё не инициализировались. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tridentxp 0 5 ноября, 2016 Опубликовано 5 ноября, 2016 (изменено) · Жалоба R1+respond= 01 00 FF 80 00. да, и не раз - подаю в ручную. даже пытался ЦРЦ правильную в эти комманды запихнуть. всё равно 0x01 6 раз и вечный сон ФФ. а, да, даже электролит 200 мкФ к карте прицепил. Изменено 5 ноября, 2016 пользователем trientxp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 6 ноября, 2016 Опубликовано 6 ноября, 2016 · Жалоба А какие аргументы передаются в CMD8 и ACMD41? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tridentxp 0 6 ноября, 2016 Опубликовано 6 ноября, 2016 (изменено) · Жалоба DO=1; CS=1; 1000 CLK; CS=0;1000CLK;CS=1;1000 CLK; CS=0;CMD 0;CLK=8; CS=0; cmd8: 0x48 0x00,0x00,0x01,0xAA 0x87;читаю R1 +0 0 1 AA ;CS=1;CLK=8; cycle: CS=0; cmd 55: 0x77 ,0,0,0,0, 0xFF; читаю R1; CS=1;CLK=8; (здесь пробовал црц=0x65 и (65<<1)|1 ) CS=0; cmd41: 0x69, 0x40,0,0,0 0xFF; читаю R1; CS=1;CLK=8;(здесь пробовал црц=0x77и (77<<1)|1 ) Изменено 6 ноября, 2016 пользователем trientxp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 6 ноября, 2016 Опубликовано 6 ноября, 2016 · Жалоба cmd41: 0x69, 0x40,0,0,0 Замените на "0x69, 0x40, 0x10, 0, 0" - вы не посылаете карте информацию о своем напряжении, поэтому она и уходит в inactive state. CRC, по-моему, лучше один раз включить и использовать постоянно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tridentxp 0 6 ноября, 2016 Опубликовано 6 ноября, 2016 (изменено) · Жалоба не помогло. я и FF80 от комманды 58 подсовывал, и пробежался ротируя 1-цу от 0x69 40 00 01 00 до 0x69 40 80 00 00. на комманду 55, 41 оба раза ответила 01, а на следующий цикл не отвечала уже на CMD55. Изменено 6 ноября, 2016 пользователем trientxp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 6 ноября, 2016 Опубликовано 6 ноября, 2016 (изменено) · Жалоба Может быть по питанию случается провалъ. Дело не в только конденсаторе, а в потолке источника. Изменено 6 ноября, 2016 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tridentxp 0 7 ноября, 2016 Опубликовано 7 ноября, 2016 (изменено) · Жалоба питал от USB. Точнее от USB - HID (3V LPC2148) переходника, с помощью которого и передаю комманды. из чего я делаю вывод, что если бы и были провалы, то они этот же переходник с собой утягивали, что с компа понять очень легко - INVALID DEVICE HANDLE получил бы. осциолографом бороды не увидел. карточка USB-SD/MicroSD переходником читается на ура. Изменено 7 ноября, 2016 пользователем trientxp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 7 ноября, 2016 Опубликовано 7 ноября, 2016 (изменено) · Жалоба Тогда пора показывать код инициализации (исходник). Или ещё можно самостоятельно проверить несколько выложенных на этом форуме (а так же Чена из фатфс) алгоритмов инициализаций и объявить здесь, что они тоже с этой карточкой не работают. И обозначить предельный ток используемого 3-вольтового стабилизатора. Изменено 8 ноября, 2016 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tridentxp 0 8 ноября, 2016 Опубликовано 8 ноября, 2016 · Жалоба unsigned char SendRecSPI(unsigned char dat){ unsigned char temp; temp =PDI();temp<<=1; PDO(dat>>7);SCK(1);delay(1);SCK(0);delay(1); temp|=PDI();temp<<=1; PDO(dat>>6);SCK(1);delay(1);SCK(0);delay(1); temp|=PDI();temp<<=1; PDO(dat>>5);SCK(1);delay(1);SCK(0);delay(1);temp|=PDI();temp<<=1; PDO(dat>>4);SCK(1);delay(1);SCK(0);delay(1);temp|=PDI();temp<<=1; PDO(dat>>3);SCK(1);delay(1);SCK(0);delay(1);temp|=PDI();temp<<=1; PDO(dat>>2);SCK(1);delay(1);SCK(0);delay(1); temp|=PDI();temp<<=1; PDO(dat>>1);SCK(1);delay(1);SCK(0);delay(1);temp|=PDI(); PDO(dat); SCK(1);delay(1);SCK(0);delay(1); return temp; } unsigned char SD_CMD(unsigned char *cmd,unsigned char *respond,unsigned int read_cnt, unsigned int timeout){ unsigned char t; t=*cmd; CS(0); SendRecSPI(255); SendRecSPI(0x7F&(*(cmd++))); SendRecSPI(*(cmd++)); SendRecSPI(*(cmd++)); SendRecSPI(*(cmd++)); SendRecSPI(*(cmd++)); SendRecSPI(1|(*(cmd++))); while((timeout--)>0){ *respond=SendRecSPI(255); if (*respond!=255) break; if (timeout==1) return 1; }//timeout respond++; while((read_cnt--)>0) *(respond++)=SendRecSPI(255); //if (t!=0x40|55) CS(1); SendRecSPI(255); return 0; } стабилизатор - TPS76333. вот только заметил что в функции SendRecSPI не принимаю последний бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tridentxp 0 8 ноября, 2016 Опубликовано 8 ноября, 2016 (изменено) · Жалоба нашёл проблему. действительно, борода по питанию. дома на цифровом осциолографе не увидел, а вот на работе на лучевом рассмотрел - при посылке комманды 0x08 был провал чуть ли не 0,5V. оказалось в цепи 3V был резючок 10 Ом. убрал его и всё попёрло. Всем спасибо, тему можно закрыть. правда я рассмотрел после того как скинул 200мкФ и повесил тантал гдет под микрофараду. Изменено 8 ноября, 2016 пользователем trientxp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться