S32K3开发问题-ADC采样电压一直为5V原因分析及处理
文章目录
- 前言
- 排查方向
- PIN功能排查
- MCAL排查
- 解决方法
- 总结
前言
在新项目开发过程,出现了一个ADC通道采样值一直为异常5V,本文记录分析问题出现的原因及解决方案
排查方向
首先检查了MCAL的Port及Adc配置,未发现异常,然后硬件排查了引脚的连接也没有啥毛病,测试直接将ADC要采的电压输入断开,软件还是能够读到5V的电压,而且对应Pin上确实是有5V输出。说明还是软件控制的5V输出。
PIN功能排查
我们使用的是PTE13的ADC功能,该PIN功能如下:
此处注意到一个特别的功能是VRC_CTRL,查阅手册发现该输出是为了内部生成1.5V电压用的:
大概率是因为配置了这个功能导致该PIN作为VRC_CTRL输出了
MCAL排查
排查MCU中的配置,有一个Last Mile Regulator Base Control Enable,其中解释如下:
对应寄存器PMC_CONFIG[LMBCTLEN]字段配置。
最后一英里调节器基础控制使能位。
如果在PCB上使用VDD_HV_A和V15之间的外部BJT,则必须将该位设置为1。该BJT的基极必须连接到VRC_CTRL引脚上,并由PMC控制以调节V15引脚上1.5V的电压。
0 - V15外部BCTL调节器失效。
1 -启用V15的外部BCTL调节器
该功能如果启用,则需要一个外部三极管,将VRC_CTRL输出的5V转换为1.5V,也就不需要外部供1.5V电了。
之前的MCAL中默认使能了Last Mile Regulator Base Control Enable,导致出现了这个问题
解决方法
在Mcu-McuPMC_Config中取消配置Last Mile Regulator Base Control Enable即可
取消配置后,对应的生成代码中PMC_CONFIG_LMBCTLEN_MASK不再定义
实际就是配置COGFIG寄存器
总结
对于MCAL中的每一项配置,应该都是有意义的,但是所有的配置项全部弄清楚也需要大量的时间和实践,所以一般对重要的配置搞清楚,其他配置大致知道是干啥的就很不错了,这样出了问题排查起来也会是很快的。