STM32CubeMX配置
- 首先对使用到的串口USART1进行一切基础配置,波特率,奇偶校验,数据位长度,停止位等等,并且使能中断
- 对使用到的引脚重新命名
- 还需要选择一个GPIO引脚控制通讯的收发,这里选择了PA8
- 将这三个引脚接到485芯片上,芯片的型号这里选择的是MAX3485ESA+T,另一端输出RS485的差分信号
- 到这里初步配置就完成了,点击生成代码生成keil工程
keil代码
- 根据485芯片的数据手册得知在串口收发消息前要对这两个引脚进行配置,使能发送时,要将RS458_DIR引脚拉高,使能接受时要对RS485_DIR引脚拉低
- 根据数据手册,在代码中进行一些宏定义
#define _485_RX_EN() HAL_GPIO_WritePin(RS485_DIR_MCU_GPIO_Port, RS485_DIR_MCU_Pin, GPIO_PIN_RESET);
#define _485_TX_EN() HAL_GPIO_WritePin(RS485_DIR_MCU_GPIO_Port, RS485_DIR_MCU_Pin, GPIO_PIN_SET);
- 每次收发转换都要重新使能引脚,如果你跟我一样使用中断接受串口消息那么在调用HAL_UART_Transmit()函数前后要进行切换,防止芯片一直处于发送状态收不到消息
485_TX_EN()
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
HAL_Delay(5);
_485_RX_EN()
系统设置
- 最后要对uport usb转485转换器进行一些配置,右键windows选择设备管理器
- 选择多串口适配器,双击UPort 1150(这里根据具体型号有变化)
- 选择 Ports Configuration选项卡,点击port setting
- 选择当前连接的串口,选择RS-485 2W
- 点击OK完成对uport1150的设置,然后就可以正常的收发消息了,如果通讯不上可以拔插一下usb接口