ytgf6785f86rf  
Главная
Продукция
Партнеры
Статьи
О нас

Контакты

Ссылки

 


LPC семейство «маленьких» микроконтроллеров фирмы Philips
 



Схемотехника — это та отрасль электроники, которая до сих пор присутствует в нашей российской действительности. Современный разработчик приборов и устройств уже на 100% ориентируется на импортную элементную базу, которая стараниями многочисленных дистрибьюторов, стала весьма доступна.
Жесткая конкуренция заставляет фирмы производители микросхем выпускать всё более функциональные, более экономичные продукты. Область же микроконтроллеров обладает некоторой инерционностью, выраженной тем более явно, чем беднее потребитель, эта инерционность обусловлена обязательным наличием у каждого разработчика устройств на микроконтроллерах некоторой материальной и интеллектуальной платформы.
Семейство 51 микроконтроллеров имеет глубокие корни в нашей действительности и новые разработки фирмы Philips должны вызвать несомненный интерес у разработчиков. Ведь в данном случае необходима лишь некоторая модернизация, имеющейся у разработчиков платформы, и становится возможным качественный скачёк в виде разработок конкурентно способных приборов.
Выбор типа микроконтроллера для решения конкретной задачи определяется рядом разнообразных факторов. Среди основных факторов можно перечислить следующие: особенности архитектуры, открытость наработанного программного обеспечения, доступность и качество среды проектирования и отладки, конструктивное исполнение, относительное (в классе аналогичных) быстродействие и энергопотребление.
В области восьми разрядных микроконтроллеров есть 3 конкурирующие друг с другом ветви. Это старое семейство 51 микроконтроллеров, PIC микроконтроллеры и AVR микроконтроллеры. Все они призваны решать схожие задачи, и весь вопрос заключается в том, насколько оптимально данная задача решается теми или иными из них.
Новое семейство 51 микроконтроллеров фирмы Philips открывает широкие возможности, для применения микроконтроллеров первой ветви не расставаясь при этом с годами наработанным материалом.
Главная особенность микроконтроллеров P89LPC901-908 (микроконтроллер P89LPC905 в статье не рассматривался, так как его выпуск только предполагается) — это маленький корпус SOIC-8, что в совокупности с другими не малыми достоинствами этих микроконтроллеров позволяет провозгласить лозунг: «микроконтроллеры везде».
У каждого представителя этого семейства есть всё, чем обладает стандартный 51 микроконтроллер, кроме количества выведенных на ножки микросхемы портов ввода-вывода. Этот единственный «недостаток» (количество выводов всего восемь, из них два использованы для питания микроконтроллера) разработчики также попытались компенсировать, предложив ряд отличающихся функционально изделий и трехкратное совмещение различных функций на выводах микросхемы.
Для примера показана структурная схема микроконтроллера P89LPC901 рис 1.



Рис. 1

Необходимость управления конфигурацией выводов вызвала появление в памяти микроконтроллера многочисленных, новых регистров специальных функций (SFR). Изучение возможностей микроконтроллера фактически эквивалентно заданию взаимосвязей, устанавливаемых и определяемых этими регистрами, а также их функционального смысла. Функциональные отличия между микроконтроллерами приведены в таблице 1 и, наверное, многие разработчики смогут найти в этом ряду подходящий именно им микроконтроллер.
Таблица 1
 

Микроконтроллер P89LPC… Синхронизация Таймеры Аналоговые элементы Входы вспомогательной клавиатуры UART
901 Внутренний RC-генератор 7,3728 МГц; внешний кварц до 12 МГц; выход генератора 2 таймера внешний выход T0 1компаратор входы +, -  2 входа нет
902 Внутренний RC-генератор 7,3728 МГц 2 таймера 2 компаратора; 1входы +, -выход; 2вход+, выход 5 входов нет
903 Внутренний RC-генератор 7,3728 МГц 2 таймера 2 компаратора; 1входы +, -; 2вход+ 3 входа TxD, RxD
904 Внутренний RC-генератор 7,3728 МГц; внешний вход 2 таймера 2компаратора, 1входы +, -2вход+;АЦП, ЦАП 3 входа TxD, RxD
906 Внутренний RC-генератор 7,3728 МГц; внешний кварц до 12 МГц; выход генератора 2 таймера 1компаратор входы +, -; выход  3 входа нет
907 Внутренний RC-генератор 7,3728 МГц 2 таймера вход-выход T0 1компаратор входы +, -; выход  3 входа TxD
908 Внутренний RC-генератор 7,3728 МГц 2 таймера 1компаратор входы +, -; выход  3 входа TxD, RxD



