МК + USB: схема
Время: ~120 мин
Цели урока
- построить иерархическую схему из двух листов с портами между ними
- рассчитать нагрузочные конденсаторы кварца по CL из даташита
- понять, как работает автосброс через DTR, и посчитать длительность импульса
- подключить питание, развязку и ISP по рекомендациям AVR042
Компоненты выбраны. Теперь собираем их в схему и считаем три вещи, которые нельзя взять «как у всех» без понимания: конденсаторы кварца, цепь автосброса и развязку.
Шаг 1. Структура проекта: два листа и верхний лист
Заголовок раздела «Шаг 1. Структура проекта: два листа и верхний лист»Создай проект UnoMini.PrjPcb с тремя листами:
Top.SchDoc— верхний лист: только символы листов и связи между ними;USB_Power.SchDoc— разъём, предохранитель, защита, CH340C;MCU.SchDoc— микроконтроллер и всё вокруг него.
На верхнем листе: , затем в панели Properties символа добавь входы-выходы листа (Sheet Entries) кнопкой Add. Если сначала нарисован символ, лист можно создать из него: правый клик по символу → Sheet Symbol Actions » Create Sheet From Sheet Symbol. На самих листах сигналы выводятся портами: . Имя порта должно совпадать с именем входа-выхода на символе.
Как Altium связывает цепи между листами, задаёт параметр Net Identifier Scope в , вкладка Options. Для иерархии из листа-родителя и листов-детей подходит Automatic или Hierarchical (урок 9.8).
Шаг 2. Лист «USB и питание»
Заголовок раздела «Шаг 2. Лист «USB и питание»»Что важно на этом листе:
- Дублированные контакты USB-C соединяй на схеме: A6 с B6 (D+), A7 с B7 (D−), все четыре VBUS вместе, все четыре GND вместе. Контакты SBU (A8, B8) для USB 2.0 не используются.
- CC1 и CC2 — по своему резистору 5,1 кОм на землю.
- USBLC6-2SC6 включается «насквозь»: линия D+ заходит на вывод 1 и выходит с вывода 6 (оба — IO1), D− — на 3 и 4 (IO2). Вывод 5 — к VBUS (после или до предохранителя — смотри рекомендации даташита и не забудь, что так защита работает и для шины питания), вывод 2 — на землю.
- CH340C в режиме 5 В: VCC (16) на +5V с конденсатором 100 нФ, V3 (4) — на отдельный конденсатор 100 нФ к земле. NC (7) не подключать.
- Дифференциальная пара. Назови цепи по шаблону, например
USB_D_PиUSB_D_N, объяви суффиксы_P/_Nв настройках проекта (вкладка Options) и поставь на цепи директиву дифференциальной пары: . Тогда пара сама попадёт на плату как пара (урок 9.5).
Шаг 3. Лист «Микроконтроллер»
Заголовок раздела «Шаг 3. Лист «Микроконтроллер»»Развязка
Заголовок раздела «Развязка»AVR042 требует, чтобы каждая пара выводов питания имела свой конденсатор. У ATmega328P-AU три вывода питания: VCC 4 и 6, AVCC 18. Значит три конденсатора по 100 нФ (C5–C7), каждый у своего вывода, плюс общий 10 мкФ (C8) на шине питания. AREF (20) — через 100 нФ на землю: так опорное напряжение АЦП меньше шумит.
Кварц и нагрузочные конденсаторы
Заголовок раздела «Кварц и нагрузочные конденсаторы»Кварц рассчитан на определённую нагрузочную ёмкость CL — ёмкость, которую «видит» резонатор. Она указана в даташите кварца, например 12, 18 или 20 пФ. Два конденсатора C9 и C10 соединены через землю последовательно, и к ним добавляется паразитная ёмкость Cпар — выводов микросхемы и дорожек:
CL = C9·C10 / (C9 + C10) + Cпар
При C9 = C10 = C получается C = 2·(CL − Cпар). Паразитную ёмкость обычно оценивают в несколько пикофарад (руководства по генераторам, например ST AN2867).
| CL кварца | Cпар (оценка) | C9 = C10 | Стандартный номинал |
|---|---|---|---|
| 18 пФ | 5 пФ | 2·(18 − 5) = 26 пФ | 27 пФ |
| 20 пФ | 5 пФ | 30 пФ | 30 или 33 пФ |
| 12 пФ | 4 пФ | 16 пФ | 15 или 18 пФ |
AVR042 для обычных кварцев от 400 кГц называет диапазон 22–33 пФ. В платах Arduino стоят 22 пФ. Наш расчёт даёт то же по порядку величины, но точный номинал — по CL твоего кварца. Диэлектрик — только C0G (NP0): у него ёмкость почти не меняется от температуры и напряжения (урок 2.2).
Сброс и автосброс
Заголовок раздела «Сброс и автосброс»Цепь сброса (AVR042):
- R3 = 10 кОм подтягивает RESET к +5V. Не меньше 10 кОм, иначе не будет работать отладка через debugWIRE.
- VD1 — диод от RESET к VCC. Внутренней защиты на этом выводе у ATmega328P нет, и диод ограничивает выбросы выше питания.
- SB1 — кнопка сброса на землю.
- Конденсатор от RESET на землю не ставим: AVR042 запрещает его при использовании debugWIRE.
Автосброс. Чтобы Arduino IDE могла загрузить прошивку без нажатия кнопки, линия DTR# преобразователя подключена к RESET через C4 = 100 нФ. Когда программа загрузки открывает порт, DTR# падает с 5 В до 0, и этот скачок через конденсатор тянет RESET вниз. Потом C4 заряжается через R3, и RESET возвращается к +5V. Длительность импульса — порядка постоянной времени:
τ = R3 · C4 = 10 кОм · 100 нФ = 1 мс —
этого достаточно для сброса, и загрузчик успевает поймать начало передачи прошивки. Когда DTR# возвращается в 5 В, через C4 на RESET приходит положительный выброс выше VCC — его и срезает VD1.
UART и ISP
Заголовок раздела «UART и ISP»- TXD CH340C (2) → RXD микроконтроллера (30), RXD CH340C (3) ← TXD микроконтроллера (31). Линии перекрещиваются. Часто между ними ставят последовательные резисторы около 1 кОм: они ограничивают ток, если оба выхода окажутся включены навстречу (например, когда к выводам D0/D1 что-то подключено снаружи).
- ISP 2×3 — стандартная распиновка Atmel: 1 — MISO, 2 — VCC, 3 — SCK, 4 — MOSI, 5 — RESET, 6 — GND. Ошибка в ней — классика, сверь с документацией программатора.
- HL2 на PB5 (D13) через 1 кОм. PB5 — это ещё и SCK: во время прошивки по ISP светодиод мигает, и это нормально.
AVCC (18) подключён к +5V и развязан своим конденсатором. Если в проекте важна точность АЦП, даташит советует питать AVCC через фильтр нижних частот (например, дроссель или резистор с конденсатором). Для учебной платы достаточно отдельного конденсатора рядом с выводом.
Шаг 4. Проверка схемы
Заголовок раздела «Шаг 4. Проверка схемы»Скомпилируй проект () и разбери все сообщения в панели Messages. Потом пройди чек-лист.
public/screenshots/m11/l05-mcu-sheet.pngЧек-лист ревью схемы 11.2:
- Выводы ATmega328P совпадают с таблицей TQFP-32: VCC 4, 6; GND 3, 5, 21; AVCC 18; AREF 20; XTAL 7, 8; RESET 29; RXD 30; TXD 31.
- AVCC подключён к питанию.
- TXD ↔ RXD перекрещены.
- У CH340C: V3 — на конденсатор (режим 5 В), NC свободен.
- Оба CC — по своему резистору 5,1 кОм.
- D+/D− через USBLC6 и имеют директиву дифференциальной пары.
- C9, C10 — C0G, номинал по CL кварца.
- R3 ≥ 10 кОм, конденсатора RESET → GND нет.
- Распиновка ISP по стандарту.
- Порты листов и входы-выходы символов называются одинаково, Validate без ошибок.
🧯 Типичные ошибки
Компьютер видит плату, но прошивка не загружается: avrdude не может синхронизироваться
Почему Автосброс не работает (нет C4, или DTR перепутан с RTS), либо TXD и RXD соединены не накрест.
Как исправить Проверь цепь DTR# → C4 → RESET и перекрёст UART. Временно можно нажимать кнопку сброса в момент начала загрузки.
Кварц не запускается или частота заметно «уехала»
Почему Номинал нагрузочных конденсаторов взят наугад, или стоит диэлектрик X7R/Y5V.
Как исправить Считай C = 2·(CL − Cпар) по даташиту кварца и ставь C0G.
Цепи между листами не соединились
Почему Имя порта на листе не совпадает с именем входа-выхода на символе листа, или неподходящая область видимости имён (Net Identifier Scope).
Как исправить Проверь имена буква в букву и параметр Net Identifier Scope в настройках проекта.
C = 2·(CL − Cпар) = 2·(18 − 5) = 26 пФ → ближайший стандартный номинал 27 пФ.
τ = RC = 10⁴ · 10⁻⁷ = 10⁻³ с = 1 мс.
У ATmega328P на RESET нет внутреннего диода к VCC, AVR042 рекомендует внешний.
debugWIRE использует вывод RESET как линию связи, сильная подтяжка ей мешает.
По даташиту WCH: при 5 В — конденсатор на V3, при 3,3 В — V3 соединяют с VCC.
Практическое задание~120 мин
- Нарисуй иерархический проект из трёх листов по рис. 11.6–11.8.
- Посчитай C9 и C10 для выбранного тобой кварца и впиши расчёт в комментарий на схеме (Place » Text Frame или примечание).
- Выведи все свободные порты ATmega328P на гребёнки XP1 и XP2 так же, как на Arduino Nano: D0–D13, A0–A7, питание.
- Пройди чек-лист ревью и добейся компиляции без ошибок.