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

使用StellarisWare配置PD7为AD口,这样对吗?

使用的是tm4c123ge6pz,需要配置100pin的PE0和PD7为ADC口,配置如下:

ADCIntRegister( ADC0_BASE , 0 , ADC0SS0Handler) ;

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0) ;

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE) ; //PE0/PE1/PE2
 ROM_GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_0);

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // PD7
 Delay_Us(10);
 HWREG(GPIO_PORTD_BASE+GPIO_O_LOCK)=GPIO_LOCK_KEY_DD;
 Delay_Us(10);
 HWREG(GPIO_PORTD_BASE+GPIO_O_CR)|=0x80;
 Delay_Us(10);
 HWREG(GPIO_PORTD_BASE+GPIO_O_LOCK)=0;
 Delay_Us(10);
 ROM_GPIOPinTypeADC(GPIO_PORTD_BASE, GPIO_PIN_7);

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH ) ;  // PH3 and PH0
 ROM_GPIOPinTypeADC(GPIO_PORTH_BASE, GPIO_PIN_3 | GPIO_PIN_0);
 
 ROM_ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V);

 ROM_ADCSequenceConfigure(ADC0_BASE , 0 , ADC_TRIGGER_ALWAYS , 0) ;

 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH1); //welding current
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_CH2); // wire speed set
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 2, ADC_CTL_CH4); // welding voltage set
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 3, ADC_CTL_CH0); // welding voltage
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 4, ADC_CTL_CH19); // mode select
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 5, ADC_CTL_CH16); // diameter select
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 6, ADC_CTL_CH0  | ADC_CTL_IE|ADC_CTL_END); // welding voltage
 
 ROM_ADCSequenceEnable(ADC0_BASE, 0);

 ROM_ADCIntClear(ADC0_BASE, 0);

 ADCIntEnable(ADC0_BASE, 0);

调整PD7口的电位器,发现会影响PE3/AN0的电压值,仔细验证后,排除了布线、电源、底线的干扰和原理性的错误,发现:断开开PD7的连接后,再调整电位器也不会影响PE3/AN0的采样值了。

希望能得到你们的支持,谢谢啦!

Jacky Xu:

初步看下,程序没有问题。

当你发现PD7的调整会影响你采样得到的PE3电压值时,你同时用示波器万用表看过到底这个值是什么?有没有变动吗?

xyz549040622:

两个通道是独立的,不可能出现冲突的。除非硬件上有逻辑链接,不然肯定是不可能的。

赞(0)
未经允许不得转载:TI中文支持网 » 使用StellarisWare配置PD7为AD口,这样对吗?
分享到: 更多 (0)