Общими для микроконтроллеров P89LPC901-908 будут следующие, предоставляемые пользователю, ресурсы:
Перепрограммируемая FLASH память, объёмом 1 кбайт.
Два шестнадцати разрядных счётчика-таймера.
Системный таймер-счётчик на двадцать три бита (часы реального времени).
Один или два аналоговых компаратора.
Универсальный асинхронный приёмо-передатчик (в моделях 901, 902 и 906 отсутствует).
Внутренний RC генератор 7,3728 МГц.
Питание 2,4…3,6 В с возможностью работы портов с внешними устройствами, имеющими источник питания 5 В.
Шестикратно ускоренное двухтактное ядро 51 семейства.
Режимы уменьшенного энергопотребления.
Контроль кратковременного пропадания питания.
Последовательное внутрисхемное программирование.
Программная доступность FLASH памяти для энергонезависимого хранения данных.
Возможность защиты кодов программы от несанкционированного копирования.
Сторожевой таймер со встроенным генератором.
Пять перепрограммируемых портов ввода-вывода с повышенной нагрузочной способностью (до 20 мА) для всех выводов микросхемы и один порт ввода.
Два переключаемых регистра указателя данных (DPTR).
В таблицах 2, 3 перечислены все возможные функции, на выполнение которых могут быть запрограммированы выводы микроконтроллеров P89LPC901-908.


Таблица 2
 

Вывод P89LPC901 P89LPC902 P89LPC903 P89LPC904
1 VDD VDD VDD VDD
2 XTAL1/P3.1 P0.2/CIN2A/KBI2 P0.2/CIN2A/KBI2 AD11/P0.2/CIN2A/KBI2
3 CLCOUT/XTAL2/P3.0 P0.0/CMP2/KBI0 P1.1/RxD P1.1/RxD
4 RST/P1.5 RST/P1.5 RST/P1.5 RST/P1.5
5 P1.2/T0 P0.6/CMP1/KBI6 P1.0/TxD P1.0/TxD
6 P0.5/CMPREF/KBI5 P0.5/CMPREF/KBI5 P0.5/CMPREF/KBI5 P0.5/CMPREF/KBI5/CLKIN
7 P0.4/CIN1A/KBI4 P0.4/CIN1A/KBI4 P0.4/CIN1A/KBI4 P0.4/CIN1A/KBI4/AD13/DAC1
8 Vss Vss Vss Vss


Таблица 3

 

Вывод P89LPC906 P89LPC907 P89LPC908
1 RST/P1.5 RST/P1.5 RST/P1.5
2 Vss Vss Vss
3 P0.6/CMP1/KBI6 P0.6/CMP1/KBI6 P0.6/CMP1/KBI6
4 XTAL1/P3.1 P1.2/T0 P1.1/RxD
5 CLCOUT/XTAL2/P3.0 P1.0/TxD P1.0/TxD
6 VDD VDD VDD
7 P0.5/CMPREF/KBI5 P0.5/CMPREF/KBI5 P0.5/CMPREF/KBI5
8 P0.4/CIN1A/KBI4 P0.4/CIN1A/KBI4 P0.4/CIN1A/KBI4


Дальнейшее изложение материала позволяет читателю детально ознакомится с особенностями устройства LPC семейства микроконтроллеров, предполагается рассмотреть основные отличия данных микроконтроллеров от стандартного 51 семейства.
Организация памяти микроконтроллеров P89LPC901-908 показана на рис. 2.



