Текст
                    Матюшов Н. В.
Начало работы
с микроконтроллерами
STM8

Глава 1 Общая информация о микроконтроллерах STM8 Компания STMicroelectronics является одним из лидеров в области созда- ния электронных компонентов —- усилителей, аудио, микроконтроллеров, АЦП и ЦАП, микросхем интерфейсов, фильтров, переключателей, мульти- плексоров и многих других. Одной из основных направлений продукции ком- пании — восьмиразрядные микроконтроллеры с архитектурой STM8. На ос- нове архитектуры STM8 основаны четыре серии микроконтроллеров: — STM8S — микроконтроллеры для общего применения; —STM8L — микроконтроллеры для устройств с низким потреблением и батарейным питанием; — STM8AF — микроконтроллеры для автомобильной электроники; — STM8AL — микроконтроллеры для автомобильной электроники в энер- госберегающих приложениях. Серия STM8S является основной, так как она «перекрывает» большинство применений восьмиразрядных микроконтроллеров. Микроконтроллеры се- рии STM8S основаны на архитектуре STM8, построены по технологии 130 нм, что позволяет им работать на частотах до 24 МГц. Наличие встроенной памя- ти EEPROM, внутренних источников тактового сигнала и большого набора периферийных модулей позволяют использовать эти микроконтроллеры во многих встраиваемых приложениях. Серия STM8S состоит из четырех линеек: — STM8S003/005/007 — линейка «Value line» — микроконтроллеры «на- чального» уровня с базовым набором функций — имеют малое допусти- мое количество перезаписи памяти программ; — STM8S103/105 — линейка « Access line» — имеют больше функций, памя- ти, большее количество циклов перезаписи памяти; — STM8S207/208 — линейка «Performance line» — имеют полный набор функций; — STM8S903 — линейка микроконтроллеров специального назначения. Линейки обладают различными функциями, но, тем не менее, между ними сохранена совместимость «Корпус в корпус», что позволяет при необходимо- сти переходить на более производительные микроконтроллеры простой заме- ной.
6 Глава 1. Общая информация о микроконтроллерах STM8 Обозначение микроконтроллеров Микроконтроллеры STM обозначаются буквенно-цифровым индексом, в котором содержится обозначение архитектуры, тип корпуса, назначение, объем памяти и т.д. Таблица 1.1. Обозначение микроконтроллеров STM8 Позиция в обозначении 1 2 3 4 5 6 7 Пример STM8 S 105 С 6 Т 6 Таблица 1.2. Расшифровка обозначений микроконтроллеров STM8 Позиция в обозначении Значение Варианты 1 Семейство микроконтроллеров STM32 — 32-битовые ARM-микроконтроллеры STM8 — восьмибитные микроконтроллеры на архитектуре STM8 2 Тип продукта F — основной; L — для низкопотребляющих применений; Р — предварительно запрограммированный; S — стандарный; Т ’—для сенсорных клавиш; W — для беспроводной передачи данных; 3 Линейка 003/005/007—Value line 103/105 — Access line 207/208 — Performance line 4 Количество выводов Y-16 F —20 E —24 G —28 K —32 T —36 D —38 H —40 J —42 S —44 C —48 N —56
Глава 1. Общая информация о микроконтроллерах STM8 7 Позиция в обозначении Значение Варианты 0 — 1 Кбайт 1 — 2 Кбайт 2 — 4 Кбайт 3 — 8 Кбайт 5 Объем FLASH памяти 4 —16 Кбайт 5 — 24 Кбайт 6 — 32 Кбайт 7 — 48 Кбайт 8 — 64 Кбайт 9 — 72 Кбайт В — Plastic DIP D — Ceramic DIP G — Ceramic QFP H —UFBGA/TFBGA 1 —UFBGA 6 Тип корпуса M — Plastic SO P—TSSOP Q — Plastic QFP T —Plastic TQFP U — UQFN Y —CSP 3 — (-4O...+125)°c 7 Диапазон температур 6 —(-4O...+85)°c 7 —(-40...+105)°c Документация Документация от производителя STM8 имеет оригинальную структуру. Разработчику дается руководство пользователя (User Manual — UM) на одно семейство микроконтроллеров. В нем описаны организация; периферийные узлы. На конкретный микроконтроллер есть «Datasheet». В нем перечислено, что из периферийных узлов есть в каждой конкретной модели МК, диапазон адресов, таблицы векторов прерываний. Таблица 1.3. Перечень документации на микроконтроллеры STM8S ____________________________Основное руководство____________________________ CD00190271 (RM0016 STM8S and STM8A microcontroller fa mi lies).pdf — содержит описание периферийных модулей микроконтроллеров STM8S и STM8A
8 Глава 1. Общая информация о микроконтроллерах STM8 ________________________Руководство по программированию________________________ CD00161709 (РМ0044 STM8 CPU programming manual).pdf — описание архитектуры, регистров процессора, видов памяти, адресации, работы конвейера, ассемблерных команд_________________________________________________ CD00191343 (РМ0051 STM8S and STM8A Flash program and data EEPROM).po.__________ Документация на линейки микроконтроллеров CD00197787 (STM8S207xx STM8S208xx).pdf — содержит описание микроконтроллера, структурную схему, описание и назначение выводов в различных корпусах, карты памяти, таблицу векторов прерываний, электрические характеристики, кратко — работу центрального процессора, его программирование, тактирование, энергосбережение и т.д.________________________ CDQQ2Q0092 (STM8S105xx).pdf____________________________________________________ CD0022664Q (STM8S103K3 STM8S103F3 STM8SlO3F2).pdf______________________________ CD00231332 (STM8S903K3 STM8S903F3).pdf_________________________________________ DM00024550 (STM8S003K3 STM8S003F3).pdf_________________________________________ DM00037613 (STM8S005K6 STM8S005C6).pdf_________________________________________ ___________________________Руководства по применению___________________________ CD00174392 (AN2645 Migration and compatibility for STM8S MCU).pdf — описывает особенности каждой линейки микроконтроллеров, полностью совместимые периферийные модули, рекомендации (по каждому периферийному модулю) по переходу с одной линеики на другую__________________________________ CD00174533 (AN2646 Smartcard interface with the STM8S microcontroller).pdf — описывает реализацию интерфейса «Smartcard» и настройку модуля UART для работы в качестве этого интерфейса_____________________________________________ CD00176594 (AN2658 Using the analog to digital converter of the STM8S microcontroller).pdf — описывает работу модуля АЦП, характеристики (программные и аппаратные), методы повышения точности, запуск от таймера 1_______________________________ CD00181299 (AN2687 STM8S20x LCD software driverj.pdf — программная реализация контроллера управления LCD-дисплеем, содержит описание и пример кода для управления LCD-дисплеем_____________________________ CD00190266 (AN2737 Basic IAP example using the STM812C and SPl peripherals).pdf — содержит описание внутрисхемного программирования по интерфейсам I2C и SPI — аппаратную реализацию и протокол_______________________________________ CD00194637 (AN2752 Getting started with the STM8S and STM8A).pdf — описывает микроконтроллеры STM8S, STM8A, их характеристики, типовые схемы включения, описание программных и аппаратных средств для работы с ними_________ CD00208721 (AN2822 STM8S and STM8A high speed internal oscillator calibration).pdf — измерение поправок к частоте генератора HSI и их учет, временные характеристики подстройки частоты, примеры кода для проведения этой процедуры_________________ CD00219011 (AN2§57 STM8S and STM8A family power management).pdf — содержит полную информацию об энергопотреблении — режимы энергосбережения, тактирование, описание внутренних узлов питания, рекомендации по снижению энергопотребления
Глава 1. Общая информация о микроконтроллерах STM8 9 ____________________________Руководства по применению____________________________ CD00219924 (AN2860 EMC guidelines for STM8 microcontrollers).pdf — содержит информацию об электромагнитной совместимости STM8 и ее повышении — рекомендации по подключению источников питания, проектированию печатной платы, программированию__________________________________ CD00221665 (AN2867 Oscillator design guide for STM8S STM8A microcontrollers).pdf — рекомендации по подключению внешнего кварцевого генератора (общее описание, выбор и расчет параметров элементов) Также стоит отметить, что производитель микроконтроллеров предостав- ляет не только документацию по микроконтроллерам, но и среду разработки, бесплатный компилятор (правда, только для ассемблера) и библиотеки (на языке Си) для работы с периферийными модулями (Standart Peripheral Library — SPL — содержат заголовки, исходные коды функций и примеры ра- боты для всех периферийных узлов микроконтроллера). Отладочная плата STM8S-Discovery В данной книге описывается начало работы с восьмиразрядными микро- контроллерами семейства STM8S на примере демонстрационной платы STM8S-Discovery. Плата представляет комплексное устройство, состоящее из двух частей — программатор-отладчик и отладочная (демонстрационная) часть. В программаторе-отладчике находится интерфейс для связи с ком- пьютером, стабилизаторы питания, разъем SWIM (однопроходный отладоч- ный интерфейс). На оставшейся части расположен микроконтроллер STM8S105C6T6. Все его выводы распаяны на разъемы. Также на плате рас- положены: — сенсорная кнопка TS1 и пользовательский светодиод LD1; — разъемы расширения, в которые выведены все доступные линии ввода/ вывода МК; — монтажное поле для макетирования пользовательских схем; — встроенный внутрисхемный программатор/отладчик ST-LINK (предус- мотрена отладка и программирование только МК семейства STM8S); — микроконтроллер STM8S105C6T6. Между этими модулями на плате расположен конструктивный пропил (см. Рисунок 1.1), надломив который, возможно разделить эти модули и использо- вать их отдельно. Таким образом у пользователя появляется программатор, которым можно программировать любые микроконтроллеры семейства STM8, и микроконтроллерный модуль с выведенными на разъемы выводами, который может быть непосредственно встроен в какое-либо устройство.
Глава 1. Общая информация о микроконтроллерах STM8 10 Модуль отладчика ST-LINK г «I и п « » и «а лии Н И « Светодиод индикации передачи по USB и и It м SIMM U SB-разъём ST-LINK JTAG Z3S й Процессорное ядро pST-LINK —Разъём SWIM Контроллерный модуль Г ранииа ра зде тения Ы -модулей I Светодиод LD1 Джампер питания । Кварцевый —МК STM8S105C6T6 м и S? «к W siiuu; .. В ** w <Г“Кн0Пка TS1 <W .11'111» •ь1* Посадочное место под микросхему в корпусе SO 16 Рисунок 1.1. Плата STM8S-Discovery *J> , Макетное поле ЛТ" «« Таблица 1.4. Обозначение выводов разъема CN1 платы STM8S-Discovery Номер вывода (разъем Сп1) Номер вывода (МК) Название вывода Тип Функция Альтернативная функция 1 1 NRST 10 Reset 2 2 OSCIN/PA1 10 Port A1 3 3 OSCOUT/PA2 10 Port A2 4 4 Vssio_1 s I/O ground 5 5 Vss s Digital ground 6 6 VCAP s 1.8V regulator capacitor 7 7 Vdd s Digital power supply 8 8 Vddio_1 s I/O power supply 9 9 РАЗ IO Port A3 10 10 PA4 IO Port A4 11 11 PA5 10 Port A5 12 12 PA6 IO Port A6
Глава 1. Общая информация о микроконтроллерах STM8 11 Таблица 1.5. Обозначение выводов разъема CN2 платы STM8S-Discovery Номер вывода (разъем Сп2) Номер вывода (МК) Название вывода Тип Функция Альтернативная функция 1 25 РЕ5 IO Port E5 SPI master / slave 2 26 PC1/TS1 IO Port Cl Timer 1 —channel 1 / UART2 synchronous clock 3 27 РС2/ TS1 Joad IO Port C2 Timer 1 — channel 4 28 РСЗ IO Port C3 Timer 1 —channel 3 5 29 РС4 IO Port C4 Timer 1 —channel 4 б 30 РС5 IO Port C5 SPI clock 7 31 Vssio_2 s I/O ground 8 32 Vddio_2 s I/O power supply 9 33 РС6 IO Port C6 SPI master out / slave in 10 34 РС7 IO Port C7 SPI master in / slave out 11 35 PGO IO Port GO 12 36 PG1 IO Port G1 Таблица 1.6. Обозначение выводов разъема CN3 платы STM8S-Discovery Номер вывода (разъем Cnl) Номер вывода (МК) Название вывода Тип Функция Альтернативная функция 1 13 Vdda S Analog power supply 2 14 Vssa S Analog ground 3 15 РВ7 10 Port B7 Analog input 7 4 16 РВ6 10 Port B6 Analog input 6 5 17 РВ5 10 Port B5 Analog input 5 6 18 РВ4 10 Port B4 Analog input 4 7 19 РВЗ 10 Port B3 Analog input 3 8 20 РВ2 10 Port B2 Analog input 2 9 21 РВ1 10 Port Bl Analog input 1 10 22 РВО 10 Port BO Analog input 0 11 23 РЕ7 10 Port E7 Analog input 8 12 24 РЕ6 10 Port E6 Analog input 9(2) Таблица 1.7. Обозначение выводов разъема CN4 платы STM8S-Discovery Номер вывода (разъем Cnl) Номер вывода (МК) Название вывода Тип Функция Альтернативная функция 1 37 РЕЗ IO Port ЕЗ Timer 1 — break Input 2 38 РЕ2 IO Port Е2 I2C data
12 Глава 1. Общая информация о микроконтроллерах STM8 Номер вывода (разъем Сп1) Номер вывода (МК) Название вывода Тип Функция Альтернативная функция 3 39 РЕ1 Ю Port Е1 I2C clock 4 40 РЕО 10 Port ЕО Configurable clock output 5 41 PDO/LED 10 Port DO Timer 3 — channel 2 6 42 PD1/SWIM 10 Port D1 SWIM data interface 7 43 PD2 10 Port D2 Timer 3 — channel 1 8 44 PD3 10 Port D3 Timer 2 — channel 2 9 45 PD4 10 Port D4 Timer 2 — channel 1 10 46 PD5 10 Port D5 UART2 data transmit 11 47 PD6 10 Port D6 UART2 data receive 12 48 PD7 10 Port D7 Top level interrupt Характеристики микроконтроллера STM8S105C6T6 Здесь и далее по тексту будет идти речь о семействе микроконтроллеров STM8S. ППри написании книги в некоторых случаях использовалась оценоч- ная плата STM8S-Discovery с установленным на ней микроконтроллером STM8S105C6T6. Этот МК имеет следующие характеристики: — ядро: Оригинальное ядро STM8 с быстродействием до 16 MIPS и 3-х уровневым конвейером; — расширенный набор команд; — виды памяти: — энергонезависимая память программ 32 Кб (Flash), хранение данных до 20 лет при температуре не выше 55 С; — энергонезависимая память данных 1 (EEPROM) Кб, 300 тысяч циклов перезаписи; — энергозависимое ОЗУ 2 Кб; — регистры конфигурации; — рабочее напряжение от 2,95 В до 5,5 В; — система безопасности тактирования с отслеживанием и переключением источника тактирования с внешнего па встроенный в аварийных ситуа- циях; — 4 источника тактирования: — встроенный высокочастотный генератор 16 МГц;
Глава 1. Общая информация о микроконтроллерах STM8 13 — встроенный низкочастотный генератор 128 КГц; — внешний генератор тактовых импульсов; — внешний кварцевый резонатор; — управление энергопотреблением: — режимы энергосбережения: — WAIT — отключено тактирования CPU; - ACTIVE-HALT — отключено тактирование CPU и работа HSI- генератора, также возможно отключение основного генератора; — HALT — отключены: основной регулятор напряжения, генераторы тактовых сигналов, тактирование CPU. — возможность индивидуального и независимого включения и выключе- ния периферийных узлов; — система периодического пробуждения из энергосберегающих режимов AWU; — система сброса с отслеживанием источника сброса; — система прерываний: — 23 вектора прерывания (причем один модуль может иметь как один вектор от одного источника прерывания, так и один вектор от несколь- ких источников прерывания); — программируемый приоритет прерываний; — таймеры: — один 16-ти разрядный таймер с расширенными функциями; — два 16-ти разрядных таймеров общего назначения; — один 8-ми разрядный базовый таймер; — сторожевые таймеры: — независимый сторожевой таймер; — оконный сторожевой таймер; — связной модуль UART; — связной модуль SPI; — связной модуль I2C; — интерфейс программирования SWIM; — встроенный загрузчик; - 96-ти разрядный уникальный номер для каждого микроконтроллера.
Глава 2 Порты ввода — вывода STM8S Все микроконтроллеры STM8 имеют в своем составе порты ввода — выво- да. Каждый порт ввода-вывода представляет собой совокупность линий по 8 штук, имеющих общее управление. Порты используются для передачи или приема данных на физические выводы микроконтроллера. Каждый порт ввода-вывода содержат до 8 бит (для микроконтроллера STM8S105C6T6 — пять в порту Е, шесть в порту А, семь — в порту С, восемь — в портах В и D). Каждый бит, отдельно от остальных, может быть настроен как вход или как выход. i ! II fj i И П I ! п п ; I пп ' 48 4/ К. 45 44 43 42 41 40 39 38 37 NRST Г 1 • 3<i 2JPG1 OSCIN/PAI L 2 3G □PGO ОЯСОШ7РЛ2 Г 3*1 □ PC7(lfS)/SFI MISO VSSIO 1 L 4 33 □PCS (HSySI‘1 MOSi VSS L 5 32 JVDDIO ? VCAP c f. л □VSSIO 2 vnn Г 7 30 □ PCf>(HSySPI SCK VIHlfO 1 E 8 29 jPCI (HSyTIMI CI14 [ПМЗ CHIJTIM2 СНЗ/РАЗ c 4 28 “lPC3(IISyriM1 CH3 (HSJPA4 c 10 27 □ РС?(НЗУПМ1 CH2 (1 IS)PA5 I 11 2fi □ PC1 (HSyilMI CH1/IJAHT2 CK (HS)PAfi и 1? □Ptfi'Sf'f NSS 13 14 15 18 17 18 1“ 20 21 22 23 24 > 'пип П ЕГО П' □ ттп п ч- С1 <л яз р 0- со СП о. «1 t- t£> UJ UJ a a tu 3> z z At) h m й й O’ J- X X I | t О О О и о 5 ,j Tj ' ' “ L. E. E Рисунок 2.1. Расположение выводов микроконтроллера STM8S105С6Т6 Кроме того, многие линии ввода-вывода имеют альтернативные функции, такие как аналоговые входы, входы для внешних прерываний, специализиро- ванные вводы-выводы для периферийных узлов микроконтроллера. Только одна альтернативная функция может быть перенастроена на другой вывод, (см. описание битов конфигурации AFR).
Глава 2. Порты ввода — вывода STM8S 15 Основные возможности портов ввода-вывода: — каждый порт и каждый бит порта может быть настроен независимо от других; — режимы ввода: плавающий вход или вход с подтяжкой к VDDIO; — режимы вывода: выход push-pull или open-drain; — отдельные регистры для входных и выходных данных; — возможность настройки отдельных вы вод о в как источники внешних пре- рываний; — возможность управления скоростью переключения вывода порта; — альтернативные функции ввода — выводы для встроенных в микрокон- троллер периферийных узлов; — отключение входного триггера Шмидта при использовании вывода для АЦП; — операции типа «Чтение-модификация-запись» над регистрами порта; — работа в диапазоне напряжений 1,6 до 5 В. Структурная схема линии порта ввода — вывода Примечание: если в настройках аналоговых периферийных модулей вы- бран аналоговый вход, выходной каскад отключается. Каждый порт обозначается буквой. Например, в микроконтроллере STM8S.
16 Глава 2. Порты ввода — вывода STM8S Рисунок 2.2. Структурная схема отдельной линии порта ввода-вывода Особенности работы портов При сбросе, все порты настроены на как плавающие входы. Неиспользуемые выводы должны быть подключены к источнику фиксиро- ванного напряжения (либо, должны быть подключены внутренние подтяги- вающие резисторы) и настроены в качестве плавающих входов. Некоторые выводы микроконтроллера могут быть использованы не как вы- воды порта, а как входы или выходы для выполнения альтернативных функ- ций (для работы периферийных модулей — счетные входы таймеров, входы и
Глава 2. Порты ввода — вывода STM8S 17 выходы модулей SPI, UART, и т. п.). Входы альтернативных функции не на- страиваются автоматически. Для активации соответствующих функций, Вы должны сначала включить нужный вам модуль, а потом выбрать для необходимых выводов режим плава- ющего входа или входа с подтяжкой, либо выхода push-pull или open-drain в зависимости от настроек бит DDRx и CRlx. Многие выводы портов могут быть настроены как входы с прерыванием (настройкой регистров Рх DDR, Px_CRl, Рх CR2). При этих настройках, если на соответствующий вывод микроконтроллера будет подан настроенный регистрами EXT1CR1 и EXTI CR2 фронт (восходящий или падающий) или уровень сигнала, то будет сгенерирован запрос на прерывание от порта. Внеш- ние прерывания доступны только если соответствующий вывод порта настро- ен как вход с прерыванием. По-умолчанию, прерывания портов запрещены. Стоит отметить, что в микроконтроллере существует отдельное прерывание высшего уровня по событию на выводе микроконтроллера TLI (PD7). При прерывающим событии на выводе микроконтроллера будет вызван обработ- чик прерывания TL1. В целом, состояние бит регистров портов вода — вывода и соответствующие режимы работы, можно свести в одну таблицу: Таблица 2.1. Настройки линии порта ввода-вывода Режим DDR CR1 CR2 функция Подтяжка Режим «Push-pull» Г. г бит Бит Ввод 0 0 0 Плавающий без прерываний Откл. 0 1 0 Вход с подтяжкой без прерываний Вклю Откл. 0 0 1 Плавающий с прерыванием Откл. 0 1 1 Плавающий без прерываний Вкл. Вывод 1 0 0 Вывод open drain Откл. 1 1 0 Вывод push puli Откл. Вкл. 1 0 1 Вывод «open drain», быстрое переключение Откл. 1 1 1 Вывод «push-pull», быстрое переключение Вкл. Вкл. 1 Не исп. Не исп. «True open drain» (для специальных выводов) не реализовано для этого вывода
18 Глава 2. Порты ввода — вывода STM8S Работа линии порта с аналоговыми сигналами В составе микроконтроллеров STM8S есть аналогово-цифровое преобразо- ватель. Для корректной его работы необходимо отключение триггера Шмидта на определенном выводе микроконтроллера, это отключение производится настройкой регистра ADCTDR. Таблица 2.2. Настройки линии порта для работы с аналоговым сигналом DDR CR1 CR2 ADCJTDR Конфигурация Комментарии 0 0 0 1 Плавающий вход, без прерываний, триггер Шмидта отключен Рекомендуется для работы аналого-цифрового преобразователя 0 1 X X Вход с подтяжкой Не рекомендуемые настройки 1 0 X X Выход 1 1 X X Выход Регистры портов ввода — вывода Регистр выходных данных порта X (PxODR). В этом регистре содержится значение, которое должно быть установлено на физических выводах порта в режиме выхода. Таблица 2.3. Описание регистра PxODR 7 6 5 4 3 2 1 0 ODR7 ODR6 ODR5 ODR4 ODR3 ODR2 ODR1 ODRO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Регистр входных данных портаХ (PxIDR). В этом регистре содержится текущее состояние битов порта. Этот регистр доступен только для чтения, причем, как в режиме входа, так и в режиме вы- хода. Нулевой логический уровень на позиции бита соответствует нулевому логическому уровню на соответствующем выводе микроконтроллера. Стоит отмстить, что состояние битов регистра Px IDR может зависеть от подклю- ченных к выводам этого порта устройств. Таблица 2.4. Описание регистра Px.IDR 7 6 5 4 3 2 1 0 IDR7 IDR6 IDR5 IDR4 IDR3 IDR2 IDR1 IDR0 ЧТ ЧТ ЧТ ЧТ ЧТ ЧТ ЧТ ЧТ
Глава 2. Порты ввода — вывода STM8S 19 Регистр направления данных порта X (Px_DDR). Биты этого регистра определяют направление данных . Ноль — ввод, еди- ница — вывод. Таблица 2.5. Описание регистра Px_DDR 7 6 5 4 3 2 1 0 DDR7 DDR6 DDR5 DDR4 DDR3 DDR2 DDR1 DDR0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Регистр управления 1 портаХ (PxCRl) Имеет значение по сбросу 0x00, за исключением PDCR1 который имеет значение 0x02. Регистр CR1 в режиме входа управляет подтяжкой (ноль — плавающий вход, единица — подключена подтяжка pull-up), а в режиме выхода — включе- нием режима (0 — режим open-drain, 1 — режим push-pull). Таблица 2.6. Описание регистра Px.CRI 7 6 5 4 3 2 1 0 С17 С16 С15 С14 С13 С12 С11 СЮ чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Примечание: состояние битов этого регистра не оказывают никакого влия- ния на выводы работающие в режиме «true open drain» (например, в микро- контроллере STM8S105C6T6 это выводы РЕ1 и РЕ2). Регистр управления 2 порта X (Px_CR2). Регистр Px_CR2 Таблица 2.7. Описание регистра Px_CR2 7 6 5 4 3 2 1 0 С27 С26 С25 С24 С23 С22 С21 С20 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Установка этих бит в режиме входа разрешает прерывание от соответствую- щего вывода. Если бит порта ввода — вывода не имеет возможности прерыва- ния, то установка и сброс этих значений не окажет никакого эффекта. В ре- жиме выхода состояние бита будет определять «скорость» порта (ноль — до- пустимая частота переключения до 2 МГц, единица — до 10 МГц), переклю- чение скорости доступно в режимах выхода push-pull и open-drain.
Глава 3 Контроллер прерываний Прерывание это высокоприоритетная программа, которую должен выполнить микроконтроллер при возникновении определенного события (прерывание по переполнению таймера, по завершению приема байта информации по коммуни- кационным интерфейсам, прерывание по завершению преобразования АЦП, по установке определенного логического уровня на выводе микроконтроллера, и т.п.). При наступлении события, в различных регистрах периферийных регистров устанавливаются флаги этих событий, и, если прерывание по этому событию раз- решено, формируется запрос на обработку прерывания. При этом происходит приостановка выполнения основной программы, извлечение в счетчик команд адреса начала соответствующей программы обработки прерывания и переход по этому адресу (происходит переход по вектору обработки прерывания). В микроконтроллерах STM8S существуют аппаратные и программные пре- рывания. Аппаратными прерываниями являются те, которые вызваны запро- сами от периферийных модулей микроконтроллера (таймеры, интерфейсы, АЦП, и т.д.). Также существует одно программное прерывание (TRAP), кото- рое программист может использовать, например, для обработки ошибок. Обработка прерывания состоит из трех основных частей: сохранения кон- текста, выполнения кода прерывания, восстановление контекста. В процессе сохранения контекста, в стеке аппаратно сохраняется содержимое регистров центрального процессора (СС, A, XL, ХН, YL, YH, РСЕ, PCH, PCL). Помимо этого стоит отметить, что при входе в прерывание значения битов II, 10 реги- стра СС меняются на значения, приведенные для этого прерывания в реги- стре ITC_SPR (на этом основан режим вложенных прерываний). При вызове прерывания происходит переход по вектору прерывания. Он представляет собой адрес начала подпрограммы обработки прерывания. При возникновении запроса на прерывания, содержимое этого вектора извлекает- ся в счетчик команд. Таблица векторов прерываний Таблица векторов прерываний находится в памяти программ (flash) в диапа- зоне адресов 0x8000 — 0x8080. Прерывания расставлены в порядке аппаратного приоритета (это влияет на порядок обработки «очереди» прерываний). Каждый вектор занимает 4 байта, что позволяет адресоваться ко всей памяти программ. Стоит отметить, что количество векторов и значение размера памяти программ, даже для микроконтроллеров одного семейства, отличаются. Например, табли- ца векторов прерываний микроконтроллера STM8S105C6T6 (именно такой микроконтроллер установлен на плате STM8S-discovery) выглядит так:
Таблица 3.1. Таблица векторов прерываний № Прер-я Модуль-источ- ник прер-я Описание прерывания Пробуждение из режима HALT Пробуждение из режима ACTIVE-HALT Адрес вектора прерывания RESET сброс Да Да 8000 TRAP Программное прерывание и 8004 0 TLI Внешнее прерывание высшего уровня — — 8008 1 AWU Прерывание системы AWU (автоматическое пробуждение из режима HALT) — Да 800С 2 CLK Прерывание модуля тактирования 8010 3 EXTIO Внешние прерывания порта А Да Да 8014 4 EXTI1 Внешние прерывания порта В Да Да 8018 5 EXTI2 Внешние прерывания порта С Да Да 801С 6 EXTI3 Внешние прерывания порта D Да Да 8020 7 EXTI4 Внешние прерывания порта Е Да Да 8024 8 Зарезервировано, не используется — — 8028 9 Зарезервировано, не используется — 802С 10 SPI Окончание передачи модуля SPI Да Да 8030 11 TIM1 Обновление / переполнение / опустошение / срабатывание триггера / останов таймера TIM 1 — — 8034 12 TIM1 Прерывание захвата/сравнения таймера TIM1 — — 8038 13 TIM2 Обновление / переполнение таймера TIM2 — - 803С 14 TIM2 Прерывание захвата / сравнения TIM2 * — 8040 15 TIM3 Обновление / переполнение таймера TIM3 — — 8044 16 TIM3 Прерывание захвата/сравнения таймера TIM3 — — 8048 17 Зарезервировано — 804С 18 Зарезервировано — — 8050 19 PC Прерывание интерфейса I2C Да Да 8054 Глава 3. Контроллер прерывании
№ Прер-я Модуль-источ- ник прер-я Описание прерывания Пробуждение из режима HALT Пробуждение из режима ACTIVE-HALT Адрес вектора прерывания 20 UART2 Прерывание по завершению передачи модуля U ART — — 8058 21 UART2 Receive register DATA FULL. Прерывание по завершению приема UART2 — — 805С 22 ADC1 Окончание преобразования / срабатывания аналогового сторожа — 8060 23 TIM4 Прерывание по переполнению TIM4 TIM обновление / переполнения — — 8064 24 Flash Прерывание по окончанию записи во flash ЕОР/WR_PG_DIS ОТ — 8068 Зарезервировано, не используется 806С 807С Глава 3. Контроллер прерываний
Глава 3. Контроллер прерываний 23 Некоторые модули имеют одно прерывание, но внутри модуля его оно может быть вызвано по разным причинам (все эти источники прерывания имеют соот- ветствующие флаги прерываний). Поэтому при входе в процедуру обработки прерывания, должен быть найден соответствующий источник прерывания и сброшен его флаг, т.к. в большинстве случаев он аппаратно не сбрасывается. В противном случае при выходе из обработчика будет повторно сформирован за- прос на прерывание. Во время обработки прерывания могут поступать запросы на выполнение других прерываний. В этом случае, по описанному далее алгорит- му, будет определено прерывание для обработки и будет запущен его обработчик. Обработка прерывания В микроконтроллерах STM8S существуют аппаратные и программные пре- рывания. Аппаратными прерываниями являются те, которые вызваны запро- сами от периферийных модулей микроконтроллера (таймеры, интерфейсы, АЦП, и т.д.). Также существует одно программное прерывание, которое про- граммист может использовать, например, для обнаружения ошибок. При возникновения прерывания, если оно разрешено, завершается выпол- нение текущей программы. Далее, в стек помещаются регистры ядра (счетчик команд, индексные регистры X и Y, регистр аккумулятор, регистр состояния кода). После этого в счетчик команд загружается значение вектора прерыва- ния и начинается его обработка. По завершению обработки прерывания (ко- мандой IRET), вышеперечисленные содержимое вышеперечисленных реги- стров извлекается из стека, и микроконтроллер возвращается в состояние, предшествующее вызову прерывания. Программный и аппаратный приоритет прерываний Программный приоритет прерываний задается с помощью битов 11,10 в ре- гистре CCR а также — программной настройкой приоритетов (измерением значения регистра ITC SPR). Для каждого прерывания изменением содержимого битов регистров 1ТС__ SPR может быть программно задан уровень прерывания. Задание приорите- тов прерываний необходимо в случаях, когда в процессе обработки одного прерывания, поступил запрос на обработку другого для определения какое из них будет отложено, а какое обрабатываться. Если возникшее входе выполне- ния первого, второе имеет более высокий приоритет, первое будет приоста-
24 Глава 3. Контроллер прерываний новлено с сохранением контекста, и обработано когда его программные и ап- паратные приоритеты допустят его обработку. Таблица 3.2. Настройки уровня приоритета прерываний Рисунок 3.1. Алгоритм обработки прерывания. Аппаратный приоритет прерывания определяется «положением» в таблице векторов прерываний — чем меньше адрес вектора прерывания, тем выше его аппаратный приоритет. Последовательность обработки прерываний Во время выполнения одного прерывания в ITC (контроллер прерываний) могут поступать запросы на выполнение других прерываний. Такие прерыва- ние называются отложенным. Прерывание, которое будет обрабатываться в этом случае, будет определено следующим алгоритмом: — если вновь вызванное прерывание имеет более высокий программный приоритет чем текущее, процессор переходит на его обработку (соответ-
Глава 3. Контроллер прерываний 25 ственно, если программный приоритет ниже, то прерывание переходит в состояние отложенного); — если у прерываний одинаковые уровни программного приоритета, будет выполняться то, которое имеет более высокий аппаратный приоритет (меныпий адрес обработчика в таблице векторов прерывания). Таким образом, в зависимости от программного и аппаратного уровней пре- рывания, запрос на прерывание либо будет обработан, либо будет ожидать, пока его уровни приоритета не станут выше чем у исполняемого прерывания. Схематично эта процедура выполняется так: Ожидающее прерывание Равный Программный приоритет Различный Выполняется прерывание с более высоким программным приоритетом Обрабатывается прерывание с более высоким аппаратным приоритетом Рисунок 3.2. Алгоритм выбора обрабатываемого и ожидающего прерывания. Примечания: 1. Аппаратный приоритет является фиксированным (т.е. зависит от положе- ния в таблице векторов прерываний), а программный может быть изменен в процессе работы программы. Наличие программного и аппаратного при- оритетов позволяет исключить возможность конфликтов прерываний. 2. Прерывания RESET, TLI, TRAP имеют наивысший программный прио- ритет при выборе исполняемого прерывания. В микроконтроллерах STM8S существуют несколько энергосберегающих режимов: HALT, ACTIVE HALT и WAIT. Все прерывания могут выводить ми- кроконтроллер из режима WAIT. Некоторые могут выводить из режима HALT. Если входе работы микроконтроллер находился в режиме HALT, и возник- ла такая ситуация, когда в очереди несколько прерываний, в соответствии с алгоритмом на рисунке 3.2, будет выбрано одно из них, и, если оно не может вывести контроллер из режима HALT, то оно будет обработано при выходе из этого режима, соответственно, задержав все остальные прерывания.
26 Глава 3. Контроллер прерываний Одной из особенностей контроллера прерываний является возможность определить уровень активности — настраивается программированием бита AL в регистре CFG_GCR. Существуют два уровня активации — основной уровень и для прерываний. Если выбран основной уровень активации, то при выходе из прерывания, будет восстановлен контекст прерывания и после ко- манды WF1 будет продолжено выполнение основной программмы програм- мы. При уровне активации для прерываний, контекст не восстанавливается и контроллер снова переходит в Halt режим. Режимы управления прерываниями Особенностью микроконтроллеров stm8 является два режима управления прерываниями: конкурирующие прерывания и вложенные прерывания. Конкурирующие прерывания — когда конфигурацией битов II и 10 уста- новлен самый высокий приоритет прерываний, при этом, в случае поступле- ния запроса на прерывание во время исполнения другого прерывания, теку- щее нс будет прервано, т.к. имеет наивысший приоритет (исключением явля- ются прерывания RESET, TRAP, TLI). Поступивший запрос будет выполнен по завершению текущего прерывания, т.о. образуется «Очередь» прерываний. Рисунок 3.3. Выполнение прерываний с различными приоритетами. На данной картинке показано, в каком порядке будут выполняться преры- вания при последовательном вызове прерываний IT2, IT1, IT4, IT3, TRAP, ITO на фоне выполнения различных текущих прерываний. Аппаратные при- оритеты прерываний таковы: IT4, IT3,1Т2, IT1, ITO, TRAP. На фоне выполне- ния программы main, было вызвано прерывание IT2, процессор приступил к его обработке, во время обработки IT2 поступили запросы на обработку IT1,
Глава 3. Контроллер прерываний 27 IT4, IT3, т.о. была сформирована очередь. По завершению исполнения пре- рывания IT2, было вызвано наиболее «аппаратно» приоритетное из «очере- ди», т.е. IT1, по, в ходе его выполнения было вызвано прерывание TRAP, и, поскольку оно является абсолютно приоритетным, начался процесс его об- работки. На фоне TRAP поступил запрос на выполнение IT0. По завершению обработки TRAP, процессор вернулся к обработке 1Т1, по завершению его выполнения было выбранное наиболее «Аппаратно приоритетное» из очере- ди — IT0. Далее контроллер выполнил обработку прерываний 1ТЗ и IT4 — в соответствии с их приоритетами. По окончании выполнения прерываний, контроллер вернулся к исполнению программы main. Подводя итоги вышесказанного, можно сказать, что если на фоне выполне- ния основного прерывания, поступил запрос на выполнение нескольких других, то из них будет выбрано прерывание, обладающее наибольшим «аппаратным» приоритетом (наименьшим адресом в таблице векторов прерываний). Это ре- жим управления последовательностью прерывании «без программного приори- тета», т.к. программный приоритет является фиксированным и самым высоким. Вложенные прерывания — это режим управления прерываниями, при ко- тором последовательность их выполнения определяется программно задан- ным приоритетом. Настройка приоритета для каждого прерывания осущест- вляется установкой битов регистров ITC_SPRx. Ниже приведена таблица ре- гистров ITC SPRx. В них для каждого вектора выделено два бита, в которых содержится приоритет прерываний. При вызове прерывания значения из со- ответствующих двух бит этих регистров вносятся в биты 11 и 10 регистра CCR. Если выполняется прерывание, допустим с программным приоритетом 1, и на его фоне вызывается прерывание с программным приоритетом 3, то теку- щее прерывание приостанавливается и в начинает обрабатываться прерыва- ние с более высоким программным приоритетом. Эти биты (например, для прерывания № 1 — от системы AWU ) — определя- ют уровень программного приоритета прерывания Таблица 3.3. Описание регистров уровня прерываний 7 6 5 4 3 2 1 0 ITC_SPR1 VECT3_SPR [1:0] VECT2_SPR [1:0] VECT1_SPR [1:0] VECTO_SPR [1:0] ITC„SPR2 VECT7_SPR [1:0] VECT6_SPR [1:0] VECT5_SPR [1:0] VECT4_SPR [1:0] ITC„SPR3 VECT11_ SPR [1:0] VECT10_ SPR [1:0] VECT9_SPR [1:0] VECT8_SPR [1:0] ITC_SPR4 VECT15_ SPR [1:0] VECT14. SPR [1:0] VECT13_ SPR [1:0] VECT12_ SPR [1:0] ITC_SPR5 VECT19_ SPR [1:0] VECT18_SPR [1:0] VECT17_SPR [1:0] VECT16_ SPR [1:0] ITC_SPR6 VECT23_ SPR [1:0] VECT22_ SPR [1:0] VECT21_ SPR [1:0] VECT20_ SPR [1:0] ITC.SPR7 VECT27_ SPR [1:0] VECT26_ SPR [1:0] VECT25_ SPR [1:0] VECT24_ SPR [1:0] ITC_SPR8 Зарезервировано VECT29_ SPR [1:0] VECT28_ SPR [1:0]
28 Глава 3. Контроллер прерываний На следующем рисунке показано, в какой последовательности будут обра- батываться прерывания в режиме вложенных прерываний. На этой картинке программные уровни прерываний имеют такие значения: уровень 3 (высший) — TRAP, ITO, IT3, 1Т4; уровень 2 (средний) — IT1; уровень I (низший) — IT2; уровень 0 не предусмотрен разработчиком микроконтроллеров и не может быть установлен. И2 !Т1 /Я !ТЗ TRAP !ТС Рисунок 3.4. Обработка прерываний при разных уровнях программного приоритета. Внешние прерывания Внешние прерывания — это прерывания по событиям на выводах портов микроконтроллера (восходящий или падающий фронты). Для внешних пре- рываний определены пять векторов: — 5 линий на порту А: РА[6:2]; — 8 линий на порту В: РВ[7:0]; — 8 линий на порту С: РС[7:0]; — 7 линии на порту D: PD[6:0]; — 8 линии на порту Е: РЕ[7:0]. На PD7 настроено прерывание высшего уровня (TLI), за исключением 20-вы- водных микроконтроллеров, где эта функция может быть на выводе РСЗ (с ис- пользованием битов переопределения выводов (ремаппинга) — для подробно- стей см. главу про байты конфигурации). Для генерации запроса на прерывание соответствующие выводы должны быть сконфигурированы как входы с преры- ваниями Для определения прерывающего события (по фронту сигнала, по срезу сигнала, по фронту или срезу сигнала, по срезу с последующим низким уров- нем), необходимо сконфигурировать регистры EXTI_CR1 и EXTI_CR2.
Глава 3. Контроллер прерываний 29 Регистры контроллера прерываний Управляющий регистр внешних прерываний 1 (EXTICR1) Начальное значение: 0x00 Таблица 3.4. Описание регистра EXTICR1 7 6 5 4 3 2 1 0 PDIS1 PDIS0 PCIS1 PCISO PBIS1 PBISO PAIS1 PAIS0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Биты 0, 1 — PAIS [1:0] — настройки для порта А, аналогично настройкам порта D (см. ниже). Биты 2, 3 PBIS [1:0] — настройки для порта В, аналогично настройкам порта D (см. ниже). Биты 4, 5 — PCIS [1:0] — настройки для порта С, аналогично настройкам порта D (см. ниже). Биты 7:6 PDIS [ 1:0] Port D external interrupt sensitivity bits Биты настроек внешних прерываний порта D. Эти биты доступны для за- писи, когда биты 11 и 10 в регистре CCR в установлены (уровень 3). Они опре- деляют событие, по наступлении которого будет вызвано внешнее прерыва- ние порта D. 00: падающий фронт и низкий уровень 01: только восходящий фронт 10: только падающий фронт 11: или падающий, или восходящий край Таблица 3.5. Описание регистра EXTLCR2 7 б 5 4 3 2 1 0 Не используется TLIS PEIS1 PEISO чт/зп чт/зп чт/зп Биты 0, 1 — PEIS [1:0] — настройки для порта Е, аналогично настройкам порта D (см. выше). Бит 2: TLIS: Top level interrupt sensitivity Этот бит устанавливается и очищается программно. Он доступен для изме- нения только когда отключены внешние прерывания для соответствующей линии порта (PD7) 0: Падающий фронт; 1: Восходящий фонт.
Глава 4 Система энергосбережения По умолчанию, после сброса, микроконтроллер находится в рабочем режи- ме. В этом режиме ЦПУ тактируется сигналом Fcpu и выполняет программ- ный код, система тактирования тактирует включенные периферийные моду- ли и потребление микроконтроллера максимально. Тем не менее, даже в рабочем режиме, энергопотребление МК может быть уменьшено следующими путями: — замедление основного тактового сигнала; — отключение тактирования определенной периферии пока она не исполь- зуется ; — отключение тактирования ЦПУ. Отключение основного генератора напряжения (MVR). По умолчанию, основной регулятор напряжения в режиме Active-halt вклю- чен. Сохранение его активным гарантирует быстрое пробуждение из режима Active-halt. При необходимости, MVR может быть отключен когда микрокон- троллер введен в режим Active-halt. Для настройки этого, необходимо устано- вить бит REGAH в регистре CLK ICKR.B этом случае: — ядро микроконтроллера тактируется только регулятором LPVR (так же как в режиме HALT); — для тактирования может быть использован только LSI-генератор, так как текущее потребление HSE-генератора много больше потребления LPVR. Основной регулятор напряжения включается снова после пробуждения, но его пробуждение будет дольше. Быстрое пробуждение. В соответствии с описанием режима HALT, для процедуры получения ми- нимального времени пробуждения, рекомендуется тактировать микрокон- троллер от HS1 генератора. После того, как тактирование переключено на исходный источник такти- рования, возможно восстановление источника тактирования, работающего перед включением режима Active-halt как только он будет готов. Дополнительное управление аналоговыми узлами микроконтроллера. По умолчанию, Flash находится в состоянии низкого потребления, когда микроконтроллер вводится в режим HALT. Токи утечки незначительны, что приводит к очень низкому потреблению в режиме HALT. Тем не менее, время пробуждения Flash относительно медленное (несколько микросекунд). Если Вам необходимо быстрое пробуждение из режима HALT, установите бит HALT в регистре FLASH_CR1. Это гарантирует, что Flash будет находиться в режиме ожидания когда микроконтроллер находится в режиме HALT. Этим может быть обеспечена готовность Flash в течении нескольких наносекунд. При этом всем в этом случае энергопотреблении вырастет на несколько мкА.
Глава 4. Система энергосбережения 31 Низкое потребление Flash памяти в режиме Active-halt. По умолчанию, в режиме Active-halt, Flash остается в рабочем режиме, тем самым гарантируя наименьшее время пробуждения, однако в этом случае по- требление энергии неоптимально. Для оптимизации потребления энергии Вы можете установить бит AHALT в регистре FLASH CR1. Этим Flash настраи- вается на переключение в низкопотребляющее состояние когда будет вклю- чен режим Active-halt. При этом потребление уменьшается, но время включе- ния Flash увеличивается до нескольких микросекунд. Таблица 4.1. Сравнительная таблица режимов энергосбережения Режим энергосбе- режения Состояние основного регулятор напряжения Состояние генератора тактовых сигналов Такти- рова- ние ЦПУ Тактирование периферии Пробуждаю- щее событие. Wait Вкл. Вкл. Откл. Включено (Определяется настройками регистров модуля такти- рования) Все внутрен- ние и внешние прерывания, сброс Active-halt Вкл. Откл. (за исключением LSI или HSE-герато- ров) Откл. Только AWU (должен быть включен модуль ВЕЕР или IWDG) AWU, внешние прерывания, прерывания связных модулей, сброс Active-halt с отключени- ем основно- го регулято- ра напряже- ния Откл. (Регуля- тор напряже- ния для низкопотре- бляющего режима включен) Откл. (за исключением только LSI-генерато- ра) Откл. Только AWU (должен быть включен модуль ВЕЕР или IWDG) AWU, внешние прерывания, прерывания связных модулей, сброс Halt Откл. ( Регулятор для низкопотре- бляющего режима включен) Откл. Откл. отключено (должны быть отключены модули ВЕЕР или IWDG) Внешние прерывания, прерывания связных модулей, сброс.
32 Глава 4. Система энергосбережения Режим энергосбережения WAIT Микроконтроллер вводится в этот режим командой WFI. Этот режим ха- рактеризуется тем, что отключается тактирование ЦПУ, но продолжается ра- бота других узлов микроконтроллера. Режим WAIT может быть совмещен с отключением тактирования определенных периферийных узлов и снижением частоты тактирования (подробнее — в разделе по тактированию). При воз- никновения запроса на прерывание, возобновляется тактирование ЦПУ и ре- жим WAIT отключается. При необходимости микроконтроллер снова может быть введен в этот режим командой WFI. Режим энергосбережения HALT В этом режиме тактирование ЦПУ и других модулей, которые тактируются сигналом Fmaster, отключено. Как результат, микроконтроллер почти не по- требляет энергии. Микроконтроллер вводится в этот режим командой HALT. Пробуждения из этого режима может произойти при возникновении внешне- го прерывания (от портов ввода-вывода) или прерывания от связных модулей (SPI, USART, ПС). В этом режиме основной регулятор напряжения отключен с целью снижения потребляемой мощности. Режим энергосбережения Active HALT Этот энергосберегающий режим подобен режиму HALT, за исключением того, что он не требует внешних прерываний для выхода из этого режима. В этом режиме ЦПУ и почти все периферийные узлы остановлены. Включены только LSI или HSE генераторы для тактирования модуля AWU и IWD. Для ввода микроконтроллера в этот режим предварительно должен быть включен модуль AWU, и выполнена команда HALT.
Г лава 5 Система тактирования Для работы контроллера, ему необходимо тактирование. В составе микро- контроллеров STM8S есть контроллер управления тактированием. Он обе- спечивает переключение между источниками тактового сигнала, отслежива- ние наличия внешнего тактового сигнала, подачу тактовых сигналов на пери- ферийные узлы контроллера и тактирование ядра. Ниже на рисунке представ- лена схема модуля тактирования. OSCIN ОSCOUT СКМ[7;0] fHSE CPUDIV[2:0) LSIRC 128 kHz EXTCLKOPTBIT HSIRC 16 MHz To independent watchdog ------------► To auto wakeup unit (AWU) Master to Timers I2C SPI ADC AWU CAN Peripheral clock enable (8 bits) UART PRSC(1:0) OPT BITS CKAWUSEL OPT BIT CCOSEL[3:0] CCO Configurable clock output —IHSI — IHSIDIV —fHSE —tLSI —(MASTER —fCPU —fCPU/2 —fCPU/4 — (CPU/8 — fCPU/16 — fCPU/32 —1CPU/64 Рисунок 5.1. Функциональная схема модуля тактирования. Модуль тактирования состоит из: — генератора с внешним частотозадающим элементом (HSE OSC); — системы безопасности тактирования (CSS); — внутреннего высокочастотного HSI генератора 16 МГц; — внутреннего низкочастотного LSI генератора 128 КГц; — схему формирования частоты Fmaster; — схемы формирования частоты тактирования ядра (Fcpu);
34 Глава 5. Система тактирования — схемы формирования импульсов для системы AWU; — схемы формирования контрольной тактирующей последовательности на выводе микроконтроллера. Источники тактовой частоты Таким образом, система тактирования может работать со следующими ис- точниками тактирования: — внутренний генератор с внешним частотозадающим кварцевым резона- тором с частотой до 24 МГц (Н8Е)(рисунок 5.3): — внешний генератор тактовых импульсов до 24 МГц (Н8Е)(рисунок 5.4); — внутренний высокочастотный генератор 16 МГЦ (HSI); — внутренний низкочастотный генератор 128 КГц (LSI). HSE Ext. Рисунок 5.2. Схема подключения внешних источников тактирования. Для снижения энергопотребления, каждый из источников тактирования может быть включен или выключен, если не используется. Микроконтрол- лер, в котором настройки тактирования не менялись, работает от внутреннего HS1 генератора па 16 МГц, с предделителем с коэффициентом деления 8, т.е. основная частота тактирования (Fmaster) равна 2 МГц. Одним из источников внешних тактовых сигналов является генератор с внешним частотозадающим кварцевым резонатором: Рисунок 5.3. Схема подключения тактового генератора. Резонатор должен быть подключен к выводам OSCIN и OSCOUT в соот- ветствии с вышеприведенной схемой.
Глава 5. Система тактирования 35 Примечание: при проектировании, резонатор (кварц) и конденсаторы на- грузки должны быть расположены как можно ближе к выводам микрокон- троллера. Другим внешним источником тактирования является внешний тактовый генератор, сигнал с которого должен быть подан на вывод OSCIN, при этом вывод OSCOUT может использоваться как обычный вывод порта ввода/выво- да. Внешний сигнал (может быть прямоугольным, треугольным или даже си- нусоидальным), должен иметь скважность равную двум и частоту от 1 до 24 МГц. Схема подключения указана на рисунке ниже. Один из двух внешних источников тактирования может быть выбран уста- новкой соответствующего значения бита конфигурации EXTCLK (бит 3 в ре- гистре ОРТ4). (I/O available) EXTERNAL SOURCE Рисунок 5.4. Схема подключения внешнего источника тактирования. В начале своей работы генератор обычно нестабилен, и для стабилизации его частоты, модуль тактирования формирует задержку на 2048 тактов генера- тора перед подачей его сигнала в систему тактирования. Эта задержка может быть изменена битами HSECNT (биты регистра ОРТ5) в байтах конфигура- ции микроконтроллера. Флаг HSERDY в регистре CLK_ECK указывает, готов ли внешний генера- тор к работе или нет. Этот генератор не будет подключен к системе тактирова- ния до тех пор пока этот бит не будет аппаратно установлен. Также в составе микроконтроллера есть встроенный высокочастотный ге- нератор 16 МГц. Для его работы не нужны внешние компоненты, но он явля- ется менее точным, чем внешним генератор или кварц. Его выход подключен к программируемому делителю частоты на 1,2, 4, 8. (необходимый коэффи- циент выбирается конфигурированием битов 3 и 4 (биты HS1DIV) регистра CLK_DIVR). Генератор имеет флаг готовности HSIRDY (бит 1 в регистре CLK ICKR), который показывает, является ли HSI генератор стабильным, или нет. При включении микроконтроллера, вывод этого генератора не будет подключен к системе тактирования микроконтроллера до тех пор пока флаг
36 Глава 5. Система тактирования HSI_RDY не будет установлен аппаратно. Генератор HSI может быть включен или выключен с использованием бита HSIEN в регистре CLK_ICKR. Если бит FHWU в регистре управления внутренними источниками такти- рования (CLKICKR) установлен, в случае пробуждения микроконтроллера из режимов Halt или Active-halt, будет автоматически настроено тактирование от внутреннего HSI генератора, но необходимо будет дождаться готовности генератора. Микроконтроллеры STM8S имеют еще один встроенный низкочастотный тактовый генератор (LSI). Это генератор может быть включен или выключен изменением состояния бита LSIEN в регистре CLK_ICKR. Также этот гене- ратор тактирует независимый сторожевой таймер. После сброса система тактирования микроконтроллера настроена на рабо- ту от HSI-генератора с предделителем на 8. Это позволяет уменьшить время стабилизации HSI-генератора. Переключение основного источника тактового сигнала Переключение источника тактового сигнала для основного тактирования, может быть ручным и автоматическим. Автоматическое переключение: если автоматическое переключение разре- шено, пользователь может осуществить переключение источника основного тактирования минимальным количеством команд. Далее программное обе- спечение может делать другие операции без необходимости вмешательства в процесс переключения. Для включения автоматического переключения необходимо выполнить 1 [ижсследующую последовательность: — Разрешить переключение установкой бита SWEN в регистре CLKSWCR; — Записать 8-ми битную величину, используемую для выбора целевого ис- точника тактирования в регистр величину в регистр CLK_SWR. При этом бит SWBSY в регистре CLK_SWCR будет установлен аппаратно и целевой источник тактирование начнет работу. Предыдущий источник тактиро- вания продолжит работу, обеспечивая тактирование ядра и периферии до стабилизации частоты выбранного источника. Как только выбранный источник будет стабилизирован, содержимое реги- стра CLKJSWR будет скопировано в регистр CLK_CMSR. При этом флаг SWBSY будет аппаратно сброшен, и старый источник тактирования будет од- новременно заменен на новый.
Глава 5. Система тактирования 37 SOFTWARE ACTION HARDWARE ACTION MCU in Run mode with HSI/8 ________________I............... Switch busy SWBSY ---------> 1 Target clock source powered on Target clock source ready after stabilization time Update clock master status CLK_SWR —> CLK_CMSR Reset switch busy flag SWBSY—> о Switch done SWIF ---> 1 Interrupt if activated .................:" i Clear SWIF flag MCU in Run mode with new master clock source Рисунок 5.5. Автоматическое изменение источника тактового сигнала. Ручное переключение позволяет пользователю произвести переключение в определенный четко заданный промежуток времени. Для включения руч- ного режима, пользователь должен выполнить нижеследующую последова- тельность: — Записать 8-ми битную величину, используемую для выбора целевого ис- точника тактирования в регистр величину, в регистр CLKSWR. Когда флаг SWBSY в регистре CLKSWCR будет установлен, целевой источник тактирования начнет работу. Предыдущий источник тактирования про- должит работу, обеспечивая основное тактирование; — Ждать пока целевой источник тактирования не будет стабилизирован. Это будут обозначено установкой флага SWIF в регистре CLK_SWCR и вызовом прерывания, если оно разрешено (установлен бит SWIEN в ре- гистре CLKSWCR); — Установить бит SWEN и регистре CLK_SWCRдля выполнения переклю- чения.
38 Глава 5. Система тактирования HARDWARE ACTION SOFTWARE ACTION Рисунок 5.6. Ручное изменение тактового сигнала. В обоих режимах переключения (и ручном, и автоматическом), предыдущий источник тактирования не будет автоматически отключен, если он тактирует другие блоки (например, LSI-генератор используется для независимого такти- рования сторожевого таймера). При необходимости, этот источник тактирова- ния может быть отключен битами регистра CLK_ICKR и CLK_ECKR. Если источник, на который произвели переключение, по тем или иным причинам, неработоспособен, будет произведен программный сброс текуще- го переключения с очисткой флага SWBSY. В этом случае содержимое реги- стра CLK_SWR будет восстановлено до его предыдущего состояния (тактиро- вание будет продолжать осуществлять предыдущий источник тактирования). Для тактирования системы AWU или независимого сторожевого таймера (рисунок 5.3) необходим низкочастотный источник тактирования. Им может быть непосредственно LSI генератор или HSI генератор с определенным ко- эффициентом деления, определяемым битами конфигурации PRSC[ 1:0]. Вы- бор источника тактирования HSI или LSI производится битом коп ригурации CKAWUSEL.
Глава 5. Система тактирования 39 OSCIN OSCOUT Рисунок 5.7. Тактирование системы AWU. Делитель тактовой частоты CPU (рисунок 5.4). Тактовая частота (Fcpu) производится из тактовой частоты Fmaster ее делением на коэффициент, за- данный битами CPUDIV2 — CPUDIV0 в регистре CLK CKDIVR. Доступно семь коэффициентов деления (2, 4, 8, 16, 32, 64, 128). Сигнал Fcpu является тактовым как для ЦПУ, так и для оконного сторожевого таймера. CPUDIV(2:0) Рисунок 5.8. Формирование частоты Fcpu из частоты Fmaster. Управление тактированием периферийных модулей Контроллер тактирования микроконтроллеров STM8S позволяет управлять тактированием периферийных устройств (подачей или отключением частоты Fmaster к соответствующему модулю). Возможно отключение тактирования следующих модулей: — ADC; -I2C; — AWU (счетчик работает); — SPI; — Т1М[4:1]; - UART.
40 Глава 5. Система тактирования После сброса устройства, все перечисленные периферийные узлы включе- ны. Отключение каждого из них возможно очисткой соответствующего бита PCKEN в регистрах CLKPCKENR1 и CLKPCKENR2. Тем не менее, снача- ла необходимо отключить периферийный узел с использованием его управля- ющих регистров. Счетчик системы AWU может тактироваться от источников LSI или HSE независимо от Fmaster, таким образом, он продолжает работать даже если в регистрах модуля тактирования он является выключенным. Система защиты тактирования В составе системы тактирования микроконтроллера существует система за- щиты тактирования CSS (clock security system), которая при неработоспособ- ности внешнего источника сигнала переключит микроконтроллер на резерв- ный внутренний источник тактирования (генератор HSI с предделителем на 8). В этом случае резервный источник будет тактировать микроконтроллер до сле- дующего сброса, т.е. система тактирования не сможет изменить этот источник, что должно учитываться разработчиком при проектировании устройства. Для регистрации отказа внешнего генератора должны быть выполнены сле- дующие условия: — включен HSE-кристалл (установлен бит HSEEN = 1 в регистре CLK_ ECKR; — настроен HSE-генератор (очищен бит EXTCLK в регистрах конфигура- ции микроконтроллера); — включена система безопасного тактирования (установлен бит CSSEN в регистре CLK CSSR). При отказе внешнего источника тактирования, система CSS производит следующие действия: — устанавливается бит CSSD в регистре CLKCSSR и, если бит CSSIEN установлен, вызывается прерывание; — регистр состояния основного тактирования (CLK CMSR), регистр пере- ключения основного тактирования (CLK_SWR) и биты HSIDIV[1:O] в ре- гистре делителя тактирования (CLKCKDIVR) переходят в их «состоя- ние сброса». Источником Fmaster становится генератор HSI с делителем частоты на 8; — устанавливается бит HSIEN в регистре CLKICKR (включается генера- тор HSI); — очищается бит HSEEN в регистре CLK ECKR (отключается тактирова- ние от генератора HSE);
Глава 5. Система тактирования 41 — устанавливается бит AUX, обозначая что подключен генератор HSI с предделителем на 8. Бит CSSD может быть очищен программно. Бит AUX может быть очищен только сбросом микроконтроллера. Для выбора большей частоты тактирования, необходимо сбросить бит CSSD в регистре CLK_CSSR, а затем изменить значение предделителя HSID1V[1:O] в регистре CLK_CKDIVR. Если HSE генератор не обозначен как текущий источник тактирования, то при обнаружении отказа, основной источник тактирования не переключается на резервный, и не производит никаких вышеуказанных действий, за исклю- чением: — бит HSEEN в регистре CLK ECKR будет очищен, HSE генератор будет отключен; — устанавливается бит CSSD в регистре CLK_CSSR, и если установлен бит CSSDIE вызывается запрос на прерывание. Если HSE не является основным источником тактирования и основной ис- точник тактирования продолжает работать, то бит SWBSY должен быть про- граммно очищен перед очисткой бита CSSD Вывод тактового сигнала В микроконтроллерах существует специальный вывод (CLK_CCO) для вы- дачи на него различных тактовых частот микроконтроллера. Пользователь может вывести на перенастраиваемый вывод ССО один из 12 источников так- тового сигнала: CCOSEL[3:OJ ССО Configurable clock output -• fHSI —fHSIDIV —fHSE —fLSI —fM ASTER —fCPU —tCPU/2 —fCPUM —fCPU/8 —fCPU/16 —fCPU/32 —ICPU/64 Рисунок 5.9. Схема вывода различных тактовых частот на вывод ССО. Выбор источника для вывода на вывод микроконтроллера настраивается регистром CLKCCOR. Пользователь должен предварительно настроить со- ответствующий бит порта ввода-вывода (PD0) на выход.
42 Глава 5. Система тактирования Регистры модуля тактирования: Таблица 5.1. Описание регистра CLK_ICKR 7 6 5 4 3 2 1 0 Не используется REGAH LSIRDY LSIEN FHW HSIRDY HSIEN чт/зп ЧТ чт/зп чт/зп ЧТ чт/зп Биты 7:6 Зарезервировано, эти поля должны быть очищены. Бит 5 REGAH: Regulator power off in Active-halt mode Отключение основного регулятора напряжения (MVR) в энергосберегаю- щем режиме Active-halt. Этот бит устанавливается и сбрасывается программ- но. Когда он установлен, основной регулятор напряжения отключается, как только микроконтроллер вводят в режим Active-halt, что увеличивает время пробуждения, так как система тактирования будет ждать готовности соответ- ствующего источника тактовой частоты. 0: регулятор MVR включен в режиме Active-halt; 1: регулятор М VR отключен в режиме Active-halt. Бит 4 LSIRDY: Low speed internal oscillator ready. Этот бит устанавливается и сбрасывается аппаратно. 0:генератор LSI готов к работе; 1: генератор LSI не готов к работе. Бит 3 LSIEN: Low speed internal RC oscillator enable Этот бит устанавливается и сбрасывается программно, но в определенных случаях LSI-генератор может быть включен аппаратно. Например: — при переключении на тактирование от LSI генератора (см. регистр CLK_ SWR); — при выборе LSI генератора для вывода на ССО (см. регистр CLK_CCOR); — при включении модуля ВЕЕР (установке бита BEEPEN в регистре ВЕЕР_ CSR); — в процедуре измерения частоты LSI-генератора (при установке бита MSR в регистре AWU_CSR). LSI-генератор не может быть отключен, если выбран в качестве источника частоты Fmaster, источника на вывод ССО, источника тактовых импульсов для системы AWU и для независимого сторожевого таймера. 0: LSI генератор отключен; 1: LSI генератор включен. Бит 2 FHW: Fast wakeup from Halt/Active-halt modes Этот бит устанавливается и сбрасывается программно. 0: быстрое пробуждение из режима Halt/Active-Halt отключено; 1: быстрое пробуждение из режима Halt/Active-Halt включено.
Глава 5. Сиоема тактирования 43 Бит 1 HSIRDY: High speed internal oscillator ready Этот бит устанавливается и сбрасывается аппаратно. 0: генератор HSI не готов к работе; 1: генератор HSI готов к работе. Бит 0 HS1EN: High speed internal RC oscillator enable Этот бит устанавливается и сбрасывается программно. Бит устанавливается каждый раз в случаях: — при включении в качестве резервного при срабатывании схемы CSS; — когда выбран в качестве основного источника тактирования (см. регистр CLKSWR); — когда HSI — генератор выбран в качестве источника ССО (см. регистр CLKCCOR). Этот бит не может быть сброшен когда выбран в качестве основного источ- ника тактирования Это не может быть снят, когда HSI выбран в качестве задающего генератора (CLK_CMSR регистре), как источник сигнала для вывода ССО или при вклю- чении схемы защиты тактирования (CSS). 0: HSl-генератор отключен; 1: HSl-генератор включен. Таблица 5.2. Описание регистра CLK.ECKR 7 6 5 4 3 2 1 0 Не используется HSERDY HSEEN ЧТ чт/зп Биты 7-2 Зарезервированы, не используются. Бит 1 HSERDY: High speed external crystal oscillator ready Этот бит устанавливается и сбрасывается аппаратно. 0: генератор HSE не готов к работе; 1: HSE готов к работе (стабилизирован). Бит 0 HSEEN: High speed external crystal oscillator enable Этот бит устанавливается, и сбрасывается программно. Он используется для включения или выключения внешнего генератора (на основе внешнего кварцевого резонатора или внешней тактирующей последовательности). Этот бит аппаратно устанавливается в следующих случаях: — когда настроено тактирование от генератора HSE (см. регистр CLK- SWR); — когда HSE выбран в качестве источника сигнала для ССО (см. регистр CLKCCOR). Этот бит не может быть сброшен если HSE генератор выбран в качестве ис- точника основного тактирования или источник сигнала для вывода ССО.
44 Глава 5. Система тактирования 0: HSE генератор включен; 1: HSE генератор отключен. Таблица 5.3. Описание регистра CMSR 7 б 5 4 3 2 1 0 CKM7 CKM6 СКМ5 СКМ4 скмз СКМ2 СКМ1 скмо ЧТ Чт чт чт чт чт чт чт Биты 7-0 СКМ [7:0]: Clock master status bits Регистр состояния основного тактирования. Биты этого регистра устанав- ливаются и сбрасываются аппаратно. Они указывают на выбранный источник основного тактирования (источник частоты Fmaster) тактового генератора. Регистр может иметь только определенные значения. Недопустимое значение в этом регистре будет автоматически генерировать сброс микроконтроллера. OxEl: HS1 генератор выбран в качестве источника частоты Fmaster (значе- ние по-умолчанию); 0xD2: LSI генератор выбран в качестве источника частоты Fmaster (только если бит конфигурации LSI_EN установлен); 0хВ4: HSE генератор выбран в качестве источника частоты Fmaster. Clock master switch register (CLKSWR) Таблица 5.4. Описание регистра CLK_SWR 7 б 5 4 3 2 1 0 SWI7 SWI6 SWI5 SWI4 SWI3 SWI2 SWI1 SWI0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Биты 7-0 SWI [7:0]: Clock master selection bits Биты этого регистра записываются программно и определяют источник ос- новного тактирования (источник частоты Fmaster). Его содержание защище- но от записи во время переключения источника основного тактирования (в то время как бит SWBSY установлен). Если бит AUX в регистре CLK_CSSR уста- навливается, этот регистр устанавливается в исходное значение (тактирова- ние от HSI). Если включено быстрое пробуждения из режимов Halt/Active- Halt (установлен бит FHW в регистре CLK1CKR), то при пробуждении в этот регистр будет аппаратно внесено значение Elh (HSI генератор). OxEl: HS1 генератор выбран в качестве источника частоты Fmaster (значе- ние по-умолчанию); 0xD2: LSI генератор выбран в качестве источника частоты Fmaster (только если бит конфигурации LSI_EN установлен); 0хВ4: HSE генератор выбран в качестве источника частоты Fmaster. Switch control register (CLK SWCR)
Глава 5. Система тактирования 45 Таблица 5.5. Описание регистра CLK_SWCR 7 6 5 4 3 2 1 0 He используется SWIF SWIEN SWEN SWBSY чт/зп 0 чт/зп чт/зп чт/зп 0 Биты 7:4 Зарезервировано, не используется. Бит 3 SWIF: Clock switch interrupt flag Этот бит устанавливается аппаратно и может быть сброшено программно записью 0. Его значение зависит от состояния бита SWEN. — В режиме ручного переключения (SWEN = 0): 0: выбранный источник тактирования не готов; 1: выбранный источник тактирования готов. — В автоматическом режиме переключения (SWEN = 1): 0: события переключения источника тактирования не происходило; 1: произошло событие переключения источника тактирования. Бит 2 SWIEN: Clock switch interrupt enable Разрешение прерывания по переключению источника тактирования Этот бит устанавливается, и сбрасывается программно. 0: прерывание по переключению источника тактирования запрещено; 1: прерывание по переключению источника тактирования разрешено. Бит 1 SWEN: Switch start/stop Начало/станов переключения. Этот бит устанавливается, и сбрасывается программно. Запись 1 в этот бит разрешает переключение текущего источни- ка тактирования к источнику, определенному регистром CLKSWR. 0: переключение источника основного тактирования запрещено; 1: переключение источника основного тактирования разрешено. Бит 0 SWBSY: Switch busy. Этот бит устанавливается и сбрасывается аппаратно. Он может быть сбро- шен программно для остановки процесса переключения источника основно- го тактового сигнала. 0: процесса переключения источников тактирования не происходит; 1: происходит процесс переключения источников тактирования. Clock divider register (CLK CKDIVR) Таблица 5.6. Описание регистра CLK_CKDIVR 7 6 5 4 3 2 1 0 He исп. HSIDIV1 HSIDIVO CPUDIV2 CPUDIV1 CPUDIVO чт/зп чт/зп чт/зп чт/зп чт/зп Биты 7-5 Зарезервированы, не используются. Биты 4:3 HSI DIV[ 1:0J: High speed internal clock prescaler
46 Глава 5. Система актирования Эти биты устанавливаются и сбрасываются программно и определяют ко- эффициент деления частоты HSI-генератора. 00: fHSI = fllSI без дения 01: fHSI = частота генератора HSI поделенная на 2; 10: fHSI = частота генератора HSI поделенная на 4; 11: fHSI = частота генератора HSI поделенная на 8. Биты 2:0 CPUDIV[2:0]: CPU clock prescaler. Эти биты записываются программно и определяют коэффициент деления частоты Fmaster для формирования частоты Fcpu. 000: Fcpu = Fmaster; 001: Fcpu = Fmaster /2; 010: Fcpu = Fmaster /4; 011: Fcpu = Fmaster /8; 100: Fcpu = Fmaster/16; 101: Fcpu = Fmaster /32; 110: Fcpu = Fmaster /64; 111: Fcpu = Fmaster /128; Peripheral clock gating register 1 (CLK PCKENR1) Таблица 5.7. Описание регистра CLK_PCKENR1 7 6 5 4 3 2 1 0 PCKEN17 PCKEN16 PCKEN15 PCKEN14 PCKEN13 PCKEN12 PCKEN11 PCKEN1O чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Биты 7:0 PCKEN1[7:O]: Peripheral clock enable Эти биты устанавливаются и сбрасываются программно, их состояние по- зволяет подключать или отключать тактирование (подачу Fmaster) соответ- ствующих периферийных модулей микроконтроллера. 0: тактирование Fmaster отключено от этого модуля; 1: тактирование Fmaster подключено к этому модулю. Для микроконтроллера STM8S105C6T6, биты этих регистров соответству- ют следующим периферийным модулям: для регистра CLK PCKENR1: — бит 7 — тактирование Т1М1; — бит 6 — тактирование TIM3; — бит 5 — тактирование Т1М2; — бит 4 — тактирование TIM4; — бит 3 — тактирование UART2; — бит 2 — не используется; — бит 1 — тактирование модуля SPI; — бит 0 — тактирование модуля I2C;
Глава 5. Система тактирования 47 для регистра CLK PCKENR2: — биты 0, 1,4, 5, 6, 7 не используются; — бит 2 — тактирование модуля AWU; — бит 3 — тактирование модуля ADC. Clock security system register (CLK CSSR) Таблица 5.8. Описание регистра CLK.CSSR 7 6 5 4 3 2 1 0 He используется CSSD CSSDIE AUX CSSEN чт/зпО чт/зп чт чт/зпО Биты 7-4 Зарезервированы, не используются. Бит 3 CSSD: Clock security system detection Этот бит устанавливается аппаратно и может быть программно записью 0. 0: система CSS отключена или отказов внешних источников тактирования не обнаружено. 1: обнаружен отказ внешнего источника тактирования. Бит 2 CSSDIE: Clock security system detection interrupt enable Этот бит устанавливается и сбрасывается программно. 0: прерывания от системы CSS запрещены; 1: прерывания от системы CSS разрешены. Бит 1 AUX: Auxiliary oscillator connected to master clock Этот бит устанавливается и сбрасывается аппаратно. 0: резервный генератор (HSI) отключен; 1: резервный генератор (HSI/8) включен и выбран в качестве основного ис- точника тактирования. Бит 0 CSSEN: Clock security system enable Этот бит может быть записан однажды, и не может быть сброшен после это- го программно (сбрасывается при сбросе микроконтроллера, по умолчанию, равен 0). 0: система CSS отключена; 1: система CSS включена. Configurable clock output register (CLK CCOR) Таблица 5.9. Описание регистра CLK_CCOR 7 6 5 4 3 2 1 0 He исп. CCOBSY CCORDY CCOSEL[3:0] CCOEN чт ЧТ чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7 Зарезервирован, не используется. Бит 6 CCOBSY: Configurable clock output busy
48 Глава 5. Система тактирования Этот бит устанавливается и сбрасывается аппаратно. Он указывает, что вы- бранный генератор тактовых импульсов для вывода на ССО в настоящее вре- мя включен и стабилизирован. Даже если CCOBSYустановлен, биты CCOSEL защищены от записи. CCOBSY остается установленным, пока источник сиг- нала для ССО не будет включен и стабилизирован. 0: источник такового сигнала для вывода на ССО часы готов к работе; 1: источник такового сигнала для вывода на ССО часы не готов к работе. Бит 5 CCORDY: Configurable clock output ready Этот бит устанавливается и сбрасывается аппаратно. Если этот бит установ- лен, это значит что тактовые импульсы подаются на вывод ССО. 0: тактовые импульсы на вывод ССО не поданы; 1: тактовые импульсы на вывод ССО поданы. Биты 4-1 CCOSEL 13-0]: Configurable clock output selection Устанавливаются и сбрасываются программно и обозначают источник так- тового сигнала подаваемого на вывод микроконтроллера CLK_CCO. Запись в эти биты невозможно до тех пор, пока бит CCOBSY установлен. 0000: FHSIDIV; 0001: FLSI; 0010: FHSE; 0011: зарезервировано, не используется; 0100: Fcpu; 0101: Fcpu/2; ОНО: Fcpu/4; 0111: Fcpu/8; 1000: fcpu/16; 1001: fcpu/32; 1010: fcpu/64; 1011: FHSi; 1100: Fmaster; 1101: Fcpu; 1110: Fcpu; 1111: Fcpu. Бит 0 CCOEN: Configurable clock output enable Этотбит устанавливается, и сбрасывается программно. 0: вывод сигнала на ССО запрещен; 1: вывод сигнала на ССО разрешен. HSI clock calibration trimming register (CLK HSITRIMR)
Глава 5. Система тактирования 49 Таблица 5.10. Описание регистра CLK_HSITRIMR 7 б 5 4 3 2 1 0 Не исп. HSITRIM3 HSITRIM2 HSITRIM1 HSITRIMO чт/зп чт/зп чт/зп чт/зп Биты 7-4 Зарезервированы, должны быть очищены. Биты HSITRIM[3:0] HSI trimming value. Эти биты устанавливаются и сбрасываются программно и устанавливают поправку в частоту HSI генератора. Внесением этой поправки возможно уве- личение точности HSI-генератора. Примечание: в разных микроконтроллерах серий STM8S и STM8A могут быть доступны биты с нулевого по 2, в некоторых с нулевого по третий. Тем не менее, даже если в устройстве доступны биты с нулевого по второй, через биты конфигурации может быть выбрана совместимость.
Глава 6 Независимый сторожевой таймер Сторожевой таймер (далее по тексту IWDG) предназначен для исключения зависания микроконтроллера. Он представляет собой счетчик импульсов не- зависимого источника со схемой сброса. В процессе работы микроконтролле- ра, необходимо счетчик сторожевого таймера периодически сбрасывать, в противном случае микроконтроллер будет сброшен. Независимый сторожевой таймер (IWDG) начинает работу при записи ОхСС в ключевой регистр (IWDGKR), счетчик 1WDG начинает считать вниз от первоначального значения OxFF. Когда она достигает конечного значения 0x00, происходит сигнал сброса (IWDG RESET). Когда включен, IWDG может быть настроен регистрами IWDG_PR и IWDG_ RLR. Регистр IWDG PR используется для выбора коэффициента деления, по- даваемого на основной счетчик IWDG. Всякий раз, когда в регистр IWDGKR загружается значение KEY REFRESH (ОхАА), IWDG перезагружается значе- нием IWDG_RLR, таким образом, сброс от IWDG предотвращается. Регистры IWDG PR и IWDG RLR имеют защиту от записи. Для их из- менения, сначала в регистр IWDG_KR должна быть вписана величина KEY ACCESS (0x55). Рисунок 6.1. Функциональная схема независимого сторожевого таймера. Аппаратная особенность IWDG — если он включен через биты конфигура- ции, то он автоматически включается при подаче питания на микроконтрол- лер и сгенерирует сброс если ключевой регистр не будет изменен программно до того как счетчик достигнет 0. Смотри описание байт конфигурации для подробностей. Период срабатывания IWDG может быть вычислен по формуле: Т = 2 х TLSl х р х R Где: Т = временной интервал срабатывания IWDG; Tls, — —!---период источника Flsi; ^LSI
Глава 6. Независимый сторожевой таймер 51 Р= 2<^|2:oj+2) _ коэффициент деления частоты LSI; R = RLR [7:0] + 1 — временной интервал тактирования IWDG. Счетчик IWDG должен быть обновлен до того, как истечен временной ин- тервал срабатывания IWDG. Иначе, после паузы длительностью D= Т+6* TLSh произойдет сброс IWDG. В формуле D — задержка между предыдущим об- новлением IWDG и сбросом. Таблица 6.1. Таблица временных настроек IWDG Коэффицент пред делителя Значение PR[2:0] Временной интервал RL[7:0]= ОхОО RL[7:0]= OxFF /4 0 62.5 ps 15.90 ms /8 1 125 ps 31.90 ms /16 2 250 ps 63.70 ms /32 3 500 ps 127 ms /64 4 1.00 ms 255 ms /128 5 2.00 ms 510 ms /256 6 4.00 ms 1.02 s Регистры IWDG: Key register (IWDGKR): Таблица 6.2. Описание регистра IWDG.KR 7 6 5 4 3 2 1 0 KEY7 KEY6 KEY5 KEY4 KEY3 KEY2 KEY1 KEYO ЗП 3n ЗП ЗП ЗП ЗП ЗП ЗП Биты 7:0 KEY[7:0]: Key value Величина ключа должна быть записана программно через равномерные ин- тервалы, иначе модуль IWDG сгенерирует сброс. Если IWDG включен не че- рез биты конфигурации, то первая величина, которая должна быть введена — KEY ENABLE. Регистр может содержать следующие значения: KEY_F^ABLE = ОхСС - запуск IWDG; KEY REFRESH = ОхАА - обновление IWDG; KEY_ACCESS = 0x55 — запись этого числа снимает защиту от записи в ре- гистры IWDG_PR и IWDG_RLR. Prescaler register (IWDG PR).
52 Глава 6. Независимый сторожевой таймер Таблица б.З. Описание регистра IWDG_PR 7 6 5 4 3 2 1 0 Не используется PR2 PR1 PRO чт/зп чт/зп чт/зп Биты 7:3 значение зарезервировано; Биты 2:0 PR[2:0]: Prescaler divider Этими битами может быть выбран коэффициент деления частоты, подава- емой на основной счетчик IWDG: — ООО: деление на 4; — 001: деление на 8; — 010: деление на 16; — 011: деление на 32; — 100: деление на 64; — 101: деление на 128; — 110: деление на 256; — 111: Значение зарезервировано. Reload register (1WDG RLR) Таблица 6.4. Описание регистра IWDGJRLR 7 6 5 4 3 2 1 0 RL7 RL6 RL5 RL4 RL3 RL2 RL1 RLO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп RL[7:0J: Watchdog counter reload value Эти биты устанавливаются и сбрасываются программно и определяют ве- личину, которая будет записана в счетчик IWDG при записи в ключевой ре- гистр IWDGKR значения KEY REFRESH. Далее счетчик IWDG будет счи- тать вниз от этой величины. Период срабатывания IWDG будет зависеть от этой величины и настроек предделителя.
Глава 7 Оконный сторожевой таймер В составе микроконтроллеров существует оконный сторожевой таймер (WWDG). Оконным он назван потому, что его сброс должен происходить в строго определенных (не раньше и не позже) временных промежутках — «окне». Далее будет сформирован сигнал сбросам микроконтроллера. ОСТ отключен после сброса. Основные особенности WWDG: — программируемый перезапускаемый вычитаемый счетчик; — условия сброса: — сброс если вычитающий счетчик достигнет величины менее чем 0x40; — сброс если вычитающий счетчик перезагружен за пределами времен- ного окна. — аппаратный, либо программный запуск сторожевого таймера (выбирает- ся битами конфигурации); —дополнительный сброс командой HALT (настраивается битами конфигу- рации). Если оконный сторожевой таймер включен (бит WDGА установлен), и ког- да 7-разрядный вычитающий счетчик переходит значение 0x40 в сторону уменьшения (бит 6 очищается), он инициирует сброс опусканием вывода «сброс» на землю. Если счетчик WWDG был программно обновлен, пока зна- чение счетчика было больше значения в оконном регистре, сброс микрокон- троллера будет произведен. RESET WATCHDOG WINDOW REGISTER (WWDG_WR) Рисунок 7.1. Функциональная схема независимого сторожевого таймера.
54 Глава 7. Оконный сторожевой таймер Т6 bit Reset Рисунок 7.2. Временные диаграммы работ WWDG. Пояснения к схеме работы оконного сторожевого таймера. Таким образом, пока значение счетчика больше, чем значение окна, в это время нельзя обновлять, а обновление приведет к сбросу. Это и есть дорога к элементу «И», к которому так же подходит выход компаратора. Он состоит из: — регистра окна (задает временной интервал срабатывания ОСТ) — регистра управления ( в нем первые 7 бит — счетчик ОСТ и один бит WDGA) — компаратора (непрерывно сравнивает значение счетчика ОСТ и значе- ние окна) Схемы «И», которая производит действие «И» над выходом компаратора детектором записи в регистр WWDG_CR Исполняемая программа должна записать в регистр WWDG_CR значение интервала, в течении которого нормальная работа предупредит сброс МК. Эта операция должна произойти только когда величина счетчика меньше чем зна- чение оконного регистра. Величина, хранимая в регистре WWDG CR должна быть в пределах между ОхСО и OxFF. Процедура включения оконнного сторожевого таймера: — разрешить работу ОСТ настройкой битов конфигурации; Когда работа оконного сторожевого таймера программно разрешена (изме- нением значения битов конфигурации), оконный сторожевой таймер отклю- чен после сброса. Он включается установкой бита WDGA в регистре WWDG- CR, когда он не может быть отключен после сброса. Когда аппаратное обеспечение сторожевого таймера выбрано (битами кон- фигурации), сторожевой таймер всегда активен и бит WDGA не используется.
Глава 7. Оконный сторожевой таймер 55 Управление вычитающим счетчиком Этот вычитающий счетчик независим, он считает, даже если сторожевой таймер отключен. Когда сторожевой таймер включен, бит Тб должен быть установлен для предотвращения немедленной генерации сброса. Биты 5...О содержит количество вычитаний, которые определяют времен- ную задержку, предшествующую сбросу микроконтроллера. Изменение вели- чины между максимальной и минимальной убьет неизвестное состояние предделителя когда будет произведена запись в регистр WWDG CR. Регистр оконного сторожевого таймера (WWDG_WR) содержит макси- мальное значение окна, то есть во избежание сброса вычитающий счетчик должен быть перезагружен, когда эта величина менее чем значение величины окна и более чем 0x3 F. Примечание: бит Тб может быть использован как источник программного сброса (если бит WDGA установлен, а бит Тб очищен). Сброс сторожевого таймера функцией halt. Если сторожевой таймер активирован и если включена функция сброса сторожевого таймера командой halt, командой halt микроконтроллер будет сброшен. Как задать интервал сторожевого таймера. Нижеследующая формула может быть использована для вычисления вре- менного интервала WWDG, Twwdg, результата представлен в миллисекундах. Twwdg = Тери * 12288 * (Т (5...0) + 1); Где Тери это период тактового сигнала периферийных узлов, выраженный в миллисекундах. Примечание: Когда производится запись значения в регистр WWDG_CR, вместе с этим должен быть установлен бит Тб, иначе микроконтроллер будет немедленно сброшен. Рисунок 7.3. График длительности «окна» WWDG при частоте 16МГц.
56 Глава 7. Оконный сторожевой таймер Таблица 7.1. Пример временных диаграмм оконного сторожевого таймера Т[6:0] fCPU (MHz) 2 16 40h 6.144 0.768 7Fh 393.216 49.152 Работа оконного сторожевого таймера в энергосберегающих режимах: Режим Wait: Не воздействует на сторожевой таймер. Вычитающий счетчик продолжает отсчитывать. Режим Halt: — если бит конфигурации WWDG_Halt сброшен: Сторожевой таймер не генерирует сброс. Микроконтроллер вводится в ре- жим Halt. Счетчик сторожевого таймера вычитает, и когда счет продолжается и далее не возможен, генерируется сброс пока МК обслуживает внешнее пре- рывание или сброс. Если было получено прерывание (см таблицу прерыва- ний, которые могут быть вызваны в режиме Halt), оконный сторожевой тай- мер перезапускает счет после стабилизирующей задержки. Если сброс сгене- рирован, сторожевой таймер отключен (состояние сброса), если сторожевой таймер не включен битами конфигурации. — Если бит конфигурации установлен: Вместо ввода в режим Halt генерируется сброс. Режим Active-Halt: Сброс не генерируется. МК вводится в режим Active-Halt. Счетчик сторо- жевого таймера не вычитает, счет остановлен. Когда МК принимает получает запрос на прерывание по изменению тактового генератора или внешнее пре- рывание, сторожевой таймер немедленно перезапускает счетчик. Когда ми- кроконтроллер сбрасывается, сторожевой таймер начинает отсчет после ста- билизирующей задержки. Аппаратные особенности сторожевого таймера. Если аппаратное обеспечение сторожевого таймера выбрано битами кон- фигурации, сторожевой таймер всегда активен и бит WDGA в регистре WWDG_CR не используется. Смотри описание битов конфигурации для сво- его микроконтроллера. Использование режима Halt с WWDS (WWDGHALT опция): Нижеследующая рекомендация по применению в режиме Halt может быть использована, когда сторожевой таймер включен. Перед выполнением команды Halt, обновите счетчик сторожевого таймера, во избегании неожиданного сброс после пробуждения микроконтроллера.
Глава 7. Оконный сторожевой таймер 57 Регистры модуля WWDG Регистр управления оконным сторожевым таймером (WWDGCR) Таблица 7.2. Описание регистров WWDG.CR 7 б 5 4 3 2 1 0 WDGA Тб Т5 Т4 тз Т2 Т1 то Чт/зп 1 Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Бит 7: WDGA — бит активации сторожевого таймера. Этот бит устанавлива- ется программно, а сброшен может быть только аппаратно (сбросам микро- контроллера). Когда WDGA = 1, сторожевой таймер может генерировать сброс. О — Оконный сторожевой таймер отключен; 1 — оконный сторожевой таймер включен. Примечание: Этот бит не используется, если сторожевой таймер выбран битами конфигурации. Биты 6...О — семиразрядный счетчик оконного сторожевого таймера. Эти биты содержат величину. Значение этого счетчика вычитается каждый 12288 циклов (приблизительно). А сброс генерируется, когда счетчик пересе- чет пределы от 0x40 до 0x3F (бит Тб очищается). Таблица 7.3. Описание регистра WWDG_WR 7 б 5 4 3 2 1 0 Зарезервировано W6 W5 W4 W3 W2 W1 W0 Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Бит 7 — зарезервирован, не используется. Биты 6...0 — биты W: эти биты содержат величину оконного регистра для сравнения с вычитающим счетчиком.
Глава 8 Система сброса Система сброса микроконтроллера осуществляет запрет на запуск микро- контроллера при недостаточности напряжения питания, а так же при некото- рых внутренних событиях и хранении информации о причинах предыдущего сброса. Одним из источников сброса является подача низкого логического уровня на вывод RESET и удержание его в течении некоторого времени. Программа сброса начинается с адреса 60001г в карте памяти. Схема цепи сброса: Когда произошел сброс, начинается фаза сброса. В течении этой фазы, ми- кроконтроллер устанавливает свое первоначальное состояние. По окончании этой фазы регистры инициализированными их «по-умолчанию». В течении фазы сброса, некоторые выводы микроконтроллера могут иметь состояния, отличное от их «состояние по умолчанию». VDD 10 7777 RPU (typ 45 k£2) Filter SYSTEM NRESET POR'BOR RESET IWDGAVWDG/SOFTWARE RESET SWIM RESET ILLEGAL OPCODE RESET EMC RESET Рисунок 8.1. Функциональная схема цепи сброса. PULSE GENERATOR (min 20 ps) Вывод RESET является и входом, и выходом с открытым коллектором свя- занным через резистор подтяжки с выводом VDD_IO. Импульс низкого уров- ня длительностью HNFP(NRST) на выводе NRST формирует внешний сброс. Определение сброса асинхронно, таким образом, МК может быть сброшен даже в режиме HALT. Вывод NRST может также служить выходом для сброса внешних устройств. Внутренние источники сброса: каждый источник внутреннего сброса свя- зан с соответствующими флагами в регистре RST SR, за исключением сброса по срабатыванию схем POR и BOR, которые флагов не имеют. Эти флаги установливаются во время сброса. Они показывают причину предыдущего сброса. Флаги могут быть программно очищено записью логической «1» на место соответствующего бита. В течении включения, блок POR будет удерживать вывод сброса в 0 до тех пор, пока напряжение источника питания не будет превышать порог срабаты-
Глава 8. Система сброса 59 вания схемы BOR, при этом начинает работать схема BOR. При этом схема POR отключается. Сброс по срабатыванию схемы POR произойдет когда на- пряжение питания снизится до минимального рабочего напряжения. Источники сброса Сброс по срабатыванию независимого сторожевого таймера. См. Главу по IWDG. Программный сброс — описан в главе по WWDG. Сброс от модуля SWIM — используется отладчиком. Сброс по неверному коду операции — для защиты микроконтроллера от ошибочных записей в память (возможно вследствии электромагнитных и по- добных воздействий). Защита состоит в том, что некоторые регистры имеют два битовых поля. В этих полях должны содержаться противоположные вели- чины. При нарушении этого условия, при обращении к этим ячейкам памяти, произойдет сброс. Регистры модуля сброса Рисунок 8.2 Регистр состояния сброса RST_SR 7 6 5 4 3 2 1 0 Не используется EMCF SWIMF ILLOPF IWDGF WWDGF чт/зп 1 чт/зп 1 чт/зп 1 чт/зп 1 чт/зп 1 Биты 7:5 Не используется. Бит 4 EMCF: EMC reset flag Этот бит устанавливается аппаратно и сбрасывается программно записью «1». 0: сброса по нарушению условий ЭМС не происходило. 1: произошел сброс по нарушению условий ЭМС (возможная причина: комплементарные регистры или биты конфигурации повреждены). Бит 3 SWIMF: SWIM reset flag Этот бит устанавливается аппаратно и сбрасывается программно запи- сью «1». 0: сброса от модуля SWIM не происходило. 1: произошел сброс от модуля SWIM. Бит 2 ILLOPF: Illegal opcode reset flag Этот бит устанавливается аппаратно и сбрасывается программно запи- сью «1». 0: сброса по неверному коду операции не происходило;
60 Глава 8. Система сброса 1: произошел сбой по неверному коду операции Бит 1 IWDGF: Independent Watchdog reset flag Этот бит устанавливается аппаратно и сбрасывается программно запи- сью «1». 0: сброса по срабатыванию 1WDG не происходило; 1: произошел сбой по срабатыванию IWDG; Бит 0 WWDGF: Window Watchdog reset flag Этот бит устанавливается аппаратно и сбрасывается программно запи- сью «1». 0: сброса по срабатыванию WWDG не происходило; 1: произошел сбой по срабатыванию WWDG;
Глава 9 Модуль автоматического пробуждения (AWU) В составе микроконтроллеров STM8 существует специальная система авто- матического пробуждения из энергосберегающих режимов — AWU (Auto Wake-Up). Она представляет собой таймер, который, при переполнении, про- буждает микроконтроллер из режима Active-halt. Этот временной интервал формируется от встроенного низкочастотного генератора (LSI) или от внеш- него генератора тактовых импульсов (HSE) через программируемый предде- литель. AWUEN & HALT/WAIT Рисунок 9.1. Функциональная схема модуля AWU. Для использования системы AWU, необходимо выполнить следующие дей- ствия: — измерить частоту LS с использованием бита MSR в регистре AWU SCR и счетных входов таймеров 1 или 3; — определить необходимый коэффициент деления записью битов APR в регистре AWU_APR; — выбрать интервал AWU записью битов AWUTB в регистре AWU TBR; — включить систему AWU установкой бит AWUEN в регистре AWU_SCR;
62 Глава 9. Модуль автоматического пробуждения (AWU) — выполнить команду HALT. При этом счетчики системы AWU будут пере- загружены и отсчет временных интервалов будет начат с новым значени- ем интервала AWU. Примечание: 1. Счетчики AWU начинают работать только когда МК введен в режим Active-halt после команды HALT. В то же время должно быть разрешено прерывание модуля AWU. 2. Предделитель счетчика AWU начинает работать как только значение би- тов APR начнет отличаться от начальной величины (0x03F). Система AWU может быть отключена загрузкой в биты AWUTB регистра AWUTBR значение ОЬОООО. Временные интервалы AWU настраиваются: — битами AWUTB (задает диапазон интервала срабатывания AWU); — битами APR (задает коэффициент деления частоты, формирующей ин- тервал срабатывания AWU). Таким образом, могут быть определены 15 непересекающихся временных диапазона. Они представлены в следующей таблице: Таблица 9.1. Таблица интервалов срабатывания системы AWU Интервал диапазона AWUTB APRDIV формула для вычисления интервала AWU APRDIV fLS = f fLS = 128kHz, ms 2/f — 64/f 0.015625-0.5 0001 APRDIV/fLS 2 to 64 2x32/f — 2x2x32/f 0.5 — 1.0 0010 2xAPRDIV /fLS 32 to 64 2x64/f — 2x2x64/f 1 — 2 0011 4xAPRDIV/fLS 32 to 64 22x64/f — 22x128/f 2 — 4 0100 8xAPRDIV/fLS 32 to 64 23x64/f — 23x128/f 4 — 8 0101 16xAPRDIV/fLS 32 to 64 24x64/f —24x128/f 8 — 16 0110 32xAPRDIV/fLS 32 to 64 25x64/f— 25x128/f 16 — 32 0111 64xAPRDIV/fLS 32 to 64 26x64/f—26x128/f 32 — 64 1000 128xAPRDIV/fLS 32 to 64 27x64/f—27x128/f 64—128 1001 256xAPRDIV/fLS 32 to 64 28x64/f —28x128/f 128 — 256 1010 512xAPRDIV/fLS 32 to 64 29x64/f—29x128/f 256 —512s 1011 1024xAPRDIV/fLS 32 to 64 210x64/f — 210x128/f 512 —1024s 1100 2048xAPRDIV/fLS 32 to 64 211x64/f — 211x128/f 1024 — 2048 1101 4096xAPRDIV/fLS 32 to 64 211x130/f— 211x320/f 2080 — 5120 1110 8192xAPRDIV/fLS 26 to 64 211x330/f — 212x960/f 5280 — 30720 1111 16384xAPRDIV/fLS 11 to 64
Глава 9. Модуль автоматического пробуждения (AWU) 63 Разброс частоты генератора LSI после подстройки частоты на заводе-изго- товителе составляет 128КГц +/— 12.5% (частота может зависеть от температу- ры, качества питания и других факторов). Для повышения точности времен- ного интервала AWU или частоты модуля ВЕЕР, частота LSI-генератора должна быть измерена и учтена. Для измерения должна быть проведена следующая процедура: — установить бит MSR в регистре AWU_CSR для внутреннего подключения тактовых сигналов LSI-генератора к счетному входу таймера; — измерить частоту LSI-генератора использованием прерываний таймеров; — вписать уточненную величину в биты регистра AWU_APR для выбора не- обходимого временного интервала. При этом битами регистра AWU TBR могут быть выбраны различные временные интервалы. Регистры модуля AWU Control/status register (AWUCSR) Таблица 9.2. Описание регистра AWU_CSR 7 б 5 4 3 2 1 0 Не используется AWUF AWUEN Не используется MSR Чт/очист чт/зп ЧТ/ЗП Биты 6,7 — зарезервированы. Бит 5 — AWUF: Auto-wakeup flag. Этот бит устанавливается аппаратно при формировании модулем AWU за- проса на прерывание и очищается чтением регистра AWU CSR. Доступен только для чтения. Также после чтения он обнуляется 0: запроса прерывания от модуля AWU не происходило; 1: произошел запрос на прерывание от модуля AWU. Бит 4 — AWUEN: Auto-wakeup enable Этот бит устанавливается и очищается программно. Он разрешает работу модуля AWU. Если микроконтроллер был введен в один из режимов Active-halt или Wait, он будет разбужен через программированный временной интервал. 0: работа модуля AWU запрещена; 1: работа модуля AWU разрешена. Биты 3, 2, 1 — зарезервированы. Бит 0 — MSR — разрешения измерения частоты LSI — генератора. Установка этого бита подключает частоту генератора LSI к счетному входу таймера.
64 Глава 9. Модуль автоматического пробуждения (AWU) 0: измерение частоты fls отключен; 1: измерение частоты fls включено. Регистр AWU_APR (Asynchronous prescaler register) Таблица 9.3. Описание регистра AWU_APR 7 6 5 4 3 2 1 0 Не исп. APR5 APR4 APR3 APR2 APR1 APR0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Биты 6-7 — зарезервированы. Биты 5-0 — величина APR — Asynchronous prescaler divider — значение ко- эффициента деления. Значение этих бит определяет коэффициент деления частоты fls, которая используется для формирования временного интервала AWU. Таблица 9.4. Таблица значений регистра AWU_APR ПАГМГТПЗ А1Л/1 1 ADD unun^nviv. fSV.1 VIV 1 ОН V rtl » If11Л£ЬиТ НАПАиМП 0x00 2 0x01 3 0x3 Е 64 Регистр AWU TBR (Timebase selection register) Таблица 9.5. Описание регистра AWU_TBR 7 6 5 4 3 2 1 0 Не исп. AWUTB3 AWUTB2 AWUTB1 AWUTB0 чт/зп чт/зп чт/зп чт/зп Биты 4-7 зарезервирвированы Биты 3-0 AWUTB[3:0]: Auto-wakeup timebase selection Эти биты устанавливаются и сбрасываются программно и определяют ин- тервал AWU. Таблица 9.6. Таблица выбора временной базы системы AWU AWUTB[3:0] Временной интервал 0000 нет прерываний 0001 APRDIV/fLS 0010 2xAPRDIV/fLS ООП 4xAPRDIV/fLS 0100 8xAPRDIV/fLS
Глава 9. Модуль автоматического пробуждения (AWU) 65 AWUTB[3:0] Временной интервал 0101 16xAPRDIV/fLS 0110 32xAPRDIV/fLS 0111 64xAPRDIV/fLS 1000 128xAPRDIV/fLS 1001 256xAPRDIV/fLS 1010 512xAPRDIV/fLS 1011 1024xAPRDIV/fLS 1100 2048xAPRDIV/fLS 1101 4096xAPRDIV/fLS 1110 8192xAPRDIV/fLS 1111 16384xAPRDIV/fLS
Г лава 1 О Таймеры Обзор таймеров STM8 Микроконтроллеры семейств STM8S и STM8A могут быть оснащены тремя различными типами таймеров: расширенный таймер (TIM1), таймер общего назначения (TIM2/TIM3/TIM5), а также основные таймеры (TIM4/TIM6). Таймеры имеют схожую архитектуру, но некоторые имеют дополнительные особенности. Общая архитектура таймеров, которая содержит схожие реги- стры и основные особенности, упрощает их использование и делает легче раз- работку приложений с использованием таймеров. В микроконтроллерах STM8S и STM8A с TIM1, TIM5 и TIM6, таймеры не имеют общих ресурсов (они полностью разделены), но они могут быть связа- ны между собой и синхронизированы, как описано в главе «Синхронизация между TIM 1, TIM5 Т1М6» Этот раздел содержит сравнение различных функций таймеров (табл. 34), определение сигналов, работающих с внутренними таймером. Раздел 17 содержит подробную информацию о 16-разрядном таймере с рас- ширенным управлением (TIM1) содержит полное описание всех различных режимов таймера. В связи с этим разделы, описывающие другие таймеры (таймер 2 и таймер 4), будут более краткими и содержащими только конкрет- ные особенности таймеров, их блок-схемы, описания регистров.
Таблица 10.1. Таблица сравнения функций таймеров Тип таймеров Разрешение таймеров Направление счета Значение предделителя Каналы захвата/ сравнения Комплементар- ные выходы Счетчик повто- рений Внешний вход триггера Вход внешнего останова Синхронизация/ связывание таймеров TIM1 (таймере расширенным управлением) Вверх/ вниз Любое целочис- ленное от 1 до 655636 4 3 Да 1 1 СТ1М5/ TIM6 TIM2 (Таймер общего назначения) 16-Разр. Любое из степени 2 (от 2 до 32768) 3 TIM3 (Таймер общего назначения) Вверх 2 Отсутству- ют Нет 0 0 Нет TIM4 (базовый таймер) 8-Разр. Любое из степени 2 (от 2 до 128) 0 TIM5 (Таймер общего назначения) 16-разр. Up Любое из степени 2 (от 2 до 32768) 3 Отсутству- ют Нет 1 (Соединен сТ1М1) 0 Да TIM6 (Базовый таймер) 8-разр. Любое из степени 2 (от 2 до 128) 0 0 Глава 10. Таймеры
68 Глава 10. Таймеры Таблица 10.2. Таблица сигналов, используемых в этой главе Сокращенное название Описание Назначение BI Break interrupt Прерыванию по останову таймера CCil: CC1I, CC2I, CC3I, CC4I Capture/compare interrupt Прерывание по захвату/сравнению канала i 0 = 1,2,3,4) CK_CNT Counter clock Счетчик тактовых сигналов CK-PSC Prescaler clock тактирующая последовательность после предделителя CNT_EN Counter enable Разрешение работы счетчика CNTJNIT Counter initialize Настройка таймеров ETR External trigger from TIMx_ETR pin Внешние прерывания от вывода TIMx_ETR. ETRF External trigger filtered Отфильтрованный внешний триггер ETRP External trigger prescaled Сигнал внешнего запуска/останова после предделителя Fmaster Timer peripheral clock from clock controller (CLK) Тактирующий сигнал от модуля тактирования ICi: IC1JC2 Input capture Вход захвата ICiPS: ICI PS, IC2PS Input capture prescaled Сигнал входа захвата после предделителя MATCH 1 Compare match Достижение сравнения OC i:OC1,OC2 Timer output channel Выходной канал таймера OCiREF: 0C1REF, 0C2REF Output compare reference signal Опорный сигнал выходного компаратора TGI Trigger interrupt Прерывание по срабатыванию триггера Tli:TI1.TI2 Timer input Вход таймера TliF:TI1F,TI2F Timer input filtered Сигнал внешнего входа таймера после фильтра TI1_ED Timer input edge detector Детектор фронта сигнала на входе таймера TI/FPn:TI1 FP1, TH FP2, Timer input filtered prescaled Фильтрованный предделитель входа таймера TRC Trigger capture Триггер захвата TRGI Trigger input to clock/trigger/slave mode controller Входной триггер в режимах тактирование/ триггер/подчиненный UEV Update event Событие обновления UIF Update interrupt Прерывание по обновлению
Глава 10. Таймеры 69 Основные возможности таймера 1 — 16-разрядный вычитающий/прибавляющий автоматически перезагружа- емый счетчик; — счетчик повторений обновлений регистров таймера только после задан- ного количества циклов счета; — 16-разрядный программируемый предделитель, позволяющий менять коэффициент деления тактовой частоты счетчика «Налету» в пределах от 1 до 65536; — цепь, управляющая синхронизацией таймера с внешним сигналом и со- единением нескольких таймеров (соединение таймеров не доступны в некоторых устройствах); — 4 независимых канала, которые могут быть настроены как: — захват входного сигнала; — выход схемы сравнения; — ШИМ-генерация (с выравниванием по центру или по краю); — 6-ступенчатаю генерация ШИМ; — режим одиночного импульса; — комплементарные выходы на трех каналах с программируемым защит- ным временным интервалом; — столовый вход для приведения таймера выходных сигналов таймера в со- стояние сброса; — вход внешнего запуска (триггера); — генерация прерываний по наступлении следующих событий: — Обновление: счетчик переполняется/опустошается, счетчик инициали- зирован (программно или встроенным/внешним триггером запуском); — события триггера (начало счета, конец, инициализация или встроенный/ внешний запуск/останов); — захват входного сигнала; — сравнение с выходным сигналом; — стоповый сигнал.
70 Глава 10. Таймеры Функциональная схема таймера 1 Рисунок 10.1. Функциональная схема таймера. Формирователь временных интервалов TIMl time base unit (блок формирования временных интервалов TIM1). Таймер имеет узел формирования временных интервалов, который вклю- чает в себя: — 16-разрядный складывающий/вычитающий счетчик; — 16-разрядный регистр автоперезагрузки; — счетчик повторений; — предделитель. Ниже представлена схема блока формирования временных интервалов: TIM1.ARRH, ARRL TIM1_RCR TIM1_CNTRH, CNTRL TIM1_PSCRH, PSCRL rUlF UEV-^> Рисунок 10.2. Функциональная схема формирователя временных интервалов.
Глава 10. Таймеры 71 Она имеет в своем составе: — предделитель основного тактового сигнала микроконтроллера (коэф- фициент деления — любое значение от 1 до 65535); — 16-ти разрядный счетчик; — регистр автоперезагрузки (значение автоперезагрузки — значение, до которого считает счетчик прежде, чем обнулиться); — счетчик повторений (содержит количество определенных событий счетчика — события определяются настройками регистров счетчика); Регистр автоперезагрузки является комбинацией из регистра загрузки и те- невого регистра. Действующим значением является содержимое теневого ре- гистра. Запись в теневой регистр автоперезагрузки может осуществляться дву- мя режимами: — если предзагрузка регистра автоперезагрузки разрешена (установлен бит ARPE в регистре TIM1CR1) —в этом режиме, когда данные записыва- ются в регистр автоперезагрузки, они сохранятся в регистре предзагрузки и передаются в теневой регистр при наступлении ближайшего события обновления (UEV). — если предзагрузка регистра автоперезагрузки запрещена (бит ARPE очи- щен) — в этом режиме, когда данные записываются в регистр автопереза- грузки, они будут загружены в теневой регистр немедленно. Событие обновления генерируется в следующих случаях: — когда счетчик переполняется, либо опустошается; — когда программно установлен бит UG в регистре TIM1UGR; — когда появляется событие триггера от блока тактирования/запуска. Генерация событий обновления может быть отключена установкой бита UDIS в регистре TIM1_CR1. Необходимо отметить, что регистры предзагрузки имеют также преддели- тель и управляющий регистр счетчика повторений. Счетчик не имеет реги- стров предзагрузки. Режимы счета Счетчик таймера 1 может работать в трёх режима счета: счет вверх, счет вниз, счет вверх-вниз (попеременно то вверх, то вниз). В режиме счета вверх счетчик увеличивается от 0 до величины автопереза- грузки (содержимое регистра TIM1_ARR). Далее счетчик перезапускается (начинается счет с нуля), а модулем формирования временных интервалов формируется событие обновления (UEV).
72 Глава 10. Таймеры Пример счета вверх: Рисунок 10.3. Описание работы счетчика при счете «вверх». Событие UEV может быть также сгенерировано установкой бита UG в ре- гистре TIM1_EGR (любым способом — либо программным, либо аппарат- ным — в ходе работы блока запуска/тактирования). Генерация UEV может быть также отключена программно — установкой бита UDIS в регистре TIM1CR1. Это позволяет избежать обновления тене- вого регистра пока производится запись нового значения в регистры предза- грузки. На рисунках 10.4 и 10.5 показано два примера поведения счетчика для раз- личных тактовых частот когда TIM1_ARR — 0x36. На рисунке 10.4, коэффициент деления таковой частоты равен 2. Предза- грузка отключена (бит ARPE = 0), следовательно, теневой регистр будет об- новлен немедленно. Следующее UEV произойдет при событии переполнении счетчика, когда счетчик досчитает до 0x36. На рисунке 10.5 коэффициент деления равен 1, таким образом, CK CNT имеет ту же частоту что и CK_PSC. Автозагрузка включена (бит ARPE = 1). Таким образом, при следующем переполнении счетчика произойдет UEV, в результате которого содержимое регистра предзагрузки будет загружено в те- невой регистр.
i Глава 10. Таймеры 73 Рисунок 10.4. Работа счетчика при отключенной предзагрузке. cK_psc JTITnJTTLJTfb^ CNT_EN TIMER CLOCK = CK_CNT COUNTER REGISTER COUNTER OVERFLOW UPDATE EVENT (UEV) 1 UPDATE INTERRUPT FLAG (UIF) AUTO-RELOAD PRELOAD REGISTER FF AUTO-RELOAD SHADOW REGISTER FF 36 New value transferred in shadow register on counter overflow Write a new value in TIMx_ARR Рисунок 10.5. Работа счетчика при включенной предзагрузке.
74 Глава 10. Таймеры Режим счета вниз. В режиме счета вниз все происходит аналогично режиму счета вверх, за ис- ключением направления счета. Режим выравнивания импульса по центру (счет вверх/вниз). В этом режиме бит направления в регистре управляется аппаратно и не до- ступен для записи. В этом режиме бит направления в регистре TIM1_CR1 управляется аппа- ратно и не доступен для записи. На рисунке ниже представлен пример выравнивания импульса по центру. Рисунок 10.6. Работа счетчика в режиме «вниз-вверх». UEV также может быть отключено программно установкой бита UDIS в ре- гистре TIM1CR1. Это необходимо чтобы избежать обновления теневого ре- гистра пока новая величина записывается в регистр предзагрузки. Обновле- ния не призойдет до тех пор, пока в бит UDIS записан 0. Тем не менее, счет- чик перезагрузится от текущей величины предзагрузки. При этом предделитель счетчика перезапустится с нуля (без акаих либо из- менений в значении предделителя), а предделитель счетчика от нуля. Вдобавок, если бит URS (update request selection) в регистре TIM1_CR1 установлен, установка бита UG приведет к генерации UEV без установки вла- га UIF. Следовательно, запрос на прерывание не будет сформирован. Это по- зволяет избежать генерации двойного обновления и захвата (задержания) прерывания, когда очищается счетчик при событии захвата. Когда произошло событие обновления, все регистры будут обновлены и флаг обновления UIF в регистре TIM1_SR1, будет установлен (в зависимости от бита URS). При этом в таймере 1 произойдет следующее: — в теневой регистр автоперезагрузки будет записано значение регистра предзагрузки TIM1ARR; — в теневой регистр предделителя будет записано значение регистра пред- загрузки TIM 1PSCR. Стоит отметить что если источником обновления было переполнение счет- чика, а во время счета вверх было внесено новое значение автоперезагруки, до
Глава 10. Таймеры 75 достижения следующего переполнения будет действовать одно значение ав- топерезагрузки, а после него — другое, при этом этот цикл счета вверх-вниз будет иметь другую длительность. CK_PSC CNT.EN TIMER CLOCK = CK_CNT COUNTER REGISTER COUNTER UNDERFLOW COUNTER OVERFLOW UPDATE EVENT (UEV) UPDATE INTERRUPT FLAG (UIF) AUTO-RELOAD PRELOAD REGISTER AUTO-RELOAD SHADOW REGISTER п 1 1ПЛ жпляп. ТП_П_ГЪГ 1 ТЛЯ. ТГШЛЛЯ 1ЛЛШ 1 04 [об((о5)(о4)(оз)[ 1 1 1 1 — ГС 1 06 FD / 06 New value transferred in shadow register on update event Write a new value in TIMx_ARR Рисунок 10.7. Временные диаграммы при работе в режиме «вниз — вверх». Пояснение по использованию режима выравнивания по центру: — когда счетчик стартует в режиме выравнивания по центру, используются текущие настройки направления счета. Таким способом счетчик начина- ет считает вверх или вниз в зависимости от величины записанной в бите D1R в регистре TIM1CR1 (биты DIRh CMS не должны меняться во вре- мя работы счетчика); — запись в счетчик когда он работает в режиме выравнивания по центру не ре- комендуется, так как это приведет к неожиданным результатам. В частности: — направление не будет изменено если величина записанная в счетчик будет больше чем содержимое регистра автозагрузки (TIM 1_CNT>TIM 1ARR). Например, если счетчик до обновления считал вверх, он продолжит де- лать это; — направление счета будет обновлено если в счетчик будет записана вели- чина 0 или величина регистра TIM1ARR, будет записано значение 0. При этом UEV не генерируется. — Наиболее безопасный путь использования режима выравнивания по центру это генерация обновления программно (установкой бита UG в ре- гистре TIM 1EGR) именно перед запуском счетчика.
76 Глава 10. Таймеры Счетчик повторений В составе блока формирования временных интервалов также присутствует счетчик повторений. Этот счетчик является вычитающим. В зависимости от настроек, он декрементируется при следующих событиях: — каждом переполнении счетчика при счете «вверх»; — каждом опустошении счетчика при счете «вниз»; — каждом переполнении и опустошении счетчика в режиме выравнивания по центру. В описании предыдущих частей модуля формирования временных интер- валов описывалось поведение счетчика и генерация UEV по событиям пере- полнения или опустошения счетчика. Оно будет таким только когда значение в счетчике повторений равен нулю. Счетчик повторений является автоперезагружаемым, количество повторе- ний определяется величиной регистра TIM1RCR. Когда UEV генерируется программно (установкой бита UG) или аппаратно (через модуль тактирова- ния/триггера), это немедленно приводит к независимости от величины счет- чика повторений. Счетчик повторений будет перезагружен содержимым ре- гистра TIM1RCR. Ниже проиллюстрирована работа счетчика повторений при разных значениях регистра TIM1_RCR и различных режима счета. Так как UEV будет формироваться один через заданное количество раз, данные будут передаваться из регистров предзагрузки в теневые регистры (ре- гистр автоперезагрузки TIM1_ARR, регистр предделителя TIM1PSCR, и ре- гистр сравнения/захвата TIM I CCRx в режиме сравнения) через соответству- ющее количество UEV.
Глава 10. Таймеры 77 Center-aligned mode Edge-aligned mode Up-counting Counter TIM1_CNT ЖЖ441 TIM1_RCR = 0 UEUj* fffftfftftt AA/W\ TIM1_RCR=1 UEV,> f ЛЛЛЛЛ TIM1_RCR = 2 UEV^ | | | f wmwi A/VVV\ TIM1_RCR = 3 TIM1_RCR = 3 and re-synchronization UEV^ | f f AMV UEV^ | (by SW) ШШ t f t (by SW) Down-counting 1ШШ W#N\ f + f + f NW#K t t + i IW#N\ ff + ft t (by SW) UE\bjb UEV: Preload registers transferred to shadow registers and update interrupt generated I UEV if the repetition down-counter underflow occurs when the counter is equal to the auto-reload value Рисунок 10.8. Работа счетчика повторений при разных значениях RCR. Контроллер тактирования/запуска таймера TIM1 Контроллер тактирования/запуска TIM1 состоит из источника тактового сигнала предделителя таймера, входного триггера и настраиваемого выходно- го триггера. Рисунок 10.9. Функциональная схема блока тактирования/запуска таймера 1
78 Глава 10. Таймеры На рисунке выше представлена функциональная схема блока тактирова- ния/запуска. Слева показаны возможные источники тактирования/запуска таймера 1: — встроенный источник тактирования (Fmaster); — внешнее тактирование режим 1: тактовый сигнал на любом из входов таймера (Til, TI2, TI3, Т14); — внешнее тактирование режим 2: тактовый сигнал на входе ETR (Т1М1_ ETR); — внутреннее тактирование — использование в качестве тактового сигнала события другого таймера (TRGO от таймеров TIM5 и TIM6); Внутренний источник тактирования В случае тактирования счетчика от частоты FMASTER, контроллер тактирова- ния/триггера и внешний вход триггера отключены (SMS = ООО в регистре TIM1SMCR и ЕСЕ = 0 в регистре TIM1_ETR), биты CEN, DIR, и UG ведут себя как управляющие биты и могут быть изменены только программно (за исключение UG, который может быть очищен аппаратно). Таким образом, когда бит CEN устанавливается, предделитель тактируется от внутреннего ис- точника. Рисунок, показывающий поведение управляющей цепи и складывающего счетчика в нормальном режиме, без деления тактовой частоты, при значении перезагрузки 36 ^master -ГИШШиШПШЛЛЛЛЛ CEN = CNT_EN J UG ! | । f^MT I MIT 1—I m/nnhrArihfifl' I аг 1 i 1 '-/IN I _fl 41 » —V/V-И oyi Jkzl If VI VXH \Jl V/кЛПГ I COUNTER CLOCK = CK.CNT = CK_PSC ПППППППППППППП COUNTER REGISTER Рисунок 10.10 Временные диаграммы работы блока тактирования/запуска.
Глава 10. Таймеры 79 Внешнее тактирование Режим внешнего тактирования 1. Счетчик может считать по каждому восходящему или падающему фронту на выбранном входе таймера. Этот режим выбирается, установкой бит SMS = 111 в регистре TIM1_SMCR. TIM1SMCR TS[2:0] TI2 Filter Edge Detector [ icF[3:0] I TIM1_CCMR2 Tl2FJo^ TUFJZor^r Encoder mode TRGO from other timers ti2f„rising ti2fJailing TIM1_CCER1 TRGI J ETRF £ ^master £ (internal clock) External clock mode 1 External clock mode 2 Internal clock mode CK.PSC TIM1_ETR TIM1_SMCR Рисунок 10.11 Схема тактирования в режиме внешнего тактирования 1. Ниже описаны настройки для складывающего счетчика, считающего по восходящему фронту на входе TI2: 1. Настраивается канал 2 на определение восходящего фронта на входе Т12 записью CC2S = 01 в регистр TIM1CCMR2. 2. Настраивается длительность входного фильтра записью бит IC2F[3:0] в ре- гистре TIM 1CCMR2 (если фильтр не нужен, необходимо внести IC2F = 0000). Примечание: предделитель захвата не используются для работы триггера, и не нуждается в настройке. Таким образом, биты CC2S (указать, какой регистр) не нуждаются в настройке, так как они выбирает источник входного захвата. 3. Выбор восходящего фронта записью СС2Р = 0 в регистре TIM1CCER1. 4. Настройка таймера на внешний источник внешнего тактового сигнала в режиме 1 записью бит SMS — 111 в регистре TIM1_SMCR. 5. Выбор TI2 как входа таймера записью TS = 110 в регистре TIM 1SMCR. 6. Включение счетчика записью CEN = 1 в регистре TIM1CR1. Когда на входе TI2 обнаруживается восходящий фронт, счетчик увеличи- вается на единицу и устанавливается флаг триггера (бит TIF в регистре TIM1_SR1) и формируется запрос на прерывание (если оно разрешено би- том TIE в регистре TIM1 IER).
80 Глава 10. Таймеры Задержка между восходящим фронтом на TI2 фактическим обновлением счетчика возникает из-за повторной синхронизации с сигналом на входе TI2. Рисунок 10.12 Временные диаграммы режима внешнего тактирования 1. Внешний источник тактирования режим 2. Счетчик может считать по каждому восходящему или падающему фронту на выводе ETR. Этот режим может быть выбран установкой бита ЕСЕ в реги- стре TIM1_ETR. or TI2F £ ort TI1FA oft external clock mode 1 encoder mode TRGI A ETPS(1:0] llM^ETR divider /1,/2,/4,/8 TIM1_ETR ETRF4 f MASTER^ (internal clock) external clock mode 2 internal clock mode CK„PSC [ece] |sms[2:o] TIM1_ETR TIM1_SMCR Рисунок 10.13 Схема тактирования в режиме внешнего тактирования 2. Используя следующую последовательность настройки складывающего счетчика, этот режим может быть настроен, например, на счет по каждому второму восходящему фронту на выводе ETR: I. так как фильтр в этом случае не нужен, вписать биты ETF (в регистре TIMl_ETR) нули. 2. Установить предделитель записью в биты ETPS[1:O] в регистре Т1М1_ ETR значения 01.
Глава 10. Таймеры 81 3. Выбрать увеличение по восходящему фронту на выводе ETR записью 0 в бит ЕТР в регистре TIM 1ETR. 4. Включить режим внешнего тактирования 2 записью 1 в бит ЕСЕ в реги- стре TIM1ETR. 5. Включить счетчик установкой бита CEN в регистре TIM1_CR1. Между нарастающим фронтом и фактическим обновлением счетчика воз- можна задержка. Она происходит из-за работы фильтра и синхронизации с основной тактовой частотой Fmmler •master CNTJEN ETR ETRP ETRF COUNTER CLOCK = CK.CNT = CK.PSC COUNTER REGISTER Рисунок 10.14 Временные диаграммы в режиме внешнего тактирования 2. Запуск таймера 1 В состав блока тактирования/запуска, помимо модулей, обеспечивающих подачу тактового сигнала, есть модули, обеспечивающие запуск таймера счет- чика (модуль запуска). Схема запуска имеет 4 входа: — внешний вход ETR; — вход 1 таймераТ! 1; — вход 2 таймера TI2; — выходы триггеров TRGO от других таймеров/счетчиков. Таймер 1 может быть запущен внешним сигналом в трех режимах: — стандартный режим запуска; — режим сброса; — режим стробируемого запуска. Стандартный режим запуска. Счетчик начинает работу в ответ на сигнал на выбранном входе таймера. Нижеследующая процедура запускает складывающий счетчик в ответ, на- пример, на восходящий фронт на входе TI2: — настраивается канал 2 на определение восходящего фронта на выводе TI2. Так как фильтр не используется в этом примере, настраивается на
82 Глава 10. Таймеры длительность входного фильтра равную 0. (IC2F = 0000). Запись СС2Р в регистр TIM1CCER1 выбирает восходящий фронт. —таймер перестраивается в режим запуска записью SMS = НО в регистре TIM1SMCR. Выбирается TI2 как источник сигнала запуска записью TS = 110 в регистре TIM1_SMCR. Когда произойдет восходящий фронт на выводе TI2, счетчик начнет счи- тать внутренние такты и флаг TIF будет установлен. Возможна задержка между восходящим фронтом на выводе TI2 и фактиче- ским включением (сигнал CNT_EN) счетчика из-за синхронизации с систем- ной тактовой частотой. TI2 CNT_EN _______________________ COUNTER CLOCK = CK_CNT = CK_PSC ___________________П-П-П-Г1-П COUNTER REGISTER 34 ^5)зб^тЯ~ TIF Рисунок 10.15 Диаграммы запуска счетчика восходящим фронтом на TI2. Сброс таймера В этом режиме счетчик и его предделитель сбрасываются в ответ на событие на входе схемы запуска. Кроме того, если бит URS в регистре TIM 1CR1 сбро- шен, генерируется UEV. В этом случае все регистры предзагрузки (Т1М1_ ARR, TIMICCRi, предделитель), будут обновлены. Пример: Используя нижеследующую процедуру очищается складывающий счетчик в ответ на восходящий фронт на входе TI1: 1. Настраивается канал 1 на определение восходящего фронта на входе TI1. Так как фильтр в этом примере не используется, длительность фильтра долж- на быть настроена на 0 (IC2F = 0000). Биты СС 1S выбирают источник входно- го захвата и не нуждается в дополнительной (иной) настройке. Запись 0 в бит СС1Р в регистре TIM1CCER1 подтверждает полярность (и определение вос- ходящего фронта). 2. Настройка таймера в режим сброса записью SMS = 100 в регистре Т1М1_ SMCR. Выбор TI1 как вход определяется записью бит TS = 101 в регистре TIM1SMCR. 3. Запуск счетчика установкой бита CEN в регистре TIM1_CR1.
Глава 10. Таймеры 83 Счетчик начнет считать внутреннюю тактовую частоту и будет вести себя нормально до тех пор, пока не будет обнаружен восходящий фронт на выводе TI1. Когда он будет обнаружен, счетчик будет перезапущен от 0. Также будет установлен флаг триггера (бит TIF в регистре TIM1SR1), если разрешено прерывание от триггера (установлен бит TIE в регистре TIM1_1ER), будет сформирован запрос на прерывание. На нижеследующем рисунке показано поведение счетчика при значении автоперезагрузки 36h и настройках модуля запуска/тактирования в режим сброса. Задержка между поднимающимся фронтом на выводе TI1 и обновле- нием счетчика зависит от синхронизации сигнала на входе TI1 с тактовой ча- стотой микроконтроллера. ти UG COUNTER CLOCK = CK.CNT = CK.PSC пл..пл_гииии COUNTER REGISTER TIF I Рисунок 10.16 Временные диаграммы счетчика в режиме сброса. Режим стробируемого запуска В этом режиме счетчик включается при установке определенного уровня сигнала на выбранном входе. Пример: используя нижеследующую последовательность может быть вклю- чен складывающий счетчик при низком уровне сигнала на входе Т11: 1. Канал 1 настраивается на определение низкого уровня на выводе TI1. На- стройка фильтра не требуется. Настройка предделителя захвата не требуется. Биты СС1S определяют источник входного сигнала и в данном случае не нуж- даются в настройке. Записью 1 в бит СС1Р в регистре TIM 1 CCER 1 для опре- деления полярности (и определяемого уровня). ‘ 2. Настройка таймера в режим стробируемого запуска записью SMS = 101 в I регистре TIM1_SMCR. Выбор TH как вход определяется записью TS = 101 в регистре TIM 1SMCR. 3. Включение счетчика установкой бита CEN в регистре TIM1_CR1 (в ре- жиме стробируемого запуска счетчик не стартует если CEN = 0, независимо от уровня сигнала на входе триггера). Счетчи'х начинает счет импульсов внутреннего тактового генератора когда уровень сигнала на входе TI 1 низкий. Как только уровень на входе TI 1 станет
84 Глава 10. Таймеры высоким, счетчик остановится. Флаг TIF будет установлен когда счетчик нач- нет работу или остановится. Задержка между поднимающимся фронтом на выводе ТП и обновлением счетчика зависит от ресинхронизации цепи на входе TI1. TI1 CNT.EN COUNTER CLOCK = CK_CNT = CK_PSC COUNTER REGISTER Write TIF=O Рисунок 10.17 Диаграммы работы счетчика в режиме стробируемого запуска. Взаимодействие между таймерами В микроконтроллерах семейства STM8S, таймеры могут внутри микрокон- троллера взаимодействовать друг с другом. Таким образом, один из таймеров (мастер) может тактировать или запускать другие (подчиненный). Когда один из таймеров сконфигурирован в режим мастер, он свой сигнал с выхода триг- гера (TRGO) может подать на входы сброса, старта, останова или тактирова- ния других счетчиков, настроенных в режим подчиненного. Рисунок 10.18 Схема подключения к таймеру 1.
Глава 10. Таймеры 85 Рисунок 10.19 Схема подключения к таймеру 5. Рисунок 10.20 Схема подключения к тамеру 6. Использование одного таймера как предделителя для другого таймера. На нижеследующем рисунке показано, как таймер А может быть настроен как предделитель для таймера В. TIMER А TIMER В Clock MMS TS SMS TRIGGER SELECTION Рисунок 10.21 Схема тактированя счетчика В счетчиком А.
86 Глава 10. Таймеры 1. Таймер А настраивается в режим мастер таким образом, чтобы выдавал на выход периодический сигнал по каждому UEV. Для настройки по срабатыва- нию по каждому восходящему фронту на выходе TRGO1 по каждому срабаты- ванию UEV, записать MMS = 010 в регистр TlMx_CR2. 2. Подключить TRGO1 таймера А к таймеру В. Таймер В должен быть на- строен в режим подчиненного с использованием ITR1 как встроенного триг- гера. Этот выбор производится установкой бита TS в регистре TIMx_SMCR (запись TS = 001). 3. Установить контроллер тактирования /триггера в режим внешнего такти- рования 1, записью SMS = 111 в регистр TIM 1SMCR. В этом случает таймер В будет тактироваться по каждому восходящему фронту сигнала триггера тай- мера А (который соответствует количеству переполнений таймера А). 4. Разрешить работу обоих таймеров установкой бит CEN в регистрах Т1Мх_ CR1 соответствующих таймеров. Если как выход схемы тактирования/запуска таймера А выбран сигнал OCi (MMS = 1хх), он будет использовать восходящий фронт для тактирования счетчика таймера В. Использование одного таймера для включения другого. '-Stea плпллллжплгшлллшлшшпллгт Timer A-OC1REF Timer A-CNT )( FC)( FP)( FE )( FF X 00 X 01 Рисунок 10.22 Диаграммы таймера В тактируемого сигналом ОС1 таймера А. Таймер В считает «поделенные» тактовые сигналы только когда OC1REF таймера А установлен. Оба счетчика тактируются с коэффициентом деления 4 через предделитель от Fmaster (fCKCNT = Fmaster/4). I. Настройка таймера А в режим мастер для передачи импульсов с выхода его компаратора опорного сигнала канала 1 как выхода триггера (MMS = 100 в регистре TIMx_CR2). 2. Настройка формы сигнал OCREF таймера A (TIMx_CCMRl register).
Глава 10. Таймеры 87 3. Настройка таймера В для получения входного сигнала триггера из тайме- ра A (TS — 001 в регистре TIMxSMCR). 4. Настройка таймера В в режим trigger gated (SMS = 101 in TIMxSMCR register). 5. Включение таймера В записью 1 в бит CEN (TIMx_CRl register). 6. Включение таймера Азаписью 1 вбит CEN (TIMx_CRl register). Тактирования счетчика 2 не синхронизировано с счетчиком 1. Этот режим работает, только если включено тактирование счетчика В. Пример 2. Таймер А и таймер В синхронизированы. Таймер А мастер и начинает счет с 0. Таймер В подчиненный и начинает счет с E7h. Значение предделителя одинаково для обоих таймеров. Таймер В останавливается когда таймер А от- ключен записью 0 в бит CEN регистра TIMx_CRl. 1. Таймер A i встроен в режим мастер для передачи с его выхода компаратора 1 (OC1REF) выходного сигнала триггера (MMS = 100 в регистре TIMx_CR2). 2. Настройка выходного сигнала на выводе OC1REF таймера А (настройкой регистра TIMxCCMRl). 3. Настройка таймера В на прием сигнала для триггера с таймера A (TS = 001 в регистре TIMxJSMCR). 4. Настройка таймера В в режим стробируемого запуска (установкой SMS= 101 в регистре TIMx_SMCR). 5. Сброс таймера А записью 1 в бит UG (регистр TIMx_EGR). 6. Сброс таймера В записью 1 в бит UG (регистр TIMx_EGR). 7. Инициализация таймера В значением E7h записью этого значения в ре- гистр счетчика таймера В (TIMxCNTRL). 8. Включение таймера В записью 1 в бит CEN регистра (TIMx_CRl). 9. Остановка таймера записью 0 в бит CEN (TIMx_CRl). Timer A-CEN = CNT_EN Timer A-UG Timer A-CNT 75 X 00 X 01 X 02 Timer B-CNT AB JCooJL E7 _J ES X_ E9 Timer B-UG Timer В write CNT Timer B-TIF Рисунок 10.23 Тактирование счетчиком А счетчика В.
88 Глава 10. Таймеры Использование одного таймера для запуска другого таймера. Пример 1. Включение таймера В устанавливает UEV таймера А. Таймер В начинает считать с его текущей величины (которая может быть не равной 0) через дели- тель встроенного тактового сигнала как только таймером А будет сгенериро- вано UEV. Когда таймер В принимает сигнал триггера, его бит CEN автомати- чески установится и таймер В будет считать пока бит CEN не будет сброшен. Оба тактируются частотой Fmaster поделенной на 4. 1. настройка таймера А в режим мастер для передачи его UEV как выход триггера (MMS = 010 в регистре TIM1_CR2). 2. Настройка периода таймера A (TIM 1ARR). 3. Настройка таймера В на взятие входа триггера от таймера A (TS = 001 в регистре TIM 1SMCR). 4. Настройка таймера В в режим триггера (SMS = НО в регистре Т1М1_ SMCR). 5. Начало работы таймера Азаписью 1 b6htCEN (TIM1_CR1). 'master IuUUUuUuUUUUUuUUUUUUUuUUuUULIL Timer A-UEV | Timer A-CNT \ FD X FE X' FF ~~X~~ 00 X 01 Г 02 X Timer B-CNT 45 X~ 46 X 47 X 48 Timer B-CEN = CNT_EN _______________ Timer B-TIF __________________ ___________________ Write TIF=O Рисунок 10.24 Запуск счетчиком В счетчика А. Каналы захвата/сравнения таймера 1 Третьей основной частью таймера счетчика являются каналы захвата/срав- нения. Режим выхода компаратора Этот режим используется для управления формой выходного сигнала или отображением того, что заданный промежуток времени будет завершен. Когда будет определено равенство между регистром захвата-сравнения и счетчиком:
Глава 10. Таймеры 89 1) в зависимости от выходного режима компаратора, соотвествующий вы- ход OCi: — Сохраняет уровень (OCiM = ООО); — становится активным (OCiM = 001); — становится неактивным (OCiM = 010); — изменяет логический уровень (OCiM = 011). 2) устанавливается флаг прерывания в регистре состояния (биты CCilF в регистре TIM1SR1). 3) генерируется запрос на прерывание если соответстующий бит маски пре- рываний установлен (биты ССПЕ в регистре TIM1_TER). Режим выхода компаратора определен битами OCiM в регистрах Т1М1_ CCMRi. Активный или неактивный уровень определен битами CCiP в реги- страх TIM ICCERi. Регистры TIM l_CCRi могут быть настроены с или без регистра предзагруз- ки использованием битов OCiPE в регистрах TIMICCMRi. В режиме выхода компаратора, UEV не работает на выходах OCiREF и OCi. Временное разрешение это один такт счетчика. Режим выходного компарато- ра может быть также использоваться для генерации единичного импульсов на выходе. Последовательность: 1. Выбор источника тактового сигнала (встроенный, внешний или через предделитель); 2. Запись необходимых данных в регистры TIM 1ARR и TlMl_CCRi; 3. Установка бит ССПЕ если запрос на прерывание будет сгенерирован; 4. Выбор режима выхода из нижеперечисленных: — записать OCiM = 011, для инвертирвания уровня на выводе OCi, когда CNT будет равен CCRi; — Записать OCiPE = 0, для отключения регистра предварительной загруз- ки; — Записать CCiP = 0, чтобы выбрать активным высокий уровень сигнала; — Записать CCiE = 1, чтобы включить вывод. 5. Разрешить работу счетчика установой бит CEN в регистре TIMx CRl. Регистры TlMl_CCRi могут быть обновлены в любое время программно для управления формой выходного сигнала, что обеспечивается отключени- ем регистров предзагрузки (бит OCiPE = 0). Однако, теневые регистры TIMl_CCRi будут обновлены только при следующем UEV (см. Рисунок ниже)
90 Глава 10. Таймеры Рисунок 10.25 Формирование сигнала ОС в режиме выходе компаратора. Режимы работы таймера 1 1 LULtlJYl Режим широтно-импульсной модуляции позволяет Вам формировать сиг- нал с определенной частотой, определенной величиной регистра TIM1ARR и длительностью импульса, определенной величиной регистра TIMl_CCRi. Режим ШИМ может быть выбран независимо для каждого канала (один ШИМ на вывод OCi) записью значения 110 (режим ШИМ 1) или 111 (режим ШИМ 2) в биты OCiM регистра TIMl_CCMRi. Соответствующий регистр предзагрузки должен быть включен установкой бит OCiPE в регистре Т1М1_ CCMRi. Предварительный регистр автоперезагрузки (в режима счета вверх или выровненного по центру счета) должен быть опционально включен уста- новкой бита ARPE в регистре TIM1_CR1. Регистры предзагруки будут переданы в теневые регистры только при сле- дующем LEV, все регистры должны быть настроены установкой бита LG в регистре TIM 1EGR перед началом счета. Полярность сигнала OCi программно изменяется использованием бит CCiP в регистрах TIM l_CCERi. Таким образом полярность может быть запрограм- мирована на высокий или низкий активный уровень. Вывод OCi включается комбинацией бит СОЕ, МОЕ, OlSi, OSSR и OSSI в регистрах TIM I CCERi и TIM1BKR. Смотрите описание регистров TIMl_CCERi для более подроб- ной информации. В режиме ШИМ (1 или 2), TIM1_CNT и TIMl_CCRi постоянно сравнива- ются между собой для определения TIMl_CCRi < TIM1CNT или Т1М1_ CNT< TIMl_CCRi (в зависимости от направления счета). Таймер может быть в состоянии формировать ШИМ-сигнал, выровненный по краю или по цен- тру в зависимости от бит CMS в регистре TIM 1CR1.
Глава 10. Таймеры 91 Режим ШИМ, выровненный по краю. Настройки при счете вверх. Счет вверх активен когда бит DIR в регистре TIM1_CR1 имеет низкий уровень. Пример. Этот пример описывает режим ШИМ 1. Для определенности, ШИМ сигнал на выходе OCiREF, будет иметь высокий уровень до тех пор пока TIM 1_CNT < TIM ICCRi. Таким образом, уровень сигнала первоначально настраивается на низкий уровень. Если величина для сравнения в регистре TIMl_CCRi бу- дет больше чем величина автоперезагрузки (в регистре TIM1_ARR) когда на выводе OCiREF удерживается 1. Если величина сравнения равна 0, на выводе OCiREF удерживается 0. На нижеследующем рисунке приблизительно пока- зано как выровненный по краю сигнал ШИМ на примере TIM 1_ARR = 8. counter ОС/REF CCRx = 4 CC/1F OC/REF CCRx = 8 CC/1F OC/REF ‘1’ CCRx >8 r CC/1F OC/REF ‘0’ CCRx = 0 ~ CC/1F J Рисунок 10.26 Выровненный no краю ШИМ при ARR = 8. Настройки при счете вниз. Режим счета вниз активен, когда бит DIR в регистре TIMl_CRl имеет вы- сокий уровень. Для подробностей, смотрите режим счета вниз. В режиме ШИМ I, опорный сигнал на выходе OCiREF будет низким до тех пор, пока TIM l_CNT> TIMICCRi. Таким образом, он изначально имеет вы- сокий уровень. Если величина сравнения в регистрах TIM I CCRi больше чем величина автоперезагрузки в регистре TIMI ARR, OCiREF будет удерживать- ся в высоком уровне. Нулевое значение ШИМ в этом режиме невозможно. Выровненный по центру режим ШИМ.
92 Глава 10. Таймеры Это режим активен когда биты CMS в регистре TIM1CR1 отличны от нуля (все оставшиеся конфигурации не оказывают влияния на сигналы OCiREF/OCi. Флаг сравнения устанавливается когда счетчик считает вверх, вниз или вверх и вниз в зависимости от состояния бит CMS. Направление счета обнов- ляется аппаратно и в этом режиме доступно только для чтения. На нижеследующем рисунке приблизительно показана генерация ШИМ сигнала в этом режиме, исходя из: — TIM1_ARR = 8, — режим ШИМ — и режим ШИМ 1, — флаг установлен (символ стрелки на рисунке 71) в трех различных случаях: — когда счетчик считает вниз (CMS = 01); — когда счетчик считает вверх (CMS = 01); — когда счетчик считает вверх и вниз (CMS = 01). COUNTER REGISTER ОС/REF CCRx=4 CC/1F CMS=01 CMS=10 CMS=11 ОС/REF CCRx=7 CC/1F CMS=10or11 CCRx-8 ОС/REF ‘1* CMS=01 CC/1F CMS=10 cms=i 1 CCRx>8 ОС/REF ‘Г CMS=01 CC/1F CMS=10 CMS=11 CCRx-0 OC/REF 'O' CMS=01 CMS=10 CMS=11 CC/1F Рисунок 10.27 Выровненный по центру ШИМ при ARR = 8.
Глава 10. Таймеры 93 Режим одиночного импульса. Режим одиночного импульса это редкий случай предыдущих режимов. Он позволяет начать счет в ответ на определенное воздействие и формирует им- пульс с программируемой длительностью после программируемой задержки. Начало счета может управляться через блок тактирования/запуска. Форми- рование выходного импульса может быть сделано в режиме выхода сравнения или режиме ШИМ. Выбор режима одиночного импульса производится уста- новкой бита ОРМ в регистре TIM 1CR1. Этим можно заставить счетчик оста- новиться при следующем UEV. Импульс может быть правильно сформирован только если величина срав- нения отличается от начального значения счетчика. Перед началом (когда таймер ожидает сигнала триггера), в настройка может быть: — в режиме счета вверх: CNT< CCRi < ARR (в частности, 0 < CCRi), — в режиме счета вниз CNT> CCRi. TI2 OC1REF ОС1 А TIMx_ARR z TIMx_CCR1 ZD О О 0 |__]___________________ *DELAY “><-----? tpULSE Рисунок 10.28 Временные диаграммы в режиме одиночного импульса. Пример: На этом примере показано, как формировать положительную полярность на выводе ОС! с шириной tPULSE и после задержки tDELAY как только на входе TI2 появится перепад из логический единицы в ноль. Нижеследующая последовательность использует IC2 как триггер I: — настройка IC2 на вывод TI2 записью CC2S = 01 в регистре TIM 1CCMR2; — па IC2 должен быть определен восходящий фронт, записью СС2Р = 0 в регистр TIM1CCER1;
94 Глава 10. Таймеры — настройка IC2 как запуска для блока тактирования-источник запуска (TRGI) записью TS = 110 в регистр T1M1_SMCR; IC2 использован для начала счета записью в SMS значения 110 в регистр TIM ISMCR (режим триггера). Режим формирования одиночного импульса записью регистра сравнения (захват текущих частоты тактирования и предделителя счетчика) как показа- но ниже: — tDELAY определен величиной, записанной в регистр TIM 1CCR1; — tPULSE определен различием между регистром автоперезагрузки и вели- чиной сранения (TIM1ARR — TIM1CCR1). — создание импульса переходом из 0 в 1 когда было достигнуто равенство и переход из 1 в 0 когда счетчик достиг значения автоперезагрузки , вклю- чение режима ШИМ 2 записью OCiM = 111 в регистре TIM1CCMR1. В качестве альтернативы, включение регистра предзагрузки записью ОС1РЕ - 1 в регистр TIM1_CCMR1 и ARPE - 0 в регистре TIM1_CR1 (опционально). В этом случае, записывается величина сравнения в ре- гистр TIM1-CCR1 и записывается значение автоперезагрузки в регистр TIM1ARR. После этого необходимо сгенерировать событие обновления установкой бита UG и ожидать события внешнего запуска со входа TI2. В этом примере в биты СС1Р записывается 0. В этом примере обведенная линия это указание что биты DIR и CMS в этом примере должны иметь низкий уровень. Как только необходим одиночный импульс, записывается единица в бит ОРМ в регистре TIM1_CR1 для остановки счетчика при следующем UEV (Когда счетчик перейдет через значение автоперезагрузки в 0). Редкий случай: включен быстрый OCi. В режиме одиночного импульса, при определении фронта на выводе ТИ, устанавливается бит CEN, который включает счетчик. Когда достигается ра- венство между значением счетчика и величиной сравнения, сигнал на выходе счетчика будет инвертирован. Для вывода выходного импульса с минимальной задержкой, необходимо установить биты OCiFE в регистрах TIM I CCMRi. OCiREF (и OCi) будут вы- нуждены изменить уровень в ответ на воздействие, без взятия сравнения с со- держимым. Новый уровень OCiREF (и OCi) будет таким же как если было достигнуто событие сравнения. Биты OCiFE работают только если канал сконфигурирован в режим PWM1 или PWM2. Комплементарные выходы и время работы в холостую. TIM1 может выводить два комплементарных сигнала на канал. Это позво- ляет управлять выходами. Также возможно введение задержки между подачей уровней на комплементарные выходы.
Глава 10. Таймеры 95 Это время в основном известно как время запаздывания. Время запаздыва- ния должно быть жестко задано и зависит от характера нагрузки. Режим энкодера Режим энкодера обычно используется в схемах управления приводом. Этот режим работы счетчика может быть включен записью: • SMS = 001 в TIM 1_SMCR регистрируются, если счетчик только по фрон- ту на TI2; • SMS = 010, если счетчик только по фронту на TI 1; • SMS = 011, если счетчик считает по фронтам на и TI 1 и TI2. Выбор фронта срабатывания энкодера и на входах TI 1 и TI2, осуществляет- ся битами СС1Р и битами СС2Р в регистре TIM1CCER1. Если необходимо, может быть подключен входной фильтр. Два входа TI 1 и TI2 используются как интерфейс инкрементального энко- дера. Если счетчик включен (бит CEN в регистре TIM1CR1 установлен), он считает каждый восходящий или падающий (зависит от настроек) фронт им- пульсов на входах TI1FP1 или TI2FP2. В зависимости от последовательности сигналов на входах будут сгенерированы сигналы направления и количества вращения. В зависимости от последовательности, счетчик будет считать либо вверх, либо вниз, и бит DIR в регистре TIM1CR1 будет аппаратно изменять свое состояние в соответствии с направлением. Бит направления обновляется при каждом фронте на выводах ТП или TI2. Интерфейс энкодера может работать как счетчик внешних импульсов с вы- бором направления. Счетчик считает постоянно от 0 до величины автопереза- грузки в регистре TIM1ARR (либо от TIM1ARR до 0 в зависимости от на- правления). Регистр автоперезагрузки должен быть настроен перед началом счета. В этом режиме компаратор, предделитель, триггер продолжают нор- мально работать в этом режиме. Режим энкодера и режим счета внешних им- пульсов 2 не совместимы и не должны быть выбраны вместе. В режиме интерфейса энкодера счетчик автоматически изменяет свое со- стояние в зависимости от скорости и направления инкрементального энкоде- ра. Содержимое счетчика по этой причине всегда отображает положение эн- кодера. Направление счета, будет соответствовать направлению вращения подключенного энкодера. В нижеследующей таблице показаны все возмож- ные комбинации направления счета и сигналов энкодера, при условии, что TI 1 и TI2 не будут переключаться одновременно.
96 Глава 10. Таймеры Таблица 10.3. Таблица работы счетчика в режиме энкодера Активный уровень Уровень противоположного сигнала (TH FP1 для TI2, TI2FP2 для ТИ) Сигнал TI1FP1 Сигнал TI2FP2 Восх. Пад. Восх. Пад. Счет только по Высокий Вниз Вверх - - сигналу наТП Низкий Вверх Вниз - - Счет только по Высокий - - Вверх Вниз сигналу наТ12 Низкий - - Вниз Вверх Счет по сигналам Высокий Вниз Вверх Вверх Вниз и наТИ и наТ12 Низкий Вверх Вниз Вниз Вверх Внешний инкрементальный энкодер может быть подключен непосредствен- Ж. ' JL. ' Ж ' ' но к МК без внешних согласующих элементов. Тем не менее, для нормального преобразования дифференциальных сигналов в цифровые, необходимо ис- пользовать компараторы. Это необходимо для защиты от шумов. Третий выход энкодера, который показывает механическую нулевую позицию, может быть подключен к входу внешнего прерывания или сигналу запуска либо сброса счетчика. На следующем рисунке показан пример операции счета, отображающего генерацию счетных сигналов и сигналов управления направлением. Он также показывает, как дрожание входного сигнала компенсируется где счет идет по обоим фронтам. Эта ситуация возможна если энкодер колеблется рядом с по- зицией переключения. Для нижеследующего примера, используются следую- щие режимы: — CC1S = 01 (в регистре TIM1_CCMR1, т.е. IC1 настроен на ТП); — CC2S = 01 (в регистре TIM 1CCMR2, т.е. IC2 настроен на ТТ2); — СС1Р = 0 (в регистре TIM1CCER1, т.е. IC1 не инвертируется, 1С1=ТП); — СС2Р^ 0 (в регистре TIM 1_CCER2, т.е. IC2 не инвертируется, 1С2=Т12); — SMS = 011 (в регистре TIM1SMCR, т.е. счет идет по обоим входам и обо- им фронтам); — CEN = 1 (в регистре TIM 1_CR1, включает счетчик). На нижеследующем рисунке показано, как ведет себя счетчик при инверти- ровании полярности IC1 (та же самая конфигурация как на предыдущем ри- сунке, за исключением СС1Р =1). Когда таймер сконфигурирован в режим интерфейса энкодера, он обеспе- чивает наличие информации о текущем положении датчика. Информации об изменении, такая как скорость, ускорение и замедление, могут быть получе- ны измерением периода между двумя событиями энкодера с помощью друго- го таймера, используемого в режиме захвата.
Глава 10. Таймеры 97 Рисунок 10.29 Временные диаграммы счетчика в режиме энкодера. Рисунок 1Q.3Q То же что на рисунке 10.29, но в обратной полярности. Регистры таймера 1 Control register I (TIMI CRI) Таблица 10.4. Описание регистра TIM1_CR1 7 б 5 4 3 2 1 0 ARPE CMS1 CMS0 DIR ОРМ URS UDIS CEN чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп
98 Глава 10. Таймеры ARPE: Auto-reload preload enable 0 — регистр TIM 1_ARR не буферизуется через регистр предзагрузки, значе- ние в него вписывается непосредственно. 1 — регистр TIM 1ARR буферизован через регистр предзагрузки; CMS[ 1:0]: Center-aligned mode selection 00 — режим выравнивания по краю. Счетчик считает вверх или вниз в за- висимости от бита DIR (направление) 01 — режим выравнивания по центру 1: Счетчик отсчитывает попеременно вверх и вниз. Флаг прерывания выхода компаратора соотвествующего канала будет устанавливаться только тогда, когда счетчик вычитающий. 10 — режим выравнивания по центру 2: Счетчик отсчитывает попеременно вверх и вниз. Флаг прерывания выхода компаратора соотвествующего канала будет устанавливаться только тогда, когда счетчик складывающий. 11 — режим выравнивания по центру 3: Счетчик отсчитывает попеременно вверх и вниз. Флаг прерывания выхода компаратора соотвествующего канала будет и при достижении ARR, и при достижении нуля. Бит 4 DIR: Direction 0: счетчик является суммирующим; 1:счетчик является вычитающим Примечание: если счетчик работает в режиме выравнивания по центру или энкодера, то бит направления доступен только для чтения. Бит 3 ОРМ: One-pulse mode 0: счетчик не останавивается при последующем UEV 1: при последующем UEV счетчик останавливается со сбросом бита CEN. Бит 2 URS: Update request source 0: когда включен бит UDIS, бит UIF будет устанавливаться и генерировать- ся запрос на прерывание при наступлении следующих событий: — обновление регистров (либо, переполнение или опустошения регистров счетчика); — программно установлен бит UG; — UEV сгенерирован через блок тактирование/запуска. 1: Когда бит UDIS включен, бит U1F устанавливается и генерирует запрос на прерывание только когда регистры обновлены (переполнение или опусто- шение счетчика). Бит 1 UDIS: Update disable. 0: UEV генерируется как только происходит событие переполнения счетчи- ка, программное обновление или аппаратный сброс от блока тактирования/ запуска. Буферизованные регистры содержат их первоначальное значение. 1: UEV не генерируется и теневые регистры содержат их величины (ARR, PSC, CCRi). Счетчик и предделитель перезаписываются если произошла установка бит UG или был принят аппаратный сброс от блока тактирования/запуска.
Глава 10. Таймеры 99 Бит О CEN: Counter enable 0: Счетчик отключен 1: счетчик отключен Примечание: режим внешнего тактирования, режиме стробируемого запу- ска и режим энкодера могут работать только если бит CEN был предваритель- но программно установлен. Однако, режим триггера может установить бит CEN автоматически аппаратно. Control register 2 (TIM1CR2) Таблица 10.5. Описание регистра TIM1_CR2 7 6 5 4 3 2 1 0 He исп. MMS2 MMS1 MMSO He исп. COMS He исп. CCPC чт/зп чт/зп чт/зп чт/зп чт/зп Биты 6, 5, 4 — MMS[2:0]: Master mode selection Эти биты выбирают тип сообщения, которое должно быть послано в АЦП или другие таймеры для синхронизации TRGO. Их возможные значения представлены ниже: Таблица 10.6. Таблица выбора настроек в режиме мастера ООО Сброс — бит UG в регистре TIM 1_EGR используется как выход триггера (TRGO). Если сброс сформирован входом триггера (модуль триггера/сброса настроен в режим сброса), сигнал на выходе TRGO будет задержан по сравнению с фактическим сбросом. 001 Включение — сигнал включения счетчика используется как выход триггера (TRGO). Это может использоваться для старта нескольких таймеров или АЦП для управления окном, которое включает подчиненный таймер или АЦП. Сигнал включения счетчика формируется логическим «ИЛИ» между управляющим битом CEN и входом триггера когда триггер настроен в режим стробируемого запуска. Когда счетчик включается сигналом, управляемым входом триггера, он задержан относительно TRGO, за исключением ситуации, в которой выбран (смотри описание бит MSM в регистре TIM1_SMCR) 010 Обновление — в качестве выхода триггера работает UEV 011 Сравнение импульса (на входе MATCH 1) — на выход триггера подается положительный импульс когда флаг СС1 IF будет установлен (даже если уже установлен), как только произойдут события захвата или сравнения. 100 Сравнение — сигнал ОС1REF используется как выход триггера (TRGO) 101 Сравнение — сигнал 0C2REF используется как выход триггера (TRGO) 110 Сравнение — сигнал 0C3REF используется как выход триггера (TRGO) 111 Сравнение — сигнал 0C4REF используется как выход триггера (TRGO) Бит 3 Не используется Бит 2 COMS: Capture/compare control update selection
100 Глава 10. Таймеры 0: когда управляющие биты захвата/сравнения предварительно загружают- ся (если установлен бит ССРС), они вступят в силу установкой бита COMG 1: когда управляющие биты захвата/сравнения предварительно загружают- ся (если установлен бит ССРС), они вступят в силу установкой бита COMG или при появлении на TRGI восходящего фронта. Примечание: этот бит работает только на каналах с комплеменарными вы- ходами. Бит 1 Не используется Бит 0 ССРС: Capture/compare preloaded control 0: Предзагрузка бит CCiE, CCiNE, CCiP и CCiNP отключена 1: Биты CCiE, CCiNE, CCiP и CCiNP будут загружены, будут предзагруже- ны, и новые значения вступят в силу когда бит COMG в регистре TIM1_EGR будет установлен. Примечание: эти биты работают только на каналах с комплементарными выходами. Slave mode control register (T1M1SMCR) Таблица 10.7. Описание регистра TIM 1 _SMCR 7 6 5 4 3 2 1 0 MSM TS2 TS1 TSO Не исп. SMS2 SMS1 SMS0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7 MSM: Master/slave mode 0: не работает. 1: Отклик на воздействие на вход триггера, будет выдан с задержкой, свя- занной с синхронизацей между TIM 1 и другим таймером (через входы/выхо- ды триггеров). Биты 6:4TS[2:0]: Trigger selection Эти биты выбирают вход триггера (TRGI) для синхронизации счетчика. 000: встроенный триггер ITR0, соединенный с TRGO TIM6; 001: зарезервировано; 010: встроенный триггер ITR2, подключенный кТ1М5 TRGO; 011: зарезервировано; 100: детектор фронта TI1 (TI1F ED); 101: вход, подключенный к фильтру 1 (TI1FP1); 110: вход, подключенный к фильтру 2 (TI2FP2); 111: внешний вход триггера (ETRF). Примечание: эти биты не должны изменяться когда триггер не использует- ся (SMS = 000). Бит 3 Не используется. Биты 2:0 SMS[2:0J: Clock/trigger/slave mode selection
Глава 10. Таймеры 101 ООО: модуль тактирования триггера отключен. Если установлен бит CEN, предделитель тактируется постоянно внутренними источниками тактового сигнала. 001: Режим энкодера 1 — счетчик считает восходящие или падающие фрон- ты на входе TI2FP2 относительно уровня сигнала на входе TI1FP1; 010: Encoder mode 2 — Режим энкодера 2 — счетчик считает восходящие или падающие фронты на входе TI1FP1 относительно уровня сигнала на входе TI2FP2; Oil: Encoder mode 3 — Режим энкодера 3 — счетчик считает вверх или виз по обоим по обоим фронтам обоих сигналов относительно уровня сигнала на другом входе; 100: Reset mode — восходящий фронт на выбранном входе запуска (TRGI) сбрасывает счетчик и генерирует обновление регистров; 101: режим стробируемого запуска — счетчик включается когда уровень сигнала на входе схемы запуска (триггера) низкий. Счетчик пробудет в оста- новленном состоянии до тех пор, пока уровень сигнала не сменится на высо- кий; 110: стандартный режим запуска — счетчик запускается при восходящем фронте на входе схемы запуска (триггера). В этом режиме запуска контроли- руется только запуск счетчика; 111: External clock mode 1 — режим внешнего тактирования 1 — счетчик так- тируется по каждому восходящему фронту на выбранном входе запуска (TRGI). External trigger register (TIM1ETR) Таблица 10.8. Описание регистра TIM1_ETR 7 6 5 4 3 2 1 0 ЕТР ЕСЕ ETPS1 ETPSO ETF3 ETF2 ETF1 ETFO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7 ETP: External trigger polarity Этот бит выбирает, который из двух — ETR или инвертированный ETR бу- дет использован для работы триггера. 0: ETR не инвертирован, активным является высокий уровень или восходя- щий фронт; 1: ETR инвертирован, активным является низкий уровень или падающий фронт. Бит 6 ЕСЕ: External clock enable Этот бит разрешает режим внешнего тактирования 2. 0: режим внешнего тактирования 2 отключен;
102 Глава 10. Таймеры 1: режим внешнего тактирования 2 включен. Счетчик тактируется актив- ным фронтом сигнала ETRF. Примечание: Установка бита ЕСЕ имеет такой же эффект как выбор режим внешнего тактирования 1 с подключением TRG1 к ETRF (установка SMS =111 и TS = 111 в регистре TIM 1_SMCR). Это дает возможности использовать режим внешнего тактирования 2 одно- временно со следующими режимами: — стандартный режим запуска, — режим сброса, — режим стробируемого запуска. Тем не менее, в этих случаях, TRGI не должен быть подключен к ETRF (6htwTS в регистре TIM 1_SMCR не должны иметь значение 111. Если режим внешнего тактирования 1 и режим внешнего тактирования 2 включены одновременно, то входом внешнего тактирования является ETRF. Биты 5:4 ETPS: External trigger prescaler Частота ETRP должна быть больше чем 1/4 частоты Fmaster. Предделитель может быть включен для понижения частоты ETRP. Это может использоватся для работы с быстрыми входными сигналами. 00: предделитель отключен; 01: частота ETRP делится на 2; 10: частота ETRP делится на 4; 11: частота ETRP делится на 8. Биты 3:0 ETF: External trigger filter. Эти биты определяют частоты выборки сигнала ETRP и длительность цифрового фильтра. Цифровой фильтр является счетчиком событий, кото- рому необходимо N событий для достоверного определения перехода на вы- ходе. 0000: фильтр отключен, выборка происходит с частотой Fmaster 0001: частота выборки = Fmaster, N = 2; 0010: частота выборки = Fmaster. N = 4; 0011: частота выборки = Fmaster, N = 8; 0100: частота выборки = Fmaster /2, N = 6; 0101: частота выборки = Fmaster /2, N = 8; 0110: частота выборки = Fmaster/4, N = 6; 0111: частота выборки = Fmaster /4, N = 8; 1000: частота выборки = Fmaster /8, N = 6; 1001: частота выборки = Fmaster /8, N = 8; 1010: частота выборки = Fmaster/16, N = 5; 1011: частота выборки = Fmaster/16, N = 6; 1100: частота выборки = Fmaster/16, N = 8; 1101: частота выборки = Fmaster /32, N = 5;
Глава 10. Таймеры 103 1110: частота выборки = Fmaster /32, N = 6; 1111: частота выборки = Fmaster /32, N = 8. Interrupt enable register (TIM1IER) Таблица 10.9. Описание регистра TIM1JER 7 б 5 4 3 2 1 0 BIE TIE COMIE CC4IE CC3IE CC2IE ССПЕ UIE чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7 BIE: разрешение прерывание останова 0: отключено. 1: включено. Бит 6 TIE: прерывание триггера 0: отключено. 1: включено. Бит 5 COM IE: прерывание коммутации 0: отключено. 1: включено. Бит 4 CC4IE: захват/сравнение 4 0: отключено. 1: включено. Бит 3 CC3IE: CC4IE: захват/сравнение 3 0: отключено. 1: включено. Бит 2 CC2IE: CC4IE: захват/сравнение 2 0: отключено. 1: включено. Бит 1 ССПЕ: CC4IE: захват/сравнение 1 0: отключено 1: включено Бит 0 UIE: прерывание обновления 0: отключено 1: включено Status register 1 (TIM1SR1) Таблица 10.10. Описание регистра TIM1_SR1 7 б 5 4 3 2 1 О BIF TIF COMIF CC4IF CC3IF CC2IF CC1IF UIF чт/зпО чт/зпО чт/зпО чт/зпО чт/зпО чт/зпО чт/зпО чт/зпО
104 Глава 10. Таймеры Бит 7 BIF: Break interrupt flag Этот флаг устанавливается аппаратно как только на входе останова появит- ся активность. Он может быть очищен программно если на входе стопа нет активности. 0: события останова не происходило; 1: на выходе останова был определен активный уровень. Бит б TIF: Trigger interrupt flag Этот флаг устанавливается аппаратно при событии триггера (определен ак- тивный фронт в сигнале TRGI, или оба фронта если включен режим строби- руемого запуска). Он очищется программно. 0: событий триггера не происходило; 1: ожидание обработки прерывания триггера; Бит 5 COM IF: Commutation interrupt flag. Этот флаг устанавливается аппаратно при событии СОМ (когда контроль- ные биты захвата/сравнения CCiE, CCiNE, OCiM были обновлены). Этот бит очищается программно. 0: события СОМ не происходило; 1: ожидание события СОМ; Бит 4 CC4IF: флаг прерывания захвата/сравнения 4; Бит 3 CC3IF: флаг прерывания захвата/сравнения 3; Бит 2 CC2IF: флаг прерывания захвата/сравнения 2; Бит 1 СС1 IF: флаг прерывания захвата/сравнения 1. Если капал СС1 сконфигурирован как выход: Этот флаг устанавливается аппаратно когда счетчик достиг значения срав- нения за некоторым исключением в режиме выравнивания по центру (под- робнее в описании бит CMS в регистре TIM 1CR1). Этот бит очищается про- граммно. 0: значение счетчика не достигло значения сравнения; 1: содержимое счетного регистра T1M1CNT достигло значения регистра TIM1CCR1. Примечание: в режиме выравнивания по центру счетчик считает то вверх (от 0 до ARR), то вниз (от ARR до 1). Эти две величины не обозначаются для всех величин бит CMS. Однако, бит СС11F установлен когда счетчик достига- ет значения бит ARR, когда величина сравнения больше чем ARR. Если канал СС1 настроен как вход: Этот бит устанавливается аппаратно при захвате. Он очищается программ- но чтением регистра TIM 1_CCR1L. 0: входного захвата не происходило; 1: величина счетчика была захвачена в регистр TIM 1CCR1 (был определен фронт выбранной полярности на 1С1). Бит 0 UIF: Update interrupt flag
Глава 10. Таймеры 105 Этот бит устанавливается аппартно при UEV. Может быть очищен про- граммно. 0: события обновления не происходило 1: ожидание обработки прерывания по обновлению. Этот бит устанавлива- ется аппаратно: — при переполнении или опустошении если UDIS = 0 в регистре TIМ1CR1; — когда CNT перенастроен программно с использованием бита UG в реги- стре TIM1EGR , если в регистре TIM1_CR1 биты URS = 0 и UDIS = 0. — когда CNT перенастроен по событию триггера (см. описание регистра TIM1SMCR), если в регистре TIM1_CR1 биты URS = 0 и UDIS = 0. Status register 2 (TIM 1SR2) Таблица 10.11. Описание регистра TIM1_SR2 7 6 5 4 3 2 1 0 Не исп. CC40F CC30F CC20F CC10F Не исп. чт/зпО чт/зпО чт/зпО чт/зпО Биты 7:5 зарезервированы, должны быть очищены Бит 4 CC4OF: флаг превышения захвата канала захвата/сравнения 4; Бит 3 CC3OF: флаг превышения захвата канала захвата/сравнения 3; Бит 2 CC2OF: флаг превышения захвата канала захвата/сравнения 2; Бит 1 CC1OF: флаг превышения захвата канала захвата/сравнения 1; Этот флаг устанавливается аппаратно когда соответствующий канал на- строен в режим захвата входа. Очищается программно записью 0. 0: события превышения захвата не зарегистрировано; 1: величина счетчика была захвачена в регистр TIM1_CCR1 пока флаг СС1 IF уже был установлен; Бит 0 зарезервирован, не используется. Регистр Event generation register (TIM1_EGR) Таблица 10.12. Описание pen/iCTpaTIM1_EGR 7 6 5 4 3 2 1 0 BG TG COMG CC4G CC3G CC2G CC1G UG зп зп зп зп зп зп зп зп Бит 7 BG: Break generation Этот бит устанавливается программно при генерации события останова. Очищается аппаратно 0: события останова не просходило
106 Глава 10. Таймеры 1: было сгенерировано событие останова. Бит МОЕ очищен и бит BIF уста- навливается. При установленном бите В IE будет сформирован запрос на пре- рывание. Бит 6 TG: Trigger generation Этот бит устанавливается программно и генерирует событие. Он автомати- чески устанавливается аппаратно. 0: не оказывает действия 1: устанавливается флаг TIF в регистре TIM1_SR1 а также генерируется за- прос на прерывание если оно разрешено битом TIE. Capture/compare mode register 1 (TIM1CCMR1) Этот регистр определяет режимы работы канала захвата/сравнения 1. Его биты в режиме входа (режим захвата) и в режиме выхода (режим сравнения) имеют различные назначения (за исключением бит CC1S[2:O]). Соответствую- щие обозначения даны в названии бита и означают работу в режиме выхода, например ОС... (ОС1СЕ, ОС1РЕ,...) , или в режиме входа — IC..., например IC1PSC1 и т.п. Таблица 10.13. Регистр TIM1_CCMR1 при работе в режиме выхода 7 6 5 4 3 2 1 0 ОС1СЕ ОС1М2 ОС1М1 ОС1МО 0С1РЕ 0C1FE CC1S1 CC1S0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Бит7ОС1СЕ: Output compare 1 clear enable Этот бит используется для запрета подачи сигнала OCiREF на выход канала СС 1 при появлении логической единицы на входе ETRF. Эта функция может использоваться в режимах компаратора. Значение этого бита не оказывает действия в режиме ускоренного ШИМ. 0: значение сигнала на входе ETRF не оказывает действия на сигнал OC1REF; 1: сигнал OC1REF будет удерживаться в низком уровне, как только на сиг- нал ETRF будет подана логическая «1». Биты 6:4 OCIM: Output compare 1 mode Эти биты определяют состояние сигнала ОС IREF, из которого формирует- ся сигнал ОС1. Активным уровнем OC1REF является высокий, активный уровень ОС1 определяется битом СС1Р. ООО: Отключено — достижение равенства между регистром сравнения и счетчиком не оказывает действия на выход канал сравнения. 001: Установление сигнала ОС 1REF в активный уровень при достижении ра- венства значений счетчика и содержимого регистров сравнения (TIM1CCR1); 010: установить неактивный уровень на сигнале OC1REF; 011: изменить состояние сигнала OC1REF на противоположное; 100: принудительно установить на OC1REF неактивный уровень; 101: принудительно установить на OC1REF активный уровень;
Глава 10. Таймеры 107 ПО: Режим ШИМ 1 — в режиме счета вверх, канал 1 активен до тех пор, пока TIM1_CNT < TIM1_CCR1, иначе, канал переходит в неактивное состо- яние. В режиме счета вниз, канал неактивен до тех пор, пока TIM1CNT > TIM 1CCR1, иначе — канал активен. 111: Режим Ш ИМ 2 — в режиме счета вверх, канал 1 неактивен до тех пор, пока TIM1CNT < TIM1CCR1, иначе, канал активен. В режиме счета вниз, канал 1 активен до icxnop, пока TIM 1CNT > TIM1_CCR1, иначе — канал неактивен. Примечание: эти биты не доступны для записи до тех пор, пока уровень блокировки (биты LOCK в регистре TIM1_BKR ) равен трем и биты CC1S = О.В режиме ШИМ 1 и ШИМ 2. На каналах имеющих комплементарные выходы, эти биты имеют биты предзагрузки, и если биты ССРС установлены, биты ОСМ будут перезагруже- ны их новыми величинами. Бит 30С1 РЕ: Output compare 1 preload enable 0: предзагрузка регистра TIM1_CCR1 отключена. Значение регистра TIM 1_ CCR1 может быть изменено в любое время, новое значение вступит в силу немедленно. 1: Предзагрузка регистра TIM1_CCR1 включена. Чтение/запись происхо- дит через регистр предзагрузки. Значение регистра предзагрузки будет пере- даваться в теневой регистр при каждом UEV. Примечание: эти биты не могут быть изменены до тех пор, пока уровень блокировки равен трем (биты LOCK в регистре TIM1_BKR) и CC1S = 00 (ка- нал настроен на выход). Бит 2OC1FE: Output compare 1 fast enable Этот бит используется для принудительного воздействия на выход схемы сравнения. 0: СС1 ведет себя нормально, в зависимости от счетчика и значения CCR1, 1 установка бита приводит к эффекту достижения сравнения, независимо от значения счетчика и CCR1. Биты 1:0 СС1 S[ 1:0]: Capture/compare 1 selection Эти битовые поля определяют направление канала и используемый вход. 00: канал СС1 настроен на выход; 01: канал СС1 настроен как вход с выборкой сигнала (IC1) с входа TI1FP1; 10: канал СС1 настроен как вход с выборкой сигнала (IC1) с входа TI2FP1; 11: канал СС1 настроен как вход с выборкой сигнала (IC1) с входа TRC (с этого входа поступают сигналы с блока тактирования/запуска). Этот режим работает только когда сигнал от модуля тактирования /запуска выбран битами TS в регистре TIM1SMCR. Примечание: биты CC1S доступны для записи только когда канал СС1 от- ключен (СС1Е = 0 in TIM 1CCER1). Описание регистра TIM 1_CCMR2 в режиме входа:
108 Глава 10. Таймеры Таблица 10.14. Описание регистра TIM 1_CCMR1 в режиме входа 7 б 5 4 3 2 1 0 IC1F3 IC1F2 IC1F1 IC1F0 IC1PSC1 IC1PSC0 CC1S1 CC1SO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Биты 7:4IC 1 F[3:0]: Input capture 1 filter Эти биты определяют частоту выборки сигнала со входа TI 1 и длительность цифрового фильтра, работающего на этом входе. Цифровой фильтр представ- ляет собой вычитающий счетчик, в него записано число N. При обнаружении на входе фильтра запрограммированного перепада логических уровней, запу- скается счетчик, который считает количество тактов частоты Fmaster (или Fmaster/2 — в зависимости от настроек бит IC1F[3:O]. По окончании «дли- тельности фильтра», происходит выборка сигнала и из сигнала ТП формиру- ется сигнал TI 1F. 0000: фильтр отключен, частота вычитания из N равна Fmaster; 0001: N = 2, частота вычитания из N равна Fmaster; 0010: N = 4, частота вычитания из N равна Fmaster; 0011: N = 8, частота вычитания из N равна Fmaster; 0100: N = 6, частота вычитания из N равна Fmaster/2; 0101: N = 8, частота вычитания из N равна Fmaster/2; 0110: N = 6, частота вычитания из N равна Fmaster/4; 0111: N = 8, частота вычитания из N равна Fmaster/4; 1000: N = 6, частота вычитания из N равна Fmaster/8; 1001: N = 8, частота вычитания из N равна Fmaster/8; 1010: N = 5, частота вычитания из N равна Fmaster/16; 1011: N = 6, частота вычитания из N равна Fmaster/16; 1100: N = 8, частота вычитания из N равна Fmaster/16; 1101: N = 5, частота вычитания из N равна Fmaster/32 1110: N = 6, частота вычитания из N равна Fmaster/32; 1111: N = 8, частота вычитания из N равна Fmaster/32. Биты 3:2 ICI PSC[ 1:0]: Input capture 1 prescaler Этими битами настраивается делитель сигнала 1С1 для формирования сиг- нала 1CPS. Делитель будет сброшен как только бит СС1Е в регистре Т1М1_ CCER будет сброшен. 00: предделитель отключен, F (ICPS) = F (ТС 1); 01: предделитель равен двум, F(1CPS) = F(IC 1 )/2; 10: предделитель равен четырем, F(TCPS) = F(ICl)/4; 11: предделитель равен восьми, F(ICPS) = F(ICl)/8; Биты 1:0 СС1 S[ 1:0J: Capture/compare 1 selection Эти битовые поля определяют направление канала и используемый вход. Настройки этих бит аналогичны и в режиме входа, и в режиме выхода.
Глава 10. Таймеры 109 Настройки регистров ТТМ 1CCMR2 и TIM 1CCMR3 аналогичны регистру TIM1CCMR1, но применительно к соответствующему каналу захвата/срав- нения. Регистр разрешения захвата/сравнения канала 1 T1M1_CCER1. Таблица 10.15. Описание регистра TIM 1_CCER1 7 6 5 4 3 2 1 0 CC2NP CC2NE СС2Р СС2Е CC1NP CC1NE СС1Р СС1Е чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Бит 0: CCIE Capture/compare 1 output enable. Если канал настроен как выход: 0: Канал сравнения отключен, выход ОС1 неактивен. Уровень ОС1 опреде- ляется состоянием бит МОЕ, OSSI, OSSR, OIS1, OIS1N и CC1NE; 1: Канал сравнения включен — сигнал с выхода ОС1 подается на соотве- ствующий вывод микроконтроллера в зависимости от МОЕ, OSSI, OSSR, OIS1,OIS1NhCC1NE. Если канал настроен на вход: Этот бит определяет может ли быть проведен или нет захват значения счет- чика в регистр захвата/сравнения (TIM1_CCR1). 0: захват запрещен; 1: захват разрешен. Примечание: если канал имеет комплементарные выходы, этот бит имеет предзагрузку. Если бит ССРС установлен, бит СС1Е получает новое значение из регистра предзагрузки только когда генерируется событие СОМ. Бит 1: CCIP: Capture/compare I output polarity. Если канал СС1 настроен на выход: 0: активным уровнем ОС1 является высокий; 1: активным уровнем ОС1 является низкий. Если канал СС1 настроен как вход схемы тактирования/запуска: 0: тактирование/запуск происходит по восходящему фронту на входе TI1F; 1: тактирование/запуск происходит по падающему фронту на входе TI 1F. Если канал СС1 настроен как вход для захвата: 0: захват происходит по восходящему фронту на входе TI 1F или TI2F; 1: захват происходит по падающему фронту на входе TI1F или TI2F. Примечание: 1. Этот бит недоступен для записи до тех пор пока уровень блокировки ра- вен 2 или 3 (биты LOCK в регистре TIM1BKR). 2. На каналах, имеющих комплементарны выходы, этот бит имеют предза- грузку, Если бит ССРС установлен, бит СС1Е получает новое значение из ре- гистра предзагрузки только когда генерируется событие СОМ.
110 Глава 10. Таймеры Бит 2: CC1NE: Capture/compare 1 complementary output enable Этот бит определяет те же настройки, что и бит СС1Е, но применительно к комплементарному выходу канала СС1. Bht3CC1NP: Capture/compare 1 complementary output polarity Этот бит определяет те же настройки, что и бит СС1Р, но применительно к комплементарному выходу канала СС1. Биты 4 (СС2Е), 5 (СС2Р), 6 (CC2NE), 7 (CC2NP) определяют те же на- стройки, что и биты СС1Е, СС1Р, CC1NE, CC1NP, но применительно к кана- лу захвата/сравнения СС2. Регистр TIM1_CCER2 содержит аналогичные настройки в части канала ССЗ и СС4 (канал СС4 не имеет комплементарного выхода). Регистры TIM1CNTRH и TIM1CNTRL — регистры счетчика. Эти реги- стры доступны в любой момент для чтения и для записи. Регистры TIM1PSCRH и TIM1PSCRL содержат значение предделителя. Предделитель обеспечивает деление основной тактовой часототы в PSCR раз. Величина содержащаяся в этих регистрах загружается из регистра предзагру- ки в теневой регистр при каждом UEV. Регистры TIM1ARRH и TIM1ARRL — регистры автоперезагрузки. Со- держат величину, до которой досчитывает счетчик до его обнуления. Эти ре- гистры имеют предзагрузку. Регистр TIM 1RCR — счетчик повторений. Регистры TIM 1_CCR1 Н и TIM 1CCR1L — регистры захвата/сравнения. Если канал настроен на выход схемы сравнения, то его значение является ве- личиной, с которой сравнивается значение счетчика. Если канал настроен как вход, то содержимое этого регистра — результат последней операции захвата. Регистр Break register (TIM1BKR). Таблица 10.16. Описание регистра TIM1_BKR 7 6 5 4 3 2 1 0 МОЕ АОЕ ВКР ВКЕ OSSR OSSI ЮСК[1:0] чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7 МОЕ: Main output enable Этот бит будет асинхронно аппаратно сброшен как только активируется вход останова. Он устанавливается программно или автоматически в зависи- мости от состояния бита АОЕ. Он активируется только на каналах которые будут сконфигурированы на выход. 0: выходы ОС и OCN отключены или находятся в неопределенном состоянии; 1: выходы ОС и OCN включены если их соотвествующие биты разреше- ния установлены (CCiE в регистре TIM I CCERi). См. Описание включения OC/OCN.
Глава 10. Таймеры 111 АОЕ: Automatic output enable 0: МОЕ может быть установлен только программно; 1: МОЕ может быть установлен программно или автоматически при следу- ющем UEV (если вход останова не был активирован); Примечание: этот бит не может быть изменен пока установлен уровень бло- кировки 1 (биты блокировки в этом же регистре). ВКР: Break polarity 0: вход останова BKIN активируется при низком уровне; 1: вход останова BKIN активируется при высоком уровне; Примечание: этот бит не может быть изменен пока установлен уровень бло- кировки 1 (биты блокировки в этом же регистре). Бит 4 ВКЕ: Break enable 0: вход останова отключен; 1: вход останова включен; Примечание: этот бит не может быть изменен пока установлен уровень бло- кировки 1 (биты блокировки в этом же регистре). Бит 3 OSSR: Off state selection for Run mode; Этот бит может использоваться когда МОЕ = 1 на каналах с комплементар- ными выходами которые сконфигурированы как выходы. (См. описание раз- решения работы бит OC/OCN). 0: когда активен, выходы OC/OCN отключены (сигнал разрешения выхо- дов OC/OCN = 0); 1: когда активен, выходы OC/OCN разрешены с их активным уровнем как только CCiE = 1 или CCiNE = 1, после которого сигнал разрешения выходов OC/OCN = 1; Примечание: этот бит не может быть изменен пока установлен уровень бло- кировки 2 (биты блокировки в этом же регистре). OSSI: Off state selection for idle mode; Этот бит может быть использован когда МОЕ = 0 на каналах сконфигури- рованных на выход. Смотри для подробностей описание включения ОС. 0: когда неактивен, выход OCi отключен (сигнал включения OCi = 0); 1: Когда неактивен, выход OCi принудительно приведен в состояние ожи- дания, которое определяется состоянием бита CCiE; Примечание: этот бит не может быть изменен пока установлен уровень бло- кировки 2 (биты блокировки в этом же регистре). Биты 1:0 LOCK[1:0]: настройки блокировки; Эти биты обеспечивают защиту от записи, которая помогает избежать про- граммных ошибок. 00: Уровень блокировки 0 — ее нет, биты не защищены от записи. 01: Уровень блокировки 1 — биты OlSi в регистре TIM1OISR и ВКЕ/ВКР/ АОЕ в регистре TIM 1BKR не могут быть записаны.
112 Глава 10. Таймеры 10: Уровень блокировки 2 — уровень блокировки 1, а также биты полярно- сти сигнала СС (бит CCiP в регистре TIM I CCERi до тех пор, пока связанные канал настроены на выход установкой бит CCiS) также как биты OSSR и OSSI не могут быть записаны в этом режиме. 11: уровень блокировки 3 — уровень блокировки 2, а так же биты управле- ния каналом СС (биты OCiM и OCiPE в регистре TIMICCMRi, до тех пор, пока соответствующие каналы настроены на выход через биты CCiS) не могут быть записаны в этом режиме. Примечание: биты блокировки могут быть могут быть настроены только один раз. Для изменения состояния этих бит микроконтроллер должен быть перезагружен. Регистр Deadtime register (TIM1_DTR). Таблица 10.17. Описание регистра TIM 1_DTR. 7 6 5 4 3 2 1 0 DTG7 DTG6 DTG5 DTG4 DTG3 DTG2 DTG1 DTG0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп DTG[7:0]: Deadtime generator set-up Эти битовые поля определяют продолжительность запаздывания (времен- ной задержки) между подачей сигналов на комплементарные выходы. За- держка соответстует этой продолжительности. На это время тактирования счетчика прекращается. При DTG[7:5] равном Охх, мертвое время будет составлять DT= DTG[7:0] х tCKPSC; При DTG[7:5] равном 10х, мертвое время будет составлять DT= (64 + DTG[5:0]) х 2 х tCK PSC; При DTG[7:5] = 110, мертвое время будет составлять DT = (32 + DTG[4:0]) х 8 х tCK_PSC; При DTG[7:5] = 111 мертвое время будет составлять DT = (32 + DTG[4:0]) х 16xtCK_PSC; Примечание: этот бит не может быть изменен до тех пор, пока уровень бло- кировки (биты LOCK в регистре TIM1_BKR) равны 1, 2 или 3. Output idle state register (TIM1OISR) Таблица 10.18. Описание регистра TIM1_OISR. 7 6 5 4 3 2 1 0 Не исп. OIS4 0IS3N OIS3 0IS2N OIS2 0IS1N OIS1 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7 Не используется.
Глава 10. Таймеры 113 Бит 6 OIS4: состояние ожидания выхода канала 4 (выход ОС4), см. описа- ние бита OIS1; Бит 5 OIS3N: состояние ожидания выхода канала 3 (выход OC3N), см. опи- сание бита OIS1N; Бит 4 OIS3: состояние ожидания выхода канала 3 (выход ОСЗ), см. описа- ние бита OIS1; Бит 3 OIS2N: состояние ожидания выхода канала 2 (выход OC2N), см. опи- сание бита OIS1N; Бит 2 OIS2: состояние ожидания выхода канала 2 (выход ОС2), см. описа- ние бита OIS1; Бит 1 OIS1N: состояние ожидание выхода канала 1 (выход OC1N). 0: OC1N = 0 после мертвого времени при МОЕ = 0; 1: ОС 1N = 1 после мертвого времени при МОЕ = 0. Примечание: этот бит не может быть изменен до тех пор, пока уровень бло- кировки (биты LOCK в регистре TIM1_BKR) равны 1, 2 или 3. Бит 0 OIS1: состояние ожидание выхода канала 1 (выход ОС1). 0: ОС1=0 после мертвого времени если МОЕ=0; 1: ОС1=1 после мертвого времени если МОЕ=0. Примечание: этот бит не может быть изменен до тех пор, пока уровень бло- кировки (биты LOCK в регистре TIM1_BKR) равны 1, 2 или 3.
Глава 11 Таймер 2 Этот раздел содержит описание таймеров TIM2 и TIM3, с тем примечанием что TIM2 содержит три канала, a TIM3 два канала захвата/сравнения. TIM5 также описан ниже. Он отличается тем, что содержит два дополнительных ре- гистра и поддерживает синхронизацию таймеров и связь между ними. Каждый таймер состоит из 16-ти разрядного складывающего перезапускае- мого счетчика, тактируемого через управляемый предделитель. Он может быть использован для различных применений, в том числе: — формирование временных интервалов; — измерение ширины входных импульсов (захват входа); — генерация сигналов (ШИМ, выход компаратора, режим одиночного им- пульса); — вызов прерывания по различным событиям (захват, сравнение, перепол- нение); — синхронизация с другими таймерами или внешних сигналов (внешний импульс, сброс, триггер и включение) (в устройствах с Т1М5). Основные возможности (TIM2/TIM3): — 16-ти разрядный автоматически перезагружаемый счетчик; — 4-разрядный программируемый предделитель (может быть переключен в процессе работы таймера) в 2, 4,..., 32768 (кратно степени числа 2). — 3 независимых канала: — входной захват; — выход сравнения; — генерация ШИМ (режим выравнивания по краю); — генерация запроса на прерывание при наступлении следующих событий: — обновление: переполнение таймера, перенастройка счетчика (программ- ная); — входной захват; — выход сравнения.
Глава 11. Таймер 2 115 Рисунок 11.1. Структурная схема таймеров TIM2, TIM3, TIM5. Примечание: 1 - Rcs — регистр имеет теневой регистр, т.е. значение этого регистра пе- редается в теневой регистр при следующем событии обновления; 2 . 'Ч* — событие обновления; 5 ./^ —вызов прерывания. Блок формирования временных интервалов. CK.PSC Prescaler TIMx_PSCR UEV^ CK_CNT TIMx_ARRH, ARRL Auto-Reload Register 16-bit Counter TIMx_CNTRH, CNTRL UIF UEV-m>. Рисунок 11.2. Функциональная схема модуля временных интервалов Для более подробной информации, см. аналогичный узел таймера 1. Предделитель основан на 16-ти разрядном счетчике, управляемом 4 битами (в регистре TIMx_PSCR). Он может быть изменен на лету так как этот управ- ляющий регистр буферизован. Он может «Разделить» таковую частоту тайме- ра на любое число от 2 до 32768 (кратно степени числа 2). Тактовая частота может быть рассчитана по формуле: ТCK_CNT Fck psc 2<flSCR[3...0J)
116 Глава 11. Таймер 2 Величина предделителя может быть загружена через регистр предзагрузки. Теневой регистр, который содержит текущее значение для использования бу- дет загружен как только будет записан (установлен) бит LS. Новое значение предделителя будет взято из содержимого регистра предзагрузки в последую- щий период (после следующего события обновления счетчика). Операция чтения регистра TIMx_PSCR обеспечит доступ к регистрам пред- загрузки, но намеренно читать его без необходимости не нужно. Контроллер тактирования/запуска доступен только в TIM5. Рисунок 11.3. Структурная схема модуля захвата входа. Рисунок 11.4. Функциональная схема одного входа канала захвата/сравнения.
Глава 11. Таймер 2 117 from capture/compare channels Рисунок 11.5. Схема формирования выходных сигналов счетчика. Рисунок 11.6. Функциональная схема выхода канала захвата/сравнения. Прерывания Таймер имеет 4 источника прерывания: — прерывания № 1, 2, 3 по захвату либо сравнению; — прерывание по обновлению. Для использования функции прерывания, установкой бит CC3IE и / или CC2IE и / или СО I E в регистре TIMxIER, осуществляются настройки пре- рывания для каждого канала. Событие вызова прерывания может быть также реализовано программно установкой соответствующих бит в регистре TIMx EGR.
118 Глава 11. Таймер 2 Регистры таймера 2 Регистр TIM2CR1. Таблица 11.1. Описание регистра TIM2_CR1. 7 б 5 4 3 2 1 0 ARPE Не исп. ОРМ URS UDIS CEN чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7 ARPE: Auto-reload preload enable 0: значение TIMxARR не будет сохранено в теневом регистре. Оно будет записано сразу. 1: значение TIMx ARR будет записано в теневой регистр через регистр предзагрузки. Биты 6:4 зарезервированы, не используются. Бит 3 ОРМ: One-pulse mode Режим одиночного импульса. 0: счетчик не остановился при событии обновления; 1: Счетчик прекращает счет на следующем событии обновления (сбрасыва- ется бит CEN). Бит 2 URS: Update request source Источник вызова прерывания 0: когда битом UDIS разрешены обновления, и установлен флаг UIF, вы- зывается запрос на прерывание по событию обновления. Флаг UIF устанав- ливается при следующих событиях: — обновление регистров (переполнение, опустошение); — бит UG был установлен программно; — сгенерировано событие обновления от модуля тактирования/триггера 1: Если установлен бит UDIS, то при уставновке бита UIF формируется за- прос на прерывание только когда регистры были обновлены (счетчик был переполнен либо опустошен). Бит 1 UDIS: Update disable 0: UEV будет сгенерирован как только счетчик будет переполнен или будет программно сгенерировано событие обновления, либо при аппаратном сбро- се, сформированным модулем тактирования/запуска. Буферные регистры за- гружены их значениями предзагрузки. 1: UEV не генерируется, теневые регистры сохраняют свои значения (ARR, PSC, CCRi). При установки бита UG, будут перенастроены счетчик и пред- делитель таймера 2. Бит 0 CEN: Counter enable 0: счетчик отключен;
Глава 11. Таймер 2 119 1: счетчик включен. Регистр TIM2IER. Таблица 11.2. Описание регистра TIM2_IER. 7 б 5 4 3 2 1 0 Не исп. CC3IE CC2IE CC1IE UIE чт/зп чт/зп чт/зп чт/зп Биты 7, 6, 5, 4 Зарезервированы, не используются. Бит 3 CC3IE: Capture/compare 3 interrupt enable Прерывания по захвату/сравнению канала 3 (CCR3). 0: прерывание ССЗ отключено; 1: прерывание ССЗ включено; Бит 2 CC2IE: Capture/compare 2 interrupt enable Прерывания по захвату/сравнению канала 2 (CCR2). 0: прерывание СС2 отключено; 1: прерывание СС2 включено; Бит 3 ССПЕ: Capture/compare 1 interrupt enable Прерывания по захвату/сравнению канала 1 (CCR3). 0: прерывание СС1 отключено; 1: прерывание СС1 включено; Бит 0 UTE: Update interrupt enable Прерывание по событию обновления. 0: прерывание по обновлению отключено; 1: прерывание по обновлению включено. Регистр TIM2_SR1. Таблица 11.3. Описание регистра TIM2_SR1. 7 б 5 4 3 2 1 0 Не исп. CC13F CC2IF CC1IF UIF чт/зпО чт/зпО чт/зпО чт/зпО Биты 7, 6, 5, 4 зарезервированы, не используются. Бит 3 CC3IF: флаг прерывания 3 канала захвата / сравнения (см. описание CC1F) Бит 2 CC2IF: флаг прерывания 2 канала захвата / сравнения (см. описание CC1F) Бит 1 СС1 IF: флаг прерывания 1 канала захвата / сравнения Если канал СС1 сконфигурирован как выход: Этот флаг устанавливается аппаратно и может быть сброшен программно. Устанавливается когда счетчик равен пороговому значению.
120 Глава 11. Таймер 2 0: пороговое значение не достигнуто; 1: содержимое счетчика TIMx_CNT совпало с содержимым регистра Т1Мх_ CCR1. Если канал СС1 настроен как вход: Этот бит аппаратно устанавливается при захвате. Он может быть сброшен программно записью нуля или чтением регистра TIMx CCRIL. 0: события входного захвата не происходило; 1: Значение счетчика была захвачено в регистр TIMx CCRl (по обнаруже- нию в соответствии с настройками фронта на выводе IC1). Бит 0 UIF: флага прерывания по обновлению. Этот бит устанавливается аппаратно при событии обновления, он может быть сброшен программно. 0: события обновления не происходило; 1: Прерывание по обновлению в ожидании. Этот бит устанавливается аппа- ратно при следующих событиях: — При переполнении если значении бита UDIS в регистре TIMx_CRl рав- но 0. — Когда CNT повторно настраивается с использованием бита UG в реги- стре TIMxEGR, если биты URS и UDIS в регистре TIMx CRl равны 0. Регистр TIM2SR2. Таблица 11.4. Описание регистра TIM2_SR2. 7 6 5 4 3 2 1 0 Не исп. CC3OF CC2OF CC1OF Не исп. чт/зпО чт/зпО чт/зпО Биты 7, 6, 5, 4, 0 — не используются. Бит 1 — флаг завершения захвата/сравнения канала 1. Этот флаг устанавливается аппаратно только когда соответствующий канал настроен в режим захвата входа. Он может быть очищен программно, записью нуля. 0: захват/сравнение завершено; 1: величина счетчика была захвачена в регистр TIMx_CCRl когда флаг CCIF уже был установлен. Работа битов 2, 3, аналогична работе бита 1, но применительно к соответ- ствующему каналу захвата/сравнения. Регистр TIM2EGR.
Глава 11. Таймер 2 121 Таблица 11.5. Описание регистра TIM2_EGR. 7 б 5 4 3 2 1 0 Не исп. CC3G CC2G CC1G UG ЗП ЗП ЗП ЗП и* Биты 7, 6, 5, 4 Не используется Бит 3 CC3G: Capture/compare 3 generation (см. описание бита CC1G); Бит 2 CC2G: Capture/compare 2 generation (см. описание бита CC1G); Бит 1 CC1G: Capture/compare 1 generation Этот бит устанавливается аппаратно при генерации соответствующего со- бытия. Он автоматически очищается аппаратно. 0: на канале 1 не происходило событий; 1: на канале 1 произошло событие захвата/сравнения: — если канал 1 настроен на режим выхода. В это случае, флаг CC1IF будет установлен и будет вызвано прерывание (если оно разрешено); — если канал 1 настроен в режим входа. В этом случае, текущая величина счетчика будет скопирована в регистр TIMx CCRl. Флаг CC1IF будет установлен, и будет сгенерирован запрос на прерывание. Флаг CC1OF устанавливается если флаг CC1IF уже установлен. Бит 0 UG: Update generation Этот бит устанавливается программно и автоматически сбрасывается аппа- ратно. 0: не оказывает влияния на работу таймера; 1: принудительная генерация UEV, при этом счетчик перенастраивается и происходит обновление регистров (значение предделителя сбрасывается). Регистр TIM2CCMR1. Таблица 11.6. Описание регистра TIM2_CCMR1 в режиме выхода. 7 б 5 4 3 2 1 0 Не исп. ОС1М2 ОС1М1 ОС1МО 0С1РЕ Не исп. CC1S1 CC1SO Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Биты 7, 2 — не используются Биты 6:4 ОС1М[2:0]: Output compare 1 mode Эти биты определяют состояние сигнала OCIREF, из которого формирует- ся сигнал ОС1. Активным уровнем OCIREF является высокий, активный уровень ОС1 определяется битом СС1Р. ООО: Отключено — сравнение между регистром сравнения и счетчиком не оказывает действия на выход канала сравнения.
122 Глава 11. Таймер 2 001: Установление канала 1 в активный уровень, а также установка сигнала OCI REF в высокий уровень при достижении равенства значений счетчика и содержимого регистра сравнения (TIM2 CCR1); 010: Установление канала 1 в неактивный уровень, а также установка сигна- ла ОС 1REF в низкий уровень при достижении равенства значений счетчика и содержимого регистра сравнения (TIM2CCR1); 011: изменить состояние сигнала OC1REF на противоположное; 100: принудительно установить канал 1 в активный уровень и установка сигнала OCI REF в высокий уровень; 101: принудительно установить канал 1 в неактивный уровень и установка сигнала OCIREF в низкий уровень; 110: Режим ШИМ 1 — в режиме счета вверх, канал 1 активен до тех пор, пока TIM2 CNT < TIM2 CCR1, иначе, канал переходи в неактивное состоя- ние. В режиме счета вниз, канал неактивен до тех пор, пока TIM2 CNT > TIM2 CCR1, иначе — канал активен. 111: Режим ШИМ 2 — в режиме счета вверх, канал 1 неактивен до тех пор, пока TIM2 CNT < T1M2 CCR1, иначе, канал активен. В режиме счета вниз, канал 1 активен до тех пор, пока TIM2 CNT > TIM2 CCR1, иначе — канал неактивен. Бит ЗОС1РЕ: Output compare 1 preload enable 0: предзагрузка регистра TIM2 CCR1 отключена. Значение регистра TIM1CCR1 может быть изменено в любое время, новое значение вступит в силу немедленно. 1: Предзагрузка регистра TIM2 CCR1 включена. Чтение/запись происхо- дит через регистр предзагрузки. Значение регистра предзагрузки будет пере- даваться в теневой регистр при каждом UEV. Примечание: для правильной работы в режиме ШИМ, в таймере должна быть разрешена предзагрузка регистров. Биты 1:0 СС 1S[ 1:0]: Capture/compare 1 selection Эти битовые поля определяют направление канала и используемый вход. 00: канал СС 1 настроен на выход; 01: канал СС1 настроен как вход с выборкой сигнала (IC1) с входа TI1FP1; 10: канал СС1 настроен как вход с выборкой сигнала (IC1) с входа TI2FP1; 11: канал СС1 настроен как вход с выборкой сигнала (IC1) с входа TRC (с этого входа поступают сигналы с блока тактирования/запуска). Этот режим работает только когда сигнал от модуля тактирования /запуска выбран битами TS в регистре TIM5_SMCR Примечание: биты CC1S доступны для записи только когда канал СС1 от- ключен (СС1Е = 0 in TIM2CCER1).
Глава 11. Таймер 2 123 Таблица 11.7. Описание регистра TIM2_CCMR1 в режиме входа. 7 6 5 4 3 2 1 0 IC1F3 IC1F2 IC1F1 IC1F0 IC1PSC1 IC1PSC0 CC1S1 CC1S0 Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Биты 7:4IC 1 F[3:0]: Input capture 1 filter Эти биты определяют частоту выборки сигнала со входа TI 1 и длительность цифрового фильтра, работающего на этом входе. Цифровой фильтр представ- ляет собой вычитающий счетчик, в него записано число N. При обнаружении на входе фильтра запрограммированного перепада логических уровней, запу- скается счетчик, который считает количество тактов частоты Fmaster (или Fmaster/2 — в зависимости от настроек бит ICIF[3:0]. По окончании «дли- тельности фильтра», происходит выборка сигнала и из сигнала ТП формиру- ется сигнал TI 1F. 0000: фильтр отключен, частота вычитания из N равна Fmaster; 0001: N = 2, частота вычитания из N равна Fmaster; 0010: N = 4, частота вычитания из N равна Fmaster; 0011:N = 8, частота вычитания из N равна Fmaster; 0100: N = 6, частота вычитания из N равна Fmaster/2; 0101: N = 8, частота вычитания из N равна Fmaster/2; 0110: N = 6, частота вычитания из N равна Fmaster/4; 0111: N = 8, частота вычитания из N равна Fmaster/4; 1000: N = 6, частота вычитания из N равна Fmaster/8; 1001: N = 8, частота вычитания из N равна Fmaster/8; 1010: N = 5, частота вычитания из N равна Fmaster/16; 1011: N = 6, частота вычитания из N равна Fmaster/16; 1100: N = 8, частота вычитания из N равна Fmaster/16; 1101: N = 5, частота вычитания из N равна Fmaster/32 1110: N = 6, частота вычитания из N равна Fmaster/32; 1111: N = 8, частота вычитания из N равна Fmaster/32. Примечание. Даже если канал имеет комплементарные выходы, эти биты не имеют предзагрузки и не ведут себя в соответствии с состоянием бита ССРС в регистре TIM2_CR2. Биты 3:2 IC1PSC[1:O]: Input capture 1 prescaler Этими битами настраивается делитель сигнала IC1 для формирования сигнала ICPS. Делитель будет сброшен как только бит СС1Е в регистре TIM2_CCER будет сброшен. 00: предделитель отключен, F (ICPS) = F (IC1); 01: предделитель равен двум, F(ICPS) = F(ICl)/2; 10: предделитель равен четырем, F(ICPS) = F(ICl)/4; 11: предделитель равен восьми, F(ICPS) = F(IC 1 )/8;
124 Глава 11. Таймер 2 Биты 1:0 СС1 S[ 1:0]: Capture/compare 1 selection Эти битовые поля определяют направление канала и используемый вход. Настройки этих бит аналогичны и в режиме входа, и в режиме выхода. Эти биты доступны для записи только когда канал отключен (сброшен бит СС1Е в регистре TIM2_CCER1). Настройки регистров TIM2_CCMR2 и TIM2 CCMR3 аналогичны регистру TIM2CCMR1, но применительно к соответствующему каналу захвата/срав- нения. Регистр TIM2CCER1. Таблица 11.8. Описание регистра TIM2_CCER1. 7 6 5 4 3 2 1 0 Не исп. СС2Р СС2Е Не исп. СС1Р СС1Е Чт/зп Чт/зп Чт/зп Чт/зп Биты 7, 6, 3, 2 не используются; Бит 0: CCIE Capture/compare 1 output enable Если канал настроен как выход: 0: Канал сравнения отключен, выход ОС1 неактивен; 1: Канал сравнения включен — сигнал с выхода ОС1 подается на соответ- ствующий вывод микроконтроллера в зависимости от состояния соответству- ющих бит. Если канал настроен на вход: Этот бит определяет может ли быть проведен или нет захват значения счет- чика в регистр захвата/сравнения (TIM1CCR1). 0: захват запрещен; 1: захват разрешен. Бит 1: CCIP: Capture/compare 1 output polarity Если канал СС1 настроен на выход: 0: активным уровнем ОС1 является высокий; 1: активным уровнем ОС1 является низкий. Если канал СС1 настроен как вход схемы тактирования/запуска: 0: тактирование/запуск происходит по восходящему фронту на входе TI1F; 1: тактирование/запуск происходит по падающему фронту на входе TI1F. Если канал СС1 настроен как вход для захвата: 0: захват происходит по восходящему фронту на входе TI1F или TI2F; 1: захват происходит по падающему фронту на входе TI1F или TI2F. Примечание: Работа бит СС2Р и СС2Е в регистре TIM2_CCER1, а также ССЗР и ССЗЕ в регистре TIM2 CCER2 аналогична работе бит СС 1Р и СС 1Е в регистре Т1М2_ CCER1, но применительно к соответствующему каналу захвата/сравнения.
Глава 11. Таймер 2 125 Регистр TIM2CCER2. Таблица 11.9. Описание регистра TIM2_CCER2 7 б 5 4 3 2 1 0 Не исп. ССЗР ССЗЕ Чт/зп Чт/зп Биты 7 — 2 не используются. Работа бит 1 и 0 аналогична работе бит 1 и 0 регистра TIM2CCER1. Регистры TIM2 CNTRH и TIM2 CNTRL — регистры счетчика. Эти реги- стры доступны в любой момент для чтения и для записи. Содержат количе- ство импульсов выбранной тактовой частоты. Работа этих регистров анало- гична работе регистров TIM1CNTRH и TIM1CNTRL. Регистр TIM2_PSCR. Таблица 11.10. Описание регистра TIM2_PSCR 7 6 5 4 3 2 1 0 Не исп. PSC3 PSC2 PSC1 PSCO Чт/зп Чт/зп Чт/зп Чт/зп Биты 3,2,1,0 — определяют значение предделителя для этого счетчика. Ко- эффициент деления равен двум в степени PSC[3:0]. Регистр TIM2_ARRH Таблица 11.11. Описание регистра TIM2_ARRH 7 б 5 4 3 2 1 0 ARR15 ARR14 ARR13 ARR12 ARR11 ARR10 ARR9 ARR8 Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Регистр TIM2ARRL Таблица 11.12. Описание регистра TIM2_ARRL 7 б 5 4 3 2 1 0 ARR7 ARR6 ARR5 ARR4 ARR3 ARR2 ARR1 ARR0 Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Регистры TIM2_ARRH и TIM2 ARRL — регистры автоперезагрузки. Со- держат величину, до которой досчитывает счетчик до его обнуления. Эти ре- гистры имеют предзагрузку. TIM2 CCR1H Capture/compare register 1 high.
126 Глава 11. Таймер 2 Таблица 11.13. Описание регистра TIM2_CCR1 Н 7 6 5 4 3 2 1 0 CCR115 CCR114 CCR113 CCR112 CCR111 CCR11O CCR19 CCR18 Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Регистр TIM2CCR1L Таблица 11.14. Описание регистра TIM2.CCR1 L. 7 6 5 4 3 2 1 0 CCR17 CCR16 CCR15 CCR14 CCR13 CCR12 CCR11 CCR10 Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Чт/зп Регистры TIM2_CCR2H и TIM2CCR2L — регистры захвата/сравнения. Если канал настроен на выход схемы сравнения, то его значение является величиной, с которой сравнивается значение счетчика. Если канал настроен как вход, то содержимое этого регистра — результат последней операции за- хвата.
Глава 1 2 Таймер 4 Таймер 4 является самым простым из таймеров микроконтроллеров STM8. Он состоит из восьмиразрядного перезагружаемого складывающего счетчика. Он может использоваться для формирования временных интервалов с вызо- вом прерывания по переполнению. Основные возможности таймера 4: — восьмиразрядный перезагружаемый складывающий счетчик; — три бита предделителя, которые определяют коэффициент деления ча- стоты Fmaster (возможные значения 1, 2, 4, 8, 16, 32, 64, 128). Значение предделителя можно изменять во время работы таймера; — генерация прерывания по переполнению счетчика (при этом значения счетчика и предделителя обновляются). Fmaster TIME BASE UNIT Рисунок 12.1. Функциональная схема таймера 4. Таймер состоит из предделителя, счетчика и регистра автоперезагрузки. Предде. I !тель представляет собой делитель частоты с заданным коэффици- ентом деления (может принимать значения 1, 2, 4, 8, 16, 32, 64 и 128). Значе- ние предделителя показывает, насколько будет поделена частота CK PSC (Fmaster) перед подачей на счетчик. Таким образом, тактируя таймер часто- той, допустим 2 МГц, при значении предделителя равным 2, счетчик таймера будет тактироваться с частотой в 1 МГц. Счетчик — содержит количество импульсов, поступивших на его вход с вы- хода предделителя. Регистр автоперезагрузки — регистр, содержащий максимальное значение счетчика. В случае достижении счетчиком этого значения, он будет обнулен (перезагружен).
128 Глава 12. Таймер 4 Регистры таймера 4 Регистр TIM4CR1 Таблица 12.1. Описание регистра TIM4_CR1. 7 6 5 4 3 2 1 0 ARPE Не используется ОРМ URS UDIS CEN чт/зп чт/зп чт/зп чт/зп чт/зп Бит 7: ARPE: Auto-reload preload enable (разрешение автоперезагрузки реги- стра TIM4_ARR) 0: запись в TIM4 ARR производится «вручную» (при этом значение ARR не сохраняется в буферном регистре, а сразу «вступает в силу»); 1: запись в T1M4 ARR производится автоматически (значение ARR сохра- няется в буферном регистре, а «вступает в силу» при следующим событии об- новлении). Бит 3: ОРМ: One-pulse mode ( режим одиночного импульса). 0: этот режим отключен. Счетчик продолжит работу при следующем UEV; 1: при UEV счетчик будет остановлен (сброшен бит CEN). Бит 2: URS: Update request source (источник вызова прерывания) 0: прерывание возникает при обновлении регистров (либо при установке бита UG, либо при переполнении счетчика); 1: Прерывание возникает только при переполнении счетчика. Бит 1 UDIS: Update disable (Запрещение события обновления) 0: UEV генерируется в случае достижения счетчиком значения ARR, либо счетчик обновляется программно (При этом в регистры ARR, PSC загружают- ся их буферизованные значения); 1: UEV не генерируется, регистры ARR, PSC не изменяются. При этом счет- чик и предделитель могут быть перенастроены, если будет установлен бит UG. Бит 0 CEN: Counter enable (разрешение работы счетчика) 0: Счетчик отключен; 1: Счетчик включен. Регистр TIM4 IER (Interrupt enable register). Таблица 12.2. Описание регистра TIM4_IER. 7 6 5 4 3 2 1 0 Не исп. UIE чт/зп Биты 7...1 — зарезервированы, не используются. Бит 0 UIE: Update interrupt enable 0: прерывание по обновлению отключены;
Глава 12. Таймер 4 129 1: прерывания по обновлению включены. Регистр TIM4_SR Status register. Таблица 12.3. Описание регистра TIM4_SR. 7 б 5 4 3 2 1 0 Не исп. UIF чт/зп Биты 7...1 — зарезервированы, не используются. Бит О UIF (Update interrupt flag) Этот бит устанавливается аппаратно при UEV. Очищается программно. 0: UEV не происходило; 1: произошло UEV. Устанавливается аппаратно при следующих событиях: — при переполнении если бит UDIS в регистре TIM4_CR1 равен нулю; — в случае перенастройки счетчика с установкой бита UG (если бит URS и UDIS в регистре TIM4 CR1 равны нулю). Регистр TIM4EGR Таблица 12.4. Описание регистра TIM4JEGR 7 б 5 4 3 2 1 0 Не исп. UG чт/зп 1 Бит 0 UG: Update generation Этот бит устанавливается программно и автоматически сбрасывается аппа- ратно. 0: не оказывает влияния на работу таймера; 1: принудительная генерация UEV, при этом счетчик перенастраивается и происходит обновление регистров (значение предделителя сбрасывается). Регистр TIM4CNTR Таблица 12.5. Описание регистра TIM4_CNTR. 7 б 5 4 3 2 1 0 CNT7 CNT6 CNT5 CNT4 CNT3 CNT2 CNT1 CNT0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Биты 7:й CNT|7:0]: Counter value Счетный регистр таймера. Регистр T1M4PSCR
130 Глава 12. Таймер 4 Таблица 12.6. Описание регистра TIM4_PSCR. 7 6 5 4 3 2 1 0 Не используется PSC2 PSC1 PSCO чт/зп чт/зп чт/зп Биты 7-3 — зарезервированы, не используются; Биты 2:0 — PSC[2:0]: Prescaler value Таблица 12.7. Таблица значений предделителя PSC[2:0] Значение предделителя ООО 1 001 2 010 4 011 8 100 16 101 23 110 64 111 128 Регистр TIM4ARR Таблица 12.8. Описание регистра TIM4_ARR. 7 6 5 4 3 2 1 0 ARR ARR ARR ARR ARR ARR ARR ARR ЧТ/ЗП ЧТ/ЗП ЧТ/ЗП ЧТ/ЗП ЧТ/ЗП ЧТ/ЗП ЧТ/ЗП ЧТ/ЗП Биты 7-0 — ARR[7:0]: Auto-reload value. Значение автоперезагрузки — это значение, до которого досчитывает счет- чик до его перезагрузки.
Глава 1 3 Модуль SPI Последовательный периферийный интерфейс (SPI) предназначен для об- мена данными с внешними для данного микроконтроллера устройствами (на- пример, другие микроконтроллеры, различные датчики, внешние микросхе- мы памяти, АЦП/ЦАП). Основой модуля SPI является сдвиговый регистр, из которого (в режиме master) или в который (в режиме slave), по каждому импульсу тактового сигна- ла сдвигается значение. Таким образом, передача числа по интерфейсу SPI выглядит примерно следующим образом: master инициирует передачу байта данных подачей логической единицы на вывод NSS (slave select), далее вы- ставляет бит данных на вывод MOSI (MASTER OUT SLAVE IN) и подает им- пульс на вывод SCK. При этом соответственно, slave активируется, принимает данные и, при приеме импульса на выводе SCIC, сдвигает данные. Одновре- менно с этим, slave выставляет свои данные на вывод MISO (MASTER IN SLAVE OUT). Далее подается следующий бит данных и подается импульс чте- ния этого бита. Таким образом, последовательно передаются все 8 бит байта данных. По окончании передачи байта на выводе NSS master выставляет низ- кий логический уровень, тем самым сообщая slave что данные переданы. По- сле этого переданные данные могут быть считаны. После передачи данных master может считать данные, переданные от slave. Рисунок 13.1. Схема подключения по интерфейсу SPI. Модуль SPI в микроконтроллерах STM8 имеет следующие возможности: — Полнодуплексная синхронная передача (по трем линиям); — полудуплексная синхронная передача по двум линиям; — работа в режиме master или slave; — 8 рабочих частот в режиме master (максимальная — половина частоты Fmaster); — работа в режиме slave на максимальной частоте (максимальная — поло- вина частоты Fmaster);
132 Глава 13. Модуль SPI — программное или аппаратное управление событием «вызов слейва»; — программируемая полярность и фаза тактового сигнала; — программируемый порядок следования бит (первым может идти как старший разряд, так и младший); — система флагов состояния и ошибок модуля SPI; — возможность выделения ошибок при приеме/передаче (ошибка перепол- нения буферного регистра, ошибка при несовпадении контрольной сум- му, ошибка режима «Мастер»); — возможность «Пробуждения» микроконтроллера из энергосберегающего режима. Рисунок 13.2. Функциональная схема модуля SPI. Модуль SPI подключается к внешним устройствам следующими выводами: — MISO (Master In / Slave Out) — вход мастера — выход слейва Этот бит может быть использован для передачи данных в режиме слейв и приема данных в режиме мастер. — MOSI (Master Out / Slave In) — выход мастера и вход слейва. Этот вывод может быть использован для передачи данных в режиме мастер и приема данных в режиме слейв. — SCK (Serial Clock output) выход синхронизирующих импульсов мастера и вход синхронизирующих импульсов в режиме слейв.
Глава 13. Модуль SPI 133 — NSS: (Slave select) выбор слейва. Этот дополнительный вывод, который обеспечивает выбор мастером слейва. Управление выводом NSS может быть программным или аппаратным (выбирается установкой/сбросом битов SSM и SSI в регистре SP1_CR2), при этом аппаратным считается режим, когда master активирует slave подачей логического нуля на вывод NSS, а программным — когда выбор слейва осуществляется программ- ной установкой бита SSM; Примечание: для высоких скоростей передачи данных, выводы модуля SPI должны быть настроены на быстрое переключение. Настройка модуля SPI осуществляется в следующей последовательности (для master): — настраивается скорость SPI (биты BR в регистре SPI_CR1); — указывается полярность и фаза тактового сигнала (биты CPOL и СРНА в регистре SPI CR1); — устанавливается порядок следования бит (первым выставляется старший или младший бит данных — бит LSBFIRST в регистре SPI_CR1); — выбор режима работы мастера — программный или аппаратный. — устанавливается высокий логический уровень на выводе NSS; — включается модуль SPI и устанавливается режим мастер (устанавливают- ся биты MSTR and SPE в регистре SPI_CR1). Настройка модуля SPI для работы в режиме слейва примерно следующая: — выбор полярности и фазы тактового сигнала (биты CPOL и СРНА); — настройка порядка следования бит (первым пришедшим будет старший или младший бит данных); — выбор режима работы слейва — программный или аппаратный. Модули SPI в микроконтроллерах STM8 поддерживают два вида симплекс- ной связи: — по одному тактовому и одному двунаправленному проводам (полуду- плекс); Этот режим включается, установкой бита BDM в регистре SPI_CR2. В этом режиме SCK используется для тактирования, a MOSI в мастер или MISO в слейв используются для передачи/приема данных. Выбор направления пере- дачи данных в этой линии, производится битом BDOE в регистре SPI_CR2. Когда этот бит установлен в 1, информация выводится из мастер и вводится в слейв. Если бит сброшен, направление противоположно. — по одному тактовому и одному однонаправленному проводам (только чтение либо только передача). Режим только передачи аналогичен полнодуплексному режиму (ВDM = О, RXONLY = 0): данные передаются на вывод MOSI в режиме мастер или MISO в режиме слейва, а выводы MISO и MOSI соответственно, могут использо- ваться как обычные выводы.
134 Глава 13. Модуль SPI Режим только чтения (активируется установкой бита RXONLY в регистре SPI_CR2) предполагает, что устройство отключает функцию вывода SPI. В этом случае освободившиеся выводы могут использоваться для других целей. Расчет контрольной суммы предназначен для повышения надежности свя- зи. Она рассчитывается и для передаваемых, и для принимаемых данных. Контрольная сумма рассчитывается для программируемых полиномов после- довательно для каждого бита. Её расчет включается установкой бита CRCEN в регистре SPI_CR2. При применении расчета контрольной суммы, модуль SPI должен конфигурироваться следующим образом: - настраиваются биты CPOL, СРНА, LSBFIRST, BR, SSM, SSI MSTR; — настраивается значение полинома в регистре SPI_CRCPR; — разрешается расчет контрольной суммы установкой бита CRCEN (при этом сбрасываются регистры SPI_RXCRCR и SPI TXCRCR; — включение модуля SPI битом SPE; — передача или прием байта; — при записи последнего (последующего) байта в буфер передатчика, уста- новить бит CRCNEXT в регистре SPI_CR2. Тем самым, после передачи последнего байта будет передана контрольная сумма. Вычисление кон- трольной суммы должно быть прекращено до начала её передачи. — после передачи последнего байта, модуль SPI начнет передавать CRC. Бит CRCNEXT будет сброшен. Контрольная сумма будет принята и срав- нена с содержимым регистра SPI_RXCRCR. Если эти значения не равны, будет поднят флаг ошибки контрольной суммы CRCERR (если установ- лен бит ERRIE, будет вызван запрос на прерывание). Принятые данные будут проигнорированы. В ходе работы модуля SPI могут устанавливаться и сбрасываться следующие флаги: Флаги состояния: ТХЕ (Тх buffer empty flag) — флаг опустошения буфера передатчика. Уста- навливается, когда байт для передачи копируется из регистра передатчика в сдвиговый. При этом регистр данных передатчика обнуляется и готов принять следующий байт для передачи. Когда новый байт будет записан в регистр дан- ных передатчика (SPI_DR), этот флаг будет сброшен. RXNE (Rx buffer not empty) — флаг обозначает что в регистре данных при- емника есть данные для считывания. Флаг сбрасывается чтением регистра данных приемника (SPI_DR), либо записью нуля на место этого бита. BSY (Busy flag) — флаг активности модуля SPL Этот флаг устанавливается и сбрасывается аппаратно. Флаг установлен когда модуль принимает или пере- дает данные (за исключением двунаправленного полудуплексного режима ра- боты модуля SPI, где флаг BSY имеет нулевое значение во время приема или передачи данных).
Глава 13. Модуль SPI 135 Флаги ошибок: — MODF — сбой режима мастер. Этот бит устанавливается, когда вывод NSS у master по тем или иным причинам был подтянут к «земле» (уста- новлен логический ноль). Сбой режима мастер влияет работу модуля SPI следующим образом: — если бит MODF установлен и установлен бит ERRIE, вызывается за- прос на прерывание; — сбрасывается бит SPE, соответственно, отключается модуль SPI; — сбрасывается бит MSTR, таким образом, принудительно переводя устройство режим слейв. — OVR — ошибка переполнения. Этот бит устанавливается, когда мастер передал байт данных, а слейв еще не считал предыдущий байт. Если уста- новлен бит ERRIE, будет выполнен запрос на прерывание. Пока этот флаг не будет сброшен, все принятые данные будут утеряны. — CRCERR — ошибка контрольной суммы. Флаг может быть установлен только если разрешена проверка контрольной суммы. Флаг CRCERR в регистре SPI_SR регистр устанавливается, если значение, полученное в сдвиговом регистре после передачи значения SPI_TXCRCR, не соответ- ствует значение SPI RXCRCR. Единственным низкопотребляющим режимом для модуля SPI, является ре- жим halt. В этом режиме значения в регистрах модуля SPI зафиксированы. Если SPI находится в режиме мастер, то работа модуля будет продолжена при пробуждения от системы wake пр. Если SPI находится в режиме слейв, то его работа будет возобновлена при обнаружении передачи данных. Пробуждение SPI из halt режима. Когда микроконтроллер находится в режиме Halt, SPI все еще способен к ответу как ведомое устройство, если на выводе NSS был установлен логиче- ский ноль (в аппаратном режиме), или был установлен бит SSI (в программ- ном режиме) до того, как микроконтроллер был переведен в энергосберегаю- щий режим halt. При обнаружении фронта (определенного битом СРНА) будут выполнены следующие действия: • установлен бит WKUP в регистре SPI_SR; • если бит WKIE в регистре SPI_ICR установлен, будет выполнен запрос на прерывание; • прерывание выведет микроконтроллер из режима Halt; • при пробуждении из режима Halt необходимо некоторое время для вос- становления стабильности тактового сигнала. В течение этого времени, слейв может получить несколько байт данных до начала приема на ста- бильной тактовой частоте (при этом эти данные могут быть искажены).
136 Глава 13. Модуль SPI Для избежания этой ситуации, рекомендуется использовать следующий протокол: • перед вводом слейва в режим Halt, в регистр SPI_DR записывается значе- ние. Это значение указывает мастеру, что SPI слейва находится в режиме Halt. • мастер отправляет один и тот же байт постоянно пока не получит от слей- ва значение, отличающееся от указанного выше. Это значение указывает что слейв проснулся и готов к достоверному приему данных. Модуль SPI в ходе своей работы может вызывать следующие прерывания: Таблица 13.1. Таблица прерываний модуля SPI. Событие прерывания Флаг события Бит, разрешающий прерывание Выход из режима halt Опустошение буфера передачи ТХЕ TXIE Нет Завершение приема байта RXNE RXIE Нет Событие системы Wakeup WKUP WKIE Да Ошибка режима мастер MODF ERRIE Нет Ошибка перезаписи OVR Нет Ошибка контрольной суммы CRCERR Нет Описание регистров модуля SPI SPI control register 1 (SPI CR1) Таблица 13.2. Описание регистра SPI_CR1. 7 б 5 4 3 2 1 0 LSBFIRST SPE BR2 BR1 BRO MSTR CPOL СРНА чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bit 7LSBFIRST: Frame format 0: первым будет передан младший старший разряд; 1: первым будет передан младший значащий разряд. Bit 6 SPE: SPI enable 0: модуль SPI включен; 1: модуль SPI отключен. В R[2:0J: Baud rate control Эти биты задают скорость передачи данных (делением основной системной частоты) микроконтроллера (Fmaster) ООО: Fmaster /2;
Глава 13. Модуль SPI 137 001: Fm-. ter/4; 010: Fmaster/8; Oil: Fmaster/16; 100: Fmaster/32; 101: Fmaster/64; 110: Fmaster/128; 111: Fmaster/256; Примечание: значение этих бит не должно меняться в процессе работы мо- дуля SP1 Bit 2MSTR: Master selection Выбор режима (master/slave) модуля SPI. 0: режим slave; 1: режим Master. Примечание: значение этого бита не должно меняться в процессе работы модуля SPI BitlCPOL: Clock polarity Состояние этого бита определяет полярность тактового сигнала на выводе SCK 0: в неактивном состоянии на выводе SCK низкий логический уровень; 1: в неактивном состоянии на выводе SCK высокий логический уровень. Bit ОС РИА: Clock phase Состояние этого бита определяет фазу (первый или второй перепад логиче- ских уровней) по которой будет производиться выборка сигнала. 0: выборка значения будет производиться по первому перепаду; 1: выборка значения будет производиться по второму перепаду.
138 Глава 13. Модуль SPI Рисунок 13.3 Временные диаграммы SPI при разных настройках бит CPOL и СРНА. SPI control register 2 (SP1CR2). Таблица 13.3. Описание регистра SPI_CR2. 7 6 5 4 3 2 1 0 BDM BDOE CRCEN CRCNEXT Не исп. RXOnly SSM SSI чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bit 7BDM: Bidirectional data mode enable. Включение двунаправленного (полудуплексного) режима передачи данных 0: однонаправленная передача по двум проводам; 1: двунаправленная передача по одному проводу. Bit 6BDOE: Input/Output enable in bidirectional mode Переключение между вводом и выводом информации при двунаправлен- ном режиме работы порта (работает только при установленном двунаправлен- ном режиме) 0: режим входа (режим приемника); 1: режим выхода (режим передатчика).
Глава 13. Модуль SPI 139 В режиме мастер используется линия MOST, в режиме слейв —линия MISO. Bit 5CRCEN: Hardware CRC calculation enable Включение аппаратного расчета контрольной суммы (CRC). 0: вычисление CRC отключено; 1: вычисление CRC включено. Bit 4CRCNEXT: Transmit CRC next Состояние бит определяет, что будет передаваться следующим байтом: дан- ные или контрольная сумма. 0: следующая величина будет передаваться из буфера передатчика; 1: следующая величина будет передаваться из регистра CRC. Bit 3 Не используется Bit 2 RXONLY: Receive only 0: полнодуплексный режим (и приёмник, и передатчик); 1: выход отключен (только режим приема). Этот бит совместно с битом В DM определяет направление передачи в двух- проводном однонаправленном режиме передачи данных. Этот бит также используется в системе со многими подчиненными (slave), где у каждого из этих отдельных slave должен быть недоступен выход для не- повреждения других подчиненных. Bit 1 SSM: Software slave management Программное управление ведомым 0: программное управление ведомым отключено; 1: программное управление ведомым включено. Когда этот бит установлен, значение сигнала на выводе NSS заменяется значением бита SSI. Bit 0 SSI: Internal slave select Встроенный выбор ведомого (Internal slave select) Этот бит работает только когда бит SSM установлен. Значение этого бита эквивалентно значению бита NSS, при этом значение на физическом выводе NSS не используется. SPI interrupt control register (SPI ICR). Таблица 13.4. Описание регистра SPIJCR. 7 6 5 4 3 2 1 е TXIE RXIE ERRIE WKIE Не используется чт/зп чт/зп чт/зп чт/зп Bit 7 TXIE: Тх buffer empty interrupt enable. Разрешение прерывания по опустошении буферного регистра передатчика. 0: прерывание по опустошении буферного регистра передатчика запреще- но;
140 Глава 13. Модуль SPI 1: прерывание по опустошении буферного регистра передатчика разреше- но. При установленном флаге ТХЕ (регистр SPISR) происходит запрос на прерывание. Bit 6 RXIE: RX buffer not empty interrupt enable Разрешение прерывания если буферный регистр приемника не пуст. 0: прерывание запрещено; 1: Прерывание разрешено. При установленном флаге RXNE (регистр SPI- SR), происходит запрос на прерывание. Bit 5 Error intermpt enable Разрешение прерывания по выделению ошибки. 0: прерывание запрещено; 1: прерывание разрешено. При установленных флагах ошибок (CRCERR, OVR, MODF), происходит запрос на прерывание. Bit 4 Wakeup interrupt enable Прерывание по пробуждению 0: прерывание отключено; 1: прерывание разрешено, если бит WKUP в регистре SPI_SR устанавлива- ется, происходит запрос на прерывание. Биты 3, 2, 1,0 не используются. SPI status register (SPI SR). Рисунок 13.3 Описание регистра SPI__SR. 7 6 5 4 3 2 1 0 BSY OVR MODF CRCERR WKUP He исп. ТХЕ RXNE ЧТ чт/зпО чт/зпО чт/зпО чт/зпО ЧТ ЧТ Bit 7 BSY: Busy flag 0: SPI не занят; 1: SPI занят. Этот флаг устанавливается и сбрасывается аппаратно. Bit 6 OVR: Overrun flag 0: перезаписи не происходило; 1: произошло событие перезаписи. Под перезаписью понимается прием предыдущего байта и прием текущего байта без чтения предыдущего. Устанавливается аппаратно. Сбрасывается программно (записью нуля). Bit 5 MODF: Mode fault 0: отказа в режиме мастер не происходило; 1: произошел отказ в режиме master. Bit 4 CRCERR: CRC error flag Флагошибки контрольной суммы (CRC).
Глава 13. Модуль SPI 141 0: величина CRC равна величине в регистре SPI_RXCRCR; 1: величина CRC не равна величине в регистре SPI_RXCRCR. Бит устанавливается аппаратно. Сбрасывается программно (записью нуля). Bit 3WKUP: Wakeup flag Флаг пробуждения. 0: события пробуждения не происходило; 1: произошло событие пробуждения. Бит устанавливается аппаратно. Сбрасывается программно (записью нуля). Bit 2 не используется. Bit 1ТХЕ: Transmit buffer empty Флаг опустошенности буферного регистра передатчика. 0: буферный регистр передатчика (Тх buffer) не пуст; 1: буферный регистр передатчика пуст. Bit 0 RXNE: Receive buffer not empty 0: буферный регистр приемника (Rx buffer) пуст 1: буферный регистр приемника пуст. SPI data register (SP1DR). Таблица 13.5. Описание регистра SPI_DR. 7 б 5 4 3 2 1 0 DR7 DR6 DR5 DR4 DR3 DR2 DR1 DR0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп DR[7:0J: Data register Регистр данных. Предназначен для приема и отправки данных. Регистр данных состоит из двух буферных регистров — регистров передатчика, и ре- гистр приемника. Когда необходимо передать байт и происходит запись в ре- гистр данных, данные записываются в буфер передатчика. Когда данные при- няты, то они считываются из приемного буфера. SPI CRC polynomial register (SPI_CRCPR). Таблица 13.6. Описание регистра SPI_CRCPR. 7 6 5 4 3 2 1 0 CRCPOLY[7:0] чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп CRCPOLY[7:0]: CRC polynomial register Этот регистр содержит значение полинома, применяемого для вычисления контрольной суммы (CRC). Значение по умолчанию (0x07). SPI Rx CRC register (SPI_RXCRCR)
142 Глава 13. Модуль SPI Таблица 13.7. Описание регистра SPI.RXCRCR. 7 6 5 4 3 2 1 0 RxCRC[7:0] чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп RXCRC|7:0J: Rx CRC Register Когда контроль четности включен, этот регистр содержит вычисленное зна- чение контрольной суммы последнего принятого байта. Значение рассчитыва- ется на основе значения полинома, содержащегося в регистре SPI_CRCPR. Примечание: чтение этого регистра когда флаг BSY не установлен вернет неверные данные. SPI Тх CRC register (SPI_TXCRCR) Таблица 13.8. Описание регистра SPI_TXCRCR. 7 6 5 4 3 2 1 0 TxCRC[7:0] чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп TxCRCl7:0]: Тх CRC register Когда разрешено вычисление контрольной суммы, этот регистр содержит вычисленное значение контрольной суммы для передаваемого байта. Значе- ние контрольной суммы рассчитывается на основе значения полинома, со- держащегося в регистре SPI_CRCPR. Примечание: чтение этого регистра когда флаг BSY не установлен вернет неверные данные.
Г лава 14 Модуль и ART В состав всех микроконтроллеров семейства STM8 входит универсальный синхронно-асинхронный приемопередатчик (UART), причем этот модуль может иметь три модификации, их отличительные особенности перечислены в таблице ниже. Таблица 14.1. Сравнительная таблица модулей UART. Характеристики UART1 UART2 UART3 Асинхронный режим 4“ 4- 4“ Многопроцессорный обмен данными 4- 4“ 4- Синхронный режим 4“ 4" - Режим smartcard 4- 4“ - Режим IrDA 4" 4“ - Полудуплексный (однопроводный) режим 4- - - Режим LIN мастер 4- 4“ 4“ Режим LIN слейв - 4“ 4“ Основные возможности модуля UART: — дуплексный, асинхронный режим связи; — поддержка формата NRZ-M/NRZ-L; — высокая скорость приема/передачи (максимальная скорость может до- стигать Fmaster/16); — программируемая длина слова данных (8 или 9 бит); — программируемое количество стоп-битов (1 или 2); — поддержка протокола LIN (в MASTER и SLAVE режимах); — вывод для тактового сигнала синхронизации связи (в модулях типа UART1, UART2); — поддержка стандарта IrDA (спецификация SIR), поддержка длительно- сти 3/16 бит для нормального режима; — эмуляция Smartcard (в модулях типа UART1, UART2), поддержка асин- хронных протоколов определенных стандартом ISO 7816-3, работа с 1,5 стоп-битами; — режим однопроводного полудуплекса в (модулях типа UART1); — отдельные биты для включения приемника и передатчика; — контроль четности (передача бита четности, контроль бита четности в принятом байте); — рабочие флаги модуля: • флаг переполнения буферного регистра приемника; • флаг опустошения буферного регистра передатчика;
144 Глава 14. Модуль UART • флаг окончания передачи; • флаги ошибок: • флаг ошибки переполнения; • флаг ошибки кадра; • флаг ошибки четности; — шесть источников прерывания (с флагами): • опустошение буферного регистра передачи данных; • завершение передачи; • переполнение регистра приемника; • «простой» приемной линии; • флаг ошибки кадра; — два вектора прерываний (по завершению прнема/передачи); — режим пониженного энергопотребления; — многопроцессорный режим — ввод в режим ожидания, если адрес не со- впадает с собственным; — вывод из режима ожидания (если обнаружен запрос по линии или адрес совпадает с собственным); — события для вывода микроконтроллера из режима ожидания: — получение адресного байта; — простой линии. Описание функций модуля UART. Интерфейс для подключения к другим устройствам по двум или трем лини- ям представлен на структурных схемах модулей UART1, UART 2, UART 3. Каждый модуль UART является двунаправленным, и содержит минимум две линии: линию приема данных UART_RXn линию передачи данных UART_TX Вывод микроконтроллера UARTRX является входом данных. Последова- тельной выборкой значений сигнала на этом выводе определяется различие между сигналом и шумом. Вывод микроконтроллера UARTTX является выводом данных. Когда пе- редатчик UART отключен, то вывод микроконтроллера возвращается к кон- фигурации, определенной регистрами соответствующего порта. Когда пере- датчик UART включен, вывод переходит под управление модулем UART, при этом он переходит в высокий уровень (высокий уровень является неактивным для этого интерфейса). Через эти выводы, данные последовательно (по кадрам) передаются после- довательно во времени. При этом кадр данных имеет следующую структуру: — активация линии обозначающей режим (прием/передача); — передача стартового бита; — передача байта данных (8 или 9 битов). Передача идет младшим байтом вперед; — один, полтора или два стоп-бита (обозначают конец кадра).
Глава 14. Модуль UART 145 Структурная схема модуля UART UART1_TX UART1_RX UART1_CK MCU bus Рисунок 14.1. Функциональная схема модуля типа UART1
146 Глава 14. Модуль UART UART2_TX UART2_RX UART2_CK Рисунок 14.2. Функциональная схема модуля типа UART2.
Глава 14. Модуль UART 147 Write ReadA \ (data register) UART3„DR UART3 JTX Transmit Data Register (TDR) UART3_RX Transmit Shift Register TRANSM TTER CLOCK UART3_CR4 LBDIEN LBDL LBDF ADD[3;0] UART3_CR3 LINEN STOP(1:OJ UART2_CR1 Rfi T8 UARTD M WAKE PCEN PS PIEN TRANSMIT CONTROL TXE TC RXNE IDLE NF FE OR/ LHE RECEIVER CONTROL RECEIVER CLOCK WAKE UP UNIT UART3_CR2 TIEN TCIEN RIEN ILIEN TEN REN RWU SBK PE INTERRUPT CONTROL UART3_SR Рисунок 14.3. Функциональная схема модуля типа UART3.
148 Глава 14. Модуль UART Регистры модуля UART Status register (UARTSR) Таблица 14.2. Описание регистра UART_SR. 7 6 5 4 3 2 1 0 ТХЕ ТС RXNE IDLE OR NF FE РЕ ЧТ чт/зпО чт/зпО ЧТ ЧТ ЧТ ЧТ ЧТ Бит 7 ТХЕ (Transmit data register empty) — флаг опустошения регистра пере- дачи данных. Этот бит устанавливается аппаратно, когда содержимое реги- стра TDR было передано в сдвиговый регистр передатчика. Если в байте UART_CR2 установлен бит TIEN, то установкой этого бита формируется за- прос на прерывание по опустошению регистра передатчика. Этот бит сбрасы- вается при записи в регистр данных UART_DR. Таким образом: 1 — содержимое буферного регистра передано в сдвиговый. Модуль UART готов к записи следующего байта данных в регистр UART_DR. О — содержимое буферного регистра не передано в сдвиговый, при записи в регистр UART_DR произойдет потеря уже находящихся там данных. Бит 6 ТС (Transmission Complete) — флаг завершения передачи данных. Этот бит устанавливается аппаратно, когда передача байта данных завершена и установлен бит ТХЕ. Если в регистре UART_CR2 установлен бит TCIEN, установка этого бита вызывает запрос на прерывание. Бит ТС сбрасывается программно записью нуля. Бит 5 RXNE (Read data register not empty) — этот бит устанавливается аппа- ратно, когда содержимое сдвигового регистра передается в регистр передачи данных. При установленном бите RIEN в регистре UART_CR2, формируется запрос на прерывание. Этот бит может быть сброшен двумя способами: чте- нием регистра UART_DR либо записью нуля на позицию этого бита. Таким образом: О — данные не приняты; 1 — данные готовы к считыванию из регистра UART_DR. Бит 4 IDLE (IDLE line detected) — этот бит устанавливается аппаратно, ког- да линии находятся в состоянии ожидания. При установленном бите ILIEN в регистре UART_CR2, формирует запрос на прерывание. Очищается про- граммно, последовательным чтением регистра UART_SR и последующим чтением регистра UART_DR. Бит 3 OR (Overrun error) Этот бит устанавливается аппаратно, когда текущий байт данных был при- нят в сдвиговый регистр и далее был передан в регистр RDR, из которого еще
Глава 14. Модуль UART 149 не были считаны данные (RXNE = 1). В этой ситуации содержимое регистра RDR перезаписывается. При установленном бите RIEN в регистре UART_ CR, формирует запрос на прерывание. Очищается программно, последова- тельным чтением регистра UARTSR и регистра UARTDR. Бит 2 NF (Noise flag) Этот бит устанавливается аппаратно, когда в принятом кадре выделяется шум. Этот бит может быть очищен программно последовательным чтением регистра UARTSR и регистра UARTDR. Этот бит не генерирует прерыва- ния. Бит 1 FE (Framing error) Этот бит устанавливается аппаратно, когда модуль UART определяет невер- ную структуру принятого кадра данных. Этот бит может быть очищен про- граммно последовательным чтением регистра UARTSR и регистра UART_DR. Бит О РЕ (Parity error) Этот бит устанавливается аппаратно, когда произошла ошибка четности в режиме приема. При установленном бите PIEN в регистре UART_CR1, фор- мирует запрос на прерывание. Может быть очищен программно. Перед его очисткой необходимо дождаться установки бита RXNE Data register (UARTDR) Содержит переданные или полученные данные, в зависимости от того, ра- ботал он в режиме приема или передачи. Этот регистр выполняет двойную функцию (чтение и запись). Он состоит из двух регистров — TDR (для пере- дачи) и RDR (для приема). Таблица 14.3. Описание регистра UART_DR. 7 6 5 4 3 2 1 0 DR7 DR6 DR5 DR4 DR3 DR2 DR1 DRO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Baud rate register 1 (UART BRR1) и Baud rate register 2 (UART BRR2). Таблица 14.4. Описание регистра UART_BRR1. 7 6 5 4 3 2 1 0 UART_DIV[11:4] чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Таблица 14.5. Описание регистра UART_BRR2 7 6 5 4 3 2 1 0 UART_DIV[15:12] UART_DIV[3:0] чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп
150 Глава 14. Модуль UART Регистры UARTBRR1 и UART BRR2 задают скорость работы модуля UART. Они являются общими для передатчика и приемника. При настройке скорости работы модуля UART сначала должно быть записано значение реги- стра BRR2, а только затем BRR1 (так как только после записи BRR1 будут обновлены счетчики формирующие скорость работы UART). Приемник и передатчик имеют одну и туже скорость, которая определяется содержимым делителя UART_D1V, которое вычисляется по формуле: fmaster Тх / Rx baud rate =--------- UART DIV Где fmaster — частота тактирования микроконтроллера UART_DIV — значение предделителя RX/TX baud rate — скорость обмена данными. Примечание: биты 0-3 и 12-15 величины baud rate записываются в регистр UARTBRR2, а биты 4-11 в регистр UART BRR1. Control register 1 (UART CR1). Таблица 14.6. Описание регистра UART_CR1. 7 б 5 4 3 2 1 0 R8 Т8 UARTD М 1 Л / Л IZI- vvAi\c г»/—гм PS PIEN чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bit 7 R8 (Receive Data bit 8) Этот бит используется для хранения девятого принятого бита (если бит М = 1, т.е длина передаваемого байта информации составляет 9 бит) Bit 6 Т8 (Transmit data bit 8) То же, но применительно к передатчику. Bit 5 UARTD (UART Disable) Этот бит используется для понижения энергопотребления, когда этот бит установлен, предделитель модуля UART и его выводы будут остановлены в конце передачи текущего байта. Этот бит устанавливается и сбрасывается программно. Bit 4 М (word length) Этот бит устанавливает длину передаваемого слова данных. Установка его в ноль означает что передаваемое слово данных будут иметь длину 8 бит, если бит сброшен, слово имеет длину в 9 бит. Этот бит устанавливается и сбрасы- вается программно. Bit 3 WAKE (Wakeup method) Определяет способ пробуждения UART (из энергопотребляющего режи- ма). 0 — по освобождению линии
Глава 14. Модуль UART 151 1 — по принятию адреса Bit 2 PCEN (Parity control enable) Этот бит определяет наличие аппаратного контроля четности (включе- ние бита четности в передаваемые данные и выделение их в принимаемых). Вычисленное значение бита четности устанавливается в позиции старшего значащего разряда (9-ый бит, если М=1; 8-ой бит, если М=0), и выделяет- ся из этих позиций при приеме данных. Этот бит устанавливается и сбра- сывается программно. При установке этого бита контроль четности начи- нает осуществляться со следующего слова передаваемых или принимаемых данных. Bit 1 PS (Parity selection) Этот бит выбирает проверку принимаемых бит на четность либо нечет- ность (если проверка четности включена (бит PCEN установлен)). Этот бит сбрасывается или устанавливается программно, проверка начинает осу- ществляться поле передачи текущего байта. О — проверка на четность; 1 — проверка на нечетность. Bit О PIEN (Parity interrupt enable) Этот бит разрешает прерывание по четности О — прерывание по четности запрещено; 1 — запрос на прерывание по четности генерируется когда бит РЕ в регистре UARTSR установлен. Control register 2 (UARTCR2). Таблица 14.7. Описание регистра UART_CR2. 7 б 5 4 3 2 1 0 TIEN TCIEN RIEN ILIEN TEN REN RWU SBK чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bit 7 TIEN (Transmitter interrupt enable) Этот бит устанавливается и очищается программно. О — запрет прерывания от передатчика UART; 1 — при установленном бите ТХЕ в регистре UART_SR, формируется за- прос на прерывание. Bit 6 TCIEN (Transmission complete interrupt enable) Этот бит устанавливается и очищается программно. О — запрет прерывания по завершению передачи; 1 — при установленном бите ТС в регистре UARTSR, формируется запрос на прерывание. Bit 5 RIEN (Receiver interrupt enable) Этот бит устанавливается и очищается программно.
152 Глава 14. Модуль UART О — запрет прерывания от приемника UART; 1 — при установленном бите OR или RXNE в регистре UART_SR, форми- руется запрос на прерывание. Bit 4 ILIEN (IDLE Line interrupt enable) Этот бит устанавливается и очищается программно. О — запрет прерывания от приемника UART; 1 — при установленном бите IDLE в регистре UART_SR, формируется за- прос на прерывание. Bit 3 TEN (Transmitter enable) Этот бит разрешает работу передатчика (0 —передатчик отключен, 1 — пере- датчик включен). Устанавливается и сбрасывается программно. Примечание: — если во время передачи информации был подан импульс (перепад из еди- ницы в ноль и из нуля в единицу), после передачи текущего слова модуль UART перейдет в режим ожидания; — Когда бит TEN установлен, перед передачей байта информации будет произведена аппаратная задержка на период передачи одного бита. Bit 2 REN (Receiver enable) Этот бит разрешает работу приемника (0 — приемник выключен, 1 — при- емник включен). Устанавливается и сбрасывается программно. Bit 1 RWU (Receiver wakeup) Этот бит определяет, находится ли приемник модуля UART в режиме сна или нет. Он может быть установлен или очищен программно или аппаратно при обнаружении «пробуждающей» последовательности. Примечание: 1 — Перед тем, как выбрать режим «сна» (установкой бита RWU) , прием- ник UART должен принять первый байт данных, иначе он не сможет работать в режиме «сна» с «пробуждением» при обнаружении простоя линии. 2 — При пробуждении от принятия адресной метки (бит wake в регистре UART_CR1 установлен), состояние бита RWU не может быть изменено про- граммно пока бит RXNE в регистре UARTSR установлен О — активный режим приемника; 1 — режим «сна» приемника. Bit О SBK (Send break) Этот бит используется для отправки прерывающего символа. Он может быть установлен и очищен программно. Он устанавливается программно, и может быть сброшен аппаратно при передаче разрывающего связь стоп- бита. Control register3 (UART CR3).
Глава 14. Модуль UART 153 Таблица 14.8. Описание регистра UART_CR3. 7 6 5 4 3 2 1 0 He исп. LINEN STOP1 STOPO CLKEN CPOL СРНА LBCL чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bit 7 Не используется. Зарезервирован, не используется. Bit 6 LINEN (LIN mode enable) Включение режима LIN (0 — выключен, 1 — включен). Этот бит устанавли- вается и сбрасывается программно. Bits 5:4 STOP (STOP bits) Эти два бита определяют количество стоп-битов в формате переваемого/ принимаемого сообщения. 00 — 1 стоп-бит; 01 — не используется (комбинация зарезервирована); 10 — 2 стоп-бита; 11 — 1.5 стоп-бита. Примечание: для режима подчиненного LIN эти биты должны иметь значе- ния 00. Bit 3 CLKEN (Clock enable) Этот бит разрешает работу вывода CLK для вывода тактового сигнала при передачи в синхронном режиме (0 — вывод CLK отключен, 1 — вывод CLK подключен). Примечание: этот бит не доступен в модулях типа UART3. Bit 2 CPOL (Clock polarity) Этот бит позволяет выбрать полярность тактового сигнала на выводе CLK. Этот бит, совместно с битом СРНА задает необходимую связь между параме- трами тактового сигнала и принимаемых/передаваемых данных. 0 — значение сигнала на выводе CLK в режиме ожидания равно 0; 1 — значение сигнала на выводе CLK в режиме ожидания равно 1. Примечание: этот бит не доступен в модулях типа UART3 Bit 1 СРНА (Clock phase) Этот бит позволяет выбрать фазу тактового сигнала на выводе CLK. Такто- вый сигнал состоит из двух перепадов логических уровней (начальное значе- ние задается битом CPOL). 0 — выборка (передача ) бита данных производится при первом перепаде логических уровней; 1 — выборка (передача ) бита данных производится при втором перепаде логических уровней. Примечание: этот бит не доступен в модулях типа UART3 Bit 0 LBCL (Last bit clock pulse)
154 Глава 14. Модуль UART Этот бит позволяет пользователю выбирать, должен ли тактовый импульс, определяющий последний бит передаваемых/принимаемых данных быть вы- веденным на вывод CLK. Последним битом в данном случае считается 8-ой или 9-ый бит данных (в зависимости от формата кадра передаг-смого или принимаемого сообщения). Примечание: этот бит не доступен в модулях типа UART3 Биты CPOL, СРНА, LBCL не должны устанавливаться или сбрасываться когда передатчик модуля UART включен. Control register 4 (UARTCR4). Таблица 14.9. Описание регистра UART_CR4. 7 6 5 4 3 2 1 0 Не исп. LBDIEN LBDL LBDF ADD3 ADD2 ADD1 ADD0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bit 7 (Не используется) Не используется. Bit 6 LBDIEN (LIN Break Detection Interrupt Enable) Этот бит определяет разрешение прерывания по обнаружению обрыва (в режиме LIN). О — прерывание по обнаружению обрыва в режиме LIN отключено; 1 — прерывание по обнаружению обрыва в режиме LIN включено. Bit 5 LBDL (LIN Break Detection Length) Этот бит позволяет выбрать между обнаружением обрыва на 10 или на 11 бите. О — обнаружение обрыва на 10 бите; 1 — обнаружение обрыва на 11 бите. Bit 4 LBDF (LIN Break Detection Flag) Этот бит показывает состояние (наличие обрыва). Устанавливается аппа- ратно и сбрасывается программно записью нуля. При установленных битах LBDF и LBDIEN, вызывает запрос на прерывание. Bits 3:0 ADD (Address of the UART node) Эти биты определяют номер узла UART (адрес данного модуля UART). Эти биты используются при многопроцессорной связи в энергосберегаю- щем режиме для пробуждения при обнаружении адресной метки. Control register 5 (UART CR5). Таблица 14.10. Описание регистра UART_CR5. 7 6 5 4 3 2 1 0 Не исп. SCEN NACK HDSEL IRLP IREN Не исп. чт чт чт/зп чт/зп чт/зп чт/зп
Глава 14. Модуль UART 155 Bits 7:6 Эти биты зарезервированы (не используются). Bit 5 SCEN (Smartcard mode enable) Этот бит включает режим smartcard. О — режим smartcard отключен; 1 — режим smartcard включен. Примечание: этот бит не доступен в модулях типа UART3. Bit 4 NACK (Smartcard NACK enable) Включение отрицательных квитанций О — отрицательная квитанция в случае если произошла ошибка четности отключена; 1 — отрицательная квитанция в случае если произошла ошибка четности включена. Примечание: этот бит не доступен в модулях типа UART3. Bit 3 HDSEL (Half-Duplex Selection) Этот бит включает однопроводный полудуплексный режим работы модуля UART. О — полудуплексный режим работы отключен; 1 — полудуплексный режим работы включен. Примечание: этот бит не доступен в модулях типа UART2 и UART3. Bit 2 IRLP (IrDA Low Power) Этот бит предназначен для выбора между нормальным и низкопотребляю- щим режимом в режиме IrDA. О — нормальный режим; 1 — низкопотребляющий режим. Примечание: этот бит не доступен в модулях типа UART3. Bit 1 IREN (IrDA mode Enable) Этот бит разрешает работу модуля UART в режиме IrDA. О — режим IrDA отключен; 1 — режим IrDA включен; Примечание: этот бит не доступен в модулях типа UART3. Bit 0 зарезервирован, не используется. Control register 6 (UART CR6) Таблица 14.11. Описание регистра UART_CR6. 7 6 5 4 3 2 1 0 LDUM He исп. LSLV LASE He исп. LHDIEN LHDF LSF чт/зп чт/зп чт/зп чт/зп чт/зпО чт/зпО Bit 7 LDUM (LIN Divider Update Method)
156 Глава 14. Модуль UART Этот бит определяет способ обновления делителя LIN. Этот бит програм- мируется совместно с байтами BRR1 и BRR2. О — делитель LIN обновляется когда записывается значение в регистр BRR1; 1 — делитель LIN обновляется при следующим (после записи значения BRR1) принятом символе. Bit 6 зарезервирован, не используется. Bit 5 LSLV (LIN Slave Enable) Этот бит определяет включение режима подчиненного в режиме LIN О — режим LIN Master; 1 — режим LIN Slave. Bit 4 LASE (LIN automatic resynchronisation enable) Этот бит разрешает автоматическую пересинхронизацию (0 — выключено, 1 — включено). Bit 3 Не используется Зарезервирован, не используется. Bit 2 LHDIEN (LIN Header Detection Interrupt Enable). Этот бит разрешает прерывание по обнаружению заголовка. О — Прерывание по обнаружению заголовка LIN запрещено; 1 — Прерывание по обнаружению заголовка LIN разрешено. Bit 1LHDF (LIN Header Detection Flag). Этот бит устанавливается аппаратно когда обнаружен заголовок в режиме подчиненного L1N и очищается программно записью нуля. Если установлен бит LHDIEN, формируется запрос на прерывание. BitsOLSF(LlN Sync Field) Этот бит показывает что поле синхронизации L1N анализируется. Он ис- пользуется только в режиме подчиненного. В режиме автоматической пере- синхронизации (установлен бит LASE), модуль UART ожидает поля синхро- низации а затем считает падающие фронты на линии RDI. Он будет установлен аппаратно как только будет определено состояние LIN Break и очищеается аппаратно когда анализ поля синхронизации LIN завер- шен. Этот бит также может быть очищен программно записью 0. 0: Текущий символ не является полем синхронизации LIN; 1: состояние поля синхронизации L1N анализируется. Guard time register (UARTGTR). Таблица 14.12. Описание регистра UART_GTR. 7 6 5 4 3 2 1 0 GT7 GT6 GT5 GT4 GT3 GT2 GT1 GT0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bits 7:0GT[7:0]: Guard time value.
Глава 14. Модуль UART 157 Этот регистр задает величину защитного интервала времени (в количестве тактов Fmaster) в режиме smartcard. Он задерживает установку флага ТС в ре- гистре UARTSR. Примечание: Эти биты не доступны для UART3. Prescaler register (UART PSCR). Таблица 14.13. Описание регистра UART_PSCR. 7 6 5 4 3 2 1 0 PSC7 PSC6 PSC5 PSC4 PSC3 PSC2 PSC1 PSCO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bits 7:0 PSQ7:0](Prescaler value) В режиме IrDA Low Power: PSC|7:0] = IrDA Low Power Baud Rate Эти биты задают деление системной тактовой частоты для достижения ми- нимальной потребляемой мощности. Тактовые сигналы делятся на значение записанное в этом регистре (8 зна- чащих бит): 0000 0000: зарезервированно, это значение не используется. 0000 0001: делит системную частоту на 1; 0000 0010: делит исходные часы на 2; И т. д. — в режиме smartcard PSC[4:0] (Prescaler value) Эти биты в режиме smartcard задают коэффициент деления системной ча- стоты для генерации тактовых импульсов. Примечание: биты 5,6,7 не используются 0 0000: значение зарезервировано — не используется 0 0001: деление системной частоты на 2; 0 0010: деление системной частоты на 4; 0 0011: деление системной частоты на 6; И т. д. Примечание: эти биты не доступны в модулях типа UART3.
Г лава 1 5 Интерфейс ПС Интерфейс ПС (между интегральными схемами) предназначен для взаимо- действия между микроконтроллером и внешними устройствами по интерфей- су ПС. Он обеспечивает совместимость с много-мастерным режимом, и спо- собен выдавать все определенные спецификацией шины ПС последователь- ности, такие как протокол, процедуры арбитража и временные интервалы. Он поддерживает стандартную и повышенную скорость. Основные особенности: — совместимость с многими мастерами: некоторые интерфейсы могут ра- ботать в режиме мастер или слейв; — возможности в режиме мастер: • генерация тактовых сигналов: • генерация условий «старт» и «стоп»; — возможности в режиме слейв: • определение запрограммированного адреса на шине ПС; • генерация бита «стоп» — генерация и определение 7-ми или 10-битных адресов и поддержка обще- го вызова; — поддержка различных скоростей связи: • стандартная (до ЮОКгц) • повышенная (до 400 КГц) — флаги состояния: • флаг режима приемника/передатчика; • флаг передачи конца байта; • флаг занятости шины ПС; — флаги ошибок: — потеря арбитража для режима мастер; — определение обрыва после передачи адреса/данных; — определение неверных условий «старт» и «стоп»; — завышенная/заниженная длительность тактового сигнала если «растяже- ние» отключено; — 3 типа прерываний: • 1 прерывание связи • 1 прерывание по выделению ошибки • 1 прерывание для вывода из режима Halt — совместимость с системой Wakeup: • микроконтроллер просыпается из низкопотребляющего режима при определении своего адреса в режиме слейв — возможность растягивания тактовых сигналов
Глава 15. Интерфейс ПС 159 Режимы работы интерфейса: — передатчик в режиме слейв; — приемник в режиме слейв; — передатчик в режиме мастер; — приемник в режиме мастер. По умолчанию, интерфейс работает в режиме подчиненного. Интерфейс автоматически переключается из режима слейв в режим мастер, после генера- ции условия старт и из мастера в слейв, если потерян арбитраж или сгенери- ровано событие стоп. Диаграмма связи. В режиме мастер, интерфейс ПС инициирует передачу данных и формирует тактовый сигнал. Последовательная передача данных всегда начинается с со- бытия старт и заканчивается событием стоп. Оба события — и старт, и стоп, генерируется мастером программно. В режим подчиненного, интерфейс поддерживает 7-ми и 10-ти разрядные режимы адресации, а также общий вызов. Определение адреса общего вызова, может быть включено и отключено программно. Данные и адрес передаются как 8-ми битные байты, старшим битом вперед. Первый байт (байты) следующие за условием старт содержат адрес (один для 7-битного режима адресации, два — для 10-ти битного). Адрес всегда переда- ется мастером. В течении девятого тактового сигнала приемник должен пере- дать сигнал подтверждения приема символа. Подробнее — на рисунке ниже: START CONDITION STOP CONDITION Рисунок 15.1. Временные диаграммы работы интерфейса ПС. Генерация сигналов подтверждения может быть включена или отключена программно. Режимы адресации (7 бит, 10 бит или общий вызов) также могут быть выбраны программно.
160 Глава 15. Интерфейс НС Рисунок 15.2. Функциональная схема интерфейса ПС. Описание функционирования интерфейса Работа ПС в режиме слейв. Частота тактирования модуля ПС может быть настроена регистром 12С_ FREQR для генерации корректных временных интервалов. Частота тактиро- вания должна быть: не более 1 МГц для стандартного режима и 4 мгц для бы- строго режима. Как только будет принято условие «старт», адрес будет принят с шины дан- ных и передан в регистр сдвига, где, по окончании передачи будет сравнен с адресом устройства (байты OAR1L и OAR2 если бит ENDUAL = 1) или с адре- сом общего вызова (если ENGC = 1). Примечание: в 10-ти разрядном режиме адресации, сравнение будет вклю- чать в себя заголовочную последовательность (111 ЮххО), где хх означают два старших значащих бита адреса. Если принятый байт не совпадает с адресом, то интерфейс его игнорирует и ждет следующего условия старт. Если принятый байт совпадает с заголовком (только в 10-ти разрядном ре- жиме адресации), то интерфейс сгенерирует импульс подтверждения если бит АСК установлен и будет ждать оставшиеся 8 бит адреса слейва. Если принятый байт совпадает с адресом, то интерфейс генерирует следую- щую последовательность:
Глава 15. Интерфейс ПС 161 — импульс подтверждения если бит АСК установлен. — устанавливает бит ADDR аппаратно и генерирует прерывание если бит ITEVTEN установлен. В 10-ти разрядном режиме адресации, после приема последовательности адреса, слейв всегда находится в режиме приемник. Он может быть введен в режим передатчик при приеме повторного условия старт следующей за заго- ловком последовательности с достижением бита адреса и установкой младше- го значащего разряда (11110хх1). Бит TRA показывает, является ли слейв приемником или передатчиком. Режим передатчика слейва. Следующее за приемом адреса и после очистки ADDR, слейв передает бай- ты из регистра DR на линию SDA с помощью встроенного регистра сдвига. Слейв будет удерживать SCL на низком уровне до тех пор, пока ADDR не будет очищен и содержимое регистра DR с данными будет передан (см. собы- тия EV1 и EV3 на нижеследующем рисунке). Когда импульс подтверждения будет принят, будет аппаратно установлен бит ТХЕ с вызовом прерывания (если биты ITEVTEN и ITBUFEN будут уста- новлены). Если бит ТХЕ установлен и данные для передачи не записаны в регистры DR до окончания следующей передачи данных, бит BTF будет установлен и интерфейс будет ждать до тех пор, пока BTF не будет сброшен чтением реги- стра SR1 и когда будут записан регистр DR, удерживая линию тактирования на низком уровне. W JL 7-bit slave transmitter S Address A EV3-1 Datal A Data2 A EV3 EV3 EV3 DataN NA Р EV3-2 10-bit slave transmitter S Header A Address A EV1 Header A Sr EV1 EV3 1 Datal A EV3 I DataN NA Р EV3 EV3-2 Рисунок 15.3. Рэботэ интерфейсе ПС в режиме подчиненного передэтчикэ На рисунке: S= условие «старт». Sr = условие «повторный старт». Р= Стоп. А= подтверждение. NA= неподтвеждение.
162 Глава 15. Интерфейс ПС EVx = событие (с вызовом прерывания, если бит ITEVTEN=1). EVI: устанавливается бит ADDR = 1, может быть очищен чтением регистра SR1, следующим за чтением SR3. EV3-1: ТХЕ=1, регистр сдвига пуст, регистр данных пуст, данные Datal за- писываются в DR. EV3: ТХЕ=1, регистры сдвига не пуст, регистр данных пуст, очищается за- писью значения в DR. EV3-2: AF=1, AF очищается записью ‘0’ в бит AF регистра SR2. Примечание: 1. События EV1 и EV3-1 будут удерживать сигнал на SCL до тех пор, пока не будет выполнены соответствующие действия. 2. Событие EV3 должно быть завершено до окончания передачи текущего байта данных. Если этого невозможно выполнить, то рекомендуется пользоваться битом BTF вместо ТХЕ. Режим приемника слейва Следующее за приемом адреса и после очистки ADDR, слейв принимает байты из линии SDA в регистр данных через регистр сдвига. После приема каждого байта блок интерфейса ПС генерирует следующую последователь- ность: — импульс подтвеждения если бит АСК установлен; — аппаратная установка бит RXNE и генерация прерывания если биты ITEVTEN и 1TBUFEN установлены. Если RXNE установлен и данные в регистре DR не прочтены перед прие- мом следующего принятого байта данных, бит BTF будет установлен и интер- фейс будет ждать до тех пор пока бит BTF не будет очищен (чтением регистра SR1 и последующим чтением регистр данных, линия SCL удерживается в низ- ком уровне). 7-bit slave receiver S Address А Datal А Data2 А EV1 EV2 EV2 DataN А Р EV2 EV4 10-bit slave receiver S Header А Address А Datal А EV1 EV2 DataN А Р EV2 EV4 Рисунок 15.4. Работа интерфейса ПС в режиме подчиненного приемника На рисунке: S== условие «старт». Sr = условие «повторный старт».
Глава 15. Интерфейс НС 163 Р= Стоп. А= подтверждение. NA= неподтвеждение. EVx = событие (с вызовом прерывания, если бит ITEVTEN^l). EVI: ADDR = 1, очищается при чтении SR1 регистра с последующим чтени- ем SR3. EV2: RXNE=1, очищается чтением регистра DR. EV4: STOPF=1, очищается при чтении SR1 регистра и последующим чтени- ем CR2. Событие EV1 устанавливает низкий уровня на лини SCL до окончания со- ответствующей программной последовательности. Программная последовательность EV2 должна быть закончена до конца передачи ткущего байта. После контроля содержимого регистра SR1, пользо- ватель должен завершить последовательность очистки для каждого флага. Та- ким образом, для флагов ADDR и STOPF, рекомендуется следующая после- довательность для включения в обработчик прерывания ПС: READSR1 if (ADDR == 1) {READ SRI; READ SR3} if (STOPF == 1) {READ SRI; WRITE CR2} Цель этой операции состоит в том, чтобы гарантировано очистить оба флага. Закрытие связи слейвом. После последнего переданного байта данных, мастер генерирует условие стоп. Интерфейс определяет это состояние и устанавливает бит STOPF и ге- нерирует прерывание если бит ITEVTEN установлен. После этого бит STOPF должен быть очищен чтением регистра SR1, и последующей записью регистра CR2 (событие EV4). Режим мастера ПС В этом режиме, блок интерфейса ПС инициирует передачу данных, и гене- рирует тактовый сигнал. Последовательность передачи данных всегда начи- нается с условия «старт», и кончается условием «стоп». Как только выбран режим мастера, то при установке бита START, на шине ПС генерируется ус- ловие «старт». Работа мастера рекомендуется в следующей последолвательности: — настройка частоты тактирования модуля ПС изменением регистра 12С_ FREQR для генерации необходимых временных интервалов; — настройка тактирования модуля ПС (в блоке тактирования); — настройка времени нарастания; — настройка регистра I2C_CR1 для включения интерфейса ПС; — подача на шину условия «старт» установкой бита START в регистре I2CCR2; — частота входного тактового сигнала интерфейса должна быть более:
164 Глава 15. Интерфейс НС — 1 МГц для стандартного режима; — 4 МГц для быстрого режима. Условие «старт» В случае установки бита START, интерфейс сформирует на шине условие «старт» и переключится в режим мастер (установится бит MSL), когда бит BUSY будет очищен. Примечание: установка бита START во время передачи приведет к формиро- ванию на шине условия «повторный старт» до конца передачи текущего байта После передачи условия «старт»: — бит SB будет установлен аппаратно и будет сгенерирован запрос на пре- рывание если бит ITEVTEN установлен. — мастер ожидает чтения регистра SR1, с последующей записью в регистр DR адреса слейва (событие EV5). Передача адреса слейва После выставления условия «старт», на линию SDA через встроенный ре- гистр сдвига передается адрес слейва. При этом: — при 10-ти разрядном режиме адресации, передается заголовочная после- довательность в случае следующих событий; — бит ADD 10 установлен аппаратно и при установленном бите ITEVTEN генерируется запрос на прерывание. Тогда мастер ожидает чтения регистра SR1, следующего за записью в ре- гистр DR, содержащего вторую часть адреса (см. рисунок 15.5 и 15.6, EV9). Бит ADDR устанавливается аппаратно и при установленном бите ITEVTEN формирует запрос на прерывание. Тогда мастер ожидает чтения регистра SR1, следующего за чтением регистра SR3 (см. рисунок 15.5 и 15.6, EV6). — при 7-ми разрядном режиме адресации, адрес передается одним байтом. Как только адрес передан: — бит ADDR устанавливается аппаратно и при установленном бите ITEVTEN, вызывает запрос на прерывание. После этого, мастер ожидает чтения регистра SR1, следующего за чтением регистра SR3. (событие, EV6). Мастер может ввести слейв в режим приемника или передатчика в зависи- мости от младшего бита в байте адреса слейва: — в 7-ми разрядном режиме адресации: — для ввода слейва в режим передатчика, мастер передает адрес со сбро- шенным младшим битом; — для ввода слейва в режим приемника, мастер передает адрес с установ- ленным младшим битом. — в 10-ти разрядном режиме адресации: — для ввода слейв в режим передатчика, мастер передает заголовок (111 ЮххО), а затем адрес слейва со сброшенным младшим битом. После
Глава 15. Интерфейс ПС 165 этого мастер должен выдать на шину состояние «повторный старт» с по- следующим заголовком (llllOxxl), (где хх означает два старших бита адреса). Состояние бита TRA показывает, в каком режиме находится мастер (при- емник или передатчик). Режим мастера передатчик. После передачи адреса и после очистки бита ADDR, мастер передает байт из регистра DR на шину SDA через внутренний регистр сдвига. Мастер ожи- дает до тех пор, пока первый байт не будет записан в регистр DR (см. рису- нок 15.5, передающая последовательность EV8_1). Когда принят импульс подтверждения: — аппаратно устанавливается битТХЕ и при устанволенных битах TTEVTEN и 1TBUFEN вызывается запрос на прерывание; Если ТХЕ установлен и байт данных не был записан в DR до конца следую- щей передачи данных, бит BTF будет установлен и интерфейс будет ожидать (удерживая линию SCL в логическом «О»), пока бит BTF не будет очищен, путем чтения регистра SR1, а затем записи в регистр DR. Прекращение связи. После записи прошлого байта в регистр DR, бит STOP должен быть уста- новлен программно для генерации условия «Стоп». В процессе работы интер- фейс автоматически вернется в режим слейв (бит MSL будет очищен). Примечание: условие стоп должно быть программно задано в течении со- бытия EV8_2, когда один из двух (ТХЕ или BTF) бит устанавливаются. 7-bit master transmitter 10-bit master transmitter S EV5 Рисунок 15.5. Работа интерфейса ПС в режиме мастера передатчика. Header А Address А Datal А EV9 EV6 EV8_1 EV8 EV8 Описание: S= Старт. Sr = Повторный старт. Р= Стоп. А= Подтверждение. NA= Неподтверждение. EVx= Событие х (с вызовом прерывания если соответствующее прерывание разрешено).
166 Глава 15. Интерфейс ПС EV5: SB=1, очищается чтением регистра SR1 и последующей записью адре- са в регистр DR. EV6: ADDR=1, очищается чтением регистра SR1 и последующим чтением регистра SR3. EV8_ 1: ТХЕ= 1, регистр сдвига пуст, регистр данных пуст, должна быть про- ведена запись данных в регистр DR. EV8: ТХЕ= 1, регистр сдвига не пуст, регистр данных пуст, очищается запи- сью в регистр DR. EV8_2: ТХЕ=1, BTF = 1, формирование на шине состояния СТОП. ТХЕ и BTF аппаратно очищаются при формирования состояния СТОП. EV9: ADD 10=1, очищается чтением регистра SR1 и последующей записью в регистр DR. Примечание: событие EV8 программная последовательность должна быть завершена до окончания передачи текущего байта. Если это невозможно вы- полнить, необходимо использовать бит BTF вместо бита ТХЕ. Мастер в режиме приемника. После передачи адреса и после очистки бита ADDR, интерфейс I2C вводит- ся в режим мастера приемника. В этом режиме интерфейс принимает байты с линии SDA в регистр DR через внутренний регистр сдвига. После приема каждого байта, интерфейс производит следующие действия: — формирует импульс подтверждения, если бит АСК установлен; — устанавливается бит RXNE и формируется запрос на прерывание (если биты ITEVTEN и ITBUFEN установлены). Если бит RXNE установлен и байт данных в регистре DR не был прочтен перед окончанием приема следующего байта, бит BTF устанавливается аппа- ратно, и интерфейс будет ожидать сброса бита BTF чтением регистра I2C_SR1. Это время линия SCL будет принудительно удерживаться в низком уровне. Закрытие связи. Способ 1: Этот способ используется когда прерывания, генерируемые интерфейсом I2C имеют наивысший приоритет. В этом случае мастер передает состояние неподтверждение для последнего принятого от подчиненного байта. После приема неподтверждения, подчиненным передача данных прекращается. По- сле этого мастер может выставлять на шину условия старт/повторный старт. Примечания для этого способа разрыва связи: 1. Импульс неподтвеждения должен быть сформирован после последнего принятого байта данных, т.е. бит АСК должен быть очищен после чтения по- следнего байта данных (после предпоследнего события RXNE). 2. Последующие события старт/повторный старт (установка бит STOP/ START) должны быть проведены после чтения последнего принятого байта данных (после предпоследнего события RXNE).
Глава 15. Интерфейс НС 167 3. В случае если был принят один байт, подтверждение не обозначается и условие STOP генерируется после события 6 (или события 6-1, сразу после очистки бита ADDR). Рисунок 15.6. Разрыв связи в режиме мастера приемника. Описание: EV7: устанавливается флаг RxNE, очищается чтением регистра DR. EV7_l: флаг RxNE=l, очищается чтением регистра DR, далее сбрасывается бит АСК и генерируется условие СТОП. EV9: устанавливается бит ADD10, очищается чтением регистра SR1 и по- следующей записью регистра DR. Метод 2: Этот метод используется когда прерывания интерфейса I2C не имеют выс- шего приоритета относительно выполнения текущей программы или когда интерфейс I2C используется в режиме опроса флагов. При этом методе: — данные N-2 не будут прочтены, таким образом интерфейс будет «растяги- вать» обмен данными (оба бита RxNE и BTF установлены); — далее бит АСК должен быть очищен до чтения данных N-2 в регистре DR; — после этого, должно быть произведено чтение данных с последующееей программной установкой бита STOP/ START, и после установки бита RxNE, чтение байта DataN.
168 Глава 15. Интерфейс НС 10- bit master receiver DataN-2 А DataN-1 А DataN NA P EV7_2 EV7 Рисунок 15.7. Разрыв связи в режиме мастера приемника. DataN-2 A DataN-1 A DataN NA P EV7 2 EV7 Описание: EV7_2: устанавливается бит BTF, данные DataN-2 в регистре DR и DataN-1 в регистре сдвига, программно устанавливается бит АСК, и чтение данных DataN-2 в регистре DR. EV9: ADD 10=1, очищается чтением регистра SR1 и последующей записью в регистр DR. Когда до конца передачи остались 3 (N-2, N-l, N) байта, необходимо: — Когда устанавливается бит RxNE, ничего не делать (не читать данные N-2); — данные N-1 принимаются; — устанавливается BTF потому что оба регистра (и регистр сдвига и регистр данных) содержат данные: байт N-2 в регистре данных и байт N-1 в сдви- говом регистре. При этом на линии SCL устанавливается низкий уровень, что блокирует прием данных; — очищается бит АСК; — читаются данные N-2 в регистре данных, таким образом запускается при- ем байта N в регистр сдвига; — принимается байт N с выдачей сигнала неподтверждения (NACK); — программно устанавливается бит START и STOP; — читаются данные N -1; — устанавливается бит RxNE; — читаются данные N. Если количество передаваемых байт 1 или 2, должна быть проведена следу- ющая последовательность: — Для одного принимаемого байта: — после приема адреса и установки бита ADDR, очистить бит АСК; — очистить бит ADDR; — установить биты STOP и START; — чтение данных после установки бита RxNE;
Глава 15. Интерфейс ПС 169 —для приема двух байтов; — установить биты POS и АСК; — ожидать установку флага ADDR; — очистить бит АСК; — ож^ать установки бита BTF; — установить бит STOP; — прочесть регистр данных дважды. Регистры интерфейса ПС Регистр Control register 1 (I2C_CR1). Таблица 15.1. Описание регистра I2C_CR1. NOSTRETCH ENGC He используется PE чт/зп чт/зп чт/зп 7 6 5 4 3 2 1 0 Бит 7 NOSTRETCH: Clock stretching disable (Slave mode) Этим битом запрещается «Растягивание» тактового сигнала в режиме слейв когда флаги ADDR или BTF установлены, до тех пор пока они не будут сбро- шены программно. 0: растягивание тактового сигнала включено; 1: растягивание тактового сигнала отключено. Бит 6 ENGC: General call enable 0: Основной вызов отключен. При приеме адреса 0x00 выдается сигнал не- подтвеждения NACK; 1: Основной вызов разершен. При приеме дреса 0x00 выдается сигнал под- тверждения АСК. Биты 5:1 Не используются Бит 0 РЕ: разрешение работы периферийного узла. 0: Периферия отключена; 1: Периферия включена: соответствующий вывод микроконтроллера вы- бран как исполнитель альтернативной функции. Примечание: Если этот бит был сброшен в процессе связи, периферия бу- дет отключена при завершении текущей связи, с переходом обратно в состоя- ние IDLE. При установке РЕ = 0, все биты будут сброшены при завершении текущей связи. Control register 2 (I2C_CR2).
170 Глава 15. Интерфейс ПС Таблица 15.2. Описание регистра I2C_CR2. SWRST Не используется POS АСК STOP START чт/зп чт/зп чт/зп чт/зп чт/зп 7 6 5 4 3 2 1 0 Бит 7 SWRST: Software reset Когда этот бит установлен, I2C находится в состоянии сброса. Перед сбро- сом этого бита, убедитесь что линии 12с освобождены и шина свободна. 0: периферия I2C не в состоянии сброса 1: периферия I2C в состоянии сброса. Примечание: этот бит не может использоваться в случае когда бит BUSY установлен, когда состояние стоп не было не было определено на шине. Биты 6-4 Не используется Бит 3 POS: Acknowledge position. Этот бит устанавливается и сбрасывается программно, но может быть еро- шен и аппаратно когда РЕ был сброшен. 0: бит АСК, управляемый содержимым бита (N)ACK текущего байта будет принят в регистр сдвига. 1: бит АСК, управляемый содержимым бита (N)ACK следующего байта бу- дет принят в регистр сдвига. Примечание: Бит POS используется при приеме двух байт. Его состояния должно быть настроено до начала приема данных. В этом случае, NACK в конце второго байта дожжен быть очищен как раз после очистки ADDR. Бит 2 АСК: Acknowledge enable Этот бит устанавливается или очищается программно, но может быть очи- щен аппаратно при РЕ = 0. 0: Бит подтверждения не опрашивается; 1: бит подтверждения опрашивается после того как байт был принят (До- стигнут ли адрес или данные). Бит 1 STOP: Stop generation Этот бит устанавливается и сбрасывается программно, либо, может быть очищен аппаратно при определения состояния СТОП, и устанавливается ап- паратно когда будет обнаружен «Выход времени». В режиме мастер: 0: условие СТОП не генерируется; 1: условие стоп генерируется после передачи текущего байта или после пе- редачи текущего условия старт В режиме слейв: 0: условие СТОП не генерируется; 1: линии синхронизации и данных будут освобождены после передачи теку- щего байта.
Глава 15. Интерфейс ИС 171 Бит О START: Start generation Этот бит устанавливается и сбрасывается программно, но может быть сбро- шен и аппаратно когда передано условие старт или РЕ = 0. — в режиме мастер: 0: условие старт не генерируется; 1: генерируется повторный старт — в режиме слейв: 0: условие старт не генерируется; 1: условие старт генерируется когда шина свободна. Примечание: если биты старт и стоп установлены, пользователь не должен что-либо записывать в регистр I2C_CR2 перед тем, как эти биты будут очище- ны аппаратно. Иначе, может произойти второе условие старт или стоп. К*rpm iPITPA/ T'prricfpr T7I? рТЛ D \ a CLlWlp l iCAjLiCilvy ICgjioiCi \ 1Z.V i AvlLy^ivy. Таблица 15.3. Описание регистра I2CFREQR. 7 6 5 4 3 2 1 0 Не исп. FREQ5 FREQ4 FREQ3 FREQ2 FREQ1 FREQO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Биты 7:6 Не используется Биты 5:0 FREQ[5:0] Peripheral clock frequency. Частота тактирования модуля должна быть определена для правильного формирования временных интервалов. 000000: значение не поддерживается; 000001: 1 MHz; 000010:2 MHz; 011000: 24 MHz; Иные значения также не поддерживаются.
Глава 16 Аналого-цифровой преобразователь stm8 АПП типа ADC1 и ADC2 это 10-ти оазоялные АПП последовательного пои- _ 1 _ _ _ _ . - - 1 1 Г 1 л ' 1 Л ближения. Они имеют 16 управляемых входных каналов (номер каждого ка- нала показан в даташите на соответствующий контроллер). Аналого-цифро- вое преобразование от различных каналов может быть выполнено как в оди- ночном, так и в продолженном режимах. АЦП типа ADC1 имеет расширенные особенности в части режимов скани- рования, буферизованного продолженного режима и аналогового сторожа Основные особенности АЦП: — доступные как в ADC1, так и в ADC2: — 10-рязрядное разрешение; — одиночный и продолженный режимы аналого-цифрового преобразова- ния; — программируемый предделитель Fmaster с коэффициентом от 2 до 18; — возможность запуска от внешнего сигнала — внешним прерыванием (ADC_ETR) или от триггера таймера (TRGO); — аналоговое усиление (с МК с выводом VREF); — запрос на прерывание по завершению преобразования АЦП; — выравнивание данных «вправо» и «влево»; — диапазон входных сигналов V1N от VSSA до VDDA. — доступные только в АЦП типа ADC1: — буферизованный продолженный режим преобразования (в разных мо- делях может иметь размер 8*10 бит или 10*10 бит); — режим сканирования для одиночных и продолженных преобразова- ний. — аналоговый сторож со срабатыванием по превышению и понижению на- пряжений относительно пороговых значений; — генерация прерывания по срабатыванию аналогового сторожа.
Глава 16. Аналого-цифровой преобразователь stm8 173 Структурная схема модуля АЦП Internal TRGO trigger from TIM1 Рисунок 16.8. Структурная схема АЦП типа ADC1 Internal TRGO trigger from TIM1 Рисунок 16.9. Структурная схема АЦП типа ADC2.
174 Глава 16. Аналого-цифровой преобразователь stm8 Таблица 16.4. Назначение внешних выводов АЦП Название Тип сигнала Описание VDDA Вход, источник питания АЦП Источник питания аналоговой части микроконтроллера. Этот вход подключен к выводу VDD в МК, в которых отсутствует вывод VDDA VSSA Вход, земля аналогового источника питания Земля для источника питания аналоговой части МК. Этот вход подключен к выводу VSS в МК, в которых отсутствует выводе VSSA. VREF- Вход, отрицательное аналоговое опорное напряжение Низкое либо отрицательное опорное напряжение для АЦП, имеющее диапазон от VSSA до VSSA + 500 мВ. Этот вход подключен к выводу VSSA в МК, в которых отстствует вывод VREF — (корпуса с 48 выводами или менее). VREF+ Вход, положительное аналоговое входное напряжение Высокое либо положительное опорное напряжение для АЦП, имеющее диапазон от 2,75 В до VDDA. Этот вход подключен к входу VDDA в устройствах не имеющих вывода VREF+ (корпуса с 48 выводами или менее). AIN[15:0] Вход аналогового сигнала До 16 входлов аналоговых каналов, на которых может проходить аналого-цифровое преобразование. ADC.ETR Вход цифрового сигнала запуска АЦП Сигнал внешнего триггера запуска преобразования АЦП Описание работы АЦП Включение — выключение АЦП АЦП включается установкой бита ADON в регистре ADC_CR1. Когда бит ADON установлен впервые, он пробуждает АЦП из режима «power down». Второй командой установки бита ADON запускается преобразование АЦП Для начала преобразования, установите бит ADON. По окончании преобразования, АЦП остается включенным и Вы можете начать преобразование АЦП повторной установкой бита ADON. Если АЦП не используется долгое время, производителем рекомендуется его выключение сбросом бита ADON. Когда АЦП включен, цифровые входы и выходы выбранного канала отклю- чены, независимо от настроек порта ввода-вывода. Рекомендуется выбрать аналоговый вход до включения АЦП.
Глава 16. Аналого-цифровой преобразователь stm8 175 Тактирование АЦП Источником тактирования для АЦП является частота Fmaster, но она мо- жет быть поделена при установке либо сбросе битов SPSEL[2:0] в регистре ADCCR1. Выбор каналов Производится выбором битов СН[0:3] в регистре ADCSR. Количество внешних каналов зависит от вашего МК. Если выбранный канал был изменен во время преобразования, то оно будет сброшено, и будет аппаратно сформирован импульс на запуск следующего АЦП с обновленными настройками канала. Режимы преобразования В АЦП существуют 5 режимов преобразования: — одиночный режим; — продолженный; — буферированный продолженный режим; — режим одиночного сканирования; — режим продолженного сканирования. Примечание: Вход AIN12 в АЦП типа ADC1 не может быть выбран в режиме сканирова- ния с аналоговым компаратором. Результат преобразования по входу AIN12 будет сохранен только в регистрах ADCDRH/ADCDRL. Рассмотрим эти режимы подробнее: Одиночный режим: Этот режим запускается установкой бита ADON в регистре ADC_CR1 при сброшенном бите CONT. По завершению преобразования, его результат сохраняется в регистре ADC_DR, устанавливается флаг ЕОС (окончание преобразования), и если установлен бит EOCIE, вызывается запрос на прерывание. Продолженный и буферизованный продолженный режимы. В этих режимах АЦП начинает преобразование, как только закончено пре- дыдущее. Этот режим включается установкой бита ADON при установленном бите CONT.
176 Глава 16. Аналого-цифровой преобразователь stm8 Если буферизация не включена (бит DBUF = 0 в регистре ADCCR3), ре- зультат преобразования сохраняется в регистре ADC_DR и устанавливается флаг ЕОС. Если установлен бит EOCIE, то формируется запрос на прерыва- ние. Новое преобразование начинается автоматически. Если включена буферизация (бит DBUF = 1 в регистре ADC_CR3). Когда буфер заполнен, будет установлен флаг ЕОС, и если установлен бит EOCIE, будет сформирован запрос на прерывание. Новые 8 или 10 последовательных преобразований будут запущены автоматически. Флаг OVR будет установлен если один из регистров буфера данных был переписан перед чтением. Для остановки продолженных режимов необходимо сбросит бит CONT или бит ADON для отключения АЦП. Режим единичного сканирования. Этот режим используется для последовательного преобразования аналого- вых каналов AINO — AINn где п это номер канала, определяемый битами CH [3:0J в регистре ADC_CSR. В течении последовательности сканирования аппаратно обновляется номер канала, и регистры СН[3:0] постоянно содер- жат номер текущего канала для сканирования. Режим одиночного сканирования включается установкой бита ADON при установленном бите SCAN и очищенном бите CONT. Одиночное сканирование будет проведено для каждого канала начиная с AIN0 и данные будут сохранены в буферных регистрах ADC_DBxR. Когда предыдущий канал (канал «п») пройдет преобразование, будет установлен флаг ЕОС и при установленном бите EOCIE будет сформирован запрос на прерывание. Результаты преобразования для каждого канала может быть прочтено из ре- гистров буфера данных. Флаг OVR устанавливается если один из регистров буфера данных был переписан до того, как был прочтен. Не очищайте бит SCAN до того, как будет завершена последовательность преобразования. Режим одиночного сканирования может быть немедленно остановлен очисткой бита ADON. Для запуска нового преобразования, необходимо очистить бит ЕОС и уста- новить бит ADON в регистре ADC CR1. Режим продолженного сканирования. Этот режим аналогичен режиму единичного сканирования, с той разницей, что новое сканирование начинается автоматически после завершения преды- дущего. Флаг OVR устанавливается, если один из регистров буфера данных был переписан до того, как был прочтен. Режим продолженного сканирования может быть начат установкой бита ADON при установленных битах SCAN и CONT. Примечание: Не очищайте бит SCAN до завершения преобразования.
Глава 16. Аналого-цифровой преобразователь stm8 177 Режим продолженного сканирования может быть остановлен немедленно очисткой бита ADON. В качестве альтернативы, остановка этого режима воз- можна очисткой бита CONT во время работы, преобразование будет останов- лено на текущем канале. Внимание: в режиме сканирования, не используйте операции управления битами (BRES) для очистки флага ЕОС. Это приведет к операции «чтение- модификация-запись» над содержимым регистра ADC_CSR, будет произве- дено чтение текущего номера канала и запись его обратно, что может приве- сти к записи неверного номера канала для сканирующей последовательности. Флаг перезаписи. Флаг перезаписи (OVR) устанавливается аппаратно в буферизованном про- долженном режиме, режиме единичного сканирования или режиме продол- женного сканирования. Он обозначает что один из 10-ти регистров буфера данных был переписан результатом нового преобразования до того как было прочтен результат предыдущего. В этом случае рекомендуется начать новое преобразование. Примечание: установка бита ADON автоматически очищает флаг OVR. Преобразование по внешнему запуску. Преобразование может быть запущено по восходящему фронту на выводе ADC_ETR или событии TRGO от таймера. Если управляющий бит EXTTRIG установлен то любое из внешних событий может быть использовано для за- пуска преобразования. Биты EXTSEL используются для выбора двух возмож- ных источников которые могут запустить преобазование. Для использования режима внешнего запуска необходимо выполнить: — отключение АЦП (биты ADON и ЕОС очищены); — выбрать источник сигнала запуска битами EXTSEL[1:O]; — установить режим внешнего запуска EXTTRIG = 1 используя команду BSET для неизменения других битов в регистре; — если источник запуска перейдет в состояние логической единицы, это за- пустит преобразование АЦП. По этой причине необходимо убедиться что АЦП выключен (бит ADON сброшен), а затем включить АЦП (устано- вить бит ADON); — ожидать период стабилизации (tSTAB). В случае срабатывания внешне- го триггера до истечения tSTAB, результат преобразования будет неточ- ным; — преобразование начнется, когда произойдет событие внешнего триггера; Если у таймера включен режим триггера (событие таймера как источник за- пуска, не внешний вывод), рекомендуется запустить таймер до начало преоб- разования и выключить таймер до выключения АЦП; Режим внешнего триггера должен быть отключен (EXTTRIG=0) перед вы- полнением команды HALT;
178 Глава 16. Аналого-цифровой преобразователь stm8 Аналоговый усилитель Аналоговый усилитель присутствует в устройствах с выводом внешнего опорного напряжения (VREF+ и VREF-). При этом изменением опорного на- пряжения возможно увеличение разрешения АЦП в определенном диапазоне напряжений. Временные диаграммы Как показано на рисунке ниже, после включения АЦП, АЦП нуждается в tSTAB перед началом преобразования. Для последующих преобразований стабилизации не требуется. Время преобразования АЦП длится 14 тактов. После преобразования, флаг ЕОС устанавливается и 10-ти разрядный резуль- тат преобразования записывается в регистр данных. fADC Software sets ADON bit 1 st time । । ^oftware sets ADON bit 2rid time ADON ADC ЕОС ADC Conversion —I I tSTAB । Conversion Time (tCONV)1 bl (С- —i — 1 1 7 T » 1 . — -J 1 • ! 1 Software resets ЕОС bit Рисунок 16.10 Диаграммы работы АЦП при единичном преобразовании. fADCj Software se ADON ADC , . rr , , I 1 its ADON bit 1st time । i . । Software sets ADO^J bit 2nd time > 1: 1 1 Software resets ADON or CON l Tbit I I 1 1 1 1 1 1 1 I I 1 1 1 st Conversion 2nd Conversion (( nth ADC Conversion EOC tSTAB ' tCONV ....... Ы. tCONV 1 1 1 1 1 I 1 Softw 1 are resets EOC ; 1 bit Рисунок 16.11 Временные диаграммы АЦП в продолженном режиме
Глава 16. Аналого-цифровой преобразователь stm8 179 Таблица 16.5. Режимы энергосбережения АЦП. Режим Описание Wait Не оказывает действия на АЦП Halt/ Active- halt В устройствах с расширенными возможностями, АЦП автоматически выключается перед входом в режимы Halt/Active-halt. После пробуждения из режима Active-halt, бит ADON должен быть установлен программно для включения и должна быть выдержана пауза в размере 7 мкс необходимо до начала нового преобразования. Примечание: АЦП не включается автоматически при пробуждении из этих режимов.
Прерывания АЦП Таблица 1б.б. Прерывания АЦП в режиме одиночного преобразования и небуферизованном продолженном режиме (ADC1 и ADC2). Разрешающие биты Флаги состояния Выход из режима Wait Выход из режима Halt AWDENx AWDIE EOCIE AWSx AWDG ЕОС Не оказыва- ет действия 0 0 Не оказывает действия Флаг устанавливается, если канал пересекает пороговое значение Флаг устанавливает- ся в конце каждого преобразования Нет Нет 0 1 Флаг устанавливается, если канал пересекает пороговое значение Флаг устанавливает- ся в конце каждого преобразования и генерируется запрос на прерывание Да Нет 1 0 Флаг устанавливается, если канал пересекает пороговое значение, генерируется прерывание, но преобразо- вание АЦП не останавлива- ется. Флаг устанавливает- ся в конце каждого преобразования Да Нет 1 1 Флаг устанавливается, если канал пересекает порог, генерируется прерывание, но преобразование АЦП не останавливается Флаг устанавливает- ся в конце каждого преобразования и генерируется запрос на прерывание Да Нет 180 Глава 16. Аналого-цифровой преобразователь stm8
Таблица 16.7. Прерывания АЦП в буферизованном продолженном режиме (ADC1). Управляющие биты Флаги состояния Выход из режима Wait Выход из режима Halt AWENx AWDIE EOCIE AWSx AWD ЕОС 0 Не оказывает действия 0 0 0 Флаг устанавливается при завершении преобразования (заполнении буферных регистров) Нет Нет 0 Не оказывает действия 1 0 0 Флаг устанавливается при завершении преобразования (заполнении буферных регистров) и вызывается запрос на прерывание Да Нет 1 0 0 Флаг устанавливается если содержимое буферного регистра «х» пересекло заданные пороги, заданные регистрами ADC_HTR и ADC_LTR Флаг устанавливается в конце преобразования если хотя бы один из бит AWSx установлен. Нет Нет 1 1 0 Флаг устанавливается если содержимое буферного регистра «х» пересекло заданные пороги, заданные регистрами ADC.HTR и ADC_L.TR Устанавливается флаг и формируется запрос на прерывание если хотя бы один из бит AWSx установлен. Преобразование не останавливается. Флаг устанавливается при завершении преобразования (заполнении буферных регистров) Да Нет 1 0 1 Устанавливается флаг если хотя бы один из бит AWSx установлен. Преобразование не останавливается. Флаг устанавливается при завершении преобразования и формируется запрос на прерывание Да Нет 1 1 1 Флаг устанавливается как только устанавливается хотя бы один из бит AWSx. Вызывается запрос на прерывание и продолжение преобразования заканчивается. Флаг устанавливается при завершении преобразования и формируется запрос на прерывание Да Нет Глава 16. Аналого-цифровой преобразователь stm8
Таблица 16.8. Прерывания АЦП в режиме сканирования (ADC1). Control bits Status bits Выход из режима Wait Выход из режима Halt AWENx AWDIE EOCIE AWSx AWD ЕОС 0 He оказывает действия 0 0 0 Флаг устанавливается в конце последовательно- сти сканирования Нет Нет 0 He оказывает действия 1 0 0 Флаг устанавливается в конце последовательно- сти сканирования и вызывается запрос на прерывание Да Нет 1 0 0 Флаг устанавливается если содержимое буферного регистра «х» пересекло заданные пороги, заданные регистрами ADCJ-ITR и ADC_LTR Флаг устанавливается в конце последовательности сканирования если хотя бы один из бит AWSx установлен Флаг устанавливается в конце последовательно- сти сканирования Нет Нет 1 1 0 Флаг устанавливается в конце последовательности сканирования если хотя бы один из бит AWSx установлен. Выполнение преобразование не приостанавливается. Флаг устанавливается в конце последовательно- сти сканирования Да Нет 1 0 1 Флаг устанавливается в конце последовательности сканирования если хотя бы один из бит AWSx установлен Флаг устанавливается в конце последовательно- сти сканирования и вызывается запрос на прерывание Да Нет 1 1 1 Флаг будет установлен немедленно как только будет установлен бит AWSx. Вызывается запрос на прерывание и последовательность сканирования останавливается. Флаг устанавливается в конце последовательно- сти сканирования и вызывается запрос на прерывание Да Нет 182 Глава 16. Аналого-цифровой преобразователь stm8
Глава 16. Аналого-цифровой преобразователь stm8 183 Выравнивание результатов Бит ALIGN в регистре ADC_CR2 позволяет выбирать выравнивание ре- зультата преобразования. Данные могут быть выровнены вправо или влево. Выравнивание вправо: 8 младших значащих бит записывается в регистр ADC_DL, два старших значащих бит записываются в регистр ADC_DH. В этом случае младший байт результата должен быть прочтен первым, а за ним — старший байт. В это слу- чае может быть использована команда LDW, которая обеспечит прочтение в нужном порядке. Выравнивание данных вправо: D9 D8 ADCJDRH D7 D6 D5 D4 D3 D2 D1 DO ADC_DRL Рисунок 16.12 Состояние результата при выравнивании вправо. Выравнивание влево: 8 старших разрядов записываются в регистр ADC_DH, и два младших за- писываются в ADC DL . Старший байт должен быть прочтен первым. Выравнивание разрядов влево: D9 D8 D7 D6 D5 D4 D3 D2 ADCJDRH D1 DO ADC_DRL Рисунок 16.13 Состояние результата при выравнивании влево. Чтение результатов преобразования Результат преобразования из регистров ADC_DRH и ADC_DRL должен быть прочтен в специальном порядке (см. Выравнивание результата преоб- разования). Когда ADCl DBxRH и регистры буфера данных ADCl_DBxRL прочитаны, нет никакого внутреннего механизма захвата. Поэтому, пользователь должен проверить флаг OVR в регистр ADC_CR3, прочитав регистры ADlC_DBxRL и ADCl_DBxRH. Если флаг OVR очищен, это гарантирует, что данные, на-
184 Глава 16. Аналого-цифровой преобразователь stm8 ходящиеся на данный момент в регистрах ADClDBxRH и ADICDBxRL, яв- ляются результатом одного преобразования. Другой способ гарантировать чтение результата одного и того же преобра- зования состоит в том, чтобы непрерывано считывать ADClDBxRH и ADC1 DBxRL при помощи следующей последовательности: ADC READ: LDWX,#ADC_DBORH CPWX,#ADC_DBORH JREQADCEND LDWX,#ADC_DBORH ADCEND: Регистры отключения триггера Шмидта Регистры ADC TDRH и ADC TDRL используются для отключения триг- гера шмидта, доступного на аналоговых входах AIN. Отключение триггеров Шмидта понижает энергопотребление. Аналоговый сторож Аналоговый сторож может работать в режиме одиночного преобразования, и в небуферизованном продолженном режиме. Включается установкой бита AWDEN в регистре ADC_CSR. Флаг AWD аналогового сторожа будет установлен если результат преобра- зования АЦП будет ниже нижнего порога или выше верхнего порога. Пороги задаются настройкой 10-ти разрядных регистров ADC_HTR и ADC_LTR. Прерывание может быть включено установкой бита AWDIE в регистре ADC CSR. Для режима сканирования, аналоговый сторож может быть включен на вы- бранном канале использованием битов AWENx в регистрах ADC_AWCRH и ADC_AWCRL. Состояние аналогового сторожа для каждого канала может быть прочтено в битах ASWx в регистрах ADC AWSRH и ADC AWSRL. Если устанавливается любой из флагов AWS, устанавливается флаг AWD. В зависи- мости от настроек разрешающего бита AWDIE, в конце сканирующей после- довательности может быть сформирован запрос на прерывание. В обработчи- ке прерывания должен быть очищен флаг AWS и глобальный флаг AWD в ре- гистре ADCCSR. Для буферизованного продолженного режима, аналоговый сторож может быть включен на выбранном буферном регистре, и управляется также как для режима сканирования, с различными буферными регистрами содержащими результаты преобразований по одиночному каналу.
Глава 16. Аналого-цифровой преобразователь stm8 185 Примечание: для оптимизации длительности обработчика прерывания в сканирующем или буферизованном предложенном режиме, рекомендуется использовать последний канал в преобразующей последовательности. Регистры модуля ADC ADC data buffer register х high (ADC DBxRH) Регистры буфера данных. В разных микроконтроллерах может быть от 8 до 10. Недоступны в АЦП типа ADC2. Эти биты устанавливаются и сбрасываются аппаратно и доступны только для чтения. Когда АЦП работает в буферизованном продолженном режиме или режиме сканирования, они содержат «старшую» часть результата преоб- разования. Данные могут быть выровнены влево или вправо в зависимости от бита ALIGN. Регистр ADC 1_CSR. Таблица 16.9. Описание регистра ADC_CSR. ЕОС AWD EOCIE AWDIE СНЗ СН2 СН1 СНО чт/зп rc_wO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп 7 6 5 4 3 2 1 0 Бит 7 ЕОС: End of conversion Этот бит устанавливается аппаратно при завершении преобразования. Мо- жен быть очищен программно записью «0». 0: преобразование АЦП не завершено; 1: Преобразование АЦП завершено. Бит 6 AWD: Analog Watchdog flag Флаг события аналогового сторожа 0: событий аналогового сторожа не происходило; 1: произошло событие аналогового сторожа. В буферизованном продолжен- ном или сканирующем режимах необходимо прочесть регистр ADC_AWSR для определения регистра буфера данных, с которым связано событие. При установленном бите AWD1E вызывается запрос на прерывание. Примечание: этот бит недоступен для АЦП типа ADC2. Бит 5 EOCIE: Interrupt enable for ЕОС Этот бит устанавливается и сбрасывается программно. Он разрешает вызов прерывания по завершению преобразования АЦП (установке флага ЕОС). 0: прерывание по завершению преобразования запрещено; 1: прерывание по завершению преобразования разрешено. При установ- ленном бите ЕОС формируется запрос на прерывание. Бит 4 AWDIE: Analog watchdog interrupt enable Прерывание по срабатыванию аналогового сторожа
186 Глава 16. Аналого-цифровой преобразователь stm8 0: прерывание AWD запрещено; 1: прерывание AWD разрешено. Примечание: этот бит недоступен для АЦП типа ADC2. Биты 3:0 СН[3:0|: Channel selection bits Эти биты устанавливается и сбрасывается программно. Их комбинация определяет номер канала на котором будет происходить преобразование АЦП. 0000: канал AIN0; 0001: канал AIN1; 1111: канал AIN15. Регистр ADC1CR1 (ADC configuration register 1) Таблица 16.10. Описание регистра ADC1_CR1. Не исп. SPSEL[2:0] Не исп. CONT ADON чт/зп чт/зп чт/зп чт/зп чт/зп 7 6 5 4 3 2 1 0 Бит 7 Не используется Бит зарезервирован, всегда читается как 0. Биты 6:4 SPSEL[2:0]: Prescaler selection Эти бит записываются программно для выбора коэффициента деления ча- стоты Fmaster для тактирования модуля АЦП 000: fADC = Fmaster/2; 001: fADC = Fmaster/3; 010: fADC = Fmaster/4; Oil: fADC = Fmaster/6; 100: fADC = Fmaster/8; 101: fADC = Fmaster/10; 110: fADC = Fmaster/12; 111: fADC = Fmaster/18. Примечание: рекомендуется настроить эти биты до включения АЦП. Это связано с тем, что частота тактирования может меняться во время этого из- менения. Если эти биты были изменены когда АЦП был выключен, в этом случае пользователь должен проигнорировать результат завершенного в этот момент преобразования. Биты 3:2 Не используется. Биты зарезервированы, всегда читаются как 0. Бит 1 CONT: Continuous conversion Этот бит устанавливается и сбрасывается программно. Если установлен, преобразования будут продолжаться до тех пор, пока он не будет сброшен программно.
Глава 16. Аналого-цифровой преобразователь stm8 187 0: режим одиночного преобразования; 1: режим продолженного преобразования. Бит 0 ADON: A/D Converter on/off Этот бит устанавливается и сбрасывается программно. Он может быть уста- новлен для включения АЦП и для запуска начала преобразования. Если пере- ключается из 0 в 1, то это включает АЦП. Для запуска преобразования, необ- ходимо переключить его из 1 в 1. Как только АЦП будет включен, выбранный канал будет отключен от порта ввода-вывода и подключен к АЦП. 0: отключено преобразование АЦП, либо отключение всего АЦП; 1: включение АЦП и начало преобразования. Примечание: Если какой-либо бит в этом регистре был изменен вместе с битом ADON одновременно, преобразование не будет запущено. Регистр ADC1_CR2 (ADC configuration register 2) Таблица 16.11. Описание регистра ADC_CR2. Не исп. EXTTRIG ЕХТ5ЕЦ1:0] ALIGN Не исп. SCAN Не исп. чт/зп чт/зп чт/зп чт/зп чт/зп 7 6 5 4 3 2 1 0 Бит 7 Не используется Бит зарезервирован, всегда читается как 0. Бит 6 EXTTRIG: External trigger enable Этот бит устанавливается и сбрасывается программно. Он используется для определения внешнего запуска как запуска начала преобразования АЦП. 0: преобразование по внешнему событию отключено; 1: преобразование по внешнему событию включено. Примечание: во избежание непредсказуемого запуска преобразования АЦП, необходимо использовать команду BSET для установки этого бита, это позволит не затрагивать содержимое других бит этого регистра. Биты 5:4 EXTSEL[l:0]: External event selection Эти два бита устанавливаются и сбрасываются программно. Они выбирают источник сигнала по которому будет запущено преобразование АЦП 00: событие триггера TRGO таймера TIM 1; 01: внешний сигнал на выводе ADC_ETR; 10: значение зарезервировано; 11: значение зарезервировано. Бит 3 ALIGN: Data alignment Этот бит устанавливается и сбрасывается программно. 0: выравнивание влево (8 старших бит записываются в ADC_DRH, 2 млад- ших в ADC_DRL). Порядок чтения: первым считывается старший байт, вто- рым — младший.
188 Глава 16. Аналого-цифровой преобразователь stm8 1: выравнивание вправо (8 младших бит записываются в регистр ADC_DRL, 2 младших в регистр ADC_DH). Порядок чтения: первым читается младший байт, вторым — старший. Примечание: бит ALIGN воздействует только на регистры ADC_DRH/ ADC_DRL, т.е. на буферные регистры не воздействует. Бит 2 Не используется Бит зарезервирован, всегда читается как 0. Бит 1 SCAN: Scan mode enable Этот бит устанавливается и сбрасывается программно 0: режим сканирования отключен; 1: режим сканирования включен. Примечание: этот бит не доступен в АЦП типа ADC2. Бит 0 Не используется Бит зарезервирован, всегда читается как 0. Регистр ADC1_CR3 (ADC configuration register 3) Таблица 16.12. Описание регистра ADC1_CR3. 7 б 5 4 3 2 1 0 DBUF OVR Не используется чт/зп чт/зпО Бит 7 DBUF: Data buffer enable Этот бит устанавливается и сбрасывается программно. Он используется вместе с битом CONT для включения буферизованного продолженного режи- ма (DBUF=1, CONT=1) и сохранения результатов преобразования в буфер- ных регистрах ADC DBxRH и 0: буфер данных отключен; 1: буфер данных включен. Бит 6 OVR: Overrun flag Этот бит устанавливается и сбрасывается программно. 0: отсутствие события переписывания; 1: было определено переписывание содержимого регистров буфера данных до их чтения. Биты 5:0 Биты зарезервированы, всегда читаются как 0. Регистр ADC 1_DRH (ADC data register high). Таблица 16.13. Описание регистра ADC1DRH. 7 б 5 4 3 2 1 0 DH7 DH6 DH5 DH4 DH3 DH2 DH1 DH0 чт чт чт чт чт чт чт чт
Глава 16. Аналого-цифровой преобразователь stm8 189 Регистр ADC1DRL (ADC data register low). Таблица 16.14. Описание регистра ADC1_DRL. 7 6 5 4 3 2 1 0 DL7 DL6 DL5 DL4 DL3 DL2 DL1 DL0 чт чт чт чт чт чт чт чт Регистр ADC1_TDRH (ADC Schmitt trigger disable register high). Таблица 16.15. Описание регистра ADC.TDRH. 7 6 5 4 3 2 1 0 TD15 TD14 TD13 TD12 TD11 TD10 TD9 TD8 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Регистр ADC1_TDRL (ADC Schmitt trigger disable register low). Таблица 16.16. Описание регистра ADC.TDRL. 7 6 5 4 3 2 1 0 TD7 TD6 TD5 TD4 TD3 TD2 TD1 TD0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Эти биты устанавливаются и сбрасываются программно. Когда бит TDx установлен, это отключает вход триггера шмидта входа порта и подключает соответствующий вход АЦП для выполнения преобразования. Это необходи- мо для снижения потребления порта ввода/вывода 0: триггер Шмидта включен; 1: триггер Шмидта выключен. Регистр ADC1_HTRH (ADC high threshold register high) Таблица 16.17. Описание регистра ADCI.HTRH. 7 6 5 4 3 2 1 0 НТ9 НТ6 НТ5 НТ4 НТЗ НТ2 НТ1 НТО чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Регистр ADC1_HTRL (ADC high threshold register low ) Таблица 16.18. Описание регистра ADC1_HTRL. 7 6 5 4 3 2 1 0 Не используются НТ1 НТО чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Примечание: этот регистр доступен только в АЦП типа ADC2.
190 Глава 16. Аналого-цифровой преобразователь stm8 Биты НТ[9:0] Порог высокого напряжения аналогового сторожа. Эти биты устанавлива- ются и сбрасываются программно. Регистр ADC1LTRH (ADC low threshold register high) Гаилица 16.19. Описание регистра ADC1LTRL. 7 6 5 4 3 2 1 0 LT9 LT6 LT5 LT4 LT3 LT2 LT1 LTO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Регистр ADC1LTRL (ADC low threshold register low) Таблица 16.20. Описание регистра ADC1LTRL. 7 6 5 4 3 2 1 0 Не используются LT1 LTO чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Примечание: этот регистр доступен только в АЦП типа ADC2. Порог низкого напряжения аналогового сторожа. Эти биты устанавливают- ся и сбрасываются программно. Регистр ADC1—AWSRH (ADC watchdog status register high) Таблица 16.21. Описание регистра ADC1AWSRH. 7 6 5 4 3 2 1 0 Не используются AWS9 AWS8 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Регистр ADCl—AWSRL (ADC watchdog status register low). Таблица 16.22. Описание регистра ADC1AWSRL. 7 6 5 4 3 2 1 0 AWS7 AWS6 AWS5 AWS4 AWS3 AWS2 AWS1 AWS0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Примечание: этот регистр не доступен в АЦ11 типа АиС2. Биты AWS[9:0J Эти биты устанавливаются аппаратно и сбрасываются программно. В буфе- ризованном продолженном режиме (биты DBUF и CONT установлены), флаг AWS ведет себя в соответствии с таблицей 16.7. В режиме сканирования (бит SCAN установлен), флаг AWS ведет себя в соответствии с таблицей 16.8. 0: событий аналогового сторожа в регистре буфера данных х не происходи- ло;
Глава 16. Аналого-цифровой преобразователь stm8 191 1: произошло событие атгп ютового сторожа в регистре буфера данных х. Регистр ADC1_AWCRH (ADC watchdog control register high) Таблица 16.23. Описание регистра ADC1_AWCRH. 7 6 5 4 3 2 1 0 Не используются AWEN9 AWEN8 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Регистр ADC1AWCRL (ADC watchdog control register low) Таблица 16.24. Описание регистра ADC1_AWCRL. 7 6 5 4 3 2 1 0 AWEN7 AWEN6 AWEN5 AWEN4 AWEN3 AWEN2 AWEN1 AWEN0 чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп чт/зп Bits 9:0 AWEN[9:0] Analog watchdog enable bits 7:0 Эти биты устанавливаются и очищаются программно. В буферизованном режиме (биты DBUF и CONT установлены) и в режиме сканирования (бит SCAN установлен) биты AWEN разрешают работу анало- гового сторожа для каждого из 10 буферных регистров данных. 0: аналоговый сторож для соответствующего буферного регистра данных отключен. 1: аналоговый сторож для соответствующего буферного регистра данных включен.
Г лава 17 Модуль звукового излучателя Биппер — это модуль микроконтроллера, который формирует прямоуголь- ный сигнал звуковой частоты из ряда 1, 2 или 4 КГц. Ниже представлена структурная схема модуля биппера. HSE clock (4- 24 MHz) BEEPEN Рисунок 17.1. Функциональная схема модуля звукового излучателя. Это узел, который генерирует меандр с частотой из ряда 1, 2 или 4 КГц ког- да он тактируется низкой частотой порядка 128 КГц. Описание работы биппера Для использования функции биппера, выполните следующие действия: — откалибруйте генератор низкой частоты для биппера. — выберите выходную частоту биппера из ряда 1, 2 или 4 КГц записью бит BEEPSEL в регистре BEEPCSR. — установите бит BEEPEN в регистре BEEP CSR для подключения источ- ника тактовой частоты к бипперу. Калибровка модуля ВЕЕР: Нижеследующая процедура используется для калибровки низкой частоты для достижения более высокой точности 1 КГц, 2 КГц, 4 КГц: — измерить частоту генератора LSI; — вычислить коэффициент деления тактовой частоты для работы биппера как показано ниже, где А и х соответственно целая и дробная часть от Fls/8 - в КГц: BEEPDIV = А-2 при х меньшем или равном чем А/(1+2АА), иначе принять BEEPDIV-A- 1;
Глава 17. Модуль звукового излучателя 193 — записать полученное значение BEEPdiv в биты 0..4 регистра BEEP_CSR. Модуль биппера управляется одним регистром — BEEP_CSR. Биты 6,7 — BEEPSEL — эти биты устанавливаются и сбрасываются про- граммно. Они осуществляют выбор между выходными частотами модуля бип- пера между 1,2 или 4 КГц. 00: частота на выходе равна fLS/(8 х BEEPDIV) КГц; 01: частота на выходе равна fLS/(4 х BEEPDIV) КГц; 1х: частота на выходе равна fLS/(2 х BEEPDIV) КГц. Бит 5 — BEEPEN — этот бит устанавливается и сбрасывается программно. Его установка разрешает работу модуля ВЕЕР. Биты 4, 3, 2, 1,0 — Эти биты устанавливаются и сбрасываются программно и определяют коэффициент деления BEEPdiv. 0x00: BEEPDIV =2; 0x01: BEEPDIV=3; 0х0Е: BEEPDIV = 16; 0x0F: BEEPDIV = 17; 0x1 E: BEEPD1V=32.
Глава 1 8 Электрические характеристики stm8 Микроконтроллеры семейства STM8S, в зависимости от модели, могут пи- таться до 4 отдельных источников напряжения: • VDD/VSS: Основное напряжение питания (от 3 Удо 5.5 V); • VDDIO/VSSIO: Напряжение питания портов ввода-вывода ( от 3 Удо 5.5 V); • VDDA/VSSA: напряжение питания для аналоговых узлов: • VREF+/VREF-: источник опорного напряжения для ADC. Рисунок 18.1. схема подключения микроконтроллеров STM8 Выводы yDD/VSS используются встроенным основным регулятором на- пряжения (Main Voltage Regulator (MVR)) и энергосберегающим регулятором напряжения (Low Power Voltage Regulator (LPVR)). Выводы регуляторов под- ключены и обеспечивают напряжения 1,8 В для ядра микроконтроллера (CPU, Flash and RAM). В энергосберегающих режимах возможно переключе- ния с одного регулятора на другой. Для стабильности работы внутреннего ис- точника напряжения MVR, разработчиком микроконтроллеров рекомендует- ся подключить внешний конденсатор на вывода VCAP. В зависимости от ко- личества выводов корпуса, может быть одна или две пары выводов питания для портов ввода/вывода (VDDIO/VSSIO) и для аналого-цифровых узлов микроконтроллера (VDDA/VSSA и VREF+/VREF-) Таблица 18.1. Таблица электрических характеристик. Обозна- чение Значение Мин. Макс Ед. Изм. VDD Рабочее напряжение 2.95 5.5 В VCAP Внешний конденсатор внутреннего источника напряжения 470 3300 нФ
Глава 18. Электрические характеристики stm8 195 Обозна- чение Значение Мин. Макс ЕД. Изм. VDDx- VSS Напряжение источника питания (включая VDDA и VDDIO) -0.3 6.5 В VIN Входное напряжение для входов типа «open drain» (PEI, РЕ2) VSS — 0.3 6.5 В VIN Входное напряжение на любых других выводах VSS — 0.3 VDD + 0.3 в |VDDx- VDD| Разность напряжения между различными источниками питания 50 мВ jVSSx- VSS| Разность напряжения между различными выводами заземления 50 мВ Ivdd Общий ток по линиям питания Vdd (вытекающий) 60 Ivss Общий ток по линиям питания Vss (втекающий) 60 lio Втекающий ток любого ввода-вывода или вывода управления 20 lio Вытекающий ток любого ввода-вывода или вывода управления 20 Zlio Общий ток потребления от источника (сумма токов потребления всех вводов-выводов и выводов управления) для устройств с двумя входами VDDio 200 Общий ток потребления от источника (сумма токов потребления всех вводов-выводов и выводов управления) для устройств с одним выходом VDDIO 100 Общий вытекающий ток (суммарно для всех вводов- выводов и выводов управления) для устройств с двумя выводами VSSIO 160 Общий вытекающий ток (суммарно для всех вводов- выводов и выводов управления) для устройств с двумя выводами VSSIO 80 IINJ Входной ток вывода NRST 16 24 Входной ток вывода OSCIN 16 24 ZIINJ Общий вытекающий ток (суммарно для всех вводов- выводов и выводов управления) fCPU Частота тактирования центрального процессора 0 16 МГц Pd Мощность рассеивания (для 44 и 48-ми выводных корпусов) - 443 мВ Мощность рассеивания (для 32-х выводных корпусов) - 360 T Рабочая температура (для микроконтроллеров с индексом 3) -40 85 Рабочая температура (для микроконтроллеров с индексом 6) -40 +125
Г лава 1 9 Память В составе микроконтроллеров STM8 находится память. Память располага- ется в едином адресном пространстве, в котором находятся помимо различ- ных видов памяти (RAM, Flash, EEPROM), регистры ввода-вывода (регистры периферийных модулей), биты конфигурации, область загрузчика, векторы прерываний. Таблица 19.1. Карта памяти микроконтроллеров STM8S105. Начальный адрес Конечный адрес Назначение 0x00 0000 0x00 07FF ОЗУ (с организованным в ОЗУ стеком) 0x00 07FF 0x00 4000 Не используется 0x00 4000 0x00 43FF EEPROM 0x00 4400 0x00 47FF Не используется 0x00 4800 0x00 487F Регистры конфигурации 0x00 4900 0x00 4FFF Не используется 0x00 5000 0x00 57FF Регистры периферийных устройств и портов ввода-вывода 0x00 5800 0x00 5FFF Не используются 0x00 6000 0x00 67FF Область загрузчика 0x00 6800 0x00 7EFF Не используется 0x00 7F00 0x00 7FFF Регистры центрального процессора, модуля SWIM 0x00 8000 0x00 807F Таблица векторов прерываний 0x00 8080 Начало основной программы С адреса 0x0000 по адрес 0x07FF располагается ОЗУ. В области ОЗУ образо- ван 512-байтный аппаратный стек. При отключении питания, данные, рас- положенные в ОЗУ, будут потеряны. В диапазоне адресов 0x4000 по 0x43FF расположена энергонезавимая па- мять EEPROM. Эта память является защищенной от записи. Для доступа к ней необходимо последовательности ввести ключевые числа ОхАЕ и 0x56 в ре- гистры FLASHDUKR. Для блокировки записи, необходимо сбросить бит 3 (DUL) в регистре FLASHIAPSR. По адресам с 0x4800 по 0x487F расположены байты конфигурации. Эти бай- ты определяют настройки микроконтроллера (источники тактирования, биты перенаправления альтернативных функций и т.п.). Также эти байты защище- ны от записи (для их изменения необходимо разблокировать область основной программы). Также стоит отметить что каждый из этих регистров имеет «Ин- вертированное» значение, т.е. при записи этих регистров должно быть записа- но значение «ОРТ...» и инвертированное значение в регистр «NOPT...».
Таблица 19.2. Таблица регистров конфигурации. № байта конф. Биты конфигурации Адрес 7 6 5 4 3 2 1 0 ОРТО ОРТ1 UBC7 UBC6 UBC5 UBC4 ивсз UBC2 UBC1 UBCO NOPT1 NUBC7 NUBC6 NUBC5 NUBC4 NUBC3 NUBC2 NUBCI NUBCO ОРТ2 AFR7 AFR6 AFR5 AFR4 AFR3 AFR2 AFR1 AFRO NOPT2 NAFR7 NAFR6 NAFR5 NAFR4 NAFR3 NAFR2 NAFR1 NAFRO ОРТЗ Не используются HSI.TRIM LSI_EN IWDG.HW WWDGJHW WWDG _HALT NOPT3 Не используются NHSLTRIM NLSLEN NIWDG.HW N WWDGJHW NWWDG .HALT ОРТ4 Не используются EXTJZLK CKAWUSEL PRSC1 PRSCO NOPT4 Не используются NEXTJZLK CKAW USEL NPRSC1 NPRSCO ОРТ5 HSE CNT7 HSE CNT6 HSE CNT5 HSE CNT4 HSE CNT3 HSECNT2 HSECNT1 HSECNTO NOPT5 NHSE CNT7 NHSE CNT6 NHSE CNT5 NHSECNT4 NHSECNT3 NHSECNT2 NHSECNT1 NHSECNTO ОРТ6 Не используется NOPT6 Не используется ОРТ7 Не используется NOPT7 Не используется OPTBL BL7 BL6 BL5 BL4 BL3 BL2 BL1 BLO NOPTBL NBL7 NBL6 NBL5 NBL4 NBL3 NBL2 NBL1 NBLO Глава 19. Память 197
198 Глава 19. Память ОРТО — ROP[7:0] Memory readout protection (ROP) — может иметь значение ОхАА, этот регистр доступен только через отладчик. ОРТ1 — UBC[7:0] User boot code area Эти биты определяют размер загрузчика. Эти биты могут иметь следующие величины: 0x00: отключен UBC, защита от записи отсутствует; 0x01: страницы с 0 по 1 определены как UBC, память защищена от записи; 0x02: страницы с 0 по 3 определены как UBC, память защищена от записи; 0x03: страницы с 0 по 4 определены как UBC, память защищена от записи; • • • 0x3Е: страницы с 0 по 63 определены как UBC, память защищена от записи; Иные величины не используются. Примечание: Подробно описано в (RM0016) в разделе «Flash/EEPROM memory readout protection». OPT2 — AFR[7:0] — alternate function remapping — эти биты определяют значение альтернативных функций портов ввода/вывода. AFR7 Alternate function remapping option 7 OPT2 0: AFR7 перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию. 1: Альтернативная функция вывода D4 — выход звукового излучателя ВЕЕР. AFR6 Alternate function remapping option 6 0: AFR6 перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию. 1: Альтернативная функция вывода В5 — I2C_SDA, вывода В4 — I2C_SCL. AFR5 Alternate function remapping option 5 0: AFR5 перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию. 1: Альтернативная функция вывода ВЗ — TTM1_ETR, вывода В2 — Т1М1_ NCC3, вывода Bl -TIM1_CH2N, вывода ВО - T1M1_CH1N. AFR4 Alternate function remapping option 4 0: AFR5 перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию. 1: Альтернативная функция вывода D7 — TIM 1_СН4. AFR3 Alternate function remapping option 3 0: AFR3 перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию. 1: Альтернативная функция вывода DO — TIM1BKIN. AFR2 Alternate function remapping option 2 0: AFR2 перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию.
Глава 19. Память 199 1: Альтернативная функция вывода DO — CLK_CCO. Примечание: бит AFR2 имеет приемущество перед битом AFR3 если оба из них активированы. AFR1 Alternate function remapping option 1 0: AFR1 перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию. 1: Альтернативная функция вывода АЗ — Т1МЗ_СН1, вывода D2 — Т1М2_ снз. AFRO Alternate function remapping option 0 0: AFRO перенаправление альтернативных функций отключено. Назначе- ние выводов порта по умолчанию. 1: Альтернативная функция вывода D3 — ADC_ETR Примечания по поводы битов перенаправления — не использовать более одно бита перенаправления на один порт. ОРТЗ — HSlTRlM:High speed internal clock trimming register size 0: в регистре CLK_HSITRIMR используется 3-х разрядный режим под- стройки; 1: в регистре CLKHSITRIMR используется 4-х разрядный режим под- стройки. LSI_EN: Low speed internal clock enable 0: генератор LSI недоступен как источник тактового сигнала CPU; 1: генератор LSI доступен как источник тактового сигнала CPU. IWDG HW: Independent watchdog 0: независимый сторожевой таймер IWDG запускается программно; 1: независимый сторожевой таймер IWDG запускается аппаратно. WWDG HW: Window watchdog activation 0: оконный сторожевой таймер WWDG запускается программно; 1: оконный сторожевой таймер WWDG запускается аппаратно. WWDGHALT: Window watchdog reset on halt 0: сброс таймера WWDG не при вводе в режим Halt; 1: при вводе в режим формируется сброс таймера WWDG. ОРТ4 EXTCLK: External clock selection 0: к выводам OSC подключается внешний кварц; 1: к выводу OSCIN подключается тактовый генератор. CKAWUSEL:Auto wake-up unit/cloc 0: модуль AWU тактируется от генератора LSI; 1: модуль AWU тактируется от генератора HSE через предделитель. PRSC[l:0] AWU clock prescaler Ox: частота 16 МГц понижается до 128 КГц; 10: частота 8 МГц понижается до 128 КГц; 11: частота 4 МГц понижается до 128 КГц;
200 Глава 19. Память ОРТ5 HSECNT[7:0]:HSE crystal oscillator stabilization time 0x00: время стабилизации генератора HSE составляет 2048 циклов; 0хВ4: время стабилизации генератора HSE составляет 128 циклов; 0xD2: время стабилизации генератора HSE составляет 8 циклов; 0хЕ1: время стабилизации генератора HSE составляет 0,5 цикла. Байты ОРТ6 и ОРТ7 не используются. OPTBL: BL[7:0] Bootloader option byte. Для линейки микроконтроллеров STM8S эти биты представляю i собой на- стройки загрузки микроконтроллера после сброса. В зависимости от содер- жимого адресов 0х478Е, 0x478F, 0x8000, работа микроконтроллера после сброса может быть начата либо с загрузчика, либо с вектора сброса. Подроб- нее работа загрузчика описана в документе UM0560. В диапазоне адресов от 0x5000 до 0x57FF расположены регистры ввода-вы- вода (регистры периферийных узлов). Таблица 19.3. Таблица регистров ввода-вывода. Адрес Назв-е модуля Название регистра Функция регистра Значение по-умолч. 5000 Port А PA-ODR Port A data output latch register 0x00 5001 PAJDR Port A input pin value register OxXX 5002 PA_DDR Port A data direction register 0x00 5003 PA_CR1 Port A control register 1 0x00 5004 PA_CR2 Port A control register 2 0x00 5005 Port В PBJDDR Port В data output latch register 0x00 5006 PBJDR Port В input pin value register OxXX 5007 PB_DDR Port В data direction register 0x00 5008 PB_CR1 Port В control register 1 0x00 5009 PB_CR2 Port В control register 2 0x00 500А PortC PCJDDR Port C data output latch register 0x00 500В PCJDR Port C input pin value register OxXX 500С PC_DDR Port C data direction register 0x00 500D PC_CR1 Port C control register 1 0x00 500Е PC_CR2 Port C control register 2 0x00 500F Port D PD_ODR Port D data output latch register 0x00 5010 PDJDR Port D input pin value register OxXX 5011 PD_DDR Port D data direction register 0x00 5012 PD_CR1 Port D control register 1 0x02 5013 PD_CR2 Port D control register 2 0x00 5014 Port E PE-ODR Port E data output latch register 0x00 5015 PEJDR Port E input pin value register OxXX 5016 PE_DDR Port E data direction register 0x00
Глава 19. Память 201 5017 PE_CR1 Port E control register 1 0x00 5018 PE_CR2 Port E control register 2 0x00 5019 Port F PF_ODR Port F data output latch register 0x00 501А PFJDR Port F input pin value register OxXX 501В PF_DDR Port F data direction register 0x00 501С PF_CR1 Port F control register 1 0x00 501D PF_CR2 Port F control register 2 0x00 501Е Port G PGJDDR Port G data output latch register 0x00 501F PGJDR Port G input pin value register OxXX 5020 PG_DDR Port G data direction register 0x00 5021 PG_CR1 Port G control register 1 0x00 5022 PG_CR2 Port G control register 2 0x00 5023 Port H PH_ODR Port H data output latch register 0x00 5024 PHJDR Port H input pin value register OxXX 5025 PH_DDR Port H data direction register 0x00 5026 PH_CR1 Port H control register 1 0x00 5027 PH_CR2 Port H control register 2 0x00 5028 Port I PI_ODR Port I data output latch register 0x00 5029 PIJDR Port I input pin value register OxXX 502А PI.DDR Port I data direction register 0x00 502В PI_CR1 Port I control register 1 0x00 502С PI_CR2 Port I control register 2 0x00 5050... 5059 Зарезервировано 505А Flash FLASH_CR1 Flash control register 1 0x00 505В FLASH_CR2 Flash control register 2 0x00 5050 FLASH_NCR2 Flash complementary control register 2 OxFF 505D FLASH _FPR Flash protection register 0x00 505Е FLASH _NFPR Flash complementary protection register OxFF 505F FLASH JAPSR Flash in-application programming status register 0x00 5060... 5061 Зарезервирвано 5062 Flash FLASH _PUKR Flash program memory unprotection register 0x00 5063 Зарезервирвано 5064 Flash FLASH _DUKR Data EEPROM unprotection register 0x00 5065 ... 509F Зарезервировано 50А0 ITC EXTI_CR1 External interrupt control register 1 0x00 50А1 EXTI_CR2 External interrupt control register 2 0x00 50А2 ... 50В2 Зарезервировано 50ВЗ RST RST.SR Reset status register 0x00
202 Глава 19. Память 50В4... 50BF Зарезервировано 50С0 CLK CLKJCKR Internal clock control register 50С1 CLK_ECKR External clock control register 0x01 50С2 Зарезервировано 0x00 50СЗ CLK CLK.CMSR Clock master status register 50С4 CLK_SWR Clock master switch register 0xE1 50С5 CLK_SWCR Clock switch control register 0xE1 50С6 CLK_CKDIVR Clock divider register OxXX 50С7 CLK_PCKENR1 Peripheral clock gating register 1 0x18 50С8 CLK_CSSR Clock security system register OxFF 50С9 CLK_CCOR Configurable clock control register 0x00 5 ОСА CLK_PCKENR2 Peripheral clock gating register 2 0x00 50СВ CLK_CANCCR CAN clock control register OxFF 5 ОСС CLK_HSITRIMR HSI clock calibration trimming register 0x00 50CD CLK_SWIMCCR SWIM clock control register 0x00 50СЕ... 50D0 Зарезервировано 50D1 WWDG WWDG_CR WWDG control register 50D2 WWDG_WR WWDR window register 0x7F 50D3... 50DF Зарезервировано 0x7F 50Е0 IWDG IWDG_KR IWDG key register 50Е1 IWDG.PR IWDG prescaler register 0xXX(2) 50Е2 IWDG.RLR IWDG reload register 0x00 50ЕЗ... 50EF Зарезервировано OxFF 50F0 AWU AWU.CSRI AWU control/status register 1 50F1 AWU.APR AWU asynchronous prescaler buffer register 0x00 50F2 AWU_TBR AWU timebase selection register 0x3 F 50F3 ВЕЕР BEEP_CSR BEEP control/ status register 0x00 50F4 ...50FF Зарезервировано 5200 SPI SPLCR1 SPI control register 1 5201 SPI_CR2 SPI control register 2 0x00 5202 SPIJCR SPI interrupt control register 0x00 5203 SPL.SR SPI status register 0x00 204 SPI.DR SPI data register 0x02 205 SPLCRCPR SPI CRC polynomial register 0x00 5206 SPI_RXCRCR SPI Rx ORO register 0x07 5207 SPLTXCRCR SPI Tx ORO register OxFF 5208... 520F Зарезервировано 5210 I2C I2C__CR1 I2C control register 1 0x00
Глава 19. Память 203 5211 I2CJ2R2 I2C control register 2 0x00 5212 I2C_FREQR I2C frequency register 5213 I2C_OARL I2C Own address register low 0x00 5214 I2C_OARH I2C own address register high 5215 Зарезервировано 5216 I2C_DR I2C data register 0x00 5217 I2C_SR1 I2C status register 1 218 I2C_SR2 I2C status register 2 0x00 5219 I2C_SR3 I2C status register 3 0x00 521А I2CJTR I2C interrupt control register 0x00 521В I2C_CCRL I2C clock control register low 521С I2C_CCRH I2C clock control register high 0x00 521D I2C_TRISER I2CTRISE register 0x00 521Е I2C_PECR I2C packet error checking register 0x00 521F...522F Зарезервировано 5230... 523F Зарезервировано 5240 UART2 UART2.SR UART2 status register 5241 UART2.DR UART2 data register 0x00 5242 UART2_BRR1 UART2 baud rate register 1 OxXX 5243 UART2_BRR2 UART2 baud rate register 2 0x00 5244 UART2J2R1 UART2 control register 1 0x00 5245 UART2J2R2 UART2 control register 2 0x00 5246 UART2J2R3 UART2 control register 3 0x00 5247 UART2J2R4 UART2 control register 4 0x00 5248 UART2_CR5 UART2 control register 5 0x00 5249 UART2_CR6 UART2 control register 6 0x00 524А UART2_GTR UART2 guard time register 0x00 524В UART2_PSCR UART2 prescaler register 0x00 524С... 524F Зарезервировано 0x00 5250 TIM1 TIM1J2R1 TIM1 control register 1 5251 TIM1J2R2 TIM1 control register 2 0x00 5252 TIM1_SMCR TIM1 slave mode control register 0x00 5253 TIM1_ETR TIM1 external trigger register 0x00 5254 TIM1JER TIM1 interrupt enable register 0x00 5255 TIM1_SR1 TIM1 status register 1 0x00 5256 TIM1_SR2 TIM1 status register 2 0x00 5257 TIMI.EGR TIM1 event generation register 0x00 5258 TIM1_CCMR1 TIM1 capture/compare mode register 1 0x00 5259 TIM1_CCMR2 TIM1 capture/compare mode register 2 0x00 525А TIM1.CCMR3 TIM1 capture/compare mode register 3 0x00 525В TIM1J2CMR4 TIM1 capture/compare mode register 4 0x00
204 Глава 19. Память 525С TIM1_CCER1 TIM1 capture/compare enable register 1 0x00 525D TIM1_CCER2 TIM1 capture/compare enable register 2 0x00 525Е TIM1_CNTRH TIM1 counter high 0x00 525F TIM1_CNTRL TIM1 counter low 0x00 5260 TIM1_PSCRH TIM1 prescaler register high 0x00 5261 TIM1_PSCRL TIM1 prescaler register low 0x00 5262 TIM1_ARRH TIM1 auto-reload register high 0x00 5263 TIM1_ARRL TIM1 auto-reload register low OxFF 5264 TIM1_RCR TIM1 repetition counter register OxFF 5265 TIM1_CCR1 H TIM1 capture/compare register 1 high 0x00 5266 TIM1_CCR1 L TIM1 capture/compare register 1 low 0x00 5267 TIM1_CCR2H TIM1 capture/compare register 2 high 0x00 5268 TIM1_CCR2L TIM1 capture/compare register 2 low 0x00 5269 TIM1_CCR3H TIM1 capture/compare register 3 high 0x00 526А TIM1_CCR3L TIM1 capture/compare register 3 low 0x00 526В TIM1_CCR4H TIM1 capture/compare register 4 high 0x00 5260 TIM1_CCR4L TIM1 capture/compare register4low 0x00 526D TIM1_BKR TIM1 break register 0x00 526Е TIMI.DTR TIM1 dead-time register 0x00 526F TIM1_OISR TIM1 output idle state register 0x00 5270 ...52FF Зарезервировано 5300 TIM2 TIM2_CR1 TIM2 control register 1 5301 TIM2JER TIM2 interrupt enable register 0x00 5302 TIM2_SR1 TIM2 status register 1 0x00 5303 TIM2_SR2 TIM2 status register 2 0x00 5304 TIM2_EGR TIM2 event generation register 0x00 5305 TIM2_CCMR1 TIM2 capture/ compare mode register 1 0x00 5306 TIM2_CCMR2 TIM2 capture/ compare mode register 2 0x00 5307 TIM2_CCMR3 TIM2 capture/ compare mode register 3 0x00 5308 TIM2_CCER1 TIM2 capture/ compare enable register 1 0x00 5309 TIM2_CCER2 TIM2 capture/ compare enable register 2 0x00 530А TIM2_CNTRH TIM2 counter high 0x00 530В TIM2_CNTRL TIM2 counter low 0x00 5300 TIM2_PSCR TIM2 prescaler register 0x00 530D TIM2_ARRH TIM2 auto-reload register high 0x00 530Е TIM2_ARRL TIM2 auto-reload register low OxFF 530F TIM2_CCR1 H TIM2 capture/compare register 1 high OxFF 5310 TIM2_CCR1L TIM2 capture/ compare register 1 low 0x00 5311 TIM2_CCR2H TIM2 capture/ compare reg. 2 high 0x00
Глава 19. Память 205 5312 TIM2_CCR2L TIM2 capture/ compare register 2 low 0x00 5313 TIM2_CCR3H TIM2 capture/ compare register 3 high 0x00 5314 TIM2_CCR3L TIM2 capture/ compare register 3 low 0x00 5315 ... 531F Зарезервировано 0x00 5320 TIM3 TIM3_CR1 TIM3 control register 1 5321 TIM3JER TIM3 interrupt enable register 0x00 5322 TIM3_SR1 TIM3 status register 1 0x00 5323 TIM3_SR2 TIM3 status register 2 0x00 5324 TIM3_EGR TIM3 event generation register 0x00 5325 TIM3_CCMR1 TIM3 capture/ compare mode register 1 0x00 5326 TIM3_CCMR2 TIM3 capture/ compare mode register 2 0x00 5327 TIM3_CCER1 TIM3 capture/ compare enable register 1 0x00 5328 TIM3_CNTRH TIM3 counter high 0x00 5329 TIM3_CNTRL TIM3 counter low 0x00 532А TIM3_PSCR TIM3 prescaler register 0x00 532В TIM3_ARRH TIM3 auto-reload register high 0x00 5320 TIM3_ARRL TIM3 auto-reload register low OxFF 532D TIM3_CCR1H TIM3 capture/ compare register 1 high OxFF 532Е TIM3_CCR1 L TIM3 capture/compare register 1 low 0x00 532F TIM3_CCR2H TIM3 capture/ compare register 2 high 0x00 5330 TIM3_CCR2L TIM3 capture/ compare register 2 low 0x00 5331 ...533F Зарезервировано 0x00 5340 TIM4 TIM4_CR1 TIM4 control register 1 5341 TIM4JER TIM4 interrupt enable register 0x00 5342 TIM4_SR TIM4 status register 0x00 5343 TIM4_EGR TIM4 event generation register 0x00 5344 TIM4_CNTR TIM4 counter 0x00 5345 TIM4_PSCR TIM4 prescaler register 0x00 5346 TIM4_ARR TIM4 auto-reload register 0x00 5347... 53DF Зарезервировано OxFF 53Е0... 53F3 ADC1 ADC _DBxR ADC data buffer registers 53F4... 53FF Зарезервировано 0x00 5400 ADC _CSR ADC control/ status register 5401 ADC.CR1 ADC configuration register 1 0x00 5402 ADC_CR2 ADC configuration register 2 0x00 5403 ADC.CR3 ADC configuration register 3 0x00 5404 ADC_DRH ADC data register high 0x00 5405 ADC_DRL ADC data register low OxXX 5406 ADC_TDRH ADC Schmitt trigger disable register high OxXX
206 Глава 19. Память 5407 ADC_TDRL ADC Schmitt trigger disable register low 0x00 5408 ADC_HTRH ADC high threshold register high 0x00 5409 ADC_HTRL ADC high threshold register low 0x03 540А ADC_LTRH ADC low threshold register high OxFF 540В ADC_LTRL ADC low threshold register low 0x00 5400 ADC_AWSRH ADC analog watchdog status register high 0x00 540D ADC.AWSRL ADC analog watchdog status register low 0x00 540Е ADC.AWCRH ADC analog watchdog control register high 0x00 540F ADC.AWCRL ADC analog watchdog control register low 0x00 5410...57FF Зарезервировано 0x00 В диапазоне адресов 0x6000 и 0x67FF расположена зона загрузчика. Работ загрузчика в рамках данной книги не рассматривается. В диапазоне от 0x7 F00 до 0x7FFF расположены регистры модуля отладчика SWIM. Работ отладчика в рамках данной книги также не рассматривается. В диапазоне адресов от 0x8000 до 0x807 F расположены адреса векторов пре- рываний. Рисунок 19.1 Таблица векторов прерываний. № npep. Модуль- источник Описание Вывод из режима Halt Вывод из режима Active Halt Адрес вектора прер. RESET Сброс Да Да 0x00 8000 TRAP Программное прерывание 0x00 8004 0 TLI Внешнее прерывание высшего уровня 0x00 8008 1 AWU Прерывание от системы AWU Да 0x00 800С 2 CLK Прерывание от модуля тактирования 0x00 8010 3 EXTIO Внешнее прерывание от порта А (за исключением вывода РА1) Да Да 0x00 8014 4 EXTI1 Внешнее прерывание от порта В Да Да 0x00 8018 5 EXTI2 Внешнее прерывание от порта С Да Да 0x00 801С 6 EXTI3 Внешнее прерывание от порта D Да Да 0x00 8020 7 EXTI4 Внешнее прерывание от порта Е Да Да 0x00 8024 8 Не используется 0x00 8028 9 Не используется 0x00 802С
Глава 19. Память 207 № прер. Модуль- источник Описание Вывод из режима Halt Вывод из режима Active Halt Адрес вектора прер. 10 SPI Окончание передачи по интерфейсу SPI Да Да 0x00 8030 11 TIM1 Прерывания таймера 1: обновление/переполнение/ опустошение/запуск/останов 0x00 8034 12 TIM1 Прерывания таймера 1: захват/ сравнение 0x00 8038 13 TIM2 Прерывания таймера 2: обновление или переполнение 0x00 803С 14 TIM2 Прерывания таймера 2: захват/ сравнение 0x00 8040 15 TIM3 Прерывания таймера 3: обновление или переполнение 0x00 8044 16 TIM3 Прерывания таймера 1: захват/ сравнение 0x00 8048 17 Не используется Да Да 0x00 804С 18 Не используется 0x00 8050 19 ПС Прерывания модуля ПС 0x00 8054 20 UART2 Завершение передачи 0x00 8058 21 UART2 Регистр-приемник данных заполнен 0x00 805С 22 ADC1 Завершение преобразование либо прерывание аналогового компаратора 0x00 8060 23 TIM4 Прерывание таймера 4: переполнение либо обновление 0x00 8064 24 FLASH Прерывания по событиям записи во flash-память ЕОР/WR_PG_DIS 0x00 8068 Начиная с адреса 0x8080 располагается основная программа. Эта область также защищена от памяти. Для снятия защиты необходимо последовательно записать числа 0x56 и ОхАЕ в регистр FLASHPLJKR. Для повторной установ- ки защиты необходимо сбросить бит 1 (PUL) в регистре FLASHIAPSR.
Глава 20 Список использованных источников RM0016 STM8S and STM8AF microcontroller families. РМ0051 Programming manual. CD00200092 STM8S105xx. Матюшов Николай Викторович Начало работы с микроконтроллерами STM8