реклама на сайте
подробности

 
 
9 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> Проблема с SD картой, Подключение карт к 5В питанию. Кто плавал, посоветуйте.
SALOME
сообщение Jul 23 2007, 08:49
Сообщение #46


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(QuickWitted @ Jul 23 2007, 10:44) *
Теперь вопрос, а что с хардварным SPI на асме делать?
На софтовом - понятно, а с хардой?

Не понятно, что подразумевается под хардварным и софтовым SPI? В чем тут разница?
Кстати, специально купили карту MMCmicro. Все работает так же как и с обычной ММС


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Jul 23 2007, 09:29
Сообщение #47


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(SALOME @ Jul 23 2007, 13:49) *
Не понятно, что подразумевается под хардварным и софтовым SPI? В чем тут разница?


Софтовый алгоритм написан командами выдать в ногу порта/считать с ноги порта бит...
Хардварный (читай аппаратный) - выдвинул байт по адресу во внутренней памяти и он сам передаётся
с прерыванием по окончанию

Софтовый может работать на MK без аппаратного SPI

Цитата
Кстати, специально купили карту MMCmicro. Все работает так же как и с обычной ММС


Одно НО не для всех карт !!!

Повторно привожу цитату:
Цитата
Max_Shaman
Спецификация гласит что так называемый TOKEN "синхронизирующий бит начала передачи", может появляться в любой момент тактов ожидания ответа, то-есть он может быть не кратен 8-ми циклам.
Решение проблемы: надо отлавливаить не код "FE" , а всего-лишь первый нулевой бит, и по нему уже синхронизироваться, он может появляется в любое время а не так как вы его ожидаете.
Я в интернете на зарубежных форумах находил исходники с подобным неправильным способом работы с карточкой и также жалобы на неспособность работы некоторых карточек от некоторых производителей.


И повторно задаю вопрос: Как к этому прикрутить хардварный SPI?
(И простым языком: как пояснить МК что начало передачи сдвинулось и лежит в середине байта,
а хвост байта ещё не принят?)


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
SALOME
сообщение Jul 24 2007, 03:00
Сообщение #48


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(QuickWitted @ Jul 23 2007, 16:29) *
как пояснить МК что начало передачи сдвинулось и лежит в середине байта,
а хвост байта ещё не принят?)

Если используется "on chip SPI" то все объяснения происходят при инциализации порта SPI. Вот пример для ADuC845:
MOV SPICON,#00110010b ;Initialise SPICON
; |||!||++-SPR0,1-частота тактовых SCLK=core/8
; |||!|+---CPHA=0 фаза: вначале бит DATA, потом в середине бит SCLK
; |||!+----CPOL=0,полярность тактов SCLK - неактивный уровень - ноль
; |||+-----SPIM=1 master mode select
; ||+------SPE=1 Enable SPI serial port
; |+-------WCOL=0 ERROR write
; +--------SPI Inerrupt flag
комментарий надо сдвинуть вправо до решетки #...


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Jul 24 2007, 04:39
Сообщение #49


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(SALOME @ Jul 24 2007, 08:00) *
Если используется "on chip SPI" то все объяснения происходят при инциализации порта SPI.

Вы меня не поняли...

Карта даёт ответ В СЕРЕДИНЕ БАЙТА, и где первый бит отличный от ЕДИНИЦЫ, там и начало байта.
Вопрос КАК ЭТО ОБЬЯСНИТЬ МК?
Т.е. фактически надо произвести дополнительное тактирование и принять хвост байта...
далее опять принимать по целому байту...

Если есть возможность скорректировать счётчик в хардварном SPI...
или отключить SPI протактировать самому, потом включить обратно...

Кто уже решал и решил эту задачу?


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
SALOME
сообщение Jul 24 2007, 09:16
Сообщение #50


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(QuickWitted @ Jul 24 2007, 11:39) *
Карта даёт ответ В СЕРЕДИНЕ БАЙТА, и где первый бит отличный от ЕДИНИЦЫ, там и начало байта.
Вопрос КАК ЭТО ОБЬЯСНИТЬ МК?

