打印
[STM32L4+]

【STEVAL-STWINKT1B测评】3.RS485传输数据

[复制链接]
924|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 电子烂人 于 2024-8-29 11:15 编辑

#申请原创# #申请开发板#这次试着驱动一下RS485
1.RS485介绍RS485是一种串行通信标准,主要用于工业领域的数据传输。它通过差分信号传输,具有较强的抗干扰能力和较远的传输距离(可达3000米),支持多达128个设备连接。与RS232相比,RS485在传输速率、距离和抗干扰性方面表现更优,适用于工业自动化和数据采集系统。本项目直接运用RS485来传输传感器输出的数据。
2.资料查找

按照官方的原理图,在usart2上链接了一片STR485作为收发芯片,所有数据只需要通过串口传输即可;
另外DE/RE负责控制收发,需要接收/发送完成之后翻转IO电平,来改变接收/发送状态。

3.初始化设置:
在配置完USART之后需要在Hardware Flow Control里使能RTS,以控制收发

其他配置不变,115200,8+1,无校验

4.代码修改
对比前一篇文章,只需要将传感器的数据传输部分由虚拟VCOM改为USART2即可:
  while (1) {
    uint8_t reg;
    /* Read output only if new xl value is available */
    iis3dwb_xl_flag_data_ready_get(&dev_ctx, ®);

    if (reg) {
      /* Read acceleration field data */
      memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
      iis3dwb_acceleration_raw_get(&dev_ctx, data_raw_acceleration);
      acceleration_mg[0] =
        iis3dwb_from_fs2g_to_mg(data_raw_acceleration[0]);
      acceleration_mg[1] =
        iis3dwb_from_fs2g_to_mg(data_raw_acceleration[1]);
      acceleration_mg[2] =
        iis3dwb_from_fs2g_to_mg(data_raw_acceleration[2]);
      //sprintf((char *)tx_buffer,"Acceleration [mg]:%4.2f\t%4.2f\t%4.2f\r\n",acceleration_mg[0], acceleration_mg[1], acceleration_mg[2]);
      //tx_com(tx_buffer, strlen((char const *)tx_buffer));
      //HAL_Delay (100);
      HAL_UART_Transmit(&huart2, (uint8_t*)data_raw_acceleration,5,100 );
    }

  }


5.结果展示:链接485工具到电脑

能够正常收发数据,但是还有些小BUG





8208066c6e10315d02.png (47.25 KB )

8208066c6e10315d02.png

使用特权

评论回复
沙发
梵蒂冈是神uy| | 2024-8-23 14:38 | 只看该作者
你提到的 STR485 是一个 RS485 收发芯片,通常用于将 UART 信号转换为 RS485 差分信号。你的配置说明中提到:

DE/RE 控制:用于控制 RS485 模块的发送和接收模式。
RTS 流控制:使能 RTS 以控制 RS485 收发。

使用特权

评论回复
板凳
电子烂人|  楼主 | 2024-8-24 10:27 | 只看该作者
梵蒂冈是神uy 发表于 2024-8-23 14:38
你提到的 STR485 是一个 RS485 收发芯片,通常用于将 UART 信号转换为 RS485 差分信号。你的配置说明中提到 ...

我不知道表达的是否正确,详细可以看给出的原理图
原理图是用USART2的RTS接的DE/RE,我的理解是用STM32的硬件RTS流控制来控制DE/RE。

“RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。”我理解的是用RTS的收/发结束之后自动翻转,以起到RS485的收发作用。

若还有不合适的地方请指出,谢谢

使用特权

评论回复
地板
huquanz711| | 2024-8-24 10:57 | 只看该作者
可以硬件收发方向控制

使用特权

评论回复
5
菜鸟的第一步| | 2024-8-26 13:18 | 只看该作者
我习惯IO控制使能信号,灵活

使用特权

评论回复
6
xinmeng_wit| | 2024-8-29 22:12 | 只看该作者
接收做了?我的接收中断进不了

使用特权

评论回复
7
星辰大海不退缩| | 2024-8-29 23:02 | 只看该作者
RS485是一种串行通信标准,主要用于工业领域的数据传输。

使用特权

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

本版积分规则

10

主题

37

帖子

0

粉丝