“Контроллер для организации сенсорной сети”

Московский институт электроники и математики





Специальность 230101



















Курсовая работа

по предмету “Информатика”

на тему “Контроллер для организации сенсорной сети”

студента группы С13-08

Волкова Игоря Юрьевича

Руководитель: проф. Восков Леонид Сергеевич























Москва

2008г

Аннотация



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

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

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

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

Технология ZigBee имеет частотные каналы в диапазонах 868 МГц, 915 МГц и 2,4 ГГц. Наибольшие скорости передачи данных и наивысшая помехоустойчивость достигаются в диапазоне 2,4 ГГц, поэтому большинство производителей микросхем выпускают приемопередатчики именно для этого диапазона, в котором предусмотрено 16 частотных каналов с шагом 5 МГц. 

Скорость передачи данных вместе со служебной информацией в сетях ZigBee составляет 250 Кбит/c. 

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

Технология ZigBee ориентирована на сети датчиков на основе беспроводных компонентов и имеет в этой области ряд неоспоримых преимуществ над другими технологиями. А именно:

		всемирный открытый стандарт, основанный на IEEE 802.15.4; 

		легкая конфигурация сети; 

		возможность ретрансляции сообщений отдельными узлами сети; 

		число узлов сети может превышать 65000; 

		защищенность сети в соответствии с алгоритмом AES; 

		поддержка различных топологий: "дерево", "звезда", многоячейковая сеть; 

		возможность взаимодействия между продуктами ZigBee различных производителей; 

		электромагнитная совместимость с другими беспроводными технологиями (WiFi, Bluetooth, GSM, CDMA); 

		низкая стоимость готового решения; 

		минимум дополнительных компонентов.

Одним из разработчиков контроллеров ZigBee является компания Jennic, которая, создавая чипы и программное обеспечение к ним, предоставляет разработчикам возможность делать устройства, сертифицированные для ZigBee.

В данном курсовом проекте будет рассмотрено семейство таких контроллеров серии JN513x.


1. Общее описание

JN513x — это семейство недорогих микроконтроллеров с малым энергопотреблением, предназначенных для беспроводной связи по стандартам IEEE802.15.4 и ZigBee. Каждый чип из данного семейства включает приемопередатчик стандарта IEEE802.15.4, работающий на частоте 2.4 ГГц, 32-битный RISC-процессор, 192 кБ постоянной памяти (ROM), от 8 до 96 кБ оперативной памяти (RAM), а также набор аналоговых и цифровых периферийных устройств (рис. 1). 





Рис. 1. Структура контроллеров JN513x



Подсистема памяти (ROM/RAM) позволяет хранить системное программное обеспечение, включая стек протоколов, таблицы маршрутизации, а также код и данные пользовательского приложения. Каждое устройство содержит MAC-адрес, блок шифрования по стандарту AES, процедуры для засекречивания кода программы с помощью ключа шифрования, а также имеет режимы пониженного энергопотребления и сна. Все эти возможности сделаны для обеспечения работы беспроводного микроконтроллера от батареи в течение длительного срока.





Основные параметры

	F,МГц	16/32 

	RAM,кБ	8/16/32/96 

	EEPROM,кБ	192 

	I/O,шт.	21 

	RTC	Нет 

	UART,шт	2 

	SPI,шт	1 

	I2C,шт	1 

	Аналоговый компаратор,шт	1 

	Разрядов АЦП,бит	12 

	Каналов АЦП,шт	4 

	Разрядов ЦАП,бит	11 

	Каналов ЦАП,шт	2 

	VCC,В	от 2.2 до 3.6 

	ICC,мА	34 

	TA,°C	от -40 до 85 

	Корпус	QFN-56



Особенности приемопередатчика: 

совместимость с 2.4 ГГц IEEE802.15.4; 

процессор шифрования по стандарту AES с длиной ключа 128 бит; 

MAC-ускоритель, поддерживающий форматирование пакетов, вычисление контрольной суммы, проверку адреса, автоответ; 

система управления энергопотреблением, включающая таймер сна; 

рабочее напряжение 2.2–3.6 В; 

ток потребления в режиме глубокого сна < 0.4 мкА; 

ток потребления в спящем режиме (при активном таймере сна) < 1.5 мкА; 

требует минимум внешних компонентов; 

ток потребления в режиме TX (передача) 34 мА; 

ток потребления в режиме RX (прием) 34 мА; 

чувствительность приемника -97 дБм; 

выходная мощность передатчика +3 дБм.



Особенности микроконтроллера: 

32-битный RISC-процессор с тактовой частотой 16 МГц (32 MIPS) и низким потреблением энергии; 

8, 16, 32 или 96 кБ RAM, в которой хранятся временные данные и (опционально) программный загрузчик; 

192 кБ ROM, содержащей код программы, включая стек протоколов; 

48-байтный OTP eFuse, хранящий MAC ID, который позволяет организовать шифрование по стандарту AES; 

АЦП: 4 входа, 12 разрядов; 2 11-разрядных ЦАП, 2 компаратора, 2 программируемых таймера/счетчика, 3 системных таймера; 

2 интерфейса UART (один – для внутрисхемной отладки); 

интерфейс SPI; 

двухпроводной последовательный интерфейс; 

21 порт ввода/вывода.



1.1. Беспроводной микроконтроллер

Приложения, которые передают данные по беспроводному каналу, являются более сложными чем передающие по проводному. Беспроводные протоколы требуют строгих частот, форматов данных, синхронизации передач данных, безопасности и др. Прикладная разработка должна выполнить эти требования в дополнение к функциональным возможностям продукта и пользовательским интерфейсам. Чтобы минимизировать эту сложность, Jennic предоставляет серию программных библиотек, которые управляют приемопередатчиком и внешними устройствами JN513x. Эти библиотеки с функциями, названными Интерфейсом прикладного программирования (API), устраняют потребность разработчика в знании беспроводных протоколов и очень упрощают программирование режимов мощности, прерываний и аппаратных функциональных возможностей. Кроме того, JN513x будет запрограммирован на языке высокого уровня C, отладка будет производиться с использованием комплекта разработчика программного обеспечения серии JN5.

Ввиду вышеизложенного, тонкости JN513x не представлены курсовом проекте. Доступ ко всем внешним устройствам получен с использованием вызовов API из периферийной библиотеки. Такие вызовы отформатированы шрифтом курьера например vAHI_Init ().

Совместимая беспроводная сеть IEEE802.15.4 может быть разработана, используя библиотеку MAC IEEE802.15.4. Эту библиотеку могут использовать непосредственно как простые (точка-точка, звезда или дерево) беспроводные сети так и более сложные беспроводные ячеистые сети, такие как ZigBee, или IPv6.



1.2. Беспроводной приемопередатчик

Беспроводный приемопередатчик высоко интегрирован, и совместно с MAC библиотекой IEEE802.15.4 требует небольшого количества знания RF или беспроводного дизайна.

Беспроводный приемопередатчик включает 2.45GHz радио-блок, модем O-квадратурной-фазовой-модуляции, контроллер полосы немодулированных частот и сопроцессор безопасности. Радио-блок содержит 200 Ω дифференциальный порт антенны, компоненты которого находятся в микросхеме. Это позволяет подключать дифференциальную антенну непосредственно к порту, минимизируя стоимость системы. Подключение к антенне может быть достигнуто с использованием 200/50 Ω 2.45GHz симметричного трансформатора. Кроме того, радио-блок также имеет выход для контроля переключения передачи-приема внешними устройствами, такими как усилители мощности.

Сопроцессор безопасности обеспечивает аппаратную обработку 128-битового AES-CCM, CBC1, CTR и CCM, определенных стандартом 802.15.4b. Обработка происходит во время передачи и приема, требуя минимального вмешательства центрального процессора. Она также доступна для автономного использования под программным управлением для шифровки и расшифровки пакетов, сгенерированных программными уровнями, такими как пользовательские приложения и Zigbee. Это означает, что реализация данных алгоритмов может быть снята с центрального процессора, увеличивая его пропускную способность для пользовательских приложений.

Элементы приемопередатчика (радио-блок, модем и процессор полосы немодулированных частот) взаимодействуют для обеспечения 802.15.4 MAC (управление доступом к предающей среде) под управлением стека протокола, поставляемым с устройством как программная библиотека. Приложения, использующие функциональные возможности IEEE802.15.4, могут быть быстро разработаны, сочетая разработанное пользователем прикладное программное обеспечение с этой библиотекой. 



1.3. Процессор и память

32-разрядный центральный процессор RISC позволяет выполнять программное обеспечение. Его возможности разделяется между обработкой протокола MAC IEEE802.15.4, других протоколов более высоких уровней и пользовательских приложений. JN513x имеет объединенную архитектуру памяти: программный код, данные, периферийные устройства и порты ввода - вывода организованы в пределах одного линейного адресного пространства.

Устройство содержит 192 КБ ROM; 8 КБ, 16 КБ, 32 КБ или 96 КБ RAM (в зависимости от модели) и 48-байтовой OTP eFuse память.


1.4. Периферия

Микросхеме содержатся следующие внешние устройства:

Ведущий порт SPI с пятью выводами выбора ведомых устройств;

Два интерфейса UART;

Два программируемых таймера/счетчика с возможностью сбора данных;

Два программируемых таймера пробуждения и таймер тактов;

Двухпроводный последовательный интерфейс (совместимый с SMbus и I2C);

Подчиненный порт SPI (мультиплексный с DIO);

21 линия DIO (мультиплексные с UART, таймерами и линиями выбора устройств SPI);

Четырехканальный 12-битовый, 100 Кбит/с АЦП;

Два 11-битовых ЦАП;

Два программируемых аналоговых компаратора;

Внутренний температурный датчик и датчик состояния батареи.

Пользовательские приложения обращаются к внешним устройствам, используя аппаратную периферийную библиотеку совместно с API. Это позволяет приложениям использовать проверенное и легко понятое представление внешних устройств, позволяя вести быструю разработку систем.


1.5. Блок-схема микроконтроллера



На рис. 2 изображена блок-схема микроконтроллера JN513x 







Рис. 2. Блок-схема микроконтроллера


2. Контакты



2.1. Расположение контактов





Рис. 3. Расположение контактов JN513х


2.2. Назначение контактов



№ вывода (штырька)

Источники питания

Описание

3, 13, 15, 21 28, 35, 40

VB_DIG2, VB_SYN, VB_VCO, VB_RF, VB_A, VB_DIG1, VB_MEM

Подключение сглаживающих конденсаторов

16, 49

VDD1, VDD2

Напряжение питания: VDD1-аналоговых схем, VDD2-цифровых схем

7, 9, 10, 39 Подложка

VSS2, VSS3, VSSS, VSS1, VSSA

Общая шина («земля»)



Общее



8

RESETN

Вход/выход сброса

11, 12

XTALOUT, XTALIN

Подключение тактового генератора



