十 ARM9(2440)的IIC-理论知识及程序实例
S3C2440A RISC 微处理器可以支持一个多主控IIC 总线串行接口。一条专用串行数据线(SDA)和一条专用
串行时钟线(SCL)传递连接到IIC 总线的总线主控和外设之间的信息。SDA 和SCL 线都为双向的。
多主控IIC 总线模式中,多个S3C2440A RISC 微处理器可以发送或接收串行数据来自或到从设备。主机
S3C2440A 可以通过IIC 总线启动和结束数据传输。S3C2440A 中的IIC 总线是使用标准总线仲裁步骤。
为了控制多主控IIC 总线操作,必须写入值到以下寄存器中:
– 多主控IIC 总线控制寄存器,IICCON
– 多主控IIC 总线控制/状态寄存器,IICSTAT
– 多主控IIC 总线Tx/Rx 数据移位寄存器,IICDS
– 多主控IIC 总线地址寄存器,IICADD
当释放了IIC 总线时,SDA 和SCL 线应该都保持为高电平。一个高到低SDA 的变化可以启动一个起始条件。
SCL 稳定保持在高电平时的一个低到高SDA 的变化可以启动一个停止条件。
起始和停止条件通常由主设备产生。第一个数据字节为7 位地址值,其在启动起始条件后放到总线上,可以确
定出主设备要选择的从设备。第8 位是决定传输方向(读或写)。
每个放到SDA 线上的字节都应该总共为8 位。字节可以在总线传输操作期间无限制的发送或接收。数据通常
从最高有效位(MSB)开始始发送,并且每个字节应该立即通过应答(ACK)位跟上。
I2C总线可构成多主和多从系统。在多主系统结构中,系统通过硬件或软件仲裁获得总线控制使用权。应用系统中I2C总线多采用主从结构,即总线上只有一个主控节点,总线上的其他设备都作为从设备。I2C总线上的设备寻址由器件地址接线决定,并且通过访问地址最低位来控制读/写方向。
目前,通用存储器芯片多为EEPROM,其常用的协议主要有两线串行连接协议(I2C)和
三线串行连接协议。带I2C总线接口的EEPROM有许多型号,其中AT24CXX系列使用十分普遍。产品包括AT24C01、AT24C02、AT24C04、AT24C08、AT24C16等。
AT24系列存储器芯片采用CMOS工艺制造,内置有升压电路,可在单电压供电条件下工作。其标准封装为8脚DIP封装形式。
各引脚的功能说明如下:
SCL:串行时钟。遵循ISO/IEC7816同步协议,漏极开路,需接上拉电阻。在该引脚的上升沿,系统将数据输人到每个EEPROM器件,在下降沿输出。
SDA:串行数据线。漏极开路,需接上拉电阻。双向串行数据线,漏极开路,可与其他开路器件“线或”。
A0、A1、A2:器件/页面寻址地址输人端。在AT24C01和AT24C02中,引脚被硬连接,其他AT24Cxx均可接寻址地址线。
WP:读/写保护。接低电平时可对整片空间进行读/写,高电平时不能读/写,受保护。
Vcc/GND:5V工作电压。
设备地址(DADDR)
AT24CXX的数据操作格式
在I2C总线中,对AT24C04内部存储单元读/写,除了要给出器件的设备地址(DADDR)
外,还须指定读/写的页而地址(PADDR)。两者组成操作地址(OPADDR)如下:
下面是我摘自别人的文章中关于IIC的描述,写的很好
s3c2440内部有一个IIC总线接口,因此为我们连接带有IIC通信模块的外围设备提供了便利。它具有四种操作模式:主设备发送模式、主设备接收模式、从设备发送模式和从设备接收模式。在这里我们只把s3c2440当做IIC总线的主设备来使用,因此只介绍前两种操作模式。在主设备发送模式下,它的工作流程为:首先配置IIC模式,然后把从设备地址写入接收发送数据移位寄存器IICDS中,再把0xF0写入控制状态寄存器IICSTAT中,这时等待从设备发送应答信号,如果想要继续发送数据,那么在接收到应答信号后,再把待发送的数据写入寄存器IICDS中,清除中断标志后,再次等待应答信号;如果不想再发送数据了,那么把0x90写入寄存器IICSTAT中,清除中断标志并等待停止条件后,即完成了一次主设备的发送。在主设备接收模式下,它的工作流程为:首先配置IIC模式,然后把从设备地址写入接收发送数据移位寄存器IICDS中,再把0xB0写入控制状态寄存器IICSTAT中,这时等待从设备发送应答信号,如果想要接收数据,那么在应答信号后,读取寄存器IICDS,清除中断标志;如果不想接收数据了,那么就向寄存器IICSTAT写入0x90,清除中断标志并等待停止条件后,即完成了一次主设备的接收。在完成上述两个模式时,主要用到了控制寄存器IICCON、控制状态寄存器IICSTAT和发送接收数据移位寄存器IICDS。由于我们只把s3c2440当做主设备来用,并且系统的IIC总线上只有这么一个主设备,因此用来设置从设备地
ARM92440II 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
