• 杰理AC632蓝牙芯片ADC


    蓝牙芯片有2种ADC,一种是普通多通道10bit ADC,一种是音频mic单通道16bit LADC。

    普通ADC => 无DMA,单次采样单通道,带校准带参考电压,ADC采样值可以换算成绝对电压值。
    
    音频LADC => 支持DMA连续采样,无参考电压,一般用作交流变化量的采样使用。
    
    • 1
    • 2
    • 3

    普通ADC外设说明:

    量程电压 => 强VDDIO的电压值,满值ADC值:0x3FFL对应芯片的VDDIO电压值。 强VDDIO设置为VDDIOM_VOL_32V,即3.2V,那能测量的范围就是0V-3.2V。 强VDDIO设置为VDDIOM_VOL_30V,即3.0V,那能测量的范围就是0V-3.0V。
    参考电压 => LDOREF电压,芯片内部的固定幅值参考电压。(生产会存在一定的离散)
    校准值 => 芯片出产校准值,get_vbg_trim(),校准芯片LDOREF电压的偏差值。
    
    • 1
    • 2
    • 3

    ADC通道说明:

    芯片内部通道 => 芯片内部某些外设或结构电路,会预留有ADC通道,连接到ADC外设,用于芯片内部模块的自校准。
    外部通道GPIO引脚 => 引脚是否具有ADC功能,是固定的,软件无法映射的。设计板子注意引脚功能。
    
    • 1
    • 2

    SDK有专门的接口文件 adc_api.c 和adc_api.h。
    adc的使用方式,SDK预留了2种方式:

    注册定时采样 => u32 adc_add_sample_ch(u32 ch); 在定时器中断函数里,定时轮询所有的注册通道。注册的通道越多,轮询的时间越长。 usr_timer_add(NULL, adc_scan, 10, 0); 此语句即每10ms切换下一个通道采样。
    独占式立即采样 => adc_enter_occupy_mode(); adc_occupy_run(); adc_exit_occupy_mode(); 立即采样需要打断定时轮询的操作。立即采样当前设置的通道。 一般用于采样频率高,电压变化快,采样时刻短的场景。
    
    • 1
    • 2
    1. 注册定时采样
    //以下初始化代码添加到void adc_init()里
    u32 gpio = IO_PORTA_01;//指定IO,要和ADC通道对应上
    gpio_set_pull_down(gpio, 0);//看需求是否需要开内部下拉,会有20%的误差,不同芯片理论电阻值不一样,看规格书说明
    gpio_set_pull_up(gpio, 0);//看需求是否需要开内部上拉,会有20%的误差,不同芯片理论电阻值不一样,看规格书说明
    gpio_set_die(gpio, 0);//模拟态
    gpio_set_dieh(port, 0);//模拟态
    gpio_set_direction(gpio, 1);//输入态
    u32 ch = AD_CH_PA1; ///指定ADC通道,要和GPIO对应上
    adc_add_sample_ch(ch);//添加检测通道
    #define CH_SAMPLE_FREQ    1000 //ms
    adc_set_sample_freq(ch, CH_SAMPLE_FREQ);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    ARMv8内存模型
    彻底掌握Makefile(一)
    centos7 环境安装 PM2 管理 node
    手把手带你使用Paint in 3D和Photon撸一个在线涂鸦画板
    迈向数字化未来:深度探究智能制造的革新动力
    进程、线程、协程
    K8S部署mongodb-sharded-cluster(7.0.2)副本分片
    Pytorch学习:卷积神经网络—nn.Conv2d、nn.MaxPool2d、nn.ReLU、nn.Linear和nn.Dropout
    react:值得一看的“react哲学”
    java----js常用的api
  • 原文地址:https://blog.csdn.net/ydgd118/article/details/128188758