16、SPI通信协议
16、SPI通信协议一、SPI简介(serial Peripheral Interface(串行 外设 接口))1、电路模式(采用一主多从的模式)、同步,全双工
所有SPI设备的SCK、MOSI、MISO分别连在一起
主机另外引出多条SS控制线,分别接到各从机的SS引脚
输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入
推挽输出:高低电平都有很强的驱动能力,使得SPI引脚信号的下降沿和上升沿非常迅速
(IIC因为要实现半双工,经常切换输出输入,IIC又要实现多主机的时钟同步和总线仲裁,若使用推挽输出任意电源短路)
SPI的MISO可能有冲突,一位内主机是输入,三个从机都是输出,若三个从机始终是推挽输出,势必会导致冲突。
故SPI有个规定:
当从机的SS引脚为高电平时,即从机未被选中,其MISO引脚必须切换成高阻态,高阻态相当于引脚断开,不输出任何电平,这样可以防止一条线有多个输出,导致电平冲突问题
SS为低电平时,MISO才允许变为推挽输出(切换在从机中,不需要关注)
2、4条信号线
SS(片选信号线(理解为从机选择线)、Slave Select):单片机通过给片选信号线高低电 ...
15、I2C读写W25Q64
15、I2C读写W25Q64一、W25Q64简介1、W25Q64的内存空间结构: 一页256字节,4K(4096 字节)为一个扇区,16个扇区为1块,容量为8M字节,共有128个块,2048 个扇区。
2、W25Q64每页大小由256字节组成,每页的256字节用一次页编程指令即可完成。
3、擦除指令分别支持: 16页(1个扇区)、128页、256页、全片擦除。
二、电路图1、软件模拟的SPI:线可以任意接
2、硬件模拟的SPI:要按以下方式连接
3、本次软件模拟和硬件模拟使用同一个电路图,方便切换
CS(片选):PA4 DO(从机输出):PA6
CLK(时钟):PA5 DI(从机输入):PA7
三、软件SPI读写W25Q641、SPI.c(初始化寄存器,实现读取一个字节的功能)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464 ...
14、I2C通信协议
14、I2C通信协议原理和MPU6050一、串口通讯
只能在两个设备之间进行
若要三台设备两两通信,则每个设备得需要两组窗口,为3组相互独立的窗口通讯
为解决这个问题:设计了总线通讯,有多种,I2C为其中一种
二、I2C通信(1)特点1、同步、半双工
2、带数据应答
3、支持总线挂载多设备(一主多从、多主多从)
4、可以是软件IC和硬件IC
(2)时钟线和数据线
1、主机:任何情况下,主机完全掌握SCL线,在空闲状态下,主机可以主动发起对SDA控制,只有在从机发送数据和从机应答时,主机才会转交SDA的控制权给从机
2、SCL时钟线在任何时刻都只能被动的读取,从机不允许控制SCL线,3、SDA数据线,从机不允许主动发起对SDA的控制,只有在主机发送读取从机的命令后,从机应答的时候,从机才能短暂的获取SDA的控制权
4、主机拥有SCL的绝对控制权,所以主机的SCL可以配置成推挽输出,所有从机的SCL都配置成浮空输入或者上拉输入
5、为了实现输出输入半双工,避免总线没协调好导致电源短路,I2C规定禁止所有设备输出强上拉的高电平,采用外置若上拉电阻加开漏输出的电路
6、SCL和SDA各添加 ...
13、USART串口数据包
13、USART串口数据包一、发送HEX数据包1、固定包长,含包头包尾(包尾不是必须的)
2、可变包长,含包头包尾
包头包尾和数据载荷的重复问题:
限制载荷数据的范围,以避免与包头包尾冲突,例如只发送特定范围的数据(0~100)。
使用固定长度的数据包,这可以确保包头和包尾的位置始终一致。
增加包头包尾的数量,以确保它们不会与载荷数据相重叠。
包头包尾数量的选择问题:
在某些情况下,只需要一个包头而无需包尾,这取决于具体的通信需求和协议设计。
固定包长和可变包长的选择问题:
对于HEX(十六进制)数据,如果存在与包头包尾重复的情况,最好选择固定包长,以避免接收到错误的数据。
如果不会出现重复问题,可以选择可变包长以更有效地传输数据。
数据流的处理问题:
可以将各种数据类型(例如16位整型、32位整型、浮点数、双精度浮点数、结构体)转化为字节数组,然后通过指向该字节数组的指针来发送数据。
这允许您将各种数据类型转换为适合传输的字节数组,以便进行有效的数据流处理。
二、接收HEX数据包
每收到一个字节,函数都会进入一次中断,在中断函数中,可以拿到一个字节,但拿到字节 ...
12、USART串口协议
12、USART串口协议、外设1、通信接口
• 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
• 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发
2、 硬件电路
• 简单双向串口通信有两根通信线(发送端 TX 和接收端 RX )• TX 与 RX 要交叉连接• 当只需单向的数据传输时,可以只接一根通信线• 当电平标准不一致时,需要加电平转换芯片
3、电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种
• TTL 电平: +3.3V 或 +5V 表示 1 , 0V 表示 0• RS232 电平: -3~-15V 表示 1 , +3~+15V 表示 0• RS485 电平:两线压差 +2~+6V 表示 1 , -2~-6V 表示 0 (差分信号)
4、串口参数及时序
• 波特率:串口通信的速率 速率的参数就是波特率,波特率就是每秒传输码元的个数,单位是码元/s(baud)• 比特率:每秒传输的比特数,单位是bit/s,或者是bps 在二进制的情况下,一 ...
11、串口通信
11、串口通信1、串口通信原理 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配:
波特率(Baud Rate):波特率是串口通信中非常重要的参数,它表示每秒钟传送的比特数。例如,波特率为9600表示每秒钟传送9600个比特(或960个字节)。波特率的选择需要发送和接收双方协商一致,以确保数据的正确传输。不同的设备通常支持不同的波特率选项。
数据位(Data Bits):数据位确定每个字节中实际数据位的数量。 ...