№8 / 2017 / статья 2

Бытовая магия и ее разоблачение: запуск приемопередатчика S2-LP

Олег Пушкарев (КОМПЭЛ)

Новый узкополосный приемопередатчик S2-LP производства STMicroelectronics, способный работать в диапазонах 868 или 433 МГц – отличный вариант для применения в беспроводных устройствах с повышенными требованиями к устойчивости канала связи, от распределенных бытовых и промышленных датчиков до сложных систем безопасности. Инженерам, имеющим базовые знания в области радио, для упрощения знакомства с новой микросхемой ST предлагает отладочную плату STEVAL-FKI868V1 и программный набор разработчика STSW-S2LP-DK.

Как и любая предметная область, беспроводная передача данных не является каким-то особенно сложным разделом радиоэлектроники, однако для многих она все еще представляется чем-то вроде магии. Для того чтобы максимально упростить знакомство со своим новым узкополосным приемопередатчиком S2-LP, компания ST выпустила недорогую плату STEVAL-FKI868V1 и программный набор разработчика STSW-S2LP-DK, с помощью которых можно буквально за считанные часы запустить беспроводную передачу данных в диапазоне 868 МГц.

Познакомимся и мы с работой микросхемы приемопередатчика S2-LP – без пайки и написания хотя бы одной строчки кода. При этом мы будем отправлять и принимать пакеты, измерять технические параметры и даже тестировать совместимость с приемопередатчиками других производителей. Для этого будет использоваться графическая оболочка S2-LP DK GUI, которая сводит все взаимодействие с трансивером к вводу требуемых значений и работе с меню.

Подготовка к работе

Для повторения описанных в статье экспериментов потребуются следующий набор аппаратных средств (рисунок 1):

Рис. 1. Платы STEVAL-FKI868V1-R и NUCLEO-L152RE

Рис. 1. Платы STEVAL-FKI868V1-R и NUCLEO-L152RE

Также необходимо иметь какую-либо антенну 868 МГц с разъемом SMA, например, BY-868-02 SMA-M R/A, и кабель MiniUSB.

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

Программный пакет STSW-S2LP-DK для Windows (XP SP3, Vista, 7 или 10) можно скачать с сайта STMicroelectronics. На момент написания статьи доступна версия 1.2.0. Установка софта происходит быстро, но для удобства последующего доступа я использовал при установке путь не по умолчанию, а в корневой каталог диска. В результате на ПК получилась структура папок, показанная на рисунке 2.

Рис. 2. Состав комплекта ПО STSW-S2LP-DK

Рис. 2. Состав комплекта ПО STSW-S2LP-DK

В состав ПО входит собственно графическая оболочка S2-LP DK GUI, библиотека S2LPLibrary (S2-LP Low Level API v. 1.3.0), примеры кода, USB-драйвера и бинарные файлы для работы с платой Nucleo-L152E (Nucleo-L053R8), а также примеры С-кода IAR и Keil, реализующие следующий функционал:

  • генерацию непрерывной несущей;
  • базовый прием-передачу пакета;
  • прием-передачу пакетов wM-Bus;
  • прием с микропотреблением (Sniff-mode);
  • отправку длинных пакетов (payload —> FIFIO);
  • прием-передачу с синхронизацией по времени;
  • проверку занятости канала перед передачей (CSMA);
  • автоподтверждение и повторную отправку;
  • обмен текстовыми сообщениями через UART.

Функционал многих вышеприведенных примеров можно протестировать без реального программирования, просто управляя трансивером через оболочку S2-LP DK GUI.

Подготовка «железа» сводится к установке платы STEVAL-FKI868V1-R в соответствующие разъемы платы NUCLEO-L152RE и подключению к ПК. После автообнаружения и установки драйверов необходимо загрузить в плату NUCLEO-L152RE специальную прошивку, которая разбирает команды, идущие от Windows-оболочки через виртуальный UART, и превращает их в обращения к регистрам приемопередатчика через SPI-интерфейс между STM32L152 и S2-LP. Самый простой способ программирования платы NUCLEO-L152RE заключается в перетаскивании мышкой файла C:\S2-LP DK_1.2.0\Binary\S2LP_CLI_NUCLEO_L1.bin (именно .bin, а не .hex) в папку Nucleo, которая появляется при подключении платы к ПК (рисунок 3).

