I2C总线EEPROM实现

发布者:CrystalBreeze最新更新时间:2018-07-15 来源: eefocus关键字:I2C总线  EEPROM 手机看文章 扫描二维码
随时随地手机看文章

开发板是fl2440板子。。跑的Linux3.0内核

这里的EEPROM只是初步的实现。。并没有具体的分析函数。。以后会具体的分析。。

1.修改内核

改make menuconfig

    Device Drivers  --->

<*> I2C support  ---> 

--- I2C support                                                                                                    
                                            [*]   Enable compatibility bits for old user-space                                                                
                                            <*>   I2C device interface                                                                                        
                                            < >   I2C bus multiplexing support                                                                                
                                             [ ]   Autoselect pertinent helper modules                                                                 
                                            <*>     SMBus-specific protocols                                                                                  
                                                  I2C Algorithms  --->                                                                                     
                                                  I2C Hardware Bus support  --->                                                                           
                                            [ ]   I2C Core debugging messages                                                                              
                                            [ ]   I2C Algorithm debugging messages                                                                        

                                            [ ]   I2C Bus debugging messages

[*] Misc devices  --->

       EEPROM support  --->


                                            <*> I2C EEPROMs from most vendors                                                                           
                                            <*> SPI EEPROMs from most vendors                                                                          
                                            Old I2C EEPROM reader                                                                                     
                                            < > Maxim MAX6874/5 power supply supervisor                                                                      
                                           <*> EEPROM 93CX6 support   


2.改arch/arm/mach-s3c2440/mach-smdk2440.c  

添加

 /*add 24c02 device*/
 static struct at24_platform_data at24c02 = {
     .byte_len = SZ_2K / 8,
      .page_size = 8,
     .flags = 0,
  };
 
 static struct i2c_board_info __initdata smdk_i2c_devices[] = {
      {
          I2C_BOARD_INFO("24c02", 0x50),
        .platform_data = &at24c02,
      },
  };

  /* add 24c02 end */

并在smdk2440_machine_init中添加

i2c_register_board_info(0, smdk_i2c_devices, ARRAY_SIZE(smdk_i2c_devices));

这样从新编译内核就可以实现eeprom了。。该文件在/sys/devices/platform/s3c2440-i2c/i2c-0/0-0050/eeprom

下面给出一个应用程序。。

#include
#include
#include
#include
#include
#include
#include

int main (int argc, char **argv[])
{
    int fd;
    int i;
int ret;
    char read_data[256];

    fd = open("/sys/devices/platform/s3c2440-i2c/i2c-0/0-0050/eeprom", O_RDWR);
    if(fd < 0)
    {
        printf ("open 24c02 fail\n");
        return -1;
    }
    
    lseek(fd, 0, SEEK_SET);  //point the head of eeprom

    ret = read(fd, read_data, 256);
    if(ret < 0)
    {
        printf("read error\n");
        return -1;
    }
    else if(ret < 256)
    {
        perror("incomplete read\n");
        printf("%d\n", ret);
        return -1;
    }

    for(i = 0; i < 256; i++)
    {
        if(i % 16 == 0)
        {
            printf("\n");
        }
        printf("%03d ", read_data[i]);
    }

    printf("\n");

    return 0;
}

这样在我们的开发板上就可以运行出来了。。


关键字:I2C总线  EEPROM 引用地址:I2C总线EEPROM实现

上一篇:I2C串行总线协议
下一篇:I2C通信之EEPROM

推荐阅读最新更新时间:2024-03-16 16:08

