如图,在用CC2538做ADC读取实验时,ADC读出来的值一直都是00,我自己想了下原因:
一是之前我在使用其他M3芯片时,需要开ADC的RCC时钟,我不知道这里需不需要;
二是我没有配置PA4脚为通用IO口。
这两个我都不知道该怎么写,CC2530配置IO口是用P0SEL之类的,但CC2538不知道该怎么配置。
另外,如果还有其他原因,请告知,谢谢。
Alvin Chen:
swrc271a.zip
Viki Shi:
这里有ADC example,可以直接参考www.ti.com.cn/…/cc2538-sw
YiKai Chen:
你有先定義"#define HAL_ADC TRUE"及呼叫HalAdcInit後再使用HalAdcRead嗎?
ZhengQiang Ma:
回复 YiKai Chen:
HalAdcInit(); HalAdcSetReference(HAL_ADC_REF_125V);
……………
uint16 NUMA0; NUMA0 = HalAdcRead(HAL_ADC_CHN_AIN0,HAL_ADC_RESOLUTION_12);
请问我这写法对吗?
另外,上面回答中建议使用的swrc271例程我也试过,直接运行是可以的,但当我把他放到协议中去时,就没有效果了,我觉得ADC可能没有开启,但我找不到ADC的初始化配置在哪里。
这是例程中原本的初始化函数:
SysCtrlClockSet(false, false, SYS_CTRL_SYSDIV_32MHZ);
SysCtrlIOClockSet(SYS_CTRL_SYSDIV_32MHZ);
IOCPinConfigPeriphOutput(EXAMPLE_GPIO_UART_BASE, EXAMPLE_PIN_UART_TXD, IOC_MUX_OUT_SEL_UART0_TXD); GPIOPinTypeUARTOutput(EXAMPLE_GPIO_UART_BASE, EXAMPLE_PIN_UART_TXD); IOCPinConfigPeriphInput(EXAMPLE_GPIO_UART_BASE, EXAMPLE_PIN_UART_RXD, IOC_UARTRXD_UART0); GPIOPinTypeUARTInput(EXAMPLE_GPIO_UART_BASE, EXAMPLE_PIN_UART_RXD); UARTStdioInit(0);
SOCADCSingleConfigure(SOCADC_12_BIT, SOCADC_REF_INTERNAL);