楼主: w932443004

PSoC3 之ADC组件简单说明

[复制链接]
  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2012-9-25 21:52:19 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 wangku001wei 于 2012-9-25 22:10 编辑

    基本上是翻译了说明文档 有一些自己加的

    特性:
    1 宽精度范围,8-20
    2 连续采集方式
    3 高输入阻抗
    4 可选的输入增益

    接口图:
    QQ截图20120925192359.jpg

    简介:
    AD转换组件可以在一个很宽的频谱范围内采集信号,采样率与采集精度和采集模式有关,可以单路信号或者利用多路开关技术采集多个信号
    AD组件由输入放大器,3阶调制器和一个滤波器组成。输入放大器提供高输入阻抗以及一个可选的输入增益;后处理单元提供增益,偏置及简单滤波。
    AD转换组件采用了过采样技术

    输出输出接口:(注意,有些输出输出接口在不同的配置下可能没有,比如ACLK,SOC,-Input
    + Input:模拟输入信号的正极。(AD转换结果是+ Input与参考电压的差值,参考电压可选择-Input或者Vss

    - Input:模拟输出信号的负极。该引脚只有当我们在“ADC_Input_Range”配置了如下的两种方式之一时才会提供给用户配置
    0.0 +/- 1.024V (Differential) -Input +/- Vref
    0.0 +/- 2.048V (Differential) -Input +/- 2*Vref
    QQ截图20120925193514.jpg

    SOC:启动转换信号,该引脚只有当用户选择使用硬件触发AD转换后才会提供给用户配置。该引脚上信号上升沿启动转换。如果采用软件方式,则使用xxx_StartConvert()函数开始AD转换
    QQ截图20120925193751.jpg
    xxx代表我们定义的组件名称
    QQ截图20120925193817.jpg

    ACLK: 该引脚只有当我们将ADC_Clock配置成External才会出现,决定了转换率。如果将ADC_Clock配置成internal,则使用芯片内部时钟,该引脚隐藏
    QQ截图20120925194135.jpg

    EOC: 转换结束,该引脚上的上升沿标志着一次AD转换结束,内部的中断也是和这个信号相连,该信号还可以和DAM 请求信号相连

    参数设置:
    在原理图上放置并双击AD转换组件,对其参数进行设置。
    QQ截图20120925213714.jpg
    注意:Conversion Mode 转换模式, Resolution 精度, Conversion Rate转换率 都会影响转换时钟频率,对其的设置应遵守ADC的技术参数

    Power:电压越高,转换速率越高

    Conversion Mode:转换模式,分为
    1 Fast_Filter 连续单路信号采集,非常适用于需要利用多路开关采集多路信号的情况。注意,如果是利用软件切换采集输入通道,建议在两次采集间先使用StopConvert() 停止采集,再用StartConvert()重新使能ADC组件
    2 Continuous 标准的采集方式,适用于单路信号的采集
    3 Fast_FIR:在8-16位采集精度的时候,和Fast_Filter是一样的,但是在17位精度以上的采集时速度要快。

    Resolution:采集精度。注意,越高的采集精度对应越长的采集时间

    Conversion Rate:对于单个信号转换来说,转换时间是采样率的倒数,转换时间与采集精度和转换模式有关

    Clock Frequency:时钟频率,注意,该编辑框不能编辑更改,只是对用户的提示,它显示了对于选择的转换模式,什么样的时钟频率是合适的。

    Start of Conversion:该参数决定了是采用硬件方式还是采用软件方式触发采集

    Clock Source:该参数觉得是采用AC组件内部的时钟还是采用外部时钟。如果采用外部时钟,则方波的占空比应为50%

    Input Range:输入范围 (太多了 偷个懒 参加中英文手册)
    1  0.0 to 1.024V (Single Ended)  0 to Vref
    2  0.0 to 2.048V (Single Ended)  0 to 2*Vref
    3 Vssa to Vdda (Single Ended)
    4  0.0 +/- 1.024V (Differential)  -Input +/- Vref
    5  0.0 +/- 2.048V (Differential)  -Input +/- 2*Vref
    6  0.0 +/- 0.512V (Differential)  -Input +/- 0.5*Vref
    7  0.0 +/- 0.256V (Differential)  -Input +/- 0.25*Vref

    Reference 参考电压
    1 Internal Ref  使用内部1.024V参考电压
    2 Internal Ref, bypassed on P03 *
    使用内部1.024V参考电压,并在P03口上放置旁路电容
    3 Internal Ref, bypassed on P32 *
    使用内部1.024V参考电压,并在P32口上放置旁路电容
    4 External Ref on P03 使用P03口上的外部参考电压
    5 External Rev on P32  使用P32口上的外部参考电压
    注意:当内部数字开关造成的早上影响到了模拟应用部分的性能时,建议使用外部旁路电容,将P03或者P32引脚配置成模拟高阻抗模式,并和一个外部电容相连(0.01uF~10uF)。

    Input Buffer Gain:输入缓冲增益,注意应保证Buffer_GainADC_Input_Range设置时候兼容

    Voltage Reference:参考电压。当使用内部1.024V参考电压时候,该参数不能编辑。当使用外部参考电压时候,当使用外部参考电压时候,用户应设置该参数为外部参考电压值。当输入范围参数设置为“Vssa to Vdda (Single Ended)”时,该参数应设置为Vdda的电压值。在将ADC采样值转换为ADC电压值的函数中使用了该参数。

    Application Programming Interface
    应用程序接口
    注意,我们在原理图上放置的组件的名称作为有关该ADC组件的函数,名称,变量等的前缀,下面的函数对应于名称为“ADC”的ADC组件实例

    void ADC_Start(void)
    配置ADC组件并上电,但并未启动AD转换

    void ADC_Stop(void)
    禁止并停止ADC组件供电

    void ADC_SetPower(uint8 power)  
    设置ADC组件的运行电源,对应于参数设置面板上的“Power”参数

    void ADC_SetBufferGain(uint8 gain)  
    设置输入缓冲的增益(1,2,4,8) ,对应于参数设置面板上的“Input Buffer Gain”参数

    void ADC_StartConvert(void)  
    启动AD转换. 当使用Single_Sample转换模式时,启动一次AD转换后自动停止,使用其他三种转换模式时,AD转换将一直进行,直到调用ADC_StopConvert函数强制停止

    void ADC_StopConvert(void)  
    停止AD转换。当一次转换正在进行时调用该函数,ADC组件被复位,已经完成的部分转换结果也不会输出

    void  ADC_IRQ_Enable(void)  
    使能AD转换完成中断。使用AD转换完成中断之前,应该在main函数中调用“CYGlobalIntEnable”宏命令使能全局中断

    void ADC_IRQ_Disable(void)  
    禁止AD转换完成中断

    uint8 ADC_IsEndConversion(uint8 retMode)  
    检测ADC转换是否完成
    使用 ADC_RETURN_STATUS 作为参数时,函数立刻返回转换结果的状态(若结果不为零,表示转换完成);使用. ADC_WAIT_FOR_RESULT 作为参数时,函数直到AD转换完成才会返回(可以理解为内部执行了while等待循环)

    int8 ADC_GetResult8(void)
    得到8位的转换结果,如果转换精度大于8位,则只返回低8位的转换结果。当ADC组件配置为8位单端模式时,应该使用ADC_GetResult16()函数,因为该函数返回的是8位有符号数,在8位单端模式时,实际最大结果为255,而8位有符号数实际最大结果为127

    int16 ADC_GetResult16(void)  
    得到16位的转换结果

    int32 ADC_GetResult32(void)
    得到32位的转换结果.

    void ADC_SetOffset(int32 offset)  Set offset of ADC.
    设置ADC转换结果的偏移量

    void ADC_SetOGain(int32 offset)
    设置每个单位电压对应的ADC结果值。默认由参考电压和输入范围设定,仅当在输入值已知或者使用参考电压时为了更好的校正ADC组件才需要使用该函数

    int16 ADC_CountsTo_mVolts(int32 adcCounts)  
    将转换结果换算成mV

    Int32 ADC_CountsTo_uVolts(int32 adcCounts)
    将转换结果换算为uV

    float ADC_CountsTo_Volts(int32 adcCounts)  
    将转换结果换算成浮点数的V

    The ADC output sample is multiplied by the gain correction value after the offset correction has been added.
    以上函数的计算过程:ADC转换结果值加上偏移量之后 乘以 增益校正值

    应用举例:
    1 简单的例子 参加英文说明文档
    #include <device.h>  
    void main()
    {
        int16  result;
        ADC_DelSig_1_Start();
        ADC_DelSig_1_StartConvert();
        ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);
        result = ADC_DelSig_1_GetResult16();
    }
    2 使用中断的例子
    ADC_INT.c文件中ADC组件提供了空白的中断响应程序,例如CY_ISR(ADC_DelSig_1_ISR )
    (注:ADC_DelSig_1是该例子使用的ADC组件的名称)
    将自定义的代码放置到 " /* `#START MAIN_ADC_ISR`    "/* `#END`  */ " 之间,使得在编译环境重新生成程序时我们自己的代码不被删除
    具体代码参加英文文档

    用户寄存器:
    Sample Registers 采样结果寄存器 24 共三个
    ADC_DEC_SAMP
    ADC_DEC_SAMPM
    ADC_DEC_SAMPH
    Gain Correction Registers 增益校正寄存器 16 共两个
    ADC_DEC_GCOR
    ADC_DEC_GCORH
    Offset Correction Registers 偏移校正寄存器 24 共三个
    ADC_DEC_OCOR
    ADC_DEC_OCORM
    ADC_DEC_OCORH
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2012-9-25 22:08:33 | 显示全部楼层
    wyzamazon 发表于 2012-9-25 22:02
    一些中文的组件手册https://www.cirmall.com/bbs/thread-1269-1-5.html

    多谢多谢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-11-4 19:13
  • 签到天数: 281 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2012-9-25 23:56:05 | 显示全部楼层
    楼主有心了,支持继续加油。做成一个系列,这样看着你的帖子就能学一遍了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2012-9-26 09:18:52 | 显示全部楼层
    加油啊!!!继续顶~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-16 14:21
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2022-1-26 13:14:33 | 显示全部楼层
    温故而知新。谢谢分享。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 09:51 , Processed in 0.166501 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.