打印
[ZLG-ARM]

大家帮我看看这个LPC1754的ADC设计有问题么?

[复制链接]
3652|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也可以自己配。

使用特权

评论回复
5
liliang9554| | 2009-12-26 20:00 | 只看该作者
楼主自我校对能力真是强啊

使用特权

评论回复
6
贾君鹏子| | 2010-1-3 20:26 | 只看该作者
楼主经验很丰富啊,我瞅了半天不知咋回事

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

43

帖子

1

粉丝