Столкнулся со странной проблемой - предистория:
Применяем (применяли) в устройствах 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).
Сижу, ничего не понимаю...