Transmițător pdi

Receptorul PDI este responsabil pentru procesarea semnalelor interfeței seriale la nivel fizic. Receptorul este format dintr-un receptor și transmițător secvențial semiduplex bidirecțional bidirecțional (identic cu modul USART în modul USRT). Receptorul acceptă capacitatea de a detecta începutul trimiterii, erorile în trimiterea, generarea parității, detectarea erorilor de paritate și detectarea coliziunilor.







PDI este disponibil prin două ieșiri:

  • PDI_CLK: intrare sincronizare PDI (resetare PIN).
  • PDI_DATA: intrare / ieșire PDI (ieșire de testare).

În plus față de acești doi pini, programatorul extern / depanatorul și microcontrolerul trebuie să conecteze liniile VCC și GND. O conexiune tipică este prezentată în Figura 29.2.


Figura 29.2. Conectarea la interfața PDI

Restul acestei secțiuni se concentrează pe producătorii de microcontrolere de programare software XMEGA.

29.3.1. Permis de muncă

Înainte de a utiliza transmițătorul PDI, trebuie să îl activați. Pentru a face acest lucru, mai întâi, este necesar să transferați linia PDI_DATA la o stare înaltă pentru un timp mai mare decât durata minimă a impulsului de resetare externă (pentru durata impulsului de resetare externă, verificați documentația pentru microcontroler). Ca urmare a acestei operații, funcția de resetare la ieșirea Resetare este dezactivată (cu condiția ca această funcție să nu fi fost dezactivată înainte de bitul de siguranță).

Următoarea acțiune care vizează permiterea funcționării PDI este menținerea liniei PDI_DATA în stare ridicată pentru 16 cicluri de PDI_CLK (16 margini în creștere). Primul ciclu PDI_CLK ar trebui să apară cu o întârziere de cel mult 100 μs după ce funcția de resetare este oprită la pinul Resetare. Dacă această cerință nu este îndeplinită, funcția Reset Reset va fi reluată automat și secvența de activare PDI va trebui reluată.

După ce ați finalizat toți pașii descriși, PDI-ul este pornit și pregătit să primească instrucțiuni. Secvența permisului de muncă este prezentată în Figura 29.3.

PIN-ul PDI_DATA are o rezistență internă de tracțiune, care este activată simultan cu PDI-ul.


Figura 29.3. PDI Secvență permisiune de lucru

În cazul în care sincronizarea liniei PDI_CLK de frecvență ar fi la aproximativ 10 kHz, acest lucru va fi perceput ca inactivitate și linia de sincronizare va dezactiva PDI și reluarea funcției de resetare y O Reset (PDI_CLK), dar cu condiția ca funcția nu a fost resetată dezactivat siguranța de biți. Dacă există întârzieri excesive în timpul rezolvării lucrării, secvența fluxului de lucru PDI va trebui să fie reluată.

Din ceea ce sa spus, rezultă că frecvența minimă de programare este de aproximativ 10 kHz.

29.3.3. Formatul parcelei și simbolurilor

Interfața PDI utilizează un format fix de trimitere. Parcela consecutivă este formată din 8 biți de date, biți de pornire, biți de stop și bit de paritate.


Figura 29.4. Format pentru trimiterea unei interfețe PDI

Există trei caractere: DATA, BREAK și IDLE. Simbolul BREAK este generat prin transmiterea a 12 biți de nivel scăzut. Simbolul IDLE este egal cu lungimea a 12 biți de nivel înalt. Ambele caractere, BREAK și IDLE, pot avea o durată mai mare de 12 biți.


Figura 29.5. Simboluri și diagrame de temporizare ale interfeței PDI

29.3.4. Transmisie și recepție consecutive

Receptorul de transmisie PDI poate funcționa fie în modul de transmisie (TX), fie în modul de recepție (RX). Implicit, funcționează în modul RX, așteptând un bit de pornire.







Programatorul și PDI funcționează în sincronie cu semnalul PDI_CLK, pe care îl generează programatorul. Relația dintre marginile impulsurilor de sincronizare și prelevarea sau modificarea datelor este fixă. Așa cum se arată în Figura 29.6 datele de ieșire (fie de programator, sau din PDI) are loc întotdeauna pe margine care se încadrează PDI_CLK, iar proba de date - la creștere PDI_CLK margine.


Figura 29.6. Schimbarea și selectarea datelor

29.3.5. Transfer de date serial

După inițierea transferului de date (controlerul PDI), transmițătorul transmite biți de date de pornire, biți de paritate și doi biți de stop prin deplasarea de-a lungul liniei PDI_DATA. Rata de transmisie este stabilită de semnalul PDI_CLK. În modul de transmisie, biții IDLE (biți unici) sunt transmiși automat pentru a umple pauzele generate în timpul transferului simbolurilor DATA. Dacă se detectează o coliziune în timpul transferului, driverul de ieșire este dezactivat și interfața intră în modul de recepție RX. așteptând simbolul BREAK.

