ADC采样间隔问题+TRGO作为ADC的触发源头
为了控制采样时间,可以使用一个定时器的TRGO(定时器里每次发生更新事件时会有这个信号产生)作为定时器的外部触发。
从定时器框图可以看出,TRGO为TIMx的一个输出.不过这个输出是内部使用的。
void myADC_Init()
{
ADC_InitTypeDef ADC_InitStruct;
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
//ADC1_Init
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA,&GPIO_InitStruct);
ADC_DeInit(ADC1);
ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;
ADC_InitStruct.ADC_NbrOfChannel = 1;
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
ADC_InitStruct.ADC_ScanConvMode = DISABLE;
ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;
ADC_InitStruct.ADC_DataAlign =ADC_DataAlign_Right;
ADC_Init(ADC1,&ADC_InitStruct);
ADC_ExternalTrigConvCmd(ADC1,ENABLE);
//ENABLE ADC1
ADC_RegularChannelConfig(ADC1,0,1,ADC_SampleTime_1Cycles5);
ADC_DMACmd(ADC1,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
void TIM3_Init()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = 72000000/SampleRate;
TIM_TimeBaseInitStruct.TIM_Prescaler = 0;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);
TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //选择TRGO触发源为计时器更新时间
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
TIM_Cmd(TIM3,ENABLE);
}
转载于:https://www.cnblogs.com/dadidelearning/p/10059822.html
ADC采样间隔问题+TRGO作为ADC的触发源头相关推荐
- 19. GD32F103C8T6入门教程-adc使用教程6-外部中断线11触发adc0
adc 使用教程6-外部中断线11触发adc0 使用外部中断线11 触发ADC开始采集数据,PA11 gpio 1.初始化时钟和定义全局变量 /*保存ADC值*/ uint32_t adc_value ...
- 20. GD32F103C8T6入门教程-adc使用外部中断IT11触发启动adc规则通道,使用外中断IT15触发注入组
adc 使用教程6-使用外部中断IT11触发启动adc规则通道,使用外中断IT15触发注入组 ADC支持18个多路通道,可以把转换组织成两组:一个规则组通道和一个注入组通道 规则组,可以按照特定的序列 ...
- 基于STM32F407 ADC双通道 PS2游戏机摇杆ADC采集
基于STM32F407 ADC双通道 PS2游戏机摇杆ADC采集 一.PS2游戏机摇杆概述 1.1PS2游戏机摇杆概述 1.2PS2游戏机摇杆图解 二.硬件连接分析 三.代码实现 3.1 ADC代码 ...
- ADC电压采集(多重ADC交替模式)
实验说明 1:采用三个ADC采集同一个IO口(通道12 PC2),采用一个ADC去采集最快速率2.4M,三个同时交替采集最高可达7.2M 2:三重是以ADC1占主导的,我们只要开启ADC1的DMA就可 ...
- 【STM32F042】ADC卡死,ADC一直为0,ADC配置的坑
1.问题描述 最近在调试电机驱动,刚好写到电压采集这一部分,板子的主控是STM32F040K6T6.用到了ADC,使用非DMA方式.刚开始读取到的值全部是0,然后程序卡死,我在使用万用表测IO口电压后 ...
- matlab求adc信号的信噪比,关于ADC的信噪比 - pengyouxiaohui的日志 - EETOP 创芯网论坛 (原名:电子顶级开发网) -...
昨天电话面试,问我选择ADC都考虑什么,以前搞设计感觉自己是一个不求甚解的人,我说会考虑采样率和位数,问我如何计算精度,我说了计算公式,他又问信噪比,话说我真的没考虑过这方面,只有实话实说,我没考虑过 ...
- c语言adc采集取平均值,读取ADC值的浮动平均值
我想做移动平均值或类似的东西,因为我从ADC获得噪音值,这是我的第一次尝试,只是为了计算移动平均值,但是每次值都变为0,你可以帮我吗?读取ADC值的浮动平均值 这是代码的一部分,这使得该魔术: uns ...
- stm32 adc过采样_产生ADC误差的外部原因有哪些?
01 前言 上篇文章中介绍了ADC自身转换产生的误差,本篇文章来介绍下外部原因导致的ADC误差. 02 ADC环境导致的误差 参考电压噪声 由于ADC输出为模拟信号电压与参考电压之比,因此模拟参考上的 ...
- adc量化单位_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENO...
(一)一个基本概念 分贝(dB):按照对数定义的一个幅度单位.对于电压值,dB以20log(VA/VB)给出:对于功率值,以10log(PA/PB)给出.dBc是相对于一个载波信号的dB值:dBm是相 ...
最新文章
- Oracle EXP-00091解决方法
- java wed登录面 代码_java web 登录界面
- 营销型网站吸引用户说难也难,说简单也简单
- @resource和@Autowired区别
- 阵列卡正确安装调试方法
- Backbone学习日记第二集——Model
- centos php solr 安装,centos下安装配置solr全纪录
- 利用IP纯真数据库查询地址
- 解决Tortoise git没有红色、绿色勾勾的问题
- 腾讯互娱PHP怎么样,还原最真实的NBA:专访腾讯互娱《最强NBA》
- mysql 主从1146_mysql 主从复制1146错误处理办法
- Android 虚拟按键上报
- 消防工程师 第二篇 建筑防火 5.1 防火分区
- 大数据学习路线(完整详细版)
- 大物笔记(顺便记记)
- django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方案
- 华师大 OJ 2897
- csgo搭建显示段位的服务器,csgo官匹隐藏分怎么看 官匹段位升级机制
- java实现北京地铁换乘
- fiddler工具使用大全(全网最详细)