[ZLG-ARM] 大家帮我看看这个LPC1754的ADC设计有问题么?

[复制链接]
4403|5
 楼主| 3DG12 发表于 2009-12-24 13:53 | 显示全部楼层 |阅读模式

模拟供电用数字供电经磁珠隔离,Vref接LM4040-2。5。

测试电压经1K电阻后接Tsense。

现在的现象是:
无论使用自己写的程序还是keil或nxp给的测试代码,用ADC通道2采样,结果都是0,当输入电压接近Vref时结果为0xfff,并在连续转换过程中值有闪动。换用别的通道,或将Vref接AVcc现象一样(keil开发板原理图是接AVcc)。DAC正常,可以输出0-Vref的电压。
现有3块电路板,现象均一样。

部分测试代码:
void ADC_startCnv (void) {
  LPC_ADC->ADCR &= ~(7<<24);                         /* stop conversion  */
  LPC_ADC->ADCR |=  (1<<24);                         /* start conversion */
}
void ADC_init (void) {
  LPC_PINCON->PINSEL1 &= ~(3<<18);                   /* P0.25 is GPIO */
  LPC_PINCON->PINSEL1 |=  (1<<18);                   /* P0.25 is AD0.2 */
  LPC_SC->PCONP       |=  (1<<12);                   /* Enable power to ADC block */
  LPC_ADC->ADCR        =  (1<< 2) |                  /* select AD0.2 pin */
                      (1<< 8) |                  /* ADC clock is 18MHz/2 */
                      (1<<21);                   /* enable ADC */
}

/*----------------------------------------------------------------------------
  stop ADC Conversion
*----------------------------------------------------------------------------*/
void ADC_stopCnv (void) {
  LPC_ADC->ADCR &= ~(7<<24);                         /* stop conversion */
}

/*----------------------------------------------------------------------------
  get converted ADC value
*----------------------------------------------------------------------------*/
uint32_t ADC_getCnv (void) {
  uint32_t adGdr;
//  uint32_t adDr2;
  while (!(LPC_ADC->ADGDR & (1UL<<31)));             /* Wait for Conversion end */
  adGdr = LPC_ADC->ADGDR;
//  adDr2 = LPC_ADC->ADDR2;
  return((adGdr >> 4));          /* read converted value */
}
uint16 AD_in (void) {
   /* Read ARM Analog Input */
   uint32 val = 0;
   ADC_startCnv();                                 /* start A/D conversion   */
   val = ADC_getCnv();                             /* read converted value   */
   ADC_stopCnv();                                  /* stop A/D conversion    */
   return (val);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
loveforever 发表于 2009-12-24 21:15 | 显示全部楼层
 楼主| 3DG12 发表于 2009-12-25 13:19 | 显示全部楼层
多谢!!!麻烦周工的人看看,今天上午又去北京周立功买了两片1758,现象一样。
可惜北京周立功这边没有开发板,没法确定是否软件问题。但Keil的测试程序跑不了有点说不过去啊。
 楼主| 3DG12 发表于 2009-12-25 15:38 | 显示全部楼层
终于解决了,原来是我用的仿真器TRACE32没有跑bootloader程序,up后直接跑应用程序。bootloader要对ADC做个校准(用ADC最后一个叫TRIM的寄存器)。不过NXP的手册中没对TRIM做详细说明,只说是在bootloader中配了一下,user也可以自己配。
liliang9554 发表于 2009-12-26 20:00 | 显示全部楼层
楼主自我校对能力真是强啊
贾君鹏子 发表于 2010-1-3 20:26 | 显示全部楼层
楼主经验很丰富啊,我瞅了半天不知咋回事
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

43

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部