[STM32L4+]【STEVAL-STWINKT1B测评】3.RS485传输数据

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


按照官方的原理图,在usart2上链接了一片STR485作为收发芯片,所有数据只需要通过串口传输即可;[attach]2287982[/attach]
另外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
[attach]2289900[/attach]



 

8208066c6e10315d02.png (47.25 KB )

8208066c6e10315d02.png

---------------------
作者:电子烂人
链接:https://bbs.21ic.com/icview-3396940-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值