From e09cf2148bee74e4b3100b18fa908e6a4fe60034 Mon Sep 17 00:00:00 2001 From: James Liu Date: Thu, 9 Oct 2025 14:05:50 +0800 Subject: [PATCH] boards: shields: add mchp_rnbd451_bt Add board support for the Microchip RNBD451 shield. This shield is compatible with a development board that includes a mikroBUS socket. Signed-off-by: James Liu (cherry picked from commit 3fbb0f018aeec82bd98cbe505173a99e33daf6fe) --- .../shields/mchp_rnbd451_bt/Kconfig.defconfig | 11 ++ boards/shields/mchp_rnbd451_bt/Kconfig.shield | 5 + .../boards/sam_e54_xpro.overlay | 43 +++++ .../doc/img/2080-atmbusadapter-xpro.webp | Bin 0 -> 7076 bytes .../doc/img/rnbd451-add-on-board.webp | Bin 0 -> 9794 bytes .../doc/img/same54-with-rnbd451.webp | Bin 0 -> 11100 bytes boards/shields/mchp_rnbd451_bt/doc/index.rst | 165 ++++++++++++++++++ .../mchp_rnbd451_bt/mchp_rnbd451_bt.overlay | 18 ++ 8 files changed, 242 insertions(+) create mode 100644 boards/shields/mchp_rnbd451_bt/Kconfig.defconfig create mode 100644 boards/shields/mchp_rnbd451_bt/Kconfig.shield create mode 100644 boards/shields/mchp_rnbd451_bt/boards/sam_e54_xpro.overlay create mode 100644 boards/shields/mchp_rnbd451_bt/doc/img/2080-atmbusadapter-xpro.webp create mode 100644 boards/shields/mchp_rnbd451_bt/doc/img/rnbd451-add-on-board.webp create mode 100644 boards/shields/mchp_rnbd451_bt/doc/img/same54-with-rnbd451.webp create mode 100644 boards/shields/mchp_rnbd451_bt/doc/index.rst create mode 100644 boards/shields/mchp_rnbd451_bt/mchp_rnbd451_bt.overlay diff --git a/boards/shields/mchp_rnbd451_bt/Kconfig.defconfig b/boards/shields/mchp_rnbd451_bt/Kconfig.defconfig new file mode 100644 index 0000000000000..9767703276454 --- /dev/null +++ b/boards/shields/mchp_rnbd451_bt/Kconfig.defconfig @@ -0,0 +1,11 @@ +# Copyright (c) 2025 Microchip Technology Inc. +# SPDX-License-Identifier: Apache-2.0 + +config MAIN_STACK_SIZE + default 2048 if BT_HOST_CRYPTO + +config BT_BUF_ACL_TX_COUNT + default 12 + +config BT_BUF_EVT_RX_COUNT + default 13 diff --git a/boards/shields/mchp_rnbd451_bt/Kconfig.shield b/boards/shields/mchp_rnbd451_bt/Kconfig.shield new file mode 100644 index 0000000000000..07c694185d161 --- /dev/null +++ b/boards/shields/mchp_rnbd451_bt/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Microchip Technology Inc. +# SPDX-License-Identifier: Apache-2.0 + +config SHIELD_MCHP_RNBD451_BT + def_bool $(shields_list_contains,mchp_rnbd451_bt) diff --git a/boards/shields/mchp_rnbd451_bt/boards/sam_e54_xpro.overlay b/boards/shields/mchp_rnbd451_bt/boards/sam_e54_xpro.overlay new file mode 100644 index 0000000000000..f504a08b25a06 --- /dev/null +++ b/boards/shields/mchp_rnbd451_bt/boards/sam_e54_xpro.overlay @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2025 Microchip Technology Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + + + +&sercom2{ + current-speed = <115200>; +}; + +/*EXT1*/ +&pinctrl{ + sercom0_uart_default: sercom0_uart_default { + group1 { + pinmux = , + ; + }; + }; +}; + +&sercom0{ + status = "okay"; + compatible = "microchip,sercom-g1-uart"; + #address-cells = <1>; + #size-cells = <0>; + + current-speed = <115200>; + data-bits = <8>; + parity = "none"; + stop-bits = "1"; + + rxpo = <1>; + txpo = <0>; + + pinctrl-0 = <&sercom0_uart_default>; + pinctrl-names = "default"; +}; + +&nvmctrl{ + status = "okay"; +}; diff --git a/boards/shields/mchp_rnbd451_bt/doc/img/2080-atmbusadapter-xpro.webp b/boards/shields/mchp_rnbd451_bt/doc/img/2080-atmbusadapter-xpro.webp new file mode 100644 index 0000000000000000000000000000000000000000..82a631030b046b0c9f2987dedb6f253c59880008 GIT binary patch literal 7076 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