Рис. 2

Как видно из рисунка область оперативной памяти не отличается от стандартной памяти 51 семейства, надо только отметить, что область регистров специальных функций более заполнена. В тоже время возможности работы с флэш-памятью значительно расширены. Можно стереть любой сектор размером 256 байт или страницу размером 16 байт. Память программ допускает до 100000 циклов стирание-запись. Функции стирания и записи байта доступны в программе пользователя, что позволяет использовать Flash память для энергонезависимого хранения данных. Эта операция выполняется с помощью четырех SFR регистров: FMCON (регистр управления Flash), FMDATA (регистр данных Flash), FMADRL (младший байт адреса Flash), FMADRH (старший байт адреса Flash). Данная функция позволяет реализовать, например, режимы автокалибровки в приборе, выполненном на базе этих микроконтроллеров, так как оказалась решена проблема хранения корректирующих коэффициентов. Любая операция перепрограммирования занимает 2 мс. Фирма изготовитель гарантирует как минимум десятилетний срок хранения записанной во Flash память информации.
Ниже приведен пример подпрограммы стирания элементов Flash памяти.

; Ввод:
; R5 = данные для записи (байт)
; R7 = адрес (байт)
;
CONF EQU 6CH ;определение режима работы

WR_ELEM:
MOV FMADRL,R7 ; запись адреса
MOV FMCON,#CONF ; загрузка режима
MOV FMDAT,R5 ; запись данных
MOV R7,FMCON ; копирование состояния для возврата
MOV A,R7 ; чтение состояния
ANL A,#0FH ; сохранение четырех младших битов
JNZ BAD ; анализ ошибки
CLR C ; отсутствие ошибок
RET ; возврат
BAD:
SETB C ; наличие ошибки
RET ; возврат

В LPC микроконтроллерах имеются два специальных перепрограммируемых элемента: загрузочный вектор и загрузочный бит состояния. Если этот бит, равен 0, запуск программы происходит с нулевого адреса. Это заводская установка. В противном случае в качестве старшего байта используется значение загрузочного вектора.
Защита от несанкционированного чтения предусмотрена для каждого сектора в отдельности. Для программирования микроконтроллеров серии LPC имеется программа Flash Magic, которая доступна на сайте www.philips.com.
Порты ввода-вывода, все кроме P1.5/RST, могут быть перенастроены пользователем. Состояние каждой ножки микроконтроллера определяется индивидуально, посредством регистров: PxM1, PxM2.y (где x — номер порта, а y — номер бита) и PTOAD. Их значения показаны в таблице 4.

Таблица 4

PxM1.y PxM2.y Режим вывода порта
0 0 Квазидвунаправленный
0 1 Двухтактный
1 0 Только ввод
1 1 Открытый сток

 


Если выводы микроконтроллера запрограммированы для работы в аналоговом режиме, то цифровые функции блокируются установкой соответствующих битов в регистре PTOAD. Следует учитывать, что после сброса микроконтроллера к его выводам оказываются вновь подключены цифровые функции, поэтому пользователь должен предусмотреть корректную программную установку регистров управления выводами. Уже после выпуска в работе этих микросхем были обнаружены ошибки, которые, к счастью, легко могут быть исправлены программно. А именно: в начале главной программы пользователя необходимо откорректировать конфигурацию портов ввода-вывода. Все они должны быть установлены в Квазидвунаправленный режим работы. Это достигается посредством ниже приведенного фрагмента программы.

ANL P0M1,#00000000B
ANL P1M1,#00000000B
ANL P3M1,#00000000B

