久芯网

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

avatar isbool 提问时间: 2023-08-12 12:14:11 / 已解决

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

STM32F3串口通过RS485读编码器的数据 [相关图片]

STM32F3串口通过RS485读编码器的数据 [相关图片]

STM32F3串口通过RS485读编码器的数据 [相关图片]

STM32F3串口通过RS485读编码器的数据 [相关图片]


如需获得 RS485 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

10个回答
  • avatar isbool
    最佳答案
    回答时间: 2023-08-12 12:42:45

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

  • avatar 真情永存
    回答时间: 2023-08-12 13:01:36
    isbool 发表于 2022-1-11 16:39
    问题解决了 感谢提供意见的兄弟们 问题是stm32f302rb的官方标准库时钟初始化有问题,串口1本来应该是挂 ...

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

  • avatar wenyangzeng
    回答时间: 2023-08-12 13:32:33

    RXD引脚PB7应该设成输入才对 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

  • avatar isbool
    回答时间: 2023-08-12 13:55:26
    wenyangzeng 发表于 2022-1-9 09:10
    RXD引脚PB7应该设成输入才对

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

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

  • avatar 真情永存
    回答时间: 2023-08-12 14:28:35

    换成其他系列的单片机就好了吗?可以找找硬件的问题,时钟用的是外部晶体还是内部振荡器,波特率误差是否过大,另外有些485芯片也有可能不支持某些波特率的。

  • avatar butterflyspring
    回答时间: 2023-08-12 14:56:47

    看看是不是用了内部时钟,通常内部时钟的精度是很高,有可能造成波特率偏差。通过输出看看实际波特率多少。

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

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

  • avatar isbool
    回答时间: 2023-08-12 15:47:09
    butterflyspring 发表于 2022-1-10 11:04
    看看是不是用了内部时钟,通常内部时钟的精度是很高,有可能造成波特率偏差。通过输出看看实际波特率多少。 ...

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

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

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

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

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

会员中心 微信客服
客服
回到顶部