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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ARM】Tiny4412裸板编程之ADC

發布時間:2024/4/24 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ARM】Tiny4412裸板编程之ADC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 開發環境
    • 02. ADC概述
    • 03. ADC特性
    • 04. ADC模塊圖
    • 05. ADC寄存器
    • 06. ADC電路連接
    • 07. 程序示例
    • 08. 附錄

01. 開發環境

  • 開發板:Tiny4412SDK標準版 「Tiny4412 SDK 1506」
  • 工具:「arm-linux-gcc-4.5.1」 「minicom」 「dnw」
  • 平臺:Ubuntu 20.04

02. ADC概述

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

03. ADC特性

ADC接口包括如下特性。

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

2)微分誤差 1.0LSB。

3)積分誤差 2.0LSB。

4)最大轉換速率5Msps.

  • 功耗少,電壓輸入1.8V。
  • 6)電壓輸入范圍 0~1.8V。

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

    8)通用轉換模式。

    04. ADC模塊圖

    4412A/D轉換器的控制器接口框圖如下:

    05. ADC寄存器

    5.0 A/D寄存器

    5.1 A/D控制寄存器ADCCON

    5.2 A/D轉換數據寄存器ADCDAT0

    5.3 A/D轉換的轉換時間計算

    例如: PCLK為66MHz,PRESCALER = 65 ;所有12位轉換時間為

    66MHz/(65+1) = 1MHz

    轉化時間為1/(1MHz/5 cycles) = 5us。

    完成一次A/D轉換需要5個時鐘周期。A/D轉換器的最大工作時鐘為5MHz,所以最大采樣率可以達到1Mit/s.

    06. ADC電路連接

    利用一個電位計輸出電壓到4412的AIN0管腳。輸入的電壓范圍為0~1.8V。

    07. 程序示例

    adc.h文件

    #ifndef __ADC_H__ #define __ADC_H__#include "gpio.h"//ADC #define ADC_CFG *(U32*)0x10010118 #define ADCCON *(U32*)0x126C0000 #define ADCDAT *(U32*)0x126C000C #define ADCMUX *(U32*)0x126C001C//ADC初始化 void adc_init(void);//啟動ADC轉化 void adc_start(void);int adc_end(void);//獲取ADC轉化的值 U32 adc_get(void);#endif/*__ADC_H__*/

    adc.c文件

    #include "adc.h"//ADC初始化 void adc_init(void) {ADC_CFG &= ~(0x1 << 16);//ADC輸入通道選擇 AIN0//ADCMUX &= ~0xf;// 100M/(19 + 1)ADCCON &= ~(0xff << 6);ADCCON = ADCCON | (19 << 6) | (1 << 14) | (1 << 16);//正常模式ADCCON &= ~(1 << 2);}//啟動ADC轉化 void adc_start(void) {ADCCON |= 0x1;}//獲取結束標志 int adc_end(void) {return (ADCCON >> 15) & 0x1; }//獲取ADC轉化的值 U32 adc_get(void) {return ADCDAT & 0xfff; }

    test.c文件

    #include <string.h> #include <adc.h>void (*udelay)(unsigned int) = (void*)0x43e26480; int (*print)(const char *format, ...) = (void*)0x43e11a2c;int main(void) {//ADC初始化adc_init();print("main start\n");adc_start(); while(1){if (adc_end()){print("val = %d\n", adc_get());adc_start(); }delay(200000);}print("main end\n");return 0; }

    測試結果

    val = 389 val = 384 val = 385 val = 380 val = 386 val = 395 val = 386 val = 365 val = 395 val = 383 val = 374 val = 390 val = 385 val = 381 val = 387 val = 372 val = 384 val = 384 val = 392 val = 384 val = 383 val = 383 val = 390 val = 379 val = 389 val = 374 val = 391 val = 367

    08. 附錄

    Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf

    總結

    以上是生活随笔為你收集整理的【ARM】Tiny4412裸板编程之ADC的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。