I have a couple other questions, these about AD9361 initialization.
I’m using the FMCOMMS5 eval board with two 9361 devices, and I initialized Device A successfully, but Device B is giving me a division by zero error in my equivalent of the function ad9361_rx_adc_setup().
That happens because I get these values when I read the three registers that provide parameters for the calibration:
Reg Device A Device B
0x1EB 0x00 0x00
0x1EC 0x07 0x08
0x1E6 0x01 0x00
Then I calculate invrc_tconst_1e6, which I call “RC” for simplicity, and it comes out to zero. Some of the calculations in the setup function divide by RC, causing the error.
I compared the initialization of Devices A and B. The first point where they differ is in the Rx RF charge pump calibration. For both devices, before running the CP cal, I set the bits in reg 0x014 that are supposed to put the device in ENSM Alert state. Device A goes into Alert state, but Device B stays in ENSM state 4. Yet at the end of CP calibration, the Cal Status reg (0x244) in both devices shows that the calibration finished successfully.
In the Rx RF VCO calibration, Device A is still in Alert state, and Device B is still in state 4. But again both devices finish the calibration with reg 0x247 showing that the Rx PLL locked.
From that point until the ADC setup function, both devices behave the same.
So my questions are:
1) I’m running the exact same programming sequence on both devices, but I finish initializing Device A before I start Device B. The fact that B is in state 4 sounds like it may be trying to do something during the initialization of A. Do I need to use the RESETB pin to hold Device B in a reset state while I initialize A? I tried the software reset mechanism on B (reg 0x000 = 0x81), but it didn’t help.
2) Are there any other reasons why one device would be stuck in state 4 while I’m able to put the other device in Alert state?