• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос esp32 и atmegs328 общение по uart

unreg

Member
Доброго! Необходимо коммутировать esp32 и atmega328 используя uart. Проблема в том, что esp 3.3v, а atmega 5v. Нужно ли согласовывать уровни и подойдет ли для этого SN74HCT245 datasheet ? Может посоветуете другой конвертер если на то есть причины... Спасибо!
 

nikolz

Well-known member
Доброго! Необходимо коммутировать esp32 и atmega328 используя uart. Проблема в том, что esp 3.3v, а atmega 5v. Нужно ли согласовывать уровни и подойдет ли для этого SN74HCT245 datasheet ? Может посоветуете другой конвертер если на то есть причины... Спасибо!
посмотрите это
https://esp8266.ru/forum/threads/datchik-i-naprjazhenie.4345/page-2#post-61516
тоже самое, только вид сбоку.
 

unreg

Member
Спасибо! Тут еще вопрос в контексте, даже не знаю создавать ли новую тему или лучше админы поменяют заголовок, например на "Коммутация ESP32 и Atmega328"?
Может ну его нафиг этот uart? Может стоит попробовать SPI? Необходимо передавать от atmega в esp порядка 2Kb данных и чем быстрее тем лучше. У esp один SPI уже будет занят под SD, а по второму пишут, что не рекомендуется использовать так как он работает с внутренней флэш. Но если у меня уже прикручена внешняя флэш, то внутренняя мне как бы и не нужна... Или есть какие-то подводные камни? Есть вариант с использованием одного SPI и для SD и для atmega, IO SD довольно продолжительная, а данные от atmega нужно передавать так быстро на сколько это возможно (мгновенно при изменении каком-то изменении на периферии) (может даже распоточить на второй процессор).
 

nikolz

Well-known member
Спасибо! Тут еще вопрос в контексте, даже не знаю создавать ли новую тему или лучше админы поменяют заголовок, например на "Коммутация ESP32 и Atmega328"?
Может ну его нафиг этот uart? Может стоит попробовать SPI? Необходимо передавать от atmega в esp порядка 2Kb данных и чем быстрее тем лучше. У esp один SPI уже будет занят под SD, а по второму пишут, что не рекомендуется использовать так как он работает с внутренней флэш. Но если у меня уже прикручена внешняя флэш, то внутренняя мне как бы и не нужна... Или есть какие-то подводные камни? Есть вариант с использованием одного SPI и для SD и для atmega, IO SD довольно продолжительная, а данные от atmega нужно передавать так быстро на сколько это возможно (мгновенно при изменении каком-то изменении на периферии) (может даже распоточить на второй процессор).
внутренняя нужна в ней программа
возможно вам SD не нужна. какой в ней смысл на ESP32?
и зачем Вам Atmrga328 на ESP32
у atmega частота процессора 16 а у ESP32 240
это как черепаху прицепить к автомашине .
 

unreg

Member
Внешняя мне нужна чтобы хранить аудио сэмплы. Если в упрощенном варианте, можно представить устройство- электронное пианино. По задумке атмега выполняет роль контроллера клавиатуры (постоянный опрос входов и хранение текущего отпечатка состояния кнопок), а есп проигрывает соответствующий сэмпл по этому отпечатку. Соответственно время реакции от нажатия клавиши до воспроизведения должно быть минимальным и, соответственно, нажатие другой клавиши приводит либо к прерыванию текущего сэмпла, либо к миксу. Пытаюсь найти наилучший вариант. Можно обойтись вообще без атмеги и опрос повесить на есп, но чего-то решил разделить эти две задачи по разным процессорам... незнаю, может через чур заморачиваюсь? Все кажется что быстродействия не хватит. Кнопок на клавиатуре много и будут задействованы расширители портов I2C.
 

nikolz

Well-known member
Внешняя мне нужна чтобы хранить аудио сэмплы. Если в упрощенном варианте, можно представить устройство- электронное пианино. По задумке атмега выполняет роль контроллера клавиатуры (постоянный опрос входов и хранение текущего отпечатка состояния кнопок), а есп проигрывает соответствующий сэмпл по этому отпечатку. Соответственно время реакции от нажатия клавиши до воспроизведения должно быть минимальным и, соответственно, нажатие другой клавиши приводит либо к прерыванию текущего сэмпла, либо к миксу. Пытаюсь найти наилучший вариант. Можно обойтись вообще без атмеги и опрос повесить на есп, но чего-то решил разделить эти две задачи по разным процессорам... незнаю, может через чур заморачиваюсь? Все кажется что быстродействия не хватит. Кнопок на клавиатуре много и будут задействованы расширители портов I2C.
такую задачу я не решал.
но делал говорящее устройство для незрячих на ESP8266
При этом сэмплы для синтеза речи хранятся во внутренней флеш.
----------------
В вашем случая я бы взял ESP32.
Внутренней SRAM и флеш достаточно много для хранения всего что нужно и с большей скоростью, чем на SD
Кроме того, можно догружать и обновлять сэмплы.
Попробуйте сначала посчитать сколько и чего Вам нужно.
Возможно хватит одной лишь ESP32.
 

