博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
s3c2440的A/D转换应用
阅读量:6515 次
发布时间:2019-06-24

本文共 1116 字,大约阅读时间需要 3 分钟。

   10 地点 CMOS ADC(模/数字转换器)是 8 通道模拟输入型设备回收。该模拟输入信号转换 10 位二进制数字编码,A/D变化。也被称为模数转换。该模拟信号被转换成美元

算机可以处理的数字信号。

       对于s3c2440来说。实现A/D转换比較简单,主要做的事情就是 ADC 控制寄存器 ADCCON 和 ADC 转换数据寄存器 ADCDAT0。寄存器ADCDAT0的低10位用于存储A/D转换

后的数据。寄存器ADCCON的第15位用于标识A/D转换是否结束。

第14位用于使能是否进行预分频。而第6位到第13位则存储的是预分频数值,由于A/D转换的速度不能太快,

所以要通过预分频处理才干够得到正确的A/D转换速度。

  

 

  如我们想要得到A/D转换频率为1MHz,则预分频的值应为49。第3位到第5位表示的是A/D转换的通道选择。

第2位能够实现A/D转换的待机模式。第1位用于是否通过读

取操作来使能A/D转换的開始。

第0位则是在第1位被清零的情况下用于开启A/D转换。

 

    

    单独的adc操作 非常easy,就配置下轮询寄存器的某个位变化了就说明採样完成了:

int readADC(INT8U channel){	channel	&= 7;	rADCCON = (1<<14)|(49<<6)|(channel<<3);              //设置预分频器和A/D通道	rADCCON|=0x1;                                      //启动A/D转换	while(rADCCON & 0x1)		OSTimeDly(1);                                                //确认A/D转换是否開始	while(!(rADCCON & 0x8000))		OSTimeDly(1);                                                //等待A/D转换的结束	return ( (int)rADCDAT0 & 0x3ff );      //读取A/D转换的数据}

在多任务环境下while循环后面能够增加一个比較短的 OSTimeDly 。

没有什么模拟传感器,能够用螺丝刀转动PR2可见採集数据随着转动改变。  在这里就不把採集的数据显示在lcd上了,只通过串口打印出来吧。

详细代码能够从我github上clone。

 

參考:

blog.csdn.net/zhaocj/article/details/5495730

s3c2440文档

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
ethereumjs/merkle-patricia-tree-2-API
查看>>
go标准库的学习-runtime
查看>>
pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明
查看>>
NodeJS学习之文件操作
查看>>
AJAX的get和post请求原生编写方法
查看>>
WebSocket 是什么原理?为什么可以实现持久连接
查看>>
Python自学笔记-logging模块详解
查看>>
Head First--设计模式
查看>>
iOS之CAGradientLayer属性简介和使用
查看>>
微信小程序UI组件、开发框架、实用库
查看>>
模块化Javascript代码的两种方式
查看>>
Money去哪了- 每日站立会议
查看>>
Python数据结构和算法学习笔记1
查看>>
正则之从dom字符串中提取url
查看>>
大数据——基础概念
查看>>
机器学习温和指南
查看>>
解决Geoserver请求跨域的几种思路,第二种思路用过
查看>>
最短路-Bellman-Ford算法
查看>>
Object 类有哪些方法
查看>>
oracle 将一个表复制到另外一个表里 .
查看>>