deel 3: seriële communicatie
TRANSCRIPT
transmissie over 1 lijn.
Eenvoudigste manier: schuifregister: 74HC595 (=synchroon)
PIN 1-7, 15 Q0 tot Q7 Output Pin
PIN 8 GND Ground, Vss
PIN 9 Q7" Serial Out
PIN 10 MR Master Reclear, active low
PIN 11 SH_CP Shift register clock pin
PIN 12 ST_CP Storage register clock pin (latch pin)
PIN 13 OE Output enable, active low
PIN 14 DS Serial data input
PIN 16 Vcc Positive supply voltage
Seriële communicatie
Werking:
• via DS wordt 0 of 1 aangeboden.
• Tijdens opgaande flank op SHCP ingeschoven
in shift register (doe dit 8x)
• Tijdens opgaande flank op STCP: 8-bit transfer
van shift naar storage register.
• /MR: master reset, actief laag.
• /OE: output enable, actief laag.
Seriële communicatieprobleem: verbinding tussen terminal en computer?
Men maakte gebruik van bestaande bedrading: telefoon.
RS232 Gemoduleerd signaal over telefoonlijn RS232
Computer A
Modem A
Computer B
Modem B
Modem: modulator/demodulator.
Wat is moduleren?
is het combineren van een informatiesignaal met een draaggolf met een hogere frequentie, zodat een signaal ontstaat met een frequentieband
rondom de frequentie van de draaggolf. (bron: Wikipedia).
Digitale data verzenden via telefoonlijn is zeer moeilijk wegens de beperkte bandbreedte. Dit werd opgelost door 0 en 1 voor
te stellen door 2 verschillende frequenties.
0 -> sinus van 1070Hz
1 -> sinus van 1270Hz
Deze methode = frequency shift keying.
Maximale overdrachtssnelheid? • Afhankelijk van de frequentie van de draaggolf. Theoretisch bij FSK duurt verzenden van 1 bit 1/laagste
frequentie = 1 / 1070 = 0,93ms. Dit veronderstelt 1 bit = 1 periode.
In de praktijk: meerdere periodes per bit. Gangbaar voorbeeld : 300 baud = 300 bits per seconde. Periode is
1/300 = 3,33ms. Omgerekend dus 3 a 4 periodes/bit.
MFSK: multiple frequency shift keying.
• In plaats van 2 worden meerdere frequenties gebruikt. In een voorbeeld met 4 frequenties A,B,C en D zal elke
frequentie 2 bits overdragen omdat A=00, B=01, C=10 en D=11, waardoor het aantal bps verdubbelt. De
baudrate blijft echter dezelfde aangezien de vier frequenties gedurende eenzelfde tijd verstuurd worden.
Baudrate = aantal gegevenseenheden/seconde.
Bitrate = aantal bits per seconde.
Simplex, duplex,…
• Simplex: communicatie in 1 richting. Vb.: omroepsysteem.
• Half-duplex: communicatie in 2 richtingen, maar niet tegelijkertijd. Vb.: walkie-talkie
• Full duplex: communicatie tegelijkertijd in 2 richtingen. Vb.: telefoon.
Seriële communicatie
Seriële communicatie
Signaalniveau’s:
Logische 1: MARK spanning tussen -3 en -15V
Logische 0: SPACE spanning tussen +3 en +15V
Computer A
Modem A
GND
TXD RXD
RXD TXD
RTS
CTS
DSR
DCD
DTR
RIRing indicator – er wordt gebeld...
Data terminal ready – PC is klaar
Data carrier detect – draaggolf gedetecteerd
Data set ready – er is nieuwe data ontvangen
Clear To Send – ik ben klaar om te zenden
Request to send – mag ik beginnen zenden?
2 snelle datalijnen – Full duplex
SUB D 9
FEMALE
SUB D 25
MALE
USB to COM
Converter cable
Op microcontrollerniveau worden TTL-niveau’s gebruikt: 0 en +5V.
Onderling verbinden : geen probleem.
Verbinden met “echt” RS232 systeem : omvormer nodig!
Bekendste chip: MAX232.
Seriële communicatie
Leonardo: Serial en Serial1
De Leonardo heeft 2 seriële kanalen: Serial en Serial1.
• Serial loopt via de USB kabel naar de COMx op de PC.
• Serial1 loopt via pinnen 0 en 1.
Seriële communicatie: (asynchroon)
• Baudrate: hoeveelheid gegevenseenheden per seconde. Bij seriële communicatie zoals op de
Arduino is de gegevenseenheid één bit, dus baud = bit/sec.
Bij andere toepassingen hoeft dit niet het geval te zijn.
• Asynchroon: nood aan start- en stopbit, dus 10 bits versturen om één byte over te brengen.
Indien pariteit: nog één extra bit.
Serial
Seria
l1Seriële communicatie
Pariteit:
• Eenvoudige manier om fouten te detecteren. Even pariteit of oneven pariteit.
Het pariteitsbit zorgt dat het totaal aantal enen (inclusief pariteitsbit) even (bij even pariteit) of oneven
(bij oneven pariteit) is.
Welke pariteit wordt gebruikt in bovenstaand voorbeeld?
Seriële communicatie
Eigenschappen:
• Differentieel signaal op een positieve en negatieve lijn. Negatieve lijn is inverse
van positieve lijn.
• Tot 32 apparaten op één bus.
• Twee versies:
• 2-draads: half duplex
• 4-draads: full duplex
• Multi drop: één apparaat tegelijk actief op de bus.
Eigenschappen:
• Differentieel signaal op een positieve en negatieve lijn. Negatieve lijn is inverse
van positieve lijn.
• Tot 32 apparaten op één bus.
• Twee versies:
• 2-draads: half duplex
• 4-draads: full duplex
• Multi drop: één apparaat tegelijk op de bus.
Opgepast: afsluitweerstanden.
Afsluitweerstanden zijn nodig om reflecties in het signaal tegen te gaan.
Mogen alleen aan beide uiteinden actief zijn.
• Ontwikkeld door Philips. Bij Arduino spreekt men over TWI: two wire interface
vanwege patentrechten.
• Tot 127 apparaten op één bus.
• Elk apparaat heeft een uniek adres
• Datarate tot 400kHz.
• Twee lijnen: SDA en SCL
• Master-slave configuratie
• Pull-up weerstanden (meestal verantwoordelijkheid van de master.)
I²C: inter IC connectivity
• Open-drain bus. Apparaat trekt lijn naar massa, tegen pull-up weerstanden in.
• Bidirectioneel
• Elk apparaat kan master of slave zijn, en wisselen op verschillende tijdstippen.
• SCL = clock.
• In normale omstandigheden hoog.
• Slaaf kan lijn laag trekken om aan te geven dat hij meer tijd nodig heeft.
• Gepulst door master tijdens data overdracht.
• SDA = data
• Totale communicatie bestaat uit verschillende delen:
start – adressering – data –stop
SDA laag terwijl SCL hoog = start. Normaal verandert SDA alleen wanneer SCL laag
SDA hoog terwijl SCL hoog = stop.
I2C adres transmissie
Data wordt altijd gelezen op stijgende flank van klok.Adres zelf is 7 bit. 8e bit geeft
lezen (1) of schrijven (0) aan.
Adressen per apparaat toegekend door Philips/NXP
• Betalend
• gepatenteerd
Voorbeeld : kompas (adres=0xC0)
Seriële communicatie variant: WS2812 RGB led
Din laag voor langer dan 50µs -> reset
Daarna: eerste 24 die binnenkomen worden verwerkt als GRB. De rest wordt
doorgestuurd via Dout naar de volgende LED. Zodra er een reset optreedt worden
de GRB waarden aan de PWM controller doorgegeven.
Maximum 1024 LED’s na elkaar.
1024 x 1,25µs x 24bit/LED = 30.720 µs = goeie 30ms