Как и зачем читать даташиты, если микроконтроллеры – ваше хобби


Микроэлектроника – модное увлечение последних лет благодаря волшебному Arduino. Но вот беда: при должном интересе перерасти DigitalWrite() получается быстро, а что делать дальше – не совсем ясно. Разработчики Arduino приложили немало усилий для снижения порога вхождения в свою экосистему, но за ее пределами по-прежнему колышется темный лес суровой схемотехники, малодоступный любителю.

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

В этой статье я поделюсь опытом общения гуманитария с даташитами в хобби-целях. Текст предназначен для выросших из штанишек Arduino любителей, он предполагает некоторое представление о принципах работы микроконтроллеров.

Начну с традиционного

Мигаем светодиодом на Ардуино

И сразу код:

void setup() { DDRB |= (1<<5); } void loop() { PINB = (1<<5); for (volatile uint32_t k=0; k<100000; k++); }

«Что это? – Спросит искушенный читатель. – Зачем ты что-то пишешь во входной регистр PINB? Он же только для чтения!» Действительно, документация Arduino, как и большинство учебных статей в интернете, утверждает, что этот регистр read-only. Я и сам так думал, пока не перечитал даташит к Atmega328p, готовя это статью. А там:

Это относительно новый функционал, его не было на Atmega8, о нем не все знают или не упоминают из соображений обратной совместимости. Но вполне годный для демонстрации мысли, что даташиты стоит читать, чтобы использовать все возможности чипа, включая малоизвестные. И это не единственная причина.

Зачем еще читать даташиты

Обычно ардуинщики, наигравшись со светодиодами и AnalogWrite’ами, начинают подключать к плате всякие модули и чипы, для которых есть уже написанные библиотеки. Рано или поздно появляется библиотека, работающая не так, как надо. Тогда любитель начинает ее ковырять, чтобы починить, а там…

А там происходит что-то категорически непонятное, поэтому приходится отправляться в гугл, читать многочисленные тьюториалы, дергать по частям чей-то подходящий код и наконец добиваться своего. Это дает мощное ощущение свершения, но на самом деле процесс напоминает изобретение велосипеда путем реверс-инжиниринга мотоцикла. Причем понимания, как работает этот велосипед, не прибавляется. Знаю, поскольку сам этим занимался довольно долго.

Если бы я вместо этого увлекательного занятия потратил пару дней на изучение документации к Atmega328, я бы сэкономил огромное количество времени. В конце концов, это довольно простой микроконтроллер.

Таким образом, читать даташиты надо хотя бы для того, чтобы представлять себе, как вообще устроен микроконтроллер и что он умеет делать. И еще:

  • чтобы проверять и оптимизировать чужие библиотеки. Их часто пишут такие же любители, изобретающие велосипед; или же, напротив, авторы намеренно делают в них избыточную защиту от дурака. Пусть будет в три раза больше и медленнее, зато точно сработает;
  • чтобы иметь возможность использовать в проекте чипы, к которым никто не написал библиотеку;
  • чтобы облегчить себе задачу по миграции с одной линейки МК на другую;
  • чтобы наконец оптимизировать свой старый код, который никак не влезал в Ардуину;
  • чтобы научиться управлять любым чипом напрямую через его регистры, не заморачиваясь изучением устройства его библиотек, если таковые вообще есть.

Универсальный программатор CH341A — применение в работе

Подключение микросхем флэш-памяти 25хх серии с корпусным исполнением SOP8/SOP16 на программаторе осуществляется через соответствующие контактные площадки. Две таких площадки располагаются непосредственно на монтажной плате программатора CH341A рядом с ZIF-панелью.


Программатор универсальный CH431A и комплект дополнительных элементов. Миниатюрная плата с отверстиями для штырьков, на обратной стороне имеет площадки под чипы SOP Также в комплекте с программатором CH341A поставляется дополнительная монтажная печатная плата. Этот аксессуар применяется на случай программирования микросхем памяти с архитектурным исполнением корпусов SOP8/SOP16. Под внутрисхемное программирование на печатной плате программатора CH341A выведены контакт питания под напряжение 3.3 вольта и соответствующие контакты ISP интерфейса:

  • MOSI;
  • MISO;
  • CLK;
  • CS;
  • GND.

Вместе с тем есть возможность работать с периферией по интерфейсу RS232 (выводы на плате RX, TX, GND). Схема программатора CH341A рассчитана под питание постоянным напряжением 5 вольт от внешнего источника. Это напряжение, при подключении программатора к персональному компьютеру, поступает по шине USB.


