Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
NXP 微控制器
WIFI模块_RW007
NXP-MCXN947
恩智浦FRDM-MCXN947上的RW007联网实践
发布于 2024-04-17 23:34:42 浏览:443
订阅该版
[tocm] 本文主要基于恩智浦FRDM-MCXN947开发板 X RT-Thread,测试RW007(SPI接口)的无线网络功能。 # 一、硬件介绍 FRDM-MCXN947是一款紧凑且可扩展的开发板,可快速基于MCX N94和N54 MCU开展原型设计。它们提供行业标准的接口,可轻松访问MCU的I/O、集成的开放标准串行接口、外部闪存和板载MCU-Link调试器。MCX-N947有两个Arm™ Cortex™-M33内核,每个内核的主频均为150MHz,优化了性能效率,高达2MB的双块Flash存储器,带可选的全ECC RAM,外部闪存。 ![W5.png](https://oss-club.rt-thread.org/uploads/20240417/2a52cd518c5d1b322be8a3814e610f44.png.webp) RW007是由上海睿赛德电子科技有限公司开发的高速WiFi模块,模块基于Realtek RTL8710BN(Ameba Z 系列)WIFI SOC,使用SPI/UART与主机通信,支持IEEE 802.11b/g/n网络、WEP/WPA/WPA2加密方式和STA和 AP模式。 恩智浦FRDM-MCXN947开发板 X RW007的合体照片如下: ![W2.jpg](https://oss-club.rt-thread.org/uploads/20240417/5d0d9c83fcf13b51a163240a376d9bbb.jpg.webp) # 二、创建工程 目前RT-Thread Studio尚未支持恩智浦FRDM-MCXN947开发板BSP,需要从gitee下载最新的主线,通过scons命令创建工程。下载好主线源码后,在rt-thread\bsp\nxp\mcx\mcxn\frdm-mcxn947 目录下打开scons环境,配置SPI和RW007。 ## (一)SPI配置 恩智浦FRDM-MCXN947开发板板载的arduino接口预留一个SPI接口,具体可以从针脚图看到,下图红框处的针脚。 ![W3.png](https://oss-club.rt-thread.org/uploads/20240417/1babf1cfddbf67463ef1ef79c8eb007f.png.webp) NXP引入了一个Flexcomm概念,每个Flexcomm接口可通过软件选择作为USART、SPI或I2C接口。此处只需要在menuconfig中选择SPI1即可。 ![W6.png](https://oss-club.rt-thread.org/uploads/20240417/e520820259cf0c125df0af845c4b9f5f.png.webp) 可以顺便看看pin mux的配置: ```c #ifdef BSP_USING_SPI1 /* Arduino D11(P0_24), D12(P0_26), D13(P0_25) as SPI function, for RW007 MOSI, MISO, CLK */ PORT0->PCR[24] = PORT_PCR_MUX(2) | PORT_PCR_PS(1) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* P0_24: FC1_0 */ PORT0->PCR[26] = PORT_PCR_MUX(2) | PORT_PCR_PS(1) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* P0_26: FC1_2 */ PORT0->PCR[25] = PORT_PCR_MUX(2) | PORT_PCR_PS(1) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* P0_25: FC1_1 */ /* Arduino D8(P0_28), D9(P0_10), D10(P0_27) as GPIO function, for RW007 RST, INT, CS */ /* drv_pin.c works well, follow lines just notice that pins we used as GPIO function */ // PORT0->PCR[28] = PORT_PCR_MUX(0) | PORT_PCR_PS(1) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* P0_28: P0_28 */ // PORT0->PCR[10] = PORT_PCR_MUX(0) | PORT_PCR_PS(0) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* P0_10: P0_27 */ PORT0->PCR[27] = PORT_PCR_MUX(0) | PORT_PCR_PS(1) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* P0_27: P0_27 */ #endif ``` 以及SPI初始化配置: ```c #ifdef BSP_USING_SPI1 { .LPSPIx = LPSPI1, .clock_attach_id = kFRO_HF_DIV_to_FLEXCOMM1, .clock_div_name = kCLOCK_DivFlexcom1Clk, .clock_name = kCLOCK_FroHf, .tx_dma_request = kDmaRequestMuxLpFlexcomm1Tx, .rx_dma_request = kDmaRequestMuxLpFlexcomm1Rx, .DMAx = DMA0, .tx_dma_chl = 0, .rx_dma_chl = 1, .name = "spi1", }, #endif ``` ## (二)RW007配置 在menuconfig中选择enable RW007,并且设置好CS\RST\BUSY针脚。 ![W7.png](https://oss-club.rt-thread.org/uploads/20240417/0b1063c24bbd275607412091579e4c68.png.webp) 上述内容设置好之后,选择保存。分别执行下述2个命令: pkgs --update scons --target=mdk5 待Keil工程生成后,打开工程编译程序。 ``` Program Size: Code=217080 RO-data=34288 RW-data=1020 ZI-data=66272 Finished: 0 information, 11 warning and 0 error messages. ".\build\rtthread.axf" - 0 Error(s), 15 Warning(s). Build Time Elapsed: 00:00:17 ``` 然后下载到恩智浦FRDM-MCXN947开发板上。 ![W8.png](https://oss-club.rt-thread.org/uploads/20240417/d3c08107dad6d58125661d6e5786094a.png.webp) ## (三)2个小问题处理 一个是工程编译过程中的“rw007_stm32_port.c”源文件中函数重定义的error,这个直接在工程中删掉该文件即可。 另外一个是固件编译好并下载到恩智浦FRDM-MCXN947开发板上运行并联网之后,会有个“E/kernel.sched: thread:tcpip stack overflow”的日志,stack不够,需要在rtconfig.h文件中将RT_LWIP_TCPTHREAD_STACKSIZE的值改成2048甚至更大。 # 三、网络测试 固件下载完成后,reset系统,还是熟悉的味道。 ``` sram heap, begin: 0x0x2000fadc, end: 0x0x2005f600 \ | / - RT - Thread Operating System / | \ 5.1.0 build Apr 17 2024 22:13:10 2006 - 2024 Copyright by RT-Thread team lwIP-2.0.3 initialized! I/sal.skt: Socket Abstraction Layer initialize success. E/[RW007]: The wifi Stage 1 status 0 0 0 1 E/[RW007]: The wifi Stage 1 status 0 0 0 1 E/[RW007]: The wifi Stage 1 status 0 0 0 1 E/[RW007]: rw007 transfer failed E/[RW007]: The wifi Stage 1 status ffffffff ffffffff f 2 E/[RW007]: The wifi Stage 1 status ffffffff ffffffff f 2 I/WLAN.dev: wlan init success I/WLAN.lwip: eth device init ok name:w0 I/WLAN.dev: wlan init success I/WLAN.lwip: eth device init ok name:w1 rw007 sn: [rw00760ad9450c8478c000190] rw007 ver: [RW007_2.1.0-3c0b5027-18] using armclang, version: 6180002 MCXN947 HelloWorld msh > msh > ``` list device后可以网路已经起来: ``` msh >list device device type ref count -------- -------------------- ---------- w1 Network Interface 1 w0 Network Interface 1 wlan0 Network Interface 1 wlan1 Network Interface 1 rw007 SPI Device 0 spi1 SPI Bus 0 pin Pin Device 0 uart5 Character Device 0 uart4 Character Device 2 uart2 Character Device 0 msh > ``` wifi scan后再join: ``` msh >wifi scan SSID MAC security rssi chn Mbps ------------------------------- ----------------- -------------- ---- --- ---- Juggernaut 20:73:93:2d:76:39 WPA2_AES_PSK -55 13 0 TP-LINK_2E1DBC 78:73:93:2e:1d:bc WPA2_AES_PSK -85 11 0 STAR RAIN 2.4G a0:36:bc:73:93:c8 WPA2_AES_PSK -85 4 0 msh > msh >wifi join Juggernaut *********** I/WLAN.mgnt: wifi connect success ssid:Juggernaut msh >I/WLAN.lwip: Got IP address : 192.168.99.216 ``` 再来个ifconfig: ``` msh >ifconfig network interface device: w0 (Default) MTU: 1500 FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 192.168.99.216 gw address: 192.168.99.1 net mask : 255.255.255.0 dns server #0: 192.168.99.1 dns server #1: 0.0.0.0 ``` 最后ping起来证明网络OK: ``` msh >ping www.baidu.com ping: not found specified netif, using default netdev w0. 60 bytes from 36.155.132.3 icmp_seq=0 ttl=53 time=24 ms 60 bytes from 36.155.132.3 icmp_seq=1 ttl=53 time=25 ms 60 bytes from 36.155.132.3 icmp_seq=2 ttl=53 time=24 ms 60 bytes from 36.155.132.3 icmp_seq=3 ttl=53 time=26 ms msh > ```
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Juggernaut
①②③
文章
8
回答
109
被采纳
6
关注TA
发私信
相关文章
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
9
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
4
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部