【ARM】Tiny4412裸板编程之ADC
生活随笔
收集整理的這篇文章主要介紹了
【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.
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 = 36708. 附錄
Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf
總結
以上是生活随笔為你收集整理的【ARM】Tiny4412裸板编程之ADC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ARM】Tiny4412裸板编程之 p
- 下一篇: 【Tools】VMware Workst