Рис. 3. Программирование платы NUCLEO-L152RE для работы с S2-LP DK GUI

Рис. 3. Программирование платы NUCLEO-L152RE для работы с S2-LP DK GUI

Если вы будет работать с платой Nucleo-L053R8, то, соответственно, нужно будет использовать файл S2LP_CLI_NUCLEO_L0.bin.

Есть еще один способ программирования – непосредственно из программы S2-LP DK GUI. Для этого откройте меню Tools → Firmware Upgrade и выберите файл S2LP_CLI_NUCLEO_L1/L0.hex, затем нажмите “Open” и ждите окончания загрузки Firmware.

Запускаем S2-LP DK GUI

Для старта программы S2-LP DK GUI можно воспользоваться ссылкой из меню «Пуск» или просто запустить файл C:\S2-LP DK_1.2.0\GUI\ S2-LP DK.exe.

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

Рис. 4. Запуск оболочки S2-LP DK GUI

Рис. 4. Запуск оболочки S2-LP DK GUI

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

Даже если у вас нет платы Nucleo, с оболочкой можно работать в режиме эмуляции. Для этого нужно просто нажать кнопу “Open”, и вы сможете задавать параметры радиоканала и получать соответствующие им значения регистров.

Для физического подключения к плате необходимо в списке выбрать плату, подключенную к ПК (рисунок 5). В списке отображаются все существующие на данном ПК аппаратные и виртуальные COM-порты.

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

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

Теперь перед нами рабочий интерфейс программы со всеми окнами, меню и закладками (рисунок 6).

Рис. 6. Рабочий интерфейс программы S2-LP DK GUI

Рис. 6. Рабочий интерфейс программы S2-LP DK GUI

Наличие значений в окнах говорит о том, что обмен данными с приемопередатчиком происходит нормально. Если вы пытаетесь подключиться к плате Nucleo без корректно подключенного трансивера S2-LP, то вы получите соответствующее сообщение (рисунок 7).

Рис. 7. Сообщение об ошибке (микросхема S2-LP не подключена)

Рис. 7. Сообщение об ошибке (микросхема S2-LP не подключена)

Панель Radio Setting

Панель Radio Setting всегда отображает текущие настройки радио S2-LP:

  • рабочую частоту (frequency base) 430…470 или 860…940 MГц;
  • тип модуляции (modulation) 2-FSK; 2-GFSK BT5; 2-GFSK BT 0.5; 4-FSK; 4-GFSK BT 0.5; 4-GFSK BT 0.5; ASK; OOK;
  • скорость передачи данных (data rate) 0,3…250 кбит/с
  • девиацию частоты (frequency deviation) 0,793…761 кГц;
  • полосу пропускания приемника (channel filter) 1,1…769,3 кГц;
  • выходную мощность (output power) -30…14 дБм.

Все эти поля можно изменять в соответствии с требованиями разработчика, но в пределах технических возможностей трансивера S2-LP. При вводе в ячейку нового параметра он не отправляется автоматически в соответствующий регистр микросхемы – для записи новых значений необходимо нажать кнопку “CONFIGURE RADIO”. После ее нажатия вычисляются значения для внутренних регистров S2-LP, затем они отсылаются в микросхему. Далее происходит обратное считывание установленных значений из регистров. Новое содержимое регистров отображается в окне “Register Table”. Вы можете заметить, что введенное вами число немного изменилось. Изменение – результат того, что эта величина, по факту, является производной от номинала используемого кварца. При вычислениях значений для внутренних регистров S2-LP происходит некоторое количество умножений-делений с конечной разрядностью различных коэффициентов, что и приводит к незначительным изменениям.

Выпадающий список Normal (-Boost, -PA) используется для разных схем разводки выходной цепи S2-LP. При работе с платой STEVAL-FKI868V1-R это поле изменять не следует, здесь должно стоять значение “Normal”.

Плата STEVAL-FKI868V1-R рассчитана на работу в диапазоне 868 МГц, поэтому при установке частоты из диапазона 430…470 МГц устройство будет иметь весьма слабую чувствительность, пониженную выходную мощность и ненормируемый уровень побочных излучений. Тем не менее, плата будет работать.

Генерация несущей

