当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]一种I2C设备控制方法的设计和实现

1 引 言

I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。AT91SAM7X256是Atmel公司于2005年推出的基于ARM7的工业级芯片,他以体积小、功耗低、连接方式广泛、处理资源丰富、控制灵活等特点受到嵌入式领域开发人员的重视。本文介绍AT91SAM7X256的I2C控制器TWI接口(two-wired interface)的使用方法,并以I2C设备E2PROM和日历时钟芯片为例,实现AT91SAM7X256对时间数据的读取与存储。同时,为了验证时间数据的读取与存储是否正确,使用AT91SAM7X256的在线仿真器J-LINK将E2PROM中的数据读至内存进行检查。

ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

2 硬件设计

2.1 硬件模块结构

电路的硬件模块结构如图1所示。

AT91SAM7X256的TWI接口由一根时钟线TWCK和一根数据线TWD组成,产生的信号时序符合I2C总线规范;PCF8563是Philips公司推出的一款内含I2C总线接口功能的工业级时钟芯片;AT24C08是Atmel公司推出的符合I2C规约的两线串口E2PROM.AT91SAM7X256的TWCK和TWD分别与芯片PCF8563和AT24C08的SCL与SDA相连,CPU通过TWI接口将时间数据读出并存储。为了保证CPU不冲突的访问PCF8563和AT24C08,本文将AT24C08的A2管脚接高电平。由于I2C总线空闲时为高电平,所以为实现"线与"功能,总线上连接的设备均是集电极开路的,因此总线需外接上拉电阻R.AT91SAM7X256的TWI有主从2种工作模式,本文中AT91SAM7X256作为控制方,应工作于主模式。

2.2 AT91SAM7X256的TWI接口

AT91SAM7X256的TWD和TWCK管脚与设备的I/O管脚复用,同时AT91SAM7X256采用单独控制功能单元的省电方案,电源管理单元PMC控制各功能单元的时钟是否工作,所以要使用TWI接口,需要首先配置TWD和TWCK为外设连线和开路状态,其次配置PMC使TWI时钟处于工作状态。

TWI接口可提供高达400 kb/s的传输速率,为使得数据的传输速率面向不同应用,可以通过配置时钟脉冲发生器的控制寄存器TWI_CWEG调整TWCK的信号频率。

TWI接口产生的信号时序符合I2C总线规范,当读/写1个字节数据时,主设备需提供从设备的设备地址、内部地址、读写控制以及起始标志和停止标志。在数据的收发过程中,主要使用控制寄存器TWI_CR、主模式寄存器TWI_MMR、内部地址寄存器TWI_IADR、状态寄存器TWI_SR、传输保持寄存器TWI_THR和接收保持寄存器TWI_RHR.从设备地址在TWI_MMR中设置,从设备的内部地址在TWI_IADR中设置;在TWI_CR中设置是否发送起始信号和停止信号;NAK(无应答)、OVER(运行错误)、TXRDY(发送准备好)、RXRDY(接收准备好)、TX-COMP(传输完成)等状态位通过查询WI_SR得到。

写数据的过程包括:当TWI_THR写入数据后,CPU产生起始信号启动传输,TWI_THR中的数据经过并串转换后由TWD传输出去,当CPU收到从设备的应答信号后,TWI_SR的TXRDY将自动置"1",说明数据已写入从设备。读数据的过程包括:CPU发出起始信号后,若TWI_SR的RXRDY位为"1",则说明TWI_RHR中有数据等待接收,当TWI_RHR中的数据被读出后,则RXRDY自动置为"0".当读/写数据完毕后,CPU将产生一个停止信号结束传输,TWI_SR的TXCOMP将自动置"1".

2.3 PCF8563日历时钟芯片的使用方法

按I2C协议规约,PCF8563具有惟一的设备地址0A2H.本文重点研究PCF8563时、分、秒数据的读取方法,在此用到的内部寄存器包括控制/状态寄存器1(地址为00H)、秒寄存器(地址为02H)、分寄存器(地址为03H)、小时寄存器(地址为04H)。由于寄存器中以BCD格式存储时、分、秒数据,所以各时间时间寄存器的高位无效。

为使PCF8563工作于普通模式,需要将控制/状态寄存器1置为00H,同时为了存储正确的时间数据,需要将读到的数据中无效的高位进行屏蔽。若需要校对时间,只需对时、分、秒寄存器进行写操作即可。

2.4 AT24C08的使用方法

