你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f407串口通讯问题

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

举报

10个回答
废鱼 回答时间:2019-7-9 11:42:37
楼主用户的时什么方式发送的。建议使用串口中断方式发送。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

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。隐约记得好像是会引起。建议你用新版库试试。其实软件调试一下也能发现原因

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

xiaodong_15 回答时间:2019-7-10 18:22:00
先用轮询进行测试
houmous 回答时间:2019-7-11 09:45:24
yzzhh18 发表于 2019-7-10 10:17
有可能程序什么问题也没有,就是你用的USB转串口太垃圾。比如pl2303

外部监测STM32串口接收引脚的数据没有问题,就是串口收不全
houmous 回答时间:2019-7-11 09:45:51
问题已经解决了,采用DMA接收就没有问题了
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版