LPC1114 - AD采集

2023-10-11 05:40
文章标签 ad 采集 lpc1114

本文主要是介绍LPC1114 - AD采集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、基础知识

1.1位操作

  • 对寄存器的bit5写0:

寄存器&=~(1<<5);

现在运用你的C语言知识分析一下,把十进制的1写成二进制32位数就是:

00000000000000000000000000000001

(1<<5)就是把1右移5下,左面补零,执行完这句话以后数就变成:

00000000000000000000000000100000

~(1<<5)就是再把这个数反相:

11111111111111111111111111011111

最后呢!再把这个数&给寄存器,所以执行完以后,除了bit5被改成了0,其它的位都没有变。

  • 对寄存器的bit5写1:

寄存器|=(1<<5);

现在运用你的C语言知识分析一下,把十进制的1写成二进制32位数就是:

00000000000000000000000000000001

(1<<5)就是把1右移5下,左面补零,执行完这句话以后数就变成:

00000000000000000000000000100000

最后呢!再把这个数| 给寄存器,所以执行完,除了bit5被改成了1,其它的位为0。

二、代码分析


/*****************************************/
/* 函数名称:初始化ADC口(AD7)          */
/*****************************************/
void ADC_Init(void)
{SYSCON->PDRUNCFG &= ~(0x1<<4);        // ADC模块上电SYSCON->SYSAHBCLKCTRL |= (1<<13);     // 使能ADC时钟SYSCON->SYSAHBCLKCTRL |= (1<<16);     // 使能IOCON时钟IOCON->PIO1_11 &= ~0x9F;              // 把P1.11引脚选择模拟输入方式    IOCON->PIO1_11 |= 0x01;               // 把P1.11引脚设置为AD7功能SYSCON->SYSAHBCLKCTRL &= ~(1<<16);    // 关闭IOCON时钟ADC->CR = (1<<7)|                     /* bit7:bit0   选择通道7作为ADC输入,即P1.11引脚 */(23<<8 )|                   /* bit15:bit8  把采样时钟频率设置为2MHz 48/(23+1)*/(1<<16 )|                   /* bit16       硬件扫描模式                       */(0<<17 )|                    /* bit19:bit17 10位模式                           */(0<<24 );                   /* bit26:bit24 硬件扫描模式下这些位置0           */
}
  • SYSCON->PDRUNCFG &= ~(0x1<<4); // ADC模块上电

#define SYSCON ((SYSCON_TypeDef *) SYSCON_BASE) //系统配置

RW_en PDRUNCFG; /掉电配置 寄存器,地址偏移: 0x238 (R/W) */

第8-31位为保留位

  • SYSCON->SYSAHBCLKCTRL |= (1<<13); // 使能ADC时钟

系统AHB时钟控制寄存器SYSAHBCLKCTRL全部位结构,其字节地址为0x400480080

  • SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟

IO配置模块时钟控制位

  • IOCON->PIO1_11 &= ~0x9F; // 把P1.11引脚选择模拟输入方式

0x9F:1001 1111

~0x9F:0110 0000

IOCON寄存器:0000 0000 0000 0000 0000 0000 0000 0000

  • IOCON->PIO1_11 |= 0x01; // 把P1.11引脚设置为AD7功能

  • SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 关闭IOCON时钟

之前开时钟,现在又关闭,没理解。

IOCON模块的作用是什么?

是改变IO的功能,改变了IO的功能以后,程序运行过程中就不需要改变IO的功能了,所以就关了时钟省电
比如某个引脚,本来是GPIO,我在项目中,要用这个引脚的ADC功能,那么把这个引脚初始化为ADC功能以后,就不需要改变IO的功能了,所以关了IOCON时钟省电
  • ADC->CR = (1<<7)| /* bit7:bit0 选择通道7作为ADC输入,即P1.11引脚 */

(23<<8 )| /* bit15:bit8 把采样时钟频率设置为2MHz 48/(23+1)*/

(1<<16 )| /* bit16 硬件扫描模式 */

(0<<17 )| /* bit19:bit17 10位模式 */

(0<<24 ); /* bit26:bit24 硬件扫描模式下这些位置0

(1)第0-7位(SEL)引脚选择位,置1有效。当第16位(BURST)置0,只能选择一个通道,当第16位(BURST)置1,允许多位置1;

(2)APB 时钟 (PCLK) 被 CLKDIV +1 分频,产生 ADC 时钟。


/********************************************/
/* 函数功能:读取电压值(AD7)              */
/* 出口参数:adc_value, 读到的电压值        */
/********************************************/
uint32 ADC_Read(void)
{uint32 adc_value=0;uint8 i;adc_value = ADC->DR[7];    //读取第一次的值adc_value =  0;            // 丢弃for(i=0;i<10;i++)           // 再连续读取10个电压值{delay_us(6);adc_value += ((ADC->DR[7]>>6)&0x3FF);        }adc_value = adc_value/10;  // 把读到的10个电压值取平均值adc_value = (adc_value*Vref)/1024; // 转换为真正的电压值return adc_value;      // 返回结果
}

