Part 1
요약·해설
공식 원문 533줄과 property 41행을 전수 대조해 nRF5x versus nRF91 boundary·external FEM/coexistence·DFE GPIO ordering/pattern/state rules 제약을 보존했습니다.
nordic,nrf-radio
Nordic Semiconductor
41 rows
2.4GHz RADIO + FEM/coexistence + Bluetooth DFE antenna switching
Part 2
접을 수 있는 영어 원문 전체
영어 원문 전체 펼치기
4CF81E963C35FF88D1B32795A770716B459DA4474E5F8534A672E54507024EFF
:orphan:
.. raw:: html
<!--
FIXME: do not limit page width until content uses another representation
format other than tables
-->
<style>.wy-nav-content { max-width: none; !important }</style>
.. dtcompatible:: nordic,nrf-radio
.. _dtbinding_nordic_nrf_radio:
nordic,nrf-radio
################
Vendor: :ref:`Nordic Semiconductor <dt_vendor_nordic>`
Description
***********
.. code-block:: none
Nordic nRF family RADIO peripheral.
This controls the 2.4 GHz radio transceiver on nRF5x
SoCs, which is available for use with Bluetooth, 802.15.4,
and proprietary wireless protocols (not all of these
protocols are available on all SoCs; consult the product
specifications for details).
This binding is not relevant to the nRF91x baseband radio.
Front-End Module (FEM) support
------------------------------
External front-end modules are range extenders used for boosting
the link robustness and link budget of wireless SoCs. If your
system includes an external FEM, set it up in the devicetree using
this binding's 'fem' property, like this example:
&radio {
fem = <&nrf_radio_fem>;
};
nrf_radio_fem: my-fem {
compatible = "...";
....
};
Currently supported "compatible" properties for the FEM node are:
- generic-fem-two-ctrl-pins
- nordic,nrf21540-fem
Refer to the bindings for these compatibles for more information
about how to configure the FEM.
Direction Finding Extension
---------------------------
Some radios support the Bluetooth Direction Finding Extension (DFE).
The 'dfe-supported' property will be set when it is available.
In this case, the 'dfegpio[n]-gpios' properties configure GPIO pins
to use to drive antenna switching.
Each dfegpio[n]-gpios property which is set is used to initialize the
corresponding PSEL.DFEGPIO[n] register.
None of the dfegpio[n]-gpios properties are marked 'required',
since which PSEL.DFEGPIO[n] registers will be used to drive
antenna switches depends on the use case. Nevertheless, at least two
antennas must be available to use DFE.
That in turn means that at least one dfegpio[n]-gpios
property must be provided if DFE is used, to give the radio the
possibility to switch between two antennas. To use 12 antennas,
4 GPIOs must be provided (since 4 GPIO pins support switching up to
16 antennas).
GPIOs are used in order, following the indices of the dfegpio[n]-gpios
properties. The order is important because it affects the mapping of
antenna switch patterns to GPIOs.
Antenna switching patterns
--------------------------
An antenna switching pattern is a binary number where each bit is
applied to a particular antenna GPIO pin. For example, the pattern
0x3 means that antenna GPIOs at indexes 0 and 1 will be set, while
the following are left unset.
The number of GPIOs specified with dfegpio[n]-gpios properties
affects the allowed pattern values. For example, when using four
GPIOs, the pattern count cannot be greater than 16, and the
maximum allowed value is 15.
Antenna switch patterns are stored in DFE internal memory by
writes to the SWITCHPATTERN register. DFE handling code applies
antenna switch patterns during Constant Tone Extension (CTE)
receive (Angle of Arrival mode) or transmission (Angle of
Departure mode) procedure.
DFE States
----------
There are four states of DFE operation:
* Idle: in this state, PDU transmission happens.
DFE uses SWITCHPATTERN[0] to select the antenna in this state.
(The 'dfe-pdu-antenna' property value described below is stored
in SWITCHPATTERN[0] by the radio controller code.)
* Guard: in this state, DFE prepares for reception or transmission
of CTE. For this state, DFE selects the antenna by applying
SWITCHPATTERN[1].
* Reference: in this state, DFE starts to receive or transmit CTE.
In AoA mode, DFE collects reference IQ samples. The selected
antenna is the same as in the guard state.
* Switch-sample: in this state, actual antenna switching happens.
DFE selects antennas by applying SWITCHPATTERN[2..N]. If the
number of switch-sample periods is greater than the number of
stored switching patterns, DFE loops back to SWITCHPATTERN[2].
Properties
**********
.. tabs::
.. group-tab:: Node specific properties
Properties not inherited from the base binding file.
.. list-table::
:widths: 1 1 4
:header-rows: 1
* - Name
- Type
- Details
* - ``fem``
- ``phandle``
- .. code-block:: none
Phandle linking the RADIO node to its external front-end module.
* - ``coex``
- ``phandle``
- .. code-block:: none
Phandle linking the RADIO node to the external radio coexistence arbitrator.
* - ``dfe-supported``
- ``boolean``
- .. code-block:: none
If set, the radio hardware supports the Direction Finding Extension.
This property should be treated as read-only and should not be overridden;
the correct value is provided for your target's SoC already.
* - ``dfe-antenna-num``
- ``int``
- .. code-block:: none
Number of available antennas for the Direction Finding Extension.
This should only be set if dfe-supported is true. If you set this
property, the value must be at least two.
* - ``dfe-pdu-antenna``
- ``int``
- .. code-block:: none
Antenna switch pattern to be used for transmission of PDU before start
of transmission of Constant Tone Extension.
This should only be set if dfe-supported is true.
This pattern is stored in SWITCHPATTERN[0] before actual antenna
switching patterns. This pattern will also be used to drive GPIOs
when the radio releases control of GPIOs used to switch antennas.
* - ``dfegpio0-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 0. This should only be set if dfe-supported
is true.
For example, to use P0.2 on an nRF5x SoC:
dfegpio1-gpios = <&gpio0 2 0>;
To use P1.4:
dfegpio1-gpios = <&gpio1 4 0>;
Note the last 'flags' cell in the property is not used,
and should be set to 0 as shown.
* - ``dfegpio1-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 1. See description for dfegpio0-gpios.
* - ``dfegpio2-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 2. See description for dfegpio0-gpios.
* - ``dfegpio3-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 3. See description for dfegpio0-gpios.
* - ``dfegpio4-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 4. See description for dfegpio0-gpios.
* - ``dfegpio5-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 5. See description for dfegpio0-gpios.
* - ``dfegpio6-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 6. See description for dfegpio0-gpios.
* - ``dfegpio7-gpios``
- ``phandle-array``
- .. code-block:: none
Pin select for DFE pin 7. See description for dfegpio0-gpios.
* - ``ieee802154-supported``
- ``boolean``
- .. code-block:: none
If set, indicates that the radio hardware supports the IEEE 802.15.4
mode.
* - ``ble-2mbps-supported``
- ``boolean``
- .. code-block:: none
If set, indicates that the radio hardware supports the 2 Mbps BLE mode.
* - ``ble-coded-phy-supported``
- ``boolean``
- .. code-block:: none
If set, indicates that the radio hardware supports coded BLE PHY.
* - ``tx-high-power-supported``
- ``boolean``
- .. code-block:: none
If set, indicates that the radio hardware supports high TX power
settings.
.. group-tab:: Deprecated node specific properties
Deprecated properties not inherited from the base binding file.
(None)
.. group-tab:: Base properties
Properties inherited from the base binding file, which defines
common properties that may be set on many nodes. Not all of these
may apply to the "nordic,nrf-radio" compatible.
.. list-table::
:widths: 1 1 4
:header-rows: 1
* - Name
- Type
- Details
* - ``wakeup-source``
- ``boolean``
- .. code-block:: none
Property to identify that a device can be used as wake up source.
When this property is provided a specific flag is set into the
device that tells the system that the device is capable of
wake up the system.
Wake up capable devices are disabled (interruptions will not wake up
the system) by default but they can be enabled at runtime if necessary.
* - ``power-domain``
- ``phandle``
- .. code-block:: none
Power domain the device belongs to.
The device will be notified when the power domain it belongs to is either
suspended or resumed.
* - ``zephyr,pm-device-runtime-auto``
- ``boolean``
- .. code-block:: none
Automatically configure the device for runtime power management after the
init function runs.
* - ``zephyr,disabling-power-states``
- ``phandles``
- .. code-block:: none
List of power states that will disable this device power.
* - ``status``
- ``string``
- .. code-block:: none
indicates the operational status of a device
Legal values: ``'ok'``, ``'okay'``, ``'disabled'``, ``'reserved'``, ``'fail'``, ``'fail-sss'``
See :ref:`dt-important-props` for more information.
* - ``compatible``
- ``string-array``
- .. code-block:: none
compatible strings
This property is **required**.
See :ref:`dt-important-props` for more information.
* - ``reg``
- ``array``
- .. code-block:: none
register space
This property is **required**.
See :ref:`dt-important-props` for more information.
* - ``reg-names``
- ``string-array``
- .. code-block:: none
name of each register space
* - ``interrupts``
- ``array``
- .. code-block:: none
interrupts for device
This property is **required**.
See :ref:`dt-important-props` for more information.
* - ``interrupts-extended``
- ``compound``
- .. code-block:: none
extended interrupt specifier for device
* - ``interrupt-names``
- ``string-array``
- .. code-block:: none
name of each interrupt
* - ``interrupt-parent``
- ``phandle``
- .. code-block:: none
phandle to interrupt controller node
* - ``label``
- ``string``
- .. code-block:: none
Human readable string describing the device (used as device_get_binding() argument)
See :ref:`dt-important-props` for more information.
This property is **deprecated**.
* - ``clocks``
- ``phandle-array``
- .. code-block:: none
Clock gate information
* - ``clock-names``
- ``string-array``
- .. code-block:: none
name of each clock
* - ``#address-cells``
- ``int``
- .. code-block:: none
number of address cells in reg property
* - ``#size-cells``
- ``int``
- .. code-block:: none
number of size cells in reg property
* - ``dmas``
- ``phandle-array``
- .. code-block:: none
DMA channels specifiers
* - ``dma-names``
- ``string-array``
- .. code-block:: none
Provided names of DMA channel specifiers
* - ``io-channels``
- ``phandle-array``
- .. code-block:: none
IO channels specifiers
* - ``io-channel-names``
- ``string-array``
- .. code-block:: none
Provided names of IO channel specifiers
* - ``mboxes``
- ``phandle-array``
- .. code-block:: none
mailbox / IPM channels specifiers
* - ``mbox-names``
- ``string-array``
- .. code-block:: none
Provided names of mailbox / IPM channel specifiers
* - ``zephyr,deferred-init``
- ``boolean``
- .. code-block:: none
Do not initialize device automatically on boot. Device should be manually
initialized using device_init().
Part 3
한국어 전문 번역
nordic,nrf-radio
Vendor: Nordic Semiconductor
공식 설명
Nordic nRF family RADIO peripheral입니다.
nRF5x SoC의 2.4GHz radio transceiver를 제어하며 Bluetooth, 802.15.4, proprietary wireless protocol에 사용할 수 있습니다. 모든 SoC가 모든 protocol을 지원하는 것은 아니므로 product specification을 확인해야 합니다.
이 binding은 nRF91x baseband radio에는 해당하지 않습니다.
Front-End Module(FEM) 지원
--------------------------
External front-end module은 wireless SoC의 link robustness와 link budget을 높이는 range extender입니다. System에 external FEM이 있으면 다음처럼 이 binding의 fem property로 devicetree에 연결합니다.
&radio {
fem = <&nrf_radio_fem>;
};
nrf_radio_fem: my-fem {
compatible = "...";
....
};
현재 FEM node에서 지원하는 compatible은 다음과 같습니다.
- generic-fem-two-ctrl-pins
- nordic,nrf21540-fem
FEM 구성 방법은 각 compatible의 binding을 참조하십시오.
Direction Finding Extension
---------------------------
일부 radio는 Bluetooth Direction Finding Extension(DFE)을 지원합니다. 사용할 수 있는 target에서는 dfe-supported property가 설정됩니다. 이때 dfegpio[n]-gpios property는 antenna switching을 구동할 GPIO pin을 구성하며, 설정된 각 property가 대응하는 PSEL.DFEGPIO[n] register를 초기화합니다.
사용할 PSEL.DFEGPIO[n] register는 use case에 따라 달라지므로 dfegpio property는 필수가 아닙니다. 하지만 DFE를 사용하려면 최소 antenna 두 개가 필요하고, 두 antenna 사이를 전환할 수 있도록 dfegpio[n]-gpios를 최소 하나는 제공해야 합니다. Antenna 12개를 사용하려면 GPIO 4개가 필요합니다. GPIO 4개는 최대 antenna 16개를 전환할 수 있습니다.
GPIO는 dfegpio[n]-gpios index 순서대로 사용합니다. 이 순서는 antenna switch pattern의 bit와 GPIO mapping에 영향을 주므로 중요합니다.
Antenna switching pattern
-------------------------
Antenna switching pattern은 각 bit를 특정 antenna GPIO pin에 적용하는 binary number입니다. 예를 들어 0x3은 index 0과 1의 antenna GPIO를 set하고 그 뒤 GPIO는 unset합니다.
지정한 DFE GPIO 수가 허용 pattern 값에 영향을 줍니다. GPIO 4개를 사용하면 pattern count는 16보다 클 수 없고 최대 허용값은 15입니다.
Pattern은 SWITCHPATTERN register write로 DFE internal memory에 저장됩니다. DFE handling code는 Constant Tone Extension(CTE)을 receive하는 Angle of Arrival(AoA) mode 또는 transmit하는 Angle of Departure(AoD) procedure에서 antenna switch pattern을 적용합니다.
DFE state
---------
DFE에는 네 operation state가 있습니다.
* Idle: PDU를 transmit합니다. SWITCHPATTERN[0]으로 antenna를 선택하며 radio controller가 dfe-pdu-antenna 값을 여기에 저장합니다.
* Guard: CTE reception 또는 transmission을 준비합니다. SWITCHPATTERN[1]을 적용해 antenna를 선택합니다.
* Reference: CTE receive 또는 transmit을 시작합니다. AoA mode에서는 reference IQ sample을 수집하며 antenna는 guard state와 같습니다.
* Switch-sample: 실제 antenna switching을 수행합니다. SWITCHPATTERN[2..N]으로 antenna를 선택하고 switch-sample period가 저장된 pattern 수보다 많으면 SWITCHPATTERN[2]로 돌아가 반복합니다.nRF5x 2.4GHz radio의 확장 연결점
Base compatible, reg, interrupts가 필수입니다. 이 binding은 Bluetooth·802.15.4·proprietary protocol에 쓰이는 nRF5x radio용이며 nRF91x baseband radio에는 해당하지 않습니다. fem은 range extender, coex는 shared-antenna arbitrator를 연결합니다.
SWITCHPATTERN[0] · PDU antenna
SWITCHPATTERN[1]
Reference IQ · same antenna
SWITCHPATTERN[2..N] loop
DFE GPIO와 pattern 수
dfe-supported는 target SoC가 제공하는 read-only capability로 취급합니다. DFE에는 antenna가 최소 2개 필요하며 GPIO 하나로 두 antenna를 전환할 수 있습니다. GPIO 4개는 pattern 16개, 최대 값 15를 표현해 antenna 12개 구성도 지원합니다. GPIO index 순서가 pattern bit mapping을 결정합니다.
공식 dfegpio0-gpios 설명의 두 DTS 예제는 property 이름을 dfegpio1-gpios로 적고 있습니다. 이를 자동 수정하지 않고 접힌 원문에 그대로 보존했으며, 번역 표에는 “pin 0 selector”라는 schema 의미와 flags cell 0 규칙을 적었습니다.
ieee802154-supported, ble-2mbps-supported, ble-coded-phy-supported, tx-high-power-supported는 hardware capability를 나타냅니다.
속성 전체 번역
공식 node 17개와 base 24개 property를 모두 번역했습니다.
노드 전용 속성 · 17개
| 이름 | 형식 | 설명과 제약 |
|---|---|---|
fem | phandle | RADIO node를 외부 Front-End Module node에 연결하는 phandle입니다. |
coex | phandle | RADIO node를 외부 radio coexistence arbitrator에 연결하는 phandle입니다. |
dfe-supported | boolean | Radio hardware가 Direction Finding Extension을 지원함을 나타냅니다. Target SoC가 제공하는 read-only 값으로 취급하고 override하지 않아야 합니다. |
dfe-antenna-num | int | DFE에 사용할 수 있는 antenna 수입니다. dfe-supported일 때만 설정하며 최소 2여야 합니다. |
dfe-pdu-antenna | int | CTE 전 PDU 송신과 radio가 DFE GPIO control을 해제할 때 사용할 antenna switching pattern입니다. SWITCHPATTERN[0]에 저장됩니다. |
dfegpio0-gpios | phandle-array | DFE pin 0의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 GPIO flags cell은 사용되지 않으므로 0이어야 합니다. |
dfegpio1-gpios | phandle-array | DFE pin 1의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 pin 0과 같은 flags 규칙을 따릅니다. |
dfegpio2-gpios | phandle-array | DFE pin 2의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 pin 0과 같은 flags 규칙을 따릅니다. |
dfegpio3-gpios | phandle-array | DFE pin 3의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 pin 0과 같은 flags 규칙을 따릅니다. |
dfegpio4-gpios | phandle-array | DFE pin 4의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 pin 0과 같은 flags 규칙을 따릅니다. |
dfegpio5-gpios | phandle-array | DFE pin 5의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 pin 0과 같은 flags 규칙을 따릅니다. |
dfegpio6-gpios | phandle-array | DFE pin 6의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 pin 0과 같은 flags 규칙을 따릅니다. |
dfegpio7-gpios | phandle-array | DFE pin 7의 GPIO pin-select입니다. dfe-supported일 때만 설정하며 pin 0과 같은 flags 규칙을 따릅니다. |
ieee802154-supported | boolean | Radio hardware가 IEEE 802.15.4 mode를 지원함을 나타냅니다. |
ble-2mbps-supported | boolean | Radio hardware가 BLE 2 Mbps mode를 지원함을 나타냅니다. |
ble-coded-phy-supported | boolean | Radio hardware가 coded BLE PHY를 지원함을 나타냅니다. |
tx-high-power-supported | boolean | Radio hardware가 high TX power setting을 지원함을 나타냅니다. |
Base binding property · 24개
공통 기본 바인딩에서 상속한 속성입니다. 이 compatible에서 사용하지 않는 속성도 공식 참조 문서에 실려 있으면 함께 표시합니다.
| 이름 | 형식 | 설명과 제약 |
|---|---|---|
wakeup-source | boolean | 이 장치를 시스템 깨우기에 사용할 수 있음을 나타냅니다. 이 속성이 있으면 깨우기 지원 플래그가 설정됩니다. 기본 상태에서는 장치의 인터럽트로 시스템을 깨우지 않으며, 실행 중에 깨우기 기능을 활성화할 수 있습니다. |
power-domain | phandle | 장치가 속한 전원 도메인의 phandle입니다. 해당 전원 도메인이 일시 중단되거나 다시 동작하면 장치에 알림이 전달됩니다. |
zephyr,pm-device-runtime-auto | boolean | 초기화 함수 실행 후 장치의 런타임 전원 관리를 자동으로 설정합니다. |
zephyr,disabling-power-states | phandles | 이 장치의 전원이 꺼지는 전원 상태 목록입니다. |
status | string | 장치의 동작 상태를 나타냅니다. 허용값: 'ok', 'okay', 'disabled', 'reserved', 'fail', 'fail-sss' |
compatible | string-array | 이 노드에 적용할 바인딩과 드라이버를 식별하는 compatible 문자열 목록입니다. 필수 |
reg | array | 장치 레지스터의 주소 범위를 지정합니다. 필수 |
reg-names | string-array | 각 register space의 이름입니다. |
interrupts | array | 장치에서 사용하는 인터럽트를 지정하는 목록입니다. 필수 |
interrupts-extended | compound | 인터럽트 컨트롤러의 phandle을 함께 지정하는 확장 형식의 인터럽트 명세입니다. |
interrupt-names | string-array | 각 interrupt의 이름입니다. |
interrupt-parent | phandle | 인터럽트 컨트롤러 노드를 가리키는 phandle입니다. |
label | string | 사람이 장치를 알아볼 수 있도록 붙이는 이름입니다. 과거에는 device_get_binding()의 인자로 사용했습니다. 사용 중단됨 |
clocks | phandle-array | 클록 게이트 또는 클록 공급원을 지정하는 phandle 배열입니다. |
clock-names | string-array | 각 clock의 이름입니다. |
#address-cells | int | 하위 노드의 reg 속성에서 주소를 나타내는 데 쓰는 셀 수입니다. |
#size-cells | int | 하위 노드의 reg 속성에서 크기를 나타내는 데 쓰는 셀 수입니다. |
dmas | phandle-array | DMA 채널을 지정하는 phandle 배열입니다. |
dma-names | string-array | 지정한 DMA 채널의 이름입니다. |
io-channels | phandle-array | I/O 채널을 지정하는 phandle 배열입니다. |
io-channel-names | string-array | 지정한 I/O 채널의 이름입니다. |
mboxes | phandle-array | 메일박스/IPM 채널을 지정하는 phandle 배열입니다. |
mbox-names | string-array | 지정한 메일박스/IPM 채널의 이름입니다. |
zephyr,deferred-init | boolean | 부팅할 때 장치를 자동으로 초기화하지 않습니다. 이후 device_init()를 호출해 직접 초기화해야 합니다. |
Source
출처
영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.