Самый первый радиочастотный тест, который имеет смысл делать при запуске собственной платы с приемопередатчиком – это генерация непрерывной несущей (CW). С помощью этого теста можно проверить работу синтезатора частоты, выходную мощность и точность используемого кварца. Этот тест также показывает работоспособность подсистемы питания, так как в данном режиме потребление тока максимально. Проверить наличие генерации можно с помощью анализатора спектра (рисунок 8) либо с помощью другой платы, включенной в режим непрерывного приема. При наличии анализатора спектра можно сравнить фактическую отдаваемую мощность с ожидаемым значением – это покажет возможные неисправности цепи согласования с антенной. Также можно определить отклонение реальной рабочей частоты от расчетного значения и, при необходимости, скорректировать номиналы конденсаторов в цепи кварца в процессе подготовки изделия к запуску в производство. При использовании кварцевого резонатора с точностью 10 ppm выставленная рабочая частота несущей, равная 868,000 МГц, может находиться в пределах 868 МГц ± 8,68 кГц даже при оптимально подобранных нагрузочных конденсаторах. В настройках радиотракта по умолчанию используется достаточно широкая полоса пропускания приемника (100,5 кГц), поэтому первоначальный разброс частоты особо не влияет на качество связи. Однако этот разброс нужно учитывать при экспериментах с узкой полосой приемника.

Рис. 8. Измерение параметров с помощью анализатора спектра

Рис. 8. Измерение параметров с помощью анализатора спектра

Пример реального измерения платы STEVAL-FKI868V1-R при работе с максимальной выходной мощностью приведен на рисунке 9. Как видно из графика, отклонение частоты от номинала получилось равным +3,33 кГц, а выходная мощность составила 15,85 дБм (38,5 мВт).

Рис. 9. Измерение выходной мощности STEVAL-FKI868V1-R

Рис. 9. Измерение выходной мощности STEVAL-FKI868V1-R

Можно измерить потребление тока при различном уровне выходной мощности. При выходной мощности 10 мВт (+10 дБм) S2-LP потребляет около 10 мА. Такое малое потребление в режиме передачи достигнуто благодаря встроенному DC/DC-преобразователю (SMPS) и новому типу усилителя мощности класса Е.

Кнопка TX PN9 START запускает передачу псевдослучайной последовательности данных с заданным типом модуляции. Этот тест нужен для проведения стандартной процедуры инструментальной проверки соответствия параметров радио установленным нормам.

Режим непрерывного приема

Этот режим позволяет оценить уровень сигнала (RSSI) при приеме. Он выполняется на закладке Running RSSI (рисунок 10). На этой закладке можно включить режим непрерывного приема, при котором S2-LP может выдавать RSSI «на лету», то есть без реального приема пакетов. В этом режиме уровень RSSI определяется просто по наличию несущей или помехи на рабочей частоте приемника. Даже без наличия сигнала, например, при подключении ко входу резистора 50 Ом, кривая RSSI будет показывать уровень тепловых шумов в полосе приемника. Это свойство можно использовать, чтобы грубо оценить работоспособность приемника, когда под рукой нет передатчика тестовых пакетов. Отключите антенну и запустите режим непрерывного приема. После подключения антенны уровень RSSI должен немного возрасти – это первый признак работоспособности приемного тракта.

Рис. 10. Режим непрерывного отображения RSSI

Рис. 10. Режим непрерывного отображения RSSI

Если вы на другой плате будете запускать режим генерации несущей (TX CW START) с разными уровнями мощности, то RSSI на этой закладке будет изменяться в соответствии с установленной мощностью передатчика.

Режим непрерывного приема удобно использовать, если вам нужно быстро проконтролировать наличие сигнала на какой-либо частоте. Например, если вы не можете наладить прием в пакетном режиме, то первым делом проверьте на закладке Running RSSI, видит ли ваш приемник сигнал передатчика в принципе.

Полоса приемника (RX Bandwidth) влияет на его чувствительность. Расширение полосы приемника приводит к тому, что он начинает собирать шумы в более широком спектре, что наглядно можно увидеть на графике силы сигнала RSSI. Отключите антенну и измените значение в поле “Channel filter” на 1 кГц, примените настройки кнопкой “Configure radio” и запустите график Running RSSI. Вы должны увидеть линию RSSI в районе -130 дБм. Теперь проделайте то же самое со значениями 50 и 500 в поле “Channel filter”. С расширением полосы уровень RSSI возрастает даже при отсутствии сигнала. Чем ниже уровень RSSI на входе приемника в отсутствии полезного сигнала, тем выше чувствительность вашей системы.

