按照数据传输的方式,可分为串行通信和并行通信:
串行通信:信号依次传输,占用的数据线少成本低但是通信速度较慢,串行通信受信号之间干扰较小
并行通信:可同时传输,占用的数据线多成本高但是通信速度快,较易受信号干扰
全双工/半双工/单工传输:
同步/异步通信:
异步通信:需要收发双方自行保证一样的节奏,比如串口即要求双方波特率相同。还有种方式是对数据进行封装,在数据的开头加上起始信号,结尾加上终止信号。
同步通信:加一个时钟信号,发送方和接收方在这个节拍下传输数据(如SPI,),因此可通过是否有时钟信号来判断是同步通信还是异步通信。
串口连接和时序:
串口在嵌入式中经常会用到,常用于:
1.连接串口接口的模块,比如芯片的串口和各种模块的串口的连接至少需要三个引脚,分别是发送引脚、接收引脚和接地引脚。收发设备的收发引脚需要交叉连接,接地连接作为电压的参考。
2.作为调试口,打印程序的运行状态信息
3.通过电平转换芯片转为RS232和RS485电平用于复杂恶劣的工业环境
串口数据传输的格式:
波特率:即每秒传输多少比特位,体现了传输速度的快慢,波特率越高传输速度越快
在默认情况下引脚电平为高电平,会发出一个逻辑0信号表示数据的开始,这一位称之为起始位。之后发送5~8位的逻辑0或者1(先传输第0位再传输第1 位以此类推)称之为数据位。最后加上一个校验位校验数据传输的准确性。最后是停止位,再次将引脚变为高电平。
UART选择异步通信后生成代码
UART_HandleTypeDef huart1; //定义串口的结构体
huart1.Instance = USART1; //表明要操作的串口是串口1
huart1.Init.BaudRate = 115200; //波特率是115200
huart1.Init.WordLength = UART_WORDLENGTH_8B; //数据位是8位
huart1.Init.StopBits = UART_STOPBITS_1; //停止位是1位
huart1.Init.Parity = UART_PARITY_NONE; //没有奇偶校验位
huart1.Init.Mode = UART_MODE_TX_RX; //模式为发送和接收
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; //没有硬件留空