4452|6

286

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【Luckfox幸狐 RV1103 Linux 开发板测评】05 驱动0.96寸OLED [复制链接]

 
本帖最后由 怀揣少年梦 于 2024-1-29 23:21 编辑

这次试一试使用这么小的板子驱动一下0.96寸OLED。看一下效果。

一、准备

硬件:

0.96寸 OLED 屏幕;

杜邦线;

软件:

下载官方OLED参考代码

OLED_1in5_Code.7z_免费高速下载|百度网盘-分享无限制 (baidu.com)

SPI/I2C 驱动 OLED (C) | LUCKFOX WIKI参考资料

二、确定连接引脚

如下表

由于开发板的引脚是通过引脚编号来确定具体引脚。那么对于开发板上GPIOn_Xn的标号与引脚编号对应关系如下:

pin = bank * 32 + (group * 8 + n); bank是因为芯片分成了几个bank区,例如GPIO1_C6:

GPIO1对应bank1;C对应group,为第2组,6为第2组里面第7个引脚;

即:GPIO1_C6 对应pin = 1 * 32 + 2 * 8 + 6 = 54

0.96inch OLED Module

Luckfox Pico 引脚

功能

VCC

3V3

电源输入

GND

GND

电源地

D1

GPIO1-C2 -----SPI0_MOSI(50)

主机输出/从机输入

D0

GPIO1-C1------SPI0_CLK(48)

SPI时钟信号

CS

GPIO1_C7(55)

片选

DC

GPIO1_C6(54)

数据/命令选择

RST

GPIO1_C4(52)

复位

三、修改SDK

进入/sysdrv/source/kernel/arch/arm/boot/dts/目录

如图操作

 

1、在添加rv1103g-luckfox-pico.dts中添加GPIO引脚配置,并在pinctrl中添加引脚

2、确认SPI0是否启用并添加SPI 0的 pinctrl

 

配置好的DTS如下:

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
 */

/dts-v1/;

#include "rv1103.dtsi"
#include "rv1106-evb.dtsi"
#include "rv1103-luckfox-pico-ipc.dtsi"

