LPC2124开发板I2C总线接口的应用

lpc2124有一个标准的i2c总线接口,可配置为主机或从机,总线时钟速率可调整,最高可支持400khz总线速率。使用i2c总线时,要将相应得引脚设置连接scl和sda,并且总线上要上拉电阻,阻值为1~10kω,依据所需要的总线速率而定。总线速率越高,电阻阻值应该越小。i2c总线可接标准i2c接口器件,如串行eeprom、ram、lcd、时钟芯片以及音调发生器。
根据方向位(r/w)状态的不同,i2c总线上存在以下两种类型的数据传输:
⑴从主发送器向从接收器发送数据。
主机发送得第一个字节是从机地址,接下来是数据字节流。从机每接收到一个字节返回一个应答位。
⑵从发送器向主接收器发送数据。
第一个字节(从地址)从主机发送。从机返回一个应答位。接下来从机向主机发送数据字节。主机每接收一个字节返回一个应答位。接收完最后一个字节,主机返回一个“非应答位”。主器件产生所有串行时钟脉冲和起始以及停止条件。出现停止条件或重复的起始条件时传输结束。由于重复的起始条件同时是下一个串行发送的开始,因此i2c总线不会被释放。
lpc2124的i2c是字节方式的i2c接口,只要把一字节数据写入i2c数据寄存器i2dat后,即可由i2c接口自动完成所有的数据位发送。它有4种操作模式:主发送器模式、主接收器模式、从发送器模式和从接收器模式。
⑴主发送器模式
该模式中,数据从主机发送到从机。在进入主发送器模式之前,i2conset(i2c控制置位寄存器)必须按如下设置进行初始化:
i2conset --- i2en sta sto si aa --- ---
-- 1 0 0 0 0 -- --
说明如下:
i2en=1,使能i2c接口;
aa=0,不产生应答信号,即不允许进入从机模式;
si=0,i2c中断标志为0;
sto=0,停止标志为0;
sta=0,起始标志为0。
在该模式下,数据方向位(r/w)应为0表示执行写操作。因此第一个发送的字节为从地址(7位)和写方向位。数据的发送每次为8位,每发送完一字节,都接收到一个由从机返回的应答位。该模式的数据发送操作步骤如下:
① 通过软件置位sta,进入i2c主发送器模式,i2c逻辑在总线空闲后立即发送一个起始条件。
② 当发送完起始条件后,si位置位。此时i2stat(状态寄存器)中的状态代码为08h,该状态代码用于中断服务程序的处理。
③ 把从地址和写方向位装入i2dat(数据寄存器),然后清零si位(向i2conclr寄存器中得sic位写入1可清零si),开始发送从地址和写方向位。
④ 当从地址和写方向位已发送且接收到应答位后,si位再次置位(可能的状态代码为18h,20h或38h)。
⑤ 当状态码为18h时,表明从机已应答,则可以将数据装入i2dat,然后清零si位,开始发送数据。
⑥ 当正确发送数据,si位再次置位(可能的状态码为28h,30h)。此时可以再次发送数据或者置位sto结束总线。
⑵主接收器模式
在该模式下,主机所接收的数据字节来自从发送器,数据方向位应该为1表示执行读操作。该模式的数据接收操作步骤如下:
① 通过软件置位sta,进入i2c主发送器模式,i2c逻辑在总线空闲后立即发送一个起始条件。
② 当发送完起始条件后,si位置位。此时i2stat(状态寄存器)中的状态代码为08h,该状态代码用于中断服务程序的处理。
③ 把从地址和读方向位装入i2dat(数据寄存器),然后清零si位,开始发送从地址和读方向位。
④ 当从地址和读方向位已发送且接收到应答位后,si位再次置位(可能的状态代码为38h,40h或48h)。
⑤ 当状态码为40h时,表明从机已应答。设置aa位,用来控制接收到数据后是产生应答信号还是产生非应答信号,然后清零si位,开始接收数据。
⑥ 当正确接收到一个字节数据后,si位再次置位(可能的状态码为50h或58h)。此时可以再次接收数据或者置位sto结束总线。
⑶从接收器模式
当配置为i2c从机时,i2c主机可以对它进行读、写操作。要初始化为从机用户必须将从地址写入i2adr(从地址寄存器),并按如下配置i2conset:
i2conset --- i2en sta sto si aa --- ---
-- 1 0 0 0 1 -- --
在该模式下,从主发送器接收数据字节。当主机访问从机时,接收主机发送过来的数据,并产生应答信号。数据方向位应该为0表示写操作。该模式的数据接收操作步骤如下:
① 将从地址写入i2adr并配置i2conset完成初始化。等待它被自身的从地址或通用地址寻址。
② 在接收到地址和方向位后,si位置位并可从i2stat中读出有效的状态代码。
③ 根据状态代码执行相应的操作。
⑷从发送器模式
当主机访问从机时,向主机发送数据,并等待主机的应答信号。数据方向位应该为1表示读操作。使用该模式时,用户程序只需根据各种状态码作出相应的操作。
i2c时钟由scl占空比寄存器控制(i2sclh、i2scll),分别设置scl的高电平和低电平时间,获得合适的总线时钟频率。寄存器i2conset则用来控制i2c总线的模式及总线操作,其位si为i2c中断标志位,所有总线操作都要依赖于这一标志;同时它又钳住总线,使总线的数据发送/接收得以同步控制。寄存器i2conclr则为对应的清零寄存器;i2stat为i2c状态寄存器,用于指示总线处于哪种状态,以方便控制操作。i2dat为i2c总线数据寄存器,包含要发送的数据或刚收到的数据。当系统作为从机时,i2adr从机地址寄存器有效。当总线对此地址进行访问时,将会产生i2c中断。
i2c主机基本操作方法:
①设置i2c引脚连接;
②设置i2c时钟速率(i2sclh、i2scll);
③设置为主机,并发送起始信号(i2conset的i2en、sta位为1,aa位为0);
④发送从机地址(i2dat),控制i2conset发送;
⑤判断总线状态(i2stat),进行数据传输控制;
⑥发送结束信号(i2conset)。
i2c从机基本操作方法:
①设置i2c引脚连接;
②设置自身的从机地址(i2adr);
③使能i2c(i2conset的i2en、aa位为1);
④判断si位或者等待i2c中断,等待主机操作;
⑤判断总线状态i2stat,进行数据传输控制。

中兴通讯发布新数字化运营平台VMAX Apple发布全新电脑和显示产品
徕芬吹风机怎么样?徕芬吹风机拆解 搭载峰岹FU6812/61系列芯片 给秀发做“SPA”
NLP的经典任务——句法(Syntactic)分析
NTC热电阻温度传感器,5种电阻选型注意事项
分屏操作的iphone难道是iphone8的黑科技
LPC2124开发板I2C总线接口的应用
关于GPS放射源旋转角度解释及源抽样测试的程序分享
欧盟正式签署万亿半导体发展计划
CDMA直放站工程设计中的问题分析
不了解这三项拍照功能,你的OPPO R9s就白买了
关于DRAM的性能分析和发展
指纹读取器的电力规格/支持的操作系统
授权超过500项,人工智能的发展将进入中国时间
如何制作电子纺织品
中国制造商小米推出了针对性价比市场的新型耳机
教育网成国内规模最大IPv6主干网
红米note4x评测:红米4X明日开卖,售价699!红米note4X 999何去何从?
慷宝机器人和地产合作销售年底前将进入100万个家庭
小指示灯改作音响电器的保鲜器
高压电缆为何会发生故障,其中的原因有哪些