STM32驱动开发--串口原理与开发实践
Posted 同人与野
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32驱动开发--串口原理与开发实践相关的知识,希望对你有一定的参考价值。
STM32驱动开发(一)–串口原理与开发实践
参考:野火嵌入式《STM32库开发实战指南》、韦东山《STM32MP157 M4 用户手册》
一、简介
在工业现场目前用的最多的对外通信就是串口(UART)通信和CAN通信。两种通信一样重要并且使用广泛,本文先介绍串口通信,后续介绍CAN通信。
二、概念
2.1、串行通信与并行通信。
串行通信一次只能传一位,并行通信一次可传多位数据。图片来源:韦东山《STM32MP157 M4 用户手册》
串行通信优点:成本小,使用线少,后续发展的差分平衡信号传输技术,使得传输速度加快,同时不像并行传输一样,各线容易相互干扰。所以目前工业现场用的都是串行通信,也就是串口。
2.2、串口按电平标准分类
按电平标准,串口分为TTL、RS232、RS422\\485标准,稳定性和传输距离依次增加,所以工业现场一般是用RS485标准(注:此三类标准指的都是串行异步通信)。MCU引脚支持的是TTL标准,要在不同电平标准的串口之间通信,需要使用相应的电平转换芯片。其电平标准如下:图片来源:韦东山《STM32MP157 M4 用户手册》
由表可见,
1)TTL电平标准适配MCU芯片的芯片电压3.3V,所以不需要转换电路,节约电路,需要TX, RX, GND三根通信线。用于厘米级别的短距离传输,一般用于调试口,例如调试烧录口或者打印log调试信息,不会用在工业现场长距离传输;
2)RS232为了增加传输距离,提高了电平(15V),因此需要加电平转换芯片,例如MA3232芯片,需要TX, RX, GND三根通信线。目前台式机一般默认带RS232串口,为DB9形态,在开发中可用此串口经过相应的转换电路,连接单板,与其进行串口通信。
RS232也存在一定问题,比如电平过高(15V),增加烧坏电路的风险,依然使用共地线的方式,会产生共模干扰(电气概念,指接受双方的基准地不一致产生的干扰),所以传输距离仍然有限,最长15米,对于工业现场来说也是不够的。
3)RS485标准采用差分信号传输的方式,即检测的电平取决与A\\B两线的电势差,因此去除了地线的共模干扰。所以RS485只需要A\\B两根信号线传输。
RS485与前两种电平的最大差异是采用差分信号的方式,一个位的信号传输需要两根线共同作用,不像TTL,RS232一根线负责一种传输。因此同一时间只能处于收或者发的一个状态,需要芯片引出一个控制引脚,控制处于收还是发的状态。这叫半双工。TTL和RS232标准属于全双工。目前工业现场用的最多的串口标准是RS485标准。
2.3、不同电平标准对驱动编程的差异
TTL和RS232标准,在驱动编程上无差异,由外部的硬件转换芯片做电路转换即可。对于芯片来说,对应TX,RX两个引脚即可。
RS485和前两种标准,在驱动编程上有差异,除了芯片的A\\B两个串口引脚外,还需要一个GPIO控制引脚(需要编程者在收发过程中手动调用),外接到RS485转换芯片上,控制当前处于收还是发状态。芯片的三个引脚如下图的左边:图片来源:韦东山《STM32MP157 M4 用户手册》
因此,TTL和RS232标准的串口,芯片上对应两个收发引脚,而对于RS485标准的串口来说,除了A\\B两个引脚之外,还需要GIOP控制引脚,一共三个引脚。后续引入MODBUS协议的编程实例来说明RS485的编程和TTL的差异。
未完待续==
以上是关于STM32驱动开发--串口原理与开发实践的主要内容,如果未能解决你的问题,请参考以下文章
STM32 USB转串口驱动移植到SylixOS中遇到的问题总结