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

- 积分
- 49
- 最后登录
- 2018-7-26
|
最近在用KEA 8的ADC多路采样功能呢? 配置时钟,软件触发,二级FIFO深度, 使能中断,
选通两路:第二路(PTA6脚)和温度采集功能。
void ADC_Init()
{
SIM->SCGC |= SIM_SCGC_ADC_MASK; /* Enable bus clock in ADC, BUS CLOCK=10MHz*/
ADC->APCTL1 = ADC_APCTL1_ADPC(1<<2); /* when ADx=1 I/O control disabled so that cold used as analog inputs */
ADC->SC3 |= ADC_SC3_ADICLK(0x01)| /* Bus clock Dived By 2 selected,ADC Clock =5MHz*/
ADC_SC3_ADIV(0x03)| /* ADC Clock = 625Khz£¬refer to Temp convention long sample no more than 1Mhz*/
ADC_SC3_ADLSMP_MASK| /* adapt long sample time*/
ADC_SC3_MODE(TWELVE_BIT); /* TWELVE_BIT Conversion Mode Selection */
ADC->SC4 |= ADC_SC4_AFDEP(0x01); /* 2-level FIFO is enabled*/
ADC->SC2 = 0x00; /* Software Conversion trigger, disable compare function*/
ADC->SC1 = ADC_SC1_ADCO_MASK|
ADC_SC1_AIEN_MASK|ADC_SC1_ADCH(channel_2); /* set up channel_2 for presure sensor */
ADC->SC1 = ADC_SC1_ADCH(channel_TempSensor)|
ADC_SC1_ADCO_MASK|ADC_SC1_AIEN_MASK; /* Continuous mode operation */
NVIC_EnableIRQ(ADC0_IRQn); /* enable ADC interrupt */
NVIC_SetPriority(ADC0_IRQn,0);
}
读数据中断函数: 存储在数组里留待备用;
void ADC0_IRQHandler()
{
PresureBuff[Datacount] = ADC->R&ADC_R_ADR_MASK;
TempBuff[Datacount] = ADC->R&ADC_R_ADR_MASK;
Datacount++;
if(Datacount==5)Datacount = 0;
}
问题:为啥最后调试的相应的值有时候会反的,不解。
有人遇见过同样问题吗?
|
-
正常寄存器的值
-
错误存反的值
|