реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> вопрос по командам cmd12 cmd18 mmc sd
sergey sva
сообщение Jan 12 2008, 20:55
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



доброй ночи.

для инициализации mmc sd карты использовать буду команды cmd0 cmd55 acmd41, с cmd0 все понятно,
а cmd55 в поле аргумента должно содержать stuff bit что это это в описании которое есть у меня нечего про это не сказано.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 12 2008, 21:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(sergey sva @ Jan 12 2008, 22:55) *
а cmd55 в поле аргумента должно содержать stuff bit что это это в описании которое есть у меня нечего про это не сказано.

Просто заполнитель (название само за себя говорит smile.gif )для получения фиксированного размера команды. Нули годятся.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 12 2008, 21:08
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(zltigo @ Jan 13 2008, 00:04) *
Просто заполнитель для получения фиксированного размера команды. Нули годятся.

благодарю, счас опробую smile.gif
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 13 2008, 14:30
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



описание на sd mmc на cmd18

Continuously transfers data blocks from card to
host until interrupted by a STOP_
TRANSMISSION command.

интересует такой вопрос, команда непрерывного чтения cmd18 до команды cmd12, чтение будет
происходить в одном секторе или подряд все адреса ? и еще такой вопрос команду cmd12 посылать прям в процессе чтения или сначала поднять cs потом опустить и послать cmd12 ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 13 2008, 15:13
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Moderator:
Так по каждой команде будем новую тему создавать????
Тему объединил с предыдущей.



Цитата(sergey sva @ Jan 13 2008, 16:30) *
интересует такой вопрос, команда непрерывного чтения cmd18 до команды cmd12, чтение будет
происходить в одном секторе или подряд все адреса ?

Так странный вопрос - она-же в отличие от cmd17 по жизни для чтения множества последовательных секторов предназначена.
Цитата
команду cmd12 посылать прям...

прямо в процессе.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 13 2008, 15:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



отправляю команду cmd18 ,должен быть ответ R1 (0x00) получаю 0x20 ошибка адреса.
Цитата
unsigned int read (unsigned long adress, unsigned long len)

unsigned char cmd18[6]={0x52,0x00,0x00,0x00,0x00,0x00};
unsigned char cmd12[6]={0x4C,0x00,0x00,0x00,0x00,0x00};
unsigned char f1 = 0;
unsigned int f2 = 10;
//***************
if(adress & 0x01 ){cmd18[4] |= 0x01;}
if(adress & 0x02 ){cmd18[4] |= 0x02;}
if(adress & 0x04 ){cmd18[4] |= 0x04;}
if(adress & 0x08 ){cmd18[4] |= 0x08;}
if(adress & 0x10 ){cmd18[4] |= 0x10;}
if(adress & 0x20 ){cmd18[4] |= 0x20;}
if(adress & 0x40 ){cmd18[4] |= 0x40;}
if(adress & 0x80 ){cmd18[4] |= 0x80;}
//***************
if(adress & 0x0100 ){cmd18[3] |= 0x01;}
if(adress & 0x0200 ){cmd18[3] |= 0x02;}
if(adress & 0x0400 ){cmd18[3] |= 0x04;}
if(adress & 0x0800 ){cmd18[3] |= 0x08;}
if(adress & 0x1000 ){cmd18[3] |= 0x10;}
if(adress & 0x2000 ){cmd18[3] |= 0x20;}
if(adress & 0x4000 ){cmd18[3] |= 0x40;}
if(adress & 0x8000 ){cmd18[3] |= 0x80;}
//***************
if(adress & 0x010000 ){cmd18[2] |= 0x01;}
if(adress & 0x020000 ){cmd18[2] |= 0x02;}
if(adress & 0x040000 ){cmd18[2] |= 0x04;}
if(adress & 0x080000 ){cmd18[2] |= 0x08;}
if(adress & 0x100000 ){cmd18[2] |= 0x10;}
if(adress & 0x200000 ){cmd18[2] |= 0x20;}
if(adress & 0x400000 ){cmd18[2] |= 0x40;}
if(adress & 0x800000 ){cmd18[2] |= 0x80;}
//***************
if(adress & 0x01000000 ){cmd18[1] |= 0x01;}
if(adress & 0x02000000 ){cmd18[1] |= 0x02;}
if(adress & 0x04000000 ){cmd18[1] |= 0x04;}
if(adress & 0x08000000 ){cmd18[1] |= 0x08;}
if(adress & 0x10000000 ){cmd18[1] |= 0x10;}
if(adress & 0x20000000 ){cmd18[1] |= 0x20;}
if(adress & 0x40000000 ){cmd18[1] |= 0x40;}
if(adress & 0x80000000 ){cmd18[1] |= 0x80;}


