Jump to content

    

st32f767 QSPI

Хотелось бы посоветоваться. Стоит задача хранить в приборе большое количество информации. От 256 Мб и выше. В текущий момент я планирую разместить 2 Гб. Планирую набить его микрухами w25n01. Возможно применение w25q256.

Скорость чтения/записи не очень высокая требуется. С другой стороны, чем выше скорость - тем меньше загрузка CPU. Пока не определился буду ли я свой формат делать, либо применю FatFS. До этого момента с QSPI не работал. Почитал, я так понимаю в моём случае, можно их в параллель вешать и CS управлять. Так как отображать на флэш мне абсолютно без надобности.
Кто подскажет. Есть ли смысл применять QSPI или просто повесить на чистый SPI. Посмотрел получается CLK 72МГц. Да ещё момент, на этом SPI будет сидеть и 595 для дешифрации микрух. То есть в случае применения QSPI придётся периодически перепрограммировать интерфейс туда - сюда.

Share this post


Link to post
Share on other sites
20 minutes ago, SapegoAL said:

Есть ли смысл применять QSPI или просто повесить на чистый SPI

QSPI вам обеспечит большую пропускную способность.

21 minutes ago, SapegoAL said:

То есть в случае применения QSPI придётся периодически перепрограммировать интерфейс туда - сюда.

Не знаю, как на STM, но на LPC это не вызывало проблем.

21 minutes ago, SapegoAL said:

От 256 Мб и выше

Мегабайт? Не мегабит? Может быть вам тогда микро-SD карту рассмотреть в качестве микросхемы памяти? Есть и под пайку.

22 minutes ago, SapegoAL said:

Пока не определился буду ли я свой формат делать, либо применю FatFS

Имейте в виду, FAT вам не обеспечит отказоустойчивости. Если таковой вопрос стоит, то необходимо использовать другую файловую систему, например Reliance Edge.

25 minutes ago, SapegoAL said:

Да ещё момент, на этом SPI будет сидеть и 595 для дешифрации микрух. То есть в случае применения QSPI придётся периодически перепрограммировать интерфейс туда - сюда.

+1 за SD. Чтобы не городить лишний огород.

Share this post


Link to post
Share on other sites
4 часа назад, SapegoAL сказал:

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

Это как это? Должно быть как раз наоборот. Если конечно не выполнять код из этих флешь. Или под "загрузкой" имеете виду - собираетесь прошивку загружать оттуда?

Цитата

Кто подскажет. Есть ли смысл применять QSPI или просто повесить на чистый SPI.

А dual-SPI в st32f767 отсутствует?

4 часа назад, SapegoAL сказал:

То есть в случае применения QSPI придётся периодически перепрограммировать интерфейс туда - сюда.

Вообще не о том думаете. Считаете какие-то копейки на какое-то перепрограммирование и забываете о необходимости разделения доступа к шине разных служб: работающей с flash-ками и работающей с 595. Если на одном интерфейсе совмещать.

Share this post


Link to post
Share on other sites
10 hours ago, SapegoAL said:

Скорость чтения/записи не очень высокая требуется.

S25FL256S qspi ddr 54мгц, наверное самый быстрый чип получается. Это чтобы графику хранить и использовать без предварительного копирования в память. А чтобы просто иметь размер - достаточно микро сд карту на пузико припаять, она выдержит - проверял. 

Share this post


Link to post
Share on other sites
15 hours ago, haker_fox said:

Мегабайт? Не мегабит? Может быть вам тогда микро-SD карту рассмотреть в качестве микросхемы памяти? Есть и под пайку.

Да. Мегабайт. Внешняя sd тоже будет. То есть надо писать инфу во внутреннюю или внешнюю память очень большого размера.
Аналогичную работу с меньшими объёмами я уже делал. Тогда применял flash память без Fat.
С файловой системой никогда не работал. Ну, что же, придётся начинать.
Если я правильно понимаю, микро-SD карта этим же интерфейсом обрабатывается?
Ладно, похоже надо немного почитать и переосмыслить конструкцию. Припаивать не буду просто поставлю держатель карты внутри и снаружи. Чего-чего а места там вагон.

 

