打印

一个stm32的多个串口同时接收数据

[复制链接]
19811|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dkill|  楼主 | 2008-7-21 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
几个串口同时接受数据,怎样保证不丢失数据。数据不断的发送给每个串口
沙发
pheavecn| | 2008-7-21 09:56 | 只看该作者

太容易了吧。

使用特权

评论回复
板凳
dkill|  楼主 | 2008-7-21 10:03 | 只看该作者

说说

使用特权

评论回复
地板
dkill|  楼主 | 2008-7-21 10:52 | 只看该作者

两个串口同时来数据了 这个时候只能进入一个中断

那另个串口要接受的数据不是丢失了吗

使用特权

评论回复
5
香水城| | 2008-7-21 11:07 | 只看该作者

UART串口数据传输是一种很慢的传输方式

以波特率为38400计算,假定数据帧格式为:8个数据位、1个停止位、没有奇偶检验位,则每个字节的传输时间至少为260us,中断处理程序只要在这个时间之内从接受寄存器读出收到的数据,就不会造成数据丢失。

如果你有2个串口同时传输数据,则每个串口的接收中断处理程序只要能在130us内完成,就不会造成数据丢失。

请问你的接收中断处理程序需要多长的时间?

如果数据传输速率很高,使用中断程序处理有困难,还可以使用DMA进行传输。总之,对于STM32来说,UART串口数据传输是一种很慢的传输方式。

使用特权

评论回复
6
dkill|  楼主 | 2008-7-21 13:21 | 只看该作者

谢谢香主 不过还有一个问题

如果要接受的数据的  发过来的数据间隔很小  是不是就会产生丢数据
  那么如果像您说的接受时间大于130了  那么使用dma会解决这个问题吗

使用特权

评论回复
7
香水城| | 2008-7-21 13:35 | 只看该作者

STM32的USART中移位寄存器和数据寄存器是分开的

下图是STM32 USART的框图,在图的右上方可以看到,从USART_RX到来的数据通过Receive Shift Register被转换为并行格式,只有当收到一个完整的字节后,Receive Shift Register的内容才被送到Receive Data Register (RDR),程序可以通过RDR读出收到的数据字节。

只要你的程序在下一个数据字节到来之前读出Receive Data Register (RDR),就不会产生数据丢失。

问题的关键是:USART的内部有2个寄存器,一个用于接收数据,另一个用于读取数据,而你把这2者想象为一个寄存器了。

使用特权

评论回复
8
dkill|  楼主 | 2008-7-21 13:54 | 只看该作者

还有一个问题

最大容量的带有5个串口  他们是一样的吗  都可以做为485通讯吗

使用特权

评论回复
9
香水城| | 2008-7-21 14:16 | 只看该作者

STM32的5个USART模块不尽相同

请看STM32技术参考手册,所有答案都在其中。


至于是否可以作为485通讯,要你自己决定。485协议只规定了物理层的传输,没有规定数据传输格式,UART只是常用的一种。

使用特权

评论回复
10
hotpower| | 2008-7-22 21:25 | 只看该作者

哈哈~~~HotComm支持250个串口~~~

可惜俺没机会实验~~~

使用特权

评论回复
11
dkill|  楼主 | 2008-7-23 09:13 | 只看该作者

楼上是什么东东

使用特权

评论回复
12
xwj| | 2008-7-23 09:49 | 只看该作者

呵呵,真 不是东西:-)

使用特权

评论回复
13
sszxxm| | 2008-7-23 11:34 | 只看该作者

3个串口肯定来得及

我用AVR的M64,开两个串口,还用定时器虚拟一个串口,都来得及,没事的。

串口数据在下一个自己接收完成之前,接收BUF里的数据是不会被覆盖的。所以实际中断相应只要不超过1个字节的传输时间就没事。即使是115200bps,1个字节的传输也要90微秒,适当调整下各个中断处理程序,完全来得及。

使用特权

评论回复
14
121629600| | 2014-4-29 19:28 | 只看该作者
我也遇到了相同的问题,领教了

使用特权

评论回复
15
icecut| | 2014-4-30 09:21 | 只看该作者
看起来串口上没有fifo,建议使用dma模式.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

201

帖子

0

粉丝