通讯目的:
将一个设备的数据,传到另外一个设备上,拓展硬件系统
通讯协议:
指定通讯的规则,通过协议规则,进行数据收发
1。通讯协议分类
(1) USART(2)I2C(3)SPI(4)CAN(5)USB
TX:发送
RX:接收
全双工:通讯双方,同时进行双向通信(一般有两个通讯线,比如串口TX.RX)
半双工:不同时通信,(一般只有一根数据线)
单工:只能一个方向传数据(很少)
时钟信号:告诉接受方,什么时候采集数据,譬如一个高电平之后一个低电平,是10还是1100
时钟特性:
(1)同步:有时钟线,在时钟信号下采集(譬如SPI)
(2)异步:没时钟线,双方约定一个采样频率,如波特率2400,且需要加针头针尾,进行采样位置的对齐(串口,CAN,USB)
电平:
(1)单端 :双方共地
(2)差分:靠差分引脚的电压差,传输信号,简称差分信号,可能不需要GND
差分信号,抗干扰能力好,传输速度快,传输距离远
设备:
(1)点对点:如老师找一个人谈话
(2)多设备:如老师找全班这么多人谈话,挂在总线上,需要寻址,确定找哪一个谈话
电平标准:
数据0和数据1的表达方式
串口常用电平标准 :
(1)TTL电平:+3.3V或+5V表示1,0V表示0
(2)RS232电平:-3~-15V表示1,+3~+15V表示0(RS232电平信号/同分信号)
(3)RS485电平:两线压差+2~+6V表示1,-2~-6表示0(差分信号)
2。USART协议(串口)
串口是最简单的通讯接口,点对点通讯
常用到如下设备:1·串口转USB,2·陀螺仪传感器,3·蓝牙
(1)接线图
通过左上方的串口转USB,把单片机的串口引脚,接到电脑上来
RX接另一设备的TX
TX接另一设备的RX
当电平标准不一样,要 加电平转换芯片,如串口转USB,电脑的USB才能接收
TX.RX一定接,GND一定要共地
串口发送字节的数据帧格式
(1)起始位+数据位8位+停止位
(2)起始位+数据位8位+奇偶校验位+停止位
波特率:串口通信的速率(马原每秒,或者 比特数bit/s相同,多进制调制就不同,了解即可)
起始位:标志一个数据帧的开始,固定为低电平,产生下降沿,告诉别人要发数据了
数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行(如00001111,发送顺序从右到左)
校验位:用于数据验证,判断数据是不是传输出错了。
可选3种校验:(配置寄存器中选择)
1·无校验
2·奇校验(发送00001111,保证奇数个1,校验位补1)
(发00000111,保证奇数个1,校验位补0)
(发送方,保证奇数,接受方,会验证是否还是奇数,就没丢失,如不是奇数,说明丢失)
3·偶校验(同理)
但是,如果两个位出错,那么就校验不出来有没丢失,所以这个只保证一定程度的校验
停止位:用于数据帧间隔,固定为高电平
(2)串口发送
一般USART会自动完成发送的格式,
自己可以在TX引脚,通过软件模拟高低电平的,譬如9600波特率,定时器定一104us的时间,通过定时调用GPIO_WriteBit()输出高低电平
反之,USART也能自动完成接收的格式,
也同理RX读取,定时调用GPIO_ReadInputDataBit()读取电平
注意:停止位可选1/1.5/2位等等
(3)串口发送+接收
(剩下的在下一节)