|
|
|
SDHC SPI Kingston 8Гб, ACMD41 Halt. |
|
|
|
Nov 5 2016, 17:41
|
Участник
Группа: Участник
Сообщений: 17
Регистрация: 7-01-12
Пользователь №: 69 203
|
Фсем ПРИВЕТ ! парни, помoгите бедолаге. имею 4Гб микро СДху неизвестного производителя. на ACMD41 пару раз отвечает 01, после чего как и положенно 0. после нуля запрашиваю CMD58-> C0 00 FF 80 00. значит вышла из idle state. ставлю kingston 8GB - 6 раз 0x01, после чего вечный FF. всю гуглю изрыл, у буржуев такую же проблему видел. решения не нашёл. я уж и меж CMD55 и 41 CS-сом дрыгаю, и ваще всё, всё ,всё. ну не отвечает и всё тут - валится в игнор. но на комманду 0 и последующую 8 отвечает как надо.
Сообщение отредактировал trientxp - Nov 6 2016, 06:13
|
|
|
|
|
Nov 5 2016, 18:15
|
Участник
Группа: Участник
Сообщений: 17
Регистрация: 7-01-12
Пользователь №: 69 203
|
R1+respond= 01 00 FF 80 00. да, и не раз - подаю в ручную. даже пытался ЦРЦ правильную в эти комманды запихнуть. всё равно 0x01 6 раз и вечный сон ФФ. а, да, даже электролит 200 мкФ к карте прицепил.
Сообщение отредактировал trientxp - Nov 5 2016, 18:36
|
|
|
|
|
Nov 6 2016, 06:20
|
Участник
Группа: Участник
Сообщений: 17
Регистрация: 7-01-12
Пользователь №: 69 203
|
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 )
Сообщение отредактировал trientxp - Nov 6 2016, 06:51
|
|
|
|
|
Nov 6 2016, 07:46
|
Гуру
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448
|
Цитата(trientxp @ Nov 6 2016, 09:20) cmd41: 0x69, 0x40,0,0,0 Замените на "0x69, 0x40, 0x10, 0, 0" - вы не посылаете карте информацию о своем напряжении, поэтому она и уходит в inactive state. CRC, по-моему, лучше один раз включить и использовать постоянно.
|
|
|
|
|
Nov 6 2016, 10:27
|
Участник
Группа: Участник
Сообщений: 17
Регистрация: 7-01-12
Пользователь №: 69 203
|
не помогло. я и FF80 от комманды 58 подсовывал, и пробежался ротируя 1-цу от 0x69 40 00 01 00 до 0x69 40 80 00 00. на комманду 55, 41 оба раза ответила 01, а на следующий цикл не отвечала уже на CMD55.
Сообщение отредактировал trientxp - Nov 6 2016, 10:28
|
|
|
|
|
Nov 7 2016, 03:42
|
Участник
Группа: Участник
Сообщений: 17
Регистрация: 7-01-12
Пользователь №: 69 203
|
питал от USB. Точнее от USB - HID (3V LPC2148) переходника, с помощью которого и передаю комманды. из чего я делаю вывод, что если бы и были провалы, то они этот же переходник с собой утягивали, что с компа понять очень легко - INVALID DEVICE HANDLE получил бы. осциолографом бороды не увидел. карточка USB-SD/MicroSD переходником читается на ура.
Сообщение отредактировал trientxp - Nov 7 2016, 03:56
|
|
|
|
|
Nov 8 2016, 03:36
|
Участник
Группа: Участник
Сообщений: 17
Регистрация: 7-01-12
Пользователь №: 69 203
|
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 не принимаю последний бит.
|
|
|
|
|
Nov 8 2016, 12:19
|
Участник
Группа: Участник
Сообщений: 17
Регистрация: 7-01-12
Пользователь №: 69 203
|
нашёл проблему. действительно, борода по питанию. дома на цифровом осциолографе не увидел, а вот на работе на лучевом рассмотрел - при посылке комманды 0x08 был провал чуть ли не 0,5V. оказалось в цепи 3V был резючок 10 Ом. убрал его и всё попёрло. Всем спасибо, тему можно закрыть. правда я рассмотрел после того как скинул 200мкФ и повесил тантал гдет под микрофараду.
Сообщение отредактировал trientxp - Nov 8 2016, 12:23
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|