Afwijkende baudrates op PC ?

fatbeard

Honourable Member

Voor een ontwikkeling moeten we een protocol analyseren. Communicatie gebeurt via een doodgewone UART met 375kbps, 8E1.
De analyzer in de scoop kan dat, maar dan is de hoeveelheid te capturen data nogal beperkt en onvoldoende om de analyse te doen.

Het te analyseren signaal naar een PC sturen is niet direct het punt, maar op de PC zijn -voorzover ik heb kunnen vinden- alleen 'standaard' baudrates in te stellen...

Iemand enig idee hoe dat alsnog voor elkaar te krijgen? Linux of Windows maakt niet uit (al hebben we liever Linux ;)).

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

Iemand knapper dan ik zou misschien een eigen driver kunnen schrijven, die bv. onder linux een /dev/tty_375k zou aanmaken; het twijfelpunt lijkt me daarbij dat de vereiste deelfactor niet beschikbaar zou kunnen zijn in de UART.

Is het niet eerder een idee om de data op te vangen in software, op een simpel maar snel processortje? Dan bv. parallel doorgeven naar iets meer standaard.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Probeer eens terminal v1.9b by Br@y++

Ik gebruik deze terminal al jaren en ben er erg tevreden over.
Hier kan je ook een custom baudrate instellen

I would rather attempt something great and fail, than to attempt nothing and succeed

PC UART kun je op iedere gewenste baudrate zetten. Bovengrens is meestal bepaald door de chipset.
Oudere PC's hebben vaak 230kBaud als limit, nieuwere halen de 1Mbaud wel...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
elmowww

Golden Member

Met een FTDI kan je volgens mij ook willekeurige baudrates opgeven.

Wellicht is het ook afhankelijk van je programma wat je gebruikt. Ik gebruik veelal Putty, hTerm en Python. Tot nu toe ben ik er altijd uitgekomen.

PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling

Op 14 november 2019 16:36:53 schreef fatbeard:
Het te analyseren signaal naar een PC sturen is niet direct het punt, maar op de PC zijn -voorzover ik heb kunnen vinden- alleen 'standaard' baudrates in te stellen...

Kwa hardware is dat niet waar. De hardware heeft net als een uart in een MCU een deler. officiele PC hardware heeft als mogelijke baudrates: 230.4kbps/n waarbij n een geheel getal, maar minimaal 2 moet zijn.

Kortom, tussen de 230/3 en de 230/2 zit helemaal niets.

Zou je een FT232 chip gebruiken dan is de formule precies hetzelfde, maar dan is de basis frequentie iets van 6 of 12MHz. Hopelijk valt die wel te delen om in de buurt van de 375 te komen. Ohja, die basisfrequentie wordt vaak ook nog door 16 gedeeld. Net even uitgerekend... Die 375 past precies in 12 of 6MHz/16.

Omdat iedereen zegt dat die dingen ook 3mbps kunnen, zal het wel niet verplciht zijn om die deel-door-16 aan te zetten. (in de oudste PC hardware wel!)

Alternatief is om een saleae (of kloon) te nemen en dan de stream te vangen en op te slaan. Daarna kan je hem in software analyseren. Zou ook onder sigrok moeten werken heb ik begrepen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Windows programmaatje maken voor het loggen is ook wel te doen...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Of gewoon de eerste microcontroller die je in je bureaula vindt met USB en UART. Software aan elkaar knippen en plakken van voorbeelden kost je een kwartiertje.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Bij het programma Terminal kun je in ieder geval instellen, of het werkt weet ik niet aangezien ik zo even geen hw heb om te testen.

https://www.compuphase.com/software_termite.htm

Als je hardware serial poort het ondersteund kun je dit in het programma ook instellen. Er zijn ook nog wat filter plug-ins beschikbaar om bepaalde zaken eruit te lichten.

EricP

mét CE

De eerste vraag is of je hardware het lust. De 'originele' UART ging echt niet hoger dan 115k2 - de bitrate (ik neem aan dat het daarover gaat, de baudrate vind ik in deze context niet zo heel interessant) wordt ingesteld door een divider en lager dan 0 (of 1) gaat niet.

De volgende vraag is... waar wil je je analyse mee doen? Ik gebruikte vroeger ComTap heel veel. Draait onder DOS waardoor je ook bij 1 UARTs een prima samenhang tussen Tx en Rx kreeg (maar dat zal onder windows wel over zijn...).

Als je aan een terminal emulatie genoeg hebt, dan heeft 2N3055 waarschijnlijk een hapklaar antwoord voor je.

Je zou eens kunnen kijken of je ergens komt met een no-budget logical analyser (PS based uiteraard, met een beetje mazzel is je memory dan redelijk 'oneindig').

Een trucje wat ik zelf wel eens heb uitgehaald (toen het allemaal wat de snel ging voor de 8086 onder DOS :) ) was van zowel Rx als Tx het Xtal vervangen door iets met een lagere clock. Lomp maar effectief.

Tenslotte zou je eens kunnen kijken of je een datastream 'sustained' hebt of in bursts. Met een AVR ofzo maak je een interspeeder. Als het bursts zijn, dan kun je op een lagere bitrate naar je PC. Als het continu transfer is, dan kun je naar de eerste hogere waarde die je PC lust.

Veel herhaling van bovenstaande dus. Maar dat is feitelijk toch waar het op neer komt...

