You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派1B通过设备树配置RTC DS1302内核驱动失败求助

树莓派1B(Bullseye)DS1302 RTC内核设备树配置修复方案

问题根源

你之前的配置错误在于:要么误用了软件模拟SPI(spi-gpio),要么设备树overlay的参数没有匹配DS1302的3wire半双工、CS高电平有效、LSB优先这些关键特性,导致内核无法正确识别设备。

步骤1:切换到硬件SPI控制器

BCM2835的SPI0确实支持3wire半双工模式,没必要用软件模拟。先清理旧配置:

  • 编辑/etc/modules,删掉spi-gpio和rtc-ds1302(设备树会自动触发模块加载)
  • 打开/boot/config.txt,确保启用硬件SPI:
    dtparam=spi=on
    

步骤2:编写正确的设备树overlay

创建ds1302-spi.dts文件,内容完全匹配你的接线和DS1302特性:

/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2835";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            status = "okay";
            #address-cells = <1>;
            #size-cells = <0>;

            ds1302@0 {
                compatible = "maxim,ds1302";
                reg = <0>;
                spi-max-frequency = <1000000>;
                spi-cs-high;          /* DS1302 CS高电平有效 */
                spi-lsb-first;        /* LSB优先传输 */
                spi-3wire;            /* 半双工3wire模式 */
                pinctrl-names = "default";
                pinctrl-0 = <&ds1302_cs>;
            };
        };
    };

    fragment@1 {
        target = <&gpio>;
        __overlay__ {
            ds1302_cs: ds1302_cs {
                brcm,pins = <17>;    /* CS引脚GPIO17 */
                brcm,function = <0>; /* 通用IO输出 */
                brcm,pull = <0>;     /* 禁用上下拉 */
            };
        };
    };

    fragment@2 {
        target = <&spi0_gpio32_36>; /* 重映射SPI0引脚 */
        __overlay__ {
            brcm,pins = <27 18>;    /* SCK=GPIO27, MIMO=GPIO18 */
            brcm,function = <4>;    /* ALT0复用为SPI功能 */
        };
    };
};

步骤3:编译并安装overlay

执行编译命令:

dtc -I dts -O dtb -o ds1302-spi.dtbo ds1302-spi.dts

把编译好的文件放到overlay目录:

sudo cp ds1302-spi.dtbo /boot/overlays/

步骤4:配置启动加载并验证

编辑/boot/config.txt,添加overlay加载:

dtoverlay=ds1302-spi

重启后做以下验证:

  1. 查看内核日志确认设备加载:
    dmesg | grep ds1302
    
    正常会输出类似maxim,ds1302 spi0.0: registered as rtc0的日志
  2. 检查RTC设备节点:
    ls /dev/rtc*
    
    应该能看到/dev/rtc0
  3. 测试时钟读取:
    sudo hwclock -r
    

常见坑修复

  • SPI模式不支持报错:Bullseye默认内核已经支持DS1302的3wire模式,如果报错,执行sudo apt update && sudo apt upgrade升级内核到最新版本。
  • CS引脚无响应:检查GPIO17的接线,确保没有短路,设备树里的brcm,pull设置为0,避免上下拉干扰。
  • 模块未加载:如果rtc-ds1302没自动加载,手动执行modprobe rtc-ds1302,然后看dmesg的报错信息定位问题。

内容的提问来源于stack exchange,提问作者Pliskin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:25:14