Чтобы FSK-приемник мог нормально декодировать полезный сигнал, его уровень должен быть на 8…12 дБ выше уровня собственных шумов и нежелательных сигналов помех на той же частоте. Сужение полосы приемника улучшает отношение «полезный сигнал/шум». Однако на практике сужение полосы ограничено тремя факторами:

  • ограничениями самой микросхемы;
  • шириной спектра полезного сигнала;
  • стабильностью частоты кварцевого резонатора.

Ширина спектра полезного сигнала для 2FSK/2GFSK-модуляции примерно равна скорости передачи данных (кбод) плюс удвоенное значение девиации (кГц). Например, для 2FSK-модуляции при скорости передачи данных 10 кбит/с и девиации 20 кГц полоса сигнала (ширина его спектра) составляет около 50 кГц. В этом случае полоса приемника не может быть ниже указанного значения. При выборе полосы пропускания приемника нужно также учитывать нестабильность частоты кварцевого резонатора, то есть дополнительно расширять полосу в связи с возможным расхождением реальных рабочих частот приемника и передатчика. Инженерное правило для необходимой полосы приемника выглядит так, как показано на формуле 1 (Carson’s rule):

BWchannel > BWsignal + 4 · XTALppm · fRF (1)

где:

BWchannel – требуемая полоса приемника, кГц;

BWsignal – ширина спектра сигнала, кГц;

XTALppm – отклонение частоты кварцевого резонатора от номинала, ppm;

fRF – рабочая частота передатчика, МГц.

С учетом точности кварца 10 ppm и сигнала 2FSK (10 кбит/с c девиацией 20 кГц), получаем (формула 2):

BWchannel > 50 + 4 · 10 · 0,868 (2)

То есть мы должны использовать полосу приемника не менее 85 кГц.

Настройка параметров пакета

Закладка “Packet setting” позволяет задать параметры отправляемого по эфиру пакета. С помощью программы S2-LP DK GUI можно формировать пакеты только двух типов – “Basic” и “WMBUS”, хотя трансивер еще поддерживает пакеты типа “Stack” (с автоматическими подтверждениями и переповторами) и 802.15.4g. В режиме “Basic” можно настроить пакет таким образом, что S2-LP будет совместим, например, с приемопередатчиками CC1101, CC430, CC1120 и CC1310 производства компании Texas Instruments. Пример настроек для обмена пакетами между S2-LP и CC1350 (СС1310) приведен на рисунке 11. Для обмена пакетами с CC1101 и MSP430 необходимо изменить синхрослово на “0xd391d391”. Не забывайте после изменения любых настроек в окне “Packet Setting” нажимать кнопку “CONFIGURE PACKET”.

Рис. 11. Обмен пакетами между S2-LP и СС1350

Рис. 11. Обмен пакетами между S2-LP и СС1350

Трансивер S2-LP позволяет довольно гибко настраивать параметры пакета. Например, максимальная длина преамбулы по сравнению со SPIRIT1 увеличена до 255 байт. Можно выбирать несколько вариантов расчета контрольной суммы CRC. Длину синхрослова можно задавать любую, в том числе – с битовой точностью (некратно 8 битам). Допускается использование режимов “FEC” (добавление избыточных битов для коррекции ошибок) и “Whitening” (исключение длинных последовательностей нулей и единиц). Итоговые поля пакета представляется в виде графической блок-схемы.

Тест приема-передачи

Закладка “Transmission Test” позволяет отправлять и принимать пакеты. Для данного теста применяются настройки пакета из закладки “Packet settings” и параметры радиосигнала из области “Radio Setting”. В этой закладке есть два варианта работы S2-LP: в роли передатчика (окно TX) или в роли приемника (окно RX).

Отправка сообщений

При отправке сообщений содержимое пакта вводится в поле (1) (здесь и далее нумерация согласно рисунку 12). Отправляемое количество байт полезной нагрузки указывается в поле “Payload length” (2). Максимально допустимое число символов – 255. В зависимости от количества символов, скорости передачи и длины преамбулы производится автоматический расчет длительности пакета (время пакета в эфире), это значение отображается в поле “Packet duration” (3). Можно заполнить отправляемый пакет случайными данными, нажав кнопку “Random” (4). В поле “Total packets” (5) задается число отправляемых пакетов. Для бесконечной отправки поставьте 0. Поле “Ref timer” (6) определяет частоту отправки пакетов. По умолчанию пакеты будут отправляться каждые 500 мс. Содержимое пакета можно задавать как в текстовом, так и в HEX-виде, поставив галочку в поле “HEX” (7). Пакеты начинают отправляться при нажатии кнопки “START” (8). Информация о процессе отправки выводится в окно (9). Переключатель “Normal — LDC” (10) определяет, кто отсчитывает время между отправкой пакетов. В режиме “Normal” трансивером управляет внешний микроконтроллер, и именно он ведет счет времени (Ref timer), а в режиме “LDC” (Low Duty Cycle) используется встроенный в S2-LP таймер сна. Это влияет на потребление, так как в режиме “Normal” между отправкой пакетов S2-LP находится в состоянии “IDLE”, а в режиме “LDC” – в состоянии “Sleep”.

Рис. 12. Окно управления отправкой пакетов

Рис. 12. Окно управления отправкой пакетов

Прием сообщений

Для приема сообщений необходимо переключиться на закладку (1) (здесь и далее нумерация согласно рисунку 13).

Рис. 13. Окно приема пакетов

Рис. 13. Окно приема пакетов

Если после запуска программы вы не изменяли настройки по умолчанию, то можно сразу нажать на кнопку “START” (2). Если у вас есть второй комплект плат, вы можете запустить передатчик, тогда в окне (3) можно увидеть принимаемые пакеты. Для каждого пакета выводится время приема (по часам на ПК) – “Time Stamp” (4), информация об успешном приеме и количестве полезных байт – “Info” (5), уровень сигнала при приеме каждого пакета – “RSSI” (6) и, собственно, принятые данные – “Data Received” (7).

В окне “Test Indicator” (8) выводится статистика принятых пакетов: количество принятых пакетов “Packet received”, количество ошибочных пакетов “Packet Discarded”, процент успешно принятых пакетов “PER” и средний уровень “RSSI”.

В полe “Total packet” (9) устанавливается ожидаемое число пакетов. Выход из режима приема происходит автоматически либо по приему заданного числа пакетов, либо по окончании времени, равного числу ожидаемых пакетов, умноженного на время между пакетами. Время между пакетами – “Ref timer” (10) – должно совпадать для передатчика и приемника.

Отображение принятых данных возможно как в текстовом виде ASCII, так и в HEX-кодах.

Параметр “RX timeout” (12) ограничивает время работы S2-LP в активном приеме. При нажатии на кнопку “START” приемник ждет первый пакет неограниченно долго. Далее в действие вступает параметр “RX timeout”. Если в течение этого времени пакет не принят корректно, то фиксируется ошибка и в поле “Info” выводится сообщение “Packet lost. RX timeout”. Режим приема выключается. Затем, спустя время “Ref timer”, приемник включается вновь. Время “Rx Timeout” должно быть больше длительности пакета, но меньше значения “Ref timer”. Чем больше значение “RX timeout” — тем меньше связь зависит от рассинхронизации периода приемника и передатчика. Все это актуально только для применяемого в данной программе принципа отправки пакетов, где и в приемнике, и в передатчике отсчитываются временные интервалы.

Приемник можно настроить таким образом, чтобы он не принимал слабые сигналы, то есть разрешить прием сигналов только выше определенного уровня. Порог принимаемого сигнала задается в окне “RSSI threshold” (12). Если установить, например, уровень -90 дБм, то сигналы ниже этого уровня приниматься не будут. Для приема самых слабых сигналов здесь должно быть значение -130 дБм.

Внимание! В обозреваемой версии программы 1.2.0 изначально отображается неверное значение для параметра “RSSI threshold”. Подробнее об этом читайте в конце статьи.

Прием в режиме Sniff

Всего предусмотрено три режима работы приемника – “Normal”, “Sniff” и “LDC” (13). Режим “Normal” описан выше. Режим “LDC” отличается от “Normal” лишь тем, что отсчет времени между включениями приемника ведет не внешний микроконтроллер, а встроенный в S2-LP-таймер. В режиме “LDC” среднее потребление S2-LP будет меньше, так как в паузах между окнами приема трансивер находится в режиме “Sleep”, а в режиме “Normal” используется режим “Idle”.

Режим “Sniff” реализует прием с микропотреблением. При выборе режима “Sniff” (13) становится активным окно (14). В этом режиме S2-LP засыпает по внутреннему таймеру на заданное фиксированное время, например, на одну секунду. При пробуждении включается приемник и прослушивает эфир. Если полезный сигнал не найден за минимально возможное время — микросхема переходит в режим сна до следующего срабатывания таймера. Если же преамбула обнаружена — приемник остается в активном режиме до полного принятия пакета. Обнаружение преамбулы может происходить как по уровню RSSI, так и по ее совпадению с ожидаемой. В отличие от режима “LDC”, предполагающего синхронное пробуждение приемника и передатчика, в режиме “Sniff” передатчик работает асинхронно по отношению к приемнику. При этом для того, чтобы приемник не пропустил пакет, передатчик генерирует очень длинную преамбулу, по длительности чуть большую, чем период сна приемника. Поэтому приемник при просыпании всегда попадет в какой-то момент преамбулы и будет иметь возможность принять пакет (рисунок 14). В режиме “Sniff” средний ток потребления приемника может достигать единиц микроампер. Оборотной стороной этого режима является меньшая мгновенная доступность канала связи. Максимальная задержка доставки сообщения равна периоду сна приемника.

Рис. 14. Режим “Sniff”

Рис. 14. Режим “Sniff”

В режиме “Sniff” задается два специальных параметра: “WakeUp timer” и “FastRX timeout” (14).

“WakeUp timer” определяет период пробуждения приемника. Этот параметр напрямую влияет на средний потребляемый ток. На передатчике преамбула должна быть установлена достаточно длинной, чтобы приемник просыпался минимум дважды в течение ее передачи.

“FastRX timeout” определяет время, в течение которого ожидается полезный сигнал (по превышении RSSI заданного уровня). Значение в этом поле формируется программой автоматически, исходя из установленной ширины канала приемника “Channel Filter”. Чем шире приемный фильтр, тем быстрее устанавливается значение RSSI, соответственно, значение “FastRX timeout” может быть меньше. “FastRX timeout” влияет на среднее потребление, так как определяет ток приемника в активной фазе. Активная фаза присутствует всегда, даже когда сигнал передатчиком не передается. Если полезного сигнала нет, то приемник находится в активном режиме в течение “FastRX timeout” и потребляет ток порядка 8 мА. В паузах между приемом ток потребления находится в районе 600 нА.

Без использования режима “Sniff” при настройках радио по умолчанию в режиме приема измеренный ток потребления 8 мА соответствует документации. Для измерения тока потребления нужно снять джампер и подключиться к разъему JP1 (рисунок 15).

Рис. 15. Ток потребления в режиме приема

Рис. 15. Ток потребления в режиме приема

Теперь для тех же самых настроек радио переведем передатчик в режим работы с длинной преамбулой. Установим преамбулу максимальной длины 255 байт. Длительность пакета составит 11,6 мс (рассчитывается программой и отображается на вкладке TX). Текущий уровень шума при данной полосе приемника составляет примерно -115 дБм при отключенной антенне (антенна отключена специально, чтобы получить слабые сигналы даже при рядом расположенных на столе платах передатчика и приемника). Текущий уровень шума можно посмотреть на вкладке “Running RSSI” или непосредственно в окне “Transmission Test” – “RX”, нажимая на кнопку “Sense RSSI” (15). Исходя из этих цифр, установим следующие параметры для режима “Sniff”:

  • WakeUp timer = 9 мс (он должен быть менее длительности преамбулы пакета передатчика);
  • RSSI threshold = -100 дБм (порог должен быть выше уровня эфирного шума).

Теперь запустим приемник и будем на передатчике в произвольные моменты времени отправлять пакет кнопкой “START”. Чтобы отправлять только один пакет, в окне “Total packets” поставим “1”. Прием в режиме “Sniff” представлен на рисунке 16.

