Например TDA7294

Форум РадиоКот • Просмотр темы - Драйвер для MICRO_SD карт
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 19, 2024 02:31:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 114 ]  1, , , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 15:11:00 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 1
Написал маленький драйвер для MICROSD карточек, так как нормального драйвера не нашел.
Использует 5 переменных и буфер на 512 байт.
Код переносим достаточно две процедуры исправить это настройка SPI_SETUP и отправка/принятие байта SPI_SEND + дефайны для портов.
По умолчанию код написан в среде CooCox для процессора STM32F051RB, и настроен на SPI1.
Как демо пример можно использовать.
Драйвер читает и пишит посекторно, нужно указать только номер сектора.
На данный момент реализовал поддержку SD, SDSC, SDHC, MMC карт.
Какие у меня были читались и писались без проблем.
Драйвер будет поддерживаться и обновляться, так что если встретиться ошибка пишите.
Вобщем тестируем и пишим об ошибках. )
Пишите на каких картах тестировали, скорость обмена

Описание в MICROSD.h


Вложения:
DRIVER_MICROSD_STM32F051.zip [2.73 KiB]
Скачиваний: 4037

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Последний раз редактировалось Oxford Сб июн 29, 2013 19:43:41, всего редактировалось 3 раз(а).
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 17:00:56 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Как раз то что сейчас очень для меня актуально! Собственно назрел вопрос. А в чем разница между MICRO_SD и просто SD ? На сколько я понимаю разницы никакой!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 19:09:22 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
Ну впринципе разницы нет, размеры если только разные, просто так захотелось назвать ))

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 19:25:20 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Пытаюсь все это прикрутить к STM32F4.... пока безуспешно ))


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 19:38:51 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
SPI запустили сигнал есть?
В какой среде пишите?
Какой процессор?
Какой номер SPI используется?
CS на какой ноге?

Там на F4 функции имеют названия другие, так как я под ядро M0 писал, потому как в M0 SPI расширенный и имеет несколько функций у него фрейм от 4 до 16 Бит.

Для проверки SPI с функциями из драйвера:

1. Соединить MOSI + MISO ноги на плате в кольцо.

2. SPI_SETUP(SPI_BaudRatePrescaler_256); Настроить порты и SPI интерфейс.

3. READ = SPI_SEND(0xAA); // В цикле отправляем байт и смотрим осцилом или анализатаром ноги CLK, MOSI

READ должен содержать тот же байт что и отправили.

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 19:52:28 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
На чтение мне постоянно нули выдает! В каком формате должна быть карта? Или формат тут не имеет значение?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 19:59:03 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
Формат имеете ввиду файловую систему? То без разницы какая FAT.
Сектора аппаратные. FAT программная.
Начало логического диска может лежать в разных секторах, в 0 секторе MBR находится.
Логический диск может лежать где угодно. Начало у меня было в секторах 63 и 135.

SD_INI(): какое у вас число возвращает?

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 21:26:43 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Не могу вывести, драйвер TFT вешается почему то


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 21:47:52 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
На сколько я понимаю fsmc не нравится что я активирую SPI1
попробовал перекинуть на SPI3 вот так
Код:
   SPI_InitTypeDef   SPI_InitStructure;
   GPIO_InitTypeDef GPIO_InitStructure;


   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); 
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);   
   
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     // INIT NSS
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
   GPIO_Init(GPIOA, &GPIO_InitStructure);





   GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_SPI3);  // INIT MISO/MOSI/SCK
   GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_SPI3);
   GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_SPI3);

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
   GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
   GPIO_Init(GPIOC, &GPIO_InitStructure);

   // Set SPI interface
   SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
   SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
   SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
   SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
   SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
   SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
   SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256; // lowest  speed  for init
   SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;

   SPI_Init(SPI3,&SPI_InitStructure);
   SPI_Cmd(SPI3,ENABLE);     //Enable  SPI3
   CS_DISABLE;


но все равно TFT не реагирует


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 22:04:02 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
Полярность еще для карточки
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

А где включение тактирования PORTA?
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

NSS нога для MicroSD не нужна нога.
От SPI требуется три ноги SCK, MOSI, MISO.
CS выбор карты программно делается отдельной ногой.

Поэтому нужно
PC10 - SCK
PC11 - MISO
PC12 - MOSI
И CS можно тоже на какуйнить ногу повешать PORTC

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Последний раз редактировалось Oxford Сб июн 29, 2013 22:21:20, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 22:17:38 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
SPI3 находится у F4 на порте C


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 22:23:02 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
У вас
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // INIT NSS
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);

