Форум РадиоКот • Просмотр темы - Драйвер для MICRO_SD карт
Сообщения без ответов | Активные темы
Страница 1 из 6
[ Сообщений: 114 ]
, , , , ,
Автор
Сообщение
Oxford
Заголовок сообщения: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 15:11:00
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 23, 2012 13:17:25Сообщений: 823Откуда: Киселевск
Рейтинг сообщения: 1
Написал маленький драйвер для MICROSD карточек, так как нормального драйвера не нашел.Использует 5 переменных и буфер на 512 байт. Код переносим достаточно две процедуры исправить это настройка SPI_SETUP и отправка/принятие байта SPI_SEND + дефайны для портов. По умолчанию код написан в среде CooCox для процессора STM32F051RB, и настроен на SPI1. Как демо пример можно использовать. Драйвер читает и пишит посекторно, нужно указать только номер сектора. На данный момент реализовал поддержку SD, SDSC, SDHC, MMC карт. Какие у меня были читались и писались без проблем. Драйвер будет поддерживаться и обновляться , так что если встретиться ошибка пишите. Вобщем тестируем и пишим об ошибках. ) Пишите на каких картах тестировали, скорость обменаОписание в MICROSD.h
_________________Инженер R @D Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Последний раз редактировалось Oxford Сб июн 29, 2013 19:43:41, всего редактировалось 3 раз(а).
Вернуться наверх
Реклама
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 17:00:56
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
Как раз то что сейчас очень для меня актуально! Собственно назрел вопрос. А в чем разница между MICRO_SD и просто SD ? На сколько я понимаю разницы никакой!
Вернуться наверх
Реклама
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 19:09:22
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 23, 2012 13:17:25Сообщений: 823Откуда: Киселевск
Рейтинг сообщения: 0
Ну впринципе разницы нет, размеры если только разные, просто так захотелось назвать ))
_________________Инженер R @D Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Вернуться наверх
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 19:25:20
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
Пытаюсь все это прикрутить к STM32F4.... пока безуспешно ))
Вернуться наверх
Реклама
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Подробнее>>
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 19:38:51
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 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
Вернуться наверх
Реклама
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 19:52:28
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
На чтение мне постоянно нули выдает! В каком формате должна быть карта? Или формат тут не имеет значение?
Вернуться наверх
Реклама
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 19:59:03
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 23, 2012 13:17:25Сообщений: 823Откуда: Киселевск
Рейтинг сообщения: 0
Формат имеете ввиду файловую систему? То без разницы какая FAT. Сектора аппаратные. FAT программная. Начало логического диска может лежать в разных секторах, в 0 секторе MBR находится. Логический диск может лежать где угодно. Начало у меня было в секторах 63 и 135. SD_INI(): какое у вас число возвращает?
_________________Инженер R @D Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Вернуться наверх
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 21:26:43
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
Не могу вывести, драйвер TFT вешается почему то
Вернуться наверх
osievskiy
Заголовок сообщения: 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 не реагирует
Вернуться наверх
Реклама
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 22:04:02
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 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 раз.
Вернуться наверх
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 22:17:38
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
SPI3 находится у F4 на порте C
Вернуться наверх
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 22:23:02
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 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
Вернуться наверх
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 22:38:17
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
Так, добился того что TFT отвечает... и ответ от SD_INI получается 0
Вернуться наверх
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 22:45:21
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
SD_READ возвращает 1 SD_WRITE возвращает 0
Вернуться наверх
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Сб июн 29, 2013 23:48:55
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
Так эээ... получается по кодам ответа все нормально
НО каково было мое удивление когда вытащив карту я получил те же значения)))
Вернуться наверх
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Вс июн 30, 2013 01:04:59
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 23, 2012 13:17:25Сообщений: 823Откуда: Киселевск
Рейтинг сообщения: 0
SD_INI возвращает 0 значит инициализация не прошла, ошибка. Читать и писать бессмысленно после этого. Проверяйте SPI пока не вернет карта отличное от 0. Тогда можно будет читать и записывать
_________________Инженер R @D Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Вернуться наверх
osievskiy
Заголовок сообщения: 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
Вернуться наверх
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Вс июн 30, 2013 02:49:36
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 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
Вернуться наверх
osievskiy
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Вс июн 30, 2013 13:21:01
Открыл глаза
Зарегистрирован: Вт июн 18, 2013 11:23:25Сообщений: 79
Рейтинг сообщения: 0
Я подключаю вот
этот модуль, а не саму карту.... из-за этого может быть проблема?
Вернуться наверх
Oxford
Заголовок сообщения: Re: Драйвер для MICRO_SD карт
Добавлено: Вс июн 30, 2013 18:13:56
Опытный кот
Карма: 4
Рейтинг сообщений: 7
Зарегистрирован: Вт окт 23, 2012 13:17:25Сообщений: 823Откуда: Киселевск
Рейтинг сообщения: 0
Может, там через буферы сделаны сигналы. Все возможно. Советую подключить карту напрямую и не гадать, когда заработает будете экспериментировать с другими платами.
_________________Инженер R @D Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Вернуться наверх
Страница 1 из 6
[ Сообщений: 114 ]
, , , , ,
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения