RISCV_ADC使用参考


REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 10/30/2022

    1. 概述

    1.1. 概述

    PWM-ADC有24个Channel,获取到的值的范围在0~0xFFF之间,参考电压有1个挡位为3.3V。

    1.2. 说明

    ADC的主要功能是将连续变量的模拟信号转换为离散的数字信号,即可以将输入电压V转换为表示一定比例下的寄存器数值,当已知参考电压,计算公式为:

    电压 = ( 寄存器数值 / 满量程 )* 参考电压

    2. 基础配置

    2.1. CONFIG配置

    CONFIG_PWM_SUPPORT=TRUE

    2.2. sysdesc配置

    1. <pwm_out>
    2.     [reg_u32_u16] = 0x1F203600 0x200 0x1F200E00 0x200;
    3.     [interrupts_u8] INT_FIQ_ADC_FIQ;
    4.     [clkfrequency_u32] 12000000;
    5.     [camclk_u16] CAMCLK_pwm_adc;
    6.     [status_u8] 1;
    

    2.3. Padmux配置

    1. <padmux>
    2. [schematic_u32_u32_u32]
    3. PAD_SAR_ADC_0   PINMUX_FOR_ADC0_MODE1   MDRV_PUSE_PWMADC0,
    4. PAD_SAR_ADC_1   PINMUX_FOR_ADC1_MODE1   MDRV_PUSE_PWMADC1,
    5. PAD_SAR_ADC_2   PINMUX_FOR_ADC2_MODE1   MDRV_PUSE_PWMADC2,
    6. PAD_SAR_ADC_3   PINMUX_FOR_ADC3_MODE1   MDRV_PUSE_PWMADC3,
    7. PAD_SAR_ADC_4   PINMUX_FOR_ADC4_MODE1   MDRV_PUSE_PWMADC4,
    8. PAD_SAR_ADC_5   PINMUX_FOR_ADC5_MODE1   MDRV_PUSE_PWMADC5,
    9. PAD_SAR_ADC_6   PINMUX_FOR_ADC6_MODE1   MDRV_PUSE_PWMADC6,
    10. PAD_SAR_ADC_7   PINMUX_FOR_ADC7_MODE1   MDRV_PUSE_PWMADC7,
    11. PAD_SAR_ADC_8   PINMUX_FOR_ADC8_MODE1   MDRV_PUSE_PWMADC8,
    12. PAD_SAR_ADC_9   PINMUX_FOR_ADC9_MODE1   MDRV_PUSE_PWMADC9,
    13. PAD_SAR_ADC_10  PINMUX_FOR_ADC10_MODE1  MDRV_PUSE_PWMADC10,
    14. PAD_SAR_ADC_11  PINMUX_FOR_ADC11_MODE1  MDRV_PUSE_PWMADC11,
    15. PAD_SAR_ADC_12  PINMUX_FOR_ADC12_MODE1  MDRV_PUSE_PWMADC12,
    16. PAD_SAR_ADC_13  PINMUX_FOR_ADC13_MODE1  MDRV_PUSE_PWMADC13,
    17. PAD_SAR_ADC_14  PINMUX_FOR_ADC14_MODE1  MDRV_PUSE_PWMADC14,
    18. PAD_SAR_ADC_15  PINMUX_FOR_ADC15_MODE1  MDRV_PUSE_PWMADC15,
    19. PAD_SAR_ADC_16  PINMUX_FOR_ADC16_MODE1  MDRV_PUSE_PWMADC16,
    20. PAD_SAR_ADC_17  PINMUX_FOR_ADC17_MODE1  MDRV_PUSE_PWMADC17,
    21. PAD_SAR_ADC_18  PINMUX_FOR_ADC18_MODE1  MDRV_PUSE_PWMADC18,
    22. PAD_SAR_ADC_19  PINMUX_FOR_ADC19_MODE1  MDRV_PUSE_PWMADC19,
    23. PAD_SAR_ADC_20  PINMUX_FOR_ADC20_MODE1  MDRV_PUSE_PWMADC20,
    24. PAD_SAR_ADC_21  PINMUX_FOR_ADC21_MODE1  MDRV_PUSE_PWMADC21,
    25. PAD_SAR_ADC_22  PINMUX_FOR_ADC22_MODE1  MDRV_PUSE_PWMADC22,
    26. PAD_SAR_ADC_23  PINMUX_FOR_ADC23_MODE1  MDRV_PUSE_PWMADC23;
    

    2.4. 驱动路径

    rtk\proj\sc\driver\sysdriver\pwm\drv\src\drv_pwm_out.c.

    3. 接口使用

    3.1. Regular Channel采样

    3.1.1. 配置步骤

    1、进行通道功能配置

    1. drv_pwmadc_init(struct pwmadc_set *pwm_adc_set,  pwm_out_channel channel, u8 enable) //参数:struct pwmadc_set *pwm_adc_set 所需要配置的成员描述如下
    
    • 配置说明 | struct pwmin_set的成员 | 描述 | |-----------|--------| | chan_sel | 设置PWM_ADC采样的通道类型,1表示regular channel,0表示inject channel,常规使用regular channel,inject channel一般用于某个特定时刻的监测采样,优先级高于regular channel| | regu_len | 表示regular channel的序列长度| | inj_len | 表示inject channel的序列长度| | adc_seq | 设置PWM_ADC采样的具体的通道序列| | tri_mode | 设置PWM_ADC采样的触发类型,0~11表示PWM_PN触发,12表示sw触发,13表示外部触发,14表示freerun,freerun的触发类型仅适用于regular channel| | tri_method | 设置trigger method,1表示每次触发完成一个sequence的采样,0表示每次触发完成一个channel的采样| | con_mode | 设置采样的模式,0表示single mode,当完成一个采样序列后会停止采样,1表示continuous mode,当完成一个采样序列之后不会停止采样,而是继续采样|

    2、获取采样结果

    1. drv_pwmadc_get_data(struct pwmadc_set *pwm_adc_set, u8 id, u16 *adc_data);
    
    • 参数 | 参数 | 描述 | |-----------|--------| | id | channel index| | adc_data | 获取到的采样数据|

    2、其他命令

    1. drv_pwmadc_cmd(struct pwmadc_set *pwm_adc_set, pwm_out_channel channel, pwm_out_cmd cmd); //不同的pwm_out_cmd对应不同的pwmadc_set成员配置
    
    • pwm_out_cmd:PWM_OUT_CON | 参数 | 描述 | |-----------|--------| | chan_sel | 设置PWM_ADC采样的通道类型,1表示regular channel,0表示inject channel| | con_mode | 设置采样的模式,0表示single mode,当完成一个采样序列后会停止采样,1表示continuous mode,当完成一个采样序列之后不会停止采样,而是继续采样|

    • pwm_out_cmd:PWM_OUT_TRI_MODE | 参数 | 描述 | |-----------|--------| | chan_sel | 设置PWM_ADC采样的通道类型,1表示regular channel,0表示inject channel| | tri_mode | 设置PWM_ADC采样的触发类型,0~11表示PWM_PN触发,12表示sw触发,13表示外部触发,14表示freerun,freerun的触发类型仅适用于regular channel|

    • pwm_out_cmd:PWM_OUT_SW_TRI(sw trigger) | 参数 | 描述 | |-----------|--------| | chan_sel | 设置PWM_ADC采样的通道类型,1表示regular channel,0表示inject channel|

    • pwm_out_cmd:PWM_OUT_STAR(开启采样) | 参数 | 描述 | |-----------|--------| | chan_sel | 设置PWM_ADC采样的通道类型,1表示regular channel,0表示inject channel|

    • pwm_out_cmd:PWM_OUT_END(结束采样) | 参数 | 描述 | |-----------|--------| | chan_sel | 设置PWM_ADC采样的通道类型,1表示regular channel,0表示inject channel|

    4. DEMO路径

    4.1. 头文件路径

    rtk\proj\sc\driver\sysdriver\pwm\drv\pub\drv_pwm_out.h

    4.2. Demo路径

    rtk\proj\sc\driver\sysdriver\pwm\drv\src\drv_pwm_out_test.c