Рис. 16 Прием в режиме “Sniff Mode” (вариант 1)

Рис. 16 Прием в режиме “Sniff Mode” (вариант 1)

Ток потребления приемником снизился с 8 мА до 410 мкА (рисунок 17).

Рис. 17. Ток потребления в режиме “Sniff Mode” (вариант 1)

Рис. 17. Ток потребления в режиме “Sniff Mode” (вариант 1)

Здесь необходимо сделать небольшое замечание по поводу замера тока потребления. При измерении тока в режиме “Sniff” с помощью обычного мультиметра может возникать ошибка, связанная с быстродействием и классом прибора. Ток потребления носит импульсный характер с большим динамическим диапазоном (нА…мА), поэтому более корректный результат можно получить, измеряя падение напряжения на резисторе в цепи питания с помощью осциллографа. Лучше всего использовать специализированный измеритель, однако такое оборудование довольно дорого. Подсчитать теоретически потребляемый ток можно с помощью программы S2-LP consumption Tool v.1.0.0. Эта программа находится в той же папке, что и S2-LP DK GUI (C:\S2-LP DK_1.2.0\GUI\S2-LP_Cons.exe). Для наших настроек скорости, полосы и периода пробуждения теоретический расчет показывает ток потребления = 433 мкА (рисунок 18), что неплохо согласуется с практическими измерениями.

Рис. 18. Теоретический расчет тока потребления для варианта 1

Рис. 18. Теоретический расчет тока потребления для варианта 1

Проведем еще один тест в режиме “Sniff”. В варианте 2 (рисунок 19) снизим скорость передачи до 5 кбит, девиацию до 10 кГц и полосу пропускания до 50 кГц. Установим длину преамбулы в 50 байт. При данных настройках длительность пакета составит 120 мс. Длительность преамбулы составит около 80 мс, поэтому установим период пробуждения приемника = 70 мс (он должен быть меньше длительности преамбулы). Максимальное время задержки доставки пакета в такой в системе связи получается менее 100 мс.

Рис. 19. Ток потребления в режиме “Sniff Mode” (вариант 2)

Рис. 19. Ток потребления в режиме “Sniff Mode” (вариант 2)

Рассчитанный ток потребления должен быть в районе 90 мкА (рисунок 20), однако измерительный прибор показывает лишь 30 мкА (рисунок 21), что является заведомо неверным результатом. Для измерения потребления коротких импульсов тока данный прибор не подходит.

Рис. 20. Теоретический расчет тока потребления для варианта 2

Рис. 20. Теоретический расчет тока потребления для варианта 2

 

Рис. 21. Некорректное измерение в режиме “Sniff Mode” (вариант 2)

Рис. 21. Некорректное измерение в режиме “Sniff Mode” (вариант 2)

Тонкое управление S2-LP

Закладка “Low Level Command” позволяет выполнить следующие операции (нумерация согласно рисунку 22):

Рис. 22. Управление режимами работы S2-LP

Рис. 22. Управление режимами работы S2-LP

  • просмотреть версию чипа (1);
  • считать текущий статус S2-LP (2);
  • определить рабочую частоту кварца, которая составит 24, 25, 26, 48, 50, 52 МГц (3);
  • установить режим приема с пониженным до 6,7 мА током потребления (4);
  • изменять частоту и выходное напряжение SMPS (5);
  • использовать GPIO-линии S2-LP для приема-передачи данных (6);
  • производить прямое чтение и запись регистров (7).

Экспорт настроек и регистров

Текущую конфигурацию программы можно сохранить через команду меню “File” – “Save Config File”. Загрузить сохраненные настройки можно через команду меню “File” – “Load Config File”. Этим удобно пользоваться, если нужно быстро изменять настройки радиоканала для разных проектов.

В правой части рабочего поля программы расположено окно «Б» (рисунок 23), где отображаются все регистры трансивера. При изменении настроек в окне «А» в регистры вносятся соответствующие изменения. Для обновления отображения регистров можно использовать кнопку “Refresh” (1). С помощью кнопки “Expand” (2) можно просмотреть все битовые поля в регистрах. Закрыть расширенное представление можно с помощью кнопки “Collapse” (3).

