I would like to perform a simple promiscuous receive in order to receive any packets regardless of PAN or destination address. The procedure I'm using is as follows:
Release RST_B and wait for IRQ_B
Clear Wakeup flag. IRQSTS2 = 0x01
Set PAN ID. MACPANID00 = 8, MACPANID01 = 0
Set channel to 2420MHz. PLL_INT0 = 0x0B, PLL_FRAC0_LSB = 0, PLL_FRAC0_MSB = A0
Enable promiscuous mode. PLL_FRAC0_LSB =0x4A
Select PAN0. DUAL_PAN_CTRL = 0xC4
Enable all interrupts. PHY_CTRL2 = 0x80, PHY_CTRL3 = 0x04
Start receive sequence. PHY_CTRL1 =0x01
All other Modem registers are left as they are out of reset.
I then proceed to continuously read IRQSTS1, IRQSTS2 and PHY_CTRL1 but the receive interrupt is never set and XCVSEQ remains 1 (sequence R).
I have a transmitter sending a packet ever 2 seconds on 2420MHz and can confirm it with the Protocol Analyzer Tool.
Is there anything that I've missed?
I would recommend you to use one of our tested applications based in our software stacks instead. Developing a radio driver from scratch could actually be more time-consuming and would require a larger test procedure.
You could, for instance, use the SMAC Connectivity Test and set the radio to Continuous RX mode, which basically puts the radio in promiscuous mode by calling the MLMESetPromiscuousMode(TRUE) function. In this was you will not have to worry about missing configurations that could later affect your application.
You can get the SMAC Connectivity Test application from BeeKit, which could be downloaded for free. After installing simply open the project located in C:\Program Files (x86)\Freescale\SMAC\MKW2x\Demo Apps\Connectivity Test.
If you would not like to use the Connectivity test application, you could also check the source code and verify how promiscuous mode is set.