大家好、我正在处理 F28335。 我想在套件 F28335上读取 ADC。 我将读取数据表 ADC 并配置 ADC 的寄存器。 我在引脚 ADCINA1中提供1电压并在 Exprision 中读取该值、但结果不正确。 请帮助我解决此问题。 非常感谢。
这是 main.c 和 Init_ADC 中的代码
#include "DSP28x_Project.h"
#include "math.h"
extern void InitSysCtrl(void);
extern void InitAdc (void);
extern void InitPieCtrl (void);
extern void InitPieVectTable (void);
中断空 ADC_ISR (空);
uint16环计数;
浮点值1;
浮点值2;
MAIN ()
{
LoopCount = 0;
InitSysCtrl();
EALLOW;
#IF (CPU_FRQ_150MHz)
#define ADC_MODCLK 0x3
#endif
EDIS;
EALLOW;
SysCtrlRegs.HISPCP。all = ADC_MODCLK;
EDIS;
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.ADCINT =&ADC_ISR;
EDIS;
InitAdc();
PieCtrlRegs.PIEIER1.bit.INTx6=1;
IER |= M_INT1;
EINT;
ERTM;
//假设 ePWM1时钟已在 InitSysCtrl()中启用;
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = 4;
EPwm1Regs.ETPS.bit.SOCAPRD = 1;
EPwm1Regs.CMPA.half.CMPA = 0x0080;
EPwm1Regs.TBPRD = 0xFFFF;
EPwm1Regs.TBCTL.bit.CTRMODE = 0;
}
中断空 ADC_ISR (空)
{
Voltage1 = AdcMirror.ADCRESULT0;
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
返回;
}
INIT_ADC:
#include "DSP2833x_Device.h"// DSP2833x 头文件包含文件
#include "DSP2833x_examples.h"// DSP2833x 示例包含文件
//
//定义
//
#define ADC_USDELAY 5000L
无效
InitAdc (空)
{
extern void DSP28x_usDelay (uint32计数);
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
adc_cal();
EDIS;
AdcRegs.ADCTRL1.bit.RESET = 1;
asm (" RPT #10 || NOP");
AdcRegs.ADCREFSEL.bit.REF_SEL = 0;
AdcRegs.ADCTRL3.ALL = 0x00E8;//加电带隙/参考/ADC 电路
DELAY_US (ADC_USDELAY);//转换 ADC 通道之前的延迟
AdcRegs.ADCMAXCONV.ALL = 0x0000;
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0000;
AdcRegs.ADCTRL1.All = 0x0710;
AdcRegs.ADCTRL2.all = 0x0900;//SEQ1由 SOCA 从 ePWM 模块启动
AdcRegs.ADCOFFTRIM.bit.OFFSET_TRIM = 0;//设置偏移误差校正值
AdcRegs.ADCREFSEL.bit.REF_SEL =0;
AdcRegs.ADCRESULT0;
AdcMirror.ADCRESULT0;
PieCtrlRegs.PIEIER1.bit.INTx6=1;
IER |= 0x0001;
}