Подключенный к USB порту компьютера программатор CH341A для микросхем памяти . Свечение красного индикатора свидетельствует о наличии питания в схеме устройства На печатной плате программатора встроен индикатор наличия питания – светодиод красного цвета. Режим внешнего или внутреннего программирования включается съёмом или установкой перемычки на контактах P/S (parallel/serial), также внедрённых в схему программатора CH341A. По умолчанию перемычка установлена.

Положению установленной перемычки на контактах P/S (parallel/serial) программатора CH341A соответствует режим внутреннего программирования. В этом случае:

  • чтение,
  • верификация,
  • запись чипов памяти,

осуществляются непосредственно через ZIF-панель программатора CH341A. Между тем на плате программатора универсального CH341A перемычка может быть снята с контактов P/S (parallel/serial). Программирование в таком режиме допускает непосредственное подключение к программируемой микросхеме памяти без выпаивания из платы.

Программатор CH341A — программное обеспечение прошивки/считывания

Действие универсального физического модуля CH341A на программном уровне поддерживается «родительским» программным обеспечением — «CH341A Programmer» (здесь версия 1.4).

Используемые драйверы для операционных систем и интерфейсов:

  • под Windows 10 и ранее на IIC / I2C, SPI и другие;
  • под Windows 10 и ранние на последовательный интерфейс;
  • под Linux;
  • под Mac;

бесплатно распространяется по сети Интернет.

Интерфейс рабочего программного окна ПО версии 1.30 прост для восприятия и понимания как начинающим электронщикам, так и профессионалам. Все основные обозначения программного интерфейса версии 1.30 переведены на русский язык. В целом программой поддерживается несколько региональных языков интерфейса. Однако выше представлена также версия 1.4 (английский интерфейс).


Таким выглядит окно программного обеспечения для программатора CH341A. Удобный лёгкий для восприятия и понимания интерфейс, поддерживающий обозначения на русском языке Конечно же, чтобы программное обеспечение удачно состыковать с устройством, корректно и эффективно программировать, требуется установка системных драйверов. Это компоненты, дополняющие ПО, как правило, включены в установочный пакет программного софта.

При подключении программатора на порт USB, система автоматически выдаёт (только старые версии Windows) сообщение о необходимости установки драйверов устройства. Нужно просто указать путь к папке, где находятся требуемые файлы. Последние версии (например, Windows 10) требуют файлы с цифровой подписью. Здесь выше можно скачать официальные драйверы, наделённые цифровой подписью.

Тонкости программирования микросхем памяти через интерфейс CH341A

Логичный вопрос начинающих электронщиков: как прошить микросхему памяти eeprom в корпусе DIP с помощью этого устройства? Так вот, работа с чипами памяти EEPROM (24хх, 25хх) в корпусном исполнении DIP, осуществляется, примерно, следующим образом (при условии предварительно установленных драйверов):

  1. На ZIF-панели рукоятку установить перпендикулярно корпусу.
  2. Вставить микросхему в ячейку согласно обозначению на плате 24хх или 25хх (1 ножка ближе к рукоятке).
  3. Опустить рукоятку в положение параллельно корпусу панели.
  4. Подключить программатор CH341A на USB порт.
  5. Подключить устройство в диспетчере Windows.
  6. Запустить Programmer и выполнить требуемые действия (считывание, прошивка, сравнение контрольных сумм и т.д.).

Видеоролик выше показывает последовательность работы с микросхемами памяти через программную среду сопровождения. В частности, показаны примеры работы с ПО «Programmer CH341A» двух версий (1.30 и 1.4, соответственно).После завершения работы с ПО, устройство в списке диспетчера Windows рекомендуется отключать (не удалять, но деактивировать).

Программирование чипов из серии флэш-памяти 25хх с корпусным исполнением SOP делается несколько иначе. Контактная ZIF-панель в этом случае может также использоваться, но при условии, если микросхема монтируется на дополнительной печатной плате.

Дополнительную печатную плату необходимо оснастить контактными электродами, впаяв электроды в соответствующие отверстия платы. Операционную (программируемую) микросхему также придётся подпаивать на контактные площадки.

Между тем существует упрощённый способ коммуникации. На основной плате программатора CH341A имеются площадки под конфигурацию SOP. На такую площадку аккуратно накладывают программируемый чип с тем расчётом, чтобы ножки микросхемы точно попадали на контактные дорожки.


Контактные площадки под размещение микросхем памяти в корпусном исполнении типа SOP. Две площадки под серию 25хх и одна под серию 24хх Следует проконтролировать соответствие расположения микросхемы по ключу на корпусе и на плате. Там есть указатель контакта первой ножки чипа. Затем чип аккуратно прижимают миниатюрной прищепкой. Дальше всё делается стандартным образом – подключение к порту компьютера и программирование микросхемы.

