- •Перечень сокращений
- •Предисловие
- •Введение
- •Часть 1. Архитектура и аппаратные средства микроконтроллера LPC214x
- •1.1 Общие сведения о микроконтроллерах LPC214x
- •1.2 Программистская модель процессорного ядра ARM7TDMI
- •1.2.1 Режимы работы ядра ARM7
- •1.2.2 Система регистров
- •1.2.3 Слово состояния программы
- •1.2.4 Организация памяти
- •1.3 Система команд
- •1.3.1 Команды арифметической и логической обработки
- •1.3.2 Команды умножения
- •1.3.3 Команды регистровой пересылки
- •1.3.4 Команды загрузки и сохранения регистров
- •1.3.5 Команды пакетного обмена с памятью
- •1.3.6 Команды передачи управления
- •1.3.7 Команды обращения к слову состояния программы
- •1.4 Методы адресации
- •1.4.1 Непосредственная адресация
- •1.4.2 Регистровая адресация
- •1.4.3 Косвенная адресация
- •1.4.4 Индексная адресация
- •1.5 Процедура начальной загрузки и режимы отображения памяти
- •1.6 Обработка исключительных ситуаций
- •1.7 Система тактирования
- •1.7.1 Выбор тактовой частоты микроконтроллера
- •1.7.2 Настройка тактирования периферийных устройств
- •1.8 Модуль ускорения памяти
- •1.9 Внешние выводы микроконтроллера
- •1.9.1 Служебные контакты
- •1.9.2 Программно-управляемые линии ввода-вывода
- •1.9.3 Альтернативные функции линий ввода вывода
- •1.10 Цифровые порты ввода-вывода
- •1.10.1 Управление портом через низкоскоростную шину
- •1.10.2 Управление портом через высокоскоростную шину
- •1.11 Система прерываний
- •1.11.1 Назначение системы прерываний
- •1.11.2 Процесс обработки прерываний IRQ
- •1.11.3 Процесс обработки быстрых прерываний FIQ
- •1.11.4 Регистры управления системой прерываний
- •1.11.5 Порядок настройки прерывания IRQ
- •1.11.6 Порядок настройки быстрого прерывания FIQ
- •1.11.7 Процедура обработки прерывания
- •1.11.8 Задержка обработки прерывания
- •1.12 Внешние прерывания
- •1.12.1 Регистры управления блоком внешних прерываний
- •1.12.2 Порядок настройки блока внешних прерываний
- •1.13 Таймеры-счетчики
- •1.13.1 Режим таймера и схема совпадения
- •1.13.2 Режим счетчика
- •1.13.3 Схема захвата
- •1.13.4 Управляющие регистры
- •1.13.5 Формирование интервалов времени через систему прерываний
- •1.13.6 Измерение периода и длительности импульса с помощью устройства захвата
- •1.13.7 Подсчет числа импульсов в единицу времени
- •1.14 Широтно-импульсный модулятор
- •1.14.1 Основы функционирования
- •1.14.2 Дополнительные возможности
- •1.14.3 Регистры управления ШИМ
- •1.14.4 Порядок настройки ШИМ
- •1.15 Аналого-цифровые преобразователи
- •1.15.1 Краткие сведения о встроенных АЦП
- •1.15.2 Общие рекомендации по использованию АЦП
- •1.15.3 Управляющие регистры
- •1.15.4 Порядок настройки АЦП
- •1.15.5 Программный запуск аналого-цифрового преобразователя
- •1.15.6 Запуск аналого-цифрового преобразователя по таймеру
- •1.15.7 Программный опрос готовности АЦП
- •1.15.8 Опрос готовности АЦП по прерыванию
- •1.15.9 Считывание и масштабирование результата АЦП
- •1.16 Цифро-аналоговый преобразователь
- •1.16.1 Регистр управления ЦАП
- •1.16.2 Рекомендации по применению ЦАП
- •1.17 Последовательный синхронный приемо-передатчик SPI
- •1.17.1 Назначение и основы функционирования интерфейса SPI
- •1.17.2 Управляющие регистры
- •1.17.3 Передача и прием данных в режиме ведущего
- •1.17.4 Передача и прием данных в режиме ведомого
- •1.18 Последовательный синхронный приемо-передатчик I2С
- •1.18.1 Назначение и основы функционирования интерфейса I2С
- •1.18.2 Управляющие регистры
- •1.18.3 Настройка модуля I2C
- •1.18.4 Типовые циклы обмена данными по шине I2C
- •1.19 Последовательный асинхронный приемопередатчик UART
- •1.19.1 Назначение и основы функционирования порта UART
- •1.19.2 Управляющие регистры
- •1.19.3 Настройка порта UART
- •1.19.4 Прием байта с опросом флага
- •1.19.5 Передача байта с опросом флага
- •1.19.6 Прием и передача данных с использованием прерываний
- •1.19.7 Прием и передача пакетов данных
- •1.19.8 Диагностика ошибок
- •1.19.9 Автоматическая настройка скорости
- •1.20 Часы реального времени
- •1.20.1 Основные возможности часов реального времени
- •1.20.2 Управляющие регистры
- •1.20.3 Рекомендации по применению
- •1.21 Управление питанием и идентификация источников сброса
- •1.21.1 Краткие сведения о мониторе питания
- •1.21.2 Управляющие регистры
- •Часть 2. Разработка и отладка программ с помощью современных инструментальных средств
- •2.1 Форматы представления чисел
- •2.1.1 Основные коды представления целых чисел
- •2.1.2 Форматы представление целых чисел, приятные в языке Си
- •2.1.3 Форматы чисел c плавающей точкой стандарта IEEE754
- •2.2 Основы программирования на языке Си
- •2.2.1 Структура программы
- •2.2.2 Числовые константы
- •2.2.3 Переменные и именованные константы
- •2.2.4 Оператор присваивания, выражения и операции
- •2.2.5 Условный оператор
- •2.2.6 Приведение и преобразование типов
- •2.2.7 Массивы
- •2.2.8 Строки символов
- •2.2.9 Структуры
- •2.2.10 Объединения
- •2.2.11 Указатели
- •2.2.12 Ветвление
- •2.2.13 Множественное ветвление
- •2.2.14 Цикл со счетчиком
- •2.2.15 Циклы с предусловием и постусловием
- •2.2.16 Функции
- •2.2.17 Некоторые директивы компилятора
- •2.2.18 Библиотека математических функций MATH.h
- •2.2.19 Функция создания форматированных строк SNPRINTF
- •2.2.20 Ассемблер в Си-программах
- •2.3 Интегрированная среда разработки Keil µVision 4
- •2.3.1 Создание проекта
- •2.3.2 Создание файла программы
- •2.3.3 Настройка проекта
- •2.3.4 Набор текста программы
- •2.3.5 Компиляция программы
- •2.3.6 Отладка программы
- •2.3.7 Основные отладочные инструменты среды Keil µVision 4
- •2.3.8 Управление распределением памяти
- •2.4 Методика отладки программ
- •2.4.1 Быстрый поиск ошибок
- •2.4.2 Ввод и вывод дискретных сигналов
- •2.4.3 Таймер-счетчик. Формирование интервалов времени
- •2.4.4 Таймер-счетчик. Формирование внешних сигналов совпадения
- •2.4.5 Таймер-счетчик. Счетчик внешних событий
- •2.4.6 Таймер-счетчик. Устройство захвата
- •2.4.7 Широтно-импульсный модулятор
- •2.4.8 Аналого-цифровой преобразователь
- •2.4.9 Цифро-аналоговый преобразователь
- •2.4.10 Приемопередатчик SPI
- •2.4.11 Приемопередатчик I2C
- •2.4.12 Приемопередатчик UART
- •2.4.13 Часы реального времени
- •2.5 О программировании ARM7 на ассемблере
- •2.5.1 Основные правила записи программ на ассемблере
- •2.5.2 Псевдокоманды
- •2.5.3 Директивы ассемблера
- •2.5.4 Макросы
- •2.5.5 Пример простой программы
- •2.6 Распространенные средства разработки и отладки
- •2.6.1 Демонстрационные платы EA-EDU-001 и EA-EDU-011
- •2.6.2 Внутрисхемный отладчик J-Link
- •2.6.3 Утилиты программирования ПЗУ LPC Flash Utility и FlashMagic
- •2.6.4 Программа-терминал 232Analyzer
- •2.6.5 Низкоуровневый редактор диска DMDE
- •Часть 3. Решение типовых задач локального управления
- •3.1 Формирование временной задержки с помощью цикла
- •3.1.1 Задание
- •3.1.2 Общие рекомендации
- •3.1.3 Алгоритм программы
- •3.1.4 Отладка
- •3.1.5 Дополнительные сведения о формировании временной задержки
- •3.2 Формирование дискретного сигнала с помощью таймера
- •3.2.1 Задание
- •3.2.2 Общие рекомендации
- •3.2.3 Алгоритм программы
- •3.3 Опрос дискретного датчика или кнопки
- •3.3.1 Задание
- •3.3.2 Общие рекомендации
- •3.3.3 Алгоритм программы
- •3.3.4 Отладка
- •3.4 Опрос состояния механических контактов с подавлением дребезга
- •3.4.1 Задание
- •3.4.2 Общие рекомендации
- •3.4.3 Алгоритм программы
- •3.4.4 Отладка
- •3.5 Опрос клавиатуры с автоповтором
- •3.5.1 Задание
- •3.5.2 Общие рекомендации
- •3.5.3 Алгоритм программы
- •3.5.4 Отладка
- •3.6 Формирование импульсного управляющего сигнала с помощью модуля ШИМ
- •3.6.1 Задание
- •3.6.2 Общие сведения
- •3.6.3 Алгоритм программы
- •3.6.4 Отладка
- •3.6.5 Синхронизация внешним сигналом
- •3.7 Формирование сигналов специальной формы с помощью ЦАП
- •3.7.1 Задание
- •3.7.2 Основы
- •3.7.3 Алгоритм программы
- •3.7.4 Повышение точности генерирования частоты
- •3.7.5 Выбор числа дискрет
- •3.8 Управление двухфазным шаговым двигателем
- •3.8.1 Задание
- •3.8.2 Общие сведения
- •3.8.3 Алгоритм программы
- •3.9 Применение ШИМ для формирования низкочастотных аналоговых сигналов
- •3.9.1 Задание
- •3.9.2 Основные сведения
- •3.9.3 Алгоритм основной программы
- •3.9.4 Алгоритм процедуры обработки прерывания
- •3.10 Управление символьным жидкокристаллическим индикатором
- •3.10.1 Задание
- •3.10.2 Управление модулем жидкокристаллической индикации
- •3.10.3 Разработка функции управления ЖКИ с ожиданием готовности
- •3.10.4 Функция вывода строки символов
- •3.10.5 Разработка функции инициализации модуля ЖКИ
- •3.10.6 Разработка тестовой программы
- •3.10.7 Управление ЖКИ с опросом флага готовности
- •3.10.8 Программирование произвольных символов
- •3.11 Управление матричным светодиодным индикатором
- •3.11.1 Задание
- •3.11.2 Основные рекомендации
- •3.11.3 Алгоритм основной программы
- •3.11.4 Алгоритм процедуры обработки прерывания
- •3.11.5 Реализация движения строки
- •3.12 Управление матричным жидкокристаллическим дисплеем
- •3.12.1 Управление дисплеем на основе контроллера PCF8833
- •3.12.2 Построение простейших геометрических фигур
- •3.13 Измерение постоянного напряжения
- •3.13.1 Задание
- •3.13.2 Основные рекомендации
- •3.13.3 Алгоритм основной программы
- •3.13.4 Алгоритм процедуры обработки прерывания от АЦП
- •3.13.5 АЦП с циклическим опросом нескольких каналов
- •3.13.6 Автоматический выбор пределов измерения
- •3.14 Измерение параметров уровня переменного напряжения
- •3.14.1 Задание
- •3.14.2 Основные рекомендации
- •3.14.3 Алгоритм основной программы
- •3.14.4 Алгоритм процедуры обработки прерывания
- •3.15 Измерение ускорения с помощью трехосевого акселерометра
- •3.16 Измерение интервалов времени с помощью таймера
- •3.16.1 Задание
- •3.16.2 Общие рекомендации
- •3.16.3 Алгоритм основной программы
- •3.16.4 Алгоритм процедуры обработки прерывания
- •3.16.5 Повышение разрешающей способности путем усреднения
- •3.16.6 Введение поправок
- •3.17 Измерение частоты с помощью счетчика
- •3.17.1 Задание
- •3.17.2 Основные рекомендации
- •3.17.3 Алгоритм программы
- •3.17.4 Повышение точности измерений
- •3.18 Опрос цифрового датчика температуры. Интерфейс I2C
- •3.18.1 Задание
- •3.18.2 Общие рекомендации
- •3.18.3 Алгоритм программы
- •3.20 Обмен данными с электрически перепрограммируемым ПЗУ
- •3.20.1 Задание
- •3.20.2 Общие сведения о микросхемах EEPROM
- •3.20.3 Адресация в микросхемах EEPROM
- •3.20.4 Порядок чтения EEPROM
- •3.20.5 Порядок записи EEPROM
- •3.20.6 Разработка программы чтения EEPROM
- •3.20.7 Разработка функции записи блока данных в EEPROM
- •3.21 Интерфейс RS-232. Прием и передача простых команд
- •3.21.1 Задание
- •3.21.2 Алгоритм программы
- •3.21.3 Автоматическая настройка скорости
- •3.22.1 Задание
- •3.22.2 Основные рекомендации
- •3.22.3 Алгоритм программы
- •3.23 Интерфейс RS-232. Прием пакета переменной длины
- •3.23.1 Задание
- •3.23.2 Основы реализации
- •3.23.3 Алгоритм программы
- •3.24 Обмен данными с картой памяти Secure Digital
- •3.24.1 Задание
- •3.24.2 Общие сведения о карах FLASH-памяти SD/MMC
- •3.24.3 Команды SD/MMC
- •3.24.4 Процедура инициализации карты
- •3.24.5 Чтение и запись данных
- •3.24.6 Обработка ошибок
- •3.24.7 Комментарии к алгоритму и программе
- •Алфавитный указатель управляющих регистров
- •Список литературы
- •Содержание
Рисунок 1.8.1 – Настройка модуля ускорения памяти (MAM)
спомощью инструмента Configuration Wizard
Втехническом описании производителя утверждается, что длительность цикла обращения к памяти не должна быть меньше 50 нс. Соответственно при тактовых частотах до 20 МГц для обращения к памяти программ рекомендуется выделять 1 такт; при тактовой частоте 20–40 МГц — 2 такта; 40–60 МГц — 3 такта. Однако авторы считают, что в большинстве случаев следует выделять один такт при тактовых частотах до 40 МГц и два такта при тактовых частотах 40 МГц и выше.
Можно рекомендовать подбирать настройку модуля MAM, опираясь на экспериментально измеренное время выполнения фрагмента программы. Для этого в начале и конце фрагмента следует включить отладочные команды, формирующие логический сигнал на одном из свободных выводов МК. Для измерений необходим цифровой осциллограф.
Взаключение отметим, что возможно выполнение фрагмента программы абсолютно без потерь производительности, если его разместить в оперативной памяти (см. раздел 2.3.8).
1.9 Внешние выводы микроконтроллера
1.9.1 Служебные контакты
Микроконтроллер LPC2148 выпускается в корпусе LQFP размером 10×10 мм с 64 контактами (шаг 0,5 мм). Контакты микроконтроллера можно разделить на две группы: служебного назначения, например, для подключения источника питания, и программно-управляемые линии ввода-вывода, предназначенные для обмена цифровыми и аналоговыми сигналами с внешней средой. Краткое описание служебных контактов микроконтроллера LPC214x приведено в таблице 1.9.1.
1.9.2 Программно-управляемые линии ввода-вывода
Контакты, не включенные в таблицу 1.9.1, предназначены для ввода и вывода цифровых и аналоговых сигналов. Каждый из них может работать в режиме двунаправленного цифрового входа-выхода. В связи с этим контакты сгруппированы в два 32-разрядных параллельных порта, называемых
30
«порт 0» и «порт 1». В них не все разряды реализованы физически. Принято порты обозначать «P0» и «P1», а номера линий порта указывать через точку, например «P0.14» или «P1.23». Цифровые сигналы могут формироваться или считываться с портов под управлением программы (раздел 1.10). Основные электрические характеристики портовых линий приведены в таблице 1.9.2.
Таблица 1.9.1 – Назначение служебных контактов МК LPC2148
Обознач. |
Контакт |
Назначение |
|
Vdd |
23, 43, 51 |
Питание цифровой части (3,0–3,6 В) |
|
Vdda |
7 |
Питание аналоговой части (3,0–3,6 В) |
|
Vss |
6, 18, 25, 42, 50 |
Общая точка цифровой части |
|
Vssa |
59 |
Общая точка аналоговой части |
|
|
|
Вход сброса. Низкий лог. уровень переводит |
|
|
57 |
микроконтроллер в режим сброса. В рабочем |
|
|
|
режиме должен быть подан высокий уровень |
|
XTAL1 |
62 |
Контакты для подключения основного кварцево- |
|
го резонатора. На контакт XTAL1 может быть |
|||
|
|
||
XTAL2 |
61 |
||
подан внешний тактовый сигнал |
|||
|
|
||
RTCX1 |
3 |
Контакты для подключения кварцевого резона- |
|
RTCX2 |
5 |
тора для тактирования часов реального времени |
|
D+ |
10 |
Двунаправленная линия передачи данных ин- |
|
D– |
11 |
терфейса USB |
|
Vref |
63 |
Опорное напряжение АЦП и ЦАП (2,5–3,6 В) |
|
Vbat |
49 |
Питание часов реального времени (2,0–3,6 В) |
Отметим, что реальные логические уровни, существенно отличаются от предельных. Так в условиях, близких к нормальным, экспериментально можно установить, что: В, В.
Таблица 1.9.2 – Электрические параметры цифровых портовых линий
Параметр |
Значение |
Предельно допустимое напряжение в режиме входа, В |
|
Выходной уровень логической единицы, В, не менее |
|
Выходной уровень логического нуля, В, не более |
0,4 |
Входной уровень логической единицы, В, не менее |
2,0 |
Входной уровень логического нуля, В, не более |
0,8 |
Ток в режиме входа, мкА, не более |
3 |
Предельный выходной ток, мА |
50 |
Предельный ток через каждый контакт Vdd и Vss, мА |
100 |
1.9.3 Альтернативные функции линий ввода вывода
Портовые линии совмещают основную функцию (цифровой вводвывод) с несколькими альтернативными функциями. Они служат входами или выходами многочисленных периферийных устройств, встроенных в микроконтроллер, таких как счетчики, АЦП и ЦАП.
31
32
PINSEL1 – настройка входов внешних прерыыаний
31 P0.30 27 24 23 20 19 16 15 12 11 P0.20 7 4 3 P0.16
|
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
|
|
|
|
|
0 |
1 |
|
|
EINT3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EINT3 |
|
|
|
|
|
|
EINT0 |
|||
PINSEL0 – настройка входов внешних прерыыаний |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
P0.15 |
P0.14 |
27 |
|
|
24 |
23 |
|
|
20 |
P0.9 |
|
16 |
P0.7 |
|
12 |
11 |
|
|
8 |
P0.3 |
|
4 |
P0.1 |
|
0 |
||||||
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
1 |
1 |
|
|
1 |
1 |
|
|
|
|
|
|
1 |
1 |
|
|
1 |
1 |
|
|
EINT2 |
EINT1 |
|
|
|
|
|
|
|
|
EINT2 |
|
|
EINT2 |
|
|
|
|
|
|
EINT1 |
|
|
EINT0 |
|
|
||||||
PINSEL1 – настройка входов таймеров-счетчиков |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
31 |
|
P0.30 |
P0.29 |
P0.28 |
23 |
|
|
20 |
19 |
|
|
16 |
15 |
|
P0.22 |
P0.21 |
P0.20 |
P0.19 |
P0.18 |
P0.17 |
P0.16 |
||||||||||
|
|
1 |
1 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
|
|
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
CAP0.0 |
CAP0.3 |
CAP0.2 |
|
|
|
|
|
|
|
|
|
|
CAP0.0 |
CAP1.3 |
MAT1.3 |
MAT1.2 |
CAP1.3 |
CAP1.2 |
MAT0.2 |
||||||||||
|
|
|
|
MAT0.3 |
MAT0.2 |
|
|
|
|
|
|
|
|
|
|
MAT0.0 |
|
|
|
|
CAP1.2 |
MAT1.3 |
MAT1.2 |
CAP0.2 |
|||||||
PINSEL0 – настройка входов таймеров-счетчиков |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
31 |
|
|
28 |
P0.13 |
P0.12 |
P0.11 |
P0.10 |
19 |
|
|
16 |
15 |
|
P0.6 |
P0.5 |
P0.4 |
P0.3 |
P0.2 |
3 |
|
|
0 |
|||||||||
|
|
|
|
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
MAT1.1 |
MAT1.0 |
CAP1.1 |
CAP1.0 |
|
|
|
|
|
|
CAP0.2 |
MAT0.1 |
CAP0.1 |
MAT0.0 |
CAP0.0 |
|
|
|
|
|||||||||
PINSEL1 – настройка выходов ШИМ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
31 |
|
|
28 |
27 |
|
|
24 |
23 |
|
|
20 |
19 |
|
|
16 |
15 |
|
|
12 |
P0.21 |
|
8 |
7 |
|
|
4 |
3 |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PWM5 |
|
|
|
|
|
|
|
|
|
|
|
PINSEL0 – настройка выходов ШИМ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
31 |
|
|
28 |
27 |
|
|
24 |
23 |
|
|
20 |
P0.9 |
P0.8 |
P0.7 |
|
12 |
11 |
|
|
8 |
7 |
|
|
4 |
P0.1 |
P0.0 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
PWM6 |
PWM4 |
PWM2 |
|
|
|
|
|
|
|
|
|
|
PWM3 |
PWM1 |
Рисуноук1.9.1 – Схема регистров управления альтернативными функциями портов ввода-вывода
33
PINSEL1 – настройка входов АЦП
31 P0.30 P0.29 P0.28 23 20 P0.25 16 15 P0.22 P0.21 8 7 4 3 0
|
|
0 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
0 |
1 |
|
|
|
|
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
AD0.3 |
AD0.2 |
AD0.1 |
|
|
|
|
AD0.4 |
|
|
|
|
AD1.7 |
AD1.6 |
|
|
|
|
|
|
|
|
|
|
||||||
PINSEL0 – настройка входов АЦП |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
P0.15 |
|
28 |
P0.13 |
P0.12 |
23 |
|
P0.10 |
19 |
|
P0.8 |
15 |
|
P0.6 |
P0.5 |
P0.4 |
7 |
|
|
4 |
3 |
|
|
0 |
||||||||
1 |
1 |
|
|
1 |
1 |
1 |
1 |
|
|
1 |
1 |
|
|
1 |
1 |
|
|
1 |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
AD1.5 |
|
|
AD1.4 |
AD1.3 |
|
|
AD1.2 |
|
|
AD1.1 |
|
|
AD1.0 |
AD0.7 |
AD0.6 |
|
|
|
|
|
|
|
|
||||||||
PINSEL1 – настройка линий SPI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
31 |
|
|
28 |
27 |
|
|
24 |
23 |
|
|
20 |
19 |
|
|
16 |
15 |
|
|
12 |
11 |
|
P0.20 |
P0.19 |
P0.18 |
P0.17 |
|
0 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SSEL1 |
MOSI1 |
MISO1 |
SCK1 |
|
|
||||
PINSEL0 – настройка линий SPI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
31 |
|
|
28 |
27 |
|
|
24 |
23 |
|
|
20 |
19 |
|
|
16 |
P0.7 |
P0.6 |
P0.5 |
P0.4 |
7 |
|
|
4 |
3 |
|
|
0 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SSEL0 |
MOSI0 |
MISO0 |
SCK0 |
|
|
|
|
|
|
|
|
||||
PINSEL0 – настройка линий UART |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
P0.15 |
P0.14 |
P0.13 |
P0.12 |
P0.11 |
P0.10 |
P0.9 |
P0.8 |
15 |
|
|
12 |
11 |
|
|
8 |
7 |
|
|
4 |
P0.1 |
P0.0 |
||||||||||
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
|
RI |
DCD |
DTR |
DSR |
CTS |
RTS |
RxD1 |
TxD1 |
|
|
|
|
|
|
|
|
|
|
|
|
RxD0 |
TxD0 |
|||||||||
PINSEL0 – настройка линий I2С |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
31 |
|
P0.11 |
27 |
|
|
24 |
P0.11 |
|
20 |
19 |
|
|
16 |
15 |
|
|
12 |
11 |
|
|
8 |
P0.3 |
P0.2 |
3 |
|
|
0 |
||||
|
|
1 |
1 |
|
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
1 |
|
|
|
|
|
|
SDA1 |
|
|
|
|
SCL1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SDA0 |
SCL0 |
|
|
|
|
Рисунок 1.9.2 – Схема регистров управления альтернативными функциями портов ввода-вывода
Выбор основной или альтернативной функции линий порта 0 осуществляется путем записи управляющего кода в регистры PINSEL0 и PINSEL1. Имеется также регистр PINSEL2, предназначенный для переключения линий порта 1 в отладочный режим, который здесь не рассматривается.
Управляющие коды и соответствующие им альтернативные функции портовых линий приведены в таблицах 1.9.3, 1.9.4. На рисунках 1.9.1 и 1.9.2 показаны схемы регистров PINSEL0 и PINSEL1, сгруппированы по периферийным устройствам.
Прежде чем использовать какое-либо встроенное периферийное устройство, требующее взаимодействия с внешней средой, необходимо с помощью таблиц 1.9.3, 1.9.4 или рисунков 1.9.1, 1.9.2 определить, какие контакты МК могут использоваться для обмена сигналами с данным устройством и внедрить в программу команды перевода выбранных линий в альтернативный режим.
Таблица 1.9.3 – Управление функциями внешних выводов через PINSEL0
Биты |
Конт. |
Код |
Функция |
Описание |
0–1 |
19 |
00 |
Port 0.0 |
|
|
|
01 |
TxD0 (UART0) |
Выход передатчика UART0 |
|
|
10 |
PWM1 |
Выход 1 ШИМ |
|
|
11 |
— |
|
2–3 |
21 |
00 |
Port 0.1 |
|
|
|
01 |
RxD0 (UART0) |
Вход приемника UART0 |
|
|
10 |
PWM3 |
Выход 3 ШИМ |
|
|
11 |
EINT0 |
Вход 0 внешнего прерывания |
4–5 |
22 |
00 |
Port 0.2 |
|
|
|
01 |
SCL0 (I2C0) |
Тактовый сигнал I2C0 |
|
|
10 |
CAP0.0 (Timer 0) |
Вход 0 устр. захвата таймера 0 |
|
|
11 |
— |
|
6–7 |
26 |
00 |
Port 0.3 |
|
|
|
01 |
SDA0 (I2C0) |
Линия передачи данных I2C0 |
|
|
10 |
MAT0.0 (Timer 0) |
Выход 0 устр. сравнения таймера 0 |
|
|
11 |
EINT1 |
Вход 1 внешнего прерывания |
8–9 |
27 |
00 |
Port 0.4 |
|
|
|
01 |
SCK0 (SPI0) |
Тактовый сигнал SPI0 |
|
|
10 |
CAP0.1 (Timer 0) |
Выход 1 устр. сравнения таймера 0 |
|
|
11 |
AD0.6 |
Вход 6 АЦП 0 |
10–11 |
29 |
00 |
Port 0.5 |
|
|
|
01 |
MISO0 (SPI0) |
Вход ведущего, выход ведомого SPI0 |
|
|
10 |
MAT0.1 (Timer 0) |
Выход 1 устр. сравнения таймера 0 |
|
|
11 |
AD0.7 |
Вход 7 АЦП 0 |
34
Таблица 1.9.3 – Продолжение
Биты |
Конт. |
Код |
Функция |
Описание |
12–13 |
30 |
00 |
Port 0.6 |
|
|
|
01 |
MOSI0 (SPI0) |
Выход ведущего, вход ведомого SPI0 |
|
|
10 |
CAP0.2 (Timer 0) |
Выход 2 устр. сравнения таймера 0 |
|
|
11 |
AD1.0 |
Вход 0 АЦП 1 |
14–15 |
31 |
00 |
Port 0.7 |
|
|
|
01 |
SSEL0 (SPI0) |
Выбор режима ведущий/ведомый SPI0 |
|
|
10 |
PWM2 |
Выход 2 ШИМ |
|
|
11 |
EINT2 |
Вход 2 внешнего прерывания |
16–17 |
33 |
00 |
Port 0.8 |
|
|
|
01 |
TxD1 (UART1) |
Выход передатчика UART1 |
|
|
10 |
PWM4 |
Выход 4 ШИМ |
|
|
11 |
AD1.1 |
Вход 1 АЦП 1 |
18–19 |
34 |
00 |
Port 0.9 |
|
|
|
01 |
RxD1 (UART1) |
Вход приемника UART1 |
|
|
10 |
PWM6 |
Выход 6 ШИМ |
|
|
11 |
EINT3 |
Вход 3 внешнего прерывания |
20–21 |
35 |
00 |
Port 0.10 |
|
|
|
01 |
RTS (UART1) |
Выход запроса передачу (UART1) |
|
|
10 |
CAP1.0 (Timer 1) |
Вход 0 устр. сравнения таймера 1 |
|
|
11 |
AD1.2 |
Вход 2 АЦП 1 |
22–23 |
37 |
00 |
Port 0.11 |
|
|
|
01 |
CTS (UART1) |
Вход готовности к передаче UART1 |
|
|
10 |
CAP1.1 (Timer 1) |
Выход 1 устр. сравнения таймера 1 |
|
|
11 |
SCL1 (I2C1) |
Тактовый сигнал I2C1 |
24–25 |
38 |
00 |
Port 0.12 |
|
|
|
01 |
DSR (UART1) |
Вход готовности к обмену UART1 |
|
|
10 |
MAT1.0 (Timer 1) |
Выход 0 устр. сравнения таймера 1 |
|
|
11 |
AD1.3 |
Вход 3 АЦП 1 |
26–27 |
39 |
00 |
Port 0.13 |
|
|
|
01 |
DTR (UART1) |
Выход готовности к обмену UART1 |
|
|
10 |
MAT1.1 (Timer 1) |
Выход 1 устр. сравнения таймера 1 |
|
|
11 |
AD1.4 |
Вход 4 АЦП 1 |
28–29 |
41 |
00 |
Port 0.14 |
|
|
|
01 |
DCD (UART1) |
Вход «связь установлена» UART1 |
|
|
10 |
EINT1 |
Вход 1 внешнего прерывания |
|
|
11 |
SDA1 (I2C1) |
Линия данных (I2C1) |
30–31 |
45 |
00 |
Port 0.15 |
|
|
|
01 |
RI (UART1) |
Вход входящего вызова UART1 |
|
|
10 |
EINT2 |
Вход 2 внешнего прерывания |
|
|
11 |
AD1.5 |
Вход 5 АЦП 1 |
35
Таблица 1.9.4 – Управление функциями внешних выводов через PINSEL1
Биты |
Конт. |
Код |
Функция |
Описание |
0–1 |
46 |
00 |
Port 0.16 |
|
|
|
01 |
EINT0 |
Вход 0 внешнего прерывания |
|
|
10 |
MAT0.2 (Timer 0) |
Выход 2 устр. совпадения таймера 0 |
|
|
11 |
CAP0.2 (Timer 0) |
Вход 2 устр. захвата таймера 0 |
2–3 |
47 |
00 |
Port 0.17 |
|
|
|
01 |
CAP1.2 (Timer 1) |
Вход 2 устр. захвата таймера 1 |
|
|
10 |
SCK1 (SSP) |
Тактовый синел интерфейса SSP |
|
|
11 |
MAT1.2 (Timer 1) |
Выход 2 устр. совпадения таймера 1 |
4–5 |
53 |
00 |
Port 0.18 |
|
|
|
01 |
CAP1.3 (Timer 1) |
Вход 3 устр. захвата таймера 1 |
|
|
10 |
MISO1 (SSP) |
Вход ведущего, выход ведомого SSP |
|
|
11 |
MAT1.3 |
Выход 2 устр. совпадения таймера 3 |
6–7 |
54 |
00 |
Port 0.19 |
|
|
|
01 |
MAT1.2 |
Выход 2 устр. совпадения таймера 1 |
|
|
10 |
MOSI1 (SSP) |
Выход ведущего, вход ведомого SSP |
|
|
11 |
CAP1.2 (Timer 1) |
Вход 2 устр. захвата таймера 1 |
8–9 |
55 |
00 |
Port 0.20 |
|
|
|
01 |
MAT1.3 (Timer 1) |
Выход 2 устр. совпадения таймера 3 |
|
|
10 |
SSEL1 (SSP) |
Выбор режима ведущий/ведомый SSP |
|
|
11 |
EINT3 |
Вход 3 внешнего прерывания |
10–11 |
1 |
00 |
Port 0.21 |
|
|
|
01 |
PWM5 |
Выход 5 ШИМ0 |
|
|
10 |
AD1.6 |
Вход 6 АЦП 1 |
|
|
11 |
CAP1.3 (Timer 1) |
Вход 3 устр. захвата таймера 1 |
12–13 |
2 |
00 |
Port 0.22 |
|
|
|
01 |
AD1.7 |
Вход 7 АЦП 1 |
|
|
10 |
CAP0.0 (Timer 0) |
Вход 0 устр. захвата таймера 0 |
|
|
11 |
MAT0.0 (Timer 0) |
Выход 0 устр. совпадения таймера 0 |
14–15 |
58 |
00 |
Port 0.23 |
|
|
|
01 |
Vbus |
Вход обнаружения питания USB |
|
|
10,11 |
— |
|
16–17 |
|
— |
— |
— |
18–19 |
9 |
00 |
Port 0.25 |
|
|
|
01 |
AD0.4 |
Вход 4 АЦП 0 |
|
|
10 |
Aout (DAC) |
Выход ЦАП |
|
|
11 |
— |
|
20–23 |
|
— |
— |
— |
24–25 |
13 |
00 |
Port 0.28 |
|
|
|
01 |
AD0.1 |
Вход 1 АЦП 0 |
|
|
10 |
CAP0.2 (Timer 0) |
Вход 2 устр. захвата таймера 0 |
|
|
11 |
MAT0.2 (Timer 0) |
Выход 2 устр. совпадения таймера 0 |
36