Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с CC1101
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
rx3apf
Столкнулся со странной проблемой - предистория:
Применяем (применяли) в устройствах CC1100, общие тиражи за десятки килоштук перевалили и проблем не возникало. Из-за отсутствия 1100 у поставщиков применили 1101 (которая и новее, и дешевле и перспективнее) и началась проблема...
В чем странность - основное время трансивер находится в power down, раз в секунду опрашиваю радиоканал. Для экономии питания отслеживаю фазы трансивера по прерыванию от GDO2. Первоначально - chip_rdy, затем синхро, затем окончание приема пакета. Выборку как включил, так до конца и оставляю. Последовательность байтов, передаваемых трансиверу ("максимальный" вариант, приняты синхро и пакет):
00 46 00 41 36 FF <далее 10 раз чтение из rx fifo>

Так вот, иногда эта последовательность оказывается записана во внутренние регистры трансивера, начиная с адреса 06, что однозначно свидетельствует о том, что первый байт 00 не был принят вообще (и тогда логично, бурстовая запись по адресу 06 и дальше). Реже - загаживалось с адреса 01 (что, собственно, я первоначально и увидел, когда возник конфликт на шине, SDO не уходил в high-Z), иногда - по другим адресам.

Перед передачей пакета - готовность точно есть, как по GDO2, так и по SO (GDO1).

При этом интересно, что первоначально, когда устройства вернулись с завода, такое происходило в комнатных условиях, потом стало воспроизводиться неустойчиво (в основном все работало), но стало стабильно "глючить" при охлаждении до +8. Потом и это перестало воспроизводиться, зато получалось после охлаждения в морозильнике до -20, а потом и там стало получаться очень редко. Однако это с разной частотой, но получалось на трех платах с 1101 и ни разу не получилось с 1100, с перестановкой чипов проблема тоже переходила (обвязка исключается, кварц исключается).

Попробовал изменить таймаут готовности в MCSM0 (было 00, сделал 01) - проблема, похоже, исчезла. Но:
If XOSC is off during power-down, the regulated digital supply
voltage has time to stabilize while waiting for the crystal to be
stable and PO_TIMEOUT can be set to 0.
Т.е. все было законно. А вот что интересно - вроде бы при указании 00 время готовности после старта XOSC порядка 2.3...2.4 uS, на практике от -CS до -chip_rdy у CC1100 около 30 uS, а вот у CC1101 - порядка 5 uS. При этом, что интересно, осциллятор реально "разгоняется" существенно дольше (что-то порядка 50 uS).
Сижу, ничего не понимаю...
rx3apf
В дополнение к предыдущему письму - уточнение: с времянками я наврал (для удобства наблюдения делал быстрый цикл опроса и конденсатор на DCC не успевал разряжаться). Когда сделал односекундный цикл опроса, времянки стали другие - примерно 57uS до готовности у CC1100 и ~42 uS для 1101 (когда не вводится дополнительный таймаут в MCSM0). И, наконец-то (после недели мучений) воспроизвел ситуацию "in vitro": активирую -CS, жду готовность (chip_rdy), посылаю всю последовательность 00 46 00 41 34 FF ..... И да, в какой-то момент (пришлось устройство охлаждать) регистры трансивера загаживаются. А вот 100% это воспроизводится, если послать те же данные чуть-чуть (за несколько uS) до появления готовности (что вполне естественно), и явно пропадает байт целиком (хотя можно было бы ожидать, что сползет бит).
Итог - CC1101 заметно отличается от CC1100;
работать по готовности при выходе из power down можно только если введен дополнительный таймаут (или самому выдерживать или задержать готовность настройкой MCSM0). Зараза !!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.