AD转换为什么进行两次转换,取第2次值?
adcInit();
while (1) {
ulADCData = 0;
for (i = 0; i < 8; i++) {
LPC_ADC->CR |= 1 << 24; /* 立即转换 */
while ((LPC_ADC->STAT & (1 << 0)) == 0); /* 读取 AD0STAT 的通道 0 的 Done */
LPC_ADC->CR |= (1 <<24); /* 第一次转换结果丢弃 */
while ((LPC_ADC->STAT & (1 << 0)) == 0); /* 读取 AD0STAT 的通道 0 的 Done */
ulADCbuf = LPC_ADC->ADDR0; /* 读取数据寄存器 */
ulADCbuf = (ulADCbuf >> 4) & 0xfff;
ulADCData += ulADCbuf;
}
ulADCData = (ulADCData / 8); /* 采样 8 次进行虑波处理 */
ulADCData = (ulADCData * 3000) / 4096;
} |