BCM20737 ADC DMA or Interrupt Service Routine

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi All,

The high-level ADC interface in include/Drivers/adc.h appears to only support one-shot sampling of the ADC. In other words, the app needs to call adc_readSampleRaw() each time it wants a new sample. I need to perform a periodic analysis on a window of ADC samples collected at 11.7kHz (ADC_SAMPLE_FREQUENCY_MEDIUM_LOW). How can I do that? Does the BCM20737 implement DMA for the ADC? Or perhaps, does the BCM20737 implement a "sample-ready" ISR? I have not found a hardware manual for BCM20737 that would provide a description of all the hardware registers and their functions. If such a document exists could you please let me know where I can download it.

I have been looking at include/Drivers/20737/adc_cs.h. It does refer to continuous ADC operation:

/// bit map definition for adc intf control register

enum

{

    INTF_CTL_SAMPLE_READY               =   0x1,

    INTF_CTL_MODE_0_6P125KHZ            =   0x0 ,

    INTF_CTL_MODE_1_12P5KHZ             =   0x1 ,

    INTF_CTL_MODE_2_50KHZ               =   0x2 ,

    INTF_CTL_MODE_3_100KHZ              =   0x3 ,

    INTF_CTL_MODE_4_200KHZ              =   0x4 ,

    INTF_CTL_ADC_DITHER_DIABLE          =   0x1,

    INTF_CTL_ADC_NOTCH_FREQUENCY_DC     =   0x1,

    INTF_CTL_ADC_SAMPLE_ONE_SHOT        =   0x1,

    INTF_CTL_ADC_SAMPLE_CONTINUOUS      =   0x1,

    INTF_CTL_START_ADC                  =   0x1,

};

I am OK writing my own low-level HAL/drivers. I have done that for other platforms. Any additional documentation would be greatly appreciated.

Thanks

0 Likes
1 Solution
Anonymous
Not applicable

Hello Michael,

If you go below the 12.5ms SW Timer then you may not meet the BLE timing spec.

sub-ms resolution is not possible.

There is a HW_timer patch but less 5ms you may not meet the timing.

Hope this helps.

JT

View solution in original post

0 Likes
6 Replies