打印

stm32开两个串口,用空闲中断接收数据,往串口2发数据,串口1中断1里收到数据????

[复制链接]
7305|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjnisangel|  楼主 | 2013-7-24 13:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32开两个串口,都用空闲中断接收数据,各自串口收到数据,马上发送出去,我往串口2发数据,串口2回数据上来是正常的,但是我发现往串口2发数据,串口1也会进中断1里,并且会收到数据,是四个字节的一个数据,这是什么情况,为什么串口1会收到数据
沙发
yjnisangel|  楼主 | 2013-7-24 13:54 | 只看该作者
忘记说了,两个串口都是用到 DMA接收数据的,用串口空闲中断接收数据

使用特权

评论回复
板凳
mkmklyuyu| | 2013-7-24 14:09 | 只看该作者
不知道你两个串口是怎么连接的?
不要用空闲唤醒模式了,只要检测到空闲帧所有串口都会推出静默模式,都能接受数据。
建议用地址唤醒模式,好用惨了!

使用特权

评论回复
地板
yjnisangel|  楼主 | 2013-7-24 14:21 | 只看该作者
mkmklyuyu 发表于 2013-7-24 14:09
不知道你两个串口是怎么连接的?
不要用空闲唤醒模式了,只要检测到空闲帧所有串口都会推出静默模式,都能 ...

问下什么是地址唤醒模式,,怎么使用,能具体说下吗

使用特权

评论回复
5
mkmklyuyu| | 2013-7-24 14:51 | 只看该作者
在这个模式里,如果MSB是1,该字节被认为是地址,否则被认为是数据。在一个地址字节中,目标接收器的地址被放在4个LSB中。这个4位地址被接收器同它自己地址做比较,接收器的地址被编程在USART_CR2寄存器的ADD。
如果接收到的字节与它的编程地址不匹配时,USART进入静默模式。此时,硬件设置RWU位。接收该字节既不会设置RXNE标志也不会产生中断或发出DMA请求,因为USART已经在静默模式。
当接收到的字节与接收器内编程地址匹配时,USART退出静默模式。然后RWU位被清零,随后的字节被正常接收。收到这个匹配的地址字节时将设置RXNE位,因为RWU位已被清零。
-------------------------------------------------------------------------------------------------------------------------------------------------------
具体的你看参考手册

使用特权

评论回复
6
yjnisangel|  楼主 | 2013-7-24 21:15 | 只看该作者
mkmklyuyu 发表于 2013-7-24 14:51
在这个模式里,如果MSB是1,该字节被认为是地址,否则被认为是数据。在一个地址字节中,目标接收器的地址被 ...

看了下参考手册,不是很明白,能问下用地址唤醒模式的话,我该如何采用DMA接收未知长度的数据,应该不可以用空闲中断了吧????

使用特权

评论回复
7
mkmklyuyu| | 2013-7-25 09:08 | 只看该作者
看来针对楼主的问题,我得好好的讲下:
1、首先你的这种操作方式就没多大的实际意义。在实际工程中,不可能允许接收未知长度的数据!(数据都是有定义的)
2、既然用两个串口就该用两个DMA通道,分别存放各自数据,以便后期处理。(都放在一起后期处理非常困难还可能出错)
3、DMA好像最多能接收65535个数据,不能未知吧。
4、我说的地址唤醒主要是用在串口组网中,不是主机呼叫的地址的下位机是不会接受数据帧的。

你的问题就是你往串口2发数据,串口1收到,而串口2返回的数据,串口1也收到。你并没有做到串口1和串口2各自分别接收自己的数据!——因为空闲方式下没有地址帧和数据帧之分。

使用特权

评论回复
8
yjnisangel|  楼主 | 2013-7-25 10:38 | 只看该作者
mkmklyuyu 发表于 2013-7-25 09:08
看来针对楼主的问题,我得好好的讲下:
1、首先你的这种操作方式就没多大的实际意义。在实际工程中,不可能 ...

接收未知数据长度的数据是可能的,我开了两个中断,也存放在了各自的缓冲区,单个调是可以的,就是串口1接收数据,发回给串口,串口2也一样,现在我把两个合在一起了,因为我用的是空闲中断接收数据,所以貌似串口2个都有数据收到

使用特权

评论回复
9
yjnisangel|  楼主 | 2013-7-25 10:40 | 只看该作者
因为要用DMA功能,所以用了串口空闲状态接收数据,不知道还有没其他什么方法

使用特权

评论回复
10
yjnisangel|  楼主 | 2013-7-25 10:47 | 只看该作者
mkmklyuyu 发表于 2013-7-25 09:08
看来针对楼主的问题,我得好好的讲下:
1、首先你的这种操作方式就没多大的实际意义。在实际工程中,不可能 ...

用DMA如何做到串口1和串口2分别接收自己的数据,什么方式好,用定时吗?

使用特权

评论回复
11
tergy2012| | 2013-7-25 11:56 | 只看该作者
路过学习

使用特权

评论回复
12
yjnisangel|  楼主 | 2013-7-27 13:07 | 只看该作者
问题已经解决了,是硬件的问题,感谢各位

使用特权

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

本版积分规则

4

主题

29

帖子

0

粉丝