[求助] 请问应用STM32如何设计一个可以采集传感器阵列的程序

EdwardsThompson   2018-3-22 14:03 楼主
如题,项目中要对一个接触面的压力进行采集,应用传感器阵列,需要应用模拟开关对行进行切换和扫描,这样的程序该如何设计?自己的想法是ADC采集+DMA传输,DMA传输完一行的数据后在DMA中断里实现通道切换?不知这样可行不?还有一种就是TIM+ADC+DMA,应用TIM来触发ADC,控制ADC的采样率,

        ADC_RegularChannelConfig(ADC1, ADC_Channel_9,10, ADC_SampleTime_480Cycles);这句话是不是控制ADC的采样率,竟然已经有了,那为啥还有可以应用TIM定时器来控制其采样率?

       在TIM来控制ADC的采样率时,标注的两种触发方式有什么区别?
/* ADC1 regular channel 12 configuration ************************************/
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
//ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//á¬DøÄ£ê½êÇê2Ã′¿   
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_TRGO;//_TRGO定时器触发???
//        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;//与上者有什么区别?

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion =10;
  ADC_Init(ADC1, &ADC_InitStructure);
   
//     /* Enable ADC1 DMA */
//  ADC_DMACmd(ADC1, ENABLE);
  • stm32纠错2.jpg
淡泊明志 宁静致远

回复评论 (2)

通常单片机的多通道AD都是复用的,如果单个通道一直占用了AD,资源就浪费了,每个通道采样率与读取频率都可以配置。例如,
CH1采样率配置为100Khz,CH2采样率配置为50Khz,TIM1的溢出中断作为触发源,然后配置溢出频率为10HZ,即每秒中单片机会读取10次CH1,CH2的数据。
ADC_SampleTime_480Cycles 这个与采样率有关,
ADC_ExternalTrigConv_T2_TRGO这个与你读取数据的频率有关。
中断源配置见图。
  • 捕获.PNG
爱电子,爱生活
点赞  2018-3-22 19:52
引用: wsdymg 发表于 2018-3-22 03:52
通常单片机的多通道AD都是复用的,如果单个通道一直占用了AD,资源就浪费了,每个通道采样率与读取频率都可 ...

谢谢解答,长知识了!
淡泊明志 宁静致远
点赞  2018-3-24 19:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复