nikolz

Well-known member
вот это прям очень интересно! Сэмплы - это готовые фразы или прямо синтез а-ля текст в звук?
пока это словарь фраз и слов, который грузится под конкретное назначение устройства
синтезатор из текста сходу не осилил и отложил на будущее.
 

sharikov

Active member
Внешняя мне нужна чтобы хранить аудио сэмплы. Если в упрощенном варианте, можно представить устройство- электронное пианино.
Память в виде SD карты неудачный выбор. У вас получаться конкурирующие обращения при одновременном воспроизведении разных сэмплов. SD карта в таком режиме будет тормозить.
Лучше использовать SPI NOR flash. Посчитайте неободохимый объем памяти для сэмплов и либо возмите модуль с нужным объемом памяти либо припаяйте дополнительную флэшку снаружи. Сейчас и гигабитные spi nor flash доуступны а 512 мегабит - так есть у всех производителей.
Таблицу сэмплов делаете без ФС потому что ФС - дополнительный тормоз.
Если вы используете встроенный DAC нет смысла делать сэмплы 16-битными - сократится объем памяти.

Можно обойтись вообще без атмеги и опрос повесить на есп, но чего-то решил разделить эти две задачи по разным процессорам... незнаю, может через чур заморачиваюсь? Все кажется что быстродействия не хватит. Кнопок на клавиатуре много и будут задействованы расширители портов I2C.
У вас внутри ESP32 есть два процессорных ядра на 240MHz и ULP процессор на 8MHz причем ULP это как пол-атмеги. Атмега там нафиг не нужна.
Одно ядро пусть занимается только генерацией звука.
Второе взаимодействует с ULP и командует что играть генератору.
ULP занимается опросом клавиатуры. Расширители I2C не используйте - они тормоз. Достаточно 595+165 регистров которые будет писать/читать ULP.
 

unreg

Member
@sharikov, спасибо! обязательно почитаю про nor flash. Но вот не понял как быть с кнопками. Их же овер 64, они сенсорные и все настроены как обычные тактовые... на счет i2c лействительно были сомнения по быстродействию, тем более что у меня получается еще и каскад i2c включая хаб(!)
 

nikolz

Well-known member
@sharikov, спасибо! обязательно почитаю про nor flash. Но вот не понял как быть с кнопками. Их же овер 64, они сенсорные и все настроены как обычные тактовые... на счет i2c лействительно были сомнения по быстродействию, тем более что у меня получается еще и каскад i2c включая хаб(!)
клава от компа на 102 клавиши устроит?
дайте ссылку на клавиатуру,которую хотите.
 

unreg

Member
это моя собственная клавиатура из сенсорных кнопок на ttp223n-ba6
 

unreg

Member
предполагал i2c. по 16 кнопок на расширитель типа pcf8575, таких групп 9 шт. Соответственно у меня вылезает еще и i2c hub
 

unreg

Member
до кучи, чтобы поднять быстродействие, думал использовать int от pcf8575 чтобы более адресно обращаться к кнопкам
 

unreg

Member
вобщем-то я сейчас и думаю над модулем клавиатуры и его интерфейсом))
 

sharikov

Active member
предполагал i2c. по 16 кнопок на расширитель типа pcf8575, таких групп 9 шт. Соответственно у меня вылезает еще и i2c hub
С хабом сон разума.
NXP производит I2C GPIO расширители на 4, 8, 16, 24 и 40 входов.
Берите на 40 gpio с выходом int (PCA9505/PCA9506 и PCA9698). 9698 поддерживают частоту I2C 1MHz и адресов у них овердофига.
 

sharikov

Active member
может и сон ) от i2c не уйти стало быть?
Запросто можно уйти если захотеть. Все зависит от ваших предпочтений.
Вам надо 9*16 = 144 кнопки.
Вешаем 18 регистров 74HC165 цепочкой на интерфейс SPI : дешево и сердито. Опрашивать постоянно, изменения выявлять программно.
Для удобства SPI можно настроить в режим DIO и сделать 2 ветки по 9 регистров.
 

unreg

Member
круть! вот только разберусь с nor flash. ищу и не нахожу дельного ресурса по этому вопросу что это и как готовить. Я правильно понимаю, что spi nor flash это не тот spi который я сейчас использую для внешней флэшки? сама флэшка тоже особенная какая-то? куда что паять и как к этому обращаться и есть ли поддержка arduino ide? Можно ли задействовать для этого ulp и есть ли поддержка arduino ide? Вот это минимум, а найти не могу. Если не сложно, поделитесь опытом/ссылкой
 
Сверху Снизу