瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。
【公众号】迅为电子
【粉丝群】258811263(加群获取驱动文档+例程)
【视频观看】嵌入式学习之Linux驱动(第十五篇 I2C_全新升级)_基于RK3568
【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板
第168章 I2C通信时序介绍
168.1 起始信号和终止信号
所有的交互都是以START(S)信号开始,并以STOP(P)信号终止,具体的起始信号和终止信号通信时序图如下所示:
起始信号(START):是由总线控制器生成的,定义为SDA线从高电平到低电平的跳变,同时SCL线保持高电平。
终止信号(STOP):是由总线控制器生成的,定义为SDA线从低电平到高电平的跳变,同时SCL线保持高电平。
注意:在START信号之后,总线被认为是忙碌状态,直到STOP信号出现后总线才被认为空闲。
168.2 数据格式
1. 每一个传输到SDA线上的字节长度都必须是8位。每次传输可以包含任意数量的字节。
2. 每个字节之后都必须跟一个应答位(Acknowledge bit)。
3. 数据以最高有效位(MSB)优先的顺序传输。
4. 如果目标设备在处理内部中断等操作时无法立即接收或发送另一个完整的字节数据,它可以通过拉低SCL线来将控制器置于等待状态。当目标设备准备好接收下一字节数据时,释放SCL线即可继续数据传输。
168.3 应答信号和非应答信号
1. 应答信号发生在每个字节传输之后。应答位让接收设备向发送设备表明字节数据已经成功接收,可以发送下一个字节了。
2. 当发送设备在第9个时钟脉冲期间释放SDA线时,接收设备可以拉低SDA线并在此时钟高电平期间保持稳定低电平,这就定义了应答信号。
3. 如果在第9个时钟脉冲期间SDA线保持高电平,则定义为非应答信号。控制器可以产生停止信号中止传输,或者重复启动信号开始新的传输。
应答信号和非应答信号时序如下图所示:
导致产生NACK信号的5种情况包括:
1)总线上没有接收设备响应发送的地址
2)接收设备正忙于其他实时功能而无法开始通信
3)接收设备在传输过程中收到不能理解的数据或命令
4)接收设备无法再接收更多数据字节
5)控制器-接收器必须向目标发送器表明传输结束。
168.4 读写方向
1.数据传输格式,首先发送一个7位的目标地址,后跟一个读/写方向位(R/W位)。
2.读/写方向位是第8位,0表示写操作(WRITE),1表示读操作(READ)。
3.数据传输总是由控制器产生的停止条件(P)来结束。但如果控制器需要继续在总线上通信,它可以产生一个重复启动条件(Sr)来寻址其他目标设备,而无需先产生停止条件。这样就可以在同一次传输过程中实现各种读/写格式的组合
关于读写相关的具体时序图如下所示: