Kysymys:
Voimmeko laskea RS232-tiedonsiirtonopeuden TX-lähtösignaalista?
chiper
2017-09-11 21:01:50 UTC
view on stackexchange narkive permalink

Voimmeko laskea RS232-tiedonsiirron siirtonopeuden tai tiedonsiirtonopeuden X-lähtösignaalista?

Alla oleva kuva on RS232-tiedonsiirtosignaalista.Otin tämän kuvan 0xaa-arvolla, ja korkeuksien välinen aika on 100.us.

Kuulin, että ulkoisen oskillaattorin taajuus on 8 MHz.Voimmeko laskea baudinopeuden siitä?

Oscilloscope trace showing RS232 signal

Mielestäni EE: n pitäisi tietää, että `F = 1 / T`.
Odotin tämän olevan kysymys tiedonsiirtonopeuden havaitsemisesta ilman tietojen tietämystä kokoonpanon helpottamiseksi, mutta tämä?@EugeneSh.on enemmän kuin oikein - taajuuden määritelmän tunteminen on perustietoa työskenneltäessä elektroniikan kanssa.
Vihje: jos olet hämmentynyt jostakin tällaisesta, anna kehityskoneesi lähettää paras arvauksesi siitä, mitä luulet näkevän, ja katso miltä * tuo * näyttää laajuudeltaan verrattuna.Jos olet väärässä, tarkenna arvettasi tuodaksesi heidät lähemmäksi.
Sigrok on avoimen lähdekoodin, eikö?Kuinka ihmisten mielestä "arvaustaajuus" toimii?
Neljä vastused:
Olin Lathrop
2017-09-11 21:08:25 UTC
view on stackexchange narkive permalink

Näyttää siltä, että sinulla on noin 2,4 bitin kertaa jakoa kohti, mikä on 250 µs.Tämä asettaa jokaisen bitin ajan 104 µs.Käänteinen tulos tuottaa 9,6 kBaud.Se on yksi tavallisista baudinopeuksista, joten tämä kuulostaa melko uskottavalta.

jonk
2017-09-12 00:22:03 UTC
view on stackexchange narkive permalink

Laajennuksesi näyttää ajoituksen \ $ 100 \: \ mu \ textrm {s} \ $. Tämä voi olla joko asetat kohdistimet tai muuten mittaustoiminnon automaattinen käyttö laajuudessa. Et sano. Joko niin, olen samaa mieltä Olinin kanssa siitä, että tämä on lähellä 9600 bps, mikä on yleinen bittinopeus RS-232-viestinnässä.


Oma kommenttisi ulkoisesta kellotaajuudesta kuitenkin väittää, että totta on, että tarkka 9600 bps on totta. \ $ 8 \: \ textrm {MHz} \ $ ei jakaudu tasaisesti 9600 bps: ään.

Joitakin muita ajatuksia:

  1. Jos se todella on \ $ 100 \: \ mu \ textrm {s} \ $ bittinen leveys, ne ovat ylittäneet \ $ \ pm 2 \% \ $ sallitun tarkkuuden vaihtelun, joka on sallittu yhteiselle nopeudelle 9600 bps . (Jos haluat nähdä tämän kuvan takana olevat laskelmat ja ajatukset, katso tämä Maxim-sivu.) Jos hyväksymämme laajuuden tarkkuus on vain likimääräinen, se ei välttämättä ylitä tarkkuusvaatimuksia. Siitä huolimatta on hyvä idea, että tiedät niiden olevan.
  2. Tämä signaali ei selvästikään käytä RS-232-jännitteitä, vaan ehkä ~ \ $ 3.5 \: \ textrm {V} \ $-signalointi.
  3. Tämä signaali käyttää HI-merkkiä MARK-merkkiin (RS-232: ssa MARK on negatiivinen jännite), joten tämän on oltava loogisen tason lähtö mikrosta eikä RS-232-signaloinnista.

Jos otat vaaditun START-bitin ja pienimmän yhden bitin STOP-ajan pois, se tarkoittaa, että ainakin on todennäköisesti jäljellä seitsemän bittiä tiedoille:

enter image description here

Yllä oleva tulkitaan 0x2A: sta endianiteetista riippumatta, jos kiinnitän huomiota.

Tämä olisi kuitenkin kaavio kahdeksalle databitille:

