Adc_DebugSop¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 2024/03/07 |
1. Debug流程图¶
2. Debug流程说明¶
2.1 硬件问题¶
检查到SAR ADC采样有误时,可操作寄存器将对应PIN脚设为GPIO并拉高拉低(请注意某些PIN脚GPIO功能优先级并不是最高的,此时需要先清除更高优先级),操作方法:
riu_w 0x14 0x11 0x00 //设置为GPIO MODE
riu_w 0x14 0x12 0xff //设置为高电平
riu_w 0x14 0x12 0x00 //设置为低电平
如果实际输出电平没有变化,则可判断为硬件问题,可按照如下顺序排查:
2.1.1 HW-A 检查电阻¶
查看原理图的对应PIN脚是否有电阻漏焊,如下图所示,R424与R425需要接上0R的电阻
2.1.2 HW-B 检查焊接情况¶
如果更换Board后,GPIO是可以拉高拉低的,那么可能是芯片虚焊,需要rework
2.1.3 HW-C 请求协助¶
联系硬件同事协助排查并重焊芯片
2.1.4 HW-D 缺陷上报¶
如果更换Board后,GPIO仍然无法拉高拉低,联系SW Owner上报缺陷
2.2 软件问题¶
判断为软件问题时,可按照如下顺序排查:
2.2.1 SW-A 检查ADC初始化状态¶
通过Bank 0x14的配置查看ADC是否完成初始化,主要查看0x0的数值是否为0xA20,以及0x40~0x47是否有数值:
如若未完成初始化,自然无法采样,请检查config配置是否有加载SAR ADC驱动
Linux config:
Device Drivers --->
[*] Sstar SoC platform drivers --->
<*> Sstar ADCLP driver
Linux DTS:
adclp0: adclp0@1f002800 { // 选择通道0
compatible = "sstar,adclp";
......
status = "ok"; // Ok:初始化adc
};
Rtos config:
BSP Driver Options --->
<*> Support SARADC driver
Rtos Sysdesc:
<adclp0> // 选择通道0
[reg_u32] 0x1F002800;
......
[status_u8] 1; // 1:初始化adc
2.2.2 SW-B 检查PADMUX¶
ADC初始化后,仍然无法正确获取电压数值,则需要检查PADMUX是否存在冲突,详见Gpio_DebugSop中的PADMUX冲突检查内容,一般情况下,ADC引脚被设置成GPIO MODE后就无法采样
2.2.3 SW-C 检查时钟源¶
查看如下寄存器确认ADC时钟源是否被关闭,以iford为例:
0xE 0x22 BIT5
若BIT5 = 0表示ADC时钟源开启,若BIT5 = 1则说明ADC时钟源被异常关闭,请联系SW Owner debug
2.2.4 SW-D 检查基准电压¶
查看如下寄存器确认ADC各通道的基准电压档位,以iford为例(其他chip的寄存器位置一致):
0x14 0x19 BIT0对应通道0,BIT1对应通道1,以此类推
BIT数值为1,该通道的基准电压为1.8V,BIT数值为0,该通道的基准电压为1.0V, (部分芯片的BIT 1/0对应的基准电压为3.3V/2.0V),请确认电压计算时是否使用了不匹配的基准电压
2.2.5 SW-E 请求协助¶
上述步骤SW-A,SW-B,SW-C,SW-D均检查OK,请提供ADC相关LOG以及ADC BANK(0x14)信息,联系SW Owner debug