NNS на порту A это для кого? Вы PA9 не включили тактирование, вы его для CS инициализируете?
для CS так:

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // CS chip select
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 22:38:17 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Так, добился того что TFT отвечает... и ответ от SD_INI получается 0


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 22:45:21 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
SD_READ возвращает 1
SD_WRITE возвращает 0


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Сб июн 29, 2013 23:48:55 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Так эээ... получается по кодам ответа все нормально :shock: НО каково было мое удивление когда вытащив карту я получил те же значения)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Вс июн 30, 2013 01:04:59 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
SD_INI возвращает 0 значит инициализация не прошла, ошибка.
Читать и писать бессмысленно после этого.

Проверяйте SPI пока не вернет карта отличное от 0. Тогда можно будет читать и записывать

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Вс июн 30, 2013 01:42:59 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Я уже кручу кручу и ничего не получается...
Спойлер
Код:
[b]sd.h   [/b]
#define SD_SPI                           SPI3
#define SD_SPI_CLK                       RCC_APB1Periph_SPI3
#define SD_SPI_SCK_PIN                   GPIO_Pin_10
#define SD_SPI_SCK_SOURCE                GPIO_PinSource10
#define SD_SPI_MISO_PIN                  GPIO_Pin_11
#define SD_SPI_MISO_SOURCE               GPIO_PinSource11
#define SD_SPI_MOSI_PIN                  GPIO_Pin_12
#define SD_SPI_MOSI_SOURCE               GPIO_PinSource12


#define CS()     GPIO_ResetBits(SD_CS_GPIO_PORT, SD_CS_PIN)
#define DECS()    GPIO_SetBits(SD_CS_GPIO_PORT, SD_CS_PIN)

#define SD_CS_PIN                        GPIO_Pin_9
#define SD_CS_GPIO_PORT                  GPIOC





[b]sd.c[/b]


   GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef   SPI_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
   
   GPIO_StructInit(&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = SD_SPI_SCK_PIN|SD_SPI_MISO_PIN| SD_SPI_MOSI_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = SD_CS_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
   GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  GPIO_PinAFConfig(GPIOC, SD_SPI_SCK_SOURCE|SD_SPI_MISO_SOURCE|SD_SPI_MOSI_SOURCE, GPIO_AF_SPI3);
   
   
   SPI_I2S_DeInit(SD_SPI);
   
   /* SPI_MMC configuration */
  SPI_StructInit(&SPI_InitStructure);
  SPI_InitStructure.SPI_Direction          = SPI_Direction_2Lines_FullDuplex;
   SPI_InitStructure.SPI_Mode             = SPI_Mode_Master;
   SPI_InitStructure.SPI_DataSize          = SPI_DataSize_8b;
   SPI_InitStructure.SPI_CPOL             = SPI_CPOL_Low;
   SPI_InitStructure.SPI_CPHA             = SPI_CPHA_1Edge;
   SPI_InitStructure.SPI_NSS             = SPI_NSS_Soft;
   SPI_InitStructure.SPI_BaudRatePrescaler = SPEED;
   SPI_InitStructure.SPI_FirstBit          = SPI_FirstBit_MSB;
   SPI_CalculateCRC(SD_SPI, DISABLE);

  SPI_Init(SD_SPI, &SPI_InitStructure);

   //SPI_RxFIFOThresholdConfig(SD_SPI, SPI_RxFIFOThreshold_QF);
  SPI_Cmd(SD_SPI, ENABLE);


Может дело в //SPI_RxFIFOThresholdConfig(SD_SPI, SPI_RxFIFOThreshold_QF); я не знаю чем его заменить в F4


Меня выкидывает вот здесь if (SPI_CMD(0, 0, 0x95, 0x01)) return SD_ERROR; //IDLE


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Вс июн 30, 2013 02:49:36 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
Получится!

SPI_RxFIFOThresholdConfig(SD_SPI, SPI_RxFIFOThreshold_QF);
Убрать это для M0 ядра только специфично.
SPI_CalculateCRC(SD_SPI, DISABLE);
тоже убрать здесь не надо это

Выкидывает все верно потому что карта не отвечает.
На все ноги подтяжку сделай те CS тоже подтянуть надо, я имею ввиду внутри камня. внешне не надо.

SPI еще исправьте полярность и фазу
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

MOSI MISO CLK CS контакты правильно подключили к флешке? Не перепутали?

Изображение

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Вс июн 30, 2013 13:21:01 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Я подключаю вот этот модуль, а не саму карту.... из-за этого может быть проблема?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Вс июн 30, 2013 18:13:56 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
Может, там через буферы сделаны сигналы. Все возможно.

Советую подключить карту напрямую и не гадать, когда заработает будете экспериментировать с другими платами.

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 114 ]  1, , , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y