buckfast_beekeeper

Golden Member

Met een programma als serial portmonitor kan je de stream opslaan. Met de pro versie kan je de stream ook terug afspelen.

Honing kan je importeren, bestuiving niet.

Ik zat even in mijn eigen pc in seriele monitor van arduino ide te kijken en ik kan instellen tot 2M baud maar 375k baud zit er niet tussen maar zal wel mogelijk zijn.

Die arduino kan diverse opties hebben voor de chip die de werkelijke seriele communicatie doet.

De officiele Arduinos hebben een tijd dure FT232 chips er op gehad. Zoals ik boven schreef: Die hebben een "base-baud" van 6, 12 of misschien wel 24 MHz (ik weet niet meer welke het is, het is lang geleden dat ik dat nodig heb gehad). Dan is 375 hardwarematig mogelijk, maar veel, HEEL VEEL software vind dat je uit een lijstje moet kiezen voor een baudrate. En als ze hem er dan niet tussen zetten en je hebt de source niet: Pech! (hmm, je hebt de source WEL! (*))

Alternatief, zeker op de chinese clonen zal een PL2303 of CH341 o.i.d. zijn. Zelfde verhaal: 48MHz hebben ze nodig voor USB, dus 6, 12 of 24 als basis getal is waarschijnlijk.

Nog een alternatief, dit keer weer wel beschikbaar op de officiele arduinos is dat je een ATxxU8 als serieel chipje hebt. Dat is een microcontroller, dus die heeft weer een basis van 12 of 16Mhz wat dan door gehele getallen gedeeld moet worden voor de beschikbare baud rates.

(*) Maar of dat helpt? Ook in Linux is het heel lang geweest dat het OS met een interface werkte (#) waarbij je uit het "dit zijn veelgebruikte baudrates" lijstje moest kiezen.
(#) Ik heb in de jaren '90 geprobeerd daar verandering in te brengen, men vond het maar niets. Mijn voorstel: Verander zo snel mogelijk binnen de kernel naar een interface van: Ik wil baudrate XXX. Dat je dan naar userspace nog steeds "kies uit lijstje" houdt is prima, maar je zult zien dat je dan een upgrade pad hebt voor de interface met userspace, die dan ook snel wel gebruikt zal gaan worden. Maar nee: men wilde d'r niet aan.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

't Is ook wat dom van fabrikanten om zonodig weer een nieuwe baudrate uit te moeten vinden, i.p.v. een pseudo-standaard waarde te kiezen.
(bijv. 57k6, 115k2, 230k4, 460k8, 921k6...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

T/m 38k4 is standaard. Daarboven is nieuwe uitvinding.... Als het sneller dan 230k4 moet waarom zou 461 dan beter zijn dan 375?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Hint: kijk even naar de factor tussen die getallen.

Het rare is wel dat Arco begonnen is met een oude modem baudrate, niet met een gangbare seriële baudrate.

Het zou m.i. logischer zijn om baudrates te kiezen die het gangbare klokfrequenties perfect te maken zijn, en stappen van een factor 2 garanderen dan dat je dat altijd kunt, zolang je niet voorbij een bepaalde factor van je klokfrequentie gaat, aangezien je bij een asynchrone bus moet kunnen synchroniseren op een ontvangen startbit.

Ik meen me te herinneren dat je met Realterm onder Windows wel custom baudrates kon gebruiken, mits je hardware dat kan.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
maartenbakker

Golden Member

57k6 is geen modembaudrate. Die dingen deden nooit meer dan 56k bij mijn weten. Werden wel vaak uitgescholden voor 56k6.

Maar inderdaad, baudrates met een slim gemeenschappelijk veelvoud lijken mij ook verreweg het handigst.

[Bericht gewijzigd door maartenbakker op 15 november 2019 20:29:20 (10%)]

"The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."

57k6 is een standaard serieele snelheid, niet voor modems...
(en die verdubbelen wel degelijk: 19k2 is 2x9k6, 38k4 is 2x19k2, 57k6 is 3x19k2,...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 15 november 2019 20:27:23 schreef maartenbakker:
57k6 is geen modembaudrate. Die dingen deden nooit meer dan 56k bij mijn weten.

Het is 8000 Hz (*) samplerate met 7 bits per sample. Tijdens de inleer periode werd dan bepaald welke analoge sample waarde je moest sturen om de ADC aan de andere kant op de 0-1 overgang te laten zitten en dan de 2-3 overgang enz. Zo kan je, als je het gedrag van de lijn goed voorspelt precies 7 van de 8 bits ADC gebruiken. Dan gaat de 64000bps datastroom over het telefoon netwerk en aan de andere kant... Ehh, om 56000 bps te doen moest de andere kant dan digitaal aangesloten zijn dacht ik. Dus die krijgt dan digitaal de 64000 bits per seconde en hoeft eigenlijk alleen maar het laagste bitje weg te gooien.

(*) Ik schrijf bewust 8000Hz en niet 8kHz.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Net even getest met een USB CH341 op windows-10.
Die heeft geen moeite met vreemde baudrates. Bij 1Mb krijg je nog mooie blokgolven op TxD. 2M5 kun je ook instellen, maar dat halen de drivers niet meer.

Ook non-standaard waarden zoals 7500 of 32000 (= MIDI) gaan zonder probleem.