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

 
 
> Чтение блока с SD карты, не поступает Data Token
Evgenius_Alex
сообщение Jan 23 2013, 12:41
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 373
Регистрация: 6-11-07
Пользователь №: 32 103



Добрый день!

При работе с SD картой столкнулся с проблемой чтения блока.

Карта инициализацию проходит нормально.

После команды чтения одного блока CMD17, приходит корректный ответ (0x00)
Но маркера начала данных(0xFE) не поступает.

Пробовал меня скорость SPI - не помогает

Сталкивался ли кто с таким и как бороться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndreyVN
сообщение Jan 23 2013, 16:28
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(Evgenius_Alex @ Jan 23 2013, 15:41) *
Добрый день!
При работе с SD картой столкнулся с проблемой чтения блока.


Читаю сектора вот так:
CODE
// Прочитать содержимое буфера в переменную Sector из MMC карты
// N-номер сектора
//-----------------------------------------------------------------------------
void SDReadSector(unsigned long int N)
{
char rsp,rsp1;
short int crc;
SPCR = 0x50; //0x50 fclk/4; 0x51 fclk/16; 0x52 fclk/64
SPSR = 0x00; //
//for(i=0; i<512; i++) Sector[i]=0xEE;
if(!BlockAdressMode) Adr = N*512; //Адрес начала сектора, побайтная адресация
else Adr=N; //Блочная адресация
rsp = MMC_cmd(CMD17, (unsigned int)(Adr>>16),(unsigned int)(Adr&0x0000ffff), 0xFF); //CMD17 Read a block from specify addr
if(rsp){ SD_init(); //Если rsp!=0x00 будим карту снова
rsp = MMC_cmd(CMD17, (unsigned int)(Adr>>16),(unsigned int)(Adr&0x0000ffff), 0xFF); }
if(!rsp) rsp1 = MMC_read(512); //Заполним массив Sector[]
if(!rsp1){ StringPrepare("Block read Err."); Scroll(); ScrollUpdate(); }
PORTB |= MMC_CE_PIN; //MMC-disable
//StringPrepare("CMD17 "); HexToStr(rsp, 7); Scroll();
crc = MMC_crc16(&Sector[0], 512);
if(crc1!=(unsigned char)(crc >> 8) || crc2!=(unsigned char)(crc & 0xff) ){
StringPrepare("CRC Err ");
HexToStr(crc1, 5); HexToStr(crc2, 8); Scroll();
ScrollUpdate(); }
}


PS: Код писал около года назад, помню, что многие проблемы решились после того, как добавил расчет CRC
по спецификации CRC является обязательной только для команд иницилизации, потом может быть отключена.

Сообщение отредактировал IgorKossak - Jan 23 2013, 19:54
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Evgenius_Alex   Чтение блока с SD карты   Jan 23 2013, 12:41
- - ukpyr   попробуйте увеличить время ожидания 0xFE   Jan 23 2013, 13:31
- - Genadi Zawidowski   В карту при этом должны вдвигаться все "1...   Jan 23 2013, 17:11
|- - Evgenius_Alex   Цитата(Genadi Zawidowski @ Jan 23 2013, 20...   Jan 23 2013, 20:28
- - ukpyr   ЦитатаSD_CS_ASSERT; // CS опускаем в ноль SD_CS_DE...   Jan 24 2013, 07:40
- - Genadi Zawidowski   Цитатане понял насчёт выдвигания "1" по ...   Jan 24 2013, 15:13
|- - Evgenius_Alex   Цитата(Genadi Zawidowski @ Jan 24 2013, 19...   Jan 28 2013, 07:34
|- - Evgenius_Alex   Цитата(Evgenius_Alex @ Jan 28 2013, 10:34...   Jan 28 2013, 10:27
- - Genadi Zawidowski   Неиспользуемые линии данных карты подтянуты через ...   Jan 28 2013, 12:46
|- - Evgenius_Alex   Спасибо, Геннадий! Неиспользуемые линии были ...   Jan 28 2013, 15:12
- - Genadi Zawidowski   Ну так если у Вас карта на SDHC, не v2 - вполне мо...   Jan 28 2013, 20:50
|- - Evgenius_Alex   Цитата(Genadi Zawidowski @ Jan 29 2013, 00...   Jan 29 2013, 08:25
- - Genadi Zawidowski   Насчёт описания тяжело... Вот проект. Пока ничего ...   Jan 29 2013, 14:28
|- - Evgenius_Alex   Цитата(Genadi Zawidowski @ Jan 29 2013, 17...   Jan 29 2013, 20:47
|- - Genadi Zawidowski   непонятные типы - это из stdint.h - смысл типов на...   Jan 30 2013, 16:15
|- - Evgenius_Alex   Цитата(Genadi Zawidowski @ Jan 30 2013, 19...   Jan 31 2013, 07:58
|- - Genadi Zawidowski   Цитата(Evgenius_Alex @ Jan 31 2013, 11:58...   Jan 31 2013, 19:53
|- - ut1wpr   Цитата(Genadi Zawidowski @ Jan 31 2013, 22...   Jan 31 2013, 22:45
|- - Evgenius_Alex   Цитата(Genadi Zawidowski @ Jan 31 2013, 23...   Feb 1 2013, 18:53
- - Genadi Zawidowski   У HC карточек адресация не смещением, а номером бл...   Feb 2 2013, 06:27
- - МП41   Так 2Гб карточка не должа быть HC.   Feb 11 2013, 08:49
- - Genadi Zawidowski   Я видел 2GB и HC и не HC.   Feb 11 2013, 10:23


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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 01:53
Рейтинг@Mail.ru


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