
I2C
文章平均质量分 89
uleemos
这个作者很懒,什么都没留下…
展开
-
IIC (三) -- I2C系统驱动程序模型
通过i2c_bus_type中i2c_device_match函数,依次比较设备树,id_table将两者绑定起来,若比较成功,接着调用i2c_device_probe函数进行注册。可以参考I2C驱动程序的层次,而函数之间的调用关系为i2c_register_driver->driver_register(&driver->driver)->driver_find。i2c_driver跟i2c_client匹配成功后,就调用i2c_driver.probe函数。所以这里主要介绍一下这几个重要函数的作用。原创 2023-07-02 18:57:06 · 790 阅读 · 1 评论 -
IIC (二) -- SMBus协议和基础知识介绍
与上面读数据类似,主机会先发送8bit的command code,在没有P信号的同时,再次发送一个读data的信号。向从设备发送一个字节,从设备地址通过7bit 的address体现,Wr为写数据,A为ack响应位,响应位通过从设备回复。SMBus连续读多个字节数据,和连续写类似,先发送command code,主机先读到一个字节为N的字节数信息,然后读取全部数据信息。从上图的关系可以看出SMBus是基于I2C协议的,SMBus要求更严格,SMBus是I2C协议的子集。而是直接开始数据的传输。原创 2023-07-01 15:50:56 · 18173 阅读 · 0 评论 -
IIC (一) -- 协议和基础知识介绍
这是主机会在SCL第九个时钟来的时候,读取SDA,若此时为低电平,则认为收到了ACK,否则为NACK。5.如果,主机想要在接下来发送一个停止位信号,主机会在SCL为低的时间内将SDA拉低,再拉高,再SCL为高的时候将SDA释放。当主机读取从机发送来的数据时,SCL时钟线依旧由主机控制,从机负责SCL时钟信号为高电平时,将数据发送到总线上。主机在总线上发起数据,主机负责SCL和SDA信号的控制,从机只负责在SCL为高电平的时候,读取SDA的信号。总之,SCL由主机控制,SDA是双向的,主机和从机都可以控制。原创 2023-06-19 01:19:27 · 569 阅读 · 0 评论