第十三章 S3C2410的I2C总线控制
主要内容: 13.1 I2C接口和EEPROM 13.2 EEPROM读/写操作 13.5 I2C实验程序 13.4 S3C2410 I2C总线读/写参考程序编写 13.3 S3C2410处理器I2C接口
13.1 I2C接口和EEPROM 1.C总线的主要特点 C总线是由PHILIPS公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即在连接于总线上器件之间传送信息。这种总线的主要特点有: (1) 总线只有两根线,即串行时钟线(SCL)和串行数据线 (SDA),这在设计中大大减少了硬件接口。 (2) 每个连接到总线上的器件都有一个用于识别的器件地址,器件地址由芯片内部硬件电路和外部地址引脚同时决定,避免了片选线的连接方法,并建立了简单的主从关系,每个器件既可以作为发送器,又可以作为接收器。
(3) 同步时钟允许器件用不同的波特率进行通信。 (4) 同步时钟可以作为停止或重新启动串行口发送的握手信号。 (5) 串行数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。
2.C总线的基本结构 C总线是由数据线SAD和时钟线SCL构成的串行总线,可发送和接收数据。各种采用C总线标准的器件均并联在总线上,每个器件内部都有C接口电路,用于实现与C总线的连接,结构形式如图13-1所示。
3.C总线信息传送 C总线没有进行信息传送时,数据线SDA和时钟线SCL都为高电平。当主控制器向某个器件传送信息时,首先应向总线传送开始信号,开始信号和结束信号规定如下: 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
具体情况如图13-2所示。
主控制器每次传送的信息的第一个字节必须是器件地址码,第二个字节为器件单元地址,用于实现选择所操作的器件的内部单元,第三个字节是读/写命令,从第四个字节开始为传送的数据。其中器件地址码格式如下:
4.C总线读、写操作时序 (1)指定单元读 该操作从所选器件指定地址读,读的字节数不限,格式如下,见图13-3:
图13-3中,只给出读一个字节SDA的时序,当SCL为高,SDA从高到低跳变时,启动C,C向总线写第一个字节数据,1010是器件的类型,是EPROM,LSB=0是写命令,接到ACK应答后,再发一字节数据,这个数据是EPROM内的单元地址,然后收到ACK后就可以从SDA线上串行读出数据,收到一个完整字节后不用等ACK,直接发高电平结束本次操作,注意,读操作完后没有ACK。
(2)指定单元写 该操作从所选器件当前地址写,写的字节数不限,格式如下,见图13-4:
13.2 EEPROM读/写操作 13.2.1 AT24C04结构与应用简述 目前,通用存储器芯片多为EEPROM,其常用的协议主要有两线串行连接协议(I2C)和 三线串行连接协议。带C总线接口的EEPROM有许多型号,其中AT24CXX系列使用十分普遍。产品包括AT24C01, AT24C02、AT24C04,AT24C08,AT24C16等,其容量(字节数×页) 分别为128×8,256×8,512×8,1024×8,2048×8,适用于2~5V的低电压操作,具有低功耗和高可靠性等优点。
AT24系列存储器芯片采用CMOS工艺制造,内置有高压泵,可在单电压供电条件下工作。其标准封装为8脚DIP封装形式,如图13-5所示。
各引脚的功能说明如下: SCL:串行时钟。遵循ISO/IEC7816同步协议,漏极开路,需接上拉电阻。在该引脚的上升沿,系统将数据输人到每个EEPROM器件,在下降沿输出。 SDA:串行数据线。漏极开路,需接上拉电阻。双向串行数据线,漏极开路,可与其他开路器件“线或”。 A0、A1、A2:器件/页面寻址地址输人端。在AT24C01和AT24C02中,做页面寻址地址。
WP:读/写保护。接低电平时可对整片空间进行读/写,高电平时不能读/写,受保护。 Vcc/GND:一般输入5V工作电压。 AT24C04由输入缓冲器和EEPROM阵列组成。由于EEPROM的半导体工艺特性写入时间为5~10ms,如果从外部直接写入EEPROM,则每写一个字节都要等候5~10ms,成批 数据写人时则要等候更长的时间。具有SRAM输人缓冲器的EEPROM器件,其写入操作变 成对SRAM缓冲器的装载,装载完后启动一个自动写人逻辑将缓冲器中的全部数据一次写入EEPROM阵列中。
13.2.2 设备地址(DADDR) AT24C04的器件地址是1010。
13.2.3 AT24CXX的数据操作格式 在I2C总线中,对AT24C04内部存储单元读/写,除了要给出器件的设备地址(DADDR) 外,还须指定读/写的页面地址(PADDR)。两者组成操作地址(OPADDR)如下: 1010 A2 A1A0-R/W
13.3 S3C2410处理器I2C接口 13.3.1 S3C2410 I2C接口简介 S3C2410处理器提供符合I2C协议的设备连接双向数据线I2CSDA和I2CSCL,在I2CSCL高电平期间,I2CSDA的下降沿启动,上升沿停止。S3C2410处理器可以支持主发送、主接收、从发送和从接收4种工作模式。在主发送模式下,需要使用到如表13-1~13-4所列寄存器。
13.3.2 使用S3C2410 I2C总线读/写方法 开始条件(START_C):当SCL为高电平时,SDA由高转为低。 • 停止条件(STOP_C):当SCL为高电平时,SDA由低转为高。 • 确认信号(ACK):在做为接收方应答时,每收到一个宇节后便将SDA电平拉低。 • 数据传送(R/M):总线启动或应答后,SCL高电平期间数据串行传送;低电平期间为数据准备,并允许SDA线上数据电平变换。总线以字节(8位)为单位传送数据,且高有效位(MSB)在前。
13.4 S3C2410 I2C总线读/写参考程序编写 1.CAT24WCXX的器件地址 CAT24WCXX的器件地址的具体情况见表13-5,表中A0、 A1 和A2对应器件的管脚1、2、和3,a8、a9、a10对应为页地址选择位。
2.页写 CAT24WCXX的按字节读/写操作13.1节中已做介绍,这里对CAT24WCXX按页读写做简单介绍。 按字节读/写操作模式下,CAT24WXX一次可写入1个字节数据,页写操作的启动和字节一样。不同的是在于传送了一个字节数据后并不产生停止信号,而是继续传送下一个字节。每发送一个字节数据后内部地址自动加1。 接收到一页字节数据和主器件发送的停止信号后,CAT24启动内部写周期将数据写到数据区。
3。 I2C总线编程 I2C总线编程主要完成二项工作,一是系统初始化,包括使能系统中断,设置中断向量等;二是对I2C的相关寄存器进行设置:
13.5 I2C实验程序 Embest EDUKIT-II/III实验系统中,该实验电路设计如图13-6所示:
本实验的内容就是将0~F这l6个数按顺序写人到EEPROM(AT24C04)的内部存储单元中,然后再依次将它们读出,并通过实验板的串口UART0输出到在PC机上运行的Windows自带超级终端上。在本实验中EEPROM被作为I2C总线上的从设备来进行处理,其工作过程涉及I2C总线的主发送和主接收两种工作模式。 如实验结果正常,在超级终端上显示:
Embest Edukit-Ⅲ Evaluation Board IIC Timer Test Example,using AT24c04… Write char 0-f into AT24c04 Read 16 bytes from AT24c04 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f.