问答

汇集网友智慧,解决技术难题

21ic问答首页 - 问题:STM32能够做到数据采集和发送同时进行吗?

嵌入式 STM32

问题:STM32能够做到数据采集和发送同时进行吗?

yzqzz2023-12-18
请教一下大家,我进行STM32+ADC采集实验,采集到数据后打算进行如下操作:
1、将采集来的Data实时保存在STM32单片机内部;
2、一次测量需要采样1024次,1024次采样产生的数据32K字节;
3、一次测量结束胡,STM32单片机将本次测量的32K字节通过Wifi传给上位机;
4、上位机将接收的数据显示保存。
问题:假设采集正弦波,能够实时不间断的采集连续的正弦波形吗?(一直完整采集正弦波)

如果可以在大方向该如何设计程序;如何不可以是为什么?
希望大家帮帮忙,不吝赐教,0.0
回答 +关注 12
21625人浏览 12人回答问题 分享 举报
12 个回答
  • 双缓冲没问题,可以根据你采集周期和发送计算缓冲块的大小
  • 发送速率大于采样速率,完全没问题啊
  • 在转换时,发送。
  • 即使用DMA也不可能做到同时,ADC转换有时间,只是看延时有多少吧。再牛的CPU也不可能做到同时。
  • LinkMe 发表于 2023-12-19 13:41
    一次1024个,多久采集一次?

    不是一次1024个。是连续采集。STM32 DMA 有循环模式。双缓冲是连续的且环形的,利用DMA 半缓存中断和完成中断通知MCU 选择已经缓存好的数据区的数据的通信。
  • 首先你这提法是有问题的,第一MCU它是顺序执行代码的,没有并行之说,当然多核的除外。所谓的同时,只是引入了操作系统,只是你看起来有点“像”同时执行任务。2、如果你要第一时间把数据发给上位,你就得用到中断或者引入操作系统来处理。开启两个任务,一个任务去检测数据,另一个任务用于发送数据给上位,检测完了,发给信号给数据发送任务,然后继续去采集他的数据。发送任务,等待数据采集完的信号,收到信号后把数据发送出去。
    3、如果不引入操作系统,也可以使用DMA+中断来处理,就是DMA采集完后,会产生一个中断,主任务收到这个信号后把数据发送出去。
    当然不同的芯片他的外设不一定相同,有些不一定能跑操作系统,有些不一定有DMA,所以要具体情况具体分析。
    xch 2023-12-19 17:34 回复TA
    采集,通信和MCU运行代码是可以并行的。你得仔细看题目。MCU 也指定STM32了,没有DMA吗? 
  • 一次1024个,多久采集一次?
  • 只需要采样速率不高于发送速率即可实现,另外通过DMA传输数据,更能加强实时性
12下一页

您需要登录后才可以回复 登录 | 注册