网页设计网站设计欣赏,建材企业网站模板,网站设计的公司价格,工程装饰网1 通信接口
通信的目的#xff1a;将一个设备的数据传送到另一个设备#xff0c;扩展硬件系统
通信协议#xff1a;制定通信的规则#xff0c;通信双方按照协议规则进行数据收发 USRT#xff1a;TX是数据发送引脚#xff0c;RX是数据接受引脚#xff1b;
I2C#xf…1 通信接口
通信的目的将一个设备的数据传送到另一个设备扩展硬件系统
通信协议制定通信的规则通信双方按照协议规则进行数据收发 USRTTX是数据发送引脚RX是数据接受引脚
I2CSCL是Serial clock时钟SDASerial Data是数据
SPISCLK是时钟Serial ClockMOSIMaster output Slave Input主机输出数据脚MISOMaster intput Slave output主机输入数据脚CSchip select 片选用于指定通信对象
CAN通信引脚CAN_H、CAN_L用两个引脚表示差分数据
USP通信引脚是DPData positive和DMData Minus(D/D-)也是差分数据脚。
全双工同时双向通信一般有两根通信线一根发一根收
I2C和SPI有单独时钟线所以它们是同步的接收方可以在时钟信号的指引下进行采样。
USART、I2C、SPI都是单端电平即它们引脚的高低电平都是对GND的电压差还需要GND
CAN和USB是差分信号它是靠两个差分引脚的电压差来传输信号的不需要GND。提高抗干扰特性
1.1 串口通信
串口是一种应用十分广泛的通讯接口串口成本低、容易使用、通信线路简单可实现两个设备的互相通信
单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信极大地扩展了单片机的应用范围增强了单片机系统的硬件实力 USB转串口模块把串口协议转换成USB协议
陀螺仪传感器模块、蓝牙串口模块
1.2 硬件电路
简单双向串口通信有两根通信线发送端TX和接收端RX
TX与RX要交叉连接
当只需单向的数据传输时可以只接一根通信线
当电平标准不一致时需要加电平转换芯片 1.3 电平标准
电平标准是数据1和数据0的表达方式是传输线缆中人为规定的电压与数据的对应关系串口常用的电平标准有如下三种
TTL电平3.3V或5V表示10V表示0
RS232电平-3~-15V表示13~15V表示0
RS485电平两线压差2~6V表示1-2~-6V表示0差分信号
1.4 串口参数及时序
波特率串口通信的速率Band、比特率 波特率是1000bps表示1m发送1000位每一位的时间就是1ms 起始位标志一个数据帧的开始固定为低电平 串口的空闲状态是高电平打破高电平 数据位数据帧的有效载荷1为高电平0为低电平低位先行
校验位用于数据验证根据数据位计算得来奇偶校验
停止位用于数据帧间隔固定为高电平 发送0xf的电平 串口中每一行字节都装在一个数据帧里每个数据帧由起始位、数据位、停止位组成的第二张图多了校验位。
1.5 串口时序
发送0x55无校验波特率是9600一位的时间是1/9600 104us
低位先行0101 0101-》1010 1010 发送0xAA无校验波特率是9600一位的时间是1/9600 104us
低位先行1010 1010-》0101 0101 下面同理 发送0x55无校验波特率是4800一位的时间是1/4800 208us
低位先行0101 0101-》1010 1010 发送0x55加了偶校验波特率是4800一位的时间是1/4800 208us
低位先行0101 0101-》1010 1010不用增加1 停止位也是可以设置的 上图的停止位是一位下图的停止位是两位。
2 USART简介
USARTUniversal Synchronous/Asynchronous Receiver/Transmitter通用同步/异步收发器
USART是STM32内部集成的硬件外设可根据数据寄存器的一个字节数据自动生成数据帧时序从TX引脚发送出去也可自动接收RX引脚的数据帧时序拼接为一个字节数据存放在数据寄存器里
自带波特率发生器最高达4.5Mbits/s
可配置数据位长度8/9、停止位长度0.5/1/1.5/2
可选校验位无校验/奇校验/偶校验
支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN
STM32F103C8T6 USART资源 USART1APB2、 USART2APB1、 USART3APB1
2.1 USART框图 先忽略寄存器看引脚部分。左上角有TX和RX就是发送和接收引脚后面几个暂时不用管。 右上角是发送数据寄存器和接收数据寄存器这两个寄存器占用同一个地址。
TDR是只写的数据写到TDR中RDR是只读的数据从RDR读出。
发送移位寄存器的作用是把一个字节的数据一位一位地移出去正好对应串口协议的波形数据位。
工作方式例如某时刻给TDR写入0x55这个数据在寄存器里存储是0101 0101此时硬件检测写入了数据就会检查当前移位寄存器是不是有数据正在移位如果没有这个0101 0101就会立刻全部移动到发送移位寄存器准备发送当数据从TDR移动到移位寄存器时会置一个标志位TXE发送寄存器空检查这个标志位如果置1了就可以在TDR写入下一个数据了。当TXE置1时数据其实没有发送出去只要数据从TDR转移到发送移位寄存器了TXE就会置1就可以重新写入数据了。
然后发送移位寄存器就会在下面这里的发生控制器的驱动下向右移位然后一位一位的把数据输出到TX引脚这里实现向右移位的所以正好和串口通信规定的低位先行是一致的。当数据移位完成后新的数据就会再次自动的从TDR转移到发送移位寄存器里来如果当前移位还没有完成TDR的数据就会进行等待一旦移位完成就会立刻转移过来。有了TDR和移位寄存器的双重缓存可以保证连续发送数据的时候数据帧之间不会有空闲。简单来说数据一旦从TDR转移到移位寄存器了不管有没有完成就立刻把下一个数据放在TDR等着一旦移完了新的数据就会立刻跟上。
接收端类似的。数据从RX引脚通向接收移位寄存器在接收器控制驱动下一位一位的读取RX电平先放在最高位然后向右移移位8次之后就能接收一个字节了低位先行所以接收移位寄存器是从高位往低位这个方向移动的之后当一个字节移位完成后这一个字节的数据就会整体的一下子转移到接收数据移位寄存器RDR里在转移的过程中也会置一个标志位RXNETX Not Empty接收数据寄存器非空当检测到RXNE置1后就可以把数据读走了同样这里也是两个寄存器进行缓存当数据从移位寄存器转移到RDR时就可以直接接收下一位帧数据了这就是USART的整个工作流程。 下面是发送器控制用来控制发送移位寄存器工作的接收器控制是控制接收移位寄存器工作的。
左边有硬件数据流控如果发送设备发送的太快接收设备来不及处理就会出现数据覆盖丢失的现象有了流控可以避免这个问题。两个引脚nRTS和nCTSnRTS是请求发送是输出脚能不能接收nCTS是清除发送是输入脚接收信号n是低电平有效。TX和CTS是一对RX和RTX是一对。
右边是用于产生同步的时钟信号。