Радио-блок



14

VCOTUNE

Внешний контурный фильтр

19

IBIAS

Управление током смещения

20, 22

RFP, RFM

Дифференциальный порт антенны



Аналоговая периферия



24, 25, 26, 27

ADC1, ADC2, ADC3, ADC4

Входы аналого-цифрового преобразователя

23

VREF

Внешнее опорное напряжение аналоговой периферии

29, 30

DAC1, DAC2

Выходы ЦАП

17, 18, 31, 32

COMP1M, COMP1P, COMP2P, COMP2M

Входы компараторов



Цифровой ввод-вывод





Основная функция

Альтернативные функции



33

SPICLK



Синхронизация SPI 

36

SPIMOSI



Выход данных SPI

34

SPIMISO



Вход дынных SPI

37

SPISEL0



Выбор устройства SPI 0

38

DIO0

SPISEL1

DIO0 или выбор устройства SPI 1

41

DIO1

SPISEL2

DIO1 или выбор устройства SPI 2

42

DIO2

SPISEL3, RFRX

DIO2 или выбор устройства SPI 3 или выход контроля приема радиосигнала

43

DIO3

SPISEL4, RFTX

DIO3 или выбор устройства SPI 3 или выход контроля передачи радиосигнала

44

DIO4

CTS0

DIO4 или вход CTS UART 0

45

DIO5

RTS0

DIO5 или выход RTS UART 0

46

DIO6

TXD0

DIO6 или выход данных UART 0

47

DIO7

RXD0

DIO7 или вход данных UART 0

48

DIO8

TIM0CK_GT

DIO8 или вход управления таймера 0

50

DIO9

TIM0CAP,CLK32K

DIO9 или вход сбора данных таймера 0 или внешний генератор на 32 кГц

51

DIO10

TIM0OUT

DIO10 или выход PWM таймера 0

52

DIO11

TIM1CK_GT

DIO11 или вход управления таймера 1

53

DIO12

TIM1CAP

DIO12 или вход сбора данных таймера 1 или разнообразие антенн

54

DIO13

TIM1OUT

DIO13 или выход PWM таймера 1 или разнообразие антенн

55

DIO14

SIF_CLK, IP_CLK

DIO14 или синхронизация SIF или вход синхронизации IP

56

DIO15

SIF_D, IP_DO

DIO15 или данные SIF или выход данных IP

1

DIO16

	IP	DI

DIO16 или вход данных IP

2

DIO17

CTS1, IP_SEL

DIO17 или вход CTS UART 1 или вход выбора IP

4

DIO18

RTS1, IP_INT

DIO18 или выход RTS UART 1 или выход прерывания IP

5

DIO19

TXD1

DIO19 или выход данных UART 1

6

DIO20

RXD1

DIO20 или вход данных UART 1



3.Центральный процессор



Центральный процессор JN513x - 32-разрядный типа RISC. Отвечает трем ключевым требованиям:

Потребление малой электрической энергии;

Высокая эффективность реализации беспроводного протокола и в то же самое время сложных приложений;

Эффективное кодирование языков высокого уровня, таких как C/C ++

Процессор взаимодействует с линейным 32-разрядным логическим адресным пространством с объединенной архитектурой памяти, т.е. обращаясь и к коду и к данным в одном адресном пространстве. Регистры периферийных модулей, таких как таймеры, UART и процессор полосы немодулированных частот также находятся в общей памяти.

Центральный процессор содержит блок из 32 32-разрядных регистров общего назначения (GP) вместе с небольшим количеством регистров специального назначения, которые используются для хранения состояния процессора и контроля обработки прерываний. Содержимое любого регистра GP может быть загружено из или сохранено в память; арифметические и логические операции, операции сдвига и вращения,  сравнения со знаком и без знака могут быть выполнены между двумя регистрами с сохранением результата в третьем. Возможны операции между регистрами и константой, присутствующей в команде. Операции между регистрами общего или специального назначения выполняются в одном цикле (16/32MHz). 

Набор команд способен манипулировать 8, 16 и 32-разрядными данными; это означает, что программы могут использовать объекты этих размеров очень эффективно. Манипуляция 32-разрядной величиной особенно полезна для протоколов и высокопроизводительных приложений, позволяя выполнить алгоритмы в меньшем количестве команд и в меньшем количестве тактовых циклов, чем при работе со словами меньшей длины.

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

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

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

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

Тактовая частота центрального процессора может быть удвоена, используя 2x синхронизацию. Использование 2x режима синхронизации позволяет центральному процессору, тактируемому в 32 МГц, выполнять 32 миллиона операций в секунду.



4. Организация памяти



Этот раздел описывает блоки памяти, находящиеся внутри JN513x. Устройство содержит ROM, RAM, память OTP, память беспроводного приемопередатчика и внешних устройств в пределах одного линейного адресного пространства (рис. 4).



Рис. 4. Организация памяти JN513x


4.1. ROM



ROM имеет объем 192 КБ, организовано как 48 КБ x 32-разрядные слова, доступные центральному процессору в единственном тактовом цикле. Содержимое ROM изменяется в зависимости от  версий устройства для поддержки разных стеков протокола и приложений; все версии по умолчанию содержат таблицу векторов прерываний и менеджера по обработке прерываний Типичное содержимое ROM, содержащее стек протокола ZigBee, изображено на рис. 5.





Рис. 5. Содержимое ROM



4.2. RAM

JN513x содержит 8 КБ, 16 КБ, 32 КБ или 96 КБ высокоскоростной оперативной памяти, организованной как 2 КБ, 4 КБ, 8 КБ или 24 КБ x 32-разрядные слова. Она может использоваться и для хранения кода и для хранения данных, она доступна центральному процессору в единственном тактовом цикле. При сбросе загрузчик управляет загрузкой сегментов кода и данных из внешней памяти через порт SPI в оперативную память. Программное обеспечение может управлять источником питания оперативной памяти, позволяющим хранить данные без потери в спящем режиме, когда другие части устройства не задействованы.



4.3. Память OTP eFuse



JN513x содержит 48 байтов eFuse памяти. Это программируемая память, которая организована как 12 x 32-разрядных слов, 4 слова зарезервированы Jennic, 2 из которых содержат адрес MAC. Оставшиеся 8 слов программируются пользователем, предназначены для хранения конфигурации и информации о продукте. Если используется кодирование внешней памяти, тогда 4 слова пользователя eFuse используются для хранения ключа.

Для надежной операции программирования минимальное напряжение питания должно составлять 3.6V. Если это условие не удовлетворено, то надежное программирование не может быть гарантировано.


4.3. Внешняя память



Внешняя память с интерфейсом SPI может использоваться для хранения кода программы и данных для устройства, когда источник питания схемы отсутствует. Память связана с контроллером интерфейсом SPI и линии SPISEL0 выбора; эта линия выделена внешнему интерфейсу памяти и не доступна для использования  другими внешними устройствами (рис. 6).





Рис. 6. Подключение внешней памяти



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



4.4.1. Обеспечение кодирования внешней памяти



Содержимое внешней памяти может быть надежно зашифровано для предотвращения  копирования. Процессор безопасности AES совместно с пользовательским программируемым 128-битовым ключом шифрования используется для зашифровки содержимого внешней памяти. Ключ шифрования сохранен в eFuse. Первоначально после программирования, кодирование выключено, и система продолжает работать в незащищенном режиме. Включение кодирования через программное управление приводит к тому, что все операции программирования будут требовать идентификации. 

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


5. Синхронизация системы



Два отдельных генератора используются для обеспечения системы импульсами синхронизации (синхроимпульсами): один – внешний на 16 МГц с кварцевой стабилизацией, другой -  внутренний RC- генератор на 32 кГц.



5.1. Генератор на 16 МГц



Внешний кварц подключается к штырькам XTALIN и XTALOUT. Эти же штырьки через развязывающие конденсаторы емкостью 15 пФ соединены с общей шиной (рис. 7).



Рис. 7. Подключение внешнего кварцевого резонатора



Импульсы этого генератора, обеспечивают синхронизацию большинства подсистем JN513x, включая приемопередатчик, процессор, память,  цифровые и аналоговые внешние устройства. Синхронизация процессора, оперативной памяти и ROM более эффективна при удвоенной частоте, т.е. 32 МГц.



5.1. Генератор на 16 МГц



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

В качестве генератора на 32 кГц, используемого при работе таймеров бездействия, можно использовать внешний задающий генератор на 32 кГц, подключив его к выводу  CLK32K (DIO9). Это позволяет использовать более стабильные модели генераторов.


6. Сброс



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

При подаче напряжения питания, генератор на 32 кГц запускается и стабилизируется, что занимает приблизительно 100 μsec. В этот момент включается кварцевый генератор на 16 МГц. Логические блоки пребывают в состоянии сброса, пока кварцевый генератор на 16 МГц не стабилизируется, обычно это занимает 2.5ms.

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

JN513x имеет четыре источника сброса:

Внутренний сброс включения питания;

Внешний сброс;

Программный сброс;

Сброс при обнаружении кратковременного провала напряжения питания.



6.1. Внутренний сброс включения питания



Когда напряжение питания подано на устройство, схема сброса включения питания контролирует повышение напряжения VDD. Когда VDD достигает определенного порога, генерируется сигнал сброса, что может наблюдаться на выводе RESETN (рис 8). Начинается внутренний сброс, после которого начинает работу процессор.



Рис. 8. Временные диаграммы внутреннего сброса включения питания


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





Рис. 9. Внешняя схема сброса включения питания



Внешний резистор и конденсатор обеспечивают операцию сброса при соединении их с выводом RESETN.



6.2. Внешний сброс



Внешний сброс осуществляется при подаче лог. «0» на вывод RESETN. Ширина импульса сброса должна быть больше минимально допустимой во время активного или спящего режима. Короткие импульсы не гарантируют сброс. JN513x находится в состоянии сброса до тех пор, пока на штырьке RESETN лог. «0». Как только импульс на нем достигает порогового напряжения сброса (VRST) при позитивном спаде, начинается внутренний сброс(рис. 10).



Рис. 10. Временные диаграммы внешнего сброса



С выводом RESETN можно соединить множество устройств в режиме открытого коллектора. Хотя JN513x и содержит внутренний 45 КΩ резистор, рекомендуется использовать внешний резистор при подключении к выводу RESETN большого количества внешних устройств. Вывод RESETIN является входом для внешнего сброса, выходом во время сброса включения питания и может быть выходом во время программного сброса. Никакие устройства не должны подавать на RESETN сигнал высокого уровня.


6.3. Программный сброс



Системный сброс может быть произведен в любое время вызовом функции, vAHI_SwReset () из периферийной библиотеки. Эта функция может быть выполнена в пределах пользовательского приложения, например, после обнаружения системного отказа. Линия RESETN может быть использована контроллером JN513x для сброса других устройств в системе (например внешних датчиков). Возможность вывода сброса контроллером может быть включена или заблокирована использованием функции vAHI_DriveResetOut () из периферийной библиотеки (значение по умолчанию - заблокировано).



