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

一、Exynos4412 A/D转换器概述

1、简述

        10位或12位CMOS再循环式模拟数字转换器,它具有10通道输入,并可将模拟量转换至10位或12位二进制数。5Mhz A/D 转换时钟时,最大1Msps的转换速度。A/D转换具备片上采样保持功能,同时也支持待机工作模式。


2、特性

ADC接口包括如下特性。

1)10bit/12bit输出位可选。

2)微分误差  1.0LSB。

3)积分误差  2.0LSB。

4)最大转换速率5Msps.

5) 功耗少,电压输入1.8V。

6)电压输入范围 0~1.8V。

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

8)通用转换模式。


3、模块图

4412A/D转换器的控制器接口框图如下:



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

1、A/D控制寄存器ADCCON



2、A/D转换数据寄存器ADCDAT0



3、A/D转换的转换时间计算

例如: PCLK为100MHz,PRESCALER = 65 ;所有10位转换时间为

100MHz/(99+1) = 1MHz

转化时间为1/(1MHz/5 cycles) = 5us。

完成一次A/D转换需要5个时钟周期。A/D转换器的最大工作时钟为5MHz,所以最大采样率可以达到1Mit/s.


三、A/D转换器实例

1、电路连接如下:

利用一个电位计输出电压到4412的AIN3管脚。输入的电压范围为0~1.8V。



2、程序编写

1、相关寄存器定义

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. /***********************  ADC ******************************************/  
  2.   
  3. #define     ADC_CFG     __REG(0x10010118)  
  4.   
  5.   
  6. #define     ADCCON      __REG(0x126C0000)  
  7. #define     ADCDLY      __REG(0x126C0008)  
  8. #define     ADCDAT      __REG(0x126C000C)  
  9. #define     CLRINTADC   __REG(0x126C0018)  
  10. #define     ADCMUX      __REG(0x126C001C)  


2、具体代码如下:

注:这里使用读-启动模式

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. #include "exynos_4412.h"  
  2. #include "pwm.h"  
  3. #include "uart.h"  
  4.   
  5. unsigned char table[10] = {'0','1','2','3','4','5','6','7','8','9'};  
  6. void mydelay_ms(int time)  
  7. {  
  8.     int i, j;  
  9.     while(time--)  
  10.     {  
  11.         for (i = 0; i < 5; i++)  
  12.             for (j = 0; j < 514; j++);  
  13.     }  
  14. }  
  15.   
  16. adc_init(int temp)  
  17. {  
  18.     ADCCON = (1 << 16 | 1 << 14 | 99 <<6 | 1 << 1);  
  19.     ADCMUX = 3;  
  20.     temp = ADCDAT & 0xfff;  
  21. }  
  22.   
  23. /* 
  24.  *  裸机代码,不同于LINUX 应用层, 一定加循环控制 
  25.  */  
  26. int main (void)  
  27. {  
  28.     unsigned char bit4,bit3,bit2,bit1;  
  29.     uart_init();  
  30.     unsigned int temp = 0;  
  31.     adc_init(temp);  
  32.     puts("开始转换\n");  
  33.     while(1)  
  34.     {  
  35.         while(!(ADCCON & 0x8000));  
  36.         temp = ADCDAT & 0xfff;  
  37.         printf("U = %d\n",temp);  
  38.         temp = 1.8 * 1000 * temp/0xfff;  
  39.         bit4 = temp /1000;  
  40.         putc(table[bit4]);  
  41.         bit3 = (temp % 1000)/100;  
  42.         putc(table[bit3]);  
  43.         bit2 = ((temp % 1000)%100)/10;  
  44.         putc(table[bit2]);  
  45.         bit1 = ((temp % 1000)%100)%10;  
  46.         putc(table[bit1]);  
  47.         puts("mV");  
  48.         putc('\n');  
  49.         mydelay_ms(1000);  
  50.     }  
  51.    return 0;  
  52. }  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Exynos4412裸机开发 —— UART

一、Exynos4412 UART 的特性 Exynos4412 中UART&#xff0c;有4 个独立的通道&#xff0c;每个通道都可以工作于中断模式或DMA 模式&#xff0c;即 UART 可以发出中断或 DMA 请求以便在UART 、CPU 间传输数据。UART 由波特率发生器、发送器、接收器和控制逻辑组成。 使用系统时…

Exynos4412裸机开发 —— 看门狗定时器

一、看门狗定时器概述 看门狗&#xff08;WatchDog Timer) 定时器和PWM的定时功能目的不一样。它的特点是&#xff0c;需要不同的接收信号&#xff08;一些外置看门狗芯片&#xff09;或重新设置计数器&#xff0c;保持计数值不为0。一旦一些时间接收不到信号&#xff0c;或计数…

win10 WSL(1903)安装samba服务器实现文件共享

https://blog.csdn.net/fuyuande/article/details/90368576

Exynos4412裸机开发 —— RTC 实时时钟单元

RTC(Real-Time Clock) 实时时钟。RTC是集成电路&#xff0c;通常称为时钟芯片。在一个嵌入式系统中&#xff0c;通常采用RTC来提供可靠的系统时间&#xff0c;包括时分秒和年月日等&#xff0c;而且要求在系统处于关机状态下它也能正常工作&#xff08;通常采用后备电池供电&am…

配置samba服务器

https://www.cnblogs.com/luosongchao/p/3750546.html

