hallo,

ik ben bezig met de UART van een raspberry pi 5. gisteren had ik dat werkend, maar vandaag kreeg ik allemaal random waardes op de logic analyzer.
om te testen, verstuur ik vanuit de shell 0x55, maar ik kreeg veel andere waardes op de LA en zo af en toe ging het wel goed.
na een poosje zoeken bedacht ik om de data eens op de scoop te bekijken.
en daar zag ik toch wat anders dan verwacht, de spanning van de UART pulsen is maar 2V (3V3 verwacht) en wanneer ik 0x05 verstuur lijkt het helemaal fout te gaan.
de voedingsspanning is keurig 5,2 V.
het lijkt een voedings probleem te zijn, maar kan dit ook een andere oorzaak hebben, b.v. dat er ergens een instelling niet goed staat.
ik heb de verstuurde waarde met gele tape op de scoop geplakt.

Of je pi is gefrituurd (en de lage uitgangstor werkt niet meer), of er hangt nog iets anders aan het UART Tx-touwjte.

Maar wat er gebeurd is duidelijk: hij wordt niet netjes laag vanaf het (default) 1 niveau. En als ie laag wordt (als je 0x05 stuurt, bitvolgorde van UART is LSB eerst), dan gaat ie gewoon via de lekstroom omlaag.

Dat kan als er een (te grote) serieweerstand tussen je UART en je scope zit, maar dan had ie ook langzaam moeten stijgen.

Vraag 1: Krijg je nette flanken als je die pin als IO pin heen en weer toggled?

Op de pi3/4 word ttyAMA0 gebruikt door de bluetooth, durf niet te zeggen of dit ook voor de pi5 geldt.
Lees dit eens door: https://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspb…

geld ook voor de 5, die heb ik enabled in de config.txt file.

hang voor de rest niks aan de Tx
die pin output maken en togglen kan ik nog wel eens proberen.
edit: kan het ook nog op een andere UART proberen.

[Bericht gewijzigd door trix op (14%)]

Misschien nog bruikbaar met een extra pull-down weerstand van 4k7.

Ja, hier gaat duidelijk iets niet goed, er lijkt iets van een R-C aan die pen te hangen? Je verwacht een mooie blokgolf, en geen haaientanden.

3v3 uitgangen van een pi zijn erg dicht bij die werkelijke 3v3

[Bericht gewijzigd door Sine op (15%)]

Lijkt wel of de "pinctrl" niet goed staat en dat die nu als open drain geconfigureerd is.

run eens op die output pin:

gpioinfo <pin nummer of naam>

Zou de configuratie moeten displayen.

De Rpi5 gebruikt het nieuwe gpiod framework en niet meer de sysfs gpio-class.

[Bericht gewijzigd door henri62 op (17%)]

Op maandag 12 januari 2026 00:39:08 schreef henri62:
Lijkt wel of de "pinctrl" niet goed staat en dat die nu als open drain geconfigureerd is.

Als open source dan. Hij wordt snel hoog, maar langzaam laag. Open drain zou je andersom verwachten, maar ik heb nog nooit een GPIO interface gezien waar de bovenste tor van een totempole apart kunt bedienen.

(Of is de bovenste tor een p-fet, zodat het nog steeds open drain is, maar dan andersom?)

De bovenste is altijd een P-Fet. Anders kun je hem nooit aansturen met de beschikbare 3V3.

Op maandag 12 januari 2026 09:01:29 schreef blurp:
[...]

Als open source dan. Hij wordt snel hoog, maar langzaam laag. Open drain zou je andersom verwachten, maar ik heb nog nooit een GPIO interface gezien waar de bovenste tor van een totempole apart kunt bedienen.

Oops, ja dat bedoelde ik ook, open source, was al laat gisteren...
@deKees: Technish gezien heb je gelijk. Maar jullie snappen wat ik bedoel.

Algemeen: Alleen de "bovenste" fet sturen heb ik wel eens ooit gezien, of de CPU op de RPi dat ook kan weet ik niet.

[Bericht gewijzigd door henri62 op (11%)]

Ja, de CPU van de RPI die kan dat. In de AVR tijd was het zo dat je niet alle opties had, maar sinds dat je goedkope ARM CPUs kan kopen, hebben de meeste gewoon pullup, pulldown, tristate en driven.

Voor de standaard I2C IO draadjes, dus laag mag je hem trekken, hoog moet met een weerstand gebeuren... die doe je dan door je output op "0" te zetten en als je 0 wilt doen maak je hem output en voor "hoog" maak je hem weer input.

Doe je datzelfde maar dan met het output register op "1" krijg je golf vormpjes zoals TS laat zien.

Ehh asjemenou!

Ik heb iets vergelijkbaars. De eerste zag er goed uit, maar ik was te laat om hem te vangen. Ik vermoed dat m'n GND los hangt.

