nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 22 Aug 2017 01:30



Reply to topic  [ 83 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6
Еще один "Специалист" в Proteus 
Author Message
Senior

Joined: 12 Feb 2016 16:39
Posts: 148
Reply with quote
касательно работы SD карт и SPI есть такой момент - ввод бита и вывод бита идет на разных фронтах CLK, при реализации ввода и вывода на двух мс это решается инвертированием CLK у одной из них, а вот как быть с одной мс(ИР24, в частности) это вопрос.


15 Feb 2017 01:16
Profile
Maniac
User avatar

Joined: 05 Oct 2006 07:45
Posts: 266
Location: Moscow
Reply with quote
PVV wrote:
касательно работы SD карт и SPI есть такой момент - ввод бита и вывод бита идет на разных фронтах CLK, при реализации ввода и вывода на двух мс это решается инвертированием CLK у одной из них, а вот как быть с одной мс(ИР24, в частности) это вопрос.


Я так себе представляю. Чтение хостом из нашего регистра ИР24 в отдельной команде, поэтому корректность тактирования от SCK интересна только в контексте корректного сдвига ИР24 <=> SPI-устройство в момент прохождения пакета импульсов сдвига, ограниченного счетчиком ИЕ7 и запускаемого отдельно. Защелкивание (т.е. актуальное состояние "0"/"1") MISO и MOSI имеют в один и тот же момент, и перенос со вход на выход (как экивалентный регистр сдвига) тоже в один момент (если верить диаграмме ниже - для дефолтного режима CPHA=0 чтение/хранение состояния битов SPI-устройств актуально по фронту такта, а сдвиг в следующий разряд идет по спаду такта). Т.е. SPI-устройство можно рассматривать как обычный сдвиговый регистр со входом (= значению младшего разряда) и выходом (=значению старшего разряда). Верно же? Регистр ИР24 нашего адаптера всего лишь такой же сдвиговый регистр, и в эквивалентной схеме получаем два встречно включенных регистра (чтобы образовать "кольцо" из двух регистров) где оба регистра (адаптера и устройства) должны сдвигаться синхронно (в том смысле, что SPI на один бит, и ИР24 на один бит - перезаписываясь один в другого).
Image

ИР24 осуществляет все действия по фронту тактового импульса, то для режима CPHA=0, где сдвиг идет спадом, ее как мне кажется можно оставить как есть - в противофазе SPI устройству, чтобы в момент сдвига (вывода) в SPI-устройство, ИР24 держала выход неизменным, и сама писала вход со SPI-устройства в момент, когда SPI-устройство находится в режиме вывода - её стабильного состояния (а не в процессе сдвига). Как то так я рассуждал.

Но вообще, диаграмма как-то не очень сочетается с текстом той же статьи о "For CPHA=0, data are captured on the clock's rising edge (low→high transition) and data is output on a falling edge (high→low clock transition)." Тут какие-то разночтения. Относится ли это к тому, что эффективное время (активность сигнала) MISO и MOSI должны быть сдвинуты относительно друг друга? По диаграмме это не так (и по логике не так - иначе нельзя бы было устройства последовательно включать - при трех и более элементов в цепочке у них "уедет" общее тактирование от мастера), но текст можно интерпретировать что это так. Вот тогда, все может усложниться, т.к. писать в ИР24 младший разряд и выводить из нее старший придется в разное время, что учитывая что это просто сдвиговый регистр (как и SPI-устройства), где все разряды модифицируются при сдвиге от общего импульса, выглядит бредом.

Скорее всего сдвиг в SPI-устройсте происходит единомоментно, и разница MISO и MOSI упоминается только в контексте чтобы пропускать недетерминированный период когда триггеры внутри SPI-устройства последовательно перезапишутся и выставится последний разряд (выход). И достаточно будет только понять картинке верить или тексту по моменту защелкивания входного бита в SPI-устройстве, и моменту сдвига, и поймать "противофазу" для ИР24. Тут я сомневаюсь - прямым или инверсным импульсом относительно SCK надо тактировать ИР24. Но вариантов всего два: тактировать ИР24 инверсным SCK или сойдет и так как уже нарисовано (с тактированием ИР24 прямым SCK).
Статью смотрел в Wiki: https://en.wikipedia.org/wiki/Serial_Pe ... erface_Bus

_________________
Всем добра!


15 Feb 2017 04:29
Profile
Senior

Joined: 12 Feb 2016 16:39
Posts: 148
Reply with quote
вот здесь есть неплохое описание как работать с SD картой, и есть диаграммка:
Attachment:
structur.jpg
structur.jpg [ 32.11 KiB | Viewed 496 times ]

и по ней видно как именно карта 'хочет' видеть биты и как их выдает.
получается для карты SCK CPOL=0, CPHA=0, но для ИР24 SCK надо проинвертировать(те CPOL=1), что бы получились правильные биты на выдачу, однако принимаемый бит будет в этот момент уже упущен, значит надо поставить однобитную защелку(ТМ2) на входе ИР24, тактируемую от SCK карты(те не инвертированный!), что бы задержать на пол такта принимаемые от карты данные, вот в этом случае все будет работать верно.

У меня тут мысль возникла - а почему бы не применить такую мс как 561ГГ1(CD4046, 74HC4046-TTL вариант) в качестве управляемого генератора тактовой карты, можно выбрать и высокую скорость тактирования и низкую, а управлять одной ножкой... глядишь и две мс ЛЛ1(7402) получится выкинуть из схемы... для КМОП версии при питании 5В в разных источниках разные данные приводятся для максимально генерируемой частоты, но если 2Мгц получится с нее получить, то это самое то! TTL версия вообще до 18Мгц, тут и вопросов нет, но только импорт :(.


15 Feb 2017 15:42
Profile
Maniac
User avatar

Joined: 05 Oct 2006 07:45
Posts: 266
Location: Moscow
Reply with quote
PVV wrote:
вот здесь есть неплохое описание как работать с SD картой, и есть диаграммка:
Attachment:
structur.jpg

и по ней видно как именно карта 'хочет' видеть биты и как их выдает.
получается для карты SCK CPOL=0, CPHA=0, но для ИР24 SCK надо проинвертировать(те CPOL=1), что бы получились правильные биты на выдачу, однако принимаемый бит будет в этот момент уже упущен, значит надо поставить однобитную защелку(ТМ2) на входе ИР24, тактируемую от SCK карты(те не инвертированный!), что бы задержать на пол такта принимаемые от карты данные, вот в этом случае все будет работать верно.


Хм, пожалуй что красивее всего так получится - и половинка ТМ2 есть свободная. Только не надо ли будет в пакете выдавать при чтении на один импульс больше? Чтобы все разряды сдвинулись в ИР24 чтобы прочитать ее по тем же D0..D7 откуда и пишем? Может что и не надо - разведутся по фронту и спаду. Плохо не знать Протеус. :) С другой стороны и под Протеусом устройство надо чем-то загрузить, т.е. весь хост эмулировать (Специалист в данном контексте, и плюс софт для него).

PVV wrote:
У меня тут мысль возникла - а почему бы не применить такую мс как 561ГГ1(CD4046, 74HC4046-TTL вариант) в качестве управляемого генератора тактовой карты, можно выбрать и высокую скорость тактирования и низкую, а управлять одной ножкой... глядишь и две мс ЛЛ1(7402) получится выкинуть из схемы... для КМОП версии при питании 5В в разных источниках разные данные приводятся для максимально генерируемой частоты, но если 2Мгц получится с нее получить, то это самое то! TTL версия вообще до 18Мгц, тут и вопросов нет, но только импорт :(.


Тоже интересная мысль! Можно тогда обойтись без кварцевых источников, которые еще поделить надо чтобы получить 2 частоты. А использовать можно, к примеру, и кондовые кр1533АГ3 в качестве генератора (там как раз 2 раздельных управляемых одновибратора, работают до 50 МГц) - нам же не надо точные частоты, лишь бы примерно по времени укладывалось в ожидаемые рамки.

_________________
Всем добра!


16 Feb 2017 02:20
Profile
Senior

Joined: 12 Feb 2016 16:39
Posts: 148
Reply with quote
Вот до чего можно 'ужаться' при использовании ИР24, отказом от считывания состояния передачи по SPI ( сигнал busy), переключением скорости и собственного тактового генератора CLK. Нужен внешний меандр CLK с частотой от 2Мгц: 8 корпусов мс


Attachments:
spec_ie10_10_SD9.pdsprj.pdf [121.16 KiB]
Downloaded 37 times
16 Feb 2017 14:49
Profile
Senior

Joined: 12 Feb 2016 16:39
Posts: 148
Reply with quote
Проверил работу SD интерфейса, согласно схеме выложенной ранее, с учетом 'ненужности' U38 с дополнительной ТМ2. Все заработало, как и предполагалось, затем переделал схему на базе решения, найденного для РК-86, все работает четко и однозначно.
В процессе вспомнил, зачем ставил ТМ7 на цепь MSC - устранение программной ошибки(о которой я на тот момент не знал) Loader_а МХ2 аппаратным способом...:), суть в том, что в момент инициализации SD карты на малой скорости тактирования идет проверка сигнала busy после каждого выданного байта, как и положенно, но на выдаче последнего байта этой проверки нет, и тут приходит активация чип селекта карты, когда еще идут импульсы тактирования... у карты 'сносит крышу' - в результате SD интерфейс не работает(это все актуально и для реализации SD интерфейса на ПЛИС)... если эту ошибку исправить, то ТМ7 оказывается не нужной, соотв из схемы я ее исключил.
Вот результат полученный в итоге, 11 корпусов, полностью самостоятельная схема, не требующая дополнительных сигналов, все необходимые сигналы приведены к активным уровням ППА К580ВВ55, и эту схему можно собрать как 'вставку' в замен ВВ55 на плате ПК или как подключаемую в разъем расширения внешней ВВ55(порта программатора):

и версия sd_dos_v5c с небольшими исправлениями и доработками, которая сейчас у меня работает с этим SD интерфейсом


Attachments:
sd_dos_v5c.zip [13.95 KiB]
Downloaded 21 times
SPEC_SD3.pdf [96.97 KiB]
Downloaded 80 times
13 Mar 2017 06:24
Profile
Maniac
User avatar

Joined: 05 Oct 2006 07:45
Posts: 266
Location: Moscow
Reply with quote
А я начал было собирать для своего Ориона на макетке+МГТФ схему на ИР24, и вдруг осознал, что уже 8 корпусов для меня паять проводочками - мУка мучительная. Бросил пока что недопаянную, задолбался. Думаю - не проще ли было протравить печатку. А ты как делаешь согласование с SD-картой, на резисторах или с использованием 74LVC125 (как то так: http://obrazki.elektroda.pl/8066786300_1334332113.jpg) ?

_________________
Всем добра!


14 Mar 2017 08:06
Profile
Senior

Joined: 12 Feb 2016 16:39
Posts: 148
Reply with quote
Я собирал на своей макетной плате по схеме один в один из предыдущего поста, те согласование на выход к карте через ОК инверторов ЛН2 (хотя fifan делает через резисторные делители, и соотв не инверсные сигналы надо давать), а выход карты сразу на вход ИР8 без преобразования уровней.


14 Mar 2017 08:20
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 83 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.