Activarea port-urilor seriale suplimentare

De la YO3ITI
Sari la navigare Sari la căutare
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Discuția care urmează privește aproape în exclusivitate Raspberry Pi 4 deoarece astea sunt plăcile pe care le posed. Pentru modelele anterioare, activarea port-urilor seriale suplimentare este un pic mai complicată și o voi descrie cu altă ocazie.

Activarea

Se face adăugând următoarele secvențe în /boot/config.txt:

enable_uart=1
dtoverlay=uart5
dtoverlay=uart4
dtoverlay=uart3
dtoverlay=uart2

Ordinea nu are nici o importanță:

  • enable_uart=1 activează interfața serială; se poate configura prin intermediul raspi-config;
  • Se adaugă linia dtoverlay=uart# pentru fiecare port serial care trebuie activat, unde # este numărul UART.
  • După orice modificare în /boot/config.txt trebuie dat reboot

Comenzi utile

Afișarea funcțiilor pinilor:

$ raspi-gpio funcs

Va afișa:

GPIO, DEFAULT PULL, ALT0, ALT1, ALT2, ALT3, ALT4, ALT5
0, UP, SDA0, SA5, PCLK, SPI3_CE0_N, TXD2, SDA6
1, UP, SCL0, SA4, DE, SPI3_MISO, RXD2, SCL6
2, UP, SDA1, SA3, LCD_VSYNC, SPI3_MOSI, CTS2, SDA3
3, UP, SCL1, SA2, LCD_HSYNC, SPI3_SCLK, RTS2, SCL3
4, UP, GPCLK0, SA1, DPI_D0, SPI4_CE0_N, TXD3, SDA3
5, UP, GPCLK1, SA0, DPI_D1, SPI4_MISO, RXD3, SCL3
6, UP, GPCLK2, SOE_N_SE, DPI_D2, SPI4_MOSI, CTS3, SDA4
7, UP, SPI0_CE1_N, SWE_N_SRW_N, DPI_D3, SPI4_SCLK, RTS3, SCL4
8, UP, SPI0_CE0_N, SD0, DPI_D4, I2CSL_CE_N, TXD4, SDA4
9, DOWN, SPI0_MISO, SD1, DPI_D5, I2CSL_SDI_MISO, RXD4, SCL4
10, DOWN, SPI0_MOSI, SD2, DPI_D6, I2CSL_SDA_MOSI, CTS4, SDA5
11, DOWN, SPI0_SCLK, SD3, DPI_D7, I2CSL_SCL_SCLK, RTS4, SCL5
12, DOWN, PWM0_0, SD4, DPI_D8, SPI5_CE0_N, TXD5, SDA5
13, DOWN, PWM0_1, SD5, DPI_D9, SPI5_MISO, RXD5, SCL5
14, DOWN, TXD0, SD6, DPI_D10, SPI5_MOSI, CTS5, TXD1
15, DOWN, RXD0, SD7, DPI_D11, SPI5_SCLK, RTS5, RXD1
16, DOWN, -, SD8, DPI_D12, CTS0, SPI1_CE2_N, CTS1
17, DOWN, -, SD9, DPI_D13, RTS0, SPI1_CE1_N, RTS1
18, DOWN, PCM_CLK, SD10, DPI_D14, SPI6_CE0_N, SPI1_CE0_N, PWM0_0
19, DOWN, PCM_FS, SD11, DPI_D15, SPI6_MISO, SPI1_MISO, PWM0_1
20, DOWN, PCM_DIN, SD12, DPI_D16, SPI6_MOSI, SPI1_MOSI, GPCLK0
21, DOWN, PCM_DOUT, SD13, DPI_D17, SPI6_SCLK, SPI1_SCLK, GPCLK1
22, DOWN, SD0_CLK, SD14, DPI_D18, SD1_CLK, ARM_TRST, SDA6
23, DOWN, SD0_CMD, SD15, DPI_D19, SD1_CMD, ARM_RTCK, SCL6
24, DOWN, SD0_DAT0, SD16, DPI_D20, SD1_DAT0, ARM_TDO, SPI3_CE1_N
25, DOWN, SD0_DAT1, SD17, DPI_D21, SD1_DAT1, ARM_TCK, SPI4_CE1_N
26, DOWN, SD0_DAT2, -, DPI_D22, SD1_DAT2, ARM_TDI, SPI5_CE1_N
27, DOWN, SD0_DAT3, -, DPI_D23, SD1_DAT3, ARM_TMS, SPI6_CE1_N
28, NONE, SDA0, SA5, PCM_CLK, -, MII_A_RX_ERR, RGMII_MDIO
29, NONE, SCL0, SA4, PCM_FS, -, MII_A_TX_ERR, RGMII_MDC
30, DOWN, -, SA3, PCM_DIN, CTS0, MII_A_CRS, CTS1
31, DOWN, -, SA2, PCM_DOUT, RTS0, MII_A_COL, RTS1
32, DOWN, GPCLK0, SA1, -, TXD0, SD_CARD_PRES, TXD1
33, DOWN, -, SA0, -, RXD0, SD_CARD_WRPROT, RXD1
34, UP, GPCLK0, SOE_N_SE, -, SD1_CLK, SD_CARD_LED, RGMII_IRQ
35, UP, SPI0_CE1_N, SWE_N_SRW_N, -, SD1_CMD, RGMII_START_STOP, -
36, UP, SPI0_CE0_N, SD0, TXD0, SD1_DAT0, RGMII_RX_OK, MII_A_RX_ERR
37, DOWN, SPI0_MISO, SD1, RXD0, SD1_DAT1, RGMII_MDIO, MII_A_TX_ERR
38, DOWN, SPI0_MOSI, SD2, RTS0, SD1_DAT2, RGMII_MDC, MII_A_CRS
39, DOWN, SPI0_SCLK, SD3, CTS0, SD1_DAT3, RGMII_IRQ, MII_A_COL
40, DOWN, PWM1_0, SD4, -, SD1_DAT4, SPI0_MISO, TXD1
41, DOWN, PWM1_1, SD5, -, SD1_DAT5, SPI0_MOSI, RXD1
42, DOWN, GPCLK1, SD6, -, SD1_DAT6, SPI0_SCLK, RTS1
43, DOWN, GPCLK2, SD7, -, SD1_DAT7, SPI0_CE0_N, CTS1
44, NONE, GPCLK1, SDA0, SDA1, -, SPI0_CE1_N, SD_CARD_VOLT
45, NONE, PWM0_1, SCL0, SCL1, -, SPI0_CE2_N, SD_CARD_PWR0
46, UP, SDA0, SDA1, SPI0_CE0_N, -, -, SPI2_CE1_N
47, UP, SCL0, SCL1, SPI0_MISO, -, -, SPI2_CE0_N
48, UP, SD0_CLK, -, SPI0_MOSI, SD1_CLK, ARM_TRST, SPI2_SCLK
49, UP, SD0_CMD, GPCLK0, SPI0_SCLK, SD1_CMD, ARM_RTCK, SPI2_MOSI
50, UP, SD0_DAT0, GPCLK1, PCM_CLK, SD1_DAT0, ARM_TDO, SPI2_MISO
51, UP, SD0_DAT1, GPCLK2, PCM_FS, SD1_DAT1, ARM_TCK, SD_CARD_LED
52, UP, SD0_DAT2, PWM0_0, PCM_DIN, SD1_DAT2, ARM_TDI, -
53, UP, SD0_DAT3, PWM0_1, PCM_DOUT, SD1_DAT3, ARM_TMS, -

