串口通信方式:电脑和单片机归于设备和设备之间的通信
总线协议 :例如IIC这种可以支持多个设备进行通信的协议称其为总线协议:IIC SPI CAN
串行通信和并行通信
串行通信特点:数据位传送,传送按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。UART、SPI、IIC都属于串行通信接口。串行通信三种传送方式,分为单工、半双工、全双工三种传送方式。串行通信的通信方式分为同步通信和异步通信。
同步通信和异步通信
是带时钟同步信号传输,比如SPI、IIC。异步通信不带时钟信号同步信号。比如UART(通用异步收发器)、单总线。
这里的异步通信就是需要设置波特率来进行通信,需要双方各自的时钟来进行通信,一方在时钟信号中产生高低电平,另一方在相同的时钟信号下进行读取数据线上的电平,从而实现通信。
而这里的同步通信,解决了小型传感器内部没有内置晶振的问题。即由主机发送固定频率的IIC时钟信号来作为所有连接的设备的时钟基准
总线有三种:内部总线、系统总线和外部总线。内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连;外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连。
单片机的通信基本上可以分为两部分:
1.电脑和单片机的通信 (设备和设备之间的通信):相当于并列关系的芯片之间的连接
2.片上通信 (从属关系的芯片之间的连接:如核心板的芯片和DTH11的厘米的芯片连接)
分类:
1.如电脑和单片机、单片机和单片机、设备和设备 相当于是外部总线:TTL、RS232、RS485、
2.片上通信 相当于是内部总线:(复杂一些的如cpu和显示屏,cpu和Dht11这些东西内部的芯片通信):SPI、IIC、CAN
USART:通用同步异步收发器,下面的232和485是基于这里的衍生的。
TTL:是个逻辑。下面的都是根据这个逻辑进行的变形。
电平转换信号:是发出高低电平的转换信号。是最基础的通信方式,易受干扰、传输距离短
这两个是物理层协议。
- Rs232:为了提高串口通讯的距离和稳定性。
一般是DB9接口,但实际一般也只是用三根线,TX、RX、GND。
实现232通讯只需要在原有的TTL的电路连接之间加一个mx232转换芯片,就可以实现232通讯
2.Rs485:进一步提高距离
特点:双绞线,共模抑制,当信号A大于信号B代表逻辑1,反之代表逻辑0;1200m,50mb
SPI 、IIC、CAN是一类:片上通信协议,设备和设备之间,芯片和芯片之间的通讯。称为总线协议。
SPI:串行同步通信
同样也有时钟。同步的意思就是有时钟线参与,实现同步传送,而异步就是没有时钟线,通过设置串口波特率来实现的数据传输。
spi有四条线,cs片选线,sck时钟线,mosi、miso数据线。(master in slave out主机输入,从机输出。),注:这里的mosi连从设备的mosi即可,miso连miso。
实现采样的情况:时钟信号上升沿采样数据位的电平。有几个上升沿就会采集多少个数据。(这里的上升沿采集是其中的一个模式)
IIC:是最简单的总线协议。
理论上有三条线,一般说的话就是两条线,一条数据线,一条时钟线。
实现流程:时钟线高电平时,从设备读取数据,时钟线低电平时,主设备写数据。
举例:IIC连接AH20温湿度传感器
步骤:刚开始,通过两个上拉电阻,使时钟线和数据线都在高电平,当需要传递数据时,会在时钟线高电平的时候将数据线电平拉低,此为起始段,此时从设备开始进行数据的听取,查看数据帧发送的设备是否是自己,若不是则忽视操作,若是则返回一个ACK确认信号:拉低一下电平。
转换:当主机发送完一帧即8位后,控制权转移到AH20手中,此时AH20相当于扮演了主机的角色,当时钟线低电平时设置数据线,而在时钟线高电平时,之前的旧的主机角色开始读取数据。
主机在时钟线为高时将数据线拉低或升高来控制IIC通信的开启和结束。
在其他时间写数据时都是在时钟线为低电平的时候写的。
首先通过发送数据帧来找到从设备。数据帧:起始位,时钟线为高电平时,数据线为上升沿,与之相对的是停止位,时钟线为高电平时,数据线为低电平。中间的,先是从机地址,然后是数据位。他们两个共同的特点是当时钟线为高电平时,数据位不跳变,要么是1要么是0.
代码部分:
先分别在Inc(初始化)和 Src(文件)里面新建AHt20的驱动函数文件,写好相对应的驱动
同样的设置好uart串口:(用来将读到的数据显示来进行代码的调试)
注:这个流程适合于其他的传感器和外设。
CAN:是用来控制ECU之间的通信的,汽车之间的芯片进行通信,为了减少铜线长度,简化电路连接。
芯片连接使用的是双绞线,传递的信号是差分信号,有共模抑制的功能。抗干扰能力强。
开头的跟IIC有点像,通过数据帧,来缺点找哪个设备。开头的11位识别码,不仅代表了设备的id还代表了设备发送信息的优先级。