С чего вы это взяли? Любое устройство, работающее в SPI выдает информацию (т.е. биты DATA) только при получении тактовых импульсов SCLK ( один бит DATA на один такт SCLK) и никак она не может "начать давать ответ" в середине байта. А то, про что вы говорите "где первый бит отличный от ЕДИНИЦЫ, там и начало байта", похоже на UART. Посмотрите все процессы по 2-х канальному осцилу, а иначе не будет Вам щастья smile.gif


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Jul 24 2007, 09:42
Сообщение #51


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(SALOME @ Jul 24 2007, 14:16) *
С чего вы это взяли? Любое устройство, работающее в SPI выдает информацию (т.е. биты DATA) только при получении тактовых импульсов SCLK ( один бит DATA на один такт SCLK) и никак она не может "начать давать ответ" в середине байта.


В любой доке на ММС или SD посмотрите описание Ncr
А после прочтения станет ясно что:
Ncr - измеряется не в байтах, а в CLOCK CYCLE - а это в переводе означает один такт CLK на шине SPI.

Подробно тут:
http://electronix.ru/forum/index.php?showt...633?entry243656

Цитата
а иначе не будет Вам щастья smile.gif

При ответе счастье - это когда твой ответ с мануалом не расходится twak.gif


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
bmf
сообщение Jul 24 2007, 11:09
Сообщение #52


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



Цитата(QuickWitted @ Jul 24 2007, 12:42) *
В любой доке на ММС или SD посмотрите описание Ncr
А после прочтения станет ясно что:
Ncr - измеряется не в байтах, а в CLOCK CYCLE - а это в переводе означает один такт CLK на шине SPI.


Полный бред, не вводите в заблуждение если сами не читали или не понимаете
Спецификация на SD
...
While the SD Memory Card channel is based on command and data bit streams which are initiated
by a start bit and terminated by a stop bit, the SPI channel is byte oriented. Every command or data
block is built of 8-bit bytes and is byte aligned to the CS signal (i.e. the length is a multiple of 8 clock
cycles).
...
Таблица Timing Values
Ncr - Unit - 8 clock cycles
...
Go to the top of the page
 
+Quote Post
SALOME
сообщение Jul 24 2007, 11:23
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(QuickWitted @ Jul 24 2007, 16:42) *
В любой доке на ММС или SD посмотрите описание Ncr
А после прочтения станет ясно что:
Ncr - измеряется не в байтах, а в CLOCK CYCLE - а это в переводе означает один такт CLK на шине SPI.

Прошла по ссылке. Там как раз и пинают за эту путаницу smile.gif. Все задержки, в т.ч. и Ncr измеряются именно в байтах. Обратите внимание на цифру 8 перед CLOCK CYCLE. Не может аппаратный SPI работать с циклами не кратными байту (т.е. 8 бит). Мне не попадалось... Итак для задержки нужно послать N-ое количество "пустых БАЙТ (0хFF)". Для Ncr это число от 0 до 8. Это означает, что если отклик после посылки 8-го пустого байта не пришел, то его уже не будет. Кстати "пустой" байт посылается не столько для задержки, а для того чтобы Мaster SPI (в Вашем случае это РС) послал тактовые импульсы Slave SPI (это FLASH карта) и с их помощью получил отклик. Если вы не пошлете пустой байт, то отклик не получите ни под каким видом, потому,что SPI - это СИНХРОННЫЙ интерфейс. И не хмурьте лоб на смайлике, лучше его наморщите :-)


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Jul 24 2007, 11:36
Сообщение #54


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(bmf @ Jul 24 2007, 16:09) *
Полный бред, не вводите в заблуждение если сами не читали или не понимаете
Спецификация на SD


Всех датащитов на флеши не читал, но с десяток изучил...

Цитата
While the SD Memory Card channel is based on command and data bit streams which are initiated
by a start bit and terminated by a stop bit, the SPI channel is byte oriented. Every command or data
block is built of 8-bit bytes and is byte aligned to the CS signal (i.e. the length is a multiple of 8 clock
cycles).