Аналоговые компараторы могут быть опрошены программно или вызывать прерывание. На выходе компаратора будет присутствовать логическая единица в случае, если напряжение на положительном входе больше, чем на отрицательном входе. Все режимы работы компаратора задаются в регистре CMP(n) (где n — номер компаратора). После установки бита CEn, разрешающего работу компаратора, пользователь должен организовать задержку длительностью 10 µс. Отрицательный вход может быть подключен к внутреннему опорному напряжению (величиной 1,23 В) или к выводу микроконтроллера. Наличие аналоговых мультиплексоров на входах компараторов позволяет проектировать схемы с минимальным количеством внешних компонентов. Различные варианты конфигурации компараторов показаны на рис. 3.


Рис.3

Компараторы могут функционировать при уменьшенном напряжения питания (до 2,4 В). Ниже приведен фрагмент подпрограммы настройки компаратора.

CMPINIT:
MOV PT0AD,#030h ; Отключение цифровых входов для работы с
; аналоговыми значениями: CIN, CMPREF
ANL P0M2,#0CFh ; Реконфигурация порта Р0, только вход
ORL P0M1,#030h.
MOV CMP1,#024h ; Задание режимов работы компаратора:
; - Отрицательный вход с CMPREF входа
; микросхемы.
; - Разрешение выхода компаратора .
CALL delay10us ; Задержка старта компаратора на 10 мкс
ANL CMP1,#0Feh ; Обнуление флага прерывания компаратора
SETB EC ; Разрешение прерывания от компаратора
; Приоритеты не изменяем.
SETB EA ; Разрешение системного прерывания
RET ; Возврат в основную программу

Синхронизация работы микроконтроллера может быть выбрана из нескольких вариантов, определяемых пользователем: внутреннего емкостно-резистивного (RC) генератора частотой 7,3728 МГц, внешнего генератора или с помощью внешнего кварца (для микроконтроллеров 901 и 906), и от внутреннего генератора 400 кГц сторожевого таймера (Watchdog). Конкретный вариант синхронизации задается при программировании микроконтроллера в регистре UCFG1 (по умолчанию задан режим RC генератора). Работа микроконтроллеров 901 и 906 аппаратно оптимизируется для низких (20…100 кГц), средних (100 кГц…4 МГц) и высоких (4 МГц…12 МГц) частот.
Частота внутреннего RC генератора может быть подстроена пользователем с помощью регистра TRIM . При этом, если частота генератора меньше 8 МГц, то возможна программная установка бита AUXR1.7, что позволяет уменьшить потребляемую мощность.
Частота работы микроконтроллера может быть уменьшена с помощью регистра DIVM:
fмк = fosc / 2N,
где N=0…255 — содержание регистра DIVM.
Эта особенность позволяет задавать микроконтроллеру режим работы на пониженной частоте, тем самым, уменьшая потребляемую мощность. Это может быть полезно, например, при разработке подпрограмм задержки в случаях очень жестких требований к потребляемой мощности.
Таймеры-счетчики по своим режимам работы полностью соответствуют стандартному семейству 51 микроконтроллеров, их максимальная частота счета составляет одну четвертую от частоты синхронизации микроконтроллера. Дополнительно к стандартным режимам, у таймера 0 микроконтроллеров 901 и 907 имеется режим 6, в котором аппаратно осуществляется загрузка содержимого регистра TH0 в регистр TL0. Имеются два режима загрузки: по положительному и отрицательному фронтам, в первом случае загружается значение 256-TH0, во втором TH0. Таким образом, имеется возможность формировать на выходе T0 микроконтроллера импульсы с программируемой скважностью (простейший широтно-импульсный модулятор).
Часы реального времени (системный таймер) позволяют пользователю продолжать отсчет времени, когда часть устройств микроконтроллера отключена. Также они могут служить источником прерывания, для перехода микроконтроллера из режима уменьшенного энергопотребления (спящего) в рабочий режим. Для управления работой часов реального времени используются три регистра: RTCCON, RTCH, RTC2. Организация работы системного таймера показана на рис. 4.



Рис. 4

Прерывания в микроконтроллерах LPC имеют четырехуровневую структуру приоритетов, которая определяется содержанием регистров: IP0, IP0H, IP1 и IP1H. В таблице 5 показано, как задаются приоритеты прерываний.
Таблица 5
 

