位置:51电子网 » 技术资料 » 接口电路

I2C总线驱动在嵌入式系统中的两种实现

发布时间:2008/6/3 0:00:00 访问次数:469

1 引 言

i2c总线(inter-ic bus)是一种通用的串行总线,是用于ic器件之间连接的二线制总线。他通过串行数据线(serial data lines,sdl)及串行时钟线(serial clockline,scl)两线在连接到总线上的器件之间传送信息,并根据地址识别每个器件。一个或多个微控制器以及外围器件可以通过i2c总线接口非常方便的连接在一起构成系统。这种总线结构的连线和连接引脚少,器件间总线简单。结构紧凑,因此其构成系统的成本较低;并且在总线上增加器件不会影响系统的正常工作,所有的i。c器件共用一套总线,因此其系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,时间同步机制也能够很方便地确定总线时钟,因此在嵌入式系统中得到了广泛的应用。 2 i2c总线原理

2.1 i2c工作原理

i2c总线是由数据线sda和时钟线scl构成的串行总线,可发送和接收数据。每个连接到总线的器件都可以通过惟一的地址与主机通讯,主机可以作为主机发送器或主机接收器。他是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏。串行的8位双向数据传输位速率在标准模式下可达100 kb/s,快速模式下可达400 kb/s,高速模式下可达3.4 mb/s。连接到相同总线的ic数量只受到总线的最大电容400 pf限制。

i2c总线在传送数据过程中共有3种特殊的电平变换情况,他们分别是:起始(start)、停止(stop)和响应(aek)。

当scl为高电平时,sda由高电平向低电平跳变,这个表示起始条件;当scl是高电平时,sda线由低电平向高电平跳变表示停止条件。起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态,在停止条件的某段时间后总线被认为再次处于空闲状态。

响应信号是指从机在接收到8b数据后,向主机发出特定的低电平脉冲,表示已收到数据。在响应的时钟脉冲期间,从机必须将sda线拉低使他在这个时钟脉冲的高电平期间保持稳定的低电平,主机收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答信号,则判断为从机出现故障。

2.2操作时序

i2c总线运用主/从双向通讯。主机和从机都可以工作于接收和发送状态。总线必须由主机(通常为微控制器)控制,主机产生串行时钟(scl)控制总线的传输方向,并产生起始和停止条件。sda线上的数据状态仅在scl为低电平的期间才能改变,scl为高电平的期间,sda状态的改变被用来表示起始和停止条件。具体时序见图1。

3嵌入式系统中的i2c驱动的两种实现

3.1 系统自带i2c寄存器的实现

下面以arm s3c4510b为例,给出基于寄存器方式的i2c驱动实现。s3c4510b内含一个i2c总线主控器,可方便地与各种带有i2c接口的器件相连。i2c总线控制器有3个特殊功能寄存器:一个控制状态寄存器(i2con),一个预分频寄存器(i2cps)和一个移位缓冲寄存器(i2cbuf)。通过配置这些寄存器,可实现正确的i2c数据传输时序。下面分别给出读、写实现的实例。读操作:

通过对控制状态寄存器(i2cc()n)写入oxlo发送启动码初始化串行i2c总线,然后总线控制器发送7位的从设备地址并通过移位缓冲寄存器发送读/写控制位,接收器则在主控器的scl脉冲期间通过将sda线从高电平下拉到低电平作为应答信号。

写数据的操作 先设置控制状态寄存器的bf位(0x01),然后写入数据到移位缓冲寄存器。移位缓冲寄存器无论是被读还是写,bf位均会自动清零。若要进行连续的读/写操作,必须设置控制状态寄存器的ack位(0x08)。

读数据的操作 在设置控制状态寄存器的bf位以后,可以进行读数据的操作,当读/写完最后一个字节时,可对ack位进行复位通知发送器/接收器读数据操作结束。

在读/写操作完成以后,可通过对i2ccon写入0x20生成结束码。

3.2 以gpio端口模拟i2c实现

此方法是直接用arm s3c4510的gpio(generalpurpose input/output)引脚模拟i2c总线的时序来实现数据传输。s3c4510b提供了18个可编程的通用i/o端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器iopmod和iopcon控制。

控制i/o口的特殊功能寄存器一共有3个:iop-mod,i0pcon和iopdata。i/o口模式寄存器(iop-mod)用于配置p17~p0的输入输出状态;i/o口控制寄存器iopcon用于配置端口p8~p17的特殊功能,当这些端口用作特殊功能(如外部中断请求、外部中断请求应答、外部dma请求或应答、定时器溢出)时,其工作模式由10pcon寄存器控制,而不再由iopmod寄存器;i/o口数据寄存器(iopdata)当配置为输入模式时,读取i/o口数据寄

