查看: 1872|回复: 2

[其他] MC56F84798 AD转换问题

[复制链接]

该用户从未签到

2

主题

3

帖子

0

新手上路

Rank: 1

积分
26
最后登录
1970-1-1
发表于 2014-4-12 17:47:33 | 显示全部楼层 |阅读模式
求助。我设置了差分方式的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
我知道答案 目前已有1人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-4-14 16:13:32 | 显示全部楼层

RE:MC56F84798 AD转换问题

你好,楼主!
请参考TWR-56F8400的ADC例程,其界面链接如下。
还有以后有关于飞思卡尔产品的问题,请在【飞思卡尔FAE线上技术支持】板块中提出。
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

3

帖子

0

新手上路

Rank: 1

积分
26
最后登录
1970-1-1
 楼主| 发表于 2014-4-14 21:36:06 | 显示全部楼层

RE:MC56F84798 AD转换问题

问题已解决,采用PE生产的代码,将本来需要设置的通道给关了。
setReg(ADC12_CTRL2,0x78U);           /* Set prescaler */
将其改成0xf8就是我想要的结果了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 03:37 , Processed in 0.087964 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表