码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-12-21 02:20:57      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:blog   串行   msu   cpu   产生   技术   自动   内容   images   

     本文以TP芯片GT910为例,下面的内容均抄自该芯片SPEC。
(a)数据传输        
      通讯总是由主CPU 发起,有效的起始信号为:在SCL 保持为“1”时,SDA 上发生由“1”“0”的跳变。地址信息或数据流均在起始信号之后传输。所有连接在I2C 总线上的从设备,都要检测总线上起始信号之后所发送的8 位地址信息,并做出正确反应。在收到与自己相匹配的地址信息时,GT910 在第9 个时钟周期,将SDA 为输出口,并置“0”,作为应答信号。若收到不与自己匹配的地址信息,非0XBA 0XBBGT910 将保持闲置状态。SDA 口上的数据按9 个时钟周期串行发送9 位数据:8 位有效数据加1 位接收方发送的应答
信号ACK 或非应答信号NACK。数据传输在SCL “1”时有效。当通讯完成时,由主CPU 发送停止信号。停止信号是当SCL “1”时,SDA 状态由“0”“1”的跳变。
           b) GT910 写操作
(以设备地址为0xBA/0xBB 为例)
技术分享

 

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

 

技术分享
    上图为主CPU GT910 进行的读操作流程图。首先主CPU 产生一个起始信号,然后发送设备地址信息及读写位信息“0”表示写操作:0xBA在收到应答后,主CPU 发送首寄存器的16 位地址信息,设置要读取的寄存器地址。在收到应答后,主CPU 重新发送一次起始信号,发送读操作:0xBB。收到应答后,主CPU 开始读取数据。GT910 同样支持连续的读操作,默认为连续读取数据。主CPU 在每收到一个Byte 数据后需发送一个应答信号表示成功接收。在接收到所需的最后一个Byte 数据后,CPU 发送非应答信号NACK”,然后再发送停止信号结束通讯。

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

标签:blog   串行   msu   cpu   产生   技术   自动   内容   images   

原文地址:http://www.cnblogs.com/gcws/p/6204786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!