美文网首页
2020-10-13_ATD(模数转换)模块介绍

2020-10-13_ATD(模数转换)模块介绍

作者: HACHI_8 | 来源:发表于2020-10-13 17:19 被阅读0次

    1、主要寄存器功能说明

    (1)ATDCTL0:通道循环选择位,在多通道转换时,决定从哪个通道循环返回值AN0。

    (2)ATDCTL1:其中ETRIGSEL、ETRIGCH3--ETRIGCH0决定外部触发源选择(即用外部事件启动AD转换);SRES(1:0)这两位决定转换精度(8、10、12位)。

    (3)ATDCTL2:控制标志位快速清除、外部触发源设置(极性、边沿、使能)、序列转换结束中断使能、比较中断使能。

    (4)ATDCTL3:DJM(结果数据寄存器对齐方式,只有无符号结果类型)、S8C--S1C(序列转换长度)、结果数据FIFO模式、背景调试状态冻结与否。

    (5)ATDCTL4:SMP2--SMP0(采样时间选择)、PRS4--PRS0(ATD模块时钟分频系数,用于设置工作时钟,500KHz--2MHz)。

    (6)ATDCTL5:SC(特殊转换通道使能)、SCAN(连续转换模式设置)、MULT(多通道/单通道模式)、CD--CA(转换通道或起始通道)。向这个寄存器写数据,会启动ATD转换,因此也可作为ATD模块启动开关来操作。

    2、ATD初始化代码示例

    ; 模块初始化

    ADC_init:

              PSHA

              PSHB

              PSHY

              PSHX

              MOVB  #$01,ATD0CTL0      ; 一共两个通道 0,1 。  从1号通道循环回到0

              MOVB  #$0F,ATD0CTL1      ; 外部触发通道选择,未启用,可任意值

              MOVB  #$02,ATD0CTL2      ; 开启序列转换完成中断  ,ATD0_ISR

              MOVB  #$90,ATD0CTL3      ; 8位精度,右对齐

              MOVB  #$0B,ATD0CTL4      ; ATD时钟设置,分频系数11,  f=Fbus/2(fpiv+1),  1.66MHz ,采样时间:4个时钟周期    ,一次转换大约10μs

              PULX

              PULY

              PULB

              PULA

              RTC

    ; 启动一次转换

    ADC_start:

              PSHA

              PSHB

              PSHY

              PSHX

              MOVB  #$10,ATD0CTL5      ; 多通道转换  ,一个序列转换结束后进入空闲状态

              PULX

              PULY

              PULB

              PULA

              RTC

    3、补充说明

    (1)如果使用多个不连续的通道进行AD转换,其结果数据寄存器的对应关系只和通道顺序有关,和通道号无关,例如使用通道0、2、6进行转换,序列长度为3,结果寄存器的ATDDR0、ATDDR1、ATDDR2分别对应0、2、6通道的转换结果。(通道循环应该设置为6,6号通道完成后,即循环返回至0)

    (2)中断模式处理转换序列时,进入中断后,先关中断使能,处理完成后,再开中断使能。

    4、AD中断程序

            XDEF ATD0_ISR

            XREF    atd_buff,atd_flg

    ATD0_ISR:

      ; Write your interrupt code here ...

            MOVB  #$00,ATD0CTL2            ; 关中断

            LDX  #ATD0DR0L

            LDY  #atd_buff

            LDAB  #2

            save_data:

                      MOVB  2,X+,1,Y+      ; 8位模式,数据保存在每个结果寄存器的 L ,所以要+2

                      DBNE  B,save_data

            MOVW  #$0003,ATD0STAT2            ; 清除CCF标志 , 16bit

            MOVB  #$80,ATD0STAT0              ; 清除转换结束标志

            MOVB  #$01,atd_flg

            MOVB  #$02,ATD0CTL2            ; 开中断

            RTI

    相关文章

      网友评论

          本文标题:2020-10-13_ATD(模数转换)模块介绍

          本文链接:https://www.haomeiwen.com/subject/qbgvpktx.html