zoukankan      html  css  js  c++  java
  • ADC

    1 模拟信号和数字信号的区别?
    电压随时间不断变化的信号就是模拟信号,电阻随时间不变化的信号就是数字信号。
    adc是正弦波的时候是模拟信号,当你采样后出来的点的值就是数字型号了。不采用表示出来的就是模拟信号。
    2 ADC是干什么用的?
    ADC是模拟信号和数字信号的转化。我们的芯片只能用数字信号,所有必须转化。
    3 10位精度是什么?
    ADC必须有一个最高电压,CPU最高电压,3.3v,但是这个电压不是ADC可以用的,所以必须进行分频,而10位精度就是分成0x3ff份(1024),用你的cpu频率除以这个份数,就是他的精度,然后在乘你想要份数。
    4 有几路ADC,他们的用处是什么?
    8路,有4路是触摸屏,当触摸屏不用时,可以用,但是8路同时只能用一个,因为只有一个转化的设备。
    5 ADC的转化速率是什么?
    最大的转化速率为500KSPS,时钟频率最大为2.5MHZ.
    得出的ADC频率除以5就是你要的ADC的转化速率。(由2.5MHZ除以500ksps=5得到的 5,意思是每5周期完成一个取点)
    6 需要16位转化精度怎么办?
    外接一个ADC,我们这里的ADC是内嵌的10位精度,不足以支持,所以外接一个就行了。
    7 通过什么模拟了ADC信号?
    通过滑动变祖器。
    8 电路板上用了哪路ADC?
    通过原理图,可以看出我们用了0路的ADC,AINT0。

    9 要区分周期和频率,速率。
    10 ADC寄存器设置有点特殊,因为除了我们要的位其他都为0所以我们只要设置我们需要的那几位就好了。
    11 ADC用到两个公式,3.3*1000/0x3ff,* 份数(最大0x3ff);
    12 AD converter freq =50MHZ/(49+1) =1MHZ,ADC.ADCCON = 0x1<<14 | 0x13<<6 | 0x1<<1;此处的0x13<<6就是份数49。50MHZ,GCLK
    13 ADCCON 触摸屏被取消时,可以用5:3;
    15 0过程1结束
    14
    13:6 0~255,默认值0xff,此处设置的值相当于公式中的49,
    2 0正常1低功效
    1 最后两位互斥,A/D conversion start by read
    0 = Disable start by read operation
    1 = Enable start by read operation
    0 A/D conversion starts by enable.
    If READ_START is enabled, this value is not valid.
    0 = No operatio
    1 = A/D conversion starts and this bit is cleared after the startup.(每次必须清,重置)
    14 #if AD==1
    void adc_init(void)
    {
    #if ADSTART==0
    ADC.ADCCON = 0x1<<1|0xff<<6|0x1<<14;
    #elif ADSTART==1
    ADC.ADCCON = 0xff<<6|0x1<<14;
    #endif
    }

    #if ADSTART==1
    void adc_enable(void)
    {
    ADC.ADCCON |= 0x1;
    }
    #endif

    int adc_read(void)
    {
    int result;

    #if ADSTART==0
    result = ADC.ADCDAT0&0x3ff;

    while(!(ADC.ADCCON&(0x1<<15)))
    {
    }
    #elif ADSTART==1
    while(!(ADC.ADCCON&(0x1<<15)))
    {
    }

    result = ADC.ADCDAT0&0x3ff;
    #endif

    return 3300/0x3ff*result;
    }
    #endif
    15 结果在哪里? ADCDAT0
    9:0 0x0 >> 0x 3ff
    16 此处的3.3V不能用浮点型不支持,不能用printf函数太大了;
    17 串IO端口是独立的,有3套寄存器,而ADC不是独立的,8路共用。
    18 串口中,波特率,传出速率,ADC也应该有一个速率,转化速率。ADC的转化有自己的效率,不能随CPU频率的变化而变化。ADC有自己的限制。
    19 0~3v -》ADC转化-》数字电路信号
    20 库函数中有atoi,但是没有itoa.
    21 ADC中我们用到的就是atoi,itoa,我们从寄存器里读出来的就是int类型的十进制。 而rtc寄存器中读取到的就是16进制。
    22

  • 相关阅读:
    【Shell】Shell编程之while循环命令
    【Shell】Shell编程之grep命令
    【Shell】Shell编程之awk命令
    【Shell】Shell编程之sed命令
    【MySQL】MySQL之示例数据库Sakila下载及安装
    关于JAVA项目报表选型过程
    关于HSQLDB访问已有数据库文件的操作说明
    为什么要用 C# 来作为您的首选编程语言
    ThinkPHP_5对数据库的CURL操作
    使用ECharts画K线图
  • 原文地址:https://www.cnblogs.com/coding4/p/5604741.html
Copyright © 2011-2022 走看看