WinCE6.0+ S3C6410 IIC驱动学习

    整个的十月份一直都在研究 Camera 的驱动,但收获颇少,磕磕撞撞的没有获得多大的收获。虽然目前工作的主要任务不在这一块,但是还是想坚持下去,直到自己觉得 Camera 驱动掌握到一定程度位置。由于 Camera 驱动中使用了 IIC ,而且发现现有 Camera 驱动中, IIC 的部分出了问题,所以先入手掌握 IIC 驱动。
       为了能够让整体看着流畅,而且 IIC 相关的知识不是特别多,所以从 IIC 的基本知识到驱动源码的分析都做一个介绍。
       1 IIC 总线介绍
       IIC(Inter Integrated Circuit ,内置集成电路总线 ) 总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。 IIC 总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,这对于缓解嵌入式系统资源少的缺陷有很大好处。总线的长度可高达 25 英尺,总线上的数据的传输速率在标准模式下达到 100kb/s ,在快速模式下可以达到 400kb/s ,在高速模式下达到 3.4Mb/s IIC 总线支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线。
       2 IIC 总线工作原理
       IIC 总线遵从同步串行传输协议,即各位串行(一位接一位)发送,由时钟( clock )线指示读数据( data )线的时刻。每个数据包前有一个地址,以指示由哪个器件来接收该数据。
       IIC 采用两根 I/O 线 :一根时钟线( SCL 串行时钟线),一根数据线( SDA 串行数据线),实现全双工的同步数据通信。 IIC 总线通过 SCL/SDA 两根线使挂接到总线上的器件相互进行信息传递。在信息的传输过程中, I 2C 总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。
       SDA SCL 都是双向线路,各通过一个电流源或上拉电阻连接到正的电源电压。当总线空闲时这两条线路都是高电平,连接到总线的器件输出必须是漏极开路或集电极开路才能执行线与的功能。
       IIC 在数据传输过程总共产生三种信号:开始信号、结束信号和应答信号。
       开始信号: SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
       结束信号: SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
       应答信号:接收器在接收到 8bit 数据后,向发送器发出特定的低电平脉冲,表示已收到数据。 CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号, CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
       IIC 数据传输的两种模式:主设备发送从设备接收和从设备发送主设备接收,这两种模式都需要主机发送开始信号和结束信号,应答信号由接收器产生。从设备的地址一般是 1 2 个字节,用于区分连接在同一 IIC 上的不同器件。
       3 S 3C 6410 IIC 接口
       S 3C 6410 IIC 总线接口有四种操作模式:主控制器发送模式、主控制器接收模式、从属器发送模式和从属器接收模式。
       当一个开始信号产生后, IIC 总线获得繁忙信号,停止信号将使 IIC 总线空闲。在一个开始信号后,主控制将发送一个从属器地址来通知从属器设备。一个字节的地址域包含 7 位地址和 1 位传输方向指示器,如果为 0 则表示写操作(发送操作),为 1 是读操作(接收操作)。
       SDA 线上的每一个字节长度必须是 8 位,每一个字节后面跟随一个应答信号 ACK 位( acknowledgement )。 ACK 脉冲在 SCL 线的第 9 个时钟产生。发送器在收到 ACK 信号后,置 SDA 为高电平来释放 SDA 线,接收器在 ACK 发送时钟期间,置 SDA 为低电平,以使 SDA 在第 9 SCL 时钟的高电平期间保持低位。
       在发送模式下,当发送数据时, IIC 总线接口保持等待,直到写入新数据到 IICDS 寄存器。在数据写入 IICDS 之前, SCL 一直保持低电平,之后将被释放。 6410 支持通过中断来判断数据发送是否完成,完成后才可以继续写新数据到 IICDS 寄存器进行发送。
       在接收模式下,当接收数据时, IIC 总线接口保持等待,直到 IICDS 寄存器被读取。在数据从寄存器读出之前, SCL 保持低电平,之后才被释放。同样 6410 支持通过中段来判断数据接收是否完成,完成后便可以继续从 IICDS 中读取新的数据。
       S 3C 6410 处理器有 4 个寄存器 来控制 IIC 总线的操作: IIC 总线控制寄存器( IICCON )、 IIC 总线控制 / 状态寄存器( IICSTAT )、 IIC 总线发送 / 接收数据移位寄存器( IICDS )和 IIC 总线地址寄存器( IICADD )。关于各个寄存器的说明请参看手册。
       今天先写到这里,改天上驱动的源码分析。

你可能感兴趣的:(职场,休闲,s3c6410,WinCE6.0,IIC驱动)