历史上的今天
今天是:2024年09月15日(星期日)
2020年09月15日 | stm8笔记3-ad连续采样
2020-09-15 来源:eefocus
一:主要功能
1,10位的分辨率
2,单次和连续转换模式。单次转换模式,转换一次就停止转换;连续转换模式,一旦开启,一直转换。
3,预分频可编程设置。adc时钟可由系统主时钟经分频后提供。
4,可以选择外部中断(ASC_ETR)或者定时器触发信号(TRGO)作为A/D转换启动触发信号。不仅可以手动开启ADC转换,也可由外部中断或者TIM1的触发信号来开启。
5,参考电压输入的两个引脚的电压范围:0V<=VREF-<=0.5V,2.7V<=VREF+<=VDDA。
6,转换结束后可以产生中断,可以设置寄存器开启转换结束中断。
7,数据对齐方式有左对齐和右对齐。
二:寄存器介绍
1,ADC控制/状态寄存器(ADC_CSR)
2,ADC 配置寄存器 1 (ADC_CR1)
3,ADC 配置寄存器 2 (ADC_CR2)
4,ADC配置寄存器 3 (ADC_CR3)
5,ADC 数据高位寄存器(ADC_DRH) ,低位类似
6,ADC高位数据缓存寄存器(ADC_DBXRH,X=0..7 OR 0..9)

三,连续转换配置步骤
1,连续转换模式(寄存器ADC_CR1)
2,通道选择(寄存器ADC_CSR)
3,对齐方式配置(寄存器ADC_CR2)
4,从低功耗中唤醒(寄存器ADC_CR1)
5,AD连续转换开启(寄存器ADC_CR1)
ad转换值读取:VADC= (unsigned int)ADC_DRL;VADC|= ADC_DRH<<8; //转换的值直接送入VADC
寄存器中值不取走就会被覆盖
四:代码
功能:ad连续转换,也就是开启ad转换之后ad一直让他自己转换,我们在主程序里读取ad存的值就可以,超过某一电压就开启小灯,低于某一电压就关闭小灯
代码:
ADC_CR1=0X02;//连续转换模式
ADC_CSR=0X06;//通道选择
ADC_CR2|=0x08; //默认右对齐
ADC_CR1|=0x01; //从低功耗中唤醒
ADC_CR1|=0x02;
ADC_CR1|=0x01;
//ADC_CR1|=0x01; //AD连续转换开始,不可直接写入0x03
while(1)
{
VADC= (unsigned int)ADC_DRL;
VADC|= ADC_DRH<<8; //转换的值直接送入VADC
if(VADC>=0x021c)
PG_ODR|=0X01;//小灯亮
else
PG_ODR&=0XFE;//小灯灭
//delay(50000);
}
史海拾趣
|
推荐下载,非常不错的电子书hardware_design_verification.chm Copyright Prentice Hall Modern Semiconductor Design Series Preface To the Audience To the Instru ...… 查看全部问答> |
|
请教!!!使用Driverstudio,Defaultpnp的问题 使用DRIVERMONITOR显示 IRP: Major=IRP_MJ_PNP Minor= (0x18) defaultPnp--. IRP 856C8790, STATUS c00000bb 调用m_lower.ActivateConfiguration配置时,返回AC_FAILED_TO_OPEN_PIPE_OBJECT, 是我端点配置错误吗? 应该跟底下的固 ...… 查看全部问答> |
|
添加了mainMenu控件和inputPanel控件,但是控件不显示 我在Textbox的GotFocus事件事添加了 inputpanel1.Enabled=true; 但是在mainMenu控件上看不到图标,也没有办法切换输入法… 查看全部问答> |
|
lineMakeCall 失败 错误号为 LINEERR_INVALBEARERMODE 的原因 我的调用顺序为: lineOpen --------------Success lineTranslateAddress -----success 设置为: lpCallParams->dwTotalSize = dwSizeOfCallParams; lpCallParam ...… 查看全部问答> |
|
ERROR: Res2Exe: WriteResFile: Open input file D:\\WINCE500\\PBWorkspaces\\GDI1029\\RelDir\\Emulator_x86_Release\\shlwapi.dll failed. ERROR: Res2Exe: WriteResFile: Open input file D:\\WINCE500\\PBWorkspaces\\GDI1029\\RelDir\\Emula ...… 查看全部问答> |
|
一般检测一个按键可以这样做:while(1){ SysCtlDelay(SysCtlClockGet()/30); //延迟100ms temp=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_5); if(temp==0) ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:30 编辑 新闻背景:6月9日,TI 宣布推出业界首款单芯片无源红外线 (IR) MEMS 温度传感器,首次为便携式消费类电子产品实现非接触温度测量功能。该 TMP006 数字温度传感器可帮助智能电话、平板电脑以及笔记本电 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 各位高手帮忙指点一下,按照下图中的cxa1238芯片的22脚接的本振,可是怎么调频率总是680k左右,我的载频是35M,所以本振应该是在45M左右,可是怎么调可调电容,它频率总不变啊!!!!找也没找出原因 ...… 查看全部问答> |
|
研究ADS1115一段时间了,终于搞定啦,其实操作还是蛮简单的,主要分为三部分的步骤,本次列子是模拟IIC操作的哦。。。。。 其实主要分为三部分, 第一部分:write config register 1 0x90 最后一位是R/W位,高为读,低 ...… 查看全部问答> |




