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

    文章

    9588

    浏览量

    393562
  • 嵌入式
    +关注

    关注

    5209

    文章

    20645

    浏览量

    336916
  • Linux
    +关注

    关注

    88

    文章

    11814

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32H573 使能 HSLV 引起 I2C4 失效的案例分析

    某客户使用 STM32H573II 开发一款 PLC 产品时反馈 I2C4 无法通信,在上一款产品中也是使用的 I2C4 接口,通信却是正常的,客户对此感到非常困惑,百思不得其解。进一步对客户进行
    发表于 04-15 15:57 0次下载

    LAT1618_STM32H573 使能 HSLV 引起 I2C4 失效的案例分析

    某客户使用 STM32H573II 开发一款 PLC 产品时反馈 I2C4 无法通信,在上一款产品中也是使用的 I2C4 接口,通信却是正常的,客户对此感到非常困惑,百思不得其解。进一步对客户进行
    发表于 03-11 10:41 0次下载

    RK3576平台PCA9548 I2C开关设备树配置与生效全解析

    嵌入式开发中,单路I2C总线往往无法满足多外设的挂载需求,NXP的PCA9548(8通道I2C Switch)是解决该问题的常用方案,尤其在RK
    的头像 发表于 02-28 11:18 1793次阅读
    <b class='flag-5'>RK</b>3576平台PCA9548 <b class='flag-5'>I2C</b>开关设备树配置与生效全解析

    一文打通Rockchip DP调试:从原理到实战,覆盖RK3399/RK3576/RK3588全平台

    嵌入式开发中,DisplayPort(DP)接口的调试常让工程师头疼 —— 不同芯片特性差异大、Type-C 与标准口配置不同、高分辨率输出异常、MST 多屏适配难… 尤其是 Rockchip RK3399
    的头像 发表于 02-04 16:14 944次阅读
    一文打通Rockchip DP调试:从原理到实战,覆盖<b class='flag-5'>RK3399</b>/<b class='flag-5'>RK</b>3576/<b class='flag-5'>RK</b>3588全平台

    RA MCU众测宝典 | I²C读取EEPROM

    “RAMCU众测宝典”IIC专题继续深耕!上一期我们用【RA-Eco-RA2E1】开发板实现了IIC通信的OLED显示。这次我们把目光转向实用的存储场景——基于【RA-Eco-RA4M2开发
    的头像 发表于 01-13 18:05 8109次阅读
    RA MCU众测宝典 | <b class='flag-5'>I</b>²<b class='flag-5'>C</b>读取<b class='flag-5'>EEPROM</b>

    ElfBoard技术贴|如何在【RK3588】ELF 2开发板实现GPIO功能复用

    RK3588】ELF2开发板的GPIO引脚为例,详细阐述从硬件查找到软件配置的完整流程。1.引脚确认在开始配置之前,首先需要了解【RK3588】ELF
    的头像 发表于 12-29 10:37 1461次阅读
    ElfBoard技术贴|如何在【<b class='flag-5'>RK</b>3588】ELF <b class='flag-5'>2</b><b class='flag-5'>开发板</b>实现GPIO功能复用

    ElfBoard技术贴|如何在【RK3588】ELF 2开发板实现I2C功能复用

    等。由于此项配置的具体实现因SoC平台而异,本文特以【RK3588】ELF 2开发板上的I2C6引脚为例,系统说明从硬件规格查询到软件驱动配置的完整步骤。
    的头像 发表于 12-04 10:10 8312次阅读
    ElfBoard技术贴|如何在【<b class='flag-5'>RK</b>3588】ELF <b class='flag-5'>2</b><b class='flag-5'>开发板</b>实现<b class='flag-5'>I2C</b>功能复用

    33A66-B1 rk3399开发板规格书

    信步 33A66-B1 rk3399开发板规格书 包括各种接口每个引脚的说明
    发表于 10-13 16:10 3次下载

    RK3399:性能与能效的嵌入式先锋,解锁多场景应用潜力

    其强大的六核CPU、优秀的图形处理能力和高度的集成性,成为了众多高端开发板、平板电脑、工控设备、AI应用、NAS存储以及轻量级服务器的核心驱动力。RK3399核心
    的头像 发表于 09-26 14:30 1279次阅读
    <b class='flag-5'>RK3399</b>:性能与能效的嵌入式先锋,解锁多场景应用潜力

    RK3506开发板Linux开发板极致性价比之选

    RK3506开发板Linux开发板极致性价比之选瑞芯微RK3506开发板,3核Cortex-A7@1.5GHz+Cortex-M0,Linu
    的头像 发表于 09-11 16:26 3863次阅读
    <b class='flag-5'>RK</b>3506<b class='flag-5'>开发板</b>Linux<b class='flag-5'>开发板</b>极致性价比之选

    【EASY EAI Orin Nano开发板试用体验】01-开箱报告及开发环境准备

    接触了更多的开发板,以后开发项目的选择更多了,真的是万分感激! 开箱 板子收到后保护的很好,气泡膜和静电袋包裹的特别好,箱子里有开发板和12V2A的电源适配器,打开
    发表于 06-24 19:04

    迅为RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用

    迅为RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用
    的头像 发表于 06-17 13:46 1980次阅读
    迅为<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>NPU例程测试-rknn-toolkit<b class='flag-5'>2</b>环境搭建和使用

    基于RK3576开发板的人脸识别算法

    RK3576开发板展示人脸识别算法例程和API说明
    的头像 发表于 05-07 16:48 2913次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的人脸识别算法

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

    文章主要展示RK3576开发板的RTC信息和快速上手例程
    的头像 发表于 05-07 15:04 2552次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的RTC使用说明

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

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