zhangdifan 发表于 2010-5-13 08:07:33

STM32的ADC连续转换模式是怎么回事?

STM32的ADC连续转换模式是怎么回事?就是具体转换过程是什么?

zhangdifan 发表于 2010-5-17 08:37:23

这年头真是奇怪啊,又是有人看没人回

vvinggth204 发表于 2010-6-9 18:39:32

回一个。

mcucow 发表于 2010-6-9 19:28:53

回一个, 但帮不上忙

__STM32__ 发表于 2010-6-10 18:19:51

这年头真是奇怪啊,很多人都不愿意看手册。

banyai 发表于 2010-6-10 19:39:27

连续转换,就是像疯了一样的不停的转换。

yuanbangyin 发表于 2010-6-13 21:02:42

我好像就这样用的,连续采集到一个变量里面,然后定时把这个变量赋值给另外的变量,就相当于低速采集数据了,效果好像还可以.

20061002838 发表于 2010-6-14 14:17:07

就是这一次转换完成之后立即开始下一次转换,转换速度只由你的采样时间+转换时间决定。
    这是一种方式转换很快的,我的毕设就是这么悲剧的。心电图,TIM触发500Hz采样率,结果弄成连续转换模式了。悲剧了,将近1M的采样率,数据处理来不及,液晶显示也来不及,搞了几天都不行。最后白天检查硬件的时候东西没有,晚上在天子里看见一个ADC的例子,想起我的工作模式来,程序里面一改,马上好了,很不错的心电图显示,然后我就有了一种撞墙的冲动。
心电图制作的资料等我这段时间忙完就上传上来,先发几张图片上来给大伙瞧瞧,看看有兴趣的人多不,不多说了,看图:
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561801.jpg
(原文件名:1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561802.jpg
(原文件名:2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561803.jpg
(原文件名:5.jpg)

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561804.jpg
(原文件名:6.jpg)

软件用的是TI的串口显示程序,实际效果跟液晶上面是以模一样的。

flyforyou85 发表于 2011-2-21 18:35:59

这个东西比较感兴趣,发个程序上来,

ZHAOBAO511 发表于 2024-1-4 17:03:27

banyai 发表于 2010-6-10 19:39
连续转换,就是像疯了一样的不停的转换。
(引用自6楼)

我倒希望像疯了一样转换,我的不动,启动一次转换一次。
STM32L431 设置为ADC连续转换,结果还是要手动停止才可以。
void MX_ADC1_Init(void)
{
ADC_ChannelConfTypeDef sConfig = {0};

/** Common config
*/
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
hadc1.Init.LowPowerAutoWait = DISABLE;
hadc1.Init.ContinuousConvMode = ENABLE;
hadc1.Init.NbrOfConversion = 1;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.DMAContinuousRequests = DISABLE;
hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
hadc1.Init.OversamplingMode = DISABLE;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
    Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_8;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
    Error_Handler();
}

}






每一次都要停止:
HAL_ADC_Start(&hadc1);
      HAL_ADC_PollForConversion(&hadc1,0x02);   //等待转换完成
                              HAL_ADC_Stop(&hadc1); 如果不停止下次转换就没数据。
页: [1]
查看完整版本: STM32的ADC连续转换模式是怎么回事?