嵌入式STM32之串口通信、I2C通信

一、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 总线时序图
img

 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发出)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值