完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近使用到了STM32F030CCT6,较之前经常使用的STM32F207还是有些区别的,今天主要说一下STM32F030 多路ADC采样(非DMA连续方式)遇到的一些问题,供其他同志参考。
首先,ST官方的STM32F0系列的官方标准库函数存在问题,也有可能是我手上的不是最新版本,但着实是个不小的坑,之前在使用STM32F07X系列的时候就遇到了,但过了一段时间又给忘了,让我调试了半天才发现。 官方原版: void ADC_ChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_Channel, uint32_t ADC_SampleTime) { uint32_t tmpreg = 0; /* Check the parameters */ assert_param(IS_ADC_ALL_PERIPH(ADCx)); assert_param(IS_ADC_CHANNEL(ADC_Channel)); assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime)); /* Configure the ADC Channel */ ADCx-》CHSELR |= (uint32_t)ADC_Channel; /* Clear the Sampling time Selection bits */ tmpreg &= ~ADC_SMPR1_SMPR; /* Set the ADC Sampling Time register */ tmpreg |= (uint32_t)ADC_SampleTime; /* Configure the ADC Sample time register */ ADCx-》SMPR = tmpreg ; } 修改之后: void ADC_ChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_Channel, uint32_t ADC_SampleTime) { uint32_t tmpreg = 0; /* Check the parameters */ assert_param(IS_ADC_ALL_PERIPH(ADCx)); assert_param(IS_ADC_CHANNEL(ADC_Channel)); assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime)); /* Configure the ADC Channel ,删除或运算 */ ADCx-》CHSELR = (uint32_t)ADC_Channel; /* Clear the Sampling time Selection bits */ tmpreg &= ~ADC_SMPR1_SMPR; /* Set the ADC Sampling Time register */ tmpreg |= (uint32_t)ADC_SampleTime; /* Configure the ADC Sample time register */ ADCx-》SMPR = tmpreg ; } 其次,在多路ADC通道非DMA连续采样方式下,发现各通道ADC采样数据出现了一个偏移错位,这里和我的采样方式有一定的关系。但确实在操作上和STM32F2系列有些不同,我是将之前STM32F207的采样程序直接拿过来用的,分析之后发现了问题所在,即配置通道启动采样后必须读取采样数据,如果没有读取数据,即使随后配置了其他通道并启动采样也会导致读取的数据是之前的采样数据(间隔很短的情况下),所以STM32F030尽量保证通道配置、启动与读取匹配出现,防止数据异常。 ADC_ChannelConfig(ADC1, chanel_num[AI_CurrentCH], ADC_SampleTime_55_5Cycles); ADC_StartOfConversion(ADC1); ADC_GetConversionValue(ADC1);即使有一次的采样数据不需要,也要执行对应的读取操作。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1992 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1779 浏览 1 评论
1244 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
823 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1797 浏览 2 评论
2030浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
935浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
335浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
682浏览 3评论
668浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-5 12:08 , Processed in 0.785527 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191