/ {
    model = "Luckfox Pico";
    compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1103";

        gpio1pc6:gpio1pc6 {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                pinctrl-0 = <&gpio1_pc6>;
                regulator-name = "gpio1_pc6";
                regulator-always-on;
        };


        gpio1pc4:gpio1pc4 {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                pinctrl-0 = <&gpio1_pc4>;
                regulator-name = "gpio1_pc4";
                regulator-always-on;
        };

        gpio1pc7:gpio1pc7 {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                pinctrl-0 = <&gpio1_pc7>;
                regulator-name = "gpio1_pc7";
                regulator-always-on;
        };

    gpio4pa2:gpio4pa2 {
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio4_pa2>;
        regulator-name = "gpio4_pa2";
        regulator-always-on;
    };

    gpio4pa3:gpio4pa3 {
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio4_pa3>;
        regulator-name = "gpio4_pa3";
        regulator-always-on;
    };

    gpio4pa4:gpio4pa4 {
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio4_pa4>;
        regulator-name = "gpio4_pa4";
        regulator-always-on;
    };

    gpio4pa6:gpio4pa6 {
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio4_pa6>;
        regulator-name = "gpio4_pa6";
        regulator-always-on;
    };

    gpio4pb0:gpio4pb0 {
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio4_pb0>;
        regulator-name = "gpio4_pb0";
        regulator-always-on;
    };

    gpio4pb1:gpio4pb1 {
        compatible = "regulator-fixed";
        pinctrl-names = "default";
        pinctrl-0 = <&gpio4_pb1>;
        regulator-name = "gpio4_pb1";
        regulator-always-on;
    };
};
/**********GPIO**********/
&pinctrl {

        gpio1-pc6 {
                gpio1_pc6:gpio1-pc6 {
                        rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };

        gpio1-pc4 {
                gpio1_pc4:gpio1-pc4 {
                        rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };

        gpio1-pc7 {
                gpio1_pc7:gpio1-pc7 {
                        rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };

    gpio4-pa2 {
        gpio4_pa2:gpio4-pa2 {
            rockchip,pins =    <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

    gpio4-pa3 {
        gpio4_pa3:gpio4-pa3 {
            rockchip,pins =    <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

    gpio4-pa4 {
        gpio4_pa4:gpio4-pa4 {
            rockchip,pins =    <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

    gpio4-pa6 {
        gpio4_pa6:gpio4-pa6 {
            rockchip,pins =    <4 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

    gpio4-pb0 {
        gpio4_pb0:gpio4-pb0 {
            rockchip,pins =    <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

    gpio4-pb1 {
        gpio4_pb1:gpio4-pb1 {
            rockchip,pins =    <4 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

};

&pinctrl {
    spi0 {
        /omit-if-no-ref/
            spi0m0_pins: spi0m0-pins {
                    rockchip,pins =
                    /* spi0_clk_m0 */
                    <1 RK_PC1 4 &pcfg_pull_none>,
                    /* spie_miso_m0 */
                    /* <1 RK_PC3 6 &pcfg_pull_none>,*/
                    /* spi_mosi_m0 */
                    <1 RK_PC2 6 &pcfg_pull_none>;
        };
    };
};




/**********ETH**********/
&gmac {
    status = "disabled";
};

/**********USB**********/
// &usbdrd {
//     status = "disabled";
// };

// &usbdrd_dwc3 {
//     status = "disabled";
// };

// &u2phy {
//     status = "disabled";
// };

// &u2phy_otg {
//     status = "disabled";
// };

/**********I2C**********/
// &i2c0 {
//     status = "okay";
//     pinctrl-0 = <&i2c0m2_xfer>;
//     clock-frequency = <100000>;
// };
&i2c3 {
    status = "okay";
    pinctrl-0 = <&i2c3m1_xfer>;
    clock-frequency = <100000>;
};

// /**********SPI**********/
&spi0 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&spi0m0_pins>;
    cs-gpios = <&gpio1 RK_PC0 1>;
    // cs-gpios = <&gpio1 26 1>;
    #address-cells = <1>;
    #size-cells = <0>;
    spidev@0 {
        compatible = "rockchip,spidev";
        spi-max-frequency = <1000000000>;
        reg = <0>;
    };
};

// /**********UART**********/
&uart3 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&uart3m1_xfer>;
};
//&uart4 {
//    status = "okay";
//    pinctrl-names = "default";
//    pinctrl-0 = <&uart4m1_xfer>;
//};
// &uart5 {
//     status = "okay";
//     pinctrl-names = "default";
//     pinctrl-0 = <&uart5m0_xfer>;
// };

/**********PWM**********/

&pwm0 {
    status = "okay";
    pinctrl-names = "active";
    pinctrl-0 = <&pwm0m0_pins>;
    // pinctrl-0 = <&pwm0m1_pins>;
};
&pwm1 {
    status = "okay";
    pinctrl-names = "active";
    pinctrl-0 = <&pwm1m0_pins>;
    // pinctrl-0 = <&pwm1m1_pins>;
};

// &pwm2 {
//     status = "okay";
//     pinctrl-names = "active";
//     pinctrl-0 = <&pwm2m2_pins>;
// };
// &pwm3 {
//     status = "okay";
//     pinctrl-names = "active";
//     pinctrl-0 = <&pwm3m2_pins>;
// };
// &pwm4 {
//     status = "okay";
//     pinctrl-names = "active";
//     pinctrl-0 = <&pwm4m2_pins>;
// };
// &pwm5 {
//     status = "okay";
//     pinctrl-names = "active";
//     pinctrl-0 = <&pwm5m2_pins>;
// };
// &pwm6 {
//     status = "okay";
//     pinctrl-names = "active";
//     pinctrl-0 = <&pwm6m2_pins>;
// };
// &pwm7 {
//     status = "okay";
//     pinctrl-names = "active";
//     pinctrl-0 = <&pwm7m2_pins>;
// };
// &pwm8 {
//     status = "okay";
//     pinctrl-names = "active";
//     // pinctrl-0 = <&pwm8m1_pins>;
//     pinctrl-0 = <&pwm8m0_pins>;
// };
// &pwm9 {
//     status = "okay";
//     pinctrl-names = "active";
//     // pinctrl-0 = <&pwm9m1_pins>;
//     pinctrl-0 = <&pwm9m0_pins>;
// };

&pwm10 {
    status = "okay";
    pinctrl-names = "active";
    pinctrl-0 = <&pwm10m1_pins>;
    // pinctrl-0 = <&pwm10m2_pins>;
    // pinctrl-0 = <&pwm10m0_pins>;
};
&pwm11 {
    status = "okay";
    pinctrl-names = "active";
    pinctrl-0 = <&pwm11m1_pins>;
    // pinctrl-0 = <&pwm11m2_pins>;
    // pinctrl-0 = <&pwm11m0_pins>;
};

3、编译内核

1)选择对应的板子编译

 

2) 开始编译

 

3)内核编译成功

 

4)替换boot.img

在目录查看boot镜像生成时间,并将其复制到之前烧录的镜像文件中,进行烧录即可。

 

四、修改官方的OLED程序;

1、修改DC和RST引脚

1)查看原理图引脚IO口编号

2)修改DEV_Config.h中的DC和RST引脚

2、在虚拟机里编译修改的C文件

1)传输C工程到虚拟机里

2)进入c目录,修改Makefile文件中的编译器路径

3)直接 make,如图

 

产生可执行文件,如图

 

五、执行

1、把整个工程文件传输到WINDOWS,然后再将工程文件夹传输到开发板,如图

 

2、执行应用程序

1)添加权限

chmod -R 777 Luckfox_Pico_OLED

2)执行

 

3、实际效果

Luckfox_Pico_OLED.zip (174.02 KB, 下载次数: 5)

最新回复

啊这个确实小了点,不过 显示字绰绰有余。 弄个图标啥的费点劲,不过问题不大,   详情 回复 发表于 2024-1-31 16:28
点赞 关注
个人签名

阅读改变人生

 
 

回复
举报

6815

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

实际效果很好啊

点评

就是屏幕小了一点  详情 回复 发表于 2024-1-31 08:26
 
 
 

回复

4932

帖子

12

TA的资源

版主

板凳
 
这个屏幕分辨率多少啊

点评

分辨率不高,只有128*64;  详情 回复 发表于 2024-1-31 08:27
 
 
 

回复

286

帖子

0

TA的资源

一粒金砂(高级)

4
 
Jacktang 发表于 2024-1-31 07:31 实际效果很好啊 赞

就是屏幕小了一点

个人签名

阅读改变人生

 
 
 

回复

286

帖子

0

TA的资源

一粒金砂(高级)

5
 
吾妻思萌 发表于 2024-1-31 08:23 这个屏幕分辨率多少啊

分辨率不高,只有128*64;

点评

啊这个确实小了点,不过 显示字绰绰有余。 弄个图标啥的费点劲,不过问题不大,  详情 回复 发表于 2024-1-31 16:28
个人签名

阅读改变人生

 
 
 

回复

4932

帖子

12

TA的资源

版主

6
 
怀揣少年梦 发表于 2024-1-31 08:27 分辨率不高,只有128*64;

啊这个确实小了点,不过 显示字绰绰有余。

弄个图标啥的费点劲,不过问题不大,

点评

是的,主要用于显示一些菜单,什么的  详情 回复 发表于 2024-1-31 17:35
 
 
 

回复

286

帖子

0

TA的资源

一粒金砂(高级)

7
 
吾妻思萌 发表于 2024-1-31 16:28 啊这个确实小了点,不过 显示字绰绰有余。 弄个图标啥的费点劲,不过问题不大,

是的,主要用于显示一些菜单,什么的

个人签名

阅读改变人生

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
USB转串口芯片PL-2303驱动程序

USB转串口芯片PL-2303驱动程序

LPCXpresso生成bin文件的方法及一些命令设置(图文并貌)

一直在找使用LPCXpresso生成*.bin文件的方法,不成想竟然同时找到了LPCXpresso一些,其他的命令,如生成*.hex,*.lss及console显 ...

郭天翔老师,我只想为你擦去一些C51代码里的小小蒙尘

在我接触的学51的人里,不少人是通过看视频教程入门的,而这其中为数不少的又是看的 郭天翔 的教程。 郭天翔的大名早就耳闻 ...

#8月改装#迅捷FW300R无线路由器改装,改64MB内存+8MBFLASH+USB,跑DD-WRT

本帖最后由 jackfrost 于 2015-8-29 09:58 编辑 手头有个迅捷(FAST) FW300R的300M无线路由器,1个WAN口,4个100M LAN ...

【LSM6DSOX有限状态机例程学习 二】--有限状态机编程使用方法

上一章讲了啥是有限状态机模型和LSM6DSOX的FSM的特点。 本章我将从FSM的编程模块到Unico FSM编程界面,分别介绍各 ...

【Silicon Labs BG22-EK4108A 蓝牙开发评测】 IV. 创建工程:通过蓝牙控制直流电机

本帖最后由 zhang1gong 于 2022-1-19 23:36 编辑 通过几天阅读资料恶补(SiliconLabs公司的资料:《UG103.14: Bluetooth® ...

【2022得捷电子创新设计大赛】物料开箱—STM32F750, nano ble 33

十分感谢版主帮忙指导下单,原来设计选定的esp32-s3后来看到论坛小伙伴说没有屏幕,于是紧急更换成了带屏幕的STM32F750,考虑到 ...

关于mos作开关的缺陷

例如nmos 在gs为0时,d向s流的电流可以阻断,但由于寄生二极管的存在,导致电流由s向d极流。简而言之,mos作开关时,只能可靠截 ...

[ ST NUCLEO-U575ZI-Q 测评] 做一个监控显示器

串口中断不定长接收 - RF/无线 - 电子工程世界-论坛 (eeworld.com.cn) 优化OLED显示 - RF/无线 - 电子工程世界-论坛 (eewor ...

如何在Linux系统实现屏幕旋转?触觉智能RK3568鸿蒙开发板演示

本文介绍Linux系统实现屏幕角度旋转的方法,以解决不同产品形态的展现方式,其中Ubuntu、Debian系统可以通过xrandr工具实现屏幕 ...

关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表