在线时间1 小时
UID132032
注册时间2007-5-3
NXP金币0
该用户从未签到
新手上路

- 积分
- 26
- 最后登录
- 1970-1-1
|
求助。我设置了差分方式的AD转换,但读取的结果不是差分值。为何?
读取到的AD值仍为通道直接采样的值。通道为GPIOA0-GPIOA1,GPIOA4-GPIOA5
void SynchroSample_Init(void)
{
volatile word i;
OutFlg = 0U; /* No measured value */
SynchroSample_ModeFlg = IDLE; /* Device isn't running */
/* ADC12_CTRL1: DMAEN0=0,STOP0=1,START0=0,SYNC0=0,EOSIE0=1,ZCIE=0,LLMTIE=0,HLMTIE=0,CHNCFG_L=5,??=0,SMODE=0 */
setReg(ADC12_CTRL1,0x48F0U); /* Set control register 1 */
/* ADC12_CTRL3: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,DMASRC=0,SCNT1=0,SCNT0=7 */
setReg(ADC12_CTRL3,0x07U); /* Set control register 3 */
/* ADC12_CAL: SEL_VREFH_B=0,SEL_VREFLO_B=0,SEL_VREFH_A=0,SEL_VREFLO_A=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,SEL_DAC_B=0,SEL_DAC_A=0 */
setReg(ADC12_CAL,0x00U); /* Set calibration register */
/* ADC12_PWR: ASB=0,??=0,??=0,??=0,PSTS1=0,PSTS0=0,PUDELAY=0x0D,APD=0,??=0,PD1=1,PD0=0 */
setReg(ADC12_PWR,0xD2U); /* Enable device */
/* ADC12_OFFST0: ??=0,OFFSET=0,??=0,??=0,??=0 */
setReg(ADC12_OFFST0,0x00U); /* Set offset reg. 0 */
/* ADC12_OFFST1: ??=0,OFFSET=0,??=0,??=0,??=0 */
setReg(ADC12_OFFST1,0x00U); /* Set offset reg. 1 */
/* ADC12_OFFST2: ??=0,OFFSET=0,??=0,??=0,??=0 */
setReg(ADC12_OFFST2,0x00U); /* Set offset reg. 2 */
/* ADC12_HILIM0: ??=0,HLMT=0x0FFF,??=0,??=0,??=0 */
setReg(ADC12_HILIM0,0x7FF8U); /* Set high limit reg. 0 */
/* ADC12_HILIM1: ??=0,HLMT=0x0FFF,??=0,??=0,??=0 */
setReg(ADC12_HILIM1,0x7FF8U); /* Set high limit reg. 1 */
/* ADC12_HILIM2: ??=0,HLMT=0x0FFF,??=0,??=0,??=0 */
setReg(ADC12_HILIM2,0x7FF8U); /* Set high limit reg. 2 */
/* ADC12_LOLIM0: ??=0,LLMT=0,??=0,??=0,??=0 */
setReg(ADC12_LOLIM0,0x00U); /* Set low limit reg. 0 */
/* ADC12_LOLIM1: ??=0,LLMT=0,??=0,??=0,??=0 */
setReg(ADC12_LOLIM1,0x00U); /* Set low limit reg. 1 */
/* ADC12_LOLIM2: ??=0,LLMT=0,??=0,??=0,??=0 */
setReg(ADC12_LOLIM2,0x00U); /* Set low limit reg. 2 */
/* ADC12_ZXSTAT: ZCS=0xFFFF */
setReg(ADC12_ZXSTAT,0xFFFF); /* Clear zero crossing status flags */
/* ADC12_LOLIMSTAT: LLS=0xFFFF */
setReg(ADC12_LOLIMSTAT,0xFFFF); /* Clear high and low limit status */
/* ADC12_STAT: CIP0=0,CIP1=0,??=0,EOSI1=0,EOSI0=1,ZCI=0,LLMTI=0,HLMTI=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0 */
setReg(ADC12_STAT,0x0800); /* Clear EOSI flag */
/* ADC12_ZXCTRL1: ZCE7=0,ZCE6=0,ZCE5=0,ZCE4=0,ZCE3=0,ZCE2=0,ZCE1=0,ZCE0=0 */
setReg(ADC12_ZXCTRL1,0x00U); /* Set zero crossing control reg. */
/* ADC12_ZXCTRL2: ZCE15=0,ZCE14=0,ZCE13=0,ZCE12=0,ZCE11=0,ZCE10=0,ZCE9=0,ZCE8=0 */
setReg(ADC12_ZXCTRL2,0x00U); /* Set zero crossing control reg. */
/* ADC12_CTRL2: DMAEN1=0,STOP1=0,START1=0,SYNC1=0,EOSIE1=0,CHNCFG_H=0,SIMULT=1,DIV0=0x38 */
setReg(ADC12_CTRL2,0x78U); /* Set prescaler */
/* ADC12_PWR2: ??=0,??=0,DIV1=0,??=0,??=0,??=0,??=0,SPEEDB=0,SPEEDA=0 */
setReg16(ADC12_PWR2, 0x00U);
for (i=0U;i
|
|