串口进行通信的方式有两种:同步通信方式和异步通信方式
SPI(Serial Peripheral Interface:串行外设接口);
I2C(INTER IC BUS:意为IC之间总线),一(host)对多,以字节为单位发送。
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器), 一对一,以位为单位发送。
一般uart控制器在嵌入式系统里面都做在cpu一起,像IMX6就是这样,一共支持5个uart控制器。
总结下它的特征:
UART一般四个pin(RS232比较多pin,但是常用的也是这几个):
VCC:供电pin,一般是3.3v,在我们的板子上没有过电保护,这个pin一般不接,不影响使用
GND:接地pin,有的时候rx接受数据有问题,就要接上这个pin,一般也可不接
RX:接收数据pin
TX:发送数据pin,我之前碰到串口只能收数据,不能发数据问题,经baidu,原来是设置了流控制,取消就可以了,适用于putty,SecureCRT
在调试gps的时候我用到了uart,当时因为gps这个模块的特点是没有中断,IC数据直接通过uart上报,
调试串口的时候我就直接用了两个线连出了rx,tx,然后用gps在pc端的工具从串口获取数据,直接分析gps数据,这样测试了gps的数据没有问题。
但是一般嵌入式的串口使用的是RS232协议,而很多电脑(尤其笔记本)上没有传统的rs232口,一般用要先把rs232的电平转换为UART 的TTL电平,然后通过usb模拟uart连到电脑上,如下图:
UART是通用异步串行口的意思,RS232是UART的一种,它采用的232电平。其他的UART还有单片机上的异步通信口,采用的是TTL电平。
TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。
Uart串口的RXD、TXD等一般直接与处理器芯片的引脚相连,而RS232串口的RXD、TXD等一般需要经过电平转换(通常由Max232等芯片进行电平转换)才能接到处理器芯片的引脚上,否则这么高的电压很可能会把芯片烧坏。
我们平时所用的电脑的COM口即串行通讯端口(串口)就是RS232的,当我们在做电路工作时,应该注意下外设的串口是TTL类型的还是RS232类型的,如果不匹配,应当找个转换线(通常这根转换线内有块类似于Max232的芯片做电平转换工作的),可不能盲目地将两串口相连。
另注意:串口设计规范是不支持热插拔。实际中有些人也热插拔着,但尽量少吧,避免板子芯片坏了。
UART 指异步串行通讯接口,对电平信号没有规定; RS232是指一个规定了信号电平的异步串行通讯接口; UART所指含义更宽, RS232规定相对狭窄!