Cp2102 + atmega328

Тема в разделе "Микроконтроллеры AVR", создана пользователем Navernjaka, 20 фев 2021.

Метки:
  1. Navernjaka

    Navernjaka Нерд

    Всем привет! Собрал плату, на которой совместил Atmega328P и CP2102. Схема прилагается. Через ICSP заливаю загрузчик от ардуино. Эта часть работает. Но загрузить после этого скетч через CP2102 не получается. Выдается ошибка stk500_getsync() attempt 1 of 10: not in sync: resp=0x60. Подскажите пожалуйста в чем может быть проблема?
     

    Вложения:

  2. parovoZZ

    parovoZZ Гуру

    Надо что-то залить в МК, что способно общаться с цомпкутером через COM порт. Если связь не пойдёт, значит причина в этой цепи. Но для начала проверить сам CP2102 - замкнуть TX и RX и отправить с цомпкутера в COM порт сообщение. Если сообщение вернётся, то искать дальше.
     
  3. Navernjaka

    Navernjaka Нерд

    Хорошее предложение, попробую погонять сообщения. По схемотехнике не должно быть проблем при такой схеме?
     
  4. AlexU

    AlexU Гуру

    Чтобы загрузчик, который Вы залили через IСSP-программатор в ATmega328, начал свою работу, его надо каким-то образом запустить.
    В платах Arduino для этого через фьюзы устанавливается запуск контроллера с адреса загрузчика и делается аппаратный сброс контроллера -- нога Reset кратковременно прижимается к "земле".
    Что Вы сделали для того, чтобы стартовал загрузчик?
     
  5. Airbus

    Airbus Радиохулиган Модератор

    В чём угодно.В кабеле.В CP2102.Неправильно выбрана плата или порт.Какой Бутлоадер и как заливали?Какие фьюзы стоят?По схеме все хорошо не вижу косяков. Если прошиваете то в момент прошивки не используйте ноги RX и TX. В дальнейшем их можно использовать.
    А что надо дополнительно делать?
     
    Последнее редактирование: 20 фев 2021
  6. AlexU

    AlexU Гуру

    Не знаю, что сделал ТС, но в целом:
    1. через фьюзы задать адрес секции загрузчика;
    2. через фьюзы "сказать" контроллеру грузиться с адреса секции загрузчика;
    3. записать загрузчик, начиная с адреса секции загрузчика, при этом загрузчик должен быть скомпилирован с учётом этого адреса;
    4. в случае ТС надо убедиться, что драйвер CP2102 прижимает ногу DTR к "земле"; имеется в виду не только сама микросхема на плате, но и драйвер операционной системы (даёт он команду микре "прижимать" ногу DTR к "земле" или нет при открытии COM-порта в системе);
    5. убедиться в выборе правильной скорости обмена -- зависит от загрузчика, прошитого в ATmeg'у;
    6. что там ещё.... честно говоря, был напряжённый рабочий день, голова уже не совсем соображает....
     
  7. Airbus

    Airbus Радиохулиган Модератор

    1,2,3 Делается при прошивке Лодыря причем если все делается через Ардуино IDE и дуину как программатор то все пишется в авте. 4 если все сделать согласно даташиту то все будет работать.По схеме все хорошо. Или чип битый. Можно вообще без нее если вовремя жать кнопку Reset как на Про мини.
     
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Пока не увидите в диспетчере устройств Ком - порт “CP2102 USB to UART Bridge Controller” - дальше и не задумывайтесь. Микра его делает сама. Винда должна потребовать драйвера для этого устройства. Пин 9 (#Reset) резистором 4к7 притяните к плюсу. На пине 6 (VDD) проверьте наличие +3,3 вольт.
     
    Последнее редактирование: 21 фев 2021
    Airbus нравится это.
  9. Airbus

    Airbus Радиохулиган Модератор

    Я все свои ардуино совместимые устройства делаю без конвертеров. Прошиваю через внешний, подключаемый. Есть на СР2102 есть на СН340 работают одинаково. Как уже написал здесь важно вовремя нажать кнопку Reset.
     
  10. Navernjaka

    Navernjaka Нерд

    CP2102 видится в диспетчере устройств. Закоротил ноги RX, TX (СР2102). При отправки сообщения в ком порт, сообщение возвращается. То есть, в режиме передачи СР2102 работает. Потом залил скетч в мегу328, который отправляет в ком порт время с определенной периодичностью. Данные в ком порт о времени приходят. А вот залить скетч из arduino IDE не получается. Ошибка при этом выдается следующая.
     
  11. Navernjaka

    Navernjaka Нерд

  12. Navernjaka

    Navernjaka Нерд

    Замерил напряжение на DTR пине - 3,3В при подключении платы к юсб. В момент попытки загрузить скетч, напряжение становится 0В и так и остается подтянуто к земле постоянно. Если правильно понял, то из-за этого микроконтроллер не стартует, т.к. подтяжка к земле должна быть кратковременной. Нашел схему готового модуля преобразователя USB-CP2102.
     
  13. Navernjaka

    Navernjaka Нерд

    В этом модуле /RESET и /SUSPEND имеют подтяжки к питанию и земле.
     

    Вложения:

  14. Navernjaka

    Navernjaka Нерд

    Может ли из-за отсутствия этих резисторов не работать прозрачная передача сигнала от USB к UART?
     
  15. Navernjaka

    Navernjaka Нерд

    Фьюзы никак не настраивал, потому - что для программирования использую только Arduino IDE. И считал, что при прошивке в пустую микросхему atmega328 бутлоадера из Arduino IDE фьюзы автоматом выставляются. Если это не так, подскажите пожалуйста как настроить фьюзы.
     
  16. Feofan

    Feofan Нерд

    Проверьте цепочку: CP2102 pin 28 (DTR)->C10->Atmega328p pin 29 (RES) + наличие/исправность R2. Изначально на RES должен быть уровень Vcc. При появлении нуля на DTR, на RES отрицательный импульс.
     
  17. Navernjaka

    Navernjaka Нерд

    При подключении платы к USB на DTR 3.3V, а на ресете 2,2В (между конденсатором и резистором). При этом на другой ноге резистора 5В.
    2,2В это как-то странно.
     
  18. Feofan

    Feofan Нерд

    Выпаять C10 и R2, проверить номинал. Смотреть уровни DTR и RES без них. Запаять R2 и замерить на RES.
    Помыть плату. Прозвонить дорожки. Схема-то... на козью ногу.
     
  19. Navernjaka

    Navernjaka Нерд

    2.2.В появились из-за подключенного программатора usbasp к ICSP. После того как его отключил, на ресете стало 5В. На DTR при подключении платы к юсб 3.3В. И все равно не получилось загрузить скетч. Судя по мультиметру, когда начинается загрузка скетча напряжение на DTR просаживается в ноль. Но на ресете просаживается с 4,98 до 4,93. То есть практически не проседает. Хотя мультик может не отлавливает короткую просадку. Честно говоря, не совсем понятно как работает цепь с конденсатором. Если бы конденсатор в исходном состоянии был полностью разряжен, то при замыкании DTR на землю, конденсатор был бы эквивалентен короткому замыканию и соответственно ресет просаживался на короткое время на землю и потом конденсатор начал бы заряжаться. Но конденсатор находится под напряжением 5-3,3=1,7В. То есть в идеальном случае DTR сможет просадить конденсатор до 1.7В. И совсем не факт, что атмега воспримет такую просадку как сброс. Возможно проблема с уровнями питания?
     
  20. Feofan

    Feofan Нерд

    По поводу 3.3V на DTR - у CP2102 встроенный регулятор на 3.3v. Мультиметром импульс не отловить - осциллограф или лог.анализатор.
    Переделывал два адаптера на CP2102 с выводом RESET, но без DTR (резал дорожку и паял проводом). Никаких проблем с прошивкой ProMini 5V не возникло.
    P.S.
    Переделанный 2102 адаптер нашел. Если найду распаянную ProMini 5V, то проверю.

    Update
    Проверил на ProMini 5V. DTR отрабатывает, прошивается нормально.
     
    Последнее редактирование: 24 фев 2021