工具/软件:Code Composer Studio
大家好、
我想使用以下设置转换1个序列发生器上的3个模拟输入。
当我调试代码时、看起来我的 FIFO 有问题。
在第一个中断时,"adcBuffer2"变量中存储了3个值。 在接下来的中断中、adcBuffer2存储了6个值。 我不明白这是为什么发生的。
你有什么理想主义者吗?
//
//库生成
//
#include "stdbool.h"
#include
#include
//
库 TivaWare
//
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/adc.h"
#include "inc/tm4c1294nct.h"
#include "inc/hw_memmap.h"
//
库自有
////
include "intbule/inc0 /adt/intract/inc0
–/adt/inc32_intract/adt/inc0–void /adt/adt/adt/inc0–/adtid/inc0–intract/adt/inc/inc/adt/inc/inc/inc/inc/adt/intractuintbule0/inc/inc/inc/inc/inc/inc/inc/inc/inc/adt/inc/inc32_buffe/inc/inc/inc/inc/inc/inc/inc
ADCSequenceDataGet (ADC0_BASE、0、ADCBuffer2);
adcGetValues=1;
}
void main (void){
adcGetValues=0;
uint32_t sysclock_read=0;
sysclock_read=C0SysClockFreqSet (SYSCTL_OSC_INT | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480、120000000);C0SysCtl/ INC12/ ADC2000/
INT_RIST/ ADC2000/ ADC2000/ ADC2000/ ADC2000/ ADC2000/ INT_PRINT0
(ADCK_0)
//
// ADC0使能
//
ADCIntEnable (ADC0_BASE,0);
//
中断 ADC0SS0使能
//
IntEnable (INT_ADC0SS0);
//
启用全局中断
//
IntMasterEnable (ADC0Enable Global Interrupts);
//
GetSequencer 使能
//
ADC0_BASE (ADC0)
;ADC0
Disable (ADC0);ADC0 (ADC0)= ADC0 (ABASE);ADC0 (ADC0)
//ADCSequenceDisable (ADC0_BASE、0);
//
printf ("ADC Value1:%d\n"、adcBuffer2[0]);
printf ("ADC Value2:%d\n"、adcBuffer2[1]);
printf ("ADC Value3:%d\n"、 adcBuffer2[2]);
*/
adcGetValues = 0;
ADCIntEnable (ADC0_BASE、0);
IntEnable (INT_ADC0SS0);
ADCSequenceEnable (ADC0_BASE、 0);
}
}
}
#include
#include
#include
#include "inc/tm4c1294ncpdt.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "driverlib/gpio.h"#include "driverlib/ipc.h"(
sys_rtc) 0 (
sys_rtc
)、启用外设0 (sys_rtc)、sys_init/sys_rult2 (sys_clock_init/sys_ipt2) GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
//
将 ADC 配置为在480MHz 下使用 PLL、全速率偏差30以获得16MHz
//
ADCClockConfigSet (ADC0_BASE、ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL、30);ADCSClockConfigSet (ADC0_base、
ADC0);ADCLOCK (禁用 ADC0_BASE_SRC_PLL)
//
//读取当前 ADC 配置
//
adcClock=ADCClockConfigGet (ADC0_BASE,&adcDiv);
printf ("ADC 时钟为:0x%x,div:0x%x\n",adcClock,adcDiv);
//
硬件平均:由2的 faktor 表示-> ADC16、64
、ADC/ ADC0基准/ ADC64
/ ADC16、ADC0 源 ADC0、序列发生器0、触发器:始终、优先级:0
//
ADCSequenceConfigure (ADC0_BASE、0、ADC_TRIGGER_Always、0);
//
ADC 序列发生器阶跃
// 1. Source-ADC -> ADC0_BASE
// 2. 源序列发生器-> 0
// 3. 采样值取决于 FIFO 的深度、按序列发生器0、最多为7 (0-7)
// 4。 CONFIG->选择输入通道 AINx、中断规范
//
ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH0);
ADCSequenceStepConfigure (ADC0_BASE、 0、1、ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC0_BASE、0、 2、(ADC_CTL_CH2 | ADC_CTL_IE | ADC_CTL_END);
}