1 引 言
I2C总线是由Philips公司开发的2线式串行总线,因为其简略、高效、互联本钱小而被广泛地用于微操控器与外围设备的衔接。AT91SAM7X256是Atmel公司于2005年推出的根据ARM7的工业级芯片,他以体积小、功耗低、衔接办法广泛、处理资源丰富、操控灵敏等特色遭到嵌入式范畴开发人员的注重。本文介绍AT91SAM7X256的I2C操控器TWI接口(two-wired interface)的运用办法,并以I2C设备E2PROM和日历时钟芯片为例,完结AT91SAM7X256对时刻数据的读取与存储。一起,为了验证时刻数据的读取与存储是否正确,运用AT91SAM7X256的在线仿真器J-LINK将E2PROM中的数据读至内存进行检查。
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)因为数据量和开端单元均是随机的,所以有或许呈现一页写不下的状况,因而针对给定的数据量和开端单元参数需求计算出共需几页,以便在进行页面切换时替换设备地址。
本文规划编写了如下读函数和写函数。
其间,nb为读/写的字节数,data表明寄存读写数据数组变量的首指针。
3.4 软件的调试与运转
本文选用IAR开发环境和J-LINK仿真器进行软件的在线调试和加载运转。调用函数完结以下程序规划:首要从PCF8563接连读出若干数据并写入AT24C08;其次,将AT24C08中的数据读至数组变量中。在程序中的读完AT24C08数据后设置断点,观测数组中寄存的数据,然后验证驱动程序的正确性。
4 结 语
本文介绍了PCF8563和AT24C08的运用办法,经过剖析根据ARM核的AT91SAM7X256的TWI接口操控办法,规划PCF8563和AT24C08的驱动程序,完结时钟数据的读取和存储。
本文规划的驱动模块已成功地用于智能煤矿分站试验体系中,完结了前史时刻数据的记载功用,一起本文为ARM操控多个I2C设备供给了能够学习的办法。