日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Exynos4412裸机开发 —— A/D转换器

發(fā)布時(shí)間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Exynos4412裸机开发 —— A/D转换器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Exynos4412 A/D轉(zhuǎn)換器概述

1、簡述

? ? ? ? 10位或12位CMOS再循環(huán)式模擬數(shù)字轉(zhuǎn)換器,它具有10通道輸入,并可將模擬量轉(zhuǎn)換至10位或12位二進(jìn)制數(shù)。5Mhz A/D 轉(zhuǎn)換時(shí)鐘時(shí),最大1Msps的轉(zhuǎn)換速度。A/D轉(zhuǎn)換具備片上采樣保持功能,同時(shí)也支持待機(jī)工作模式。


2、特性

ADC接口包括如下特性。

1)10bit/12bit輸出位可選。

2)微分誤差 ?1.0LSB。

3)積分誤差 ?2.0LSB。

4)最大轉(zhuǎn)換速率5Msps.

5) 功耗少,電壓輸入1.8V。

6)電壓輸入范圍 0~1.8V。

7)支持偏上樣本保持功能。

8)通用轉(zhuǎn)換模式。


3、模塊圖

4412A/D轉(zhuǎn)換器的控制器接口框圖如下:



二、Exynos4412 A/D 控制器寄存器

1、A/D控制寄存器ADCCON



2、A/D轉(zhuǎn)換數(shù)據(jù)寄存器ADCDAT0



3、A/D轉(zhuǎn)換的轉(zhuǎn)換時(shí)間計(jì)算

例如: PCLK為100MHz,PRESCALER = 65 ;所有10位轉(zhuǎn)換時(shí)間為

100MHz/(99+1) = 1MHz

轉(zhuǎn)化時(shí)間為1/(1MHz/5 cycles) = 5us。

完成一次A/D轉(zhuǎn)換需要5個(gè)時(shí)鐘周期。A/D轉(zhuǎn)換器的最大工作時(shí)鐘為5MHz,所以最大采樣率可以達(dá)到1Mit/s.


三、A/D轉(zhuǎn)換器實(shí)例

1、電路連接如下:

利用一個(gè)電位計(jì)輸出電壓到4412的AIN3管腳。輸入的電壓范圍為0~1.8V。



2、程序編寫

1、相關(guān)寄存器定義

[cpp]?view plaincopy
  • /***********************??ADC?******************************************/??
  • ??
  • #define?????ADC_CFG?????__REG(0x10010118)??
  • ??
  • ??
  • #define?????ADCCON??????__REG(0x126C0000)??
  • #define?????ADCDLY??????__REG(0x126C0008)??
  • #define?????ADCDAT??????__REG(0x126C000C)??
  • #define?????CLRINTADC???__REG(0x126C0018)??
  • #define?????ADCMUX??????__REG(0x126C001C)??

  • 2、具體代碼如下:

    注:這里使用讀-啟動(dòng)模式

    [cpp]?view plaincopy
  • #include?"exynos_4412.h"??
  • #include?"pwm.h"??
  • #include?"uart.h"??
  • ??
  • unsigned?char?table[10]?=?{'0','1','2','3','4','5','6','7','8','9'};??
  • void?mydelay_ms(int?time)??
  • {??
  • ????int?i,?j;??
  • ????while(time--)??
  • ????{??
  • ????????for?(i?=?0;?i?<?5;?i++)??
  • ????????????for?(j?=?0;?j?<?514;?j++);??
  • ????}??
  • }??
  • ??
  • adc_init(int?temp)??
  • {??
  • ????ADCCON?=?(1?<<?16?|?1?<<?14?|?99?<<6?|?1?<<?1);??
  • ????ADCMUX?=?3;??
  • ????temp?=?ADCDAT?&?0xfff;??
  • }??
  • ??
  • /*?
  • ?*??裸機(jī)代碼,不同于LINUX?應(yīng)用層,?一定加循環(huán)控制?
  • ?*/??
  • int?main?(void)??
  • {??
  • ????unsigned?char?bit4,bit3,bit2,bit1;??
  • ????uart_init();??
  • ????unsigned?int?temp?=?0;??
  • ????adc_init(temp);??
  • ????puts("開始轉(zhuǎn)換\n");??
  • ????while(1)??
  • ????{??
  • ????????while(!(ADCCON?&?0x8000));??
  • ????????temp?=?ADCDAT?&?0xfff;??
  • ????????printf("U?=?%d\n",temp);??
  • ????????temp?=?1.8?*?1000?*?temp/0xfff;??
  • ????????bit4?=?temp?/1000;??
  • ????????putc(table[bit4]);??
  • ????????bit3?=?(temp?%?1000)/100;??
  • ????????putc(table[bit3]);??
  • ????????bit2?=?((temp?%?1000)%100)/10;??
  • ????????putc(table[bit2]);??
  • ????????bit1?=?((temp?%?1000)%100)%10;??
  • ????????putc(table[bit1]);??
  • ????????puts("mV");??
  • ????????putc('\n');??
  • ????????mydelay_ms(1000);??
  • ????}??
  • ???return?0;??
  • } ?
  • 總結(jié)

    以上是生活随笔為你收集整理的Exynos4412裸机开发 —— A/D转换器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。