STM8S103 ADC初始化设置

发布者:疯狂小马最新更新时间:2021-09-02 来源: eefocus关键字:STM8S103  ADC  初始化设置 手机看文章 扫描二维码
随时随地手机看文章

adc.h


#ifndef __ADC_H_

#define __ADC_H_

#include “define.h”

//ADC通道号定义

#define ADC_Channel0 (unsigned char)0x00

#define ADC_Channel1 (unsigned char)0x01

#define ADC_Channel2 (unsigned char)0x02

#define ADC_Channel3 (unsigned char)0x03

#define ADC_Channel4 (unsigned char)0x04

#define ADC_Channel5 (unsigned char)0x05

#define ADC_Channel6 (unsigned char)0x06

#define ADC_Channel7 (unsigned char)0x07

#define ENB 1

extern void adc_init(uint8 mode);

extern void adc_switch(uint8 channel);

extern void adc_mode_scan(uint8 value);

extern void read_adc(uint8 channel);

#endif


adc.c


#include “adc.h”

#include “uart.h”

//*****************************

//函数名称:adc_init

//函数功能:对ADC初始化,开启或关闭ADC电路

//入口参数:ADC电路使能参数

//出口参数:无

//*****************************

void adc_init(uint8 mode)

{

    uint16 i;

    if(mode == ENB) //启动ADC电路

    {

        //F/4转换时间分频 Fadc = Fmaster/ADC_CR1[4..6]

        //[000 F/2] [001 F/3] [010 F/4]

        ADC_CR1 = (ADC_CR1&0x8f)|0x00;  //f/2

        //数据左对齐

        ADC_CR2 &= ~0x08;

        //启动ADC

        ADC_CR1 |= 0x01;

        //等待ADC电路稳定

        for(i=0; i<500; i++)

            ;

        ADC_CSR &= ~0x80;   //转换结束标志清0

        return;

    }

    else

    {

        ADC_CR1 &= ~0x01;   //关闭ADC电路

        return;

    }

}


//********************************

//函数名称:adc_switch

//函数功能:在单通道模式下转换某一通道的ADC值

//                  在(扫描模式下)连续转换1-Channel的ADC值

//入口参数:要转换的ADC通道号

//出口参数:无

//********************************

void adc_switch(uint8 channel)

{

    //选择转换通道

    ADC_CSR = (ADC_CSR&0xf0)|channel;

    //启动ADC

    ADC_CR1 |= 0x01;

    //等待转换

    while(!(ADC_CSR&0x80))

        ;

    ADC_CSR &= ~0x80;

    return;

}


//********************************

//函数名称:adc_mode_scan

//函数功能:ADC扫描模式设置函数

//入口函数:扫描模式开启函数

//出口参数:无

//********************************

void adc_mode_scan(uint8 value)

{

    if(value==ENB)

    {

        ADC_CR2 |= 0x02;

    }

    else

    {

        ADC_CR2 &= ~0x02;

    }

}

void read_adc(uint8 channel)

{

    unsigned char tmpH, tmpL;

    uint8 temp;

    adc_switch(channel);

    tmpH = ADC_DRH;

    tmpL = ADC_DRL;

    temp = tmpH;

    temp *= 50;

    temp /= 256;

    //uart1_send_byte(tmpH);

    //uart1_send_byte(tmpL);

    uart1_send_byte(temp);

}


在主函数里直接调用 read_adc(channel)


关键字:STM8S103  ADC  初始化设置 引用地址:STM8S103 ADC初始化设置

上一篇:STM8S103串口通信初始化设置
下一篇:STM8S103定时中断初始化

推荐阅读最新更新时间:2024-11-09 18:18

