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

 
 
> Подключение 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
 
Start new topic
Ответов
-SANYCH-
сообщение Jul 29 2011, 17:48
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #3


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

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



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


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


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- -SANYCH-   Подключение microSD объемом больше 1GB через 4bit SDIO   Jul 14 2011, 09:30
- - MK2   А откуда ты брал этот пример?? У меня там что-то к...   Jul 15 2011, 13:04
- - Warlockwolf   у меня все кончилось подбором карточек. то есть тр...   Jul 15 2011, 15:22
- - -SANYCH-   ЦитатаА откуда ты брал этот пример? Точно уже не ...   Jul 16 2011, 16:35
|- - RA3WUM   Цитата(-SANYCH- @ Jul 16 2011, 20...   Jul 29 2011, 15:33
|- - aaarrr   Цитата(-SANYCH- @ Jul 16 2011, 20...   Jul 29 2011, 16:32
|- - MiklPolikov   Цитата(aaarrr @ Mar 18 2012, 01:23) А они...   Mar 17 2012, 22:34
|- - aaarrr   Цитата(MiklPolikov @ Mar 18 2012, 02:34) ...   Mar 17 2012, 22:47
|- - MiklPolikov   Цитата(aaarrr @ Mar 18 2012, 01:47) Где? ...   Mar 17 2012, 22:55
- - aaarrr   Цитата(MiklPolikov @ Mar 18 2012, 02:55) ...   Mar 17 2012, 23:02
|- - MiklPolikov   Цитата(aaarrr @ Mar 18 2012, 02:02) Нет: ...   Mar 17 2012, 23:06
|- - EugenyAM   У STM32 могут быть разные даташиты на МК одного се...   Mar 19 2012, 04:53
- - MK2   Возник глюк с работой SDIO в STM32. Использую ФС о...   Oct 21 2013, 16:41


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

 


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


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