~t_#Jj+U4i$Gq*eN0CG%tG5`~!sv(Uc;diU9u+ i&MTTPF+xA$`g_!w1)18HEZ_**`g5y_cK`qY0000~Kanf| literal 0 HcmV?d00001 diff --git a/boards/shields/mchp_rnbd451_bt/doc/index.rst b/boards/shields/mchp_rnbd451_bt/doc/index.rst new file mode 100644 index 0000000000000..c9d3ccd5990b6 --- /dev/null +++ b/boards/shields/mchp_rnbd451_bt/doc/index.rst @@ -0,0 +1,165 @@ +.. _rnbd451_add_on_shield: + +RNBD451 Add-on Board +############################### + +Overview +******** + +The RNBD451 Add-on Board is an efficient low-cost development platform to evaluate and demonstrate +the features, capabilities and interfaces of our Bluetooth® Low Energy module, RNBD451PE. +The add-on board is compliant to the mikroBUS™ standard and includes an on-board MCP2200 USB-to-UART +converter enabling out-of-box evaluation with no other hardware requirements. + +.. figure:: img/rnbd451-add-on-board.webp + :height: 350px + :align: center + :alt: RNBD451 Add-on Board + + **Figure 1: RNBD451 Add-on Board** + +Requirements +************ + +This shield is compatible with a development board that includes a mikroBUS™ socket. +If a mikroBUS socket is not available, a mikroBUS adapter can be used to provide both an +extension header and a mikroBUS interface. The mikroBUS™ Xplained Pro is an extension Board +for the Xplained Pro evaluation platform, designed to support mikroBUS™ Click boards™ with +Xplained Pro MCU boards. + + +.. figure:: img/2080-atmbusadapter-xpro.webp + :height: 300px + :align: center + :alt: ATMBUSADAPTER-XPRO - mikroBUS Adapter + + **Figure 2: ATMBUSADAPTER-XPRO - mikroBUS Adapter** + + +Environment setup +***************** + +Refer to "`Getting Started Guide +`_" +in "`Developing with Zephyr +`_" +for installation instructions. +After successful installation, the Zephyr SDK environment should be fully set up. +All the sample applications listed here can be found in ``zephyrproject/zephyr/samples/bluetooth``, +assuming the Zephyr SDK document is followed and the west workspace is named as "zephyrproject". + +.. note:: + + When bringing up the RNBD451 Bluetooth Low Energy (BLE) controller after a Power-On Reset (POR), + the Zephyr Bluetooth subsystem sends the **HCI reset command** (the first HCI command) to the BLE + controller. However, in the original design, this command is sent too early for the RNBD451, as + it takes approximately 4xx ms from POR to be ready to accept the first HCI command. + + To address this timing issue, introduce a delay in the Zephyr application to enable Bluetooth. + This delay ensures that the **HCI reset command** is sent at the appropriate time. Add the following + code snippet to the application to introduce a 500 ms delay before calling ``bt_enable()``: + + ``k_sleep(K_MSEC(500));`` + + Additionally, to prevent a voltage drop on the **extension header VCC pin**—which may cause the + RNBD451 to undergo a hardware reset after power-on; set **J100** to the **“BYPASS”** position. For more + information, refer to the `SAM E54 Xplained Pro Design Documentation (New Red PCB)`_. + +Hardware setting +**************** + +Using the SAM E54 Xplained Pro as an example, follow these steps to setup the hardware. + +#. Connect SAM E54 Xplained Pro Standard Extension Header (EXT1) with the mikroBUS Xplained Pro. +#. Connect the RNBD451 to the mikroBUS Xplained Pro. +#. Set the PWR_SEL jumper on the RNBD451 to Mikro 3V3 (to use power supplied by mikroBUS). +#. Connect a USB cable to the Debug USB port. + +.. figure:: img/same54-with-rnbd451.webp + :align: center + :alt: RNBD451 Connected to ATMBUSADAPTER-XPRO and Mounted on SAM E54 Extension Header + + **Figure 3: RNBD451 Connected to ATMBUSADAPTER-XPRO and Mounted on SAM E54 Extension Header** + +.. note:: + + When using a different Extension Header on the SAM E54 Xplained Pro, update the + ``rnbd451.overlay`` file accordingly. + For more details, refer to the `SAM E54 Xplained Pro + User Guide`_. + +For more information about interfacing with the ATMBUSADAPTER-XPRO mikroBUS adapter, +refer to the `RNBD451 Add-on Board Primary User Guide`_ + +Sample application project configuration (prj.conf) +*************************************************** + +To select the HCI Host mode and the H4 driver, while disabling the built-in controller, +add the following configurations:: + + CONFIG_BT_HCI=y + CONFIG_BT_H4=y + CONFIG_BT_CTLR=n + +To disable Bluetooth Controller to Bluetooth Host flow control, which is not supported +by RNBD451, add the following:: + + CONFIG_BT_HCI_ACL_FLOW_CONTROL=n + +To prevent the net-buffer from being drained during scan activity in the Central Multilink application, which can result in +Controller unresponsive error, increase CONFIG_BT_BUF_EVT_DISCARDABLE_COUNT from 3 to 12. + + CONFIG_BT_BUF_EVT_DISCARDABLE_COUNT=12 + + +Build the Applications +********************** + +Navigate to the project root directory. For example, if the Zephyr workspace was setup +following the Application Development section in the Zephyr Project Documentation, +use the following command. + +``cd zephyrproject`` + +Append the above mentioned ``prj.conf`` configurations to each ``prj.conf`` in Example #1~#5. +Build the applications located in ``zephyr/samples/bluetooth`` using the following commands: + ++----+---------------------+------------------------------------------------------------------------------------------------------------+ +| No | Example name | Build command | ++====+=====================+============================================================================================================+ +| 1 | Peripheral | west build -p always -b sam_e54_xpro --shield mchp_rnbd451_bt zephyr/samples/bluetooth/peripheral | ++----+---------------------+------------------------------------------------------------------------------------------------------------+ +| 2 | HID Peripheral | west build -p always -b sam_e54_xpro --shield mchp_rnbd451_bt zephyr/samples/bluetooth/peripheral_hids | ++----+---------------------+------------------------------------------------------------------------------------------------------------+ +| 3 | Peripheral Identity | west build -p always -b sam_e54_xpro --shield mchp_rnbd451_bt zephyr/samples/bluetooth/peripheral_identity | ++----+---------------------+------------------------------------------------------------------------------------------------------------+ +| 4 | Central Multilink | west build -p always -b sam_e54_xpro --shield mchp_rnbd451_bt zephyr/samples/bluetooth/central_multilink | ++----+---------------------+------------------------------------------------------------------------------------------------------------+ +| 5 | Central/Gatt Write | west build -p always -b sam_e54_xpro --shield mchp_rnbd451_bt zephyr/samples/bluetooth/central_gatt_write | ++----+---------------------+------------------------------------------------------------------------------------------------------------+ + + +For more information on building the applications, refer to the `Building +`_ +section. + +Flash the Applications +********************** +To flash the built application, use the following command: + +``west flash`` + + +References +********** + +.. target-notes:: + +.. _SAM E54 Xplained Pro Design Documentation (New Red PCB): + https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/BoardDesignFiles/SAM-E54-Xplained-Pro-Design-Documentation-Rev11.zip + +.. _SAM E54 Xplained Pro User guide: + https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/UserGuides/70005321A.pdf + +.. _RNBD451 Add-on Board Primary User Guide: + https://ww1.microchip.com/downloads/aemDocuments/documents/WSG/ProductDocuments/UserGuides/RNBD451-Add-On-Board-User-Guide-DS50003476.pdf diff --git a/boards/shields/mchp_rnbd451_bt/mchp_rnbd451_bt.overlay b/boards/shields/mchp_rnbd451_bt/mchp_rnbd451_bt.overlay new file mode 100644 index 0000000000000..d83dbb17ec654 --- /dev/null +++ b/boards/shields/mchp_rnbd451_bt/mchp_rnbd451_bt.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2025 Microchip Technology Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,bt-hci = &bt_hci_uart; + }; +}; + +&sercom0{ + bt_hci_uart: bt_hci_uart { + compatible = "zephyr,bt-hci-uart"; + status = "okay"; + }; +};