Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

SPI для flash для других устройств

Тема в разделе "Железные вопросы по esp8266", создана пользователем Шаповалов Игорь, 5 авг 2015.

Метки:
  1. Шаповалов Игорь

    Шаповалов Игорь Новичок

    Сообщения:
    32
    Симпатии:
    1
    Можно ли использовать SPI на котором весит flash память для других устройств одновременно? можно ли использовать GPIO9 GPIO10(они тоже идут на флешку) Имеится модуль esp12e и на нём распаяны SPI и GPIO9 GPIO10 вот не знаю можно ли использовать для своих нужд или нет или есть ограничения какие то?
     
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Практически нет, т.к. это достаточно сложно и нет соответствующей программной и аппаратной поддержки.
    Flash всегда читается, т.к. программа из неё 'кэшируется' для CPU. Необходимо распределить процесс 'кеширования' и обращений по пинам QSPI, что не всегда возможно.
    По тому модуль ESP-12E с выводом шины flash никчемная затея, кроме случаев полного перевода работы шины на SD карту с загрузкой программ в IRAM с неё или включения дополнительной Flash как банка данных. Но вариант с доп. Flash тоже бредовый - замена единственной flash на модуле на 16 Мегабайтную хватает для всего и является самым прямым решением, не вызывающим дополнительного потребления из-за увеличения нагрузки на шину QSPI работающую на 80 MHz.
    Подключение SD карты возможно и по другой шине HSPI.
    Как итог - выводы сделанные на ESP-12E кроме доп. глюков и нагрузки на шину ведущую к увеличению потребления модулем ничего не дают, а разрабатывать свой модуль с чипом esp8266ex вы не будете. :)
    Обратится к QSPI возможно только из кода находящегося в IRAM c одновременным отключением аппарата 'кеширования' Flash ( т.е. код и данные из Flash в этот момент для CPU недоступны). Другие варианты не пойдут.
    Модуль ESP-12E требуется только для специальных тестов, а для простого пользователя выбор его неверен. ESP-12 без E - самый верный вариант для простого пользователя, но в них не хватает вывода питания RTC. Лучше бы вывели его, а не шину Flash. Но пользователь ныне безграмотный и выбирает вариант где больше фиктивных галочек, чем и пользуются китайцы :)
     
    Последнее редактирование: 5 авг 2015
    Шаповалов Игорь нравится это.
  3. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    Выводы флэшки потребляют 20мкА если не будет включен её cs, откуда будут глюки? нагрузка же минимальная. Нормальный это вариант для доп. флэш банка памяти, имхо.
     
  4. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    551
    Симпатии:
    51
    флэшка непрерывно работает на частоте 80Mhz
    Примем емкость вывода с разводкой 7pf. Считаем динамическое потребление:
    1/(2*pi*80e+06*7e-12) = 284.205
    задействовано 5 выводов (4 данных + клок)
    284/5 = 56,8
    I=3.3/56.8 = 58мА
     
  5. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    Процессор обслуживает на шине один слэйв, который например подключён к cs0, при этом слэйвы на cs1(cs2) потребляют примерно 20мкА. Выставлять все сигналы cs одновременно нельзя, так? А без активного cs флэшка держит свои выводы в высокоимпедансном состоянии и не мешает обмену по шине. В чём проблема-то?
     
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    В емкости этих выводов и проводников к ним. Каждая дополнительная микросхема на CLK и шине данных увеличивает потребление. Смотрите пост выше и для точности измерьте тестером.
     
  7. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    Как только будет возможность, проверю. Но потребление 50 мА в высокоимпедансном состоянии... как-бы это... очень сильно сомнительно.
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    А 80 МГц меандр с фронтами в сотни пикосекунд 3.3В тоже сомнительно? :)
    Емкость проводника + входного/выходного транзистора в микросхеме тоже сомнительно?
    Гораздо хуже ещё, когда просто ненагруженный на конце проводник и с него прет отражение сигнала...
     
  9. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    <-здесь на вашей картинке фронт примерно 10нс и это только на клоке, чем вы разглядываете пикосекунды я не могу представить... гигагерцовых осциллографов не имею, к сожалению. Учитывая скважность данных динамическое потребление должно быть намного меньше приведённого выше расчётного. Скажем в 5 мА для дополнительно подключенной флэшки я ещё поверю, но в 50 - извините, нет. Но тест конечно проведу когда будет возможность. И ещё, не подумайте что я придираюсь к расчётам, просто из практики, до 1ГГц платы с длиной дорожки менее 3см не создадут помех сигналам. Вот если флэшку вынести дальше, тогда конечно. (хочу себе платку сделать вместо китайской, поэтому и интересуюсь подробностями)
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    А читать умеете?
    Выше указано для чего делал чел расчет: непрерывно работает + 7 пФ на провод + все данные типа 0x55555555 или 0xAAAAAAA.
    Затем читаете, что подписано к осцилле:
    Далее смотрите фронт и рассчитываете его длину. (На осциллограмме фронт не приведен по причине, что измерение сделано не согласованными щупами, а просто воткнутым кое-как, да простым пассивным щупом имеющим емкость за 12 пФ)
    Или у вас цифровой сигнал CLK идет синусом? :) При 80 МГц у нас уровень нуля должен быть 6.25 нс и уровень “единицы” 6.25 нс. Для такого сигнала считаете, что достаточно иметь выходы с более 1 нс фронтами? -> выходы будут рассчитаны на сотни пикосекундные фронты. Измеряйте фронты и далее уже считайте по спектральной плотности, а не по синусу 80 МГц :) В итоге проводники у вас должны проводить без сильных затуханий хотя-бы 3-ю нечетную гармонику...
    Даташит W25Q128FV и подобных Flash:
    Input Capacitance CIN 6 pF
    Output Capacitance Cout 8 pF
     
    Последнее редактирование: 20 окт 2015
  11. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    551
    Симпатии:
    51
    Может и больше расчета получиться. Не учтено потребление дополнительного чипа.
    Если чип медленный скажем Fmax=10МГц например как микрочиповская spi ram подача 80МГц на вход будет равносильна подаче 1/2 питания. Вспоминаем как кмоп микросхемы себя ведут при входных уровнях между Vlo и Vhi.
     
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Espressif не дал характеристик выходов rise/fall time. Но повышение тока потребления при замкунтом выходе и выводе значения для КЗ я измерял: "Закорачивание I/O выхода вызывает увеличение тока на 50 мА: http://esp8266.ru/forum/attachments/esp-01-gpio15-out-gif.885/"
    У flash, т.к. они КМОП в даташите значится, что минимальный rise/fall time до 0.2 нс. Менее наверно заглючит - прошибет по внутренним емкостям, наверно надо резисторы на линиях... Но емкость входа flash всё равно большая и может и не надо...
    Но вот резонансный контур делать из проводника от чипа до чипа, как это сделано на многих макетках - явно не стоит :)
    Очень хороший контур на одну из первых гармоник 80 МГц c учетом емкости входа Flash :)
    ESP8266 при выводе ШИМ на ножку от встроенного аппаратного sigma-delta и наличии проводника к 3 см сам себе глушит прием WiFi :p Всё как пишите - сигналы то до 1 ГГц, но без терминаторов :) :)
    Т.е. в итоге от разводки QSPI на плате у вас будет ещё зависеть уровень минимального приема (соотношение сигнал/шум - важный критерий для WiFi).
    PS: Итого давно описано - на каждый пин ESP8266 сразу у него резистор последовательно и далее проводник за пределы экрана. Flash - одна и сразу к чипу, желательно вплотную, с длиной от пина до пина только малый SMD резистор на десятку Ом. Другой вариант - многослойка с экранными слоями и между ними проводники к Flash, чтобы вообще не вылезали на внешние слои. Откройте любой WiFi роутер и посмотрите - где сигналы более 50 MHz и малослока плата, то обязательно стоят резисторы последовательно на прводниках, чтобы глушить и резонанс, и пики тока от фронтов, и для согласования и ...
     
    Последнее редактирование: 20 окт 2015
  13. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    Неспортивные варианты не рассматриваем, память от 80МГц и выше.
     
  14. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    Это из серии один пишем - два в уме. Вы же не видите на осциллографе сигналов, а выводы делаете. Хотя всё выглядит логично, не спорю. Но все рассуждения о прохождении сигнала с частотой выше 1 ГГц напоминают религиозные споры ))) Надо смотреть конкретную топологию, конкретные чипы и курить даташиты.
     
  15. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    Это одна из причин, по которой и хочется свою плату )))

    Если оставить в наружном слое, то да. Но в нормальной топологии этого не будет.

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

    Та что на плате - будет одна, а вторую можно будет установить на топологии следующего уровня, там же надо предусматривать последовательные резисторы. Это на случай, когда потребление будет уже не критично и будет нужна дополнительная память. Кстати, я рассматриваю вариант минимизации размеров и цены, в результате оптимальная ёмкость получается 2Mbit. Что скажете - можно туда упихать разумный минимум функциональности или нет? (я читал, что вы говорили про 16 MBit, но в малом корпусе они слишком дорогие)

    Поделки нафиг-нафиг. От 4 до 8 слоёв.
     
  16. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    А на ESP8266 даташита нет. Всё что известно то снято руками и вывод один - сильное повышение потребления и подведенного шума к приемнику при 2-х flash или если разводка проводников шины QSPI сделана во вне :p
     
  17. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    А вы можете разделить причины этого повышения? Например загрузить прошивку без WiFi и проверить потребление только со второй флешкой? Сразу было бы понятно где мухи а где котлеты.
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Повышения чего и как?
    Пробовал ещё проще - с Winbond flash на 16 Mbytes и со стандартной GD на 512 kbytes - разница потребления до 10 mA, на GD в плюс. И скорость записи у GD почти в 10 раз меньше...
     
    Последнее редактирование: 21 окт 2015
  19. wbeam

    wbeam Новичок

    Сообщения:
    19
    Симпатии:
    1
    Причина повышения может быть как в увеличении ёмкости линий, так и в увеличению помех для WiFi, поэтому если включить чип без WiFi, то останется только повышение, обусловленное второй флешкой. Проведите такой тест, если вам не трудно.

    Более скоростная память при прочих равных условиях имеет выводы с меньшей ёмкостью, в этом случае вопросов не возникает.
     
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Трудно. Т.к. надо перепаивать flash на модуле для правильного сравнения. А это лениво. Один раз сравнил и больше не хочу. Другие сравнения делались с модулями, на которых перепаял flash, но не измерял до того, со старой. Показания на них примерно сходятся.
    Не только. У Winbond есть аппратная поддержка блочного "кэширования", которая используется в чипе ESP8266. Так-же у неё быстрее отклик при запросе. Например можно укоротить таймаут CS (SPI0_USER |= SPI_CS_SETUP; // +1 такт перед CS - стоит для GD flash) и т.д....
    Когда измерял производительность, а это уже было давно, то с Winbond на 16 мегабайт чип работает быстрее. Но тогда не уточнил причину.
    Существуют различия в командах: Set Burst with Wrap 0x77 влияющая на Word Read Quad I/O 0xE7, Octal Word Read Quad I/O 0xE3. У Octal Word Read Quad нет Dummy цикла. Этого нет в GD flash.
    По тому вот так просто взять и сравнить точно разницу потребления не представляется возможным. К примеру с одной flash проц успеет 100 циклов накрутить, с другой 10 до прерывания и типа.
    Да и для второй flash придется использовать второй CS, а пинов i/o у чипа и так мало.
     
    Последнее редактирование: 23 окт 2015

Поделиться этой страницей