enter image description here

Tällöin tulkinta olisi joko 0xAA tai muuten 0x55 virran endianluonteesta riippuen. Joten tämä voi edustaa 0xAA (pieni endian, joka mielestäni on yleisempää.)

Kuten näette, lähettimen ja vastaanottimen on a priori sovittava databittien lukumäärästä ja niiden endianluonteesta.

Laajuustulokset voidaan tulkita jopa pidemmiksi sarjasanoiksi. Olen nähnyt niitä aiemmin (9, yleisimmin, koska jotkut IC: t tukivat sitä, mutta olen jopa nähnyt 10 käytettyä aiemmin.)

Ilman sopimusta on vaikea olla varma.


A sivupalkkina:

Muistan päivät, jolloin teletyypit siirtyivät 5 bitistä 6 bittiin (1960-luvun alun DTE) silloin, kun RS-232 luotiin vuonna 1960, koska isälleni tällainen teletyyppi istui kotona kotitoimistossa. Kuusibittinen RS-232-tietoliikenne oli todellakin olemassa jonkin aikaa.

ASCII-koodausta käytettiin laajalti 1960-luvun lopulla ja 1970-luvun alussa, ja se on 7-bittinen koodaus. Oli hyvin yleistä, että RS-232-tietoliikenne käytti 7 bittiä dataa.

Myöhemmin, kun tietoliikennepiirit ja mikrokontrollerit tulivat yleiseen käyttöön ja 8-bittisiä rekisterikokoja oli runsaasti, RS-232: ta laajennettiin usein lähettämään / vastaanottamaan 8 bittiä kerrallaan.

Luulen, että nykyään useimmat ihmiset vain odottavat sitä käytettävän 8-bittiseen viestintään. Mutta näin ei aina ollut.

