一心想踏入linux device driver的世界,想着i2c总线相对于usb等其他总线较为简单,就以i2c作为切入点,希望可以逐步理解ldd的设计思想,并能理解其设备模型的概念。
在此对近期于i2c总线及驱动源码的理解做备忘,以免徒劳。
平台 | 友善之臂S70 Tiny6410 |
CPU | Samsung S3C6410A 533Mhz |
Kernel | 2.6.38 |
i2c chip | at24c02 ( 256 pages * 1 byte ) |
1 i2c协议
所谓总线,就应该能挂载多个设备,不局限于单主单从的模式,但同一时刻只有一个主机,主端在SDA线上发送设备地址信息以建立读写通道,需要注意的是i2c设备有的地址是固定的,有的却是可编程的,这个需要根据具体芯片来定。
1.1 时序
1.1.1 start & stop
开始条件:SCL持续为高电平,SDA从高电平下跳至低电平(下降沿)
结束条件:SCL持续为高电平,SDA从低电平