SX1302官方开源代码无法在NUC980主控芯片中使用SPI片选脚

SX1302官方开源代码无法在NUC980主控芯片中使用SPI片选脚

情况说明
Sx1302代码:https://gitee.com/rejeee/gw1302s
NUC980DK61Y内核代码:官方提供的虚拟机镜像包(里面包含linux内核及交叉编译工具链)
SPI引脚使用:
在这里插入图片描述
在这里插入图片描述
如上图可见,使用了NUC980的SPI0口。使能SPI0口后,运行网关程序时,却始终反馈如下错误:

lgw_connect:1230: ERROR: NOT EXPECTED CHIP VERSION (v255)
ERROR: [main] failed to start the concentrator
Cycle 0 > error during the buffer comparison

经示波器检查发现片选脚无电平变化,但我们已经开启了SS0片选功能。仔细排查内核代码后,发现文件:

user@ubuntu:"Youself path"/NUC970_Buildroot-master/output/build/linux-master/arch/arm/mach-nuc980/dev.c

中有这样一段代码:

#ifdef CONFIG_SPI_SPIDEV
        {
                .modalias = "spidev",
                .max_speed_hz = 75000000,
                .bus_num = 1,
                #if defined(CONFIG_BOARD_IOT) || defined(CONFIG_BOARD_LORAG)
                .chip_select = 0,       //use SS0
                #else
                .chip_select = 1,       //use SS1
                #endif
                .mode = SPI_MODE_0,
        },
#endif

#if defined(CONFIG_BOARD_IOT) || defined(CONFIG_BOARD_LORAG)中我们可以看出,只有当配置文件为IOT与LORAG时,才会使用SS0片选脚。但我们在make menuconfig时配置的不是这两个文件,而是eth2uart文件。在这里插入图片描述
因此内核代码配置的是使用ss1而不是ss0。

解决方法
在if条件后加上defined(CONFIG_BOARD_ETH2UART),即:

#ifdef CONFIG_SPI_SPIDEV
        {
                .modalias = "spidev",
                .max_speed_hz = 75000000,
                .bus_num = 1,
                #if defined(CONFIG_BOARD_IOT) || defined(CONFIG_BOARD_LORAG) || defined(CONFIG_BOARD_ETH2UART)
                .chip_select = 0,       //use SS0
                #else
                .chip_select = 1,       //use SS1
                #endif
                .mode = SPI_MODE_0,
        },
#endif

同时通过make linux-menuconfig进入内核配置界面,在Device Drivers > Memory Technology Device (MTD) support界面下取消SPI-NOR device support配置。
在这里插入图片描述
重新编译后,即可成功连接服务器。
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值