Перейти к содержанию
    

Проще гонять в сдвиговом регистре полином сразу по 4м линиям, чем 4мя по каждой из линий...

Что может быть проще, чем иметь четыре сдвиговых регистра на выходе сериализатора? Минимум манипуляций с данными, минимум логики.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что может быть проще, чем иметь четыре сдвиговых регистра на выходе сериализатора? Минимум манипуляций с данными, минимум логики.

Смеётесь?....

В 4 раза больше логики в вашем случае! (16 триггеров против 64х).

Есть только одно объяснение этому "безобразию",- вариант применения одной линии данных вместо четырех. Тогда берется для этого один регистр из четырех.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смеётесь?....

В 4 раза больше логики в вашем случае! (16 триггеров против 64х).

16? Т.е. тактировать свой вычислитель с 4x частотой интерфейса - это не безобразие? А логику, которая

будет перекладывать полученное значение CRC в сериализатор, решили и не считать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смеётесь?....

А смысл обсуждать это? Есть стандарт - нужно ему следовать.

Если 4 вычислителя не охота делать принципиально, то можно с картой общаться в SPI-режиме, и вообще без какой-либо проверки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А смысл обсуждать это? Есть стандарт - нужно ему следовать.

Если 4 вычислителя не охота делать принципиально, то можно с картой общаться в SPI-режиме, и вообще без какой-либо проверки.

 

Если только скорость вообще не важна :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если только скорость вообще не важна :biggrin:

А какой реальный выигрыш от использования SDIO вместо SPI не на коне в вакууме, а на типичном Cortex-M? Загруженном кроме гоняния байтов с SD ещё и другими задачами.

В Мб/сек или в %.

Есть-ли вообще смысл тратить гораздо больше ног МК, которые, как правило, всегда в дефиците?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой реальный выигрыш от использования SDIO вместо SPI не на коне в вакууме

Действительно, реальная карта очень медленная. Т.е. по быстрому интерфейсу ей прилетает команда,

спустя какое-то время карта по быстрому интерфейсу отвечает, а данные сектора выдаст гораааздо позже, но очень быстро.

Применение SDIO в связке с DMA позволяет сильно разгрузить МК, хотя я делал и на SPI+DMA+ISR с деревом из callback-функций.

С учетом того, что карта может приспокойно "задуматься" на полсекунды даже в режиме чтения, jcxz весьма справедлив.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С учетом того, что карта может приспокойно "задуматься" на полсекунды даже в режиме чтения, jcxz весьма справедлив.

Я даже не об этом говорю, а о том что на практике я писал драйвер SD через SPI на Cortex-M 120МГц. И получал скорость потокового чтения с карты немного больше 1МБ/сек (естественно SPI+DMA).

Даже просто прокачка такого потока через средний Cortex-M сильно его нагрузит. Не говоря уже о том, что наверное МК должен как-то ещё и обрабатывать этот поток.

При более-менее содержательной обработке читаемых/записываемых данных, скорость обработки этих данных вряд-ли будет выше 1МБ/сек, а скорей всего - гораздо ниже.

Тогда такой скорости SPI вполне хватает.

И это при том, что я даже не оптимизировал свой драйвер - возможно получил бы гораздо бОльшую скорость (SPI-флешки у меня работают на SCLK до 40МГц).

Вобщем: при реальной работе с SD, а не мерянии попугаев, сама обработка данных будет больше тормозить, чем обмен с SD по SPI. Имха.

Так что польза от SDIO на типичных Cortex-M - сомнительна. Тоже - имхо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой реальный выигрыш от использования SDIO вместо SPI не на коне в вакууме, а на типичном Cortex-M? Загруженном кроме гоняния байтов с SD ещё и другими задачами.

В Мб/сек или в %.

Есть-ли вообще смысл тратить гораздо больше ног МК, которые, как правило, всегда в дефиците?

 

Есть проект на Cortex-M7 вида eMMC -> M7 -> HSUSB, без двойной буверизации, т.е. блок читается с флешки и отдаётся в USB.

 

При подключении по 4 проводам SDIO средня скорость чтения файла длиной 1Гб, в зависимости от частоты шины SDIO, составила:

 

24.43МГц - 6.50М/с;

