This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AFE4404: Logical procedure for AFE to activate transmitter and receiver blocks

Part Number: AFE4404

Hello everyone, 

I have a custom board with AFE4404 connected to SFH7050. I am working with an Arduino code to speak to AFE over I2C bus. When I send the address (0x58) and data bytes over I2C, it returns a successful state (i.e. ACK for address received). However, I haven't had any luck in doing my experiments. These are a list of symptoms I get. I hope someone can help me find the problem!

- When I try to read the registers I have written (for check up), it always returns zero. I have initialized it to work with internal clock and to send out a division of it (by factor 2). But there is nothing on CLKOUT pin, either. 

- When I power up the board, the leds of SFH7050 do not turn on. I would like to know if TX section is controlled by any register. 

- Lastly, there is an statement in the datasheet about what needs to be done so that AFE work with 3 leds. It is written that I need to turn LED 3 signal ON and ENSEPGAIN4 = 1. I can't find the LED 3 ON signal in the register. How should I turn it on?

My question is, what is the procedure to initialize and make AFE work? I have set timings, led currents, clock signal in dynamic modes register (all power down features have value 0). But I don't have any clue why the board is not working. 

Thank you very much and please help me with this. Cheers!

Mona

  • Hi Mona,

    Few answers,
    1) REG_READ bit needs to be set before reading any registers (except ADC output registers)
    2) Here is the process to bring internal clock on CLK pin.
    Apply the reset signal ( SW or HW).
    Set OSC_ENABLE = 1
    Set ENABLE_CLKOUT = 1
    3) LEDs of the sensor will turn on only when you have configured all the timings signals of the AFE correctly. You can try first with the sample register setting as given in Table 11 of the datasheet.
    4) 0x36 and 0x37 registers define the ON signal for LED3 .
    5) I would suggest first to try the sample register setting as given in Table 11 of the datasheet with the internal oscillator mode. One more option is to get the register setting from the GUI of the EVM. For your case enable the internal oscillator in the GUI and get all the required settings form the low level configuration tab.


    Regards,
    Prabin
  • Thanks a lot Prabin for these hints. I will check all the suggestions and will let you know.

    I just wanted to add that this custom board is not from TI (it's from MikroElectronica). Fortunately, I have EVM for another AFE, and I might be able to connect the I2C bus of MSP to the MikroE board for debug purpose :)

    Thank you again. I have many new info to continue the debug now.
    Mona
  • Hi and thanks Prabin,

    I tried your suggestions but have had no luck and the symptoms persist.

    In one of the tests, I skipped the timing signals, hold RST low for 40usec, and then pulled it high, set Register 0x23 (internal oscillator, TIA off, ADC on, rest of ADC off, AFE normal, RX normal), then set the CLKOUT EN in register 0x29 with a division value of 128 (to get 31KHz clock), and set tried to bring the CLK on the output pin. There is no voltage (almost zero or a few milivolts) on CLK pin.
    I assume nothing works if CLK is not generated.

    Then in a second test, to see the values of the registers I wrote, I just enable REG_READ in register 0x00. This is the process I follow in I2C transactions:

    - I load 3 bytes of data for target register in an array, buff. So, buff[0] holds the high byte, buff[1] the middle one, and buff[2] the lowest one.
    - I send register address.
    - I send the data buffer (first index 0, then 1, then 2).

    At this point, REG_READ must have been enabled. I next write the address of register I want to read, and send a request for 3 bytes of data. It always returns zero.

    I don't know where I am making a mistake. But neither leds of SFH7050 nor the ckock or reading the registers work. If AFE or the board was faulty, it couldn't have returned ACK to address and write actions on I2C bus.

    Thanks for your help.
    Mona
  • By the way, I have another questions related to timing signals. In AFE4404, there is no register to program timing of ADC_RDY signal, right? It's only leds, sample times, adc reset, conversions, and power down cycle signals.
  • Hi Mona,

    Yes, there is no control to time the ADC_RDY. It is generated by the device after 4th conversion.

    Regards,
    Prabin
  • Hi Mona,

    I doubt that I2C write is not happening correctly.
    Will it be possible for you to probe the I2C signals while writing the following things?
    Set OSC_ENABLE = 1
    Set ENABLE_CLKOUT = 1

    Regards,
    Prabin
  • Thanks Prabin. Yes, the issue was I generated I2C signals such that after one START flag the register and data are written. It required separate start flags for each write. The issue is now resolved.