- 博客(5)
- 收藏
- 关注
原创 基于HAL库串口DMA的RS485收发控制要点
HAL库条件下,串口+DMA收发相对容易,串口收发有各自通道,收发互不影响。而RS485通信是半双工通信模式,同一时刻,RS485网络只能有一个网络设备处于发送状态,其他网络设备必须处于接收状态,所以,要保证RS485网络正常工作,必须协调好网络设备的收发时机。设备收发控制的本质就是对RS485设备接口芯片的收发控制引脚的电平,本文将重点介绍RS485接口芯片的收发控制引脚电平的控制时机。
2024-10-12 20:51:38
1131
原创 STM32系列MCU串口RX引脚上拉的必要性
为了避免上述干扰,应在RX引脚上加一个上拉电阻,电阻值在2.2K左右即可,通常小的阻值抗干扰能力较强。特别是内部干扰,例如,该引脚靠近发送引脚TX,若采用RS485芯片扩展串口,还靠近发送使能DE引脚,通常引脚靠近,走线也比较近,所以,RX引脚很容易被上述引脚(TX和DE)和布线上的信号干扰,特别采用空闲中断接收的软件设计时,会触发额外的接收中断,尽管该中断不会产生实际结果(用户中断通常会有数据合理性判断),但是,它会干扰系统正常运行,带来不必要的软硬件资源消耗,甚至产生难以预料的错误。
2024-01-10 13:38:25
5431
2
原创 STM32 HAL库 RS485发送遇到的问题及解决方法(STM32G030C8t6)
产生不可靠的原因是RS485_T执行并不是理想的阶跃上升,通常是有一个上升时间的,如果这个时间并未达到485控制端最低高电平要求,接下来的DMA_Usart_Send发送已经执行,就可能造成发送的数据帧不完整,甚至不能触发发送完成中断,则 HAL_UART_TxCpltCallback回调函数不能执行,485控制端总是处于高电平,若设备接入RS485网络,将使整个瘫痪。//执行RS485_R。//函数名称:DMA_Usart_Send(uint8_t *buf, uint16_t len)
2023-09-23 09:27:01
1359
1
原创 基于HAL库的串口dma传输的RS485发送函数——纠错
RS485平时应处于接收状态,例如空闲接收,DE/RE控制连到一起,处于低电平状态,在发送时应将DE/RE控制引脚拉高,拉高时机是发送指令发出前几个微秒,然后,发送,最后再延时若干时间将DE/RE控制引脚置低。最后的延时时间通常与波特率和发送的数据长度有关,通常延时时间=发送的字节数*系数,如果波特率115200bps,系数取100us左右。上次发的源码有错,即sizeof()对字符指针求长度,得到得是字符的位数,而不是字符串长度!特此纠正,抱歉!修改后的代码如下://///////////////
2022-03-25 14:58:15
648
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人