• Система автоматизации с открытым исходным кодом на базе 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? Вот это минимум, а найти не могу. Если не сложно, поделитесь опытом/ссылкой
 
Сверху Снизу