STM32的通信

STM32的通信

  • 通信接口
  • 几种常见的通信
    • 双工
    • 时钟
    • 电平
    • 设备
  • 串口通讯
    • 电平标准
    • 串口参数以及时序

此处学习b站江科大的STM32教学第九章,和b站UP:爱上半导体的几节通讯介绍。感谢他们的开源分享精神。

通信接口

通信的目的是将一个设备的数据传送到另一个设备上,从而一起工作扩展功能

比如陀螺仪,无线蓝牙等,STM32没有的功能就需要外挂芯片来帮助STM32扩展它的功能。

通信协议是通信的规则,按照规则进行数据的收发

几种常见的通信

STM32的通信_第1张图片

不同的通信有不同的引脚。
USART的引脚TXD就是数据发送,RXD为数据接收。

I2C的SCL为时钟,SDA为数据。

SPI的SCLK为时钟,MOSI为主机输出脚,MISO为主机输出脚,CS为片选,用于选择哪一个主机用来通讯使用。

CAN的两个引脚是差分数据引脚

USB也是一对差分数据引脚
USART,I2C,SPI都是根据电平确定01数据的传输,而CAN通信和USB通信是根据电平的差值来确定01数据的传输,这两种方式适用于不同的环境

双工

全双工是如同电话,同时发送接收,互不影响,一般有一条数据发送和一条数据接受线。

半双工是如同对讲机数据的接收和发送在同一条线上。

单工是广播,只能够发送或者只能够接收。

时钟

时钟是时钟特性,异步时钟是用与无时钟线的通讯,I2C与SPI有单独的时钟线,所以他们是同步时钟,根据时钟信号的指引下接收发送,异步通讯需要定义一个协定,用于接收发送。

电平

单端信号为高低电平代表了10的信号,例如1为高电平,0为低电平。所以单端信号通信需要共地,采用一样的电位差。

差分信号为两个差分引脚电平的差值,例如有差值为1,无差值为0。例如CAN总线通过双绞线链接,这样数据在传输的过程中就不会因为外部的影响而产生许多失真。

设备

USART和USB通讯是点对点通讯,而其他三个是可以在总线上挂在许多其他的外设。(通常需要寻址才确定需要跟哪一个进行通信。)

串口通讯

串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,一般都是点对点通信,可实现两个设备的互相通信。

单片机的串口可以使单片机与单片机、单片机与电脑(调试程序)、单片机与各式各样的模块(I2C,SPI)互相通信,模块再连接所需要的外设,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力。

电平标准

在单片机和各个模块相连接的时候,如果模块没有单独的供电,需要根据模块的说明供电,然后与单片机共地,一般是与单片机共用VCC和GND,这样电平才能统一。(或者需要使用电平转换芯片来统一电平标准

电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

TTL电平:+3.3V或+5V表示1,0V表示0
单片机等低压小型设备常用

RS232电平:-3 ~ -15V表示1,+3 ~ +15V表示0
一些干扰大的电气设备常用,给予一个较大的波动范围

RS485电平:两线压差+2 ~ +6V表示1,-2 ~ -6V表示0(差分信号)
CAN等用双绞线链接的电路,可长距离传输,用于汽车等安全性要求等级高的设备

串口参数以及时序

波特率:串口通信的速率
每秒发多少位。1000波特率就是一秒发送1000位,决定了每隔多长时间发射一位数据。
当发送和接收规定了统一的波特率之后,才能进行正常的数据传输,才不会缺位多位。

起始位:标志一个数据帧的开始,固定为低电平。
引脚要放置在高电平代表空闲状态。低电平的作用是有一个下降沿,提醒设备接收数据

数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
低位先行:的意思是比如我们要发射一个00001111的数据,再发射的时候应该按照11110000这样的排列去输出,这样接收的时候才会接收到00001111

校验位:用于数据验证,根据数据位计算得来
奇校验是保证8位数据位+校验位为奇数个1,偶校验相反
停止位:用于数据帧间隔,固定为高电平。
本质上其实就是回到了起始位,防止下一位是低电平这样分不清数据。
停止位:有1位,1.5位,2位等,可以我们自行配置,1位就是发送规定的8位数据后出现1个字节时间的停止位,2位就是发送8个字节数据后产生2个字节时间的停止位

左:无校验位数据 右:有校验位可以看到图中八位数据位,加起始低电平停止高电平,一共十位,若有校验位则一共十一位。这些部分加起来组成的这个完整的数据帧。
STM32的通信_第2张图片

0x55应该是0101 (5)0101(5),但是注意低位先行,所以是图中的10101010,然后再看接收的逻辑是在检测到起始位下降沿后进行一个中断,并且对准时钟,能够依次将八位数据接收到芯片中。

你可能感兴趣的:(STM32,stm32,单片机,嵌入式硬件)