搜索
bottom↓
12
返回列表 发新帖
楼主: akwkevin2011

STM32实现USART+DMA接收未知长度的数据和发送

  [复制链接]

出0入0汤圆

发表于 2014-2-20 17:22:14 | 显示全部楼层
正在学习,尝试怎么操作!

出0入0汤圆

发表于 2014-4-18 11:06:09 | 显示全部楼层
多謝樓主!!學習中~~~

出0入0汤圆

发表于 2014-4-19 10:57:27 | 显示全部楼层
先做个标记,有时间在研究

出0入0汤圆

发表于 2014-4-19 11:17:43 | 显示全部楼层
空闲中断用来做MODBUS通信再好不过了!

出0入0汤圆

发表于 2014-4-20 00:59:22 | 显示全部楼层
好东西,值 得参考

出0入0汤圆

发表于 2014-4-21 11:16:51 | 显示全部楼层
楼主太强悍了,必须要学习啊。

出0入0汤圆

发表于 2014-4-21 17:08:35 | 显示全部楼层
顶一下   

出0入0汤圆

发表于 2014-4-23 11:28:33 | 显示全部楼层
mark 学习了,谢谢楼主

出0入0汤圆

发表于 2014-5-4 18:55:15 | 显示全部楼层
不错,学习。。

出0入0汤圆

发表于 2014-5-4 19:13:32 | 显示全部楼层
好东西 收藏下

出0入0汤圆

发表于 2014-5-5 11:30:30 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2014-5-14 09:42:31 | 显示全部楼层
LZ的代码有点看不懂,为啥要用两个串口?“后台数据->USART1-> USART2->其它设备”,我觉得中间完全可以只用一个串口过渡啊!求解释!

出0入0汤圆

发表于 2014-5-14 10:21:21 | 显示全部楼层
上次没看懂楼主的意思,这次仔细一看明白了~ 这个确实很方便,记下了,我现在STM32有1个SPI,2个CAN和4个UART通信口都用上了,不知道有没有必要在部分UART上采用这种方法,之前本想SPI用DMA传输的,结果一算SPI速度太快,直接while()等待发送接收的时间也就几十us,就没用DMA了,而且那时候不知道这种方法,不知道怎么处理长度不等的数据;

出0入0汤圆

发表于 2014-5-23 15:59:19 | 显示全部楼层
肯定有用,先mark

出0入0汤圆

发表于 2014-5-23 21:11:16 | 显示全部楼层
这个必须要顶顶顶。

出0入57汤圆

发表于 2014-6-16 10:54:13 | 显示全部楼层
想请问一下:STM32F103ZE里面,使用USART1~4,但同事说只有USART1~3能使用DMA通道做发送,串口4不行,只能配置成普通串口,我在STM32硬件手册里没找到相关描述,请问实际情况是这样的吗?

出0入0汤圆

发表于 2014-9-12 09:08:43 | 显示全部楼层
好东西

出0入0汤圆

发表于 2014-9-12 11:09:43 | 显示全部楼层
好东西

出0入0汤圆

发表于 2014-9-12 11:44:52 | 显示全部楼层
收藏学习了!

出0入0汤圆

发表于 2014-9-16 16:12:00 | 显示全部楼层
以前总是采用开接收引脚外部中断,并采用超时,现在试下楼主这种方式。

出0入0汤圆

发表于 2014-9-16 16:19:38 | 显示全部楼层
jiang47 发表于 2012-9-11 13:43
你说的接连收到2帧是  nazily215  所说的情况?就是2帧数据变成了一帧;
还有种就是我收到一帧了,标志位 ...

你的想法很不错,借鉴下!

出0入0汤圆