Программатор CH341A: где купить и какая цена

Купить устройство выгоднее на известном портале Aliexpress. Цена, заявленная китайскими продавцами, чисто символическая (не более 200 руб. вместе с пересылкой). Быстрее и проще покупка производится через федеральный Маркет Яндекса. Предложения ниже:

Единственное неудобство для покупателя в случае запроса через китайский shop-портал AliExpress – приходится ожидать прибытия посылки в Россию примерно месяц-полтора. Но если учитывать открывающиеся возможности с приобретением этого товара, можно подождать и 3 месяца.


Страница одного из продавцов Aliexpress, предлагающего программатор CH341A купить за 112 руб. Это предложение проверено — можно смело покупать, к примеру, за яндекс-деньги Читать и «шить» программатором CH341A доступно чипы памяти следующих производителей:

  • Atmel;
  • Amic;
  • EON;
  • ST;
  • Excel Semiconductor Inc;
  • NexFlash;
  • MXIC;
  • Chingis Technology Corporation;
  • WINBOND;
  • Saifun Semiconductors.

Таблица поддерживаемых микросхем программатором CH341A

ATMELAT25DF041A, AT25DF321, AT25F004, AT25F512A, AT25F2048, AT25F4096, AT25F1024A, AT25FS010, AT25FS040, AT26DF081A,AT26DF161A, AT26DF321, AT26F004
AMICA25L05P, A25L10P, A25L20P, A25L40P, A25L80P, A25L16P
EONEN25B05, EN25P05, EN25B10, EN25P10, EN25BF20, EN25P20, EN25F20, EN25B40, EN25P40, EN25F40, EN25B80, EN25P80, EN25F80, EN25T80, EN25B16, EN25P16, EN25B32, EN25P32, EN25B64, EN25P64
STM25P05A, M25P10A, M25P20, M25P40, M25P80, M25P16, M25P32, M25P64, M25PE10, M25PE20, M25PE40, M25PE80, M25PE16, M25PE32, M45PE10, M45PE20, M45PE40, M45PE80, M45PE16, M45PE32
EXCEL SEMICONDUCTOR INCES25P10, ES25P20, ES25P40, ES25P80, ES25P16, ES25P32
NEXFLASHNX25P80, NX25P16, NX25P32
MXICMX25L512, MX25L1005, MX25L2005, MX25L4005, MX25L8005, MX25L1605, MX25L3205, MX25L6405, MX25L6445, MX25L6405
CHINGIS TECHNOLOGY CORPORATIONPm25LV512, Pm25LV010, Pm25LV020, Pm25LV040, Pm25LV080, Pm25LV016, Pm25LV032, Pm25LV064
WINBONDW25P10, W25X10, W25Q10, W25P20, W25X20, W25Q20, W25P40, W25X40, W25Q40, W25P80, W25X80, W25Q80, W25P16, W25X16, W25Q16, W25P32, W25X32, W25Q32, W25P64, W25X64, W25Q64
SAIFUNSA25F005, SA25F010, SA25F020, SA25F040, SA25F080, SA25F160, SA25F320

Таблица выше представляет далеко не полный список фирм, микросхемы памяти которых доступны для чтения и записи кода программатором CH341A.

После чтения содержимого чипа устройством, программа сохраняет файлы в указанную папку с присвоением расширения *.bin (бинарный). Этот момент процесса программирования нужно учитывать.

Например, когда для новой прошивки микросхемы используются файлы дампов, полученные из других источников, наделённые другими типами расширения. Перед загрузкой программатором таким файлам нужно заменить расширение на используемое по умолчанию (*.bin).

Как прошить микросхему памяти без выпаивания

Программатор микросхем памяти проверялся на чтении дампа eeprom-памяти контроллера Pixel (2 шт. ATMLH132). Работа на чтение информации, которую не удавалось сделать с помощью других конструкций программаторов, потребовала не более 3-4 секунд времени. При этом читаемые микросхемы памяти из платы контроллера не выпаивались.

На интерфейс программатора CH341A подключался непосредственно модуль памяти контроллера Pixel, состоящий из двух чипов памяти 24 серии. Подключение производилось через стандартный 4-контактный разъём. Опыт — как читать дамп с микросхемы серии 24С04 без выпаивания чипа из платы, описан далее.

Чтение дампа микросхем памяти программатором CH341A

Чтобы иметь возможность подключаться к микросхемам в DIP корпусах непосредственно на плате, нужно обзавестись контактной «прищепкой». Этот инструмент также можно купить недорого на упомянутом ранее сайте.


Набор аксессуаров для программатора, куда входит прищепка-контактор под микросхемы в корпусе DIP и переходная плата, с помощью которой осуществляется контакт с ZIF-панелью Прищепка устанавливается на корпус микросхемы с таким расчётом, чтобы все контакты точно «сели» на ножки программируемого чипа. Первая контактная ножка рабочей микросхемы должна соответствовать контакту «прищепки» с подведённым красным проводом.

Плата с рабочим чипом, на который пишется или с которого снимается дамп, должна отключаться от любых источников питания,

включая литий-ионные батареи (актуально для компьютерных материнских плат). На программаторе CH341A перемычка на контактах «P/S» снимается.


Пример подсоединения кабеля с прищепкой к программируемой микросхеме памяти. Проводник, помеченный красным цветом, соответствует контакту с первой ножкой чипа Ответный конец кабеля с «прищепкой» подключается на переходник (мини-плата) через штыревое соединение, и далее к ZIF-панели программатора CH341A. В зависимости от типа программируемой микросхемы, плата-переходник устанавливается в контактные гнёзда для чипов серии 24хх или 25хх.

Дальше останется только включить программатор CH341A в USB порт, запустить сопровождающую программу на компьютере и можно начинать работать с дампом микросхем памяти. К примеру, для указанной серии микросхем 24С04 потребовалось времени на считывание дампа не более 3 секунд:


Результат работы с микросхемой памяти в условиях её полного контакта с платой устройства. Съём дампа осуществлялся без выпаивания микросхемы из платы устройства Некоторые микросхемы памяти, рассчитанные под напряжение питания 5 вольт, иногда не реагируют на действия программатора CH341A. Выражается это результатом, когда дамп не считывается и не пишется.

Причина отсутствия чтения/записи на программаторе CH341A

Объясняется причина отсутствия рабочего эффекта просто: по умолчанию схемой программатора CH341A используется рабочее напряжение (стабилизированное от USB) равное 3.3 вольтам. При таком малом уровне напряжения и токе не превышающем 500 мА, некоторые серии чипов попросту «не входят» в режим программирования.


Принципиальная схема программатора CH341A, предназначенного для программирования микросхем памяти серий 24хх (eeprom) и 25хх (флеш память) К тому же следует учитывать потери тока через ёмкости электронной платы, где установлен операционный чип. Для подобных случаев необходим достаточный рабочий уровень напряжения программирования, а также достаточно высокий токовый потенциал.

Соответственно, устранение причины – подача напряжения программирования непосредственно от более мощного внешнего источника питания. Для этого используется 7-контактный разъём, присутствующий на плате программатора CH341A. Обозначение контактов разъёма есть на принципиальной схеме (см. выше).

Зачем писать в регистры напрямую, когда есть HAL и LL?

Словарик HAL, Hardware Abstraction Layer – библиотека для управления микроконтроллером с высоким уровнем абстракции. Если надо использовать интерфейс SPI1, просто настраиваем и включаем SPI1, не задумываясь, какие регистры за что отвечают. LL, Low Level API – библиотека, содержащая макросы или структуры с адресами регистров, позволяющая обращаться к ним по имени. DDRx, PORTx, PINx на Атмеге – это LL.

Споры на тему «HAL, LL или регистры» регулярно случаются в комментариях на Хабре. Не претендуя на доступ к астральному знанию, просто поделюсь своим любительским опытом и соображениями.

Более-менее разобравшись с Атмегой и начитавшись статей про прекрасности STM32, я накупил полдюжины разных плат – и Discovery, и «Синие Таблетки», и даже просто чипы под свои самоделки. Все они два года пылились в коробке. Иногда я говорил себе: «все, с этих выходных осваиваю STM», запускал CubeMX, генерил сетап для SPI, смотрел на получившуюся стену текста, обильно сдобренную копирайтами STM, и решал, что это как-то уж слишком.

Разобраться, что тут понаписал CubeMX, конечно, можно. Но одновременно понятно, что запомнить все формулировки, чтобы потом писать их руками, нереально. А уж дебажить это, если я случайно забуду в Кубе поставить какую-нибудь галочку, – совсем привет.

Прошло два года, я по-прежнему облизывался в ST MCU Finder на всякие вкусные, но недоступные моему пониманию чипы, и случайно наткнулся на замечательную статью, пусть и про STM8. И внезапно понял, что все это время стучался в открытую дверь: регистры у STM устроены так же, как у любого другого МК, и для работы с ними Куб необязателен. А что, так можно было?..

