请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32U575】关于ADC多通道采样配置问题

[复制链接]
梦想成真_518 提问时间:2022-8-4 13:48 / 未解决
需求:拟用ADC1的IN1~7进行多通道采样,其中IN7通过多路复用开关再扩展七个通道,思路是在单个ADC通道采样中断处理中切换ADC采采样通道。编程实现:
  1. Init.NbrOfConversion = 1;
  2. Init.EOCSelection =ADC_EOC_SINGLE_CONV;
复制代码
  1. void CfgAdcSampleChannel(ADC_HandleTypeDef *pAdcHandleCfg,UINT32 sample_channel,UINT32 rank)
  2. {
  3.     ADC_ChannelConfTypeDef sConfig = {0};
  4.        
  5.         sConfig.Channel = sample_channel;         //  输入通道号
  6.         sConfig.Rank = ADC_REGULAR_RANK_1;       // ADC常规转换组里的编号
  7.         sConfig.SamplingTime = ADC_SAMPLETIME_391CYCLES;  // 采样时间,单位为ADCCLK周期数
  8.         sConfig.SingleDiff = ADC_SINGLE_ENDED;         // 选择单端采样
  9.         sConfig.OffsetNumber = ADC_OFFSET_NONE;
  10.         sConfig.Offset = 0;
  11.         HAL_ADC_ConfigChannel(pAdcHandleCfg, &sConfig);
  12. }
复制代码
问题:
1.如何实现多通道的ADC采样频率不同,例如IN1->IN2->IN3->IN1-IN4->IN5,其中IN1采样频率为其他通道的2倍;
2.多通道单次采样是否可以如上面代码所示,在ADC采样中断中仅仅修改Channel 的参数,而rank保持不变?
3.在ADC采样中断处理中是否可以重新配置ADC采样通道及配置?

收藏 评论2 发布时间:2022-8-4 13:48

举报

2个回答
xmshao 回答时间:2022-8-4 16:43:30
1.如何实现多通道的ADC采样频率不同,例如IN1->IN2->IN3->IN1-IN4->IN5,其中IN1采样频率为其他通道的2倍;
==>一共5个通道,每次转换1个通道。这样安排我觉得没啥不好。当然我也还没想出更好的办法。
2.多通道单次采样是否可以如上面代码所示,在ADC采样中断中仅仅修改Channel 的参数,而rank保持不变?
==>可以这样的。你可以参照那个sConfig结构体只修改通道再调用下那个ADC_ConfigChannel配置函数。或者直接操作寄存器也行。
3.在ADC采样中断处理中是否可以重新配置ADC采样通道及配置?

==>不该有问题。如果中断多的话,可以先建个标志外部来修改配置也行。
这些都有例程,可以参考、比较着来。
梦想成真_518 回答时间:2022-8-5 08:39:55
xmshao 发表于 2022-8-4 16:43
1.如何实现多通道的ADC采样频率不同,例如IN1->IN2->IN3->IN1-IN4->IN5,其中IN1采样频率为其他通道的2倍;
...

如果答复2、3成立的话,那么可以自定义每个通道的采样率了,可以在中断处理中控制采样通道,谢谢
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版