6.4. Сброс при обнаружении провала напряжения питания



Модуль поиска кратковременного провала напряжения питания используется для контроля питания JN513x; Он может использоваться пока устройство бодрствует или находится в режиме дремоты центрального процессора. Падение напряжения питания ниже определенного порога может быть обнаружено и использовано для выполнения сброса чипа, для вызова прерывания, когда напряжение или понижается ниже порога или повышений выше него. Гистерезис встроен в модуль поиска кратковременного провала напряжения питания, это - номинально 100 милливольт.

Пороговое напряжение может быть задано на уровнях 2.1V, 2.4V, 2.5V или 2.6V через программное управление.



7. Система прерываний



Система прерываний на JN513x - система аппаратного векторного прерывания. JN513x снабжен несколькими источниками прерываний. Некоторые связанные с операциями центрального процессора (прерывания центрального процессора), другие используются аппаратными средствами. Когда происходит прерывание, процессор завершает выполнение текущей программы, с аппаратного адреса (вектора), определенного для этого прерывания загружается подпрограмма обработки. Выполнение процедур обработки прерывания всегда выполняется в привилегированном режиме. Источники прерываний и их векторы приведены в таблице1:



Таблица 1

Векторы прерываний

Источник прерывания

Адрес вектора

Причина

Сброс

0x100

Программный или аппаратный сброс

Ошибка шины

0x200

Шинная ошибка или попытка обращения по недопустимому физическому адресу

Таймер тактов

0x500

Истечение времени таймера

Выравнивание

0x600

Load/Store to naturally not aligned location Загрузка/сохранение по неестественному адресу

Запрещенная команда

0x700

Запрещенная команда в потоке команд

Аппаратное прерывание

0x800

Аппаратное прерывание

Системный вызов

0xC00

Системный вызов, Инициализированный программным обеспечением (l.sys команда)

Ловушка

0xE00

Вызов команды l.trap

	7.1. Системный вызов

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



7.2.	Прерывания процессора



7.2.1. Ошибка шины



Прерывание ошибки шины генерируется при попытке обратиться к адресу памяти, который не существует, или не заполнен памятью или периферийными регистрами.



7.2.2. Выравнивание



Прерывания выравнивания генерируются, когда программное обеспечение пытается обратиться к объектам, которые не входят в естественные границы слова. Например, попытка чтения 16-разрядного объекта с адреса 0xFFF1 вызовет исключение выравнивания, как и чтение 32-разрядного объекта с 0xFFF1, 0xFFF2 или 0xFFF3. Примеры правильных 32-разрядных объектных адресов - 

0xFFF0, 0xFFF4, 0xFFF8 и т.д.



7.2.3. Запрещенная команда



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


7.3. Аппаратные прерывания



Аппаратные прерывания, сгенерированные приемопередатчиком, аналоговыми или цифровыми внешними устройствами и устройствами, устройствами, подключенными к выводам DIO, индивидуально замаскированы программируемым контроллером прерываний (PIC). Управление прерываниями осуществляется из библиотеки внешних устройств (рис. 11). 







Рис 11. Программируемый контроллер прерываний.



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


8. Беспроводной приемопередатчик



Беспроводный приемопередатчик включает 2.45GHz радио-блок, модем O-квадратурной-фазовой-модуляции, процессор полосы немодулированных частот, сопроцессор безопасности и контроллер PHY. Эти блоки, с программным обеспечением протокола, предоставленным как библиотека, образуют основанный на стандартах IEEE802.15.4 беспроводной приемопередатчик, который передает и получает данные по воздуху в полосе 2.4GHz, не подлежащей лицензированию.



8.1. Радио-блок



Радио-блок содержит приемную и передающую части, которые сходятся в переключателе TX/RX. Этот переключатель позволяет подключить 200 Ω дифференциальную антенну непосредственно без внешних компонентов. Альтернативно, симметричный трансформатор может использоваться при применении несимметричных антенн (рис. 12).





Рис. 12. Архитектура радио-блока.



Кварцевый генератор на 16 МГц подает сигнал на делитель, который обеспечивает импульсами синтезатор с определенной частотой. Синтезатор содержит программируемые делители обратной связи, фазовый детектор, накачку заряда и внутренний управляемый генератор напряжения (VCO). VCO не имеет никаких внешних компонентов, включает схему калибровки для компенсации различия во внутренних значениях узлов в зависимости от температурных изменений. VCO управляет фазовой автоподстройкой (PLL), имеющей контурный фильтр, состоящий из трех внешних компонентов. Программируемая накачка заряда также используется для настройки характеристик электрического контура. 

Цепь приемника начинается с низко-шумного усилителя / комбинации смесителей, выходы которых передают сигнал на полосовой многофазный фильтр, обеспечивающий определение качества канала и отклонение частоты. Затем сигнал передается к двум усилителям с переменными коэффициентами усилителя. Их коэффициент усиления задается в блоке (AGC) автоматической регулировки усиления в модеме. Далее сигнал подается на полосовой фильтр и преобразуется в цифровой перепрограммируемым АЦП.

В процессе передачи цифровые потоки I и Q от модема подаются к блокам ЦАП квадратур I и Q, буферизуются и фильтруются по низкой частоте, после чего подаются на смесители модулятора. Затем суммированный сигнал на 2.4 ГГц передается на Усилитель Мощности RF (PA), мощность которого может быть задана одним из шести параметров настройки. Выход PA управляет антенной через переключатель RX/TX.



8.1.1. Внешние компоненты радио-блока



Контурный фильтр VCO требует использования трех внешних компонентов; штырек IBIAS требует одного внешнего компонента как показано на рисунке 13. Эти компоненты должны быть помещены как можно ближе к штырькам JN513x и общей шине.





Рис. 13. Подключение внешних компонентов радио-блока.



Радио-блок запитывается от внутренних стабилизаторов 1.8V, подключенных к линии питания аналоговых устройств VDD1, что необходимо для обеспечения хорошей шумовой изоляции между цифровой логикой JN513x и аналоговыми блоками. Этими стабилизаторами управляет контроллер полосы немодулированных частот и программное обеспечение протокола с целью минимизировать потребляемую мощность. 



8.1.2.  Дополнительная антенна



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


Модем



Модем выполняет всю необходимую модуляцию и выполняет функции, требуемые для цифровой передачи и приема данных со скоростью 250 Кбит/с на частоте 2450 МГц в соответствии со стандартом IEEE802.15.4 (рис. 14).



Рис. 14. Архитектура модема.



Передатчик получает символы от процессора полосы немодулированных частот и использует функцию распространения, чтобы отобразить каждый уникальный 4-битовый символ как 32-ичную Псевдослучайную Шумовую (PN) последовательность. Блок квадратурной фазовой модуляции смещения и блок формирования полусинусоидального импульса обрабатывают результирующую распространяющую последовательность для выделения двух независимых сигналов фазы квадратуры (I и Q), которые впоследствии преобразуются в аналоговые напряжения в передающей части радио-блока.

Автоматическая регулировка усиления (AGC) контролирует полученный уровень сигнала и корректирует коэффициент усиления усилителей в приемной части радио-блока для поддержания оптимальной амплитуды сигнала во время приема.

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

Блок обнаружения символа и синхронизации выполняет функции с использованием прямых методик корреляции последовательности с поиском полей Разделителя Преамбулы и Начала кадра (SFD), содержавшихся в переданном IEEE 802.15.4 Заголовке Синхронизации (SHR).

Особенности, представленные для поддержки сетевых алгоритмов выбора канала, включают Детектирование Энергии (ED), Индикация Качества Связи (LQI) и полностью программируемая Оценка Чистоты Канала (CCA).

Модем обеспечивает цифровую индикацию мощности полученного сигнала (RSSI), которая облегчает реализацию функции ED стандарта IEEE 802.15.4.

LQI определен в стандарте IEEE 802.15.4 как характеристика мощности и/или качества данных полученного пакета. Модем измеряет показатель качества сигнала, основанный на величинах корреляции, который может использоваться вместе со значением ED в LQI.

Возможность CCA модема поддерживает все режимы работы, определенные в стандарте IEEE 802.15.4, а именно, Энергия выше порога ED, c опросом несущей и c опросом несущей и/или энергия выше порога ED.



Процессор полосы немодулированных частот



Процессор полосы немодулированных частот выполняет все функции уровня MAC IEEE802.15.4 (рис. 15.).





Рис. 15. Архитектура процессора полосы немодулированных частот.



8.3.1. Передача



Передача выполняется программным занесением данных, которые будут переданы в буфер кадра Tx/Rx вместе с параметрами, такими как адрес назначения и число повторений, программированием одного из таймеров протокола для указания времени, в которое нужно послать кадр. Это время будет определено программным обеспечением, прослеживающим аспекты более высокого уровня протокола, такие как хронометраж суперрамки и границы интервала. Как только пакет подготовлен, и таймер протокола установлен, блок супервизора управляет передачей. Когда наступает запланированное время, супервизор управляет последовательностью операций радио-блока и модема для выполнения требуемой передачи. Супервизор может выполнить все алгоритмы, требуемые IEEE802.15.4, такие как CSMA/CA и GTS без вмешательства процессора, включая повторения и случайные возвраты.

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


8.3.2. Прием



При приеме радио-блок настроен на получение данных на специфическом канале. По получении данных от модема кадр направляется в буфер кадра Tx/Rx, где и заголовок и данные кадра могут быть прочитаны программным обеспечением протокола. При получении заголовка кадра может быть сгенерировано прерывание. Полученный кадр от модема передается в генератор контрольной суммы; в конце приема результат контрольной суммы сравнивается с контрольной суммой в конце кадра для контроля правильности получения кадра.



8.3.3. Авто подтверждение



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



8.3.4. Посылка маяка



Процессор полосы немодулированных частот может автоматически генерировать и послать кадры «маяк»; частота повторения испускания маяков запрограммирована центральным процессором. Кадр «маяк» содержит данные, предоставленные процессором. Процессор полосы немодулированных частот формирует маяки и передает их без вмешательства центрального процессора.



8.3.5. Безопасность



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

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

Некоторые протоколы (например ZigBee) требуют выполнения операций безопасности над буферизированными данными. Аппаратная реализация механизма кодирования значительно ускоряет обработку содержимого этих буферов. Библиотека AES для JN513x обеспечивает две операции vAHI_SecurityEncode () и vAHI_SecurityDecode (), которые используют механизм кодирования в устройстве и позволяют преобразовывать содержимое буферов памяти. Информация, такая как тип операции безопасности, которая будет выполнена, и  код шифровки/расшифровки также должна быть предоставлена.



9. Цифровой ввод/вывод



