芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
米尔i.MX6UL/i.MX6ULL开发板测评驱动IIC存储
原创 发布时间:2024/06/03 20:21
版块:
米尔
简介:IIC驱动存储芯片

 IIC(inter-integrated Circuit集成电路总线)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它需要两根信号线来完成信息交换。IIC的一个特殊工艺优势是微控制器只需要两个通用I/O引脚和软件即可控制芯片网络。IIC最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100Khz、7-bit标准地址,1992年,IIC的第一个公共规范发行,增加了400Khz的快速模式以及10bit地址扩展。

2:打开随机配置的例程:

3:主要代码“#define I2C_RETRIES 0x0701

#define I2C_TIMEOUT 0x0702

#define I2C_RDWR 0x0707


 

// not include READ/WRITE bit

#define I2C_ADDR 0x50


 

struct i2c_msg

{

    unsigned short addr;

    unsigned short flags;

#define I2C_M_TEN 0x0010

#define I2C_M_RD 0x0001

    unsigned short len;

    unsigned char *buf;

};

struct i2c_rdwr_ioctl_data

{

    struct i2c_msg *msgs;

    int nmsgs;

};


 

int main(int argc, char** argv){

    int fd,ret;

    char buf[100];

    struct i2c_rdwr_ioctl_data e2prom_data;


 

    //disable WP

    //system("echo 103 > /sys/class/gpio/export");

    //system("echo \"out\" > /sys/class/gpio/gpio103/direction");

    //system("echo 0 > /sys/class/gpio/gpio103/value");


 

    fd = open(argv[1],O_RDWR);


 

    if(fd<0){

        perror("open error");

    }


 

    e2prom_data.nmsgs=2;


 

    e2prom_data.msgs=(struct i2c_msg*)malloc(e2prom_data.nmsgs*sizeof(struct i2c_msg));

    if(!e2prom_data.msgs)

    {

        perror("malloc error");

        exit(1);

    }

    ioctl(fd,I2C_TIMEOUT,1);

    ioctl(fd,I2C_RETRIES,2);

    /* write data to e2prom */

    e2prom_data.nmsgs=1;

    (e2prom_data.msgs[0]).len = 6;

    (e2prom_data.msgs[0]).addr = I2C_ADDR;

    (e2prom_data.msgs[0]).flags = 0; //write

    (e2prom_data.msgs[0]).buf = (unsigned char*)malloc(6);

    (e2prom_data.msgs[0]).buf[0] = 0x00;// e2prom addr[15:8]

    (e2prom_data.msgs[0]).buf[1] = 0x00;//e2prom addr[7:0]

    (e2prom_data.msgs[0]).buf[2] = 0x55;//the data to write byte0

    (e2prom_data.msgs[0]).buf[3] = 0x66;//the data to write byte1

    (e2prom_data.msgs[0]).buf[4] = 0x77;//the data to write byte2

    (e2prom_data.msgs[0]).buf[5] = 0x88;//the data to write byte2


 

    ret=ioctl(fd,I2C_RDWR,(unsigned long)&e2prom_data);

    if(ret<0)

    {

        perror("ioctl error1");

    }

    sleep(1);

   

    /* read data from e2prom */

    e2prom_data.nmsgs=2;

    (e2prom_data.msgs[0]).len=2;

    (e2prom_data.msgs[0]).addr=I2C_ADDR;

    (e2prom_data.msgs[0]).flags=0;

    (e2prom_data.msgs[0]).buf=(unsigned char*)malloc(2);

    (e2prom_data.msgs[0]).buf[0]=0x00;// e2prom addr[15:8]

    (e2prom_data.msgs[0]).buf[1]=0x00;//e2prom addr[7:0]


 

    (e2prom_data.msgs[1]).len=6;

    (e2prom_data.msgs[1]).addr=I2C_ADDR;

    (e2prom_data.msgs[1]).flags=I2C_M_RD;

    (e2prom_data.msgs[1]).buf=(unsigned char*)malloc(6);

    (e2prom_data.msgs[1]).buf[0]=0;

    (e2prom_data.msgs[1]).buf[1]=0;

    (e2prom_data.msgs[1]).buf[2]=0;

    (e2prom_data.msgs[1]).buf[3]=0;

    (e2prom_data.msgs[1]).buf[4]=0;

    (e2prom_data.msgs[1]).buf[5]=0;


 

        ret=ioctl(fd,I2C_RDWR,(unsigned long)&e2prom_data);

    if(ret<0)

    {

        perror("ioctl error2");

    }

    printf("Read back:0x%02X\n\r",(e2prom_data.msgs[1]).buf[0]);

    printf("Read back:0x%02X\n\r",(e2prom_data.msgs[1]).buf[1]);

    printf("Read back:0x%02X\n\r",(e2prom_data.msgs[1]).buf[2]);

    printf("Read back:0x%02X\n\r",(e2prom_data.msgs[1]).buf[3]);


 

    close(fd);

    //system("echo 103 > /sys/class/gpio/unexport");


 

    return 0;

}

开发板测评
2024/06/03 20:21
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
聪聪哥哥
最新帖子
LDO串联或并联二极管有什么用?电路保护与特殊应用解析缝纫机伺服0.3秒启停稳如磐石:三招驯服“针位漂移”顽疾伺服电机过载预警:从电流纹波揪出轴承暗伤的猎杀方案芯片丝印反查求助树莓派pico 2测评 - 串口
热门版块
查看更多
电子元器件
问型号
问技术
问行情
专家问答
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计

103

收藏

分享

微信扫码
分享给好友

评论