0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK3399开发板I2C4挂载EEPROM实例

飞凌嵌入式 ? 2022-08-01 15:08 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

?

飞凌嵌入式OK3399-C开发板预留出了I2C4引脚接口,位于P32插针引脚上,分别是I2C4_SCL和I2C4_SDA。小编将通过本篇文章为大家列举和说明如何使用I2C4挂载at24c08(EEPROM)芯片。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

修改结果

1、修改kernel/arch/arm64/boot/dts/rockchip/OK3399.dts,添加修改如下:

?

2、摘除at24c08模块上的上拉电阻,飞线使用1.8V给模块供电,接入I2C4_SCL和I2C4_SDA。

修改思路

我们要添加一个I2C设备的思路为:在设备树中添加描述->在设备树描述中添加对应设备驱动->设备驱动添加到内核

按照思路,首先要在设备树I2C4节点下添加at24c08的设备信息。在kernel/arch/arm64/boot/dts/rockchip/OK3399-C.dts文件,找到I2C4节点如下:

?

目前是disabled的状态,并且没有任何设备信息。添加设备信息如下:

?

如上图,通过设备树告诉内核,I2C4开始使用,并且挂载了一个EEPROM设备,名字叫at24c08@50,其使用的驱动是compatible=“”;

那么我们现在缺少这个驱动,一般的I2C设备所使用的驱动文件对应的I2C厂家会提供,如果厂家说不需要驱动等,其实不是指的真的“不需要”驱动,而是他们的设备是可以使用通用驱动的。

本文中的设备就是这样,与厂家沟通后表示没有驱动文件。那么直接在内核目录下查找eeprom、at24这样的字眼,找找看有没有对应的通用驱动文件。

?

可见有kernel/drivers/misc/eeprom/at24.c文件。

查看其内容是如何匹配使用这个驱动的,正常来说驱动文件中应该预留了.compatible= *** 作为设备树调用该驱动的接口,只要在设备树描述里的compatible与 驱动文件中的.compatible中描述的一致,就会匹配成功了。

但是这个at24.c中并没有.compatible,只有一个at24_ids如下其中有”24c08”:

?

对比同目录的at25.c文件就有.compatible没有ids。

?

ids中描述的也是和.compatible一样,是设备树用来识别匹配使用的,其中的三种识别匹配条件感兴趣的可以深追一下。因与本文无关,不再赘述。所以找到了对应的驱动文件,返回设备树添加描述。

?

现在这样是告诉了内核我要使用I2C4,我的I2C4下有个EEPROM设备,使用的是“24c08”驱动,但是还没有将”24c08”这个文件给到内核,那么接下来的目的就是把驱动编进内核。

在kernel目录下运行makemenuconfig,搜索at24,如下:

?

按下数字1,自动跳转到对应选项,按下y选中,保存退出。

?

因为makemenuconfig修改的是.config文件,而编译脚本中每次都会重新生成.config文件,所以为了让修改生效,修改编译脚本,使其不重新生成.config文件,如下:

?

将生成.config文件的命令注释掉,编译内核,这样就将”24c08”给到内核,也通过设备树告诉内核,I2C4下有个EEPROM设备要用“24c08”。

到此,我们的常规添加设备思路就已经完成了:在设备树中添加描述->设备树描述对应设备驱动->设备驱动添加到内核

接下来就是编译内核,烧写boot镜像到开发板,使用i2ctool的命令进行查看,这里也不赘述i2ctool命令的具体使用方法。使用命令:i2cdetect-l 、i2cdetect-y 4。

?

对应的地址已经被驱动注册,但是没有生成devices下的I2C4设备,说明模块可能没有正常工作,查看模块相关信息。

?

?

?

模块自带I2C4上拉电阻,因为OK3399-C底板上也带有上拉电阻如下图,并且是1.8V上拉,为了电平匹配,不修改底板的状态下,使用1.8V为基准,将模块带有的上拉电阻摘除,使用1.8V配置。

?

再次修改设备树,添加上时钟描述和设备地址描述。

?

编译后,烧写内核,烧写完毕启动开发板。

?

识别到I2C4下的设备,然后进行读写测试即可,如下命令:

echo"hello my world" > /sys/bus/i2c/devices/1-0050/eeprom

cat/sys/bus/i2c/devices/4-0050/eeprom

?