К штырькам цифрового ввода/вывода (DIO) на JN513x могут быть приложены сигналы, превышающие VDD2 не более, чем на 2V, т.е. DIO являются ТТЛ-совместимыми.

Схематическое представление ячейки DIO изображено на рис. 16.





Рис. 16. Эквивалентная схема DIO.



Контроллер снабжен 21 выводом DIO каждый из которых может быть настроен или как ввод или как вывод. Каждый штырек снабжен внутренним резистором на 45kΩ, использование которого задается программно. Большинство штырьков DIO являются мультиплексными с периферийными устройствами. Как только включают внешнее устройство, оно использует соответствующие штырьки для своих целей. После сброса все внешние устройства выключены, штырьки DIO конфигурированы на ввод, внутренний резистор задействован.



Когда периферийное устройство отключено, штырьки DIO, связанные с ним, могут использоваться как цифровые вводы или выводы. Конфигурация каждого штырька DIO программируется индивидуально. Направление передачи информации устанавливается функцией vAHI_DioSetDirection (), которая управляет сигналами разрешения вывода (OE) и ввода (IE). Чтением и записью управляют, используя vAHI_DioSetOutput () и u32AHI_DioReadInput () функции. Использованием резистора, Rpu для каждого штырька управляют через vAHI_DioSetPullup ().




Рис. 17. Блок-схема узла DIO.



При сбросе штырьки DIO находятся в состоянии высокого импеданса. В спящем и глубоко спящем режимах штырьки DIO сохраняют направление ввода – вывода, штырьки, запрограммированные на вывод сохраняют уровень, который был установлен до перехода в спящий режим. Сконфигурированный на ввод штырек может использоваться для генерации прерывания (возможен выбор перепада импульса или от низко к высокому или высокого к низкому лог. уровню); прерывание может быть разрешено или замаскировано. Когда устройство бездействует, с помощью прерываний можно разбудить его. Выбор перепада прерывания осуществляется с использованием vAHI_DioInterruptEdge (). Разрешение и маскировка прерываний DIO осуществляется функцией vAHI_DioInterruptEnable (), в то время как состояние прерывания DIO проверяется u32AHI_DioInterruptStatus ().


10. Последовательный периферийный интерфейс



Последовательный периферийный интерфейс (SPI) обеспечивает высокоскоростную синхронную передачу данных между JN513x и периферийными устройствами. JN513x управляет шиной SPI, т.е. является ведущим, а все другие устройства, связанные с SPI, - ведомые под управлением JN513x. SPI обладает следующими особенностями:

Дуплексная, синхронная передача данных с использованием до трех проводников;

Программируемая скорость передачи информации до 16Мбит/с;

Программируемый размер транзакции 8,16 или 32 бита;

Поддержка режимов SPI стандарта 0, 1, 2, 3 для управления соотношением между синхроимпульсами и передаваемыми / получаемыми данными;

Автоматическое подчинение устройств (до 5 шт.);

Маскируемое прерывание завершения транзакции;

Возможность начала передачи данных со старшего или младшего бита.

Шина SPI использует простую схему передачи данных на базе сдвигового регистра. Данные синхронно заносятся в регистр first-in, first-out (FIFO), что позволяет устройствам SPI передавать и получать данные одновременно (рис. 18).







Рис. 18. Блок-схема последовательного периферийного интерфейса.





JN513x содержит три специализированных вывода SPICLK, SPIMOSI, SPIMISO, доступные всем устройствам на шине SPI. Передачи происходят по линиям ввода SPIMOSI  (Master-Out-Slave-In) или вывода SPIMISO (Master-In-Slave-Out) относительно сигнала SPICLK (синхронизация), сгенерированного контроллером.

JN513x обеспечивает выбор пяти подчиненных устройств, используя выводы SPISEL0 - SPISEL4. SPISEL0 - специализированный вывод, соединенный с флэш-памятью, а SPISEL1 – 4 выполняют дополнительные функции выводов DIO 0 - 3 соответственно (рис. 19).







Рис. 19. Подключение устройств SPI.



Интерфейс может передавать данные по 8, 16 или 32 бита без программного вмешательства и может удерживать линии выбора устройств утвержденными между передачами, если необходимо выполнить более длинные передачи.

Скорость передачи данных по шине SPI определяется частотой сигнала SPICLK. JN513x позволяет управлять скоростью передачи данных от 16 МГц до 250 кГц настройкой коэффициента деления делителя частоты. Фаза и полярность импульсов SPICLK также настраиваемы. Они определяют перепад SPICLK, используемый JN513x для выдачи данных на линию SPIMOSI; противоположный перепад будет использоваться для чтения данных с линии SPIMISO. Эти параметры задаются  функцией vAHI_SpiConfigure () (табл. 2).



Таблица 2.

Описание режимов SPI





SPICLK

Режим





Описание



Полярность 

Фаза





0

0

0

Неактивный уровень SPICLK - низкий, фронт импульса позитивен.

Данные, выводятся на SPIMOSI по спаду импульса. Считывание с SPIMISO происходит по фронту импульса

0

1

1

Неактивный уровень SPICLK - низкий, фронт импульса позитивен.

Данные выводятся на SPIMOSI по фронту импульса. Считывание с SPIMISO происходит по спаду импульса.

1

0

2

Неактивный уровень SPICLK - высокий, фронт импульса негативен.

Данные выводятся на SPIMOSI по фронту импульса. Считывание с SPIMISO происходит по спаду импульса.

1

1

3

Неактивный уровень SPICLK - высокий, фронт импульса негативен.

Данные выводятся на SPIMOSI по спаду импульса. Считывание с SPIMISO происходит по фронту импульса.



Выбор линии SPISELn осуществляют функцией vAHI_SpiSelect (). Если более, чем одна линия SPISEL должна использоваться в системе, они должны использоваться в числовом порядке, например если 3 линии выбора SPI должны использоваться, они должны быть SPISEL0, 1 и 2. Количеством линий SPISEL, которое будет использоваться в системе, управляют функцией vAHI_SpiConfigure (). Линия SPISEL может автоматически деутверждаться между транзакциями, если это необходимо, или остается утвержденной до вызова vAHI_SpiSelect ().

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

Транзакция по шине SPI начинается с установки конфигурации функцией vAHI_SpiConfigure (), и затем выбора подчиненного устройства, используя vAHI_SpiSelect (). Передача начинается с вызова функции vAHI_SpiStartTransferxx (), где хх определяет разрядность передачи (8, 16 или 32 бита). Данные помещаются в FIFO буфер данных и передаются синхронно с SPICLK бит за битом. Так как передача является полнодуплексной, то же самое число бит, что и переданное, может быть получено от подчиненного устройства. Данные, которые получены во время этой передачи, могут читаться, используя u32AHI_SpiReadTransferxx () (хх - 8, 16 или 32 бита). После завершения транзакции может быть сгенерировано прерывание. Эта опция задается функцией vAHI_SpiConfigure (). Альтернативно интерфейс может быть опрошен, используя функции bAHI_SpiPollBusy () или vAHI_SpiWaitBusy (). Если подчиненное устройство желает сообщить JN513x,  что у него есть данные для контроллера, для этой цели оно это может быть подключено к одному из выводов DIO, запрограммированный на прием внешнего прерывания.


10.1. Пример программы



Программа инициализирует SPI и выполняет простое чтение из подчиненного устройства. Читаемое устройство требует 40 тактов для посылки 8-битовой команды, 24-битового адреса и получения 8-битовых данных. Это не может быть выполнено посредством единственной передачи, таким образом множественные передачи объединены без автоматического деутверждения выборов. Формы волны, сгенерированные кодом программы, показаны на рисунке 20.



Текст программы:

PRIVATE void vReadFromFlash(uint32 u32Addr,

                                                       uint32 u32NumWords,

                                                       uint32 *pau32Buffer )

{

#define FLASHREADCMD 0x03

#define SPI_SLCT_NONE 0x00

uint32 u32Temp;

uint32 i;



vAHI_SpiConfigure( 1,	                                                 /* количество используемых линий */ 

                                   E_AHI_SPIM_MSB_FIRST,                                /* посылать данные,

начиная со старшего бита */

                                               E_AHI_SPIM_TXNEG_EDGE,               /* передача данных

по спаду импульса */ 

                                               E_AHI_SPIM_RXNEG_EDGE,       /* прием данных по спаду импульса */
                                               0,	                                                            /* частота SPICLK 16MHz */

                                               E_AHI_SPIM_INT_DISABLE,                /* Отключить прерывание SPI */ 

                                               E_AHI_SPIM_AUTOSLAVE_DSABL);     /* Отключить автоподчинение  

                                                                                                                                            устройства */



/* объединить команду чтения в единственное значение, которое будет послано в SPI */ u32Temp = (u32Addr & 0x00FFFFFF) | (FLASHREADCMD << 24);



/* выбор SPI устройства */

vAHI_SpiSelect(E_AHI_SPIM_SLAVE_ENBLE_0);



/* посылка команды чтения и адреса устройству */

vAHI_SpiStartTransfer32(u32Temp);



vAHI_SpiWaitBusy();



for (i=0; i<=u32NumWords; i++)

{

/* чтение данных по 4 байта за раз */

vAHI_SpiStartTransfer32(u32Addr);



vAHI_SpiWaitBusy();



/* чтение в переменную temp */

u32Temp = u32AHI_SpiReadTransfer32();



/* копирование данных в буфер */

memcpy( (pau32Buffer+i), &u32Temp, sizeof(u32Temp) );

	}





/* отключение SPI устройства */

vAHI_SpiSelect(SPI_SLCT_NONE);



}





Рис. 20. Временные диаграммы SPI.


11. Интеллектуальный периферийный интерфейс



Интеллектуальный Периферийный Интерфейс (IP) предназначен для работы с более сложными системами, где есть процессор, требующий беспроводной периферии (рис. 21). Как пример, JN513x может обеспечить реализацию IEEE802.15.4, ZigBee или другую беспроводную сеть на телефон, компьютер, карманный компьютер или игровую консоль. Никакие ресурсы не требуются от главного процессора по сравнению с приемопередатчиком, поскольку выполнение беспроводного протокола может происходит на внутреннем центральном процессоре JN513x.

Интеллектуальный периферийный интерфейс - подчиненный интерфейс SPI, использует штырьки, мультиплексные с линиями DIO. Интерфейс создан для передачи сообщений и данных. Данные, полученные и переданные по интерфейсу IP, скопированы непосредственно в и из специализированной области памяти без вмешательства от центрального процессора. Эта область памяти - интеллектуальный блок внешней памяти - содержит 64 32-разрядных слова, образующие буфер передачи / приема.







Рис. 21. Интеллектуальный периферийный интерфейс.



Интерфейс соответствует протоколу SPI. Имеется возможность выбора фронта синхроимпульса IP_CLK, по которому данные считываются с линии IP_DI интерфейса, и изменяется состояние линии вывода данных IP_DO. Порядок передачи - MSB сначала. Когда устройство неактивно, то есть устройство не выбрано через IP_SEL, выход данных IP_DO в третьем состоянии. Линия IP_INT вывода прерывания позволяет JN513x может сообщить ведущему устройству, что контроллера есть данные для передачи.

Интерфейс IP передает сигналы по линиям IP_CLK, IP_DO, IP_DI, IP_SEL, IP_INT – мультиплексны со штырьками DIO14 - 18 соответственно.


11.1. Формат передаваемых данных



Передачи инициализируются отдаленным процессором активизацей им линии IP_SEL, а заканчиваются деактивизацией IP_SEL.

Передачи данных двунаправлены, трафик в оба направления состоит байта состояния, байта длины данных (числа 32-разрядных передаваемых слов) и пакета данных (от принимающего, и передающего буферов). Первый байт, переданный в любом направлении, является байтом состояния со следующим форматом:



Таблица 3.

Описание полей байта состояния



Бит

Поле

Описание

7:2

RSVD

Зарезервированы, установлены в 0

1

TXRDY

1: Данные поставлены в очередь для передачи

0

RXRDY

1: Буфер готов к приему данных



Если данные поставлены в очередь для передачи, и получатель указал о готовности к приему (RXRDY во входящем байте состояния установлен в 1), следующий переданный байт будет является длиной данных. Если у JN513x или у отдаленного процессора нет никаких данных для передачи, то длина данных должна быть установлена в нуль. Передача может быть закончена отдаленным процессором после посылки ему байта состояния, если  невозможно отправить данные ни в одном из направлений. Это может быть причиной того, что ни у какой стороны нет данных для передачи или получатель не имеет буфера в наличии. Если длина данных является ненулевой, данные из буфера передачи JN513x передаются, начиная с начала буфера. В то же самое время, приемный буфер JN513x заполняется входящими данными с его начала.

Отдаленный процессор, действуя как ведущий, должен определить большую из его приходящих или уходящих передач данных и деактивизировать IP_SEL, когда все передаваемые и получаемые данные переданы. Данные передаются в или из буферов, начиная с самого младшего адреса в буфере; каждое слово транслируется, начиная с MSB на последовательных линиях данных (рис 22).





Рис. 22. Временные диаграммы работы IP.



11.2. Передача по инициативе JN513x



Отправляемые JN513x данные записываются или в 0, или в 1 буфер интеллектуальной области внешней памяти. Затем вызовом функции bAHI_IpSendData () записывается буферное число вместе с длиной данных. Если вызов успешен, активизируется линия прерывания IP_INT, сообщая отдаленному процессору о наличии сообщения, готовом к отправке от JN513x. Когда отдаленный процессор начинает передачу в JN513x активизацией IP_SEL, линия IP_INT деактивизируется. Если передача неудачна и данные не переданы, тогда IP_INT снова активизируется для указания того, что данные все еще ожидают отправки.

Интерфейс может быть сконфигурирован на выработку внутреннего прерывания всякий раз, когда транзакция завершается (например, IP_SEL деактивизируется после начала передачи). Можно замаскировать это прерывание. О конце передачи может сообщить прерывание, или опрос интерфейса функцией bAHI_IpTxDone ()

Для получения данных интерфейс должен сначала быть инициализирован функцией vAHI_IpEnable (). После этого разряд RXRDY, посланный в байте состояния от блока IP, покажет, что данные могут быть получены JN513x. Успешное получение данных может быть обозначено прерыванием, или опросом интерфейса, используя bAHI_IpRxDataAvailable (). Потом данные восстанавливаются, используя bAHI_IpReadData ().

Чтобы одновременно послать и получать данные, приемный и передающий буферы должны быть разными.



11.3. Передача по инициативе удаленного процессора



Отдаленный процессор может инициализировать передачу для отправки данных на JN513x, активизируя подчиненный штырек выбора IP_SEL и генерируя свой байт состояния на линию IP_DI установкой бита TXRDY=1. После получения байта состояния от JN513x он проверяет наличие у JN513x буфера, готового к приему, считывая бит RXRDY. Если бит RXRDY=0, значит JN513x не может принять данные, удаленный процессор должен закончить передачу деактивизацией IP_SEL. Если бит RXRDY =1 -  JN513x может принять данные; процессор должен в течение 8 тактов IP_CLK передать длину его сообщения по IP_DI. Процессор должен продолжить синхронизировать интерфейс, пока не сгенерирует достаточное количество синхроимпульсов для передачи всех данных, определенных в поле длины для JN513x. Затем процессор должен деактивизировать IP_SEL, чтобы показать, что передача закончена.

Данные можно послать в обоих направлениях сразу, но процессор должен гарантировать завершение обеих передач прежде, чем деативизирует IP_SEL.



12. Таймеры



12.1. Периферийный таймер / счетчик



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

16-разрядный делитель частоты с программируемым коэффициентом деления; 

Синхронизируются от системного генератора;

16-разрядный счетчик, 16-разрядные регистры фронта и спада;

Режимы:

Таймера: позволяет генерировать прерывания по достижении счетчиком значений регистров фронта и спада. Работа может быть разрешена внешним сигналом;

Счетчика: подсчитывает перепады входного сигнала. Может подсчитывать фронты, спады или оба перепада;

Модуляции длительности импульса: позволяет задавать временные параметры импульсов и выводить их в единичном или множественном количестве;

Сбора данных: измерение временных параметров приложенного цифрового сигнала;

Дельта-сигмы: режимы с возвращением к нулю (RTZ) и без возвращения к нулю (NRZ);

Блок-схема таймера изображена на рис. 23.







Рис. 23. Блок-схема таймера.



Синхроимпульсы для модуля таймера подаются от генератора на 16 МГц. Они поступают на 16-разрядный делитель частоты, который уменьшает их частоту в 2 в степени предмасштаба раз. Например, если значение предмасштаба равно 2, то частота выходного сигнала делителя составляет 4 МГц. Значение предмасштаба устанавливается функцией vAHI_TimerEnable ().

Работа счетчика может быть разрешена сигналом TIMxCK_GT. Когда эта возможность задействована (используя vAHI_TimerClockSelect ()), счетчик будет остановлен, если на входе лог. «1».

Если функцией vAHI_TimerEnable () разрешены прерывания, они будут генерироваться всякий раз, когда значение счетчика равно значению, сохраненному в регистрах фронта (Rise) или спада (Fall).

Внутренний сигнал разрешения (OE) включает или отключает выход таймера.

Сигналы таймера 0 CK_GT, CAP и OUT являются мультиплексными с DIO8, 9 и 10 соответственно; сигналы таймера 1 CK_GT, CAP и OUT тоже являются мультиплексными с DIO11, 12 и 13. Выбор функциональных возможностей этих штырьков между DIO и таймерами задается программно, но в любом случае таймеры будут функционировать внутренне.


12.1.1. Режим модуляции длительности импульса



Режим (PWM) Модуляции Длительности Импульса позволяет пользователю задавать период и длительность импульса. Импульс может быть сгенерирован однократно или как цепочка импульсов с нормой повторения, равной периоду.

В данном режиме период импульса и длительность его нулевого состояния заносятся в два независимых 16-разрядных регистра (спада и фронта). Содержимое счетчика возрастает и сравнивается с 16-разрядными регистрами фронта и спада. Когда значение счетчика равно значению регистра фронта, на выходе PWM происходит положительный перепад напряжения; когда счетчик достигает значения регистра спада, на выходе происходит отрицательный перепад и схема возвращается к исходному состоянию. В непрерывном режиме при достижении счетчиком значения регистра спада произойдет сброс счетчика и повторение цикла. В зависимости от режима работы значения заносятся в регистры фронта и спада через функцию vAHI_TimerStartRepeat () или vAHI_TimerStartSingleShot (). Выходной сигнал PWM выдается на TIMxOUT, если это разрешено функцией vAHI_TimerEnable ().





Рис. 24.



12.1.2. Режим сбора данных



Режим сбора данных может использоваться для измерения периода времени между перепадами сигнала на входе сбора данных (TIMxCAP). Переход в этот режим происходит посредством вызова функции vAHI_TimerStartCapture (), при этом запускается счетчик. При положительном перепаде входного сигнала содержимое счетчика заносится в регистр фронта, при отрицательном перепаде значение счетчика заносится в регистр спада. Длительность импульса - разница содержимого этих двух регистров, умноженная на период импульса синхронизации (во всех случаях частота синхронизации должна составлять 16 МГц, т.е. значение предмасштаба делителя равно 0). Функция vAHI_TimerReadCapture () останавливает счетчик, считывает содержимое регистров. Содержимое регистров фронта и спада будет обновлено всякий раз при обнаружении перепада импульса на входе сбора данных, поэтому при поступлении нескольких импульсов на TIMxCAP до остановки счетчика, будет сохранена только длительность последнего импульса.





Рис. 25. Режим сбора данных.



12.1.3. Режим счетчика / таймера



Счетчик/таймер может использоваться для синхронизации или генерации прерываний счета, используемых программным обеспечением. В режиме таймера источником импульсов является системный тактовый генератор, частота которого при желании может быть уменьшена делителем. Период таймера программируется в регистр спада, разрешается прерывание соответствия регистра спада. Таймер запускается или как однократный или как повторяющийся таймер (vAHI_TimerStartSingleShot () или vAHI_TimerStartRepeat ()) и генерирует прерывание при достижении счетчиком значения регистра спада.

Режим счетчика может быть использован для подсчета внешних событий. В качестве источника импульсов в этом случае используется входной штырек TIMxCK_GT, число событий программируется в регистр спада. Когда запрограммированное число фронтов сигнала зафиксировано на входном штырьке, генерируется прерывание.



12.1.4. Режим дельта-сигма



Доступен особый режим дельта-сигмы, позволяющий реализовать низкоскоростной ЦАП дельта-сигмы с разрешающей способностью до 16-бит. Это режим требует внешней RC-цепочки, подключенной между выходом DIO и общей шиной. Сгенерированный цифровой поток импульсов интегрируется RC-цепочкой в аналоговое напряжение. Время преобразования определено условием количества тактовых циклов. Длительность сгенерированных импульсов является периодом тактового цикла. Количество выводимых импульсов вместе с параметрами RC интегратора определяют итоговое аналоговое напряжение. Например, генерация приблизительно половины числа импульсов, составляющих законченный период преобразования, создаст напряжение на выходе RC, равное VDD1/2, если RC константа времени выбрана правильно. Во время преобразования импульсы будут псевдослучайно рассредоточены по всему циклу для создания устойчивого напряжения на выходе RC-цепи.

Выходной сигнал утверждается числом тактов, определенных в Высоком наборе регистров, задается vAHI_TimerStartDeltaSigma (), с полным периодом, составляющим 216 циклов. 

Выход преобразователя дельта-сигмы может работать в режимах с возвратом к нулю (RTZ) или без возврата к нулю (NRZ). Режим NRZ позволяет выводить несколько импульсов друг рядом с другом. Режим RTZ гарантирует, что каждый следующий импульс будет отделен от предыдущего по крайней мере одним периодом. Это улучшает линейность, если активный и неактивный периоды импульса различны.



12.1.5. Пример применения таймера / счетчика



Рис. 26 показывает пример применения таймеров JN513x для управления скоростью вращения замкнутой системы. Таймер 0 конфигурирован в режиме PWM; длительность импульса задает средний ток через полевой транзистор и управляет мощностью двигателя.

Таймер 1 конфигурирован на подсчет фронтов импульсов на штырьке clk/gate за постоянный период. Он преобразует поток импульсов от Тахо-датчика в число, пропорциональное скорости мотора. Это число используется прикладным программным обеспечением, выполняющим алгоритм управления скоростью вращения.



Рис. 26. Схема контроля скорости вращения двигателя.



12.2. Таймер тактов



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

32-разрядный счетчик;

28-битовое значение соответствия;

Маскируемое прерывание таймера;

Одиночный, перезапускаемый или непрерывный режимы работы.

Таймер тактов синхронизирован от генератора центрального процессора (16 или 32 МГц), сигнал с которого подается на 32-разрядный сбрасываемый счетчик прямого действия через логический вентиль, управляемый сигналом блока режима (рис. 27). Регистр соответствия сравнивает содержимое счетчика с запрограммированным значением. Это значение может быть запрограммировано, используя vAHI_TickTimerInterval () в диапазоне от 0 до 0x0FFFFFFF. Выход регистра сравнения используется для управления счетчиком в различных режимах, может быть использован для генерации прерываний, если те разрешены. Режим таймера задается через функцию vAHI_TickTimerConfigure (), которая при вызове сбрасывает счетчик в нуль.





Рис. 27. Блок-схема таймера тактов.



Прерывания разрешаются через vAHI_TickTimerIntEnable (). Состояние прерывания определяется bAHI_TickTimerIntStatus () , и, если прерывание сгенерировано, состояние может быть сброшено vAHI_TickTimerIntPndClr ().

В одиночном режиме счетчик начинает отсчет с нуля до тех пор, пока его содержимое не станет равным запрограммированному значению. Затем сгенерируется сигнал соответствия, который вызывает прерывание, если оно разрешено, и счетчик прекращает счет. Счетчик может быть перезапущен при перепрограммировании режима, используя vAHI_TickTimerConfigure ().

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

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



12.3. Таймеры пробуждения



JN513x  содержит два 32-разрядных таймера пробуждения, тактируемых от внутреннего генератора на 32 кГц. Они могут работать во время периода бездействия, когда большая часть устройства выключена, могут быть использованы для  выдержки времени, требуемой приложениями. Таймеры пробуждения не работают во время глубокого спящего режима. могут быть заблокированы в спящем режиме через программное управление. По истечении времени таймера пробуждения, как правило, генерируется прерывание, выводящее устройство из спящего режима. Особенности таймеров:

32-разрядный счетчик обратного действия;

Произвольная работа во время периодов бездействия;

Синхронизация от RC генератора на 32 кГц.

Таймер пробуждения состоит из 32-разрядного обратного счетчика, работающего от внутреннего генератора на 32 кГц. Когда содержимое счетчика достигает нуля, может быть сгенерировано прерывание или произойти пробуждение устройства. При достижении нуля счетчик продолжает обратный отсчет до тех пор, пока его не остановят. Если требуется случай прерывания или пробуждения, прерывания по таймеру должны быть разрешены, используя  vAHI_WakeTimerEnable() перед загрузкой содержимого счетчика. Значение счета загружается через vAHI_WakeTimerStart () и запускает обратный счет; счетчик может быть остановлен в любое время, используя vAHI_WakeTimerStop (). Содержимое счетчика останется таким же, каким оно было при остановке таймера, прерывание  при этом сгенерировано не будет. Состояние таймеров может быть опрошено функцией u8AHI_WakeTimerStatus (), которая показывает, работают ли таймеры. Факт истечения времени таймера может быть выяснен вызовом функции u8AHI_WakeTimerFiredStatus (), которая полезна при замаскированных прерываниях таймера.



12.3.1. Калибровка RC-генератора



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

Чтобы как можно точнее приблизить длительность периода бездействия к запрограммированному, частота RC генератора должна быть близка к 32 кГц точнее начальной 30%-ой погрешности. Для вычисления истинного числа импульсов генератора на 32 кГц, необходимых для нахождения в спящем режиме используется коэффициент калибровки, получаемый сравнением опорного сигнала калибровки от кварцевого генератора с частотой RC генератора во время бодрствования JN513x. Операция следующая:

Нулевой таймер пробуждения блокируется и программируется на несколько импульсов от генератора 32 кГц

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

Когда значение счетчика таймера достигает нуля, калибровочный счетчик останавливается, позволяя программному обеспечению считать из него число импульсов генератора на 16 МГц, принятых в течение нескольких импульсов сигнала 32 кГц, запрограммированных в таймере. Таким образом, истинный период генератора на 32 кГц может быть расчитан и использован при программировании таймера пробуждения для определения периода бездействия с наибольшей точностью.

Калибровка может быть выполнена вызовом функции u32AHI_WakeTimerCalibrate (), которая подсчитывает в течение двадцати импульсов генератора 32 кГц количество импульсов генератора на 16 МГц и возвращает это число. Для RC генератора, работающего точно частоте на 32 кГц возвращаемое значение должно быть равно 10000. Если частота генератора больше 32 кГц, то число будет меньше 10000, если частота меньше - значение будет больше. Например, если получено значение 9000, т.е. частота генератора примерно 35 кГц, то для программирования 2-х секундного периода, в счетчик таймера должно быть загружено число 71 112 ((10000/9000) * (32000*2)), а не 64000.



13. Последовательные передачи данных

JN513x содержит два независимых универсальных асинхронных приемо-передающих (UART) последовательных коммуникационных интерфейса. Они реализуют операции, аналогичные промышленному стандарту 16550A устройства, работающего в режиме FIFO. Каждый интерфейс преобразует данные из параллельного формата в последовательный при передаче и из последовательного в параллельный при приеме. В обоих направлениях 16-байтовый FIFO буфер позволяет центральному процессору считывать и записывать символы на каждой транзакции. Это означает, что центральный процессор освобожден от познаковой обработки данных. Интерфейсы UART обладают следующими особенностями:

Поддержка промышленных стандартов UART NS16450 и NS16550;

16 байтовые приемо-передающие FIFO буферы с прямым доступом к каждому уровню;

Добавляет / удаляет биты начала, останова и контроля четности в / из последовательных данных;

Независимо управляемый передают, получают, состояние и данные, посланные прерывания;

Дополнительное модемное управление сигналами CTS и RTS;

Полностью программируемые форматы данных: скорость в бодах, параметры начала, конца и четности;

Обнаружение ложного бита начала;

Внутренние диагностические возможности: локализация неисправности линии связи;

Управление потоком данных программно или автоматически аппаратными средствами.

Блок-схема UART показана на рис. 28.







Рис. 28. Блок-схема UART.



Характеристики последовательного интерфейса программируются, используя вызов vAHI_UartSetControl (). Он определяет количество информационных разрядов (5, 6,7 или 8), четность, нечетность, обнаружение без четности и генерирует единичные или многократные стоповые биты.

Скорость передачи программируется между 4800, 9600, 19.2k, 38.4k, 76.8k и 115.2 kbaud через функцию vAHI_UartSetClockDivisor (). Для достижения более высоких или нестандартных скоростей передачи можно обращаться непосредственно к регистрам UART .

Предоставлены два аппаратных сигнала управления потоком данных: сброс передатчика (CRT) и запрос передачи (RTS). Сигнал CTS, посланный внешним устройством, сообщает о том,  что внешнее устройство в UART готово получить данные. Сигнал RTS, посланный внешнему устройству, сообщает о готовности принять от него данные. Активный уровень обоих сигналов - низкий. Сигналом RTS управляют функцией vAHI_UartSetControl (), значение CRT может читаться u8AHI_UartReadModemStatus ().. Контроль и управление CRT и RTS – задача программы, обычно выполняемая как часть обработки прерывания. Сигналы не управляют частями аппаратных средств UART, а только указывают программному обеспечению состояние интерфейса UART. Альтернативно, программное обеспечение может установить режим автоматического контроля потока, где аппаратные средства управляют линией RTS , и передают данные при активном входящем сигнале CRT.

Символы читаются из приемного FIFO буфера с помощью u8AHI_UartReadData () (за один вызов считывается один байт), записываются в передающий FIFO буфер с помощью vAHI_UartWriteData (). Приемный и передающий FIFO буферы могут быть сброшены независимо друг от друга, используя vAHI_UartReset (). Состояние передатчика может быть проверено запросом u8AHI_UartReadLineStatus (), который указывает, пуст ли передающий FIFO буфер и если ли передаваемый символ. Состояние получателя также может быть проверено этим запросом, который может указать, зафиксированы ли случаи, такие как ошибка четности, ошибка синхронизации кадра, прерывание разрыва, ошибка переполнения (получен символ при заполненном принимающем буфере).

Сигналы UART 0 CTS, RTS, TXD и RXD – мультиплексные соответственно с DIO4, 5, 6 и 7, а сигналы UART 0 CTS, RTS, TXD и RXD – соответственно с DIO17, 18, 19 и 20. Если использование сигналов CRT и RTS не требуется для работы с внешними устройствами, то они могут быть заблокированы через программное управление, что позволяет использовать штырьки в качестве DIOx.



13.1.	Прерывания



Управление прерываниями блока UART осуществляется функцией vAHI_UartSetInterrupt (). Выработка прерывания может произойти в следующих случаях:

Полученные Данные Доступны: происходит, когда очередь данных в Rx FIFO достигает определенного уровня (уровень может быть задан как 1, 4, 8 или 14).

Передающий FIFO пуст: генерируется при чтении последнего символа из TX FIFO и начале его передачи.

Состояние Линии Получателя: установлен, когда выполняется одно из следующих условий: (1) Ошибка Четности - символ в заголовке приемного FIFO был получен с ошибкой четности, (2) Ошибка переполнения – FIFO заполнен и приемным сдвиговым регистром получен символ, (3) Ошибка кадровой синхронизации - у символа в заголовке приемного FIFO нет правильного стопового бита и (4), Прерывание Разрыва – происходит, если линия RXD находилась в низком состоянии на протяжении передачи всего символа. Источник прерывания определяется, используя u8AHI_UartReadLineStatus ().

Модемное Состояние: генерируется при изменении состояния линии CRT.

	

Применение UART



Следующий пример иллюстрирует подключение UART посредством 9 штырькового соединителя с PC. Программный комплект разработчика использует такой интерфейс для отладки JN513x. Поскольку уровень напряжения на штырьках JN513x не соответствует уровню линии RS232, используется согласующее устройство (рис. 29).