Всем спасибо за ответы.

 

AVI-crack. w25q256 133 МГц, w25n01 104 МГц. Эти микрухи доступны.

Share this post


Link to post
Share on other sites
18 hours ago, SapegoAL said:

Если я правильно понимаю, микро-SD карта этим же интерфейсом обрабатывается?

Стартует она в своём родном интерфейсе, но переводится при желании на SPI. Легко.

18 hours ago, SapegoAL said:

С файловой системой никогда не работал. Ну, что же, придётся начинать.

Да там в целом ничего сложного нет. В плане подключения. Нюансы выползают во время работы и эксплуатации.

18 hours ago, SapegoAL said:

Внешняя sd тоже будет.

Я предложил внутреннюю sd вместо флешки, рассмотренной вами. По мне, это гораздо проще.

Share this post


Link to post
Share on other sites

Спасибо всем за ответы.
Действительно целесообразнее ставить SD карточку. Причём поставлю держатель.
Планирую сделать какую-то core плату. Процессор/ Озу/ микроSD/ разъём TFT и небольшую QSPI флэшку под конфигурацию. Возможно туда же поставлю и физику Eth. Пока не решил.
Попытаюсь сделать это всё как можно более компактно, наверное на 4-ёх слойке.
Процессор планирую stm32f767 в 167 plcc
 

Share this post


Link to post
Share on other sites
27 minutes ago, SapegoAL said:

Планирую сделать какую-то core плату.

После sdram памяти, qspi, кварцев, и полного выхлопа на экран - остаётся очень мало ног. Причём занятые ноги почти всегда имеют один вариант. Если sdram 32 бита - то остаток вообще мал.  Для TFT есть альтернатива где нет дополнительных альт функций.

Всё что осталось прекрасно помещается на краевые полигоны для пайки. Так можно сэкономить на площади 4-х слойки. А если сразу брать чип и память в бга корпусе - то в принципе можно будет торговать ПП, с неплохим выхлопом. Линии на периферию не требовательны к скорости, и им достаточно двухслойной платы. А если это будет макетка - то ещё дешевле. 

Share this post


Link to post
Share on other sites

Кто-нибудь цеплял на QSPI АЦП c многоканальным SPI выходом, когда по каждой линии данных идут битовые потоки от одного канала АЦП? Что то типа AD7768-4. Как лучше потом разгребать записанную в памяти кашу из битов для разных каналов, т.к в одном выходном байте лежит по 2 бита для всех 4 каналов? А 24 бита 4 канала займу в памяти 3 32-разрядных слова, т.е желательно еще и считывать пакеты с АЦП с выравниванием результата в памяти на кратное 2. Нельзя ли приспособить для разбора этой битовой каши DMA2D от видеосистемы?

 

Share this post


Link to post
Share on other sites
42 минуты назад, khach сказал:

Кто-нибудь цеплял на QSPI АЦП c многоканальным SPI выходом, когда по каждой линии данных идут битовые потоки от одного канала АЦП? Что то типа AD7768-4. Как лучше потом разгребать записанную в памяти кашу из битов для разных каналов, т.к в одном выходном байте лежит по 2 бита для всех 4 каналов?

Зачем лепить такое непотребство и потом бодро сражаться с результатами, если можно просто взять МК с подходящими интерфейсами?

Share this post


Link to post
Share on other sites
1 hour ago, jcxz said:

Зачем лепить такое непотребство и потом бодро сражаться с результатами, если можно просто взять МК с подходящими интерфейсами?

Если не секрет, это какие МК? Пока что приходилось лепить на FPGA переходник и забрасывать уже сортированные данные по FSMC. Для 8 канальных SPI вариантов АЦП только так и получалось, хотя и был вариант с использованием  параллельной DMCI шины в качестве мультибитного SPI на прием, но там та же проблема с разбором битовых данных.

 

Share this post


Link to post
Share on other sites
40 минут назад, khach сказал:

