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.

EK-TM4C1294XL: ADC1 cannot interrupt, but ADC0 has no problem with the same code

Part Number: EK-TM4C1294XL

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "bsp.h"
#include "inc/hw_memmap.h"
#include "inc/hw_adc.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/adc.h"
#include "driverlib/udma.h"
#include "driverlib/timer.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#define DMA_CHANNEL UDMA_CHANNEL_ADC1 // 使 ADC1 DMA
//
uint16_t Data[ADC_SAMPLE_BUF_SIZE]; // ADC
volatile uint8_t flag = 0; //
uint16_t ADCBuffer1[DMA_TRANSFER_SIZE]; // 1
uint16_t ADCBuffer2[DMA_TRANSFER_SIZE]; // 2
uint16_t bufferIndex = 0; // Data
uint16_t totalSamples = 0; //
static uint8_t ControlTable[2048] __attribute__((aligned(1024))); // DMA
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
After changing ADC0 to ADC1, I cannot access ADC1 interrupt.

  • adc1不需要配置时钟吗 我没找到别的config接口

  • ADC1不需要配置吗 没找到相关config接口

  • 您好, 都用ADC0_BASE。

  • 感谢您,能帮我审计下这样的代码能否正确启动和停止adc吗?再次感谢

  • 您好,请参考示例代码。

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "bsp.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_adc.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/adc.h"
    #include "driverlib/udma.h"
    #include "driverlib/timer.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/pin_map.h"
    #define DMA_CHANNEL UDMA_CHANNEL_ADC1
    //
    uint16_t Data[ADC_SAMPLE_BUF_SIZE]; // ADC
    volatile uint8_t flag = 0; //
    uint16_t ADCBuffer1[DMA_TRANSFER_SIZE]; // 1
    uint16_t ADCBuffer2[DMA_TRANSFER_SIZE]; // 2
    uint16_t bufferIndex = 0; // Data
    uint16_t totalSamples = 0; //
    static uint8_t ControlTable[1024] __attribute__((aligned(1024))); // DMA
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    您好,按照你的说法,修改 ADCClockConfigSet(ADC0_BASE, ADC_CLOCK_SRC_PIOSC | ADC_CLOCK_RATE_FULL, 1);  仍然进不去中断

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "bsp.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_adc.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/adc.h"
    #include "driverlib/udma.h"
    #include "driverlib/timer.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/pin_map.h"
    #define DMA_CHANNEL UDMA_CHANNEL_ADC1
    //
    uint16_t Data[ADC_SAMPLE_BUF_SIZE]; // ADC
    volatile uint8_t flag = 0; //
    uint16_t ADCBuffer1[DMA_TRANSFER_SIZE]; // 1
    uint16_t ADCBuffer2[DMA_TRANSFER_SIZE]; // 2
    uint16_t bufferIndex = 0; // Data
    uint16_t totalSamples = 0; //
    static uint8_t ControlTable[1024] __attribute__((aligned(1024))); // DMA
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     
    改为ADCClockConfigSet(ADC0_BASE, ADC_CLOCK_SRC_PIOSC | ADC_CLOCK_RATE_FULL, 1);仍然进不去中断 

  • 您好,

          您单步调试一下,确认一下问题。

  • 卡在时钟配置上  我加了初始化ADC0外设后 就不会卡住 但仍然进不去中断

  • 您好,

          

             请对照这个帖子的解决方法检查您的代码。

             TM4C123GH6PM: ADC0 works but ADC1 not - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums      

  • 已解决上述问题 ADC1的DMA通道搞错

    帮我看看下面的新问题,我通过定时器触发ADC采样,最大采样率只能达到1M,如果我把定时器触发改成2M,采出来的波形仍然是1M采样率采出来的波形。但小于1M时,采样率正常

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "bsp.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_adc.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/adc.h"
    #include "driverlib/udma.h"
    #include "driverlib/timer.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/pin_map.h"
    #include "string.h"
    #define DMA_CHANNEL UDMA_CHANNEL_ADC0
    //
    uint16_t Data[ADC_SAMPLE_BUF_SIZE]; // ADC
    volatile uint8_t flag = 0; //
    uint16_t ADCBuffer1[DMA_TRANSFER_SIZE]; // 1
    uint16_t ADCBuffer2[DMA_TRANSFER_SIZE]; // 2
    uint16_t bufferIndex = 0; // Data
    uint16_t totalSamples = 0; //
    static uint8_t ControlTable[1024] __attribute__((aligned(1024))); // DMA
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 您好,

          为方便问题归类,新问题,请重新发帖专题讨论,谢谢。