Рис. 29. Соединение JN513х с COM-портом PC.



13.3.	Пример программы



Следующий пример демонстрирует конфигурирование UART0 и вывод сообщения «Hello World»



Текст программы:

/* Выбор uart0 */

vAHI_UartEnable(E_AHI_UART_0);



/* установка скорости передачи */

vAHI_UartSetClockDivisor(0, E_AHI_UART_RATE_38400);



/* установка четности, стартового бита, количество битов данных */

vAHI_UartSetControl(E_AHI_UART_0,

                                     E_AHI_UART_EVEN_PARITY,

                                     E_AHI_UART_PARITY_DISABLE,

                                     E_AHI_UART_WORD_LEN_8,

                                     E_AHI_UART_1_STOP_BIT,

                                     E_AHI_UART_RTS_HIGH);



/* вывод сообщения */

char acstring[] = “Hello World”;

char *pcstring = acstring;



while (*pcstring) 

{

vAHI_UartWriteData(E_AHI_UART_0, *pcstring);

pcstring++; 

}

14. Двухпроводной последовательный интерфейс



JN513x включает промышленный стандартный двухпроводный синхронный последовательный интерфейс (SIF), который обеспечивает простой и эффективный метод обмена данными между устройствами. Для выполнения двунаправленной передачи данных система использует последовательную линию данных (SIF_D) и последовательную линию синхронизации (SIF_CLK) и обладает следующими особенностями:

Совместимый с I2C и SMbus внешними устройствами;

Программируемая частота синхронизации;

Задержка синхроимпульсов медленными устройствами;

Бит подтверждения;

Обнаружение занятости шины;

Поддержка 7 и 10 битовой адресации;

Регистр предмасштаба, установленный функцией vAHI_SiConfigure () , позволяет конфигурировать скорость интерфейса до 400kbit/s. Тактовый генератор обнаруживает задержку синхроимпульсов, создаваемую некоторыми подчиненными устройствами (рис. 30).





Рис. 30. Блок-схема двухпроводного последовательного интерфейса.



Контроллер Байта Команды обрабатывает трафик на уровне байта. Он считывает данные из Регистра Команды и переводит их в последовательности, основанные на передаче одного байта. Установка служебных битов начала, остановки, чтения, записи и подтверждения в регистре команды, используя vAHI_SiSetCmdReg (), позволяет управлять передачей данных по шине.

Сдвиговый регистр ввода - вывода содержит данные, связанные с текущей передачей. Во время операции чтения данные сдвигаются в этом регистре с линии SIF_D. Когда чтение закончено, байт копируется в приемный регистр и может быть прочитан, используя функцию u8AHI_SiReadData8 ().

Во время операции записи содержимое передающего регистра копируется в сдвиговый регистр с последующей выдачей на линию SIF_D. К передающему регистру можно обратиться, используя vAHI_SiWriteData8 (). Можно настроить интерфейс на генерацию прерывания после завершения передачи или приема байта, используя функцию vAHI_SiConfigure (). Если это нежелательно, можно опросить состояние интерфейса с помощью функций bAHI_SiPollBusy () и bAHI_SiPollTransferInProgress ().

Первый байт данных, переданный контроллером после бита начала содержит адрес подчиненного устройства. JN513x поддерживает 7-битовые и 10-битовые адреса, генерируя их в одном или двух процессах передачи адреса. Только устройство с соответствующим адресом ответит возвращением бита подтверждения. Используемый подчиненный адрес указывается в функции vAHI_SiWriteSlaveAddr ().



14.1. Подключение устройств



Линии синхронизации и данных SIF_D и SIF_CLK мультиплексны и линиями DIO 14 и 15 соответственно (рис. 31). Эти линии выполняют функции последовательного интерфейса при активизации его вызовом vAHI_SiConfigure (). Обе линии двунаправлены, соединены с источником питания с помощью внутренних резисторов номиналом 45КΩ. Использование внутренних резисторов задается программно. Однако рекомендуется использовать внешние резисторы номиналом 4.7 kΩ для надежности операций на высоких шинных скоростях, как показано на рисунке. Когда шина свободна, на обеих линиях лог «1». Выходные каскады подключенных к шине устройств должны быть с открытым стоком или открытым коллектором, чтобы выполнить функцию защитного-И. Количество соединяемых с шиной устройств ограничивается исключительно шинным пределом емкости 400pF.







Рис. 31. Подключение устройств к интерфейсу SIF.



14.2. Задержка синхроимпульсов



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







Рис. 32. Временные диаграммы задержки синхроимпульсов.



14.3. Пример программы



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

Выработка сигнала начала;

Передача адреса подчиненного устройства;

Передача данных;

Выработка стопового сигнала.

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

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

Формы сигналов иллюстрирующие работу функции bSIFRead (), показаны на рис. 33.







Рис. 33. Временные диаграммы работы SIF.


Текст программы:

PRIVATE bool_t bSIFRead(uint8 u8SlaveAddress, uint8 *pau8ReadBuffer, uint32

u32Length)

{

int i;

for (i=0; i<u32Length; i++)

{

/* указание адреса подчиненного устройства */

vAHI_SiWriteSlaveAddr(u8SlaveAddress, E_AHI_SI_SLAVE_RW_SET);



/* send read command */

vAHI_SiSetCmdReg(E_AHI_SI_START_BIT, E_AHI_SI_NO_STOP_BIT,

E_AHI_SI_NO_SLAVE_READ, E_AHI_SI_SLAVE_WRITE, E_AHI_SI_SEND_ACK, E_AHI_SI_NO_IRQ_ACK);



while(bAHI_SiPollTransferInProgress()); /* busy wait  */



if (bAHI_SiPollArbitrationLost() | bAHI_SiPollRxNack())

{

/* release bus & abort */

vAHI_SiSetCmdReg(E_AHI_SI_NO_START_BIT, E_AHI_SI_STOP_BIT,

E_AHI_SI_NO_SLAVE_READ, E_AHI_SI_SLAVE_WRITE, E_AHI_SI_SEND_ACK, E_AHI_SI_NO_IRQ_ACK);

return FALSE;

}

if (i < u32Length - 1)

{

/* read and ack */

vAHI_SiSetCmdReg(E_AHI_SI_NO_START_BIT, E_AHI_SI_NO_STOP_BIT,

E_AHI_SI_SLAVE_READ, E_AHI_SI_NO_SLAVE_WRITE,

E_AHI_SI_SEND_ACK, E_AHI_SI_NO_IRQ_ACK);

}

else /* last byte */

{

/* read, stop, nack */

vAHI_SiSetCmdReg(E_AHI_SI_NO_START_BIT, E_AHI_SI_STOP_BIT,

E_AHI_SI_SLAVE_READ, E_AHI_SI_NO_SLAVE_WRITE, E_AHI_SI_SEND_NACK, E_AHI_SI_NO_IRQ_ACK);

}



while(bAHI_SiPollTransferInProgress()); /* busy wait  */



if (bAHI_SiPollArbitrationLost())

{

/* release bus & abort */

vAHI_SiSetCmdReg(E_AHI_SI_NO_START_BIT, E_AHI_SI_STOP_BIT,

E_AHI_SI_NO_SLAVE_READ, E_AHI_SI_NO_SLAVE_WRITE, E_AHI_SI_SEND_ACK, E_AHI_SI_NO_IRQ_ACK);

return FALSE;

}



/* Store data read from device */

pau8ReadBuffer[i] = u8AHI_SiReadData8();

}

/* transfer complete */

vAHI_SiSetCmdReg(E_AHI_SI_NO_START_BIT, E_AHI_SI_STOP_BIT,

E_AHI_SI_NO_SLAVE_READ, E_AHI_SI_NO_SLAVE_WRITE, E_AHI_SI_SEND_ACK, E_AHI_SI_NO_IRQ_ACK);

return TRUE;

}


15. Аналоговая периферия



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

Имеются четыре входа АЦП, два ввода компаратора и два выхода ЦАП (рис. 34). К аналоговым штырькам ввода - вывода на JN513x могут быть приложены сигналы, не превышающие VDD1 более, чем на 0,3В.



Рис. 34.



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

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

Опорное напряжение Vref для АЦП и ЦАП может быть выбрано vAHI_ApConfigure () между внутренним или внешним источником опорного напряжения.

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



15.1. Аналого-цифровой преобразователь



12-битовый АЦП (аналого-цифровой преобразователь) использует алгоритм последовательного приближения для выполнения преобразований с высокой точностью, что как правило требуется в беспроводных сенсорных сетях. У него есть шесть мультиплексных асимметричных входных каналов: четыре доступны внешне, один связан с внутренним температурным датчиком, и один связан с датчиком контроля напряжения питания схемы.



15.1.1. Операция



Входной диапазон АЦП может быть установлен или между 0V и опорным напряжением, или между 0V и двойным опорным напряжением. Может быть использован внутренний или внешний источник опорного напряжения VREF. Например, если VREF=1.2V, входной диапазон АЦП может быть установлен между 0V и 2.4V.

Таблица 4

Параметры АЦП



Опорное напряжение

Указатель уровня

Предельное входное напряжение АЦП

Величина напряжения питания

1.2V

0

1.2V

2.2V - 3.6V

1.6V

0

1.6V

2.2V - 3.6V

1.2V

1

2.4V

2.6V - 3.6V

1.6V

1

3.2V

3.4V - 3.6V



АЦП тактируется сигналом частотой 16 МГц, поделенной до 500 кГц. В процессе преобразования аналоговый вход коммутируется через мультиплексор на вход АЦП, но оцифровка происходит не сразу, а спустя промежуток времени – период отсчета. Период отсчета определен как количество тактов аналого-цифрового преобразователя и может быть запрограммирован как 2, 4, 6 или 8 тактов. Скорость преобразования составляет (2 x интервала выборки) + (14 тактов синхронизации), например если период отсчета установлен как 2 такта, а синхронизация происходит с частотой 500 кГц, то скорость преобразования будет составлять 2 x 2 + 14 = 18 тактов, 36μsecs или 27.7 кГц.

Если входное сопротивление источника аналогового сигнала составляет 1 КΩ и меньше, то период отсчета должен быть установлен в 2 такта. Вход аналого-цифрового преобразователя может быть представлен эквивалентной схемой 5 КΩ резистора цепей переключателя и конденсатора на 8pF. Период отсчета может быть вычислен, путем прибавления исходного сопротивления датчика к сопротивлению переключателя и умножения суммы на емкость - получения константы времени. Предполагая нормальную экспоненциальную RC зарядку, может быть вычислено количество констант времени, требуемое для получения допустимой погрешности. Так, 7 констант времени (значение константы умножено на 7) дают погрешность 0.1 %; таким образом для 12-битовой точности должно быть достаточно произведение константы на 10. Для источника с нулевым сопротивлением умножение константы времени на 10 дает значение 800 nsecs, следовательно, может использоваться наименьший период отсчета в 2 такта.

