野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26441|回复: 3

请问如何串口数据实时传输到PC端

[复制链接]
发表于 2021-4-21 20:05:53 | 显示全部楼层 |阅读模式
本帖最后由 Joker_LS 于 2021-4-21 20:10 编辑

本来准备用串口调试,然后打印数据再保存,但是串口打印的Printf函数特别占CPU。因为同时STM32还在输出一定周期正弦波,所以这导致正弦波周期被拉长。有好的优化方式,或者用SD卡存储数据、WIFI模块传输能解决这样的问题吗?
回复

使用道具 举报

发表于 2021-4-22 08:24:34 | 显示全部楼层

回帖奖励 +1 火花

输出波形用DAC+DMA呗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 10:36:47 | 显示全部楼层
a1281854907 发表于 2021-4-22 08:24
输出波形用DAC+DMA呗

输出波形因为要求有正负值范围,所以用了DA模块,基于STM32的SPI协议输出的,并不能用DMA传输。
但是,突然想到因为DMA传输时CPU可以执行其他程序,是不是串口传输配置成DMA内存到外设的传输方式就可以避免这个问题?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 15:26:23 | 显示全部楼层
自回复:已经验证串口采用DMA的方式传输,不占用CPU。DAC的输出依然采用DAC模块基于SPI传输,此方式占主要的CPU运行。
思路如下:
1.DMA循环传输数据到串口,传输的速率由ADC的中断回调控制,设定ADC中断回调一定的次数后再开启DMA串口传输的通道使能。
2.每次传输的数据先将其转化为字符串再打印输出,每转化完成一次串口回调函数关闭DMA串口传输的通道使能,等待开启。
后期的问题:基于SPI传输的DAC模块占主要的CPU运行,后续可能会优化采用其他的方式。但是,目前修改后的串口打印基本不占用CPU运行,可用于较高要求的运用场合。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-21 16:39 , Processed in 0.027637 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表