adc_value += ((ADC->DR[7]>>6)&0x3FF); /* 提取 10 位的 A/D 转换结果 */

adc_value =adc_value+(ADC->DR[7]>>6)&0x3FF);

ADC->DR[7]:A/D 通道 7 数据寄存器。该通道包含在通道 7 上完成。

读取通道7的AD值

0x3FF:

0011 1111 1111

0000 0000 0000 0000 0000 0000 0000 0000

右移6位的原因是ADC对应的DR寄存器中0-5位是保留(数据手册有说明可以查的到),如果要用的话需要先移位再使用,后面的3FF是因为ADC处理的数据都是10位的精度所以要“&”一下。

三、PT100

T100电阻是指铂热电阻,其中PT是指“铂”元素;100是指铂热电阻的特性在0℃时,电阻值刚好是100Ω,在100℃时它的阻值约为138.5Ω。

这篇关于LPC1114 - AD采集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/185941

相关文章

Window Server2016加入AD域的方法步骤

《WindowServer2016加入AD域的方法步骤》:本文主要介绍WindowServer2016加入AD域的方法步骤,包括配置DNS、检测ping通、更改计算机域、输入账号密码、重启服务... 目录一、 准备条件二、配置ServerB加入ServerA的AD域(test.ly)三、查看加入AD域后的变

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

Python 爬虫入门 - 基础数据采集

Python网络爬虫是一种强大且灵活的工具,用于从互联网上自动化地获取和处理数据。无论你是数据科学家、市场分析师,还是一个想要深入了解互联网数据的开发者,掌握网络爬虫技术都将为你打开一扇通向丰富数据资源的大门。 在本教程中,我们将从基本概念入手,逐步深入了解如何构建和优化网络爬虫,涵盖从发送请求、解析网页结构到保存数据的全过程,并讨论如何应对常见的反爬虫机制。通过本教程,你将能够构建有效的网络爬

物联网——DMA+AD多通道

DMA简介 存储器映像 某些数据在运行时不会发生变化,则设置为常量,存在Flash存储器中,节省运行内存的空间 DMA结构图 DMA访问权限高于cpu 结构要素 软件触发源:存储器到存储器传输完成后,计数器清零 硬件触发源:ADC、定时器、串口 重写计数器时,需关闭DMA DMA请求 数据宽度与对齐 目标宽度小于传输带宽:高位补零,反之,舍弃高位 数据转运与D

Python 爬虫入门 - 基础数据采集流程拓展

在网络爬虫的世界里,数据就是一切。通过爬虫技术,你可以自动化地收集各种类型的公开数据,从文本和图片到复杂的结构化信息,这些数据为各类分析和应用提供了基础。 本教程将引导你深入了解爬虫可以采集的数据种类,如何有效地获取这些数据,并探讨如何使用代理服务来规避限制与增强爬虫的灵活性。无论是初学者还是有经验的开发者,这些知识都将帮助你在网络数据采集中更加游刃有余。 文章目录 可采集的数据基本操作

替换Windows AD时,网络准入场景如何迁移对接国产身份域管?

Windows AD是迄今为止身份管理和访问控制领域的最佳实践,全球约90%的中大型企业采用AD作为底层数字身份基础设施,管理组织、用户、应用、网络、终端等IT资源。但随着信创建设在党政机关、金融、央国企、电力等各行各业铺开,对Windows AD域的替换成为企业信息安全建设中不可避免的议题之一。 鉴于AD在企业中的应用程度不同,可将企业分为轻度、中度及深度三类Windows&nbsp;AD

景联文科技:专业图像采集服务,助力智能图像分析

景联文科技是专业数据服务公司,致力于为人工智能企业提供从数据采集、清洗到标注的全流程解决方案。协助客户解决AI开发过程中数据处理环节的关键问题,助力企业实现智能化转型。 1.多样化的图像采集服务 景联文科技提供多样化的图像采集服务,涵盖不同应用场景和需求: •高分辨率图像采集:适用于高质量图像需求,如医学影像、工业检测等。 •实时图像采集:适用于需要实时处理的应用场景,如安防监

大隈设备采集

大隈(OKUMA)荣一在名古屋东区成立自己的私人公司,开始制造、销售制面机械。下面是社长的一些介绍:我司自1898年生产·销售制面机开始创业以来,秉承若所需之物世间尚无,必不妥协,独自创造的“破土创新”精神,并将其一脉相承,于1904年开始进行机床的生产。自创业以来,历经120余年,从未间断对先进技术和产品的开发。1963年,作为日本机床制造商,首次自主研发出数控装置“OSP”,利

【Android 多媒体应用】使用MediaCodec将摄像头采集的视频编码为h264

转载自:http://www.cnblogs.com/CoderTian/p/6224605.html MainActivity.java import android.app.Activity;import android.graphics.ImageFormat;import android.hardware.Camera;import android.hardware.Camera