主题中讨论的其他器件:TMDSEVM437X
大家好、
我正在以下环境中测试 ADC1的操作。
硬件:TMDSEVM437X 修订版
软件: C:\ti\pdk_am437X_1_0_5 和 C:\ti\pdk_am437X_1_0_8
(问题)
如果输入电压为1.6V 或更低、ADC1无法精确测量。
我检查了寄存器、但我不知道原因。
顺便说一下、ADC0被正确转换。
输入电压1.8V ->(转换值) 4096 = 1.8V
输入电压 1.6V ->(转换值) 3640 = 1.6V
输入电压 1.2V ->(转换值) 3413 = 1.5V
输入电压 1.0V ->(转换值) 2958 = 1.3V
输入电压0.4V-> (转换值) 2048 = 0.9V
输入电源是稳压直流电源。
ADC1的设置如下。
/* ADC1 (MagCard)唤醒*/
regVal = HW_RD_REG32 (SOC_CM_PER_REG + PRCM_CM_PER_MAG_CARD_CLKCTRL);
regVal |= PRCM_PER_MAG_CARD_CLKCTRL_MODULEMODE_ENABLE;
HW_WR_REG32 ((SOC_CM_PER_REG + PRCM_CM_PER_MAG_CARD_CLKCTRL)、regVal);
while ((HW_RD_REG32 (SOC_CM_PER_REG + PRCM_PER_MAG_CARD_CLKCTRL)和\
PRCM_CM_PER_MAG_CARD_CLKCTRL_MODULEMODE_MASK)!=\
PRCM_CM_PER_MAG_CARD_CLKCTRL_MODULEMODE_ENABLE);
/*配置时钟分频器值。 (16位寄存器)*/
HW_WR_REG16 ((ADC1_BASE_ADDR + ADC1_CLKDIV)、((ADC1_MODULE_CLOCE/ADC1_AFE_CLOCK)- 1));
/* ADC1控制值*/
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_CTRL)、(0x63));
/* ADC1配置和延迟设置*/
/* Step1 */
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPCONFIG1)、(0x40001));
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPDELAY1)、(0));
/* Step2 */
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPCONFIG2)、(0x40001));
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPDELAY2)、(0));
/* Step3 */
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPCONFIG3)、(0x40001));
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPDELAY3)、(0));
/* Step4 */
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPCONFIG4)、(0x40001));
HW_WR_REG32 ((ADC1_BASE_ADDR + ADC1_STEPDELAY4)、(0));
此致、
Sasaki