We have a specialized application for which the standard BLE stack cannot be used.
I'm trying to set up the CC2541 radio in proprietary mode to receive advertiser packets. I'm using chapter 25 of the CC253x/4x User's Guide (SWRU191C) for guidance.
My RF normal and RF error ISRs are working. Tested with CMD_PING and with an illegal command.
- My advertiser is working, sending an advertisement 1x/second.
- My observer is working. It works fine with the TI Simple BLE Observer and sees my advertiser.
- The device is RX only. After setting up interrupts and initializing the radio, I send a CMD_RX.
Settings pertinent to a receive only configuration:
- PRF_CHAN set to 0x17 or 0x2F or 0x65. (Channel 37/38/39)
- PRF_TASK_CONF configured for Basic mode, variable length.
- PRF_PKT_CONF, set AGN_EN == 0. Also tried with AGN enabled.
- PRF_CRC_LEN set to 3.
- PRF_CRC_INIT set to 0x00555555.
- PRF_W_INIT set to channel number | 0x40 per BLE spec.
- PRF_RADIO_CONF set to 0x11;
- Registers set per Table 25-24. I also tried alternate values for FRMCTRL0 / MDMCTRL2 / MDMCTRL3 that appear to be used by the LLE mode.
- SW0..3 set to 0x8E89BED6.
However, the device never obtains Rx sync.
Using the Simple BLE Observer in the debugger, I can see that the BLE stack sets up some of the XDATA registers differently for LLE mode. In LLE mode, the RAM register area is used very differently; for example, 0x6000 (PRF_CHAN) contains the channel number, not the FREQ (f - 2379) frequency. I can't find any other clues besides the SWRU191C User's Gude. I've gone through the User's Guide repeatedly and can't figure out what I'm missing.
Any suggestions? Is there any additional documentation or other resources available for proprietary mode?
Thanks