本专栏由非官方人员 王小小海 所著,其内容主要记录了在开发5340的过程中遇到的一些问题和解决方法,还有一些应用的例程。作者本人也是在实践应用中遇到的问题,想着把这些问题分享给可能遇到的朋友。仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。
本专栏不涉及基础的安装和环境搭建问题,本例程开发使用的NCS 2.0.0,如果涉及2.0.0以上开发,会加以备注。
所有分享内容
笔记分享
- 【笔记分享】NCS下radio_test添加FEM
- 【笔记分享】5340基于 BLE LBS 自定义网络核固件点亮LED并合并固件
- 【笔记分享】LE Audio例程 时钟漂移补偿和播放补偿 无法正常工作问题解决
应用分享
本次分享内容
NCS下Radiotest下增加FEM
- 本例程使用NCS下,nRF所有系列的芯片. 本例程 以 RFX2401C 和 nRF21540 为FEM。
步骤
- 使用NCS创建radio_test例程.
- 打开ncs 2.0.0目录,将 v2.0.0/nrf/samples/bluetooth/direct_test_mode/src目录下的fem文件夹拷贝到radio_test目录下.
- 编辑cmakelists.txt文件内容修改对应fem目录.
- 编辑修改Kconfig文件内容.
- 创建或编辑 boards 文件夹内,对应板子的overlay文件.
- 编译内容.
步骤1: 使用NCS创建radio_test例程 (跳过不演示)
步骤2 : 打开ncs 2.0.0目录,将 v2.0.0/nrf/samples/bluetooth/direct_test_mode/src目录下的fem文件夹拷贝到radio_test目录下。(跳过不演示)
步骤3 : 编辑cmakelists.txt文件内容修改对应fem目录
#
# Copyright (c) 2020 Nordic Semiconductor
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(NONE)
# Application sources
target_sources_ifdef(CONFIG_FEM app
PRIVATE ./fem/fem.c)
target_sources_ifdef(CONFIG_NRF21540_FEM app
PRIVATE ./fem/nrf21540.c)
target_sources_ifdef(CONFIG_GENERIC_FEM app
PRIVATE ./fem/generic_fem.c)
zephyr_include_directories(./fem/)
FILE(GLOB app_sources src/*.c)
# NORDIC SDK APP START
target_sources(app PRIVATE
${app_sources}
)
# NORDIC SDK APP END
步骤4 : 编辑修改Kconfig文件内容.
步骤5:创建或编辑 boards 文件夹内,对应板子的overlay文件.
RFX2401C的FEM配置
/ {
nrf_radio_fem: nfx2401c_fem_node {
compatible = "generic-fem-two-ctrl-pins";
ctx-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
crx-gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
};
};
&radio {
fem = <&nrf_radio_fem>;
};
- 编译过后通过查看 build/zephyr/目录下的.config文件内容是否 FEM开启
nRF21540的FEM配置
// 注意你的FEM的使能电平,2401发送是高电平有效,接收是高电平,fem驱动会互斥的.
// 如果你是简单的 2个引进控制的可以用 compatible = "generic-fem-two-ctrl-pins";
// 不是,那么就用21540的 compatible
// / {
// nrf_radio_fem: nfx2401c_fem_node {
// compatible = "generic-fem-two-ctrl-pins";
// ctx-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
// crx-gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
// };
// };
// 21540的fem.但是需要关联spi,如果不关联也可以,删除掉spi的 子结点就行了
// 但是 radio_test下由于 fem 文件夹内的 21540是强制绑定了 spi的,因此必须要配置spi不然会报错。
/ {
nrf_radio_fem: nrf21540_fem {
compatible = "nordic,nrf21540-fem";
tx-en-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; /* D5 */
rx-en-gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>; /* D3 */
pdn-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; /* D9 */
ant-sel-gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>; /* D4 */
mode-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>; /* D2 */
spi-if = <&nrf_radio_fem_spi>;
};
};
fem_spi: &arduino_spi {
status = "okay";
cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>; /* D10 */
nrf_radio_fem_spi: nrf21540_fem_spi@0 {
compatible = "nordic,nrf21540-fem-spi";
status = "okay";
reg = <0>;
label = "FEM_SPI_IF";
spi-max-frequency = <8000000>;
};
};
&radio {
fem = <&nrf_radio_fem>;
};
编译完成之后同 RFX2401C一样,查看是否使能了FEM和21540 support
步骤6 : 编译内容.
编译即可。然后通过shell命令,输入对应radio_cmd.c中的命令就可以测试带FEM的radio了。
结束语
以上就是关于NCS下 radio_test例程使能FEM的实现步骤
有不明白的地方欢迎提问,也厚脸皮要个赞或者关注,谢谢各位啦。
本系列文章大多数是本人遇到和解决过的问题,难有疏忽之处,有什么问题或者不明白的地方,欢迎留言询问!