29.3.5.1. Detectarea conflictelor de management și a coliziunilor

Pentru a evita conflictul de control atunci când și programator PDI și să încerce să gestioneze linia PDI_DATA în același timp), acesta oferă un mecanism pentru detectarea coliziunilor. Acest mecanism este modul de a controla ieșirea datelor din interfața PDI pe linia PDI_DATA. După cum se arată în figura 7, driverul de ieșire este activat numai când este necesară modificarea stării de ieșire (de la 0 la 1 sau de la 1 la 0). Acest lucru înseamnă că, dacă doi biți transmise succesiv sau mai mult cu aceeași valoare, această valoare pentru driverul de transmisie este activă numai în timpul primului ciclu de sincronizare. După ce survine primul ciclu dezactivarea drivere și în continuare producția sa este într-o stare de înaltă impedanță, și pentru menținerea nivelului stabilit în PDI_DATA linia de sus până la următoarea activare a circuitului de conducător auto corespunde bretelele adaptive.


Figura 29.7. Controlul ieșirii datelor pe linia PDI_DATA utilizând o adaptare adaptivă

Situația în care programatorul și PDI controlează simultan linia PDI_DATA este prezentată în Figura 29.8. Abilitatea de a determina corectitudinea nivelului prezent pe linia PDI_DATA este obținută de interfața PDI atunci când doi sau mai mulți biți sunt trimiși succesiv cu aceeași valoare. O coliziune este detectată dacă programatorul a mutat linia PDI_DATA într-o stare care este opusă stadiului interfeței PDI așteptate.


Figura 29.8. Detectarea conflictelor de control și a coliziunilor pe linia PDI_DATA

Dacă PDI transferă intercalarea unităților și zerourilor, atunci o coliziune nu poate fi detectată, deoarece Driverul de ieșire va fi permanent activ, excluzând posibilitatea sondajului liniei PDI_DATA. Cu toate acestea, fiecare premisă conține cel puțin o secvență de doi biți identici (biți stop unic) și, prin urmare, atunci când este trimis un mesaj, o coliziune poate fi detectată cel puțin o dată.

29.3.6. Recepție consecutivă

După detectarea bitului de pornire, receptorul continuă să primească 8 biți de date utilizând un registru de deplasare. Dacă bitul de paritate primit nu este egal cu paritatea biților de date recepționați, apare o eroare de paritate. Dacă unul sau ambii biți de oprire sunt zero, apare o eroare de trimitere. Dacă bitul de paritate are valoarea corectă și eroarea de trimitere nu este detectată, biții de date recepționați devin disponibili pentru citirea de către controlerul PDI într-un format paralel.

29.3.6.1. Detectarea simbolului BREAK

Când PDI este în modul de transmisie, transmis de caracterul BREAK programator va fi interpretat nu ca un personaj BREAK, precum și o coliziune de date. Dacă PDI funcționează în modul de primire, simbolul BREAK va fi recunoscut pentru scopul propus. Atunci când transmiterea a două caractere BREAK consecutive (ar trebui să fie separate de unul sau mai multe singur bit), ultima BREAK caractere va fi întotdeauna recunoscut pentru scopul propus, fie în citire sau modul de transmitere a fost inițial PDI.

29.3.7. Schimbați direcția

Pentru a asigura corectitudinea diagramei de transmisie semi-duplex, este prevăzut un mecanism simplu de gardă, care se aplică ori de câte ori se schimbă direcția interfeței PDI. Atunci când PDI trece de la modul de recepție la modul de transmisie, se adaugă biți suplimentari IDLE înainte ca bitul de pornire să fie transmis, numărul cărora este setat de utilizator. Întârzierea minimă în trecerea de la modul RX la modul TX este două cicluri IDLE. Durata unei astfel de întârzieri poate fi mărită prin scrierea valorii corespunzătoare pentru biții GUARDTIME din registrul de control al controlerului PDI. Valoarea implicită a bitului GUARDTIME are ca rezultat creșterea maximă a întârzierii cu 128 de biți.


Figura 29.9. Modificați direcția PDI inserând biți IDLE

Programator PDI_DATA pierde controlul asupra liniei de la punctul în care obiectivul se mută de la PDI în modul TX modul RX. Introducerea intervalului de pază face posibilă această fază de transmisie să fie mai puțin critică. Dacă programatorul se mută de la modul RX modul TX, înainte de a transmite bitul de start pentru a fi introdus cel puțin un bit la INACTIV.







Articole similare

Trimiteți-le prietenilor: