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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подключение microSD объемом больше 1GB через 4bit SDIO
-SANYCH-
сообщение Jul 14 2011, 09:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



Подключил к микроконтроллеру STM32F103VET6 microSD карту памяти размером 1GB через 4bit SDIO + fatfs. Все работает нормально (могу форматировать, читать, писать в файл), но когда вставляю карту памяти 2GB, то получаю в ответ ошибку об аппаратном сбое. При этом функция инициализации проходит и объем карточки определяется верно. Когда пытаюсь писать - получаю ошибку.
В чем может быть проблема ?
Может кто нить знает где можно взять рабочий (проверенный на картах памяти размером больше 1GB) пример 4bit SDIO + fatfs с исходниками для микроконтроллера STM32F103VET6?
Код 4bit SDIO + fatfs брал с прикрепленного файла.

Прикрепленные файлы
Прикрепленный файл  FATFS_V0.08A_SD_Card.rar ( 1.09 мегабайт ) Кол-во скачиваний: 91
 
Go to the top of the page
 
+Quote Post
MK2
сообщение Jul 15 2011, 13:04
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



А откуда ты брал этот пример?? У меня там что-то кодировка не определяется в ридми файле
Какая файловая система на 2гб карточке? и с какой файловой системой работает пример?
Еще проверь (очень маловероятно, но все же ) не SDHC ли карточка ли у тебя, там адресация другая?
Go to the top of the page
 
+Quote Post
Warlockwolf
сообщение Jul 15 2011, 15:22
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 17-06-08
Пользователь №: 38 358



у меня все кончилось подбором карточек. то есть трнсенд заработали, а сандиск и кингстон нет. притом проблема не в файловой системе. аппаратная. сама микросд карта не работает как надо. сандиск инициализируется, но ни писать ни читать данные внутрь себя не хочет. кингстон, инициализируется, но читает 1 раз. 1 фаил. и все уходит в аут. трансценд работает на ура и в 1 и в 4 бит режимах. карты пробовал по 1 и 2 гига.
Go to the top of the page
 
+Quote Post
-SANYCH-
сообщение Jul 16 2011, 16:35
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



Цитата
А откуда ты брал этот пример?


Точно уже не помню окуда скачивал, но это 32 -х метровый архив с примерами. Этот прекрипленный файл один из примеров который был в архиве, использования SDIO + FatFs.

Цитата
Какая файловая система на 2гб карточке?


Какая разница, какая на ней файловая система, если я пытаюсь форматировать карточку а в ответ - ошибка.

Цитата
у меня все кончилось подбором карточек.


Собственно после пары дней ковырянья выяснил что неработает именно драйвер карточки (функции чтения/записи блока на карточку ). Размер карточки определялся верно, а вот с определением размера блока какие то проблемы. Контроллер определяет размер блока 1024 на 2-х гиговой карточке, а на компе когда я смотрел через WinHex эту же карточку то размер блока определяется 512.
Где глюк пока не искал. Отложил на позже. Щас пока вписал костыль (забил константой размер блока 512). Пока работает на одно гиговой и двух гиговой карточке. На карточках большего и меньшего размера не тестил так как нет таких карточек в наличии laughing.gif .
Go to the top of the page
 
+Quote Post
RA3WUM
сообщение Jul 29 2011, 15:33
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 22-02-07
Пользователь №: 25 578



Цитата(-SANYCH- @ Jul 16 2011, 20:35) *
Щас пока вписал костыль (забил константой размер блока 512). Пока работает на одно гиговой и двух гиговой карточке. На карточках большего и меньшего размера не тестил так как нет таких карточек в наличии laughing.gif .

Сталкнулся с подобной проблемой, можете более подробно описать "костыль" rolleyes.gif


--------------------
Мужество есть лишь у тех, кто ощутил сердцем страх!
В. Кипелов, Беги за солнцем.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 29 2011, 16:32
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(-SANYCH- @ Jul 16 2011, 20:35) *
Щас пока вписал костыль (забил константой размер блока 512).

Это не костыль, так как стандарт обязывает любую карту работать с блоками по 512 байт.
BLOCK_LEN > 512 нужен для корректного описания емкости карты в том случае, когда она равна 2 или 4GB.
Go to the top of the page
 
+Quote Post
-SANYCH-
сообщение Jul 29 2011, 17:48
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



Цитата
Сталкнулся с подобной проблемой, можете более подробно описать "костыль" rolleyes.gif


/*-----------------------------------------------------------------------*/
/* Read Sector(s) */

DRESULT disk_read (
BYTE drv, /* Physical drive nmuber (0..) */
BYTE *buff, /* Data buffer to store read data */
DWORD sector, /* Sector address (LBA) */
BYTE count /* Number of sectors to read (1..255) */
)
{
SD_Error Status;
if( !count )
{
return RES_PARERR; /* countІ»ДЬµИУЪ0Ј¬·сФт·µ»ШІОКэґнОу */
}

switch (drv)
{

case 0:
if(count==1) /* 1ёцsectorµД¶БІЩЧч */
{
if(SDCardInfo.CardBlockSize>512){ //<---------- костыль
Status = SD_ReadBlock( buff ,sector << 9 , 512 );
}
else{
Status = SD_ReadBlock( buff ,sector << 9 , SDCardInfo.CardBlockSize );
}
}
else /* ¶аёцsectorµД¶БІЩЧч */
{
if(SDCardInfo.CardBlockSize>512){
Status = SD_ReadMultiBlocks( buff ,sector << 9 , 512, count);
}
else{
Status = SD_ReadMultiBlocks( buff ,sector << 9 ,SDCardInfo.CardBlockSize,count);
}
}
if(Status == SD_OK)
{
return RES_OK;
}
else
{
return RES_ERROR;
}

case 1:
break;

case 2:
break;

default:
break;

}

return RES_ERROR;
}



