微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > 基于ARM的I2C设备控制方法的实现

基于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设备提供了可以借鉴的方法。

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

网站地图

Top