S5PV210-arm-裸机-i2c
admin
2023-08-01 04:40:23
0次









I2C协议,是同步的,串行通信方式。有两个线,一根SCLOCK时钟线,一根SDA数据线,时钟是右SOC提供的,SOC和外设用I2C通信时,使用的是一个时钟,数据线是两者传输信息用的。一般在通信的过程中,分为主设备和从设备,如果主设备要向从设备发送信息时,从设备不可以发送东西。

可以一对一进行I2C通信,也可以一对多进行I2C通信,在一对多I2C通信时,主设备像往常一样先把SDA,SCL拉高,SCL维持高电平的这一段时间里,SDA产生了一个由高电平到低电平的变化,就成功发送了一个起始位,这时,所有的从设配都开始把自己的耳朵竖起来听了, 因为所有从设备都是连接在这两条总线上的。发送完起始位后,主设备开始发送八位数据了,分别在SCL的每一个上升沿读取SDA数据线的高电平和低电平对应的0和1,这八位数据包括七位的从设备的地址,和一位(0或1)代表读或者写。当从设备发现发送过来的地址后,就赶紧把这个地址和自己的地址进行对比(每个从设备都有一个自己固定的地址(在一个电路板上)),如果从设备发现发送过来的地址和自己的地址相符合,就知道这时主设备就要开始和自己进行通信了。如果发现发送过来的地址和自己的地址不符合,那么从设备就不给予理会,因为它知道不是在叫他。当发现地址和自己的地址一样时,这个设备就开始读取了第八位,从而知道主设备是要跟它进行写还是读,确认是读或者写后,接收方要给发送发一个应答信号ACK,来告诉一声发送放,证明它收到了,它知道了。当接收方看见这个ACK信号后,就知道他已经应答了,回复了,接着就开始发送真正的数据了。也是八位的数据,因为I2C在通信时,一次传输的数据是一个字节。接收方接受到这些数据后,也要发送一位应答信号,来告诉发送方我已经接收完毕了。接着发送方就可以发送一个停止位,证明这次通信结束了。停止位是SCL维持在一个高电平的时间段内,SDA由一个低电平到一个高电平的变化。




在两个设备在进行I2C通信时,主设备发完起始位后,就要开始发送地址,去寻找要进行通信的那个从设备,这个地址一共由八位组成,其中高7位是地址,低一位是R/W,读或者写,一般如果主设备要接收从设备的数据时,低一位为1,反之为0.



一般是发送一个起始信号,在发送一个字节的地址信息,包括RW位,一共八位,接着等从设备发送ACK响应,我们在接收一个字节的数据,这八位就是我们要读的数据。读完后,我们要给从设备发送一个ACK,告诉它我们读完了,接着我们在给发送一个停止位,或者不发送停止位,继续读。




代码的框架:

整个代码的框架包括两部分,一部分是I2C的代码,称为物理层,就负责I2C的时序,起始位,发送数据,接受数据应答的时序等。

另一份部分是G - secsor传感器的代码,这部分代码称为应用层,协议层,传输层,负责控制自己内部的寄存器,如果是通过总线给自己写数据的话,也就是说如果是SOC控制I2C的物理层给Gsensor的数据的话,就是在Gsensor协议层去操作,去调用I2C的发送数据的函数,将数据写入到自己的相应的寄存器中。

如果是SOC控制Gsensor通过I2C总线读取数据到SOC的话,就是在Gsensor的协议层代码中通过调用I2C的接收

函数,将寄存器中的数据通过I2C的总线传输到SOC中去。

所以整个代码框架是分两个部分的,一部分是I2C的代码叫做物理层,一部分是Gsensor的代码,叫做协议层,或者应用层,或者传输层。

在协议层写代码时,只要知道自己的工作流程即可,不用去关心I2C物理层的代码是怎么实现的。












相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...