HAL и конкретно STM32CubeMX – инструмент для профессиональных инженеров, плотно работающих с чипами STM32. Главная фишка – высокий уровень абстракции, возможность быстро мигрировать с одного МК на другой и даже с одного ядра на другое, оставаясь в рамках линейки STM32. Любители с такими задачами сталкиваются редко – наш выбор МК, как правило, ограничен ассортиментом AliExpress, и мы чаще мигрируем между кардинально разными чипами – переезжаем с Атмеги на STM, с STM на ESP, ну или что там нам новенького подкинут китайские друзья. HAL здесь не поможет, а времени его изучение съест немало.

Остается LL – но от него до регистров полшага. Лично я нахожу написание своих макросов с адресами регистров полезным: я внимательнее изучаю даташит, думаю, что мне потребуется в будущем, а что точно нет, лучше структурирую свои программы, ну и вообще преодоление способствует запоминанию.

Кроме того, есть нюанс с популярным STM32F103 – для него существуют две несовместимые версии LL, одна официальная от STM, вторая – от Leaf Labs, используемая в проекте STM32duino. Если писать open-source библиотеку (а у меня была именно такая задача), надо либо делать две версии, либо обращаться к регистрам напрямую.

Наконец, отказ от LL, на мой взгляд, упрощает миграцию, особенно если закладываться на нее с самого начала работы над проектом. Утрированный пример: напишем ардуиновский blink в Atmel Studio без LL:

#include #define _REG(addr) (*(volatile uint8_t*)(addr)) #define DDR_B 0x24 #define OUT_B 0x25 int main(void) { volatile uint32_t k; _REG(DDR_B) |= (1<<5); while(1) { _REG(OUT_B) |= (1<<5); for (k=0; k<50000; k++); _REG(OUT_B) &= ~(1<<5); for (k=0; k<50000; k++); } }

Чтобы этот код замигал светодиодом на китайской платке с STM8 (из ST Visual Desktop), в нем достаточно поменять два адреса:

#define DDR_B 0x5007 #define OUT_B 0x5005

Да, я использую особенность подключения светодиода на конкретной плате, мигать будет очень медленно, но будет же!

Какие бывают даташиты

В статьях и на форумах, и русско-, и англоязычных, под «даташитами» понимают любую техническую документацию к чипам, так же поступаю и я в этом тексте. Формально они – лишь один из видов такой документации:

Datasheet – ТТХ, тактико- технические характеристики. Обязательно имеется у любого электронного компонента. Справочная информация, полезно держать под рукой, но вдумчиво читать в нем особо нечего. Впрочем, чипы попроще часто ограничиваются даташитом, чтобы не плодить лишних документов; в этом случае Reference Manual включается сюда же.

Reference Manual – собственно инструкция, здоровая книжка на 1000+ страниц. Подробно расписывается работа всего, что понапихано в чип. Главный документ для освоения микроконтроллера. В отличие от datasheet, инструкции пишут для широкой линейки МК, в них содержится много информации о периферии, отсутствующей в вашей конкретной модели.

Programming Manual или Instruction Set Manual – инструкция по уникальным командам микроконтроллера. Предназначена для тех, кто программирует на Ассемблере. Авторы компиляторов активно ее используют для оптимизации кода, поэтому в общем случае нам она не потребуется. Но заглядывать сюда полезно для общего понимания, за некоторыми специфическими командами типа выхода из прерывания, а также при активном использовании дебаггера.

Application Note – полезные советы по решению конкретных задач, часто с примерами кода.

Errata Sheet – описание случаев нестандартного поведения чипа с вариантами обхода, если есть.

Программатор микросхем памяти еепром/флеш — CH341A

Небольшой по размерам электронный прибор для прошивки подключается к порту USB компьютера. Прошивальщик позволяет быстро программировать микросхемы памяти 24хх, 25хх серий и аналогичных. Рассмотрим электронику для лучшего представления, понимания, применения на практике.

Микросхемы памяти серий 24хх (eeprom), 25хх (serial flash) используются в схемах электронной техники повсеместно.

Такого рода чипы присутствуют в составе практически любой конструкции современной бытовой / промышленной аппаратуры, управляемой через микроконтроллеры.

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

Полное представления на программатор CH341A даёт описание (datasheet), дополненное стандартными техническими характеристиками. Тем не менее, рассмотрим девайс электронщика глазами обывателя, что часто воспринимается потенциальным пользователем проще и легче официальных документов.


