Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 11.11.2009, 01:57   #1
ih32dll
Junior Member
 
Регистрация: 07.10.2009
Сообщений: 12
Вес репутации: 100/39
ih32dll will become famous soon enoughih32dll will become famous soon enough
По умолчанию Чтение/запись SD карты на базе МК x51.

Всем здравствуйте. Видел тему про чтение SD карты, но решил, что чтение/запись на базе x51 логично вынести в отдельную ветвь обсуждения.
Совершенно новичок во всем этом, разбираюсь пока что только с теорией. Предполагается чтение SD карты(а так же запись) с микроконтроллером x51. У меня есть пара вопросов...
Есть фиксированная величина адресов Fat_base, Root_base, Cluster_base или формула по которой их считать всегда? Или они для каждой карты разные и нужно высчитывать каждый раз?
То есть по сути у меня есть устройство, куда будут вставляться карточки SD, а МК x51 должен прочитать оттуда информацию по определенному адресу. Понятное дело, что карточки могут быть разными(по объему, но предполагается, что ФС все же будет FAT16) и если каждый раз высчитывать, то стоит вопрос как это делать?
Заранее спасибо за ответы.
ih32dll вне форума   Ответить с цитированием
Старый 11.11.2009, 09:03   #2
pfgx
Senior Member
 
Регистрация: 14.11.2007
Сообщений: 1,106
Вес репутации: 822/64
pfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to behold
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Фиксированной величины нет, надо считать, опираясь на данные в boot sector. Он всегда находится в нулевом секторе любого носителя, но надо еще убедиться, что это не MBR.
pfgx вне форума   Ответить с цитированием
Старый 11.11.2009, 10:34   #3
ih32dll
Junior Member
 
Регистрация: 07.10.2009
Сообщений: 12
Вес репутации: 100/39
ih32dll will become famous soon enoughih32dll will become famous soon enough
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Цитата:
Сообщение от pfgx Посмотреть сообщение
Фиксированной величины нет, надо считать, опираясь на данные в boot sector. Он всегда находится в нулевом секторе любого носителя, но надо еще убедиться, что это не MBR.
Позиция байта | Длина (байт) | Описание | Содержимое
0x4 | 1 | тип файловой системы | 6=DOS 16-бит ФАТ (возм. др. варианты)
0x8 | 4 |позиция 1 сектора раздела | номер сектора
0xС | 2 | число секторов в разделе |от 1 до макс. числа секторов диска
Это и есть boot_sector?
ih32dll вне форума   Ответить с цитированием
Старый 11.11.2009, 10:40   #4
МимоПроходил
Senior Member
 
Регистрация: 02.12.2008
Адрес: Где-то между Нижним и Казанью
Возраст: 48
Сообщений: 1,071
Вес репутации: 707/58
МимоПроходил is a splendid one to beholdМимоПроходил is a splendid one to beholdМимоПроходил is a splendid one to beholdМимоПроходил is a splendid one to beholdМимоПроходил is a splendid one to beholdМимоПроходил is a splendid one to beholdМимоПроходил is a splendid one to behold
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Интересно, при чем тут SD карта?

Вопросы то по FAT...
МимоПроходил вне форума   Ответить с цитированием
Старый 11.11.2009, 11:02   #5
ih32dll
Junior Member
 
Регистрация: 07.10.2009
Сообщений: 12
Вес репутации: 100/39
ih32dll will become famous soon enoughih32dll will become famous soon enough
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Цитата:
Сообщение от МимоПроходил Посмотреть сообщение
Интересно, при чем тут SD карта?

Вопросы то по FAT...
Да, действительно... пока что вопросы по фат... я разбираюсь с ней на данный момент. Не думаю, что плодить кучу тем с одним вопросом имеет смысл, а FAT16 имеет отношение к SD картам...Так это boot_sector?)
ih32dll вне форума   Ответить с цитированием
Старый 11.11.2009, 11:07   #6
pfgx
Senior Member
 
