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

STM32F3串口通过RS485读编码器的数据

[复制链接]
isbool 提问时间:2022-1-8 16:06 / 已解决

请教下为什么串口通过RS485读的编码器数据值不正确,能够接收到数据。编码器的波形一直到单片机的串口引脚都没问题,就是串口接收数据不对。image.png

image.png

image.png

image.png

image.png

收藏 评论10 发布时间:2022-1-8 16:06

举报

10个回答
isbool 最优答案 回答时间:2022-1-11 16:39:08

问题解决了 感谢提供意见的兄弟们 问题是stm32f302rb的官方标准库时钟初始化有问题,串口1本来应该是挂在APB2上,是72M,但是官方配的是36M,所以串口接收不正确,人都麻了。而且其他几个串口测试了波特率最高只能到2.3Mbps,理论上应该是6M,不知道咋弄,官方都不靠谱啊,难怪用F3的少,要不是最近芯片紧张,都不会有人考虑到这里来,结果一堆坑。

真情永存 回答时间:2022-1-12 17:18:29

isbool 发表于 2022-1-11 16:39
问题解决了 感谢提供意见的兄弟们 问题是stm32f302rb的官方标准库时钟初始化有问题,串口1本来应该是挂 ...

[md]库都是人写的,难免有bug。用的人越多,bug暴露的越快。我前段时间用G0的PVD,HAL库的配置,结果PVD的中断是反的,配置下降沿中断,实际上是上升沿中断,也是折腾了好久才发现。

wenyangzeng 回答时间:2022-1-9 09:10:53

RXD引脚PB7应该设成输入才对

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

isbool 回答时间:2022-1-10 09:10:20

wenyangzeng 发表于 2022-1-9 09:10
RXD引脚PB7应该设成输入才对</p>
<p>GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

[md]试过你说的了 结果是连数据都接收不到 我是按照正点原子写的 它485就是通过串口收发的 那两个引脚都直接复用成串口。不知道是不是F3芯片的问题 感觉好多BUG,本来应该是一个简单的串口接收的,我就只看传感器发送来的数据,都不需要下发。

真情永存 回答时间:2022-1-10 10:06:29
换成其他系列的单片机就好了吗?可以找找硬件的问题,时钟用的是外部晶体还是内部振荡器,波特率误差是否过大,另外有些485芯片也有可能不支持某些波特率的。
butterflyspring 回答时间:2022-1-10 11:04:45
看看是不是用了内部时钟,通常内部时钟的精度是很高,有可能造成波特率偏差。通过输出看看实际波特率多少。
isbool 回答时间:2022-1-10 11:27:21

真情永存 发表于 2022-1-10 10:06
换成其他系列的单片机就好了吗?可以找找硬件的问题,时钟用的是外部晶体还是内部振荡器,波特率误差是否过 ...

其他的单片机没试过 晶振是用的外部晶振 测波形是没啥问题 RS485芯片输入输出波形都没有问题 波特率也是对的 黄色是输入(传感器数据) 蓝色是输出(传入单片机)

IMG_20220110_111948.jpg

isbool 回答时间:2022-1-10 11:29:30

butterflyspring 发表于 2022-1-10 11:04
看看是不是用了内部时钟,通常内部时钟的精度是很高,有可能造成波特率偏差。通过输出看看实际波特率多少。 ...

波特率用示波器看过了没问题 主要是能正常接收到数据 数据还会随着编码器的旋转改变 但是就是数据内容全不对 帧头帧尾都对不上

butterflyspring 回答时间:2022-1-10 12:00:00
isbool 发表于 2022-1-10 11:29
[md]波特率用示波器看过了没问题 主要是能正常接收到数据 数据还会随着编码器的旋转改变 但是就是数据内 ...

是否有办法使编码器发固定帧数据,如果接收正常,那就考虑处理逻辑是否合适了。
另外上一次回复漏了一个字,就是内部RC时钟精度不是很高,而MCU启动默认是用内部RC,用晶振需要代码去配置,所以楼主确认一下最好。
isbool 回答时间:2022-1-10 13:59:50

butterflyspring 发表于 2022-1-10 12:00
是否有办法使编码器发固定帧数据,如果接收正常,那就考虑处理逻辑是否合适了。
另外上一次回复漏了一个 ...

编码器发的就是固定帧数据,我现在串口可以接收到数据,编码器旋转时接收的数据也在变化,但是这个数据和编码器定义的帧头帧尾不一样。处理逻辑这方面好像不需要自己处理,就是用的串口接收。感觉STM32F3这块芯片问题好多,经常碰到这种本来是很正常的问题出现错误。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版