跳转至

Adc_DebugSop

REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 2024/03/07

    1. Debug流程图

    图1-1 ADC采样错误的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是否有数值:

    图2-1 ADC未初始化时的Bank信息
    图2-2 ADC完成初始化后的Bank信息

    如若未完成初始化,自然无法采样,请检查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