Luulen, että tiedot voisivat olla myös kaksi tavua 0x98 0xE6 19 200: lla, jaoteltuina nimellä s00011001Ss01100111S [s = start S = stop].Jotkut merkit, kuten "A" [0x41], tuottavat bittikuvioita, joita ei voida luoda millään muulla siirtonopeudella (todennäköisesti miksi Hayes valitsi "A": n ensimmäiseksi merkiksi autobaud-harjoitusjaksolle), mutta yllä oleva kuvio edustaisi kelvollista kahdentavusarja 19 200 baudilla.
Aiemmin olin ylpeä mekaanisen tekstityyppikoneen omistaja.Se oli täysin mekaaninen ja juoksi 60baud.Hyvin mekaaninen, jos et laske solenoideja ja synkronimoottoria.Startti vapautti kytkimen ja valitsinpyörä alkoi kääntyä ja siellä tapahtui asioita peräkkäin tulostuspään sijoittamisen ja vasaran laukaisemisen jälkeen.Oli niin siistiä katsella.Piti jättää se Isossa-Britanniassa, kun tulin Kanadaan.Se oli melko liian raskas toimitettavaksi.
Melko varma, että se on yksi tärkeimmistä syistä, miksi RS232: lla oli niin äärimmäiset käyttöjännitteet ja -virrat.Välissä ei ollut mitään, vain RS232-kaapeli -> solenoidi.
@supercat Joo.Se voidaan jakaa myös ajoissa.Nämä muunnelmat ovat kuitenkin alkamassa päästä pisteeseen, jossa kirjaa tarvitaan.Mutta mielipiteesi on varmasti otettu.
@Trevor En koskaan omistanut sellaista, mutta olin usein käyttänyt KSR-35: tä (erittäin vaikuttava mekaaninen nokka-pohjainen kone) ja myöhempiä, paljon halvempia ASR-33 / KSR-33 -yksiköitä.Isäni kotiimme (ennen kuin hän kuoli liikenneonnettomuudessa) ei ollut mitään näistä, mutta se oli aikaisempi 6-bittinen koodilaite, joka oli kooltaan samanlainen kuin ASR-33.
@jonk: Mielestäni 9600 ja 19200 ovat ainoat kaksi mahdollisuutta.Jos jokainen pulssi olisi 3-bittinen, ensimmäisellä tavulla olisi kehysvirhe, jos käytetään 8-bittistä dataa, ja toisella tavulla olisi kehysvirhe, jos käytetään 5, 6 tai 7-bittistä dataa.Jos jokainen pulssi olisi 4-bittinen, ensimmäisellä tavulla olisi oltava vähintään 7 databittiä, mutta toisella olisi oltava 6 tai vähemmän.
@supercat Luulen, että en aio rajoittaa kehystä.Databittien lukumäärä voi teknisesti olla mielivaltaisesti pitkä.Olen nähnyt 10 databittiä aiemmin (yhteensä 12, kehystetty), käytännössä, vaikka olen nähnyt 9 paljon enemmän, koska IC: t tukivat sitä paremmin.Mutta en laittanut sitä jonkun ohi tekemään enemmän databittejä.
8 MHz ei jaa tarkalleen 9600 Hz: iin, mutta se jaetaan 833: lla, jolloin saadaan 9603,8 Hz, mikä on hyvin 2% toleranssin sisällä.Tämä antaa bittileveydet 104μs;En ole varma, että silmäni pystyvät erottamaan sen ja 100 μs: n välillä OP: n näyttökuvassa!
@OlinLathrop, En tiedä kaikkiaan 7-bittisestä, mutta työpöydälläni on tällä hetkellä laite, joka on määritetty 7 _data_ bitille + 1 pariteettibitille.
@psmears Mielestäni teet hyvän huomautuksen.Tarkkuuskysymys sisältää myös mittauslaitteen tarkkuuden (tai sen puuttumisen).
Itse asiassa se todennäköisesti jakaa 104: llä (vs. 104,16 bar), jolloin saadaan 8x ylinäyte 9600 baudia, tai vielä todennäköisemmin 52: llä (vs. 52,083 bar), jolloin saadaan 16x ylinäyte.Vaikka voit rakentaa lähettimen ilman näytteenottoa, vastaanottimen rakentaminen on vaikeaa.
-1
@psmears: Todennäköisemmin 8 MHz jaettuna 52: llä antaa 153,6 kHz, mikä on 16 kertaa nimellinen 9600 baudinopeus, kellotaajuus, jota useimmat MCU UART: t vaativat.Todellinen nopeus on 9615,4 baudia, joka on vain 0,16% korkea.
@DaveTweed suostui.Ei ole mahdollista, että RS-232 todella käyttää solenoideja.Kun olet työskennellyt RS-232: n kanssa ja suunnitellut muutaman piirin sekä sen lähettämistä että vastaanottamista varten, RS-232: n tekniset tiedot eivät vain salli sitä.Luulen, että vastaanottimen oli esitettävä esimerkiksi 3k - 7k tuloimpedanssina.Lähetin odottaa kuormitusta tällä alueella.On myös muita teknisiä tietoja, jotka tarjoavat enemmän nauloja arkkuun.
Bilal
2017-09-12 02:32:50 UTC
view on stackexchange narkive permalink

Jos tämä koskee mikro-ohjainta, siirtonopeutta ei voida määrittää oskillaattorista, mutta 8 MHz: n kide pystyy varmasti luomaan 9600 baudia.

Voitteko mitata ja kertoa tarkan ajan ensimmäisestä matalasta viimeiseen huippuun?- Ensimmäinen tila näyttää minulta hieman poispäin.Minusta näyttää siltä, että käytät liipaisinta, voitko siirtää sen hieman korkeammalle, koska jos se on reunaliipaisin ja istuu piikkien päällä, oskilloskoopilla on mahdollisesti vaikeuksia laukaista.

Jos otat signaalin näytteestä ja mitat pienimmän havaitun leveyden, on triviaalia laskea nopeus.Ennemmin tai myöhemmin aloitusbitin on oltava '1'.
Peter Green
2017-09-12 23:48:43 UTC
view on stackexchange narkive permalink

Siirtonopeuden määrittäminen laajuusjäljestä on joskus, mutta ei aina mahdollista.

Siirtonopeus on bittijakson käänteinen, mutta signaali voi pysyä samassa tilassa useita bittijaksoja, joten et voi aina yksiselitteisesti määrittää bittijaksoa laajuusjäljestä.

Olettaen, että 8-bittistä dataa ei ole pariteettia, aaltomuotosi voi edustaa yhtä tavua, jonka bittijakso on ~ 100ns, mutta se voi myös edustaa kahta tavua, joiden bittijakso on noin 50ns.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...