Ну и что?
И чем это противоречит?
Токен FE для ловли начала и предназначен...

Цитата
Таблица Timing Values
Ncr - Unit - 8 clock cycles


Написано же НЕ У ВСЕХ производителей он КРАТЕН 8...
Из спецификации на SD С.т. 4-46 таблица 4-24 "Timing Values"

NCR
Min - 2 Clock cycles
Max - 64 Clock cycles

Страницу прикладываю...[attachment=12685:attachment]

Цитата(SALOME @ Jul 24 2007, 16:23) *
Прошла по ссылке. Там как раз и пинают за эту путаницу smile.gif. Все задержки, в т.ч. и Ncr измеряются именно в байтах. Обратите внимание на цифру 8 перед CLOCK CYCLE. Не может аппаратный SPI работать с циклами не кратными байту (т.е. 8 бит).


Во во поэтому они гибрид и делали (ловили софтово, а принимали хардварно)


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
bmf
сообщение Jul 24 2007, 11:59
Сообщение #55


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



Цитата(QuickWitted @ Jul 24 2007, 14:36) *
Всех датащитов на флеши не читал, но с десяток изучил...
...
Страницу прикладываю..

Как говорят: смотришь в книгу а видишь фигу 07.gif
Вы точно чего то не дочитали
у SD есть два режима - родной SD в котором действительно битовая синхронизация и SPI - в котором только байтовая.
вы привели как раз как раз таблицу для родного SD режима (в котором и эффективно работать можно только с SD контроллером).
А если таковые SD с битовой синхронизацией для SPI режима есть (в чем я сильно сомневаюсь) - то это не SD, т.к. они не будут отвечать спецификации
И если у когото и вылезла она в середине байта, то это из за мягко сказать неумелости - карта не переведена в режим SD или сбои по фронтам линии clock. Только и всего.
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Jul 24 2007, 16:23
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Вот и у меня, ребята назрел снова вопрос. Не буду добивать вас какой-то ерундой, у меня всё конкретно.
После инициализации карты шлём команду CMD18 и начинаем непрерывно считать байтики. Вот в порыве своей идеи я и забыл про CRC и мой DAC стал озвучивать и эту ахинею smile.gif.
Т.е. картина после посылки CMD18 такая:
Block 512 byte - CRC - CRC - Block 512 byte - CRC - CRC - Block 512 byte - CRC - CRC........ и т.д.
Так оно и есть.

Вопрос следующий: как отключить эти CRC, чтобы посылки имели вид:
Block 512 byte - Block 512 byte - Block 512 byte....

Из буржуйского даташита вычитал, что есть такая команда, как CMD59, но вот её подробное описание не удосужились привести...
Кто что знает?
Go to the top of the page
 
+Quote Post
oll
сообщение Jul 24 2007, 17:29
Сообщение #57


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



Вопрос следующий: как отключить эти CRC, чтобы посылки имели вид:
Block 512 byte - Block 512 byte - Block 512 byte....

Так как время между посылками в звуковой цап или шим при оцифровке звука 16кГц составляет 65мкС - Вы спокойно успеете прочитать два CRC. Правда, если Вы используете 51 кристалл надо все просчитать - может понадобится снизить частоту оцифровки до 8 кГц (125 мкС).
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Jul 24 2007, 18:12
Сообщение #58


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Цитата(oll @ Jul 24 2007, 20:29) *
Так как время между посылками в звуковой цап или шим при оцифровке звука 16кГц составляет 65мкС - Вы спокойно успеете прочитать два CRC. Правда, если Вы используете 51 кристалл надо все просчитать - может понадобится снизить частоту оцифровки до 8 кГц (125 мкС).


