基本概念

  1. 设备都有自己得设备地址,EEprom存储设备信息,包括设备地址

设备地址

一般为7位,前四位已经固化好了,其余三位可以通过设计图,上图,看出接地为000,P0,P1也在数据手册中进行描述,为未接,为0. 即AT24LC08(上图有误)地址为1010 000.

数据手册描述IIC设备地址

  1. 总线速度:标准速度100kbps,快速模式400kbps,高速模式3.4Mbps(一般为100,四百也多一点)

  2. IIC特点: 半双工(串行方式),仅需要两根线(所以又被称为2-wixe总线)

    设备操作时序

    IIC从机设备地址是由主机写进去的

  3. 低电平写,高电平读

高读低写

  1. IIC开始条件和终止条件,基本时序图如下

基本时序图

读写时序分析

按字节进行写操作

主设备设备地址为1010 000,发送数据,写到地址0x3,写入0x5。

主设备设备地址为1010 000,发送数据,写到地址0x3,写入0x5
写入逻辑图

写入

按页进行写操作

按页进行写操作如下图。

按页进行写操作

当前地址读操作

当前地址读操作如下图。

当前地址读操作

随机读操作

随机读操作如下图。

读操作

序列号读操作

序列化读操作如下图。

序列化读操作

读写逻辑

结合上图随机读操作进行理解。

写数据

  1. 装载AT24C08设备地址:0xA0

  2. 设置IIC开始条件

  3. 使能ACK

  4. 检测状态

  5. 装载存储地址 //写数据

  6. 使能ACK

  7. 检测状态

  8. 写数据

  9. 使能ACK

  10. 设置IIC停止条件

读数据

  1. 装载AT24C08设备地址:0xA0

  2. 设置IIC开始条件

  3. 使能ACK

  4. 检测状态

  5. 装载存储地址 //读取数据

  6. 使能ACK

  7. 检测状态

  8. 装载设备地址:0xA0|0x1

  9. 设置IIC开始条件

  10. 使能ACK信号

  11. 检测状态

  12. 读取数据

  13. 关闭ACK信号

  14. 设置停止条件

    相关寄存器分析

    基本寄存器如下。

基本寄存器

  1. I2CCON:使能ACK,选择时钟源,使能Ix/Rx,检测状态
  2. I2CSTAT:主机发送/接收,设置开始/停止条件,数据Tx/Rx使能,AcK能否被接收?
  3. I2CDS0:装载设备地址,发送/接收数据

设备驱动框架功能分析

基础知识

IIC基本特征

  1. IIC是一种数据传输协议(sPI,USB,SDIo,UART.··.)
  2. 速度比较:IIC(100K,400K,3.4M)<SPI<SDI0<网络<‘USB’
  3. IIC是一个半双工通信方式,两根总线(SCL,SDA),每个设备都有唯一设备地址
  4. 一次传输8bit,高位在前,低位在后;总线空闲状态:数据线SDA拉为高电平

IIC设备驱动框架图如下。

IIC设备驱动框架图

i2c设备驱动层组件(i2c-dev.c)

  1. 给用户提供调用接口
  2. 实现策略问题:它知道发什么数据,但不知道怎么发数据

i2c核心层组件(i2c-core.c)

  1. 注册一根i2c总线
  2. 给驱动编程人员提供编程接口

i2c总线驱动层组件(I2c-s3c2410.c)

  1. 初始化硬件(初始化12c控制器):
  2. 实现操作方法(根据I2c操作时序进行控制I2c空制器买现数据接收/发送):它知道怎么去发数据,但不知道发什么数据

    核心层分析

    核心层作用如图下:

核心层作用
读源码:

  1. 注册一根总线

注册一根总线

  1. 返回一个设备与驱动相对应的结构体,个人连接就是将设备与驱动相连接

结构体

- 通过匹配设备名称进行关联,设备匹配函数如下

设备匹配函数

  1. 注册I2C驱动

注册I2C驱动

linux设备驱动涉及重要结构体(linux/i2c.h)

  1. 表示I2C的驱动

表示I2C的驱动

  1. 表示I2C的设备

表示I2C的设备

  1. 表示I2C的适配器/控制器

表示I2C的适配器/控制器

  1. 表示I2C数据包

表示I2C数据包

  1. 表示I2C板卡信息

表示I2C板卡信息

设备驱动层分析

IIC主设备号,系统已经设置。

IIC主设备号

  1. 注册主设备号,返回设备描述符

注册主设备号,返回设备文件描述结构体
2. 创建设备类

创建设备类
3. 绑定适配器

绑定适配器

IIC设备驱动层移植

系统内核构成,如图下:

系统内核构成

系统流程分析

整体流程如下:

整体流程如下

open函数对应的操作流程(包括获取从机的信息):

open对应的操作,获取从机的信息

ioctl函数对应的操作流程(指定client设备地址):

指定client设备地址
write函数对应的操作流程:

平台资源构建

资源层分析

资源层分析图如下:

资源层分析图

平台资源构建

平台资源构建如下:

enter description here

平台数据构建如下:

平台数据

注册平台设备

注册平台设备如下:

注册平台