AT24C08是容量为8192 b(1024 B)的E2PROM.AT24C08内部分为4页,每一页有256字节单元,所以若要访问某个单元则需要10位进行寻址,其中最高两位是页地址,低8位是页内地址。设备地址的定义如图2所示,其中P1P0对应页地址,管脚A2可为AT24C08设定两组设备地址。当A2为低电平时,4页的设备地址分别为0A0H,0A2H,0A4H,0A6H;当A2为高电平时;反之为0A8H,0AAH,0ACH,0AEH.因此,为了避免AT24C08与PCF8563的设备地址冲突,需将A2连接高电平。

AT24C08的写操作支持"字节写"和"页面写"两种方式。"字节写"方式中每写一个字节均需主设备提供起始信号、设备地址、内部地址以及停止信号;"页面写"方式即连续写数据,需主设备提供起始标志、设备地址以及内部地址,数据全部写完后再发送停止标志。
 
AT24C08的读操作支持"当前地址读"、"随机读"和"顺序读"3种方式。"当前地址读"表示从当前内部地址单元读出1个字节,所以主设备仅需提供起始信号、设备地址和停止信号;"随机读"表示从任意内部地址单元读出1个字节,所以主设备需要先提供1次起始信号、设备地址、写操作、设备内部地址和停止信号,设定设备的内部地址,之后再按"当前地址读"方式读数据即可;"顺序读"表示从当前地址开始连续读多个字节,所以主设备需提供起始信号、设备地址、读操作,数据全部读完后再发送停止信号。
 
为了快速读写数据,本文采用页面写的方式将数据写入AT24C08;采用"随机读"和"顺序读"相结合的方式读取AT24C08数据。
 
3 软件设计
 
3.1 TWI初始化程序的设计
 
根据TWI的功能特点,TWI初始化的初始化包括以下4步:
 
(1)配置PIO控制器使复用管脚驱动TWI信号;
 
(2)配置PMC使TWI时钟处于工作状态;
 
(3)配置TWI为主工作模式。本文CPU为主设备,日历和存储芯片为从设备;
 
(4)设置数据传输速率,配置TWI时钟波形发生器寄存器。
 
3.2 PCF8563驱动程序的设计
 
为了控制PCF8563的工作方式,需要对其写入控制字;为了得到PCF8563输出的时间信息,需要对其进行读操作,读/写数据的流程如图3所示。
 
本文设计编写如下读函数和写函数:

其中,pTwi是结构体指针,指向的结构体中存放TWI的寄存器,通过pTwi即可访问各TWI寄存器;address表示设备地址;im_address表示设备内部地址;data代表读写数据的变量指针。

因此,若使PCF8563工作于普通模式,并读"时"数据,可用以下代码实现:

3.3 AT24C08驱动程序的设计

由于AT24C08由4个具有不同设备地址的页组成,且采用连续读写数据的操作方式,所以AT24C08的读写与PCF8563读写有以下几点区别。
 
 
(1)先设置TWI_CR的起始标志,之后通过TWI_RHR和TWI_THR读/写TWI接口的数据;发送最后一个数据之前,再设置TWI_CR的停止标志。
 
(2)对于多字节数据的读写,全部数据若没有传输完毕,便不发送停止信号,所以需通过判断TWI_SR寄存器中的TXRDY和RXRDY决定是否读TWI_RHR和写TWI_THR,而将是否出现停止信号作为是否停止发送和接收的判断依据。
 
(3)由于数据量和起始单元均是随机的,所以有可能出现一页写不下的情况,因此针对给定的数据量和起始单元参数需要计算出共需几页,以便在进行页面切换时更换设备地址。
 
本文设计编写了如下读函数和写函数。

3.4 软件的调试与运行

本文采用IAR开发环境和J-LINK仿真器进行软件的在线调试和加载运行。调用函数完成以下程序设计:首先从PCF8563连续读出若干数据并写入AT24C08;其次,将AT24C08中的数据读至数组变量中。在程序中的读完AT24C08数据后设置断点,观测数组中存放的数据,从而验证驱动程序的正确性。

4 结 语

本文介绍了PCF8563和AT24C08的使用方法,通过分析基于ARM核的AT91SAM7X256的TWI接口控制方法,设计PCF8563和AT24C08的驱动程序,实现时钟数据的读取和存储。

本文设计的驱动模块已成功地用于智能煤矿分站实验系统中,完成了历史时间数据的记录功能,同时本文为ARM控制多个I2C设备提供了可以借鉴的方法。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