STM32 基础系列教程 11 – ADC 轮询
前言 学习stm32 adc模数转换接口使用,学会用STM32对模拟信号时行采样,通过轮询模式得到ADC结果。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 本示例所用的最小系统板原理图: 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置: 系统时钟树(ADC最大时钟不超过14M) ADC配置(轮询模式不支持扫描) 引脚配置(如上图保持默认即可) 中断配置(不开adc中断
[单片机]
STM32 基础系列教程 11 – <font color='red'>ADC</font> 轮询
艾迈斯欧司朗推出全新用于CT探测器的512通道ADC
中国 上海,2024年2月26日——全球领先的光学解决方案供应商艾迈斯欧司朗 今日宣布,推出了首款用于CT探测器的512通道模拟数字转换器(ADC)AS5912,采用23mm×15mm球栅阵列(BGA)的紧凑型系统级封装解决方案。本款ADC具有高通道密度优势,可使CT模组达到更小像素,使CT扫描仪的成像质量达到较高的分辨率。 AS5912采用系统级封装,集成了硅片和电源去耦电容器以实现可靠性能,可降低客户的物料清单(BoM)成本,易于系统集成。 它在每个通道上设置模拟前端和模拟数字转换,具有低压差稳压器(LDO)并集成参考电压和温度传感器。片上自动校准功能可减少数据采集系统的开发工作量。 同时,本款ADC还降低了
[传感器]
艾迈斯欧司朗推出全新用于CT探测器的512通道<font color='red'>ADC</font>
STM8S103之独立看门狗和窗口看门狗
独立看门狗时钟来源为LSI;窗口看门狗时钟来源为CPU; 窗口看门狗窗口的含义是:喂狗必须在一定的窗口期内完成,不能过早也不能过晚。 总结:防止程序复位,用独立看门狗。 独立看门狗使用的流程:参见库函数中的例程 ;------------------------------------------------独立看门狗 ;使能看门狗 MOV IWDG_KR,#0CCH ;使能写看门狗寄存器 MOV IWDG_KR,#55H; ;128分频 MOV IWDG_PR,#05H; ;T = (1/128K/2/128)*255 = 510ms MOV IWDG_R
[单片机]
<font color='red'>STM8S103</font>之独立看门狗和窗口看门狗
非数学方法解析∑-Δ模数转换器ADC
  引言   目前,有许多应用经常要求模数转换器具有高分辨率,而不是高精度,从而出现了对∑-Δ模数转换器的需求。为了了解∑-Δ转换器,人们必须深入了解频域中所涉及的复杂数学计算来钻研控制环路理论。但本文将让您了解一些非常重要的概念,如噪声整形、过采样和∑-Δ调制器背后使其区别于其它转换器架构的所有魔幻性能,尽可能避免数学复杂性,使您能够可视化感受事物的移动。   要了解∑-Δ模数转换器,首先需要了解噪声整形和过采样等基本概念。噪声整形可通过两种模拟来阐释。   什么是“噪声整形”?通用示例如下   比如说,某个商品的价格是9.9卢比,您购买该商品已有10天。下图是店主让您支付此商品的价格图。   不管是0.1或0.5,每天都会
[嵌入式]
非数学方法解析∑-Δ<font color='red'>模数转换器</font>(<font color='red'>ADC</font>)
为什么adc结果出现断层现象
有人使用STM32H7系列芯片对某正弦信号进行ADC采样转换,可发现最后测量出来的结果有点怪怪的,采样还原的图形上看感觉被截取了一段,呈现断层的样子,如下图所示: 他还补充说,使用H7系列不同型号以及不同ADC模块,都有类似问题,颇为奇怪! 对于这个结果,我之前未曾碰到过。于是找来STM32H7系列开发板做验证性测试,以图复现问题。 我先利用TIMER加DAC输出一路正弦波,并将输出连接到任一ADC通道。可是不管我如何测试,怎么也没发现采样结果有断层的现象。 后来,他进一步补充说,他的被测信号是带偏移的正弦波,峰谷差为50mv,中心电压在1v到3v之间,频率为1Khz。通过定时器控制ADC采样频率为2MHz. 这边根
[单片机]
为什么<font color='red'>adc</font>结果出现断层现象
STM32的ADC的采样时间及模拟信号的最大带宽
请看STM32技术参考手册的16.2节,和STM32F103xx数据手册的5.3.17节表44。可以在ST的中文网站下载到上述2个手册: http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm 前面所说“STM32的ADC的采样及转换时间最小为1us”,实际上STM32的ADC采样及转换时间可以通过程序编程进行调整,共有8种选择,按 ADC模块的驱动时钟算分别为: 1.5 ADC时钟周期 7.5 ADC时钟周期 13.5 ADC时钟周期 28.5 ADC时钟周期 41.5 ADC时钟周期 55.5 ADC时钟周期 71.5 ADC时钟周期 239.5 ADC
[单片机]
【C51自学笔记】D/A转换器++DAC0832芯片+A/D转换器+ADC0804芯片
D/A转换器:数字量D和模拟量A之间的转换。 D——》A:((高电平-低电平)/2^8 )*n n:输出的八位对应的十六进制数据对应的十进制 基本原理: 性能指标: 1、分辨率 分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。 分辨率与输入数字量的位数有确定的关系,可以表示成FS/2n。 FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。 2、线性度 线性度(也称非线性误
[单片机]
【C51自学笔记】D/A转换器++DAC0832芯片+A/D转换器+<font color='red'>ADC</font>0804芯片
AVR系列之ADC转换
整理一下关于AVR的ADC转换功能吧 AVR中的数模转换器是一个10位的逐次逼近型ADC 提供8路单端输入通道 单端电压以0V为基准 同时具有7路差分输入通道 这七路差分通道共享一个通用负端(ADC) 输入电压范围为0~VCC 它的转化时间为65~260uS 下面程序的现象为 串口发送命令启动ADC 并将结果通过串口发送到PC 任意字符开启 #include iom16v.h #include macros.h #define uchar unsigned char uchar UcAdcData ; //ADC转换的结果 uchar AdcConCom = 0 ; //ADC 转换完成标志 uchar
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved