Режим API Xbee не отправляет цифровые образцы?

Я пытался получить XBee для передачи информации о том, нажата кнопка или нет.

Для этого у меня есть провод, выходящий из цепи, подключенной к DIO4 на XBee. Я использовал X-CTU для установки DIO4 в режим цифрового входа. Больше ничего не включено.

Теперь датчик XBee передает пакет индикатора приема ZigBee I/O Data Sample Rx. Я использовал книгу «Создание беспроводных сенсорных сетей», чтобы разобрать пакет. В нем говорится, что пакет всегда включает значения аналоговых выборок и будет включать только цифровые значения, если настроен цифровой вывод. Я получаю 21-байтовый пакет, что означает, что цифровая битовая выборка не включена. Цифровая маска говорит, что IO4 включен, а все аналоговые входы отключены. Однако оказалось, что цифровые значения были помещены в аналоговые образцы.

Это мое замешательство. Почему цифровой образец вставляется в аналоговый образец? Или аналоговый образец просто не учитывается, если аналоговые входы не настроены (вопреки тому, что написано в книге)?


person ComradeCow    schedule 12.02.2013    source источник


Ответы (1)


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

Подробный ответ: документация XBee S2B описывает детали пакета в ZigBee IO. Раздел «Индикатор Rx выборки данных» на стр. 114.

Таким образом, полезная нагрузка начинается с количества выборок (всегда 0x01), затем 16-битной маски цифрового канала и 8-битной маски аналогового канала. Маски указывают, какие данные следуют. Если в маске цифрового канала были установлены какие-либо биты, будет 16-битное значение, содержащее цифровые выборки. Затем 16-битное значение для каждой аналоговой выборки, указанной в маске аналогового канала, от AD0 до AD3, за которым следует напряжение питания.

Библиотека XBee Host C с открытым исходным кодом компании Digi содержит некоторый код в include/xbee/io.h и src/xbee/xbee_io.c, демонстрирующий синтаксический анализ этих кадров.

person tomlogic    schedule 12.02.2013
comment
@tomlogoic: Ааа, теперь я понял. Часть, которую я упустил, заключалась в том, что 16 бит для каждого аналогового семпла, а не один для всех. Таким образом, поскольку аналоговая маска = 0, а цифровая маска > 0, возвращались цифровые образцы, за которыми следовали 0 аналоговые образцы. Спасибо за ссылку на библиотеку Digi, очень помогло! - person ComradeCow; 14.02.2013