Универсальный программатор CH341A для работы с широко распространёнными микросхемами памяти типа EEPROM и FLASH. Обзавестись таким девайсом обязан каждый уважающий себя электронщик Сборка устройства выполнена на базе микроконтроллера «USB Bus Convert Chip» серии CH341A. Программатор рассчитан на физическое подключение к порту USB компьютеров, работающих под управлением современных ОС Windows. Модуль программирования микросхем памяти собран на печатной плате размерами 45х25 мм (см. картинку ниже).


Внешний вид монтажной платы программатора с нижней стороны. На площади размерами 45х25 мм расположился сам микропроцессор и сопутствующая обвязка электронными микроэлементами На одной стороне печатной платы размещены электронные компоненты программатора CH341A. На второй стороне электронной платы установлена механическая панель (ZIF) под временное крепление программируемых микросхем.

Механическая ZIF-панель прошивальщика поддерживает чипы в корпусах DIP. Обеспечивает удобство работы пользователя, когда выполняется считывание или «прошивка» чипов памяти.

Что есть в даташитах

Непосредственно в Datasheet нам могут потребоваться такие разделы:

Device Summary – первая страница даташита вкратце рассказывает об устройстве. Очень полезна в ситуациях, когда вы где-то нашли чип (увидели в магазине, выпаяли, встретили упоминание) и хотите понять, что это.

General Description – более подробное описание возможностей чипов из линейки.

Pinouts – схемы распиновки для всех возможных корпусов чипа (на какой ноге какой пин).

Pin Description – описание назначения и возможностей каждого пина.

Memory Map – карта адресов в памяти нам вряд ли потребуется, но иногда в нее включается также таблица адресов блоков регистров.

Register Map – таблица адресов блоков регистров, как правило, находится именно в даташите, а в Ref Manual – только сдвиги (address offsets).

Electrical Characteristics – в этом разделе нас в первую очередь интересуют absolute maximum ratings, перечисляющие максимальные нагрузки на чип. В отличие от неубиваемой Atmega328p, большинство МК не позволяет подключать к пинам серьезные нагрузки, что становится неприятным сюрпризом для ардуинщиков.

Package Information – чертежи доступных корпусов, полезные при проектировании своих плат.

Reference Manual структурно состоит из разделов, посвященных конкретной периферии, указанной в их заголовке. Каждую главу можно условно поделить на три части:

Overview, Introduction, Features – обзор возможностей периферии;

Functional Description, Usage Guide или просто основной блок раздела – подробное текстовое описание принципов устройства периферии и способов ее использования;

Registers – описание управляющих регистров. В простых случаях типа GPIO или SPI этого может быть вполне достаточно, чтобы начать использовать периферию, но часто приходится все-таки читать и предыдущие части.

Учимся читать принципиальные электрические схемы

О том, как читать принципиальные схемы я уже рассказывал в первой части. Теперь хотелось бы раскрыть данную тему более полно, чтобы даже у новичка в электронике не возникало вопросов. Итак, поехали. Начнём с электрических соединений.

Не секрет, что в схеме какая-либо радиодеталь, например микросхема может соединяться огромным количеством проводников с другими элементами схемы. Для того чтобы высвободить место на принципиальной схеме и убрать «повторяющиеся соединительные линии» их объединяют в своеобразный «виртуальный» жгут — обозначают групповую линию связи. На схемах групповая линия связи обозначается следующим образом.

Вот взгляните на пример.

Как видим, такая групповая линия имеет большую толщину, чем другие проводники в схеме.

Чтобы не запутаться, куда какие проводники идут, их нумеруют.

На рисунке я отметил соединительный провод под номером 8. Он соединяет 30 вывод микросхемы DD2 и 8 контакт разъёма XP5. Кроме этого, обратите внимание, куда идёт 4 провод. У разъёма XP5 он соединяется не со 2 контактом разъёма, а с 1, поэтому и указан с правой стороны соединительного проводника. Ко 2-му же контакту разъёма XP5 подключается 5 проводник, который идёт от 33 вывода микросхемы DD2. Отмечу, что соединительные проводники под разными номерами электрически между собой не связаны, и на реальной печатной плате могут быть разнесены по разным частям платы.

Электронная начинка многих приборов состоит из блоков. А, следовательно, для их соединения применяются разъёмные соединения. Вот так на схемах обозначаются разъёмные соединения.

XP1 — это вилка (он же «Папа»), XS1 — это розетка (она же «Мама»). Всё вместе это «Папа-Мама» или разъём X1 (X2).

Также в электронных устройствах могут быть механически связанные элементы. Поясню, о чём идёт речь.

Например, есть переменные резисторы, в которые встроен выключатель. Об одном из таких я рассказывал в статье про переменные резисторы. Вот так они обозначаются на принципиальной схеме. Где SA1 — выключатель, а R1 — переменный резистор. Пунктирная линия указывает на механическую связь этих элементов.

Ранее такие переменные резисторы очень часто применялись в портативных радиоприёмниках. При повороте ручки регулятора громкости (нашего переменного резистора) сначала замыкались контакты встроенного выключателя. Таким образом, мы включали приёмник и сразу той же ручкой регулировали громкость. Отмечу, что электрического контакта переменный резистор и выключатель не имеют. Они лишь связаны механически.

Такая же ситуация обстоит и с электромагнитными реле. Сама обмотка реле и его контакты не имеют электрического соединения, но механически они связаны. Подаём ток на обмотку реле — контакты замыкаются или размыкаются.

Так как управляющая часть (обмотка реле) и исполнительная (контакты реле) могут быть разнесены на принципиальной схеме, то их связь обозначают пунктирной линией. Иногда пунктирную линию вообще не рисуют, а у контактов просто указывают принадлежность к реле (K1.1) и номер контактной группы (К1.1) и (К1.2).

Ещё довольно наглядный пример — это регулятор громкости стереоусилителя. Для регулировки громкости требуется два переменных резистора. Но регулировать громкость в каждом канале по отдельности нецелесообразно. Поэтому применяются сдвоенные переменные резисторы, где два переменных резистора имеют один регулирующий вал. Вот пример из реальной схемы.

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

Как читать даташиты

Даташиты с непривычки отпугивают своим объемом и обилием непонятных слов. На самом деле все не так страшно, если знать несколько лайфхаков.

Установите хорошую PDF-читалку. Даташиты пишутся в славных традициях бумажных инструкций, их здорово распечатать, проложить пластиковыми закладками и сшить. Гипертекст в них наблюдается в следовых количествах. К счастью, хотя бы структуру документа оформляют закладками, поэтому годная читалка с удобной навигацией очень нужна.

Даташит – не учебник Страуструпа, в нем не надо читать все подряд. Если воспользовались предыдущим советом – просто найдите в панели закладок нужный раздел.

Даташиты, особенно Reference Manuals, могут описывать возможности не конкретного чипа, а всей линейки. Это значит, что половина, а то и две трети информации не имеет отношения к вашему чипу. Прежде чем изучать регистры TIM7, проверьте в General Description, есть ли он у вас.

Знать английский достаточно на базовом уровне. Даташиты наполовину состоят из терминов, незнакомых среднестатистическому носителю языка, и наполовину – из простых связующих конструкций. Еще бывают прекрасные китайские даташиты на китайском английском, где половина также термины, а вторая половина – рандомный набор слов.

Если встречаете незнакомое слово, не пытайтесь перевести его с помощью англо-русского словаря. Если вас ставит в тупик hysteresis, то от перевода «гистерезис» теплее вам не станет. Пользуйтесь Гуглом, Stack Overflow, Википедией, форумами, где нужное понятие будет объяснено простыми словами с примерами.

Лучший способ понять прочитанное – проверить в деле. Поэтому держите под рукой отладочную плату, с которой знакомитесь, а лучше две – на случай, если все-таки что-то недопоняли и увидели волшебный дымок.

Полезна привычка держать под рукой даташит, когда вы читаете чей-то тьюториал или изучаете чужую библиотеку. Вполне возможно, в нем вы найдете более оптимальное решение своей задачи. И наоборот – если из даташита никак не удается понять, как же все-таки работает регистр, загуглите его: скорее всего, кто-то уже все описал простыми словами или оставил понятный код на ГитХабе.

Как научиться читать электрическую схему

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

Проще всего работать с таким элементом как электронный конденсатор с резисторами, динамиками и другим электрооборудованием с автоматизацией. Как правило, их легко узнать без всякой таблицы с условными обозначениями. Учиться на них проще. Сложнее осуществлять работу с полупроводниками, а именно транзисторами, симисторами и микросхемами. К примеру, каждый биполярный транзистор имеет в себе три вывода, а именно, базу, коллектор и эмиттер. По этой причине необходимы условные изображения и уточняющая информация в виде латинских букв. Изучение их может занять много дней, как и обучение их опознания.

Обратите внимание! Кроме букв на каждой схеме есть цифры. Они говорят о нумерации и технических характеристиках. Стоит указать, что самостоятельно научиться читать документ невозможно, и поэтому нужны уроки и обучающие пособия.

Основные правила