Если не секрет, это какие МК? Пока что приходилось лепить на FPGA переходник и забрасывать уже сортированные данные по FSMC. Для 8 канальных SPI вариантов АЦП только так и получалось, хотя и был вариант с использованием  параллельной DMCI шины в качестве мультибитного SPI на прием, но там та же проблема с разбором битовых данных.

А какие МК Вы вообще смотрели? Кроме STM32F7x?

И какие требования к SPI? Синхронность между каналами нужна?

Первый попавшийся XMC4700 имеет 6 SPI-каналов. Отдельных. И можно запустить их все синхронно при желании и тактировать единым SCLK. И длину слова можно ставить <= 63 бит.

Если надо ещё больше - можно взять TMS320C6745 (который в как раз сейчас в соседней ветке мучает один товарищ). Он имеет многоканальный McASP0, который имеет 16 сериализаторов. Это 16 битовых потоков, каждый поток можно запрограммировать независимо от других на приём или передачу. И при некоторых ухищрениях зацепить на каждый поток по отдельному MISO от отдельного устройства. У меня в одном проекте на нём сидели MISO от 3-х АЦП (3 сериализатора) и + ещё две сериализатора были отданы для I2S (один  - передача, второй приём). Всё это работало одновременно, благо что частоту тактирования можно было сделать одинаковой и для АЦП и для I2S. Так что думаю посадить на этот McASP 16 MISO от 16-ти АЦП не должно быть проблемой. И обслуживать их все можно одним каналом EDMA3.

У меня был OMAP-L137, в нём был ещё второй McASP1 с 12-ю сериализаторами, но я не уверен, что он есть и в C6745. Если есть - то ещё 12 MISO обслужить можно.  :wink2:

 

PS: Как раз сейчас тот товарищ активно ковыряет C6745 и наверняка можно с ним проконсультироваться и получить актуальную помощь по горячим следам по всем вопросам о C6745.

 

PPS: Кроме того сейчас ещё вспомнил семейство LPC43xx, которое в своём составе имеет такую замечательную периферию как SGPIO, которая тоже суть - программно гибко настраиваемый последовательный интерфейс, на базе которого можно сгородить многие последовательные интерфейсы. SGPIO тоже имеет много каналов. Да вроде в LPC-ках SGPIO есть не только в LPC43xx, но и в некоторых других семействах - не смотрел.

 

Это всё конечно только если не зацикливаться на STM32 и кало-кубо-программировании...  :yes3:

Share this post


Link to post
Share on other sites
On 4/14/2019 at 12:33 AM, AVI-crak said:

После sdram памяти, qspi, кварцев, и полного выхлопа на экран - остаётся очень мало ног. Причём занятые ноги почти всегда имеют один вариант. Если sdram 32 бита - то остаток вообще мал.  Для TFT есть альтернатива где нет дополнительных альт функций.

Всё что осталось прекрасно помещается на краевые полигоны для пайки. Так можно сэкономить на площади 4-х слойки. А если сразу брать чип и память в бга корпусе - то в принципе можно будет торговать ПП, с неплохим выхлопом. Линии на периферию не требовательны к скорости, и им достаточно двухслойной платы. А если это будет макетка - то ещё дешевле. 

Графика у меня чисто офисная, никакой мультимедиа. )) В связи с этим TFT 5-6-5 и ОЗУ 16 бит. Серийность малая. Пока с бга не хочу связываться. Оставшаяся периферия SPI и 3/4 UARTа, ну и там по мелочи. То есть действительно немного низкоскоростных линий.
Что Вы понимаете под "помещается на краевые полигоны"? Типа этот модуль кладёшь на конечную плату и просто припаиваешь? Я вроде бы планировал модуль делать с двухсторонней пайкой. 
Ещё один вопрос. Можно ли делать физику Eth на модуле, а потом тянуть 4 линии к выходному разъёму на основную плату. Или всёже физику надо ставить рядом с разъёмом? Я так понимаю и в том и в другом случае требуются кратчайшие линии. Какие-то рекомендации есть?
Просто мне как то надо этот разъём подальше поставить. Пока даже не знаю как это сделать. 

