82 lines
3.0 KiB
Plaintext
82 lines
3.0 KiB
Plaintext
* STMicroelectronics STM32 USART
|
|
|
|
Required properties:
|
|
- compatible: Can be either:
|
|
- "st,stm32-uart",
|
|
- "st,stm32f7-uart",
|
|
- "st,stm32h7-uart".
|
|
depending is compatible with stm32(f4), stm32f7 or stm32h7.
|
|
- reg: The address and length of the peripheral registers space
|
|
- interrupts:
|
|
- The interrupt line for the USART instance,
|
|
- clocks: The input clock of the USART instance
|
|
|
|
Optional properties:
|
|
- resets: Must contain the phandle to the reset controller.
|
|
- pinctrl-names: Set to "default". An additional "sleep" state can be defined
|
|
to set pins in sleep state when in low power. In case the device is used as
|
|
a wakeup source, "idle" state is defined in order to keep RX pin active.
|
|
- pinctrl-n: Phandle(s) pointing to pin configuration nodes.
|
|
For Pinctrl properties see ../pinctrl/pinctrl-bindings.txt
|
|
- uart-has-rtscts: See description in serial.txt binding.
|
|
- rs485-rts-delay, rs485-rx-during-tx, rs485-rts-active-low,
|
|
linux,rs485-enabled-at-boot-time: See rs485.txt.
|
|
- dmas: Phandle(s) to DMA controller node(s). Refer to stm32-dma.txt
|
|
- dma-names: "rx" and/or "tx"
|
|
- wakeup-source: Bool flag to indicate this device has wakeup capabilities
|
|
|
|
Note for dma using:
|
|
- "tx" dma can be used without any constraint since it uses single
|
|
dma transfers.
|
|
- "rx" dma using requires some attention:
|
|
1) if you cannot anticipate the length of your received packets
|
|
and if your usart device embeds an internal fifo, then DON'T use
|
|
dma mode.
|
|
2) if you enable dma mode WITHOUT mdma intermediate copy (cf.
|
|
stm32-dma.txt), then the availability of the received data will
|
|
depend on the dma driver policy and it may be delayed until dma
|
|
internal fifo is full. The usart driver will see this checking
|
|
the dma residue when rx interrupt (RXNE or RTO) occurs.
|
|
3) if you enable dma mode WITH mdma intermediate copy (cf.
|
|
stm32-dma.txt) then the usart driver will never see the dma
|
|
residue becoming smaller than RX_BUF_P but it will get its
|
|
rx dma complete callback called when the cyclic transfer period
|
|
(RX_BUF_P) is reached.
|
|
The three possibilities above are ordered from the most cpu time
|
|
consuming one to the least one. The counterpart of this optimisation
|
|
is the reception granularity achievable by the usart driver, from
|
|
one byte up to RX_BUF_P.
|
|
|
|
Examples:
|
|
usart4: serial@40004c00 {
|
|
compatible = "st,stm32-uart";
|
|
reg = <0x40004c00 0x400>;
|
|
interrupts = <52>;
|
|
clocks = <&clk_pclk1>;
|
|
pinctrl-names = "default", "sleep", "idle";
|
|
pinctrl-0 = <&pinctrl_usart4>;
|
|
pinctrl-1 = <&pinctrl_usart4_sleep>;
|
|
pinctrl-2 = <&pinctrl_usart4_idle>;
|
|
pinctrl-3 = <&pinctrl_usart4>;
|
|
};
|
|
|
|
usart2: serial@40004400 {
|
|
compatible = "st,stm32-uart";
|
|
reg = <0x40004400 0x400>;
|
|
interrupts = <38>;
|
|
clocks = <&clk_pclk1>;
|
|
st,hw-flow-ctrl;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_usart2 &pinctrl_usart2_rtscts>;
|
|
};
|
|
|
|
usart1: serial@40011000 {
|
|
compatible = "st,stm32-uart";
|
|
reg = <0x40011000 0x400>;
|
|
interrupts = <37>;
|
|
clocks = <&rcc 0 164>;
|
|
dmas = <&dma2 2 4 0x414 0x0>,
|
|
<&dma2 7 4 0x414 0x0>;
|
|
dma-names = "rx", "tx";
|
|
};
|