6 Replies Latest reply on Apr 15, 2015 1:07 PM by jota_1939431

    BCM20737 ADC DMA or Interrupt Service Routine

    kraz

      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