Карта какая? фотку выложите если можно. Емкость. 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 раз.
Покажите код чтения и записи. Не может быть карты правильно определяются.
Попробуй те закоментировать строку 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 раз.
CS подтяните тоже. Я про Main где вы вызываете чтение и запись и выводите числа из буфера. Я смотрю переменные переименовали зачем то. Модуль просто подключили бы и все.
_________________ Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Я так понял чтение 1 возвращает? Попробуй те закоментировать строку SPI_SETUP(SPI_BaudRatePrescaler_2); в процедуре SD_INI может скорость превышается SPI. там что-то не выше 20-25 мгц должно Возможно скорость бешенная так как у F4 42 Мбита, а на M0 16мбит скорее всего скорость превышена. Вставьте в процедуру чтения вывод буквы, и проследите где возврат происходит.
_________________ Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Я так понял чтение 1 возвращает? Вы установку скорости закоментировали в конце SD_INI. Возможно скорость бешенная так как у F4 42 Мбита, а на M0 16мбит скорее всего скорость превышена. Вставьте в процедуру чтения вывод буквы, и проследите где возврат происходит.
Вот здесь if (SPI_CMD(17, sector, 0x0, 0x00)) return 1;
Я так понял чтение 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
Еще попробуй те читать и писать с закоменнтированной строкой 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 раз(а).
MMC пока уберите. Так как у меня не было такой карты и корректность не было возможность проверить.
Оставьте та что 2 или 1 На них чтение и запись срабатывает. Верните весь код как был и проверяй те сектора на компьютере после записи, допустим пишите в 0 сектор MBR Только //SPI_SETUP(SPI_BaudRatePrescaler_2); так пусть закоментированная и будет это установка максимальной скорости SPI ее можно превысить и карта отвечать не будет потом отрегулируете. пока на низкой пусть будет.
_________________ Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Тестируй те проверяйте, код отлаживался на Micro SD картах 1 и 2 версии. У меня работает все четко. Я проект пишу MP3 проигрывателя на VS1011E. Скоро FAT еще буду писать, на Delphi готовая лежит. перенести надо. Скорость SPI не превышай те.
_________________ Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Здравствуйте!Скажите, а как я могу работать с SD карточкой на уровне файлов, а не адресов памяти? Допустим на карточке есть файлы, как я могу узнать, какие они, считывать их и записывать в карту свои файлы? Заранее спасибо!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения