
- •Введение
- •Теоретическая часть
- •Общая характеристика 32-разрядных arm-микроконтроллеров
- •Архитектура, принцип работы и возможности 32-разрядных arm-микроконтроллеров серии stm 32 f100 c4
- •Порты общего назначения gpio
- •Организация памяти в микроконтроллерах stm32
- •Универсальный последовательный порт usart
- •Микропроцессорная система на базе 32-разрядного avr-микроконтроллера серии stm32
- •Расчетная часть
- •Рекомендации по включению микроконтроллера pic16f84a
- •Расчет принципиальной схемы устройства на базе микроконтроллера pic16f84a
- •Разработка блок схемы алгоритма работы микроконтроллера
- •Разработка программы и hex-файла программы
- •Разработка печатной платы устройства
- •Заключение
- •Список используемых источников
Порты общего назначения gpio
GPIO (General Purpose Input-Output) — это выводы общего назначения, ноги микроконтроллера, доступные для прямого управления. Это обычно довольно дефицитный ресурс во многих популярных МК, но с STM32 эта проблема теряет актуальность: в самом мелком корпусе (LQFP48) доступно 37 GPIO, а в самом большом (LQFP176) — 140 GPIO. На рисунке 1.4.1 показана схема порта вывода STM32F100.
Рисунок 1.4.1 - схема порта вывода STM32F100
МК питаются 3.3 В, но до сих пор ещё активно используются 5-вольтовые микросхемы и логика, их нужно подключить. Поэтому в STM32 большинство выводов «толерантны» к 5 В. То есть, они могут принимать на вход 5 В без какой-либо угрозы их целостности.
Толерантный пин отличается от обычного тем, что у него верхний защитный диод подключён к Vdd_ft вместо Vdd. Из этой схемы становится понятно, что хоть выводы и толерантны к 5 В на вход, но вот выдавать 5 В на выход не могут — для этого нужен транзистор. Если нужно получить логическую единицу, то 3.3 В вполне распознаются 5-вольтовой логикой как 1, но если нужно именно 5 В, то для этого применяется режим Open-drain у GPIO.
У STM32F100хх имеется 8 режимов GPIO:
Выход общего назначения:
Push-pull - стандартный выход: при 0 в выходном регистре получается низкий уровень на выходе, при 1 — высокий.
Open-drain - (открытый сток, аналог открытого коллектора): вывод подключен к стоку N-MOS полевика в то время, как P-MOS полевик заперт, что позволяет управлять нагрузкой с большим напряжением, чем Vdd (3.3 В).
Вывод с альтернативной функцией (для периферии типа SPI, UART):
Push-pull
Open-drain
Вход:
Analog - аналоговый высокоимпендансный: подтягивающие резисторы и триггер Шмитта отключены. Используется при работе с АЦП.
Floating - обычный высокоимпендансный: подтягивающие резисторы отключены, триггер Шмитта включен.
Pull-up - вход с подтяжкой к питанию.
Pull-down - вход с прижатием у к «земле».
Линии GPIO объединены в порты, в STM32 — по 16 линий, поэтому нумеруются они с 0 по 15: PA0, PA1… PA15 — это линии порта A, например. Линии порта управляются программно с помощью нескольких регистров.
GPIOx_CRL и GPIOx_CRH — регистры конфигурации, содержат настройки режима (вход/выход) и частоты GPIO. Доступны на чтение и запись.
GPIOx_IDR и GPIOx_ODR — входной и выходной регистры: в первом хранится считанное со входов порта значение, во второй записывается новое состояние выводов. GPIOx_IDR доступен только на чтение, а GPIOx_ODR — на чтение и запись.
GPIOx_BSRR и GPIOx_BRR — регистры атомарного изменения битов в GPIOx_ODR.
Обычно, если нужно установить бит в регистре периферии, то его сначала нужно прочитать, потом применить побитовое 'ИЛИ' к считанному значению и битовой маске, после чего записать новое значение назад в регистр. То же и со сбросом битов, только маску нужно инвертировать и применить побитовое 'И'. А вот запись значений в GPIOx_BSRR и GPIOx_BRR изменяет только те биты выходного регистра, которые были установлены в единицу, притом происходит это за 1 такт, так что прерывание не сможет всё испортить.