В ответ на вопрос, как читать электросхемы, стоит уточнить, что это нужно делать слева направо, от начала до самого конца. В этом заключается основное правило. Следующее правило заключается в расчленении единого чертежа на небольшие картинки или простые цепи. Она состоит из источника электротока, приемника тока, прямого привода, обратного провода и одного контакта аппарата. Поэтому, начиная изучать документ, нужно разбить его на части. Далее обязательно нужно принимать во внимание все детали, с замечаниями, экспликациями, пояснениями и спецификациями. Если в чертеже находятся ссылки, то нужно изучить и их.

Обратите внимание! Чертежи, которые отражают момент работу электропитания, электрозащиты, управления и сигнализации, должны быть изучены на количество источников питания, взаимодействие, согласованность совместной работы, оценку последствий вероятных неисправностей, нарушение проводной изоляции, проверку схемы с отсутствием ложных цепей, оценку надежности электрического питания, режим работы оборудования и проверку выполнения мер, которые обеспечивают безопасное проведение работ.

Условные обозначения

Согласно нормативным документам, есть стандартные графические условные обозначения в однолинейных и двухлинейных схемах. Далее представлена таблица с подобными символами под названием электрические схемы для начинающих условные обозначения. Стоит указать, что в чертежах используются также цифры и буквы. Подобная маркировка регулируется с помощью нормативных документов, а именно гостов.

Словарик

Немного полезных слов и обозначений, помогающих быстрее освоиться с даташитами. То, что вспомнилось в последние пару дней, дополнения и исправления приветствуются.

Электричество Vcc, Vdd – «плюс», питание Vss, Vee – «минус», земля current – ток voltage – напряжение to sink current – работать «землей» для внешней нагрузки to source current – питать внешнюю нагрузку high sink/source pin – пин с повышенной «терпимостью» к нагрузке

IO H, High – на пине Vcc L, Low – на пине Vss High Impedance, Hi-Z, floating – на пине ничего нет, «высокое сопротивление», он фактически невидим внешнему миру. weak pull up, weak pull down – встроенный подтягивающий/стягивающий резистор, примерный аналог 50 кОм (см. даташит). Используется, например, чтобы входной пин не болтался в воздухе, вызывая ложные срабатывания. Weak – потому что его легко «перебить». push pull – выходной режим пина, в котором он переключается между High и Low – обычный OUTPUT с Arduino. open drain – обозначение выходного режима, в котором пин может быть либо Low, либо High Impedance / Floating. При этом почти всегда это не «настоящий» открытый сток, есть защитные диоды, резисторы, еще что. Это просто обозначение режима земля/ничего. true open drain – а вот это уже настоящий открытый сток: пин напрямую ведет в землю, если открыт, или пребывает в подвешенном состоянии, если закрыт. Это значит, что через него при необходимости можно пускать напряжение больше Vcc, но максимум все равно оговаривается в даташите в разделе Absolute Maximum Ratings / Voltage.

Интерфейсы in series – подключенные последовательно to chain – собирать чипы в цепочку последовательным подключением, увеличивая количество выходов. shift – сдвиг, обычно обозначает сдвиг битов. Соответственно, to shift in и to shift out – принимать и передавать данные побитно. latch – задвижка, прикрывающая буфер, пока через него сдвигаются биты. Когда передача закончена, задвижка открывается, биты начинают работать. to clock in – выполнить побитную передачу, сдвинуть все биты на нужные места. double buffer, shadow register, preload register – обозначения истории, когда регистр должен уметь принимать новые данные, но придерживать их до какого-то момента. Например, для корректной работы ШИМ его параметры (скважность, частота) не должны меняться, пока не закончится текущий цикл, но новые параметры уже могут быть переданы. Соответственно, текущие держатся в shadow register, а новые попадают в preload register, будучи записанными в соответствующий регистр чипа.

Всякое prescaler – предделитель частоты to set a bit – установить бит в 1 to clear/reset a bit – сбросить бит в 0 (reset – фишка даташитов STM) to toggle a bit – поменять значение бита на противоположное (см. пример в начале статьи)

Что дальше

Вообще тут планировалась практическая часть с демонстрацией трех проектов на STM32 и STM8, выполненных специально для этой статьи при помощи даташитов, с лампочками, SPI, таймерами, ШИМом и прерываниями:

Но текста получается многовато, поэтому проекты отправляются во вторую часть.

Навык чтения даташитов поможет вам с вашим хобби, но едва ли заменит живое общение с коллегами по увлечению на форумах и в чатах. Для него надо все-таки в первую очередь подтягивать английский язык. А потому дочитавшим – специальный приз: два бесплатных урока в Skyeng при первой оплате по коду HABR2.

Рейтинг
( 2 оценки, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]