首先弄懂串行通信和并行通信以及串口通信和并口通信的概念。
串行通行:它是一个概念,它是指数据一位一位地顺序传送,其特点就是通信线路
简单,只要一对传输线就可实现双向通信,适用于远距离通信,但传输速度慢。它
包括普通的串口通信,I2C,SPI,UART...
串口通信:是一种实际通信方式,但是我们可以几乎看成一样.
串行接口:简称串口,或串行通信接口,或串行通讯接口(通常指com口)。
并行通信:如果一组数据的各数据位在多条线上同时被传输,那么就是并行通信。
并口接口:就是一种接口,各数据位同时被传输,传输速度快,效率高,一边可用于MCU。
串行通信又可分为单工,半双工和全双工
单工:信息只能单向传送。
半双工:信息能双向传送但不能同时。
全双工:信息能同时双向传送。
串行通信还可分为同步通信和异步通信
同步通信(两根线):是把许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,
在每组信息(通常称为信息帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,
因为同步传输不允许有间隙。同步方式下,发送方除了发送数据,还要传输同步时钟信号,
信息传输的双方用同一个时钟信号确定传输过程中每1位的位置
异步通信(一根信号线,没有时钟线):是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间
间隔可以是任意的。当然,接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符,
因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够
正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。
同步通信与异步通信区别:
1.同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时
不要求接收端时钟和发送端时钟同步,发送端发送 完一个字节后,可经过任意长的时间间隔再发送下一个字节。
2.同步通信效率高;异步通信效率较低。
3.同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
4.同步通信可用于点对多点;异步通信只适用于点对点。
单片机中的SPI、UART、I2C
1、SPI
SPI允许单片机和外围设备或者单片机之间高速同步数据传输,SPI可以有主机和从机模式之选,通信的主从机之间通过移位寄存器同时交换数据。目前自己用的以主机模式居多。SPI需要四线:SS,MISO,MOSI,SCK。
通信过程:在设置好SPI的工作模式:包括SCK频率(数据传输速率),工作速度,主从模式,以及数据接收发送对应的时钟极性。在主模式下,将SS拉低表示通信的开始,然后通过向SPI数据寄存器中写入一字节的数据后自动启动时钟SCK开始进行一次通信,通信完成后会产生相应的中断标志,标志一个字节数据的传送完成。通信完成后将SS脚拉高,表示通信过程已经结束。
注意SS引脚的设置:当设置为从机模式时,SS引脚应设置为输入,拉低的时候SPI才能起作用,拉高的话是消极的SPI模式;在主机模式下,SS引脚可以设置,一般应设置为输出,如果设置为输入的话应保持为高,否则将不能进行正常的主机模式操作。
2、USART
USART的操作比较简单,主要是设置波特率,数据格式,以及中断允许位等,值得至于的是其USART IN SPI MODE,在SPI模式下的USART的操作跟SPI操作差不多,主要是Clock的设置,然后发送数据还是通过USART的中断进行
3、I2C
I2C接口是简单强大的通信接口,只需要两根双向总线(时钟和数据线),SCL和SDA,即可实现一个主机和最多128个从机进行通信。模拟I2C接口的过程:启动I2C,一般是在SCL为高时将SDA拉低启动数据发送,SDA只有在SCL为低时才能拉高拉低有效,在SCL为高时拉高拉低SDA只是用于停止启动I2C通信
I2C总线是内部总线,用来连接内部系统内的芯片。串口通信是用来和系统外部的设别通信的。比如设备和设备之间通信。SPI,UAR,I2C都是串行通信方式,并行通信方式一般用的少,因为只适合
短距离,一般用于MCU比较多,因为MCU它对数据的传输速度有要求,而且
与塔相连的芯片一般会比较近。
MCU
他的属性要比CPU(这里指单片机,其他地方应该也是) 强,它包括CPU的性能,
且还有CPU没有的性能。