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%)]
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%)]
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
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?)
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
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%)]
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
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.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
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
doneuitvoeren:
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.
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.
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
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