TI中文支持网
TI专业的中文技术问题搜集分享网站

基于tm4c123g的adc模块采集两个正弦波

采集的时候设置两个通道CH0和CH1,然后用ADCSequenceDataGet(ADC_BASE, 1, pui32ADC0Value)读取采样值的时候,如果想要将两个正弦波的采样值各自赋值给两个数组,怎么知道存储的数据中哪些是通道CH0采到的,哪些是CH1采到的

xyz549040622:

ADC总共有四个采样序列,每个采样序列可以捕获的通道数或者说采样次数是不一样的,分别是8,4,4,1,step就是配置这个采样次数。
ADCSequenceStepConfigure(uint32_t ui32Base, uint32_t ui32SequenceNum,
uint32_t ui32Step, uint32_t ui32Config)
比如SS0可以有8次采样,那么
ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH1);
ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_CH2);
ADCSequenceStepConfigure(ADC0_BASE, 0, 2, ADC_CTL_CH3);
ADCSequenceStepConfigure(ADC0_BASE, 0, 3, ADC_CTL_CH4 | ADC_CTL_IE);
ADCSequenceStepConfigure(ADC0_BASE, 0, 4, ADC_CTL_CH5);
ADCSequenceStepConfigure(ADC0_BASE, 0, 5, ADC_CTL_CH6);
ADCSequenceStepConfigure(ADC0_BASE, 0, 6, ADC_CTL_CH7);
ADCSequenceStepConfigure(ADC0_BASE, 0, 7, ADC_CTL_CH8 | ADC_CTL_IE | ADC_CTL_END);
表示第一次采样ADC_CTL_CH1,第二次采样ADC_CTL_CH2,这样依次类推,每次的采样结果都保存在FIFO数组中的,不然你就不能知道数组的那个值对应哪个通道的。

user5266888:

回复 xyz549040622:

如果我想用采样序列3来采样两个正弦波,并将它们的值赋给两个数组,请问具体要怎么实现
我这样是哪里出错了

#define ADC_BASE0ADC0_BASE// 使用ADC0
#define ADC_BASE1ADC1_BASE
#define SequenceNum3// 使用序列3

void Init_ADC_Detect()
{
// 使能 ADC0外设ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC1);// 使能Port B外设端口ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
// 选择PB4作为模数装换ADC的管脚ROM_GPIOPinTypeADC(GPIO_PORTB_BASE, GPIO_PIN_4);ROM_GPIOPinTypeADC(GPIO_PORTB_BASE, GPIO_PIN_5);

ROM_ADCSequenceConfigure(ADC0_BASE, SequenceNum, ADC_TRIGGER_PROCESSOR, 0);ROM_ADCSequenceConfigure(ADC1_BASE, SequenceNum, ADC_TRIGGER_PROCESSOR, 0);
ROM_ADCSequenceStepConfigure(ADC0_BASE, SequenceNum, 0, ADC_CTL_CH10 | ADC_CTL_IE);ROM_ADCSequenceStepConfigure(ADC1_BASE, SequenceNum, 0, ADC_CTL_CH11 | ADC_CTL_IE);
ROM_ADCSequenceEnable(ADC0_BASE, SequenceNum);ROM_ADCSequenceEnable(ADC1_BASE, SequenceNum);
ROM_ADCIntClear(ADC0_BASE, SequenceNum);ROM_ADCIntClear(ADC1_BASE, SequenceNum);

}

int main(void)
{bool bRefresh = false;unsigned int i=0;
uint32_t pui32ADC0Value[1]={0};uint32_t pui32ADC1Value[1]={0};uint32_t sample0[2048]={0};uint32_t sample1[2048]={0};SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
LCD_Enable();
LCD_Init();
LCD_ScreenClr();
Init_ADC_Detect();

while(i<2048){ROM_SysCtlDelay(125*(SysCtlClockGet() /3000));ADCProcessorTrigger(ADC0_BASE, SequenceNum);ADCProcessorTrigger(ADC1_BASE, SequenceNum);while(!ADCIntStatus(ADC0_BASE, SequenceNum, false)){}while(!ADCIntStatus(ADC1_BASE, SequenceNum, false)){}ADCIntClear(ADC0_BASE, SequenceNum);ADCIntClear(ADC1_BASE, SequenceNum);
ADCSequenceDataGet(ADC0_BASE, SequenceNum, pui32ADC0Value);ADCSequenceDataGet(ADC1_BASE, SequenceNum, pui32ADC1Value);sample0[i] = pui32ADC0Value[0];sample1[i] = pui32ADC1Value[0];i++;}

赞(0)
未经允许不得转载:TI中文支持网 » 基于tm4c123g的adc模块采集两个正弦波
分享到: 更多 (0)