Регистрация: 14.11.2007
Сообщений: 1,106
Вес репутации: 822/64
pfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to beholdpfgx is a splendid one to behold
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Цитата:
Сообщение от ih32dll Посмотреть сообщение
Позиция байта | Длина (байт) | Описание | Содержимое
0x4 | 1 | тип файловой системы | 6=DOS 16-бит ФАТ (возм. др. варианты)
0x8 | 4 |позиция 1 сектора раздела | номер сектора
0xС | 2 | число секторов в разделе |от 1 до макс. числа секторов диска
Это и есть boot_sector?
Это, кажется, описание таблицы разделов в MBR. Вот несколько слов кто есть кто http://www.aqua-guar.ru/stati/100-mb...talnoe....html
А вот детальное описание "от автора" http://support.microsoft.com/kb/Q140418
pfgx вне форума   Ответить с цитированием
Старый 19.03.2010, 16:57   #7
ih32dll
Junior Member
 
Регистрация: 07.10.2009
Сообщений: 12
Вес репутации: 100/39
ih32dll will become famous soon enoughih32dll will become famous soon enough
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Здравствуйте, тема таки актуальна все еще. Имеется самопальный кард-ридер, с выходами. Схема кард-ридера следующая:

Собственно, видно, что на ножки 1,2,5 поставлены диоды, чтобы сигналы там не превышали 3,3В(так как схема с микроконтроллером питается от 7-8В).
3,6 выходы кидаю на землю.
4 к источнику питания 3,3В.
Зашиваю в МК х51 следующий код(программная реализация SPI протокола, правда еще не до конца доработана, ибо прием я еще не дописал):
Код:
#include "at89x51.h"

#define mCLK  P3_2
#define mMOSI P3_3
#define mMISO P3_4
#define CS    P3_5

// процедура задержки
void mDelayWHILE (unsigned char mKodD){
  while (mKodD--){
    _asm
      nop	
      nop	
      nop	
    _endasm;
  }
}

#define mDelay1ms mDelayWHILE (99)

void mDelayMS (unsigned int mKodMS) {
  unsigned int mI;
  for (mI=0; mI < mKodMS; mI++) mDelay1ms;
}


unsigned char priemSPI;
unsigned char tempSPI;
int mI;

//передача/прием байта по SPI
void ToInSD(unsigned char mOUT) {
  for(mI=0; mI<8; mI++) {
     // mIN = mIN<<1;  
      mMOSI = mOUT&128;        // синхросигнал 1, читаем, синхросигнал 0
      mCLK = 1;
	  tempSPI = mMISO;//тут прием должен быть, пока не реализован
      mCLK = 0;
      //сдвигаем отсылаемый байт влево на один
      mOUT = mOUT<<1;
      
    }
  }
  

	void main()
    {
          
        CS = 1;
        mCLK = 0;
        //посылаем 0xFF 74 раза НАДО ОПЕРАТОР FOR ИЛИ while с ПЕРЕМЕННОЙ и ДЕКРЕМЕНТОМ (смотри mDelayWHILE)
        ToInSD(0x85);
        mDelayMS(100);
        ToInSD(0x0);
        mDelayMS(100);
        ToInSD(0x0);
        mDelayMS(100);
        ToInSD(0x0);
        ToInSD(0x0);
        ToInSD(0x95);
        //посылаем CMD1 для инициализации карты.
        ToInSD(0x41);
        ToInSD(0x0);
        ToInSD(0x0);
        ToInSD(0x0);
        ToInSD(0x0);
        ToInSD(0xFF);
        while(1)	// ЭТО БЕСКОНЕЧНЫЙ ЦИКЛ!!!
        {
          ToInSD(0x5A);
          mDelayMS(2);
        }
        
        
    } 
// В КОНЦЕ ФАЙЛА КОМПИЛЯТОРУ НУЖНА ПУСТАЯ СТРОКА
Hex: 5A=01011010(bin)
Суть в том, что хочу протестить вообще что доходит до карточки и в каком виде, был неприятно удивлен.
Зашил программу эту, смотрю на осциллографе выходы с ножек микроконтроллера(смотрю то, что шлет(MOSI), синхронизация внешняя по синхросигналу CLK).
Наблюдаю следующую картину:

