【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相关推荐
- 【ARM】Tiny4412裸板编程之MMU封装
00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例 05. 附录 01. 开发环境 开发板:Tiny4412SDK标准版 「 ...
- 【ARM】Tiny4412裸板编程之MMU(页 4K)
00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4 ...
- 【ARM】Tiny4412裸板编程之MMU(段 16M)
00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4 ...
- 【ARM】Tiny4412裸板编程之MMU(段1M)
00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4 ...
- 【ARM】Tiny4412裸板编程之 printf函数
00. 目录 文章目录 00. 目录 01. 开发环境 02. printf概述 03. Uboot中printf函数 04. 程序示例一 05. 附录 01. 开发环境 开发板:Tiny4412SD ...
- 【ARM】Tiny4412裸板编程之LED(C语言)
00. 目录 文章目录 00. 目录 01. 控制原理 02. 配置寄存器 03. 程序示例一 04. 程序示例二 05. 程序示例三 06. 程序实例四 07. 附录 01. 控制原理 咱们的LED ...
- 【ARM】Tiny4412裸板编程之LED(二)
00. 目录 文章目录 00. 目录 01. 控制原理 02. 配置寄存器 03. 程序示例一 04. 程序示例二 05. 程序示例三 06. 附录 01. 控制原理 咱们的LED在核心板上,所以需要 ...
- 【ARM】Tiny4412裸板编程之MMU简介
00. 目录 文章目录 00. 目录 01. MMU简介 02. MMU发展 03. 地址分类 04. MMU工作过程 05. 段地址转换过程 06. 二级页表描述符 07. TLB的作用 08. C ...
- 【ARM】Tiny4412裸板编程之Chip ID
00. 目录 文章目录 00. 目录 01. Chip ID概述 02. 寄存器介绍 03. 程序示例 04. 编译执行 05. 附录 01. Chip ID概述 The Exynos 4412 SC ...
最新文章
- oracle命令格式,OraCmD(Oracle命令行工具) V3.1 官方版
- .NET CORE下最快比较两个文件内容是否相同的方法
- 您应该考虑将应用程序升级到Spring 4的5个理由
- 【数据结构与算法】浅析堆栈以及数据结构的堆和栈
- Java之LockSupport详解
- 三星Galaxy Note系列旗舰今年确定缺席:超万名粉丝请愿望其回归
- java并发总结思维导图
- 为什么dubbo使用ZkClient作为zookeeper的客户端
- python如何问问题_Python简单问答程序如何解决问题循环
- Linux 怎么重启 mysql
- (三)添加HDRI环境贴图和顶点绘制技巧
- windows补丁下载地址
- teststand 2020|ni teststand 2020(测试管理软件) 附安装教程
- 【日常】解决问题:SSR1080端口被占用的问题
- 新浪php工程师面试题
- 【实战】疾病-基因与图神经网络和图自动编码器的相互作用
- PPT加密了如何打开文件
- 【智能优化算法-正弦余弦算法】基于反向正弦余弦算法求解高维优化问题附matlab代码
- android手机只有三星采用实体键,三星新配件:你终于可以体面地使用实体全键盘了...
- Springboot集成海康SDK(以海康USB_SDK为例)
热门文章
- shell 学习笔记(四)
- Axure RP Pro 6.0 原型设计工具(产品经理必备)
- 解读Android LOG机制的实现
- 水仙花python代码_「每日一练」巧用python打印出所有的水仙花数
- android 全局 socket,学习Android socket通信之如何解决中文乱码
- group_concat 不是可以识别的 内置函数名称。_Python 函数库 APIs 编写指南
- Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段
- 【转载】JAVAEE之内置对象和属性范围
- android studio连接真机问题
- 正弦水波纹波动画 - SJWaveView