Предисловие
Прибор AT86RF211 компании Атмел, ранее известный как TRX01, является специализированным однокристальным приемопередатчиком для беспроводных приложений с низким уровнем напряжения питания. Рабочий диапазон прибора оптимизирован в полосе частот от 400МГц до 950МГц. Высокий уровень интеграции и гибкость конфигурирования обеспечивают возможность применения приемопередатчика в телеметрии, системах дистанционного управления, сигнализации, радиомодемах, системах автоматического контроля, ручных терминалах, высокотехнологичных игрушках и многих других приложениях. Двухсторонний обмен позволяет использовать прибор для защищенной передачи информации с проверкой и подтверждением её правильности. AT86RF211 легко конфигурируется для различных применений, в том числе для внешней фильтрации сигналов (ограничение полосы пропускания, улучшение селективности, фильтрации помех, изменения уровня и т.д.), изменения протоколов связи (одноканальные и многоканальные решения). AT86RF211 хорошо адаптируется для батарейных приложений, поскольку требуемый уровень питающего напряжения находится в пределе от 2.4В до 3.75В. Наличие режима пробуждения, перехода в активный режим по получению запроса от передатчика, способствует энергосбережению и увеличению срока работы от одного комплекта батарей.
Общий обзор функционирования
AT86RF211 является внешним радиочастотным устройством для AVR микроконтроллера, содержащим передатчик, приемник и синтезатор с реально достижимой скоростью передачи до 64кбит/с. Синтезатор реализован на основе фазовой автоподстройки частоты и точной цифровой установки несущей с шагом 200 кГц. Высокая избирательность достигнута за счет использования схемы супергетеродина с двойным преобразованием. Выходная мощность устанавливается цифровым способом и имеет 8 уровней в диапазоне +10 dBm Дальность связи изменяется от 30 метров в закрытом помещении до 300 метров на открытом пространстве.
Выбор частоты осуществляется подключением различных внешних элементов с использованием функции цифровой подстройки. Из внешних компонентов необходим кварцевый резонатор, керамический фильтр, элементы согласования антенны и фильтрующие компоненты питания. Все настройки приемопередатчика производятся записью и чтением служебных регистров, в которых храниться информация о параметрах уровня напряжения батареи питания, состоянии фазовой автоподстройки, уровня принимаемого сигнала RSSI (Received Signal Strength Indication). Обмен данными между радиочастотным модулем и микроконтроллером выполняется по трехпроводной линии связи (SLE, SCK, SDATA) посредством регистров ввода/вывода общего назначения МК, которые используются для чтения и записи данных в 16 внутренних регистров AT86RF211. Из них 8 регистров используются для конфигурирования нормального режима обмена данными, 4 регистра для режима "wake-up" и 4 регистра для реализации специальных функций, определяемых приложением. Наиболее часто используемые биты расположены в старших разрядах регистров. Режимы чтения и записи позволяют осуществлять доступ к отдельным битам регистра.
Обычный режим работы
В нормальном режиме микросхема конфигурируется микроконтроллером установлением частоты и режим "приема" Rx или "передачи" Tx. В режиме "передача" микросхема действует как конвейер данных, поступающих на вывод DATAMSG, немедленно транслируя их в эфир (Tx). В режиме "прием" сигнал, поступающий с антенны, демодулируется и передается побитно в МК по тому же выводу DATAMSG (Rx). Сохранение данных и обработка их в приемопередатчике не производится.
Если проектируется асинхронный интерфейс UART, то оба вывода RхD и TхD микроконтроллера соединяются с двунаправленным вводом/выводом DATAMSG, организуя полудуплексную передачу. При отсутствии передачи данных вывод TхD должен находиться в высокоимпедансном состоянии. Вывод DATACLK используется для синхронной передачи и поэтому при использовании UART не задействован. Для организации синхронной передачи данных между AVR и AT86RF211 необходимо использовать либо интерфейс I2C-bit banging, либо SPI интерфейс высокоскоростного обмена данными.
Выводы SDATA, SCK и SLE подключаются к выводам общего назначения микроконтроллера. Если используется экономичный режим, то вывод wakeup должен быть подключен к выводу контроллера с функцией прерывания. Следует учитывать скорость передачи по интерфейсу SPI, иначе она может превысить максимально возможную для передачи радиомодулем AT86RF211.
Режим пробуждения
В режиме приема данных приемопередатчик можно перевести в состояние пробуждения. В этом состоянии AT86RF211 выходит из спящего режима по сигналу встроенного таймера и ожидает предварительно определенное сообщение. Если сообщение не принято, процесс повторяется. В случае, если получено ожидаемое сообщение, его поле данных сохраняется в AT86RF211 (длинной до 32 бит), при этом приемопередатчик генерирует сигнал пробуждения для микроконтроллера по линии вывода WAKEUP.
Описание цифрового интерфейса управления AT86RF211
Для управления и мониторинга за работой AT86RF211 существует трехпроводной цифровой интерфейс, который имеет следующие линии управления:
SLE - вход разрешения чтения/записи данных.
SCK - тактируемый вход для синхронизации чтения/записи данных.
SDATA - двунаправленная линия связи для чтения/записи данных.
Сигнал SLE используется для защиты от перезаписи значений регистров, т.е. если на входе SLE установлена лог. "1", то AT86RF211 игнорирует все процессы чтения и записи на линиях SCK и SDATA.
Все операции чтения и записи начинаются с перевода линии SLE из лог. "1" в лог. "0", и заканчиваются переводом линии SLE из лог. "0" в лог. "1". Только одна операция может быть выполнена за один цикл доступа, т.е. только один регистр может быть считан или перезаписан.
Формат записи/чтения регистра по цифровому интерфейсу
Формат сообщения имеет три поля:
Поле адреса ( A[3:0] ) - длинна данного поля 3 бита, первым идет старший бит.
Бит признак операции ( R/W ) - если бит, равен 1, то операция записи, если бит, равен 0, то операция чтения.
Поле данных ( D[31:0] ) - длинна данного поля переменная, максимальная его длинна 32 бита, первым идет старший бит.
Режим записи регистра (R/W = 1)
В режиме записи запись бит адреса, бита признака, и бит данных происходит по нарастающему фонту сигнала SCK. При записи в регистр, если количество записываемых бит данных меньше битовой длинны регистра, то младшие биты не перезаписываются, если количество записываемых бит данных больше битовой длинны регистра, то лишние биты игнорируются. Процесс записи данных в регистр не требует ожидания на сохранение данных, т.е. после перехода сигнала SLE в уровень лог. "1" можно производить перезапись следующего регистра.
Режим чтения регистра (R/W = 0)
В режиме чтения запись бит адреса, и бита признака происходит по нарастающему фонту сигнала SCK, а чтение бит данных происходит по спадающему фронту сигнала SCK. При этом первым читается старший бит данных регистра. Вывод SDATA переходит из состояния вход в состояние выход, когда фронт записи бита признака переходит в лог. "1". Вы можете остановить чтение данных из регистра (переводом сигнала на линии SCK в лог. "1") в любой момент времени. Вывод SDATA обратно переходит в состояние вход, когда сигнал SLE переводится в состояние лог. "1".
Примечание: R/W - регистр доступен для записи и чтения; R - регистр доступен только для чтения; W - регистр доступен только для записи;
Алгоритм начальной инициализации AT86RF211 для работы в одноканальном режиме.
Сброс AT86RF211 записью в регистр RESET.
Инициализировать основной регистр управления CNRL1
PDN = 0 (off)
RXTX = 1 (TX)
DATACLK = 0 (DTCLK off)
TXLOCK = 1 (on)
PAPDN = 0 (PA off)
WUEN = 0 (off)
LNAGSEL = 0 (max gain)
MVCC = 0 (MRSSI)
TRSSI = 010000 (RSSI level)
HRSSI = 010 (RSSI hyst.)
TXLVL = 111 (PA power)
TXFS = 00 (F0-F1)
RXFS = 10 (F2)
XTALFQ = 0 (div/1)
FSKBW = 0 (25kHz)
FSKPOL = 1 (direct)
DSREF = 0 (external).
Инициализировать дополнительный регистр управления CNTR2
DATARATE = 42B (00010000101011) - задаем скорость передачи данных 9600.
DATATOL = 16 [3%] (00010110) - 3% разброс по скорости.
LDCK = 0 (simple) - оставляем параметр не измененным.
N0LD2 = 0010 (unlock condition) - оставляем параметр не измененным.
N1LD2 = 10111 (lock condition) - оставляем параметр не измененным.
Задаем значения регистров F0, F1, F2 для требуемой частоты.
Все, на этом процесс инициализации закончен, далее мы переключаем AT86RF211 в необходимый режим работы, а именно в режим приема или передачи.
Замечания разработчика
Действуя строго в рамках документации производителя, специалисты наверняка столкнуться с проблемами при отладке своих решений на базе AT86RF211. Пройдя это путь, хотел бы поделиться собственным опытом, чтобы возможности столь интересного прибора не оказались невостребованными из-за не вполне качественной документации.
Основным и первым препятствием при отладке стал запуск генератора для синтезатора частот. Запуск генератора происходил нестабильно, при этом подбор емкостей, отличающихся от типичных номиналов, положительных результатов не приносил. Решение проблемы заключается в том, чтобы параллельно емкости C2 установить резистор номиналом 3.3кОм.
Непросто оказалось и задать требуемую частоту приема и передачи, то есть определить, какие значения следует заносить в регистры F0, F1 и F2, поскольку в документации отсутствует информация об алгоритмах расчета значений данных регистров. При общении с разработчиками микросхемы из фирмы Atmel удалось получить программу (TRX_EXE.EXE), которая генерирует файл c рассчитанными значениями регистров F0, F1 и F2.
Для расчета значения регистров F0, F1 и F2 используются следующие параметры:
Reference Frequency ( Hz ) - частота задающего генератора синтезатора частоты в герцах, данный параметр может принимать два значения либо 10245000Гц, либо 20945000Гц.
Start Channel ( Hz ) - рабочая частота приемопередатчика в герцах, ее значения согласно требованиям для приемопередатчика могут принимать от 400000000Гц до 950000000Гц.
Deviation ( +/- Hz) - значение девиации частоты в герцах, по умолчанию задается значение 10кГц.
Intermediate Freq ( +/- Hz ) - значение промежуточной частоты в герцах, по умолчанию 10.7МГц (если кварцевый генератор 10245000).
Step ( Hz ) - шаг, или иными словами точность настройки.
Number of channels - количество каналов.
Output File - имя формируемого исходящего файла.
Memory Type - тип памяти, в которой будут храниться сформированные данные, по умолчанию const.
TX/RX Separate - при установке данного флажка, программа формирует отдельно значения для регистра режима приема, и отдельно для регистров режима передачи.
Little Endian/Big Endian - формат сохранения рассчитанного значения регистров, если выбран Little Endian, то рассчитанное значение сохраняется младшим битом в конце, если Big Endian, то старшим битом в конце.
Mode - режим формирования данных
High Resolution - режим высокого разрешения, в этом режиме размерность генерируемых частотных регистров 32 бита, при этом задаваемая точность синтезируемой частоты может быть до 200Гц. Этот режим рекомендуется, поскольку предлагает высокую точность и простоту работы с регистрами.
25 Bits - режим 25 бит, как можно заметить в данном режиме, длинна формируемого значения регистров не 32 бита, а 25 бит. Этот режим рекомендуется, если у вас не хватает памяти в микроконтроллере для хранения переменных, но вам потребуется поддержать декодирование данных перед тем как их заносить в регистр. Этот режим не уменьшает точность синтезируемой частоты, но требует дополнительных затрат при работе с регистрами.
P Const - режим P=cst, в этом режиме длинна формируемого значения регистров 24 бита, при этом точность синтезируемой частоты 10кГц. Этот режим не рекомендуется использовать. Используйте его, если у вас действительно критично с объемами памяти в микроконтроллере.
По завершению ввода параметров, необходимых для решения задачи, следует нажать клавишу [Generate!], после чего в директории появятся файлы [output.c] и [output.c.log], в которых находятся значения регистров F0, F1 и F2.
Последней существенной проблемой стала чувствительность выходного усилителя приемопередатчика к шумам напряжения питания. Пришлось выполнить замену RC фильтров по питанию на LC.
Те, кто преодолеет перечисленные проблемы, наверняка получат удовольствие от работы с этим многофункциональным прибором. На базе AT86RF211 может быть создано много разнообразных приборов, а сам он может стать базовым устройством для компаний, заинтересованных в разнообразных приложениях, включая многоканальные и энергосберегающие.
|