我用的是 QFN 33 的封装,M052ZBN , M054ZDN 都试过, 发现 ADC 的 AIN4 有问题。
我的 BSP是使用 : M051_Series_BSP_CMSIS_Rev3.00.002, 以前使用 M051SeriesBSP_v1.02.001 这个 BSP也会有问题,跟踪调试,可以排除是 BSP 的问题。 目前怀疑是 芯片本身存在问题。
电路是这样:
PS:够简单了吧,只是用电阻分压
代码是这样:
GPIO_DISABLE_DIGITAL_PATH(P1, BIT4|BIT5);
SYS->P1_MFP &= ~(SYS_MFP_P14_Msk | SYS_MFP_P15_Msk ) ;
SYS->P1_MFP |= SYS_MFP_P14_AIN4 | SYS_MFP_P15_AIN5 ;
ADC_Open(ADC, ADC_ADCR_DIFFEN_SINGLE_END, ADC_ADCR_ADMD_SINGLE_CYCLE, BIT4|BIT5); // 这条语句会让 IO 口电压变化
ADC_POWER_ON(ADC);
ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
ADC_START_CONV(ADC);
现象是这样:
如果 用 AIN4 去检测,发现 在运行 ADC_Open 之前,用万用表测量 AIN4 引脚的电压正常,附合理论计算值 (0.44V 左右)。
但是。。。当运行完 ADC_Open 之后,万用表显示 AIN4 引脚的电压变了!!!(1.33V 左右) 。 这是我最不能理解的地方。
跟踪程序进去看了下,仅仅是改了个寄存器,使能 AIN4 通道,竟然会影响 IO 口电压。。。IO口的复用模式,我已经设为 ADC 了啊!!!
好吧,我拿 AIN5 去作下比较,竟然 AIN5 没有发生这种现象,正常得很。
不是个别现象,物料渠道正规,不会是次品。 这难道真的是 AIN4 通道有问题? 芯片存在 BUG ???
|