您的位置:首页 > 其它

对外设进行读写操作的过程

2016-12-20 23:24 204 查看
本文以TP芯片GT910为例,下面的内容均抄自该芯片SPEC。
(a)数据传输

通讯总是由主CPU 发起,有效的起始信号为:在SCL 保持为“1”时,SDA 上发生由“1”到“0”的跳变。地址信息或数据流均在起始信号之后传输。所有连接在I2C 总线上的从设备,都要检测总线上起始信号之后所发送的8 位地址信息,并做出正确反应。在收到与自己相匹配的地址信息时,GT910 在第9 个时钟周期,将SDA 改为输出口,并置“0”,作为应答信号。若收到不与自己匹配的地址信息,非0XBA 或0XBB,GT910 将保持闲置状态。SDA 口上的数据按9 个时钟周期串行发送9 位数据:8 位有效数据加1 位接收方发送的应答

信号ACK 或非应答信号NACK。数据传输在SCL 为“1”时有效。当通讯完成时,由主CPU 发送停止信号。停止信号是当SCL 为“1”时,SDA 状态由“0”到“1”的跳变。

[align=left] b)GT910 写操作[/align]

(以设备地址为0xBA/0xBB 为例)



上图为主CPU 对GT910 进行的写操作流程图。首先主CPU 产生一个起始信号,然后发送地址信息及读写位信息“0”表示写操作:0xBA。在收到应答后,主CPU 发送寄存器的16 位地址,随后是8 位要写入到寄存器的数据内容。GT910 寄存器的地址指针会在写操作后自动加1,所以当主CPU 需要对连续地址的寄存器进行写操作时,可以在一次写操作中连续写入。写操作完成,主CPU 发送停止信号结束当前写操作。

[align=left] c)GT910 读操作[/align]

(以设备地址为0xBA/0xBB 为例)



上图为主CPU 对GT910 进行的读操作流程图。首先主CPU 产生一个起始信号,然后发送设备地址信息及读写位信息“0”表示写操作:0xBA。在收到应答后,主CPU 发送首寄存器的16 位地址信息,设置要读取的寄存器地址。在收到应答后,主CPU 重新发送一次起始信号,发送读操作:0xBB。收到应答后,主CPU 开始读取数据。GT910 同样支持连续的读操作,默认为连续读取数据。主CPU 在每收到一个Byte 数据后需发送一个应答信号表示成功接收。在接收到所需的最后一个Byte 数据后,主CPU 发送“非应答信号NACK”,然后再发送停止信号结束通讯。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: