概述
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总线上只要这么一个主设备,因而用来设置从设备地址的地址寄存器IICADD,和用于裁定总线的多主设备线路操控寄存器IICLC都无需装备。寄存器IICCON的第6位和低4位用于设置IIC的时钟频率,由于IIC的时钟线SCL都是由主设备供给的。s3c2440的IIC时钟源为PCLK,当体系的PCLK为50MHz,而从设备最高需求100kHz时,能够将IICCON的第6方位1,IICCON的低4位全为0即可。寄存器IICCON的第7位用于设置是否宣布应对信号,第5位用于是否使能发送和接纳中止,第4位用于中止的标志,当接纳或发送数据后必定要对该位进行清零,以铲除中止标志。寄存器IICSTAT的高2位用于设置是哪种操作方法,当向第5位写0或写1时,则表明结束IIC或开端IIC通讯,第4位用于是否使能接纳/发送数据。
下面是用FL2440开发板的程序剖析:
#include
#include “2440addr.h”
#include “def.h”
#include “IIC.h”
static U8 _iicData[IICBUFSIZE];
static volatile int _iicDataCount;//发送计数标志
static volatile int _iicStatus;//IIC状况标志
static volatile int _iicMode;//IIC方法标志
static int _iicPt;
extern void Uart_Printf(char *fmt,…);
extern void Uart_Init(int baud);
void Delay(int x);
//===================================================================
//
//
//
//===================================================================
//******************[ Test_Iic ]**************************************
void Test_Iic(void)
{
}