UBOOT下I2C调试命令使用

本文介绍了如何在UBoot环境下使用I2C调试命令进行读写操作。通过`i2c md`和`i2c mw`命令分别进行读取和写入外设芯片的寄存器,同时提供了`i2c_read`函数的用法示例,展示了如何读取指定地址的数据并进行解析显示。

UBOOT下I2C调试命令使用:

读i2c外设


            举例:读取i2c地址为0x20的外设芯片,从第0个寄存器开始读,共读16个寄存器。


                 u-boot> i2c md 0x20  0  16


                    md    ---- i2c 读


      0x20 ---- i2c外设的地址,每个i2c外设都有一个独立的地址,一般是外设芯片出厂时就已经定好。


         0   ----  从外设芯片的第0号寄存器开始读


      16   ---- 总共读16个寄存器


写i2c外设


              举例:写i2c地址为0x20的外设芯片,写它的第01号寄存器,将它第01号寄存器的值写为0x12。


               u-boot> i2c mw 0x20  01  0x12


                   mw     ----  i2c 写


      0x20  ----  i2c外设的地址,每个i2c外设都有一个独立的地址,一般是外设芯片出厂时就已经定好。


         01  ----  写外设芯片的第01号寄存器


    0x12  ---- 将它的值写为0x12

int i2c_read(u_int8_t chip, //芯片的i2c地址,不包含读写位
u_int32_t addr, //芯片内的读写地址,比如寄存器地址
int alen, //这个要看代码才知道是地址的长度。比如有的flash比较大就有16位地址。
              //uboot支持32位地址,不过要看驱动支不支持。0=8bit,1=16bit,2=32bit地址长度
u_int8_t *buf, //数据
int len)            //数据长度

  i2c_set_bus_num(2);
        i2c_read(0x50,0,1,&eeprom_data,8);
        printf("eeprom data:0x%x-0x%x",eeprom_data[2],eeprom_data[3]);
        data_l = *(u32*)(&eeprom_data[4]);
        data_h = *(u32*)(&eeprom_data[0]);
        printf("eeprom data:0x%x-0x%x",data_h,data_l);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值