1 引 言

i2c总线(inter-ic bus)是一种通用的串行总线,是用于ic器件之间连接的二线制总线。他通过串行数据线(serial data lines,sdl)及串行时钟线(serial clockline,scl)两线在连接到总线上的器件之间传送信息,并根据地址识别每个器件。一个或多个微控制器以及外围器件可以通过i2c总线接口非常方便的连接在一起构成系统。这种总线结构的连线和连接引脚少,器件间总线简单。结构紧凑,因此其构成系统的成本较低;并且在总线上增加器件不会影响系统的正常工作,所有的i。c器件共用一套总线,因此其系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,时间同步机制也能够很方便地确定总线时钟,因此在嵌入式系统中得到了广泛的应用。 2 i2c总线原理

2.1 i2c工作原理

i2c总线是由数据线sda和时钟线scl构成的串行总线,可发送和接收数据。每个连接到总线的器件都可以通过惟一的地址与主机通讯,主机可以作为主机发送器或主机接收器。他是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏。串行的8位双向数据传输位速率在标准模式下可达100 kb/s,快速模式下可达400 kb/s,高速模式下可达3.4 mb/s。连接到相同总线的ic数量只受到总线的最大电容400 pf限制。

i2c总线在传送数据过程中共有3种特殊的电平变换情况,他们分别是:起始(start)、停止(stop)和响应(aek)。

当scl为高电平时,sda由高电平向低电平跳变,这个表示起始条件;当scl是高电平时,sda线由低电平向高电平跳变表示停止条件。起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态,在停止条件的某段时间后总线被认为再次处于空闲状态。

响应信号是指从机在接收到8b数据后,向主机发出特定的低电平脉冲,表示已收到数据。在响应的时钟脉冲期间,从机必须将sda线拉低使他在这个时钟脉冲的高电平期间保持稳定的低电平,主机收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答信号,则判断为从机出现故障。

2.2操作时序

i2c总线运用主/从双向通讯。主机和从机都可以工作于接收和发送状态。总线必须由主机(通常为微控制器)控制,主机产生串行时钟(scl)控制总线的传输方向,并产生起始和停止条件。sda线上的数据状态仅在scl为低电平的期间才能改变,scl为高电平的期间,sda状态的改变被用来表示起始和停止条件。具体时序见图1。

3嵌入式系统中的i2c驱动的两种实现

3.1 系统自带i2c寄存器的实现

下面以arm s3c4510b为例,给出基于寄存器方式的i2c驱动实现。s3c4510b内含一个i2c总线主控器,可方便地与各种带有i2c接口的器件相连。i2c总线控制器有3个特殊功能寄存器:一个控制状态寄存器(i2con),一个预分频寄存器(i2cps)和一个移位缓冲寄存器(i2cbuf)。通过配置这些寄存器,可实现正确的i2c数据传输时序。下面分别给出读、写实现的实例。读操作:

通过对控制状态寄存器(i2cc()n)写入oxlo发送启动码初始化串行i2c总线,然后总线控制器发送7位的从设备地址并通过移位缓冲寄存器发送读/写控制位,接收器则在主控器的scl脉冲期间通过将sda线从高电平下拉到低电平作为应答信号。

写数据的操作 先设置控制状态寄存器的bf位(0x01),然后写入数据到移位缓冲寄存器。移位缓冲寄存器无论是被读还是写,bf位均会自动清零。若要进行连续的读/写操作,必须设置控制状态寄存器的ack位(0x08)。

读数据的操作 在设置控制状态寄存器的bf位以后,可以进行读数据的操作,当读/写完最后一个字节时,可对ack位进行复位通知发送器/接收器读数据操作结束。

在读/写操作完成以后,可通过对i2ccon写入0x20生成结束码。

3.2 以gpio端口模拟i2c实现

此方法是直接用arm s3c4510的gpio(generalpurpose input/output)引脚模拟i2c总线的时序来实现数据传输。s3c4510b提供了18个可编程的通用i/o端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器iopmod和iopcon控制。

控制i/o口的特殊功能寄存器一共有3个:iop-mod,i0pcon和iopdata。i/o口模式寄存器(iop-mod)用于配置p17~p0的输入输出状态;i/o口控制寄存器iopcon用于配置端口p8~p17的特殊功能,当这些端口用作特殊功能(如外部中断请求、外部中断请求应答、外部dma请求或应答、定时器溢出)时,其工作模式由10pcon寄存器控制,而不再由iopmod寄存器;i/o口数据寄存器(iopdata)当配置为输入模式时,读取i/o口数据寄

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!