微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于ARM的I2C设备控制方法的研究与实现

基于ARM的I2C设备控制方法的研究与实现

时间:11-04 来源:互联网 点击:
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设备提供了可以借鉴的方法。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top