Можно наблюдать, что шлет верно, ибо код 01011010.
Затем подключаю на эти ножки кардридер, описанный выше, и меряю так же, только уже на ножках кард ридера. Картину наблюдаю следующую:

Совершенно не понятно...Вроде, считай одно и тоже меряю: на ножках МК и на контактах кардридера, подсоединенных к этим ножкам - а картина разная... В чем проблема, не подскажете? Может предположение какое?
Карту использую MicroSD, но в переходничке под обычную MMC карту(9 контактов), производитель Kingston. По идее должно работать, но вот не могу понять в чем же проблема...
ih32dll вне форума   Ответить с цитированием
Старый 19.03.2010, 20:19   #8
Art!P
Senior Member
 
Аватар для Art!P
 
Регистрация: 07.07.2008
Адрес: Татарстан
Возраст: 38
Сообщений: 627
Вес репутации: 175/49
Art!P has a spectacular aura aboutArt!P has a spectacular aura about
Отправить сообщение для Art!P с помощью ICQ
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

о Боже
Art!P вне форума   Ответить с цитированием
Старый 19.03.2010, 20:25   #9
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/106
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Цитата:
Сообщение от Art!P Посмотреть сообщение
о Боже
не. Он по любому выглядит не так.
IgorV вне форума   Ответить с цитированием
Старый 20.03.2010, 12:22   #10
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 34
Сообщений: 365
Вес репутации: 194/51
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Блин, если пишешь на си, то какая разница, какой контроллер?
Инфы на эту тему столько, что я электронную книжку на SD(FAT16) сделал за два дня. Ну еще пару дней функционал попилил.
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Старый 20.03.2010, 12:23   #11
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 34
Сообщений: 365
Вес репутации: 194/51
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Цитата:
Сообщение от IgorV Посмотреть сообщение
не. Он по любому выглядит не так.
Вы же модер - прибейте эти гигантские полотнища )
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Старый 20.03.2010, 23:11   #12
ih32dll
Junior Member
 
Регистрация: 07.10.2009
Сообщений: 12
Вес репутации: 100/39
ih32dll will become famous soon enoughih32dll will become famous soon enough
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Цитата:
Сообщение от hammer Посмотреть сообщение
Блин, если пишешь на си, то какая разница, какой контроллер?
Инфы на эту тему столько, что я электронную книжку на SD(FAT16) сделал за два дня. Ну еще пару дней функционал попилил.
Посоветуйте литературу, если можно.
ih32dll вне форума   Ответить с цитированием
Старый 21.03.2010, 10:50   #13
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 34
Сообщений: 365
Вес репутации: 194/51
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Конечно можно. Вот и еще книгу Learning to fly PIC24. Там тоже неплохо описано.
Мой метод заключался в том, что я читал сектор - пулял его в уарт и потом на компе смотрел и руками на бумажке разбирал, что прилетело, согласно спецификации FAT16. Абсолютно ничего сложного и все заработало с первого раза.
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Старый 21.03.2010, 18:49   #14
ih32dll
Junior Member
 
Регистрация: 07.10.2009
Сообщений: 12
Вес репутации: 100/39
ih32dll will become famous soon enoughih32dll will become famous soon enough
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Суть в том, что х51 SPI протокол не поддерживает сам по себе, поэтому его надо реализовывать программно. Но хорошо, спасибо за информацию, как только начну писать, если возникнут вопросы, я их тут задам.
ih32dll вне форума   Ответить с цитированием
Старый 22.03.2010, 16:27   #15
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 34
Сообщений: 365
Вес репутации: 194/51
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: Чтение/запись SD карты на базе МК x51.

Вот еще документик нашел по FAT16.
Миниатюры
ee_329_rev1.pdf  
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Ответ

Метки
mmc, sd карта, x51, запись, чтение


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
Написал программу а места не хватает на МК Аександр Продукция MICROCHIP 150 10.01.2008 12:33
подключение магнитолы Sergey1 Общетехнические вопросы 10 27.12.2007 22:39
Помогите, пожалуйста, найти ошибку в коде Катя Микроконтроллеры других производителей 26 08.12.2007 14:58
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 15:03.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot