一、RS485
485通信,通信接口的远程重数据采集方法,在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。RS-485采用平衡发送和差分接受,因此具有抑制共模干扰的能力。它的电气特性是逻辑“1”以两线间电压差+(2-6)V表示;逻辑“0”以两线间电压差-(2-6)V表示。这样接口信号电平比RS232降低了,不易损坏接口电路芯片,且与TTL电平兼容。
RS485通常指半双工(如果说“全双工RS485”,那实际上指RS422),因此RS485使用相同的传输线,可以发送和接收数据,但不能同时发送和接收数据。任何时候,数据只能由一方发送,另一方接收。所以,在半双工模式下可以使用一条或两条数据线即可建立通信。
二、STM32CubeMx配置
这里以STM32429bit6为例。
(1)RCC(时钟)
Crystal/Ceramic Resonator-内部晶振
(2)SYS(调试)
Serial wire-串行调试
(3)USART1
这里是本人使用的,看个人需求。
Asynchronous-异步
(4)重映射
(5)配置使能引脚
(6)配置时钟
按个人需求
(7)配置串口中断
(8)默认接收,所以采用低电平
(9)按照配置生成代码
三、功能部分
1、发送
使能引脚置为高位时表示开始发送,相反表示发送结束。
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,GPIO_PIN_SET);
HAL_UART_Transmit(&huart1,(uint8_t *)&TxData,1,0xff);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,GPIO_PIN_RESET);
HAL_Delay(1000);
在main中while(1)中插入,TxData为要发送的数据,“1”字节长度,“0xff”是延时。
2、接收
这里要用到中断。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Receive_IT(&huart1,(uint8_t *)&RxData,27);
}
在主函数前插入,其功能是接收27字节的数据赋予RxData。文章来源:https://www.toymoban.com/news/detail-668295.html
齐活,可以测试了。文章来源地址https://www.toymoban.com/news/detail-668295.html
到了这里,关于STM32 RS485通信的一种办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!