Skip to content

Commit 2251371

Browse files
olivier-le-sagenordicjm
authored andcommitted
softdevice_controller: rev 308f61dc07939c69a65449e834fa8588f7e61276
CHANGELOG.rst contains the list of changes. Signed-off-by: Olivier Lesage <[email protected]>
1 parent 1664b5f commit 2251371

34 files changed

+155
-44
lines changed

softdevice_controller/CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Added
2020

2121
* For an advertiser, this adds support for the LE Set Extended Advertising Parameters [v2] HCI command.
2222
* For a scanner, the advertising reports will contain the coding scheme for packets received over LE Coded PHY when the host feature bit is enabled.
23+
* Support for multiple packet pairs in an ACL event when using LLPM mode. (DRGN-16157)
2324

2425
Changes
2526
=======

softdevice_controller/doc/channel_sounding.rst

Lines changed: 115 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ The following LE CS commands are supported:
3737
* LE CS Test
3838
* LE CS Test End
3939

40+
.. _cs_supported_capabilities:
41+
4042
Supported capabilities
4143
----------------------
4244

@@ -60,13 +62,43 @@ The supported timing values for the |controller| are as follows:
6062
* A T_PM of 10 µs or greater.
6163
* A T_SW of 10 µs.
6264

65+
.. note::
66+
The T_SW time reported is based on the implementation of antenna switching in the |NCS|, as described in :ref:`cs_multiple_antenna_support`.
67+
If users implement their own switching functions, they must ensure that the new implementation meets the timing requirements reported in :ref:`cs_supported_capabilities`.
68+
69+
.. _cs_multiple_antenna_support:
70+
6371
Multiple antennas support
6472
-------------------------
6573

66-
Currently, the |controller| supports multiple antennas with a fixed pinout for the multi-antenna switch.
67-
In order to use the |controller| with multiple antennas, an external GPIO controlled multi-antenna switch needs to be set up with the following truth table:
74+
Users may define their own antenna switching behavior in the |NCS|.
75+
By using the :c:func:`cs_antenna_switch_func` function and devicetree, users can register GPIO-controlled antenna switches with the |controller|.
76+
The Channel Sounding implementation will then automatically use the registered pins to control an external antenna switch for multi-antenna designs.
77+
The pins assigned to a multi-antenna design will be reserved by the |controller| and cannot be used by other activity.
78+
If users do not want to use the implementation provided in the |NCS|, they must register their own callback function for antenna switching in :c:func:`sdc_support_channel_sounding`.
79+
80+
.. note::
81+
The |controller| requires an :c:type:`sdc_cs_antenna_switch_callback_t` antenna switching callback to :c:func:`sdc_support_channel_sounding` whenever it is configured with support for multiple antennas.
82+
This is done automatically in the |NCS|.
83+
84+
When using :c:func:`cs_antenna_switch_func`, users can register which pins control the antenna switch, as well as how the pins switch, using devicetree.
85+
An example declaration of an antenna switch in devicetree is as follows:
86+
87+
.. code-block:: devicetree
6888
69-
.. list-table:: Antenna control for multi-antenna switching.
89+
cs_antenna_switch: cs-antenna-config {
90+
status = "okay";
91+
compatible = "nordic,bt-cs-antenna-switch";
92+
ant-gpios = <&gpio1 11 (GPIO_ACTIVE_HIGH)>,
93+
<&gpio1 12 (GPIO_ACTIVE_HIGH)>,
94+
<&gpio1 13 (GPIO_ACTIVE_HIGH)>,
95+
<&gpio1 14 (GPIO_ACTIVE_HIGH)>;
96+
multiplexing-mode = <0>;
97+
};
98+
99+
This setup corresponds to the following truth table:
100+
101+
.. list-table:: Antenna control for multi-antenna switching without multiplexing mode.
70102
:widths: 30 5 5 5 5
71103
:header-rows: 1
72104

@@ -96,9 +128,87 @@ In order to use the |controller| with multiple antennas, an external GPIO contro
96128
- 0
97129
- 1
98130

