工具/软件:Code Composer Studio
大家好、
现在、这是一个更复杂的问题(我想)、我花了几个小时尝试使 ADC 正常工作、但没有成功。 我尝试在引脚 PE0至 PE4、PB4和 PB5上读取7个值。 当我在所有引脚上应用3V3时、PE0 PE1 PE2和 PE3正在正常读取3V3、但其他引脚在3V3和随机值之间波动。 当我尝试单独读取某些引脚时、所有引脚都会波动。
我尝试做的事情:
- 仅启用 ADC0、SS0
- 启用 ADC0和 ADC1、两者均为 SS1
- 将时钟源从 PIOSC 更改为 PLL (配置为在两者上提供16MHz)
- 将 TRIGGER_AST_TIMER 更改为 TRIGGER_TIMER
- 以低速(1Hz)触发 ADC
- 注释掉 ADCReferenceSet()
我在项目中启用了以下功能:
- TIMER0、1、2、3、4、5
- WTIMEER0、2.
- WTIME1作为边沿捕获引脚 PC6 PC7
- PWM0、引脚 PB7 PC5 PE5
- PWM1、引脚 PF1
- 输出引脚 PB2 PB3 PD0 PD1 PD2 PD3
- 输入引脚 PA2 PA3 PA4 PA5
- UART0和 PA0 PA1
- 休眠 RTC
- ADC0管脚 PE0 PE1 PE2 PE3
- ADC1管脚 PE4 PB4 PB5
下面是我用于配置 ADC 的一些示例代码:
内联 void CONFIG_ADC0 (void) { MAP_SysCtlPeripheralDisable (SYSCTL_Periph_ADC0); MAP_SysCtlPeripheralReset (SYSCTL_Periph_ADC0); MAP_SysCtlPeripheralEnable (SYSCTL_Periph_ADC0); while (!map_SysCtlPeripheralReady (SYSCTL_Periph_ADC0)); MAP_GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); MAP_ADCReferenceSet (ADC0_BASE、ADC_REF_INT); MAP_ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_TIMER、0x00); MAP_ADCSequenceStepConfigure (ADC0_BASE、1、0、ADC_CTL_CH0 | ADC_CTL_IE); MAP_ADCSequenceStepConfigure (ADC0_BASE、1、1、ADC_CTL_CH1 | ADC_CTL_IE); MAP_ADCSequenceStepConfigure (ADC0_BASE、1、2、ADC_CTL_CH2 | ADC_CTL_IE); MAP_ADCSequenceStepConfigure (ADC0_BASE、1、3、ADC_CTL_CH3 | ADC_CTL_IE | ADC_CTL_END); ADCClockConfigSet (ADC0_BASE、ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL、25); MAP_ADCHardwareOversampleConfigure (ADC0_BASE、64); MAP_ADCSequenceEnable (ADC0_BASE、1); MAP_IntDisable (INT_ADC0SS1); MAP_ADCIntDisable (ADC0_BASE、1); MAP_IntPendClear (INT_ADC0SS1); MAP_ADCIntClear (ADC0_BASE、1); MAP_IntPrioritySet (INT_ADC0SS1、0x20); MAP_IntEnable (INT_ADC0SS1); MAP_ADCIntEnable (ADC0_BASE、1); } 内联 void CONFIG_ADC1 (void) { MAP_SysCtlPeripheralDisable (SYSCTL_Periph_ADC1); MAP_SysCtlPeripheralReset (SYSCTL_Periph_ADC1); MAP_SysCtlPeripheralEnable (SYSCTL_Periph_ADC1); while (!map_SysCtlPeripheralReady (SYSCTL_Periph_ADC1)); MAP_GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_4); MAP_GPIOPinTypeADC (GPIO_PORTB_BASE、GPIO_PIN_4 | GPIO_PIN_5); MAP_ADCReferenceSet (ADC1_BASE、ADC_REF_INT); MAP_ADCSequenceConfigure (ADC1_BASE、1、ADC_TRIGGER_TIMER、0x00); MAP_ADCSequenceStepConfigure (ADC1_BASE、1、0、ADC_CTL_CH9 | ADC_CTL_IE); MAP_ADCSequenceStepConfigure (ADC1_BASE、1、1、ADC_CTL_CH10 | ADC_CTL_IE); MAP_ADCSequenceStepConfigure (ADC1_BASE、1、2、ADC_CTL_CH11 | ADC_CTL_IE | ADC_CTL_END); ADCClockConfigSet (ADC1_base、ADC_CClock_SRC_PLL | ADC_CClock_RATE_FULL、25); MAP_ADCHardwareOversampleConfigure (ADC1_BASE、64); MAP_ADCSequenceEnable (ADC1_BASE、1); MAP_IntDisable (INT_ADC1SS1); MAP_ADCIntDisable (ADC1_BASE、1); MAP_IntPendClear (INT_ADC1SS1); MAP_ADCIntClear (ADC1_BASE、1); MAP_IntPrioritySet (INT_ADC1SS1、0x20); MAP_IntEnable (INT_ADC1SS1); MAP_ADCIntEnable (ADC1_BASE、1); }
我不知道下一步该做什么。 有什么建议?
谢谢!