Kijk: Zo hoort het.

Voor degenen die de bitjes willen decoderen: echo hoi > /dev/ttyAMA0

Edit: Raspberry Pi 4 Model B Rev 1.4
De raspberry bij m'n scope in de buurt blijkt een '4 te zijn.

Ohja:

soldafix:~> gpioinfo |grep 14
        line  14:       "TXD1"       unused   input  active-high 
soldafix:~> 

nu ik de scoop beelden van rew zie valt het me op dat op mijn scoop de vertikale lijnen wel zichtbaar zijn.
komt dat omdat de stijgtijd voldoende lang is, of doet de scoop "dit zelf invullen" ?

Bij rew zijn de verticale lijnen ook zichtbaar (als je inzoomt), maar wel heel dun.

De skoop vult die zelf in. En daar zijn ook opties voor in de instellingen.

Een digitale skoop vangt alleen meetpunten, en die worden dan -al dan niet- met elkaar doorverbonden.

In theorie heeft mijn scoop met 1000 puntjes per microseconde lopen sampelen. Ik zou dan verwachten dat ie toch wel enkele samples op de flank heeft gezien. Maar mogelijk, om het displayen makkelijker te maken heeft ie bij het "uittreksel maken" voor het scherm gewoon punten overgeslagen. Anderzijds, hij kan zowiezo zien dat er een snelle flank is geweest dus dat ie maar beter NIET een dikke lijn kan tekenen als ie "toevallig" een sample halverwege zou tegenkomen. Dit "dunne lijn tekenen" is omdat zo'n digitale scoop probeert een analoge na te doen. Op een analoge, als je signaal heel snel verandert, wordt het lijntje dunner en minder zichtbaar.

Maar goed. @trix: Op welke pin zit je te meten?

Kan je

#!/bin/sh
# hoi.sh -- (C) REW
while true ; do
  echo hoi
  sleep 5
done

uitvoeren:

sh ./hoi.sh > /dev/ttyAMA0

?

Dan met de scope op pin 8 kijken.

Als je niets ziet, dan zit je "goede UART" nog steeds met je bluetooth verbonden. Dat wil je niet. Zet dan de goede uart op die pin8 met

dtoverlay=disable-bt

in /boot/config.txt of /boot/firmware/config.txt

Ohja, Met raspi-config uart-hardware aanzetten en "console on uart" uit. Ook "login on uart" (of "kernel output") uitzetten als je dat kan vinden.

ik ga dat morgenavond testen, daar moet ik voor naar de schuur.
ook test ik dan met toggle op GPIO14 (als output)
en een pull-down weerstand op de Tx.

maar ik ben er zeker van dat dtoverlay=disable-bt in de config.txt file staat.
maar dat controleer ik morgen ook uiteraard.

Beetje offtopic, maargoed:

Zet SSH aan op je pi. Dan kun je altijd vanuit je luie stoel inloggen op de pi en kijken wat er in /boot/firmware/config.txt staat.

ik ben pas 2 weken bezig met de raspberry pi, dus dat moet ik nog eens uitzoeken.

vanmiddag wat kunnen testen. 0x55 over uart0 & uart2 gestuurd. op uart0 nog steeds fout en op uart2 goed.
1e test met een pull-down van 4k7 gaf meteen de oplossing.

wat er nou precies is fout gegaan :? :? :?

0x05 op de gele tape klopt niet, dit moet 0x55 zijn.

Die 4K7 pull-down is wel een lapmiddeltje. Het ziet ernaar uit dat je Raspberry stuk is. Als de Pull-down transistor van de TxD lijn niet meer werkt dan krijg je precies dit beeld. Met dat weerstandje kun dan toch weer vooruit.

We weten nog steeds niet wat gpioinfo zegt over die pin!

ik gebruik die uart ook niet meer, er zitten 5 uarts op.
gpioinfo is dat een instructie ? ik zal zometeen eens kijken.

omdat ik niet goed weet waar te kijken (en te begrijpen wat er nou precies staat) zet ik hier maar de volledige inhoud van gpioinfo:


gpiochip0 - 54 lines:
	line   0:	"ID_SDA"        	input
	line   1:	"ID_SCL"        	input
	line   2:	"GPIO2"         	input
	line   3:	"GPIO3"         	input
	line   4:	"GPIO4"         	input
	line   5:	"GPIO5"         	input
	line   6:	"GPIO6"         	input
	line   7:	"GPIO7"         	input
	line   8:	"GPIO8"         	input
	line   9:	"GPIO9"         	input
	line  10:	"GPIO10"        	input
	line  11:	"GPIO11"        	input
	line  12:	"GPIO12"        	input
	line  13:	"GPIO13"        	input
	line  14:	"GPIO14"        	input
	line  15:	"GPIO15"        	input
	line  16:	"GPIO16"        	input
	line  17:	"GPIO17"        	input
	line  18:	"GPIO18"        	input
	line  19:	"GPIO19"        	input
	line  20:	"GPIO20"        	input
	line  21:	"GPIO21"        	input
	line  22:	"GPIO22"        	input
	line  23:	"GPIO23"        	input
	line  24:	"GPIO24"        	input
	line  25:	"GPIO25"        	input
	line  26:	"GPIO26"        	input
	line  27:	"GPIO27"        	input
	line  28:	"PCIE_RP1_WAKE" 	input
	line  29:	"FAN_TACH"      	input
	line  30:	"HOST_SDA"      	input
	line  31:	"HOST_SCL"      	input
	line  32:	"ETH_RST_N"     	output active-low consumer="phy-reset"
	line  33:	"-"             	input
	line  34:	"CD0_IO0_MICCLK"	output consumer="cam0_reg"
	line  35:	"CD0_IO0_MICDAT0"	input
	line  36:	"RP1_PCIE_CLKREQ_N"	input
	line  37:	"-"             	input
	line  38:	"CD0_SDA"       	input
	line  39:	"CD0_SCL"       	input
	line  40:	"CD1_SDA"       	input
	line  41:	"CD1_SCL"       	input
	line  42:	"USB_VBUS_EN"   	output
	line  43:	"USB_OC_N"      	input
	line  44:	"RP1_STAT_LED"  	output active-low consumer="PWR"
	line  45:	"FAN_PWM"       	output
	line  46:	"CD1_IO0_MICCLK"	output consumer="cam1_reg"
	line  47:	"2712_WAKE"     	input
	line  48:	"CD1_IO1_MICDAT1"	input
	line  49:	"EN_MAX_USB_CUR"	output
	line  50:	"-"             	input
	line  51:	"-"             	input
	line  52:	"-"             	input
	line  53:	"-"             	input
gpiochip10 - 32 lines:
	line   0:	"-"             	input
	line   1:	"2712_BOOT_CS_N"	output active-low consumer="spi10 CS0"
	line   2:	"2712_BOOT_MISO"	input
	line   3:	"2712_BOOT_MOSI"	input
	line   4:	"2712_BOOT_SCLK"	input
	line   5:	"-"             	input
	line   6:	"-"             	input
	line   7:	"-"             	input
	line   8:	"-"             	input
	line   9:	"-"             	input
	line  10:	"-"             	input
	line  11:	"-"             	input
	line  12:	"-"             	input
	line  13:	"-"             	input
	line  14:	"PCIE_SDA"      	input
	line  15:	"PCIE_SCL"      	input
	line  16:	"-"             	input
	line  17:	"-"             	input
	line  18:	"-"             	input
	line  19:	"-"             	input
	line  20:	"PWR_GPIO"      	input active-low consumer="pwr_button"
	line  21:	"2712_G21_FS"   	input
	line  22:	"-"             	input
	line  23:	"-"             	input
	line  24:	"BT_RTS"        	input
	line  25:	"BT_CTS"        	input
	line  26:	"BT_TXD"        	input
	line  27:	"BT_RXD"        	input
	line  28:	"WL_ON"         	output consumer="wl-on-reg"
	line  29:	"BT_ON"         	input
	line  30:	"WIFI_SDIO_CLK" 	input
	line  31:	"WIFI_SDIO_CMD" 	input
gpiochip11 - 15 lines:
	line   0:	"RP1_SDA"       	input
	line   1:	"RP1_SCL"       	input
	line   2:	"RP1_RUN"       	output consumer="RP1 RUN pin"
	line   3:	"SD_IOVDD_SEL"  	output consumer="vdd-sd-io"
	line   4:	"SD_PWR_ON"     	output consumer="sd-vcc-reg"
	line   5:	"SD_CDET_N"     	input active-low consumer="cd"
	line   6:	"SD_FLG_N"      	input
	line   7:	"-"             	input
	line   8:	"2712_WAKE"     	input
	line   9:	"2712_STAT_LED" 	output active-low consumer="ACT"
	line  10:	"-"             	input
	line  11:	"-"             	input
	line  12:	"PMIC_INT"      	input
	line  13:	"UART_TX_FS"    	input
	line  14:	"UART_RX_FS"    	input
gpiochip12 - 6 lines:
	line   0:	"HDMI0_SCL"     	input
	line   1:	"HDMI0_SDA"     	input
	line   2:	"HDMI1_SCL"     	input
	line   3:	"HDMI1_SDA"     	input
	line   4:	"PMIC_SCL"      	input
	line   5:	"PMIC_SDA"      	input
gpiochip13 - 4 lines:
	line   0:	"WIFI_SDIO_D0"  	input
	line   1:	"WIFI_SDIO_D1"  	input
	line   2:	"WIFI_SDIO_D2"  	input
	line   3:	"WIFI_SDIO_D3"  	input