Сохранение содержимого регистров в виде файла производится кнопкой “Export” (4). Для последующей загрузки сюда же используйте кнопку “Import” (5).

Рис. 23. Отображение состояния регистров

Рис. 23. Отображение состояния регистров

Значения регистров можно также экспортировать в виде C-кода для последующего использования в своем проекте. Это делается через меню “Tools” – “Export Code Configuration…”

Некоторые замечания

  • Несмотря на то, что уровень RSSI threshold отображается в программе по умолчанию как -130 дБм, реальная величина в регистре 0x18 по умолчанию составляет 0x28, что не позволяет принимать сигналы с уровнем менее -106 дБм. Для того чтобы установить максимальный уровень чувствительности приемника, необходимо запустить и через секунду остановить режим приема (не важно, принято что-либо или нет). Далее нажимаем на кнопку “Refresh” и убеждаемся, что правильное значение занесено в регистр 0x18. Для -130 дБм это значение должно быть равным 0x10.
  • Используемая для данной статьи плата STEVAL-FKI868V1-R (российского производства) является аппаратной копией оригинальной платы STEVAL-FKI868V1 (ST). Однако есть небольшое различие. Дело в том, что на оригинальной плате ST есть микросхема EEPROM-памяти, куда при производстве заносятся индивидуально измеренные для данной платы параметры, среди которых есть наименование платы и точное значение частоты кварца (отклонение от номинала). Использование этой микросхемы EEPROM не является обязательным для работы микросхемы S2-LP. В платах STEVAL-FKI868V1-R (российских) эта микросхема EEPROM установлена, но она чистая, так как у производителя не было специализированного оборудования для выполнения этой операции. В этом смысле работа с платой STEVAL-FKI868V1-R ближе к реальной ситуации отечественного процесса разработки, где едва ли будет закладываться отдельная EEPROM для автоматизированного сохранения персональных параметров каждого устройства при производстве. Работа платы с чистой микросхемой памяти предусмотрена разработчиками ST, причем это учтено как в программе S2-LP DK GUI, так и в примерах кода. Если память не содержит производственных данных, то программа просто не использует информацию из EEPROM.
  • На каждую плату STEVAL-FKI868V1-R вручную нанесено отклонение частоты от реальной (рядом с джампером JP1). Если на плате вы видите надпись +4, то это означает, что при установке генерации несущей на частоте 868 000 кГц реальная частота для данной платы составила 868004 кГц (измерялось с точностью до 1 кГц).
  • Программа S2-LP DK GUI в целом работает неплохо, однако при работе наблюдались некоторые баги, например, зависание при быстром нажатии на кнопки: если нажать на кнопку “START” и сразу же на “STOP”. Возможно, это присуще только конкретной конфигурации W

Заключение

Новый трансивер S2-LP является хорошим выбором для беспроводной передачи данных в диапазонах 433 или 868 МГц. Высокая чувствительность, отличные показания по избирательности, малое энергопотребление и привлекательная цена позволяют применять этот приемопередатчик в различных устройствах – от миниатюрных батарейных датчиков до систем безопасности с высокими требованиями к устойчивости канала связи. С помощью платы STEVAL-FKI868V1-R и графической оболочки S2-LP DK GUI можно за считанные часы познакомиться с работой микросхемы S2-LP и проверить выбранный радиопротокол на практике.

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Наличие на складах
Наименование Наличие Цена
S2-LP (ST) 0
STEVAL-FKI868V1 (ST) 0
NUCLEO-L152RE (ST) 1 301 15.75 $ 923.99 руб. от 32 шт
BY-868-02 SMA-M R/A (BEYOND) 16 2.3560 $ 138.21 руб. от 213 шт
NUCLEO-L053R8 (ST) 1 136 15.43 $ 905.04 руб. от 33 шт
STM32L152RBT6 (ST) 102 271 2.9753 $ 174.53 руб. от 960 шт
CC1101RGPR (TI) 1 145 768 2.3174 $ 135.95 руб. от 3 000 шт
CC430F6137IRGCT (TI) 9 060 4.1230 $ 241.86 руб. от 122 шт
CC1120RHBT (TI) 43 237 3.8970 $ 228.60 руб. от 129 шт
CC1310F128RHBT (TI) 5 509 5.3240 $ 312.32 руб. от 94 шт