今天我们一起学习一下单片机通信:
(第一次写分享,不足的地方希望大家多多指出。后面我会多加提升)
串行/并行通信
串行通信:只有一条通讯线,每次只能发送一个数据。
并行通信:多条通讯线,每次可以发送多个数据。
并行通信传输的速度不一定比串行通信快,因为当传输速度达到很高时,并行通信相互之间会存在干扰。
通信传输分为三种:全双工传输-半双工传输-单工传输
全双工传输 | 双方可以同时发送数据或者同时接收数据 |
半双工传输 | 一方发送数据的时候,另一方只能接收 |
单工传输 | 只存在一个方向数据的发送,不存在对方接收数据或者发送数据给对方 |
如图1:
同步/异步通信
异步通信:双方要规定相同的传输速度才可以进行传输,通信双方约定某一个条件。
一旦双方传输速度不相同,传输的数据就会出现乱码。就像我们使用串口打印数据,代码配置的是115200,串口工具选择的是9600,此时看到打印的数据就会变成乱码。
同步通信:通信的双方需要连接一个时钟线CLK,这样传输的数据双方保持一致。例如,当一方认为2ms接收一个数据,另一方1ms接收一个数据,这样就会造成传输数据错乱问题。CLK就是给双方约定好,一个时钟会有一个数据的发送或者接收。
如何判断异步通信和同步通信:可以根据是否有时钟信号线CLK来判断。
典型的异步通信:SPI,UART
典型的串口通信:IIC
接下来我们进入串口通信:
1、串口电平
平常我们使用杜邦线去连接两个通信模块的时候,传输距离较短,可以用TTL电平。当两个通信模块距离很远,几十米以上的时候,全程使用TTL电平干扰会很大,信号损耗较高。我们此时就要用到RS232/RS422/RS485电平进行转接。
TTL电平:2.4V-5V 等效于逻辑1--高电平
TTL电平:0V-0.4V 等效于逻辑0--低电平
2、串口连接和时序
传输时序:
①空闲状态电平为1,高电平
②电平为0,低电平,标志数据将要开始
③数据发送(数据发送多少可以更改)
④奇偶校验位(校验前面的数据发送是否正确)
⑤停止位,电平置1,高电平
⑥波特率传输:波特率越高传输速度越快,波特率越低传输速度越慢。(波特率的速度是有限的,GPIO的IO口电平的变化速度限制了波特率的传输速度)
这就是今天的分享,明天我会与大家分享使用串口接收和发送数据的代码编写思路。
感谢各位能给予评价,我也会慢慢学习如何去写好一篇知识总结。