嵌入式技术william hill官网
直播中

万航渡路

8年用户 1304经验值
擅长:电源/新能源
私信 关注
[问答]

如何对基于NK-980IoT开发板进行LoRa SPI模块的通信验证呢

1 前言

本文主要描述了NUC980 SPI外设,及基于NK-980IoT开发板(SPI0外设)进行LoRa SPI模块的通信验证。
NK-980IOT开发板常用 板载资源 如下:
处理器:NUC980DK61Y
主频 300MHz
内嵌 64MB DDR SDRAM
板载资源:
1Gbit SPI-NAND Flash、NAU8822 Audio Codec
常用外设
LED:3 个
用户按键:2 个
复位按键:1个
常用接口:Arduino、USB 转串口、RJ-45 接口、1xUSB host 2.0、1xUSB Dual-role 2.0、Micro SD。
调试接口:外挂 J-link 调试 或 使用 NuWriter 烧录软件、SDRAM 下载。

2 NCU980 SPI简述
NCU980 SPI具有如下特点:
支持2路SPI
SPI0,SPI1
支持主机与从机模式
主机模式支持高达100M,
从机模式支持高达30M
支持8~32 bit字长
支持4-level depth发送与接收FIFO
支持PDMA传输


2.1 NK-980IOT开发板SPI接口
NK-980IoT
JTAG接口
SPI0
UART0 - 串口shell
SX1278 SPI模块
VCC、GND、SI、SO、SCK、RESET、CS、DIO0

2.1.1 板载SPI0接口(位号NU5)
板载SPI0接口

2.1.2 板载Arduino接口 SPI1(位号NU1、NU2、NU3、NU4)
注: Arduino接口的SPI1接口连接到了JTAG,因此不能同时使用arduino接口SPI1与JTAG调试。

板载SPI1接口

2.2 SPI外设引脚分配
通过设置寄存器 SYS_GPx_MFPH、SYS_GPx_MFPL (x=ABCD..)来设置指定SPI外设引脚

2.2.1 SPI0外设引脚设置
NUC980 SPI0引脚第二功能设置
板载SPI0接口(位号NU5)使用了PD8、PD9、PD10、PD11,其对应为MFP1,同时默认配置为4线SPI(硬件CS控制),此处修改为软件控制CS,因此REG_SYS_GPD_MFPH设置为 0x00001110,即
MFP_GPD8 = 0
MFP_GPD9 = 1
MFP_GPD10 = 1
MFP_GPD11 = 1

3 NUC980 BSP使用

3.1 开发工具
RT-Thread Studio 2.2.1
MDK5.30
NK-980IoT BSP

3.2 调试接口(JTAG)

4 NUC980 LoRa通信

4.1 NK-980 LoRa SPI模块SX127x硬件连接
本次测试使用NK-980开发板的SPI0接口(NU05),当前测试了LoRa SX127x模块。

4.2 LoRa Radio软件包使用
使能lora-radio软件包,配置如下所示
“硬件”使能SPI0外设
当前lora-radio-driver软件包还未增加NK-980支持(后续加入),目前需要进行如下修改

4.2.1 新增加 rt_hw_spi_device_attach
在libraries
uc980
tt_portdrv_spi.c 新增加rt_hw_spi_device_attach,同时传入SPI CS引脚,用于通过软件方式控制lora模块CS引脚,见PR

4.2.2 重定义lora模块gpio口
修改lora-radio-driver软件包中sx1278-board.c,手动增加 lora模块SPI NSS、RESET、DIO0引脚定义
注 #define NU_GET_PININDEX(port, pin) ((port)*16+(pin))

注意nk-980iot bsp默认开启了PF7,PF8为pwm输出,这里用作LoRa模块的RESET、DIO0,因此要屏蔽如下部分

4.2.3 绑定lora设备到spi0总线
修改lora-radio-driver软件包中lora-spi-board.c,绑定lora-radio设备与LORA_RADIO0_NSS_PIN到spi0总线

4.3 测试结果
测试过程如下
左侧为NK-980 + LoRa SX1278模块,作为master
首先执行lora probe
检测lora模块spi是否访问正常
执行 lora ping -m 发送lora数据包给从机,等待从机应答
右侧为STM32L4 + LoRa SX1268模块,作为slaver
执行 lora ping -s
接收到master数据包后,回传给master

5 注意事项
Arduino接口的SPI1接口连接到了JTAG,因此不能同时使用arduino接口SPI1与JTAG调试。
JTAG连接线不能太长,否则可能出现debug异常
使用外设功能引脚,注意根据实际引脚配置MFP功能,比如SPI0 MOSI-> PD.10 -> MFP1
a. NK-980引脚初始化配置位于nu_pin_init.c

更多回帖

发帖
×
20
完善资料,
赚取积分