基于DSP与CPLD的I2C总线接口的设计与实现
带有I2C总线接口的器件可以十分方便地将一个或多个单片机及外围器件组成单片机系统。尽管这种总线结构没有并行总线那样大的吞吐能力,但由于连接线和连接引脚少,因此其构成的系统价格低、器件间总线连接简单、结构紧凑,而且在总线上增加器件不影响系统的正常工作,系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,也能很方便地确定总线的时钟。 如今,为了提高系统的数据处理精度和处理速度,在家用电器、通讯设备及各类电子产品中已广泛应用DSP芯片。但大多数的尚未提供I2C总线接口,本文将介绍一种基于CPLD的已实现的高速DSP的I2C总线接口方案。 1 I2C通信协议 I2C总线是一种用于IC器件之间的二线制总线。它通过SDA(串行
[嵌入式]
出租车计价器设计与实现
1 系统硬件组成 总体结构如图一所示。硬件上主要由HT46RU24单片机, 霍尔传感器 ,空载开关,键盘电路,数据存储电路,时钟电路,显示电路,蜂鸣器,IC卡电路以及串口电路组成。 1.1 HT46RU24单片机。 HT46RU24单片机是HOLTEK公司研制的一种低功耗,高性能的8位单片机。它的ROM为8k*16、RAM为384 bytes,最多有40个双向IO口。除此之外它还具有8通道12位分辨率的A/D转换,A/D转换可用来监测外部 模拟 信号,如侦测 电池 电压、电流、温度、湿度、压力、明暗度等。提供两种模式的 PWM 输出可应用于控温、调速、定电压、定电流等。可控的PFD输出用于发声,或是红外
[嵌入式]
AVR IAR EEPROM 读写
IAR中关键字及其用法: __eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放 __tinyflash, __flash, __farflash, __hugeflash 用于flash 存储空间控制数据存放 __ext_io, __io 用于I/O存储空间, 控制数据存放,控制指针类型和存放 __regvar 放置一个变量在工作寄存器中 @ 用于变量的绝对地址定位。也可以用#pragma location 命令 #pragma vector 提供中断函数的入口地址 __root 保证没有使用的函数或者变量也能够包含在目标代码中 __no_init 禁止系统
[单片机]
MCS-51单片机与二线制串行E2PROM的接口方法
二线制串行E2PROM是一种非易失存储器,以其体积小、功耗低、操作灵活、性价比高、存储数据可靠等诸多优点,是单片机应用系统中非易失存储器的理想选择。但二线制串行E2PROM的操作采用I2C总线协议,而MCS-51系列单片机没有I2C接口,我们在研制“GLM-500测湿仪”时,利用MCS-51单片机的两条I/O线,通过软件产生I2C总线所要求的操作时序,可方便地实现MCS-51对二线制串行E2PROM的读写操作。 1 二线制串行E2PROM的引脚功能及基本操作时序 图1是二线制串行E2PROM 24C01/02/04/08/16的引脚排列图。 仅SCL和SDA端为基本的总线操作端;SCL是串行时钟输入端;SDA是串行
[单片机]
MCS-51单片机与二线制串行E2PROM的接口方法
AT93C46/56/57/66 EEPROM 芯片通用读写程序
AT93C46/56/57/66 EEPROM 芯片通用读写程序 ; 模块包含: READ(读), WRITE(写), WRAL(片写), ERASE(擦除), ERAL(片擦除), ; EWEN(擦写允许), EWDS(擦写禁止). ; 此模块适用于: AT93C46/56/57/66 EEPROM 芯片, 8位(ORG=0)或16位(ORG=1)的读、写、 ; 擦除等操作。 ; 8位或16操作,只需置标志位SIZE为 0 或为 1 和设置NADDR的位即可,非常方便实用。 ; 93C46 93C56 93C57 93C66 ;-------------------------------------
[单片机]
I2C总线协议详解
I2C总线定义 --------------------------------------------------------------------------------       I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。   I2C总线特点
[嵌入式]
ST9+系列单片机I2C总线驱动程序实现
串行扩展总线技术是新一代单片机技术发展的一个显著特点,其中Philips公司推出的I2C总线最为著名。I2C总线最显著的特点是规范的完整性、结构的独立性和用户使用时的简单化。 I2C总线有严格的规范,如接口的电气特性、信号时序、信号传输的定义、总线状态设置、总线管理规则及总线状态处理等。与并行扩展总线相比,串行扩展总线有突出的优点:电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等。      目前I2C总线技术已为许多著名公司所采用,并广泛应用于视频、音频系统中。推广I2C总线技术将有助于提高我国单片机应用开发水平。意法半导体公司(SGS-THOMSON)是全球十大半导体制造商之一,其领先单片机产品ST9
[单片机]
ST9+系列单片机<font color='red'>I2C总线</font>驱动程序实现
I2C总线控制的TV显示处理器TDA9332H及其应用
1 TDA9332H的主要特点   TDA9332H是飞利浦公司为高档彩电设计的显示处理器。它采用44脚QFP封装形式,图1所示是其引脚排列图。此外,该芯片还有以下特点:   ●具有YUV输入端和带快速消隐的RGB信号输入端,它的OSD/Text输入端与其它视频信号输入端分开,而且既有快速消隐功能又可混合插入;同时内设RGB控制处理器,能实施连续阴极校正(CCC)、白点和黑电平偏移调整;可提供黑电流稳定的RGB输出;可有效解决因使用时间过长而引起的CRT显示图像偏色和对比度下降等缺陷。   ●能产生内部时钟的可编程偏转处理器,这些驱动信号包括行驱动、场偏转以及东西校正的抛物波,其电路既能适应4:3显像管,也适应于16:9显像管。
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved