基于ARM的I2C设备控制方法的实现
时间:06-11
来源:互联网
点击:
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设备提供了可以借鉴的方法。
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设备提供了可以借鉴的方法。
总线 Atmel ARM 嵌入式 仿真 电路 电阻 电源管理 相关文章:
- 一种新型防伪读码器的设计(01-01)
- 基于ARM与DSP的嵌入式运动控制器设计(04-25)
- 基于ARM核的AT75C220及其在指纹识别系统中的应用(05-24)
- 基于nRF2401智能小区无线抄表系统集中器设计(04-30)
- 基于FPGA安全封装的身份认证模型研究(05-27)
- 高精度压力测控系统的试验研究(04-08)