Exynos4412裸机开发——中断处理

以KEY2控制LED3亮灭为例&#xff1a; 一、轮询方式 【0】检测按键k2&#xff0c;按键k2按下一次&#xff0c;灯LED2闪一次。 【1】查看原理图&#xff0c;连接引脚和控制逻辑 &#xff08;1&#xff09;按键k2 连接在GPX1_1引脚 &#xff08;2&#xff09;控制逻辑 k2 按…

2021-04-20

https://www.cnblogs.com/cpw6/p/10364986.html https://www.cnblogs.com/liuyisai/p/5992511.html 一、NFS服务简介  NFS 就是 Network FileSystem 的缩写&#xff0c;最早之前是由sun 这家公司所发展出来的。 它最大的功能就是可以透过网络&#xff0c;让不同的机器、不同的…

ARM 汇编指令集

ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器&#xff08;PSR&#xff09;处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。 一、 跳转指令 跳转指令用于实现程序流程的跳转&#xff0c;在ARM程序中有以下两种方法可以实现程序流程的跳转 Ⅰ…

python创建虚拟串口

Linux 串口编程&#xff08;基于RAW模式&#xff09; Linux串口部分特殊字符易丢失解决方法 linux串口特殊字符不能接收 termios 获取和设置终端属性&#xff0c;行控制&#xff0c;获取和设置波特率 Termios–串口设置 Python修改文件权限 无法从外部进程读取PTY&#xff08;伪…

串口VMIN和VTIME设置

linux 下串口编程VTIME和VMIN的设置 Python termios 模块&#xff0c;tcgetattr() 实例源码 struct termios attr;tcgetattr(fd,&attr);attr.c_cc[VMIN]255;attr.c_cc[VTIME]255;tcflush(fd,TCIFLUSH);tcsetattr(fd,TCSANOW,&attr);VMIN:[0-255] VTIME:[0-255] VMIN 0…

Linux串口编程详解

Linux串口编程详解(阻塞模式、非阻塞模式、select函数) 之前一直觉得串口编程很简单&#xff0c;这两天仔细研究后发现串口里的各种参数还挺复杂&#xff0c;稍不注意就容易出错&#xff0c;这里总结一下网上的各种文章及自己的理解与实践。 open 函数 功能描述&#xff1a;用…

远程WEB控制MP3播放器设计(基于mini2440)

网上有很多 基于mini2440的MP3播放器设计的资料&#xff0c;多是按键控制&#xff0c;这里博主做了些轻微改动&#xff0c;利用远程WEB来控制MP3播放&#xff0c;具体怎么实现&#xff0c;下面会给出&#xff0c;大家先看看效果&#xff1a; WEB界面&#xff1a; 后台运行&…

线程以及pthread库的使用

https://blog.csdn.net/weixin_38102771/article/details/91351126 https://blog.csdn.net/qq_29677867/article/details/108571388?utm_mediumdistribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm1001.2101.3001.4242 一.什么是线程 你可以想象你一边…

嵌入式数据库 SQLite 浅析

SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS&#xff0c;它可移植性好&#xff0c;很容易使用&#xff0c;很小&#xff0c;高效而且可靠。SQLite嵌入到使用它的应用程序中&#xff0c;它们共用相同的进程空间&#xff0c;而不是单独的一个进程。从外…

程序会话后继续运行

https://blog.csdn.net/qq_44925149/article/details/89474134

socket 请求Web服务器过程

HTTP协议只是一个应用层协议&#xff0c;它底层是通过TCP进行传输数据的。因此&#xff0c;浏览器访问Web服务器的过程必须先有“连接建立”的发生。 而有人或许会问&#xff1a;众所周知&#xff0c;HTTP协议有两大特性&#xff0c;一个是“无连接”性&#xff0c;一个是“无状…

有些事情现在不做一辈子就都不会做了

这句话最近一直印在我的脑海里。这句话最早是在Casperkid的百度空间里面看见的&#xff0c;那时他生日。作为师傅的刺&#xff08;道哥&#xff09;送了他自己写的一本《白帽子讲WEB安全》给他&#xff0c;并在扉页上写着这句话。那时一看到这句话&#xff0c;仿佛有种触电的感…

让事件飞——Linux eventfd 原理

让事件飞——Linux eventfd 原理 让事件飞 ——Linux eventfd 原理与实践 原文作者&#xff1a;杨阳 eventfd/timerfd 简介 目前越来越多的应用程序采用事件驱动的方式实现功能&#xff0c;如何高效地利用系统资源实现通知的管理和送达就愈发变得重要起来。在Linux系统中&…

HTTP 数据包头解析

一、连接至Web服务器 一个客户端应用&#xff08;如Web浏览器&#xff09;打开到Web服务器的HTTP端口的一个套接字&#xff08;缺省为80&#xff09;。 例如&#xff1a;http://www.myweb.com:8080/index.html 在Java中&#xff0c;这将等同于代码&#xff1a; [java] view pla…

linux epoll 开发指南-【ffrpc源码解析】

linux epoll 开发指南-【ffrpc源码解析】 摘要 关于epoll的问题很早就像写文章讲讲自己的看法&#xff0c;但是由于ffrpc一直没有完工&#xff0c;所以也就拖下来了。Epoll主要在服务器编程中使用&#xff0c;本文主要探讨服务器程序中epoll的使用技巧。Epoll一般和异步io结合…