Бит приоритета Уровень приоритета прерывания
IPxH IPx
0 0 Уровень 0 (низкий приоритет)
0 1 Уровень 1
1 0 Уровень 2
1 1 Уровень 3 (высокий приоритет)


Сами же источники прерываний сведены таблицу 6.

Таблица 6

Описание Бит флага прерывания Адрес вектора прерывания Бит разрешения прерывания Приоритет прерывания Ранг арбитража
Прерывание таймера 0 TF0 000Bh ET0 (IEN0.1) IP0H.1,IP0.1 3
Прерывание таймера 1 TF1 001Bh ET1 (IEN1.3) IP0H.3,IP0.3 5
Последовательный порт Tx и Rx TI & RI 0023h ES/ESR (IEN0.4) IP0H.4,IP0.4 8
Последовательный порт  Rx RI
Обнаружение провалов напряжения BOF 002Bh EB0 (IEN0.5) IP0H.5,IP0.5 1
Сторожевой таймер/Часы реального времени WDOVF/RTCF 0053h EWDRT (IEN0.6) IP0H.6,IP0.6 2
Прерывание клавиатуры KBIF 003Bh EKBI (IEN1.1) IP1H.1,IP1.1 4
Прерывание компаратора CMF 0043h EC (IEN1.2) IP1H.2,IP1.2 6
Последовательный порт Tx TI 006Bh EST (IEN1.6) IP1H.6,IP1.6 7

Отдельно, надо сказать несколько слов, о прерываниях от вспомогательной клавиатуры. Они задаются в трех SFR регистрах: KBPATH — регистр шаблона, KBMASK — регистр маски, KBCON — регистр управления. Выполняемые ими функции соответствуют названию регистров. Флаг прерывания KBIF в регистре KBCON нуждается в программном сбросе.
Сторожевой таймер (watchdog). Зависание микроконтроллера может быть вызвано как аппаратными сбоями (внешними помехами), так и программными ошибками, что совершенно не важно для потребителя, но является основополагающим для разработчика. В то же время требования к достоверности функционирования аппаратуры постоянно растут. Доля программной части в готовом изделии, а, следовательно, и сложность также увеличиваются. Именно эти факторы и желание минимизировать возможные потери в случае несоответствия работы программы заданному алгоритму привело к появлению в составе современных микроконтроллеров сторожевых таймеров. Режимы работы сторожевого таймера задаются при программировании контроллера в битах WDTR (USFG1.7) и WDSE (USFG1.4) байта конфигурации. Выполняемые ими функции приведены в таблице 7.

Таблица 7
 

WDTE (USFG1.7) WDSE (UCFG1.4) Функция
0 x Сброс сторожевого таймера запрещен. Таймер может быть применен как внутренний таймер и может быть применен для выработки прерываний. WDSE не доступен.
1 0 Сброс сторожевого таймера разрешен.Пользователь может установить WDCLK для выбора источникачастоты. 
1 1 Сброс сторожевого таймера разрешен, наряду с дополнительными сохраненными возможностями:                                                        1. WDCLK установлен в 1(используется сторожевой генератор)                                                             2. WDCON и WDL регистры могут быть записаны только один раз                                                                         3. WDRUN установлен в 1 и не может быть очищен программно. 


Структура сторожевого таймера показана на рис.5.



Рис. 5

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

MOV ACC,WDCON ; считываем WDCON
SETB ACC.2 ; устанавливаем бит старта WD_RUN=1
MOV WDL,#0FFh ; загружаем новое значение счётчика
CLR EA ; запрещаем прерывания
MOV WDCON,ACC ; восстановление значения WDCON (после
; разрешения работы сторожевого таймера
; установка значений в нем должна быть
; произведена немедленно)
MOV WFEED1,#0A5h ; запись первой части
MOV WFEED2,#05Ah ; запись второй части
SETB EA ; разрешение системного прерывания