至此一个新的I2C EEPROM设备添加成功,对I2C设备的读写操作也可以通过开发板中带有的i2ctool相关命令操作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9399

    浏览量

    380208
  • 嵌入式
    +关注

    关注

    5161

    文章

    19801

    浏览量

    320057
  • Linux
    +关注

    关注

    88

    文章

    11542

    浏览量

    215007
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于RK3576开发板的PWN使用说明

    RK3576开发板使用PWN教程及Demo
    的头像 发表于 05-07 14:07 ?1459次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的PWN使用说明

    HZ-EVM-RK3399-技术规格说明书

    电子发烧友网站提供《HZ-EVM-RK3399-技术规格说明书.pdf》资料免费下载
    发表于 04-17 17:04 ?0次下载

    一文掌握RK3568开发板Android13挂载Windows共享目录

    在物联网和边缘计算场景中,开发板与PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-17 13:54 ?579次阅读
    一文掌握<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>Android13<b class='flag-5'>挂载</b>Windows共享目录

    RK3568开发板教程:以iTOP-RK3568开发板为例 Android13通过CIFS协议挂载Windows共享目录

    开发板与PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-16 14:08 ?1141次阅读
    <b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>教程:以iTOP-<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>为例 Android13通过CIFS协议<b class='flag-5'>挂载</b>Windows共享目录

    一文掌握RK3568开发板Android13挂载Windows共享目录

    的无缝文件共享。 RK3568开发板优势 iTOP-3568开发板采用瑞芯微RK3568处理器,集成4核arm架构A55处理器和Mali G
    发表于 04-16 13:55

    RK3399处理器:高性能多核异构计算平台

    RK3399是一款高性能的多核异构计算平台,集成了强大的CPU、GPU以及丰富的多媒体和接口功能。其独特的双Cortex-A72+四Cortex-A53大小核CPU结构,使得RK3399在处理复杂
    的头像 发表于 02-08 18:04 ?1896次阅读

    高清电视盒子方案分享,红外遥控适配过程全解析

    高效地控制电视设备。极大的提升了用户体验。 iTOP-RK3399平台介绍 ? ? 红外遥控方案示例 iTOP-RK3399 开发板搭载了HS0038B 红外接收模块。接下来我们在RK3399
    的头像 发表于 12-17 10:46 ?1340次阅读
    高清电视盒子方案分享,红外遥控适配过程全解析

    Linux系统挂载exfat格式U盘教程,触觉智能RK3562开发板演示

    本文介绍Linux系统(Ubuntu/Debian通用)挂载exfat格式U盘的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力
    的头像 发表于 12-10 10:10 ?847次阅读
    Linux系统<b class='flag-5'>挂载</b>exfat格式U盘教程,触觉智能<b class='flag-5'>RK</b>3562<b class='flag-5'>开发板</b>演示

    RK3576单板发布倒计时:RK3399RK3576对比

    AIOT 处理器 RK3576,采用先进制程工艺,大小核构架(4×A72 + 4×A53),高性能低功耗。 二、是对rk3399 芯片 的一次升级替代。 1、
    的头像 发表于 12-03 16:59 ?1496次阅读
    <b class='flag-5'>RK</b>3576单板发布倒计时:<b class='flag-5'>RK3399</b>与<b class='flag-5'>RK</b>3576对比

    【迅为】瑞芯微RK3588开发板RK3568开发板区别及优势

    RK3568开发板
    的头像 发表于 11-18 14:19 ?1641次阅读
    【迅为】瑞芯微<b class='flag-5'>RK</b>3588<b class='flag-5'>开发板</b><b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>区别及优势

    RK3576开发板介绍

    ArmSoM-Sige5 RK3576 开发板 ? ArmSoM-Sige5 采用第二代 8nm 高性能 AIOT 平台 Rockchip RK3576,拥有 6 TOPS 算力 NPU,最高
    的头像 发表于 11-04 10:10 ?924次阅读
    <b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>介绍

    新品体验 | RK3576开发板

    RK3399RK3566、RK3568、RK3588、RK3576等型号的核心与评估
    的头像 发表于 11-01 08:08 ?2095次阅读
    新品体验 | <b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>

    瑞芯微RK3399开发板Android7.1修改网络优先级方法,触觉智能SBC3968开发板演示

    本文介绍Android7.1修改网络优先级方法,基于触觉智能SBC3968主板,搭载瑞芯微RK3399芯片,底板具备千兆网口、USB、HDMI、TYPE-C、音频等接口。可适用于工业主机、物联网设备、医疗健康设备、广告机、互动自助终端、教学实验平台、显示控制、车载安防和人
    的头像 发表于 10-09 11:37 ?701次阅读
    瑞芯微<b class='flag-5'>RK3399</b><b class='flag-5'>开发板</b>Android7.1修改网络优先级方法,触觉智能SBC3968<b class='flag-5'>开发板</b>演示

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板
    的头像 发表于 08-30 14:13 ?1509次阅读
    <b class='flag-5'>RK</b>3588!黑神话悟空,启动?-迅为电子<b class='flag-5'>RK</b>3588<b class='flag-5'>开发板</b>

    HZ-CORE-RK3576开发板

    HZ-CORE-RK3576开发板
    的头像 发表于 08-29 13:58 ?714次阅读
    HZ-CORE-<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>