Например TDA7294

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



Текущее время: Чт май 06, 2021 07:41:43

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


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



Начать новую тему Ответить на тему  [ Сообщений: 114 ]    , 2, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Драйвер для MICRO_SD карт
СообщениеДобавлено: Вс июн 30, 2013 19:09:30 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
И так добился ЧТО SD_INI возвращает 4, но SD_READ и SD_WRITE возвращает 1

При SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
SD_WRITE возвращает 255
SD_READ = 1


И еще маленький нюанс. Если выключить от USB контроллер и включить то SD_INI возвращает 0 и если потом нажать на reset то уже возвращает 4.

проблему с возвращением SD_INI 0 после отключения USB решил.
Переставил
Код:
GPIO_PinAFConfig(GPIOA,SD_SPI_SCK_SOURCE,GPIO_AF_SPI1);
  GPIO_PinAFConfig(GPIOA,SD_SPI_MISO_SOURCE,GPIO_AF_SPI1);
  GPIO_PinAFConfig(GPIOA,SD_SPI_MOSI_SOURCE,GPIO_AF_SPI1);


до

Код:
GPIO_Init(GPIOA, &GPIO_InitStructure);


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

Карма: 4
Рейтинг сообщений: 25
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 832
Откуда: Киселевск
Рейтинг сообщения: 0
Карта какая? фотку выложите если можно. Емкость.
SD_INI говорит что она MMC карта либо старая какая то, но похоже что контакт есть.
Получается инит проходит.

Читает пишит?

У меня карты работают так
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
и так
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

в других режимах нет.


.....
SD_WRITE возвращает 255 - исправил в коде. Это должно было быть 1. Ошибку исправлю в коде.

_________________
Инженер R@D

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


Последний раз редактировалось Oxford Вс июн 30, 2013 21:17:19, всего редактировалось 1 раз.

Вернуться наверх
 

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

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

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

Вот такая карта на 128 Mb

есть еще на 2G INI возвращает 2
и есть на 512Mb INI возвращает 1

Все не читаются и не пишутся


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

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

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

Карма: 4
Рейтинг сообщений: 25
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 832
Откуда: Киселевск
Рейтинг сообщения: 0
Покажите код чтения и записи. Не может быть карты правильно определяются.

Попробуй те закоментировать строку
SPI_SETUP(SPI_BaudRatePrescaler_2);
в процедуре SD_INI может скорость превышается SPI. там что-то не выше 20-25 мгц должно

_________________
Инженер R@D

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


Последний раз редактировалось Oxford Вс июн 30, 2013 21:24:00, всего редактировалось 1 раз.

Вернуться наверх
 
Обновленный ассортимент тактовых кнопок Omron!

Компэл предлагает обновленный ассортимент миниатюрных тактовых кнопок производства компании Omron, который включает в себя разнообразные решения как для стандартных условий, так и для применения в условиях повышенной влажности.

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

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


вот весь код


Вернуться наверх
 
Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

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

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

_________________
Инженер R@D

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


Вернуться наверх
 


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

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

Код:
   int resultInit = SD_INI();

      
   
   myLCD.drawString(resultInit, 0, 30);
   //myLCD.drawString(SPI_SEND(0xAA), 0, 60);
   
   
      int resultRead = SD_READ(256);

      myLCD.drawString(resultRead, 0, 90);
   
      for(int i=0; i < 5; i++)
      {

          myLCD.drawString(BUFFER[i], 15*i, 120);

      };

      BUFFER[0] = 'S';
      BUFFER[1] = 'D';
      BUFFER[2] = 'F';

      int resultWrite = SD_WRITE(256);   
           myLCD.drawString(resultWrite, 0, 180);


Вернуться наверх
 


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

Карма: 4
Рейтинг сообщений: 25
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 832
Откуда: Киселевск
Рейтинг сообщения: 0
Я так понял чтение 1 возвращает?
Попробуй те закоментировать строку
SPI_SETUP(SPI_BaudRatePrescaler_2);
в процедуре SD_INI может скорость превышается SPI. там что-то не выше 20-25 мгц должно
Возможно скорость бешенная так как у F4 42 Мбита, а на M0 16мбит скорее всего скорость превышена.
Вставьте в процедуру чтения вывод буквы, и проследите где возврат происходит.

_________________
Инженер R@D

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


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

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Oxford писал(а):
Я так понял чтение 1 возвращает?
Вы установку скорости закоментировали в конце SD_INI. Возможно скорость бешенная так как у F4 42 Мбита, а на M0 16мбит скорее всего скорость превышена.
Вставьте в процедуру чтения вывод буквы, и проследите где возврат происходит.




Вот здесь if (SPI_CMD(17, sector, 0x0, 0x00)) return 1;


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

