MCU之UART串口,I2C,SPI通信协议

通信的条件:

         人与人之间能正常沟通交流,必须保证语言是相同的,比如大家都用普通话沟通,而且语速也要一致,不然说快了,说慢了,都会导致沟通不便。而单片机与单片机之间也是如此,UART协议通过波特率一致,如9600、115200,I2C协议通过时钟线SCL,SPI协议通过时钟线SCLK,保证双方“语速”相同,而通过传输二进制保证双方“语言”相同。

UART串口:

        通信,按照传统的理解就是信息的传输与交换。对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。没有通信,单片机所实现的功能仅仅局限于单片机本身,就无法通过其它设备获得有用信息,也无法将自己产生的信息告诉其它设备。如果单片机通信没处理好的话,它和外围器件的合作程度就受到限制,最终整个系统也无法完成强大的功能,由此可见单片机通信技术的重要性。UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用于单片机和电脑之间以及单片机和单片机之间的通信。 

波特率(baud每秒传输进制的位数,保证双方“语速”相同

RXD: 接收数据。

TXD: 发送数据。

        单片机1与单片机2在通信之前,RXD与TXD需保持高电平,而且先发数据低位再发数据高位。通用的协议规格为1位起始位,8位数据位,1位停止位。如单片机1向单片机2发送数据0x1000 0111,通过TXD线发送,TXD线先拉低一段时间,发送0表示起始位,再发送 1->1->1->0->0->0->0>1,发完8位数据位后再拉高电平发送1表示停止位,最后双方通信结束。

I2C协议:通常用于板内之间芯片的通信,如EEPROM。

 SCL:  时钟线。 --> 保证双方“语速”相同

 SAD:数据线。 --> 接收与发送数据

        单片机与板内芯片在通信之前,SCL与SDA需保持为高电平,而且先发数据的高位再发低位。I2C总线上只能挂一个主机,但是能挂几个从机,主机具体要跟挂在总线上的某个从机通信,主机应先发送一个从机地址,如总线上存在相对应的从机,从机会拉低SDA回一个应答信号。

起始信号:SCL先拉低一段时间,然后SDA由高电平向低电平产生一个下降沿。

数据传输:I2C 没有固定波特率,但是有时序的要求,要求当 SCL 在低电平的时候,SDA 允许变化,也就是说,发送方必须先保持 SCL 是低电平,才可以改变数据线 SDA,输出要发送的当前数据的一位;而当 SCL 在高电平的时候,SDA 绝对不可以变化,因为这个时候,接收方要来读取当前 SDA 的电平信号是 0 还是 1,因此要保证 SDA 的稳定。主机通过SDA发送完数据位后需从机回应一个应答位。

停止信号:SCL先拉高一段时间,然后SDA由低电平向高电平产生一个上升沿。

SPI协议:

SSEL:     从设备的片选信号,如从设备是低电平使能的话,应拉低该引脚后,从设备就会被选中,主机和该从设备进行通信。

SCLK:    时钟信号

MOSI: 主机向从设备发送数据

MISO: 主机接收从设备的数据


猜你喜欢

转载自blog.csdn.net/welbell_uplooking/article/details/79782735