houmous 发表于 2019-7-9 10:00:21

stm32f407串口通讯问题

stm32f407采用USART1口,向上位机持续发出数据,1秒钟发送20~40帧,每帧46个字节(这个发送没有问题),接收数据为中断接收。
上位机向STM32发送数据,stm32f407接收到的数据10次有3,4次是接收不全的,上位机发送的数据没有问题,接收中断接收的数是少的。
后来再换别的方式测试,将STM32F407的发送,在定时器中断里发送和在while循环里发送,甚至采用了DMA发送,接收中断接收到上位机发下来的数据还是有不全的时候,一般不全的时候接收到的数据基本就1个字节。
如果stm32f407不持续向上位机发送数据,那么接收中断接收到的数据是没有问题的,完全可以正常接收。
谁能分析下是哪里的问题。

发表于 2019-7-9 11:42:37

楼主用户的时什么方式发送的。建议使用串口中断方式发送。

houmous 发表于 2019-7-9 14:01:22

安 发表于 2019-7-9 11:42
楼主用户的时什么方式发送的。建议使用串口中断方式发送。

就是库函数发送,我发送没有问题,上位机接收的都完整,主要是上位机给STM32发数,STM32的USART的接收不完整。

houmous 发表于 2019-7-9 14:07:58

我的问题是在USART的接收上,如果一直在发数,那么接收到的数据就会不完整。

发表于 2019-7-9 15:24:42

如果发送一直占用着端口,接收会受影响的。用中断的方式,互不影响的情况下进行数据传输。

houmous 发表于 2019-7-10 09:09:53

安 发表于 2019-7-9 15:24
如果发送一直占用着端口,接收会受影响的。用中断的方式,互不影响的情况下进行数据传输。 ...

这不是全双工的串口吗?

yzzhh18 发表于 2019-7-10 10:17:40

有可能程序什么问题也没有,就是你用的USB转串口太垃圾。比如pl2303

butterflyspring 发表于 2019-7-10 17:47:47

楼主看看是不是用的老版本的库,进入接收和发送函数时判断的是同一个状态 huart->State。隐约记得好像是会引起。建议你用新版库试试:):)。其实软件调试一下也能发现原因:):)

xiaodong_15 发表于 2019-7-10 18:22:00

先用轮询进行测试

houmous 发表于 2019-7-11 09:45:24

yzzhh18 发表于 2019-7-10 10:17
有可能程序什么问题也没有,就是你用的USB转串口太垃圾。比如pl2303

外部监测STM32串口接收引脚的数据没有问题,就是串口收不全
页: [1] 2
查看完整版本: stm32f407串口通讯问题