Если используется генератор сторожевого таймера 400 кГц, то временной диапазон срабатывания сторожевого таймера будет составлять от 82,5 мкс до 2,62 с, а при использовании в качестве синхронизации кварца с частотой 12 МГц от 5,5 мкс до 174,8 мс.
Меры призванные обеспечить максимальную надежность функционирования в жестких реальных условиях не ограничиваются введением в состав контроллера сторожевого таймера. Дополнительно введены еще две функции: функция обнаружения кратковременных провалов напряжения и функция включения питания. Для использования данных функций необходимо разблокировать при программировании микроконтроллера бит конфигурации BOE (USFG1.5).
Режим пониженного энергопотребления осуществляется через регистр PCON битами PMOD1 (PCON.1) и PMOD0 (PCON.0).
Состояние 00 определено по умолчанию и означает отключение режимов контроля питания.
Состояние 01 определяется как спящий режим. Разрешена работа периферийных устройств, активизирующих работу процессора через прерывания.
Состояние 10. В этом режиме выключается генератор. Выход из этого режима возможен через любой сброс и через прерывания от кратковременного провала напряжения, от клавиатуры, от системного таймера, от сторожевого таймера и от компаратора. Напряжение питания в этом режиме может быть уменьшено до значения, обеспечивающего сохранение информации в ОЗУ. При пробуждении запускается генератор, стабильность которого гарантирована через 1024 цикла.
Состояние 11. Режим максимальной экономии энергии. Прерывания от кратковременного провала напряжения, и от компаратора также заблокированы. Пробуждение возможно при возникновении прерывания от клавиатуры или от сторожевого таймера.
Универсальный асинхронный приемопередатчик схож со стандартным приемопередатчиком 51 семейства, за исключением того, что таймер 2 не может быть использован для задания скорости передачи. Для задания скорости передачи можно использовать генератор (выходная частота делится на константу), таймер 1, или независимый генератор.
Дополнительно реализованы функции поиска ошибки в кадровой синхронизации, автоматическое опознавание адреса и несколько вариантов прерывания.
В микроконтроллере P89LPC907 нет выхода RxD, то есть UART доступен только в режиме передачи последовательных данных. Для управления работой UART используются следующие регистры: PCON, SCON, SBUF, SADDR, SADEN, SSAT, BRGRI, BRGRO, BRCON.
О режимах сброса в микроконтроллерах семейства LPC следует поговорить отдельно. Использовать или нет внешний вход RST, решается при программировании микросхемы. Если бит PRE (USFG1.6) установлен в 1, данный вход микроконтроллера будет использоваться как внешний сброс, в противном случае это цифровой вход P1.5. Следует обратить внимание на то, что при включении питания этот вход всегда выполняет функцию сброса и внешняя схема, подключенная к этому выводу, не должна устанавливать логический нуль на нем во время сброса.
Организовать сброс можно одним из следующих способов: из вне (когда бит PRE=1), из функций выключения питания и определения провалов напряжения, посредством сторожевого таймера, программно и из UART. Для каждого источника сброса есть соответствующий флаг в регистре RSTSRC.
В заключении статьи необходимо сказать еще об одном регистре — AUXR1. Он не адресуется побитно, но значение каждого бита очень важно, и поэтому опишем все входящие в него биты отдельно:
DPS (AUXR1.0) выбирает один из двух шестнадцати разрядных регистров указателей данных DPTR, не выбранный DPTR регистр не доступен для программы.
AUXR1.2 всегда находится в 0. Это позволяет переключать указатели данных с помощью команд сложения.
SRST (AUXR1.3) позволяет организовать программный сброс микроконтроллера, равноценный аппаратному сбросу.
ENT0 (AUXR1.4) подключает выход таймера 0 к выводу микросхемы (для 901 и 907).
EBRR (AUXR1.6) разрешение прерывания от UART.
CLKLP (AUXR1.7) обеспечивает уменьшение мощности потребления при частоте синхронизации меньше 8МГц.



Литература:
www.semiconductors.philips.com/microcontrollers


Авторы:
Андрей Сошкин
Андрей Мамонтов