STM32再学习——实现完美的RS485

 首发自:http://www.edw.com.cn/421

    在远距离通讯中,难免受干扰,因此,伟大的牛人们就创造了一种差分传输的方式——RS485通讯方式(以下简称RS485)。RS485由两根差分线来传输数据,比起RS232来说,其传输的距离更远,搞干扰性更强。当然,也为了节省银子,因此,只保留了一组差分线,也就只能完成同一时刻只接收或发送数据的半双工通讯了。

    在设计中,我们经常使用一个名为Max485的芯片来完成TTL电平至差分电平的转换,这款芯片有一个DE(发送使能)引脚控制着RS485线的数据传输方向,而这个引脚何时高电平,何时低电平对我们的数据交换质量也就起着重大的作用。

    我们先来看一下DE引脚的作用。当主设备完成发送后,其需要在1byte的时间内释放RS485总线,否则从设备在收到数据后,再回送数据时就会与主设备对总线占用的问题而产生冲突,这在RS485总线上是不允许的——RS485总线没有仲裁机制。因此,DE引脚就需要在主设备发送完成最后一个字节的最后一位数据的一位时间内将DE引脚从高电平拉到低电平。

STM32再学习——实现完美的RS485_第1张图片


   STM32微处理器提供一个应用实例来实现精确、高效地控制DE引脚。这里我们使用DMA方式通过UART发送与接收数据,那么我们将会用到DMA发送完成中断与USART发送完成中断。DMA控制器监控着整个发送过程,待发送数据将会不断地被存入USART数据寄存器直到DMA计数减至零。当DMA发送完成后将触发DMA发送完成中断,我们就在这个中断中,将DE引脚的电平拉低。

STM32再学习——实现完美的RS485_第2张图片

我亲爱的网友们,你们学会了吗?

你可能感兴趣的:(嵌入式,stm32,物联网,RS485)