一、USB转串口通信
Usart时序图
TX:数据发送
RX:数据接收
SCLK:时钟,仅仅同步通信时使用(很少用)
串口调试助手上的配置参数(例如停止位,校验位,波特率...)要与代码写的一致
二、iic通信
IIC一共有只有两个总线: 一条是双向的串行数据线SDA,一条是串行时钟线SCL,再加上上拉电阻(用于产生高电平)组成iic的物理层
-
IIC主设备(主机)功能:主要产生时钟,产生起始信号和停止信号(发送命令)
-
IIC从设备(从机)功能:可编程的IIC地址检测,停止位检测(接收命令)
-
IIC是半双工,而不是全双工 ,同一时间只可以单向通信
IIC物理层特点
当IIC设备空闲时,会输出高阻态,所有设备空闲时,都输出高阻态,由上拉电阻将总线拉高,
高阻态:可以理解为->它处于断开状态,不与主机通信(输出逻辑0)
从机设备将iic总线拉低(逻辑电平0)表示这个从机设备正在占用总线
IIC的协议层
I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为低电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
iic读写过程:
起始信号 -> 地址信号 -> 读/写信号->应答/非应答信号 -> 数据 -> 应答/非应答信号->停止信号
IIC 总线时序图
SCL为高电平,SDA表示的数据有效;
SCL为低电平,SDA表示的数据无效。
7位数据设备地址 +1/0 :即8位设备的读/写地址(地址信号+读写信号)
首先,EEPROM有三种工作模式。
第一,当前地址读,根据上一次写的工作指针来开始进行读操作,读一次自动加一,读完一个page会使page自动加一,而不像在写操作时会返回到该page的第一个byte开始写。
第二,随机读,灵活性较强。但是先要进行一次dummy write 来调整工作指针位置,所谓dummy write 指的是进行一次写操作,但是不写入任何数据,来进行当前地址读的操作。要读第1952个字节的数据,如果按照当前地址读的方式,最差的时间得用先读N个字节才行,其中N为字节总数。采用复合读写方式。
第三,连续读。未读完之前,不发送stop位。节约时间,除第一次外,一直发送data即可。每次读取不受限制,但是一次读取的数据超过256个字节会重新从第0个数据开始读,最好给个限制,防止出现一些数据的紊乱。
注:address传输完后一般有ack位确认收到(由从机EEPROM发出)