综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章嵌入式系统正文
 
基于S3C44B0X的I2C总线设计
发布日期:2006-08-08 作者:梁建华 肖伸平 来源:微计算机信息

摘  要  文章介绍了S3C44B0X的I2C总线接口,与EEPROM的连接方法。重点分析了I2C总线的配置方法,主器件模式下发送数据和接收数据的软件设计,提供了I2C中断处理的源程序。
关键词  I2C总线  S3C44B0X  EEPROM

1 概述

I2C总线是一种双向两线制串行总线,由一条串行时钟线SCL和一条串行数据线SDA组成,在由CPU为核心的系统中,作为总线用于CPU与其他被控芯片间的信息传递。在同一组I2C总线上,可以挂接多个CPU及被控芯片,CPU既可以作为主器件,控制I2C总线的工作模式,也可以作为从器件,在其他CPU的控制下发送或接收数据。I2C总线控制技术能大大简化硬件设计,增加控制功能,因此在数字电视机、DVD机、手机等较复杂的电子设备中,得到广泛的应用。

2 S3C44B0X中的I2C总线接口

S3C44B0X是三星公司生产的采用ARM7TDMI内核的32位嵌入式处理器,内部集成了I2C总线接口模块,可以作为主器件或从器件直接挂接在I2C总线上。与I2C总线接口有关的专用寄存器有以下四个[1]

2.1 I2C总线控制寄存器——IICCON

IICCON寄存器主要用来设置应答信号使能及发送时钟频率等,初始状态值为00000000B,他各位的功能如表1。

2.2 I2C状态寄存器——IICSTAT

IICSTAT寄存器主要用来设置I2C总线的工作模式及工作状态控制,初始状态下为00000000B,各位的功能定义如表2。

2.3 I2C总线地址寄存器——IICADD

当CPU工作在从器件工作模式下时,IICADD用来存放CPU的7位从器件地址。

2.4 I2C总线发送/接收数据移位寄存器——IICDS

CPU用来发送数据时,用于存放需要发送出去的一个字节数据。当CPU用来接收数据时,用于暂存从SDA线接收到的一个字节数据。

功能

功能描述

7~6

I2C工作模式选择

00:从接收模式;01:从发送模式

10:主接收模式;11:主发送模式

5

忙状态/起始/停止条件

0:读出为0,表示总线不忙;写入

为0,产生停止条件

1:读出为1,表示总线忙;写入

为1,产生起始条件

4

数据输出使能

0:禁止输出;1:使能输出

3

仲裁状态位

0:总线仲裁成功;1:总线仲裁失败

2

从地址状态标志位

0:检测到起始或停止条件时,置0

1:接收到的从器件地址与保存在

IICADD中的地址相符,置1

1

0地址状态标志位

0:检测到起始或停止条件时,置0

1:接收到从器件地址为0时,置1

0

应答位状态标志

0/1:应答信号接收到了/没接收到

表1:IICCON寄存器的位功能定义                 表2:IICSTAT寄存器的位功能定义

功能

功能描述

 7

应答使能

0:禁止应答信号的产生

1:使能应答信号的产生

6

输出时钟源选择

0:IICCLK=fMCLK/16

1: IICCLK=fMCLK/512

5

发送/接收中断控制

0:禁止中断

1:使能中断

4

中断标志位

0:读出为0,没发生中断;

写入为0,消除标志位并恢

复中断响应

1:读出为1,产生了中断

3~0

发送时钟频率值

时钟频率

=IICCLK/(IICCON3~0+1)

 

 

 

3 与串行EEPROM的I2C总线配置

FM24C16是容量为2048×8bit的非易失性串行EEPROM,在高档彩电、录像机中应用较广泛,作为从器件通过I2C总线与CPU连接,从地址为1010XXXB,XXX是其页面地址,存储空间共分为8页,页面地址从000到111,每页容量258×8bit。图1是FM24C16与S3C44B0X的硬件连接。WP引脚为写保护输入端。WP=1时,只允许读数据;WP=0时,允许读/写数据。

3.1 EEPROM的器件寻址

主器件在需要传输数据时,首先产生起始条件,然后向FM24C16发送一个控制字节。控制字节包含一个4位的控制代码1010B和3个块选择位B2B1B0[2],主器件利用块选择位来指定对FM24C16中的8个页面的哪个页面进行操作。控制字节的最后一位定义了这次数据传输是写操作(为0)还是读操作(为1)。控制字节的构成见图2。

3.2 I2C接口的配置