Share this post


Link to post
Share on other sites
12 hours ago, SapegoAL said:

Что Вы понимаете под "помещается на краевые полигоны"? Типа этот модуль кладёшь на конечную плату и просто припаиваешь?

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

Физику можно и нужно ставить на модуль, если она конечно вообще нужна. Просто для использования проводного подключения - ваш девайс должен иметь увесистые габариты, или иметь крепление к более массивному девайсу/железу. Иначе хвост начнёт вилять собакой. Выводить линии физики до трансформатора через краевой разъём можно, там вообще длинна ничем не ограничена. Вот только до трансформатора должно идти 4 линии - две сигнальных, и две питания - с подключением на фильтрующую керамику возле физики. Без объединения линий питания на трансе - то-есть он должен иметь раздельные обмотки. Это дело нужно отдельно искать, у них там беда с контактами.

И ещё насчёт физики - имеет смысл поиграться на готовой отладке. Там алгоритм обработки протокола достаточно ощутимо жрёт процессорное время. В случае хорошей нагрузки - почти только этим и занимается. Если нет жёстких требований к внешним интерфейсам связи, то лучше использовать esp8266/esp32 - пусть отдельно потеет. 

Насчёт бга - эти чипы дешевле, и занимают меньшую площадь. У вас не получится сделать красиво в домашних условиях двухслойную плату для lqfp чипа - там ноги разбросаны в режиме пьяного индуса. То-есть переходные отверстия будут, и их будет много. К тому-же для двухслойки все быстрые линии должны иметь барьер из линии земли или питания. Земля при этом приобретает вид сетки - горизонт на одной стороне и вертикаль на обратной, с огромным количеством контактов пересечения. Площадь ПП при этом растёт в квадратичной последовательности. Сделать можно - но это адский труд, ну его нафиг. 4 слоя разводятся в режиме обезьяны, и всегда в рабочем состоянии.

И ещё насчёт s25fl128/256s - эти чипы реально быстрее винборда, да и всего остального тоже. Дело в том что тактовая частота - это только внешняя реклама серии. Собака зарыта в таймингах доступа. Они там ощутимо меньше всего что я раньше видел. В режиме работы Memory-mapped - arm чип может напрямую обращаться к внешней памяти, без программных прослоек. По любым доступным адресам - с максимальной скоростью в последовательном чтении данных. А вот когда адрес новый - arm ядро ждёт ответа в режиме стоп. Буквально останавливается. То-есть в случае с дешевой внешней qsp флешкой - от мегагерцев процессора мало чего остаётся.

 

Share this post


Link to post
Share on other sites

Спасибо большое за ответ. Я делаю новую версию уже существующего прибора. Физику буду ставить ту, что уже была. А именно DP83848C. У меня Eth работает просто убойно. Учитывая, что 4 сессии. В одном месте используется 3 клиента с независимой выкачкой архивов. И всё работает крайне устойчиво. Экспериментировать не хочу. Реализованы http , tcp/modbus, udp/modbus сервера. Но реально вкалывает конечно tcp/modbus. Хочу в новой версии реализовать opc/ua сервер на приборе. С трансом - понял. Спасибо.
Насчёт бга. Я планирую 4-ёх слойку. При этом хотел всё-таки оставить lqfp. Просто паяться будет вручную. Для бга, как я понимаю, надо станцию закупать либо контрактную сборку организовывать. Но на контракт надо выходить с серийностью под сотню. Что по комплектации накладно. На счёт 2-ух стороннего монтажа, я с Вами согласен. Такой опыт у меня уже был. Но в целом, работать можно, когда уже всё отлажено. Тем не менее, я осмыслю эти варианты.
По QSPI высокой скорости не надо будет.
Похоже ещё один узкий момент вылазит. Я планировал 3 исполнения: 4.3", 7" и 10". Рассматривал дисплеи - куча разных цокалёвок у шлейфов. Короче пока в задумчивости. Пока решил ставить 2 разъёма.
Самое хреновое, что на сертификацию как минимум 10 и 4 придётся выносить. То есть оба делать придётся.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now