Afișarea selectivă a funcțiilor pinilor

Dacă vreau să văd care este alocarea funcțiilor pentru primele 15 GPIO-uri:

$ sudo raspi-gpio get 0-15

Care va afișa:

GPIO 0: level=1 fsel=0 func=INPUT pull=UP
GPIO 1: level=1 fsel=0 func=INPUT pull=UP
GPIO 2: level=1 fsel=4 alt=0 func=SDA1 pull=UP
GPIO 3: level=1 fsel=4 alt=0 func=SCL1 pull=UP
GPIO 4: level=1 fsel=0 func=INPUT pull=UP
GPIO 5: level=1 fsel=0 func=INPUT pull=UP
GPIO 6: level=1 fsel=0 func=INPUT pull=UP
GPIO 7: level=1 fsel=1 func=OUTPUT pull=UP
GPIO 8: level=1 fsel=1 func=OUTPUT pull=UP
GPIO 9: level=0 fsel=4 alt=0 func=SPI0_MISO pull=DOWN
GPIO 10: level=0 fsel=4 alt=0 func=SPI0_MOSI pull=DOWN
GPIO 11: level=0 fsel=4 alt=0 func=SPI0_SCLK pull=DOWN
GPIO 12: level=1 fsel=3 alt=4 func=TXD5 pull=NONE
GPIO 13: level=1 fsel=3 alt=4 func=RXD5 pull=UP
GPIO 14: level=1 fsel=2 alt=5 func=TXD1 pull=NONE
GPIO 15: level=1 fsel=2 alt=5 func=RXD1 pull=UP

Atenție ! Numărul GPIO-ului nu are nici o legătură cu poziția fizică a pin-ului pe header !

  • Pentru UART0 GPIO14->pin8 (TXD1) iar GPIO15->pin10 (RXD1);
  • Pentru UART5 GPIO12->pin32 (TXD5) iar GPIO13->pin33 (RXD5); vezi imaginea de mai jos:

RPi4 pinout

Link-uri externe