25.00МГц - 7.18М/с;

50.00МГц - 10.56М/с.

 

Насколькоя я знаю скорость 50.00МГц предусмотрена стандартом только в режиме SDIO.

 

С учетом того, что карта может приспокойно "задуматься" на полсекунды даже в режиме чтения, jcxz весьма справедлив.

 

Моя карта имеет право задуматься на 250мс в режиме чтения.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколькоя я знаю скорость 50.00МГц предусмотрена стандартом только в режиме SDIO.

Просто передаёт с SD на USB? Это карт-ридер? :rolleyes:

Конечно, если делать карт-ридер, то здесь имеет смысл. Я же писал про использование SD для нужд хранения и содержательной обработки данных самой программой МК.

Единственный вариант: это если данные медленно накапливать на SD при работе устройства, а потом быстро слить в комп не вынимая карты.

 

Моя карта имеет право задуматься на 250мс в режиме чтения.

Да уж.... :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Единственный вариант: это если данные медленно накапливать на SD при работе устройства, а потом быстро слить в комп не вынимая карты.

Да что-то подобное.

 

Просто передаёт с SD на USB? Это карт-ридер? :rolleyes:

В режиме чтения накопленной или обработанной информации - что-то типа карт-ридера. И естественно, чем быстрее считается - тем удобнее.

 

Конечно, если делать карт-ридер, то здесь имеет смысл. Я же писал про использование SD для нужд хранения и содержательной обработки данных самой программой МК.

 

Для нужд записи - тоже имеет смысл при ограничении по потреблению и пульсациям по питанию.

 

Вот ток потребления в режиме SPI:

post-9565-1517493920_thumb.png

 

А вот в режиме SDIO:

post-9565-1517493971_thumb.png

 

Видно, что среднее потребление при записи - в режиме SDIO в 2.5 раза меньше, за счёт меньшего времени передачи данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для нужд записи - тоже имеет смысл при ограничении по потреблению и пульсациям по питанию.

...

Видно, что среднее потребление при записи - в режиме SDIO в 2.5 раза меньше, за счёт меньшего времени передачи данных.

Зато судя по картинкам - пульсация тока в режиме SDIO в ~2 раза больше :rolleyes:

Да и судя по длительностям осциллограмм - сравниваете SDIO работающий на высокой скорости и SPI работающий на медленной скорости - так сравнивать не корректно.

Вы сами писали, что скорость SDIO у вас максимум была 10МБ/сек. А SPI может работать с SCLK до 25МГц - т.е. около 3МБ/сек. Разница в длительности картинок должна быть соответственно 1/3 или 1/4 (судя по кол-ву линий IO).

Возможно, что если запустите SPI на макс. скорости, то получите сравнимые показатели тока потребления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы сами писали, что скорость SDIO у вас максимум была 10МБ/сек. А SPI может работать с SCLK до 25МГц - т.е. около 3МБ/сек. Разница в длительности картинок должна быть соответственно 1/3 или 1/4 (судя по кол-ву линий IO).

Возможно, что если запустите SPI на макс. скорости, то получите сравнимые показатели тока потребления.

 

Только заметьте разницу - "корость SDIO у вас максимум была 10МБ/сек" и "А SPI может работать с SCLK до 25МГц - т.е. около 3МБ/сек" - только первое реально работает, а второе - только ваш прогноз, который не учитывает обработку команды в карте и накладные расходы, а именно больше полутора мегов в сек не получите по спи.

Другое дело - если задача скинуть файл пару кб раз в сек. то какой интерфейс - без разницы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколькоя я знаю скорость 50.00МГц предусмотрена стандартом только в режиме SDIO.

Нет, режим High-Speed распространяется в том числе и на подключение через SPI.

 

P.S. SDIO и SD - это все-таки совершенно разные вещи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только данные, по каждой линии отдельно.

Тут есть путаница,

.....хотя бы потому, что для вывода всего CRC16(CCITT) по ОДНОЙ линии требуется 16 тактов, хотя на эпюрах на это выделяется 4 такта. Неувязочка явная!

 

Ответ на этот вопрос резко бы упростился, если кто-нибудь дал пример РЕАЛЬНОЙ последовательности в четыре провода от начала до конца.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...