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. 功耗少,电压输入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相关推荐

  1. 【ARM】Tiny4412裸板编程之MMU封装

    00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例 05. 附录 01. 开发环境 开发板:Tiny4412SDK标准版 「 ...

  2. 【ARM】Tiny4412裸板编程之MMU(页 4K)

    00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4 ...

  3. 【ARM】Tiny4412裸板编程之MMU(段 16M)

    00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4 ...

  4. 【ARM】Tiny4412裸板编程之MMU(段1M)

    00. 目录 文章目录 00. 目录 01. 开发环境 02. Tiny4412内存布局 03. 配置MMU 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4 ...

  5. 【ARM】Tiny4412裸板编程之 printf函数

    00. 目录 文章目录 00. 目录 01. 开发环境 02. printf概述 03. Uboot中printf函数 04. 程序示例一 05. 附录 01. 开发环境 开发板:Tiny4412SD ...

  6. 【ARM】Tiny4412裸板编程之LED(C语言)

    00. 目录 文章目录 00. 目录 01. 控制原理 02. 配置寄存器 03. 程序示例一 04. 程序示例二 05. 程序示例三 06. 程序实例四 07. 附录 01. 控制原理 咱们的LED ...

  7. 【ARM】Tiny4412裸板编程之LED(二)

    00. 目录 文章目录 00. 目录 01. 控制原理 02. 配置寄存器 03. 程序示例一 04. 程序示例二 05. 程序示例三 06. 附录 01. 控制原理 咱们的LED在核心板上,所以需要 ...

  8. 【ARM】Tiny4412裸板编程之MMU简介

    00. 目录 文章目录 00. 目录 01. MMU简介 02. MMU发展 03. 地址分类 04. MMU工作过程 05. 段地址转换过程 06. 二级页表描述符 07. TLB的作用 08. C ...

  9. 【ARM】Tiny4412裸板编程之Chip ID

    00. 目录 文章目录 00. 目录 01. Chip ID概述 02. 寄存器介绍 03. 程序示例 04. 编译执行 05. 附录 01. Chip ID概述 The Exynos 4412 SC ...

最新文章

  1. oracle命令格式,OraCmD(Oracle命令行工具) V3.1 官方版
  2. .NET CORE下最快比较两个文件内容是否相同的方法
  3. 您应该考虑将应用程序升级到Spring 4的5个理由
  4. 【数据结构与算法】浅析堆栈以及数据结构的堆和栈
  5. Java之LockSupport详解
  6. 三星Galaxy Note系列旗舰今年确定缺席:超万名粉丝请愿望其回归
  7. java并发总结思维导图
  8. 为什么dubbo使用ZkClient作为zookeeper的客户端
  9. python如何问问题_Python简单问答程序如何解决问题循环
  10. Linux 怎么重启 mysql
  11. (三)添加HDRI环境贴图和顶点绘制技巧
  12. windows补丁下载地址
  13. teststand 2020|ni teststand 2020(测试管理软件) 附安装教程
  14. 【日常】解决问题:SSR1080端口被占用的问题
  15. 新浪php工程师面试题
  16. 【实战】疾病-基因与图神经网络和图自动编码器的相互作用
  17. PPT加密了如何打开文件
  18. 【智能优化算法-正弦余弦算法】基于反向正弦余弦算法求解高维优化问题附matlab代码
  19. android手机只有三星采用实体键,三星新配件:你终于可以体面地使用实体全键盘了...
  20. Springboot集成海康SDK(以海康USB_SDK为例)

热门文章

  1. shell 学习笔记(四)
  2. Axure RP Pro 6.0 原型设计工具(产品经理必备)
  3. 解读Android LOG机制的实现
  4. 水仙花python代码_「每日一练」巧用python打印出所有的水仙花数
  5. android 全局 socket,学习Android socket通信之如何解决中文乱码
  6. group_concat 不是可以识别的 内置函数名称。_Python 函数库 APIs 编写指南
  7. Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段
  8. 【转载】JAVAEE之内置对象和属性范围
  9. android studio连接真机问题
  10. 正弦水波纹波动画 - SJWaveView