/*-----------------------------------------------------------------------*/
/* Miscellaneous Functions */

DRESULT disk_ioctl (
BYTE drv, /* Physical drive nmuber (0..) */
BYTE ctrl, /* Control code */
void *buff /* Buffer to send/receive control data */
)
{
volatile unsigned char rc = RES_PARERR;

if (drv){
rc = RES_PARERR; /* ЅцЦ§іЦµҐґЕЕМІЩЧчЈ¬·сФт·µ»ШІОКэґнОу */
}
else{
switch (ctrl){
case CTRL_SYNC :
rc = RES_OK;
break;

case GET_SECTOR_COUNT : {
//*(DWORD*)buff = SDCardInfo.CardCapacity/SDCardInfo.CardBlockSize;
*(DWORD*)buff = SDCardInfo.CardCapacity/512; //<---------- костыль
rc = RES_OK;
break;
}

case GET_BLOCK_SIZE : {
//*(WORD*)buff = SDCardInfo.CardBlockSize;
*(WORD*)buff = 512; //<---------- костыль
rc = RES_OK;
break;
}

case GET_SECTOR_SIZE : {
*(WORD*)buff = SDCardInfo.CardBlockSize;
rc = RES_OK;
break;
}

case CTRL_POWER :
break;

case CTRL_LOCK :
break;

case CTRL_EJECT :
break;

case MMC_GET_TYPE : /* MMC/SDC command */
break;

case MMC_GET_CSD :
break;

case MMC_GET_CID :
break;

case MMC_GET_OCR :
break;

case MMC_GET_SDSTAT :
break;

default :
break;
}
}

return rc;
}

Go to the top of the page
 
+Quote Post
RA3WUM
сообщение Jul 29 2011, 19:18
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 22-02-07
Пользователь №: 25 578



-SANYCH-, aaarrr
Спасибо, буду пробовать.


--------------------
Мужество есть лишь у тех, кто ощутил сердцем страх!
В. Кипелов, Беги за солнцем.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 17 2012, 10:14
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Глупый вопрос :

Почему в документации на STM32L151 в таблицах назначением ног я не могу найти ноги, относящиеся к SDIO ? Как они должны называтся ? Разьве не SDIO_CK, SDIO_CMD .... ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 17 2012, 20:50
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MiklPolikov @ Mar 17 2012, 14:14) *
Глупый вопрос :

Почему в документации на STM32L151 в таблицах назначением ног я не могу найти ноги, относящиеся к SDIO ? Как они должны называтся ? Разьве не SDIO_CK, SDIO_CMD .... ?

Потому что таких ног у него нет, как нет и самого интерфейса. В даташите есть только упоминание о том, что можно-де карточку прицепить к SPI и задействовать hardware CRC.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 17 2012, 22:09
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(aaarrr @ Mar 17 2012, 23:50) *
Потому что таких ног у него нет, как нет и самого интерфейса. В даташите есть только упоминание о том, что можно-де карточку прицепить к SPI и задействовать hardware CRC.


А что тогда вот это такое, на с 714 документации ? Не SD интерфейс ?

28 Secure digital input/output interface (SDIO)

Medium-density devices are STM32L151xx, and STM32L152xx microcontrollers where
the Flash memory density ranges between 64 and 128 Kbytes.
High-density devices are STM32L151xx and STM32L152xx microcontrollers where the
Flash memory density ranges between 256 and 512 Kbytes.
This section applies to high-density devices only.

28.1 SDIO main features

The SD/SDIO MMC card host interface (SDIO) provides an interface between the APB2
peripheral bus and MultiMediaCards (MMCs), SD memory cards, SDIO cards and CE-ATA
devices.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 17 2012, 22:23
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MiklPolikov @ Mar 18 2012, 02:09) *
Flash memory density ranges between 256 and 512 Kbytes.

А они такие есть в природе-то? В даташите только до 128К.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 17 2012, 22:34
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(aaarrr @ Mar 18 2012, 01:23) *
А они такие есть в природе-то? В даташите только до 128К.


Medium-density devices are STM32L151xx, and STM32L152xx microcontrollers where
the Flash memory density ranges between 64 and 128 Kbytes.

64-128 есть. И 256 то же есть .
Но я не понимаю смысла вопроса "есть в природе или нет ?". Если в документации есть, значит и в природе есть.

Вопрос в другом : если SDIO это не аппаратный интерфейс SD карты, то что это тогда ?




--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 17 2012, 22:47
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MiklPolikov @ Mar 18 2012, 02:34) *
И 256 то же есть .

Где? В даташите вижу только до 128.

Цитата(MiklPolikov @ Mar 18 2012, 02:34) *
Но я не понимаю смысла вопроса "есть в природе или нет ?". Если в документации есть, значит и в природе есть.

User manual общий на семейство. Ясно написано, что раздел касается только устройств с 256+К флеш.
Возможно, их когда-нибудь выпустят.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 17 2012, 22:55
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(aaarrr @ Mar 18 2012, 01:47) *
Где? В даташите вижу только до 128.
User manual общий на семейство. Ясно написано, что раздел касается только устройств с 256+К флеш.
Возможно, их когда-нибудь выпустят.


Разьве вот из этой фразы не следует, что SDIO должен быть у всех процессоров с памятью >= 64КБ ?

Medium-density devices are STM32L151xx, and STM32L152xx microcontrollers where
the Flash memory density ranges between 64 and 128 Kbytes.


В природе вот они
http://www.st.com/internet/mcu/subclass/1376.jsp


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:20
Рейтинг@Mail.ru


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