硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1299|回复: 3
收起左侧

[技术讨论] STM32F411 串口发送两个数据帧不是连续的

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2024-7-23 01:29:24 | 显示全部楼层 |阅读模式
大佬们,请教一个问题。为什么stm32f411的串口发送,上一个数据帧的停止位和下一个数据帧的起始位之间会存在一个比较长的空闲?这个空闲时间是怎么怎么来的?不同的波特率,空闲的时间也是不一样的
第一张图的波特率是115200,8N1


波特率115200,8N1

波特率115200,8N1


第二张图的波特率是1500000,8N1

波特率1500000,8N1

波特率1500000,8N1


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-7-23 10:18:29 | 显示全部楼层
应该是你自己程序限制的。

使用串口DMA连续发送试试
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2024-7-23 11:10:14 | 显示全部楼层
硬汉哥,我用串口DMA连续发送验证了一下,发现确实不会有两个连续数据帧确实不会有空闲帧了。这是为啥啊?是因为

1、不用DMA发送的时候,cpu在发送完一个字节后,会处理其他东西,再发送到UART外设,UART外设再把这个字节发出去

2、DMA发送的时候,会通过自己在总线矩阵中的链路把字节发送给UART外设,这时候没有cpu的参与吗?

如果是这样的,DMA访问总线矩阵的时候,会不会存在和CPU访问总线发生冲突的情况啊?

115200,8N1

115200,8N1

回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-8-5 04:43:32 | 显示全部楼层
没使用fifo导致的,阻塞标志位使用tx fifo标志位。如果使用发送完毕标志位就会导致有帧间隔。spi同理
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 18:15 , Processed in 0.041686 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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