S3C44B0X的PF0和PF1口工作在第二功能模式下,分别作为I2C总线的SCL线和SDA线。因此,需将PF0和PF1设置在第二功能模式下,程序语句为:

rPCONF∣= 0xa;   ∥PF0:IICSCL,PF1:IICSDA

rPUPF∣= 0x3;    ∥禁止内部上拉

由于S3C44B0X是采用中断方式来检测每个字节的传送是否成功,因此需要定义中断处理程序,并且使能中断。设中断处理程序入口地址为IIC_Int,则程序语句为:

pISR_IIC=(unsigned)IIC_Int;      ∥将I2C中断处理程序指针指向IIC_Int

rINTMSK=~(BIT_GLOBAL∣BIT_IIC); ∥使能中断

对IICCON寄存器进行设置,要求使能ACK信号的产生,输出时钟源IICCLK选择MCLK/16,使能发送/接收中断,清除中断标志位以便响应中断,发送时钟频率选择250KHZ(64MHZ/16/16),程序语句为:

rIICCON∣= 0xaf;

3.3 程序设计

3.3.1  S3C44B0X作为主器件向FM24C16发送数据的程序流程见图3。

 

3.3.2  S3C44B0X作为主器件从FM24C16中读取数据的程序流程见图4。

3.3.3  S3C44B0X的I2C中断处理子程序:

viod_irq IIC_Int(viod)

{

  U32 iicSt,i;

  rI_ISPC=BIT_IIC

  iicSt=rIICSTAT

  if(iicSt&0x8){}

  if(iicSt&0x4){}

  if(iicSt&0x2){}

  if(iicSt&0x1){}

  switch(_iicMode)

  {

    case POLLACK:

      _iicStatus=iicSt;

      break;

    case RDDATA:

      if((_iicDataCount --)==0)

      {

        _iicData[_iicPt++]=rIICDS;

        rIICSTAT=0x90;

        rIICCON=0xaf;

        Delay(1);

          break;

      }

      _iicData[_iicPt++]=rIICDS;

      if((_iicDataCount)==0)

      rIICCON=0x2f;

      else

      rIICCON=0xaf;

      break;

    case WRDATA:

      if((_iicDataCount--)==0)

      {

        rIICSTAT=0xd0;

        rIICCON=0xaf;

        Delay(1);

        break;

      }

      rIICDS=_iicData[_iicPt++];

      for(i=0;i<10;i++);

      rIICCON=0xaf;

      break;

    case SETRDADDR;

      //Uart_Printf("[S%d]",_iicDataCount);

      if((_iicDataCount--)==0)

      {

         break;

      }

      rIICDS=_iicData[_iicPt++];

      for(i=0;i<10;i++);

      rIICCON=0xaf;

      break;

    default;

      break;

  }

}

4 结论

通过多年来的电视机维修实践发现,当电视机内的EEPROM芯片发生故障时,往往无从下手。而采用本设计方案,可以便捷地观察其内部数据结构,从而发现故障的原因,还可以对被破坏了的数据进行修复。对于新更换的EEPROM芯片,也可以利用该设计方案从新固化数据。实践表明,在发送时钟频率为250KHZ时,通过约2米的普通线将彩电的EEPROM芯片在线与Create-ARM44B0X嵌入式教学开发平台相连,数据传送的正确率达100%,且抗干扰能力很强。

 

参  考  文  献

1、  http://www.samsung.com

2、  季宏锋等.I2C总线技术及应用实例. 自动化与仪表,2002,04


 


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
基于嵌入式S3C44B0X家用抄表智能系统的设计 (10-20)
血流检测仪的动态电源管理模块设计 (11-11)
μC/OS-Ⅱ在S3C44B0X上的移植 (09-07)
S3C44B0X微处理器在汽车防抱死控制系统中的应用 (06-23)
ARM CPU S3C44B0X与C54X DSP的接口设计 (01-03)
基于S3C44B0X的PDA核心设计 (04-18)
基于ARM的嵌入式MPEG-4远程网络监控系统的设计与实现 (02-28)
基于S3C44B0X微处理器税控收款机系统的设计 (06-15)
基于S3C44B0X的Microwindows在远程红外抄表器中的应用 (12-20)
基于S3C44B0X的心电血压监测仪USB接口设计 (12-26)
基于S3C44B0X的大型LED显示系统设计 (09-12)
Microwindows在基于S3C44B0X的嵌入式系统中的移植 (07-19)
嵌入式图形用户界面在S3C44B0X上的移植 (07-03)
基于S3C44B0X的嵌入式Socket通信设计 (01-17)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号