Не всё так просто. Я на своём AT89C2051 решил вытянуть все 22 кГц! И это получилось. Почти smile.gif)
Звук проигрывается, но со щелчками. Я встал ослом на выход ЦАПа и узнал характер этих щелчков - это те самые 2 байта CRC.
Так вот, для проигрывания 22 кГц, 8 бит мне пришлось поставить кварц 20 МГц (у 2051 на один такт уходит 12 циклов кварца, в итоге имеем реальную частоту 1,67 МГц, если бы это был AVR).
И со всеми этими условиями программка работает впритык, т.е не всунешь туда ещё пару строк.
Даже для этого мне пришлось ужать цикл воспроизведения 1 байта хитрым способом. ЦАП у меня 12 бит, поставил то, что было под рукой. Реально значат только старшие 8 бит, остальные 4 нули.
У DAC7513 цикл состоит из 16 бит: x-x-0-0-bit12-bit11-.....-bit0.
В рамках этой схемы всё получилось впритык, и эти 2 байта CRC всё портят. Сегодня попробую их просто не читать (16 clock на карточке и всё), но тогда появится ступенька в фонограмме. Но это лучше, чем щелчки.
Отпишусь о результатах.
Go to the top of the page
 
+Quote Post
oll
сообщение Jul 24 2007, 18:42
Сообщение #59


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



Цитата(Angelborn @ Jul 25 2007, 00:12) *
Не всё так просто. Я на своём AT89C2051 решил вытянуть все 22 кГц! И это получилось. Почти smile.gif)
Звук проигрывается, но со щелчками. Я встал ослом на выход ЦАПа и узнал характер этих щелчков - это те самые 2 байта CRC.
Так вот, для проигрывания 22 кГц, 8 бит мне пришлось поставить кварц 20 МГц (у 2051 на один такт уходит 12 циклов кварца, в итоге имеем реальную частоту 1,67 МГц, если бы это был AVR).
И со всеми этими условиями программка работает впритык, т.е не всунешь туда ещё пару строк.
Даже для этого мне пришлось ужать цикл воспроизведения 1 байта хитрым способом. ЦАП у меня 12 бит, поставил то, что было под рукой. Реально значат только старшие 8 бит, остальные 4 нули.
У DAC7513 цикл состоит из 16 бит: x-x-0-0-bit12-bit11-.....-bit0.
В рамках этой схемы всё получилось впритык, и эти 2 байта CRC всё портят. Сегодня попробую их просто не читать (16 clock на карточке и всё), но тогда появится ступенька в фонограмме. Но это лучше, чем щелчки.
Отпишусь о результатах.


Честно говоря я бы в Вашей задаче заменил AT89C2051 на Tiny2313 - по ногам совпадает
плюсы:
-питание 3В
- малое потребление в слипе
-внутренний генератор 8 мГц
-не нужен внешний ЦАП - звук можно вывести на 8-ми битный шим (их там четыре) + 1резистор и конденсатор - звук получается хороший (проверено)
- и лично для меня большой плюс - любимая среда разработки - Алгоритм билдер (до 2К компилирует не зарегистрированная версия)
не сочтите за рекламу АВРов - 51 серию тоже регулярно пользую
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Jul 24 2007, 18:58
Сообщение #60


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Цитата(oll @ Jul 24 2007, 21:42) *
Честно говоря я бы в Вашей задаче заменил AT89C2051 на Tiny2313 - по ногам совпадает
плюсы:
-питание 3В
- малое потребление в слипе
-внутренний генератор 8 мГц
-не нужен внешний ЦАП - звук можно вывести на 8-ми битный шим (их там четыре) + 1резистор и конденсатор - звук получается хороший (проверено)
- и лично для меня большой плюс - любимая среда разработки - Алгоритм билдер (до 2К компилирует не зарегистрированная версия)
не сочтите за рекламу АВРов - 51 серию тоже регулярно пользую


На тини это чудо техники сделать - раз плюнуть! Там быстродействие всё покроет и все дыры залатает.
Весь смысл в том, чтобы сделать это на AT89C2051. Проект не коммерческий, строится исключительно на энтузиазме. Поймите меня правильно.
Go to the top of the page
 
+Quote Post

9 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 20:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01527 секунд с 7
ELECTRONIX ©2004-2016