Период отсчетов АЦП устанавливается с помощью vAHI_ApConfigure (). Номер входа АЦП, его диапазон допустимых значений и разрешение работы указываются для единичного преобразования функцией vAHI_AdcStartSample () или для непрерывного режима функцией vAHI_AdcEnable ().

Когда преобразование сигнала закончено, может быть сгенерировано прерывание. Эта настройка задается с помощью vAHI_ApConfigure (). Альтернативно состояние преобразования может быть получено, используя bAHI_AdcPoll (). При работе в непрерывном режиме рекомендуется использовать прерывания для сообщения о завершении преобразования, так как время преобразования может колебаться от 36 до 60 μsecs. Последовательный опрос состояния преобразования за этот период неэкономичен с точки зрения использования пропускной способности процессора. Результат преобразования может быть считан функцией u16AHI_AdcRead ().

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



15.1.2. Датчик состояния батареи



Датчик контроля напряжения питания позволяет следить за изменением напряжения на шине питания аналоговых схем. Схема датчика основана на делителе напряжения, на выходе которого уровень составляет 0.666 от начального, т.е. делитель позволяет понизить напряжение питания аналоговых схем до величины, находящейся в двойном входном диапазоне АЦП при выбранном внутреннем источнике опорного напряжения. Делитель напряжения заблокирован, если измерения не производятся для избежания непрерывной утечки напряжения.



15.1.3. Датчик температуры



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

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


15.1.4. Пример программы

Следующий пример иллюстрирует регистрацию данных, используя канал ввода ADC1.



Код программы

PRIVATE void vAdcDataLogger(uint16 *pau16DataBuffer, uint32 u32Length)

{

int i;

/* конфигурация аналоговой периферии, прерываний, выбор опорного напряжения */

vAHI_ApConfigure(   E_AHI_AP_REGULATOR_ENABLE,

 E_AHI_AP_INT_DISABLE,

 E_AHI_AP_SAMPLE_2,

 E_AHI_AP_CLOCKDIV_500KHZ,

 E_AHI_AP_INTREF);



while (!bAHI_APRegulatorEnabled);



/* конфигурация и разрешение работы АЦП */

vAHI_AdcEnable(E_AHI_ADC_CONVERT_ENABLE,

       E_AHI_AP_INPUT_RANGE_1,

       E_AHI_ADC_SRC_ADC_1);

while(TRUE)

{

for (i=0;i<u32Length;i++)

{

vAHI_AdcStartSample();

/* пуск АЦП */

while(bAHI_AdcPoll());

/* ждать завершения операции */

pau16DataBuffer[i] = u16AHI_AdcRead();

/* сохранить значение в буфер */ 

}

}

}



15.2. Цифро-аналоговый преобразователь



Цифро-аналоговый преобразователь (ЦАП) имеет два выходных канала, способен к выдаче напряжений в диапазоне от 0V до Vref или от 0V до 2Vref (где Vref выбиранется между внутренним или внешним источником опорного напряжения VREF) с разрешающей способностью 11 бит и минимальным временем преобразования 9μsecs (при частоте синхронизации 2 МГц).



15.2.1. Операция



Программирование тактового периода с помощью vAHI_ApConfigure () позволяет найти компромисс между скоростью преобразования и разрешающей способностью. Полная 11-битовая разрешающая способность достигается при тактовой частоте 250 кГц.

Период преобразования ЦАП вычисляется по той же формуле, что и период преобразования АЦП и может изменяться от 9 до 120uS. Выводимые значения ЦАП могут быть обновлены во время работы АЦП.

Функция vAHI_ApConfigure () позволяет также выбрать источник опорного напряжения, разрешить / замаскировать прерывания ЦАП; она является общей для настройки и ЦАП, и АЦП. Диапазон вывода ЦАП и начальное выводимое значение задаются vAHI_DacEnable (); значение может обновляться с помощью vAHI_DacOutput (). Запрос bAHI_DacPoll () может использоваться для определения, занят ли канал ЦАП выполнением преобразования. Функция vAHI_DacDisable () позволяет выключить ячейку ЦАП.



15.2.2 Пример программы



Следующий пример кода иллюстрирует вывод пилообразного напряжения на штырьке 29 (DAC1)



Код программы

PRIVATE void vDacSawtooth(void)

{

uint16 u16InitalValue = 0;

int i;



/* конфигурация аналоговой периферии, прерываний, выбор опорного напряжения */

vAHI_ApConfigure(   E_AHI_AP_REGULATOR_ENABLE,

 E_AHI_AP_INT_DISABLE,

 E_AHI_AP_SAMPLE_2,

 E_AHI_AP_CLOCKDIV_2MHZ,

 E_AHI_AP_INTREF);



while (!bAHI_APRegulatorEnabled);



/* конфигурация и разрешение работы ЦАП */

vAHI_AdcEnable(E_AHI_AP_DAC_1,

       E_AHI_AP_INPUT_RANGE_1,

       E_AHI DAC RETAIN DISABLE,

u16InitalValue);

while(TRUE)

{

for (i=0;i<2048;i++)

{

/* вывод значения */

vAHI_DacOutput(E_AHI_DAC _1, i);



/* ждать освобождения канала */

while(bAHI_DacPoll()); 

}

}

}


15.3. Компараторы



JN513x содержит два аналоговых компаратора COMP1 и COMP2, которые позволяют работать с полным диапазоном напряжения питания VDD1. Уровень гистерезиса (общий на оба компаратора) может быть установлен в номинальное значение 0mV, 10mV, 20 mV или 40mV, используя функцию vAHI_ComparatorEnable (). Эта функция позволяет также выбрать в качестве источника отрицательного входного сигнала каждого компаратора (COMP1M и COMP2M) один из выводов DAC1 или DAC2 (используемых в качестве внутренних источников опорного напряжения компараторов для COMP1M и COMP2M соответственно) или внешние штырьки контроллера. Выходы компаратора соединены с внутренними регистрами и могут быть опрошены функцией u8AHI_ComparatorStatus () . Компараторы могут использоваться для генерации прерываний, что задается с помощью vAHI_ComparatorIntEnable (). Компараторы могут быть заблокированы функцией vAHI_ComparatorDisable () для уменьшения потребляемой мощности.

Компараторы могут работать в режиме малой мощности, но время их реакции в этом режиме медленнее обычного. Этот режим может использоваться во время бодрствования, однако он особенно полезен в спящем режиме для пробуждения JN513x, когда важно низкое потребление энергии. Функция vAHI_ComparatorIntEnable () допускает установку активного перепада выходного сигнала компаратора для подачи прерывания. В спящем режиме отрицательный входной сигнал по умолчанию снимается с внешних штырьков.



16. Управление питанием



16.1. Режимы работы



JN513x может работать в трех операционных режимах, которые дают возможность управлять потребляемой мощностью системы для максимизации срока службы батарей:

Активный режим обработки;

Спящий режим;

Глубокий спящий режим.

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



16.1.1. Домены мощности



У JN513x есть следующие домены мощности:

Домен электропитания VDD: запитывает таймеры пробуждения и контроллер, блок DIO, компараторы и внутренний генератор на 32 кГц. Этот домен работает от внешнего источника (батареи) и работает всегда. В спящем режиме таймеры пробуждения, контроллер и генератор на 32 кГц могут быть включены или выключены через программное управление.

Цифровой Логический Домен: запитывает интерфейс SPI, центральный процессор, ROM, контроллер полосы немодулированных частот, модем и процессор кодирования. Этот домен выключен в спящем режиме.

Аналоговый Домен: запитывает АЦП, ЦАП и температурный датчик. Домен выключен в спящем режиме, может быть включен / выключен в активном режиме обработки через программное управление.

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

Радио-Домен: питает радио-интерфейс. Он работает во время передачи и получения данных и управляется процессором полосы немодулированных частот.



16.2. Активный режим



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

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



16.2.1. Режим дремоты центрального процессора



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



16.3. Спящий режим



JN513x переходит в спящий режим под управлением центрального процессора посредством использования vAHI_PowerDown () функции. В этом режиме многие из внутренних функций чипа отключены с целью экономии энергии, однако состояние штырьков DIO не изменяется, включая выводимые значения, что позволяет сохранить интерфейс с внешним миром. Выводы ЦАП переключены в состояние высокого импеданса.

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

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

Процесс пробуждения подобен последовательности событий процесса сброса: генератор на 16 МГц запускается, центральный процессор включается, и сброс удаляется. Программное обеспечение определяет, что это сброс от бездействия.

16.3.1. Пробуждение по таймеру



JN513x содержит два 32-разрядных таймера пробуждения, которые являются счетчиками, синхронизированными от генератора на 32 кГц, и способными программироваться для генерации сигнала пробуждения. После пробуждения таймеры продолжают работать. 

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



16.3.2. Пробуждение по событиям на линиях DIO



Любой штырек DIO, используемый как вход, может использоваться для пробуждения. Эта возможность может быть задана функцией vAHI_DioInterruptEnable (), тип перепада (фронт или спад) задается функцией vAHI_DioInterruptEdge (). Даже когда группы линий DIO конфигурированы как UARTы, таймеры и т.д., любая входная линия в этой группе может все еще использоваться для пробуждения. Это означает, что внешнее устройство, общающееся по интерфейсу UART, может пробудить бездействующее устройство, активируя свой штырек RTS.



16.3.3. Пробуждение по компаратору



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



16.4. Глубокий спящий режим



В глубоком спящем режиме контроллер потребляет самую низкую мощность. Все переключаемые домены мощности выключены, остановлены некоторые функции в домене VDD, включая генератор на 32 кГц. Переход в режим происходит при выполнении vAHI_PowerDown () функции. Из этого режима контроллер может выйти при выключении питания, аппаратном сбросе на штырьке RESETN, или случай на штырьке DIO. Случай DIO в этом режиме вызывает сброс чипа.


Заключение



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

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

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

Возможности использования сенсорных сетей простираются далеко за пределы жилища, офиса или медицинского учреждения — эксперты называют, прежде всего, экологию и службы спасения: крошечные датчики, разбросанные с самолетов над лесными массивами, поднимут тревогу при возникновении пожара, помогут отыскать заблудившихся туристов, передадут в диспетчерский центр по самоорганизующейся беспроводной сети исчерпывающий сведения о состоянии «зеленого океана». Они же могут следить за созреванием урожая, информируя фермеров о нехватке влаги, удобрений и пр. Используя сенсорную сеть для сбора информации о состоянии среды обитания в птичьем заповеднике на острове Грейт-Дак (штат Мэн), биологи совместно с сотрудниками Intel получили данные об особенностях поведения редких видов птиц, что раньше было невозможно. И это только малая часть широчайших перспектив сенсорных сетей.

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