日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/31 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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配置。

重新編譯后,即可成功連接服務器。

總結

以上是生活随笔為你收集整理的SX1302官方开源代码无法在NUC980主控芯片中使用SPI片选脚的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。