Карма: 4
Рейтинг сообщений: 25
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 832
Откуда: Киселевск
Рейтинг сообщения: 0
osievskiy писал(а):
Oxford писал(а):
Я так понял чтение 1 возвращает?
Вы установку скорости закоментировали в конце SD_INI. Возможно скорость бешенная так как у F4 42 Мбита, а на M0 16мбит скорее всего скорость превышена.
Вставьте в процедуру чтения вывод буквы, и проследите где возврат происходит.




Вот здесь if (SPI_CMD(17, sector, 0x0, 0x00)) return 1;


Ну правильно потому что контроллер карты не ответил правильно вот и выходит.
если связь с картой нормальная, он эту команду должен пролетать на всех парусах. )))

Связи нет с картой при чтении записи.

SPI1 can communicate at up to 42 Mbits/s, SPI2 and SPI3
can communicate at up to 21 Mbit/s. Вот из даташита на камень о скоростях.
Для карты надо не выше 25

_________________
Инженер R@D

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


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

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Закомментировал SPI_SETUP(SPI_BaudRatePrescaler_2);

Теперь чтение показывает 1
Запись показывает 255

Но чтение уже вот тут
Код:
while(SPI_SEND(0xFF) != 0xFE) //?????? ??????
  if(RSD1++ > 0xFFFE)
  {
     DECS();
     return 12;
  }


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

Карма: 4
Рейтинг сообщений: 25
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 832
Откуда: Киселевск
Рейтинг сообщения: 0
osievskiy писал(а):
Закомментировал SPI_SETUP(SPI_BaudRatePrescaler_2);

Теперь чтение показывает 1
Запись показывает 255


Еще попробуй те читать и писать с закоменнтированной строкой
if (CADR_TYPE != SD_VER2HC) sector *= 512;

Еще в циклы чтения поставьте паузы небольшие.
while(SPI_SEND(0xFF) != 0xFE) //НАЧАЛО ДАННЫХ
{
_delay(1000);
if(R1++ > 0xFFFE)
{
DECS();
return 1;
}
}

Это на всех картах так?
Вы через шилд работаете?
Странное поведение какое то
......

Еще вот что сделай те:
В процедуре SPI_CMD
найдите кусок и вставьте вывод переменной RSD3
while((RSD3 = SPI_SEND(0xFF)) == 0xff)
{
_delay(20000);
if(RSD2++ > 0xFE) return 1;
}
LCD_OUT(RSD3) <<<<<< тут


Когда вызовите READ процедуру посмотрите какое значение она возвращает, после того как отработает команда if (SPI_CMD(17, sector, 0x0, 0x00)) return 1;

_________________
Инженер R@D

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


Последний раз редактировалось Oxford Вс июн 30, 2013 22:09:25, всего редактировалось 2 раз(а).

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

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
поставил задержку и убрал if (CADR_TYPE != SD_VER2HC) sector *= 512;


Та же картина!


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

Зарегистрирован: Вт июн 18, 2013 11:23:25
Сообщений: 79
Рейтинг сообщения: 0
Oxford писал(а):
osievskiy писал(а):
Это на всех картах так?
Вы через шилд работаете?
Странное поведение какое то


Вот только что додумался проверить.... не не на всех
на INI 1 и 2
Запись и чтение 0, но данных я не вижу


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

Карма: 4
Рейтинг сообщений: 25
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 832
Откуда: Киселевск
Рейтинг сообщения: 0
MMC пока уберите. Так как у меня не было такой карты и корректность не было возможность проверить.

Оставьте та что 2 или 1
На них чтение и запись срабатывает.
Верните весь код как был и проверяй те сектора на компьютере после записи, допустим пишите в 0 сектор MBR
Только //SPI_SETUP(SPI_BaudRatePrescaler_2); так пусть закоментированная и будет это установка максимальной скорости SPI ее можно превысить и карта отвечать не будет потом отрегулируете. пока на низкой пусть будет.

_________________
Инженер R@D

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


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

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


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

Карма: 4
Рейтинг сообщений: 25
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 832
Откуда: Киселевск
Рейтинг сообщения: 0
Тестируй те проверяйте, код отлаживался на Micro SD картах 1 и 2 версии.
У меня работает все четко. Я проект пишу MP3 проигрывателя на VS1011E. Скоро FAT еще буду писать, на Delphi готовая лежит. перенести надо.
Скорость SPI не превышай те.

_________________
Инженер R@D

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


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

Зарегистрирован: Чт окт 28, 2010 11:20:39
Сообщений: 71
Рейтинг сообщения: 0
Здравствуйте!Скажите, а как я могу работать с SD карточкой на уровне файлов, а не адресов памяти?
Допустим на карточке есть файлы, как я могу узнать, какие они, считывать их и записывать в карту свои файлы?
Заранее спасибо!


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

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

Сейчас кстати этим и занимаюсь!


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

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


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

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


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

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


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

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


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