131+
An alternative to the provided setup is to use multiplexing mode.
132+
This method allows fewer pins to control multiple antennas simultaneously:
133+
134+
.. list-table:: Antenna control for multi-antenna switching using multiplexing mode.
135+
:widths: 30 5 5
136+
:header-rows: 1
137+
138+
* - Active Antenna:
139+
- **P1.11**
140+
- **P1.12**
141+
* - Antenna 1
142+
- 0
143+
- 0
144+
* - Antenna 2
145+
- 0
146+
- 1
147+
* - Antenna 3
148+
- 1
149+
- 0
150+
* - Antenna 4
151+
- 1
152+
- 1
153+
154+
Multiplexing mode can be configured with devicetree as follows:
155+
156+
.. code-block:: devicetree
157+
158+
cs_antenna_switch: cs-antenna-config {
159+
status = "okay";
160+
compatible = "nordic,bt-cs-antenna-switch";
161+
ant-gpios = <&gpio1 11 (GPIO_ACTIVE_HIGH)>,
162+
<&gpio1 12 (GPIO_ACTIVE_HIGH)>;
163+
multiplexing-mode = <1>;
164+
};
165+
166+
If a design does not use four antennas, users can register fewer pins to achieve the desired behavior:
167+
168+
.. code-block:: devicetree
169+
170+
cs_antenna_switch: cs-antenna-config {
171+
status = "okay";
172+
compatible = "nordic,bt-cs-antenna-switch";
173+
ant-gpios = <&gpio1 11 (GPIO_ACTIVE_LOW)>,
174+
<&gpio1 12 (GPIO_ACTIVE_LOW)>,
175+
<&gpio1 13 (GPIO_ACTIVE_LOW)>;
176+
multiplexing-mode = <0>;
177+
};
178+
179+
.. list-table:: Antenna control for multi-antenna switching with only 3 antennas.
180+
:widths: 30 5 5 5
181+
:header-rows: 1
182+
183+
* - Active Antenna:
184+
- **P1.11**
185+
- **P1.12**
186+
- **P1.13**
187+
* - Antenna 1
188+
- 0
189+
- 1
190+
- 1
191+
* - Antenna 2
192+
- 1
193+
- 0
194+
- 1
195+
* - Antenna 3
196+
- 1
197+
- 1
198+
- 0
199+
200+
201+
Adding a custom antenna switch IC
202+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
203+
204+
When using the provided :c:func:`cs_antenna_switch_func` implementation in the |NCS|, the |controller| uses a maximum of 4 µs to set a GPIO pin high.
205+
Therefore, a multi-antenna switch using this solution must switch within 6 µs to maintain the 10 µs T_SW reported in :ref:`cs_supported_capabilities`.
206+
207+
In addition to switching fast enough to meet switch timings, any RF switch used for antenna switching in Channel Sounding must handle switching while the radio is active.
208+
This is because the switch time is too short to power-cycle the radio between tones.
209+
99210
.. note::
100-
Currently, the |controller| needs a maximum of 4 µs to trigger an antenna switch within the T_SW period.
101-
This means that any multi-antenna switch with the correct pinout must switch within 6 µs to maintain 10 µs T_SW.
211+
When registering multiple antennas with the |controller|, the first antenna in the antenna array will be used by default for |BLE| transmission.
102212

103213
Experimental limitations
104214
------------------------
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
description: SoftDevice Controller
2-
git_revision: 24f2b7533b443bcb97fd8dae967a5b8ef1ba5afb
3-
ll_subversion_number: '0x10CA'
2+
git_revision: 308f61dc07939c69a65449e834fa8588f7e61276
3+
ll_subversion_number: '0x10D2'
44
ll_version_number: '0x0E'
5-
timestamp: '2025-03-17T12:46:16Z'
5+
timestamp: '2025-03-25T13:15:17Z'
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
description: SoftDevice Controller
2-
git_revision: 24f2b7533b443bcb97fd8dae967a5b8ef1ba5afb
3-
ll_subversion_number: '0x10CA'
2+
git_revision: 308f61dc07939c69a65449e834fa8588f7e61276
3+
ll_subversion_number: '0x10D2'
44
ll_version_number: '0x0E'
5-
timestamp: '2025-03-17T12:46:16Z'
5+
timestamp: '2025-03-25T13:15:17Z'

0 commit comments

Comments
 (0)