发表于 2014-9-16 16:24:22 | 显示全部楼层
nazily215 发表于 2012-9-12 13:58
其實有一個可能對你產品不會存在,但理論上一定有的問題,就是,當我把你的數據幀拉到超過你的DMA緩沖( ...

这确实也是个问题,可能nazily215的数据密度不是很密。我最近发现以前采用的方法实时性很不好。

出0入0汤圆

发表于 2014-10-14 09:14:28 | 显示全部楼层
先收藏,之后再慢慢研究吧

出0入0汤圆

发表于 2014-10-25 23:22:15 | 显示全部楼层
shuxmpx123 发表于 2014-5-14 10:21
上次没看懂楼主的意思,这次仔细一看明白了~ 这个确实很方便,记下了,我现在STM32有1个SPI,2个CAN和4个UA ...

SPI貌似更适合DMA吧,尤其是进行网络通信时,不用频繁进入CPU

出0入0汤圆

发表于 2014-10-26 22:31:27 | 显示全部楼层
LearningASM 发表于 2014-10-25 23:22
SPI貌似更适合DMA吧,尤其是进行网络通信时,不用频繁进入CPU

数据量大的时候用这种方法合适,我这个项目开始也用这个,后来算了一下,我的数据量很小,而且需要频繁操作,而且SPI本身速率也很快,所以直接操作SPI了,程序等待SPI发生一帧数据的时间也可以忽略,所以没用DMA了。

出0入0汤圆

发表于 2014-10-27 09:20:41 | 显示全部楼层
好贴~~~~长知识了~~

出0入0汤圆

发表于 2014-11-11 11:55:19 | 显示全部楼层
谢谢分享。。。

出0入0汤圆

发表于 2014-12-1 16:08:41 | 显示全部楼层
正好用上,谢谢LZ!

出0入0汤圆

发表于 2014-12-15 22:02:10 | 显示全部楼层
写的非常好,LZ研究的非常深入,实乃强人一个,赞一个!

出5入42汤圆

发表于 2014-12-24 09:59:04 | 显示全部楼层
串口的DMA还没用过,只用过ADC的DMA。学习。

出0入0汤圆

发表于 2015-1-29 14:44:32 | 显示全部楼层
挺不错的

出0入0汤圆

发表于 2015-3-6 18:59:41 | 显示全部楼层
请教一问题,USART的发送数组在实时的刷新数据,然后这时使能DMA发送数据(发送过程中该数组也还在刷新),能这样用吗?会出现什么问题?

出0入0汤圆

发表于 2015-3-7 12:14:29 | 显示全部楼层
mark                                   

出0入0汤圆

发表于 2015-4-16 22:40:35 | 显示全部楼层
lollipop 发表于 2012-7-14 23:36
如果你是用STM32F0的话,哈哈,就有更好的方法啦。
USART有超时中断或帧尾检测 ...

F0的串口不是所有的串口都有超时中断功能。没有超时中断功能的串口和F1的差不多。我在F0的USART2上面移植F1的程序测试通不过。方法采用的是空闲中断中读取DMA传送的数据字节数量,然后再把DMA传送到内存中的值复制到变量中。F1的测试没问题,F0很奇怪通不过。USART2_RX,DMA通道5都在工作,串口空闲中断也可以进入,就是DMA传送的值是乱的。有的时候数据多有的时候少。很奇怪。

出0入0汤圆

发表于 2015-6-1 11:13:33 | 显示全部楼层
正在做串口接收帧  学习了 谢谢楼主

出0入0汤圆

发表于 2015-8-18 16:12:37 | 显示全部楼层
mark   UART+DMA

出0入0汤圆

发表于 2015-8-19 09:27:13 | 显示全部楼层
楼主这句
for(i=0;i<DATA_LEN;i++)
{
    USART1_SEND_DATA[i]=USART1_RECEIVE_DATA[i];
}
影响系统实时性吧,如果LEN很长的话。

出0入0汤圆

发表于 2015-9-24 10:22:24 | 显示全部楼层
正好需要,借用下。我自己也有这种方法写的和labview连接通讯是老当机,不懂为什么

出0入0汤圆

发表于 2015-9-24 16:13:39 | 显示全部楼层
看下未知长度的处理

出0入0汤圆

发表于 2016-6-6 20:44:43 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2016-6-6 22:26:36 | 显示全部楼层
强帖

出0入0汤圆

发表于 2016-6-6 22:39:37 | 显示全部楼层
好东西,mark

出0入0汤圆

发表于 2016-6-8 22:57:45 | 显示全部楼层
真的是很好,感谢分享

出0入0汤圆

发表于 2016-7-28 22:20:03 | 显示全部楼层
留名待查

出0入0汤圆

发表于 2016-8-11 10:19:51 | 显示全部楼层
用到了,感谢楼主

出0入0汤圆

发表于 2016-8-12 10:20:27 | 显示全部楼层
这个真不错,MCU的效率提高了很多,感谢楼主无私奉献!

出0入0汤圆

发表于 2016-8-12 11:20:46 | 显示全部楼层
支持,好资料,谢谢啦。

出0入0汤圆

发表于 2018-4-26 10:23:58 | 显示全部楼层
谢谢分享!

出130入0汤圆

发表于 2018-4-26 12:28:58 来自手机 | 显示全部楼层
实用强帖,能减少CPU不少负担
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 04:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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