通过STM32 串口寄存器自动控制外部RS485收发,怎么制作BSP

2019-12-9 16:02 [复制链接] 0 218

RS485控制器有收发控制引脚#RE/DE,高电平发送模式,低电平接收.在STM32的串口设备有专门的寄存器用于配置外部485自动收发。以下是 STM32数据手册提供的信息:“驱动器使能功能可通过将 USARTx_CR3 控制寄存器中的DEM 位置1 使能。这样用户便可通过 DE(驱动器使能)信号激活外部收发器控制。使能时间为激活 DE 信号与 START位开始间的时间。可以通过 USARTx_CR1 控制寄存器中的DEAT [4:0] 位字段编程使能时间。禁止时间为发送的消息中最后一个停止位结束与取消激活 DE 信号间的时间。可以通过USARTx_CR1控制寄存器中的 DEDT [4:0] 位字段编程禁止时间。DE 信号的极性可使用USARTx_CR3控制寄存器中的 DEP 位配置。
9 L6 v! e. s( }# d7 x6 a
在 USART 中,DEAT 和 DEDT 以采样时间单位表示(1/8 或 1/16 位持续时间,具体取决于过采样速率)。”
, B& Y; S' x' Q# i( v% y官方驱动设计,在HAL库提供HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime)函数来配置自动的收发DE时延。
9 @. y* j& G9 E' z在RT-Thread  BSP制作UART驱动时如何配置RS485的自动收发延时?在串口设备驱动drv_usart.c中函数stm322_configure()中用HAL_RS485Ex_Init()函数替换?有什么好的方案不用改drv_usart.c驱动文件?

1 s8 I2 H) i3 N
  • static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_configure *cfg)  
  • {  
  •     ......  
  •   
  •     if (HAL_UART_Init(&uart->handle) != HAL_OK)  
  •     {  
  •         return -RT_ERROR;  
  •     }  
  •   
  •     return RT_EOK;  
  • }  , _7 W: |1 X4 Z6 L" L
. @, m( H5 M% j8 j
                       

0 c, Z! w' A# S, d% ~3 s3 k. b
- |* J7 V+ |9 U( g: f# J- R: U+ W
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表