微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > I2C总线驱动在嵌入式系统中的两种实现

I2C总线驱动在嵌入式系统中的两种实现

时间:04-09 来源:互联网 点击:

态,当配置为输出模式时,写每一位对应输出状态。位[17:O]对应于18个I/0引脚P17~P0。

下面用GPIO的pin[O][1]脚进行I2C模拟,其中低位为SDA,高位为SCL。首先给出一些便于操作的宏定义:


3.3 应用实例

为ARM外挂PCF8563实现实时时钟控制。PCF8563是PHILIPS公司生产的具有I2C接口的低功耗CM()S实时时钟/日历芯片。其最大总线速度为400kb/s,每次读写数据后,其内嵌的字地址寄存器器会自动产生增量。下面用模拟实现PCF8563的I2C实时时钟芯片的操作,有字节写/读两种状态,程序中从地址的读地址为0A3H,写地址为0A2H。

首先使能I2C总线,然后对I2C总线进行开始操作,就绪之后,依次写人器件地址(即0xA2),写入寄存器地址,再写人所设寄存器值。控制/状态寄存器1为0,控制/状态寄存器2为0,秒寄存器为30,分钟寄存器45,小时寄存器为17,日寄存器为20,星期寄存器为0,月/世纪寄存器为88,年寄存器为6(即2006年8月20日17点45分30秒)。当程序运行一段时间(15分钟)后,依次读取寄存器,得到时间为2006年8月20日18点OO分30秒。

4 总 结

本文给出了两种I2C驱动的实现方法。前者直接利用主机端自带的I2C总线控制器,通过配置一系列特殊寄存器实现I2C总线传输。这种方式适用于一些本身包含I2C总线控制器的芯片,实现起来简单方便。后者则适用于主机端没有I2C控制器的情况。此时主机端只要有GPIO端口,就可利用其实现同样的功能。在基于ARM加μClinux的嵌入式视频监控产品中,同时将这两种方法做了具体的运用。其一的示例就是通过模拟的I2C总线,挂接PCF8563实时时钟芯片,并取得很好的实时效果。

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

网站地图

Top