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.

AFE7951: How to enable Sleep Mode (unused RX/TX channels) with CAFE library

Part Number: AFE7951


Tool/software:

Hi,

We are using the AFE7951 on a custom board with the CAFE C library V2p6.

To save power, we would like to set unused RX or TX channels into sleep mode and wake them up only when necessary.

According to the AFE79xx Programming User Guide – Technical Reference Manual, a sleep macro with deep and light modes is described. However, I have not found support for this in the CAFE library.

I attempted to implement it manually, but regardless of the parameters set in the first 6 bytes (the remaining 11 are documented as reserved), the Sleep/Active trigger macro fails.

The failure logs are as follows:

AFE ID: 0[afe/CAFE/Afe79xx/Src/tiAfe79_macro.c][ti_afe79_checkForMacroError][256]ERROR:Macro Error Execution Failed with the error 0X3:
AFE ID: 0[afe/CAFE/Afe79xx/Src/tiAfe79_macro.c][ti_afe79_checkForMacroError][274]ERROR:MACRO_ERROR_IN_EXECUTION
AFE ID: 0[afe/CAFE/Afe79xx/Src/tiAfe79_macro.c][ti_afe79_executeMacro][323]ERROR:AFE MACRO 0x57: ERROR in OPCODE Received

Example invocation (one of several attempts):
Macro: 0x55, operands: 0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0
Macro: 0x57, operands: 0x1

This is executed immediately after the bringup sequence completes successfully.

Question:
Is there a supported method in the CAFE library to enable Sleep Mode (deep or light) for unused RX/TX channels?
If not, could you please advise how to fix or correctly implement my manual attempt at using the Sleep Mode Configuration and Sleep/Active trigger macros?

This feature would help us significantly reduce power consumption and meet our target power limits.

Thanks in advance,
Alon

  • Hi Alon,

    Are you referring to the deep sleep or light sleep modes? For the light sleep mode this is controlled by the TDD GPIO pin functions. You can assign each channels TDD function to different GPIO pins, or even all to the same pin, and control that pin to put the channel into Standby Mode, light sleep, or Active Mode. If you would like to control this through register writes instead of GPIO pins then you can use the OverrideTdd function. 

    If you would like to save the most power then fully disabling any unneeded channels in the configuration file would be the best, but putting them into the Standby Mode will also save about 80% of fully disabling the channel. 

    Regards,

    David Chaparro 

  • I'm referring to the deep sleep but light sleep could also be useful for later applications also I really prefer to do all those with the registers SPI interface since I don't currently have direct access to the GPIO pins.

    Standby mode sounds good, can you please explain how to use the OverrideTdd function to enter and exit this mode using the register writes interface?
    Id like to put a channel (sometimes even all of the channels) to sleep for a large period of time (could be even days), wake it up do some work and put it back to sleep again (this why I cant just disable it in the configuration file).

    Also if I understand correctly from your replay the "Sleep/Active trigger" macro from the datasheet is not use-able? or this is just not the intended use for it?

    Thanks
    Alon