adress = 1;

Сообщение отредактировал sergey sva - Jan 13 2008, 16:10
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 13 2008, 17:25
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Жуткий код sad.gif. Я пожалуй воздержусь от дальнейших комментариев. На последок намек - полагаю, что у Вас не SD V2+ карточка что-бы поддерживать такую адресацию.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 13 2008, 18:06
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата
Жуткий код

это только , так сказать отладка smile.gif временно. если поделитесь способом поаккуратней буду очень благодарен smile.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 13 2008, 19:38
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sergey sva @ Jan 13 2008, 20:06) *
если поделитесь способом поаккуратней буду очень благодарен smile.gif
В лоб:
Код
cmd18[4] = address;
cmd18[3] = address >> 8;
cmd18[2] = address >> 16;
cmd18[1] = address >> 24;
Не говоря о том, что можно было описать cmd18 как упакованную структуру с читаемыми именами полей нужного размера.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 13 2008, 19:45
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(Сергей Борщ @ Jan 13 2008, 22:38) *
В лоб:
Код
cmd18[4] = address;
cmd18[3] = address >> 8;
cmd18[2] = address >> 16;
cmd18[1] = address >> 24;
Не говоря о том, что можно было описать cmd18 как упакованную структуру с читаемыми именами полей нужного размера.

да это поаккуратней будет, благодарю smile.gif
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Jan 14 2008, 05:33
Сообщение #11


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



карточка обычная ?? не HC?

поставь адрес 0 не ошибёшься??

команда 17 выполняется?

инициализацию всю сделали

rca команда 7 что сказала?
Go to the top of the page
 
+Quote Post
Tcom
сообщение Jan 14 2008, 06:33
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Привет, в командах CMD17 нужно указывать адрес начала сектора иначе будет ошибка 0х02, мож и в CMD18 также.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 14 2008, 07:56
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Tcom @ Jan 14 2008, 09:33) *
Привет, в командах CMD17 нужно указывать адрес начала сектора иначе будет ошибка 0х02, мож и в CMD18 также.

Естественно да, если, конечно,
Цитата
не SD V2+ карточка что-бы поддерживать такую адресацию.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Jan 14 2008, 09:55
Сообщение #14


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



на старых картах при чтении не обязательно ставить начало сектора!!!! при записи обязательно

а на хацешных он и так по 512 байт адресует
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 14 2008, 13:53
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Указал нулевой адрес и процесс чтения пошел, поочереди вывожу на дисплей все что из нее приходит,
для наглядности между получениями из карты данных , вставил паузу 500мсек.
Возникла другая проблема (карта mini sd с переходником на mmc512мб) вставил я карту в ридер (в качестве ридера принтер hp photosmart 7450) и открыл с помощью 010editor (hex редактор) стер все записи и записал 0x00 вытащил карту снова вставил и считыватель перестал её видеть, выходит сообщение что нет доступа. вставляю в свой девайс карта на команды cmd0 cmd55 cmd41 отвечает нормально а по команде cmd 18 начинает читаться. может у кого были похожие проблемы?
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Jan 15 2008, 05:17
Сообщение #16


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



возможно принтер не хочет работать с картой без файловой системы
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Jan 15 2008, 06:38
Сообщение #17


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Да, Вы вероятнее всего потерли все системные области со всеми вытекающими последствиями...


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Jan 15 2008, 06:49
Сообщение #18


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



в обычном ридере и винхексом всё работает
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 15 2008, 14:17
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



да точно в обычном ридере все читается нормально, установил ридер у себя на комп и карта стала читаться. Только пока устанавливал сжог блог питания в компе, из за этого ридера, не знай уж на сколько эти встраиваемые ридеры совместимы с разами платами но у меня получилось такая проблемка:
встраиваемый ридер подключается к юсб внутренний на мат. плате 9штырьков. первые два +5 вторые два
дата , третие два дата ,четвертые два корпус и еще последний штырек остается, на нем у меня +5в.в ридер идут провода один ко одному и внутри последние (которые корпус) были запаяны с последним +5
после включения питания провода к атомы ридеру подогрелись ,комп конечно я тутже выключил но поздно блок питания успел крякнуть сегодня новый блок питания установил, откусил этот провод и все стало ок. Вот такая неприятная проблемка. smile.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 15:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.0154 секунд с 7
ELECTRONIX ©2004-2016