Introducere

În această a doua postare din seria despre Bluetooth 5, acoperim noua caracteristică a vitezei 2x îmbunătățite, împreună cu o prezentare generală a debitului pentru o aplicație BLE (postarea anterioară a trecut în revistă noile caracteristici ale Bluetooth 5 în general și a acoperit în mod specific caracteristica de creștere a capacității de reclamă).

În primul rând, trebuie să înțelegem că vitezele anunțate (1 Mbps și noul 2 Mbps) sunt doar teoretice și sunt reduse atunci când vine vorba de debitul aplicației. Acest lucru se datorează mai multor motive pe care le vom trece în revistă în secțiunea următoare.

Caracteristica Bluetooth 5 „2x speed” necesită o actualizare hardware, astfel încât dispozitivele/cipurile/modulele mai vechi nu o vor suporta. De asemenea, este important de reținut că, pentru a obține acest debit mai mare, va fi necesar ca ambele dispozitive BLE care comunică între ele să suporte noul LE 2M PHY (care face posibil transferul de date la această viteză mai mare).

Noul LE 2M PHY, precum și originalul LE 1M PHY, sunt ambele numite PHY-uri necodificate, deoarece utilizează o reprezentare cu 1 simbol pentru fiecare bit de date (în comparație cu noul LE Coded PHY, care utilizează o reprezentare cu 2 sau 8 simboluri pentru fiecare bit de date).

Un alt lucru important de reținut este că, atunci când utilizați PHY-ul cu viteză mai mare, obțineți de fapt un consum de energie mai mic (având în vedere că transferați aceeași cantitate de date). Acest lucru se datorează faptului că timpul de conectare radio este redus fără ca puterea de transmisie să fie crescută. Acest lucru, la rândul său, îmbunătățește, de asemenea, coexistența cu alte tehnologii fără fir din spectrul de 2,4 GHz (de asemenea, datorită reducerii timpului de conectare radio).

În această postare, vom aborda:

  • Care este debitul practic la care ne putem aștepta de la BLE?
  • Noul PHY de 2M al Bluetooth 5 pentru transferul de date
  • Care sunt factorii care influențează/determină debitul de date?
  • Cum calculați debitul de date al aplicației dumneavoastră?
  • Cum maximizați debitul de date?
  • Testarea, măsurarea și calcularea debitului de date utilizând două kituri de dezvoltare din seria nRF52

De ce este imposibil să se atingă vitezele teoretice ale BLE?

Ratele de date de 1 Mbps (LE 1M PHY), 2 Mbps (LE 2M PHY), 125 kbps și 500 kbps (ambele utilizând LE Coded PHY cu S=8 și, respectiv, S=2) sunt ratele la care radioul transmite date, dar acest lucru nu este realizabil pentru debitul aplicației din următoarele motive:

  • Limitația numărului de pachete pe interval de conectare
  • Retârzie între pachete (IFS – Inter Frame Space) (150 us) (150 us)
  • Pachete goale necesare pentru a fi trimise de un dispozitiv chiar dacă nu există date. disponibile pentru transmisie
  • Packet overhead – nu toți octeții dintr-un pachet sunt utilizați pentru sarcina utilă

Pentru a înțelege mai bine acești factori și pentru a înțelege care este impactul asupra debitului aplicației, trebuie să ne uităm mai în profunzime la formatul pachetelor. Următoarea figură arată cum arată pachetele de date LE 1M PHY și 2M PHY:

Partea care ne interesează (și cea care definește cu adevărat datele aplicației) este sarcina utilă ATT. După cum puteți vedea din figură, există un număr de octeți de suprasolicitare care sunt utilizați de fiecare strat în Bluetooth Low Energy.

  • În 4.0 și 4.1, sarcina utilă ATT maximă este de 20 de octeți.
  • În 4.2 și 5.0, o nouă caracteristică numită Data Length Extensions (DLE) permite ca sarcina utilă ATT să conțină până la 244 de octeți de date.

Viteza Bluetooth 5 : Viteză de 2 ori mai mare utilizând noul PHY 2M

Este util să înțelegem limitările utilizării noului PHY LE 2M în Bluetooth 5:

  • Nu poate fi utilizat pentru a transmite anunțurile primare (pe canalele primare).
  • Pot fi utilizate pentru „pachetele auxiliare” secundare transmise pe aceleași canale ca și pachetele de date (37 de canale: 0-36).
    Pentru a afla mai multe despre reclamele primare și secundare, consultați postarea mea anterioară de pe blog: Advertisements Bluetooth 5: Tot ce trebuie să știți.
  • LE 1M este obligatoriu, în timp ce LE 2M este opțional. Așadar, nu toate cipurile care pretind că sunt compatibile cu Bluetooth 5 pot gestiona neapărat debitul mai mare.
  • Anunțurile și descoperirea pot avea loc pe LE 2M PHY, iar apoi conexiunile au loc pe canalul de anunțuri secundare folosind LE 2M PHY

Transferul de date de aplicații de la un dispozitiv la altul are loc de obicei în timpul unei conexiuni între cele două dispozitive. Dispozitivele conectate pot negocia utilizarea unui PHY diferit prin intermediul procedurii de actualizare PHY. Aceasta poate fi inițiată fie de către sclav, fie de către maestru după stabilirea unei conexiuni, dar maestrul va lua în cele din urmă decizia finală cu privire la PHY-urile utilizate pentru fiecare direcție (pe baza cererii sclavului și a PHY-urilor pe care le acceptă maestrul).

Factori care influențează/determină debitul de date

Există câțiva factori care influențează debitul de date al unei aplicații BLE. Cei mai comuni sunt:

  • FY-ul utilizat (LE 1M vs. LE 2M vs. LE Codat (S=2 sau S=8))
  • Intervalul de conectare
  • Numărul maxim de pachete pe interval de conectare
  • Unitatea maximă de transmisie ATT (ATT MTU)
  • Extinderea lungimii datelor (DLE)
  • Tipul de operație: Scriere cu răspuns vs. Scriere fără răspuns, Indicații vs. Notificări
  • Inter Frame Space (IFS): interval de timp între pachetele consecutive (150 us)
  • Transmiterea pachetelor goale
  • Packet overhead – nu toți octeții, într-un pachet, sunt utilizați pentru sarcina utilă a aplicației

Să trecem în revistă fiecare dintre acestea mai detaliat.

PHY

Există practic trei PHY-uri în Bluetooth 5: PHY-ul original de 1 Mbps, noul PHY de 2 Mbps și PHY-ul codificat (cu S=2, sau S=8). PHY-ul utilizat va avea un impact direct asupra debitului maxim de date pe care îl puteți obține, deoarece determină rata reală de date brute în care pachetele sunt trimise prin aer.

Interval de conectare & max packets per connection event

Intervalul de conectare determină efectiv câte pachete pot fi trimise în timpul unui eveniment de conectare. Cu cât valoarea este mai mare, cu atât mai multe pachete pot fi trimise în cadrul unui eveniment de conectare (până la o anumită limită pentru unele dispozitive).

Aflați mai multe despre intervalele de conectare: BLE connection intervals and events

Cu toate acestea, numărul de pachete pe eveniment de conectare depinde de dispozitiv și de stiva BLE, deci este limitat și diferă între dispozitive și versiunile de stivă pe un anumit dispozitiv. Această valoare depinde, de asemenea, de funcționarea dispozitivului, astfel încât este posibil ca radioul să fie nevoit să se ocupe de alte evenimente, iar numărul de pachete trimise per eveniment de conectare să nu atingă valoarea maximă permisă de stivă. De exemplu, numărul diferă între iOS și Android și se modifică, de asemenea, în funcție de versiunea sistemului de operare care rulează pe dispozitiv.

Câteodată este utilă actualizarea dinamică a parametrilor de conectare în funcție de cazul de utilizare. Cu toate acestea, rețineți că este la latitudinea stăpânului să accepte aceste recomandări sau să actualizeze parametrii pentru a le acomoda.

Data Length Extensions (DLE)

Această caracteristică permite ca dimensiunea pachetului să conțină o cantitate mai mare de sarcină utilă (Până la 251 de octeți față de 27 când este dezactivată). Această caracteristică a fost introdusă în versiunea 4.2 a specificațiilor Bluetooth.

ATT Maximum Transmission Unit (ATT MTU)

ATT MTU Determină cantitatea maximă de date care poate fi gestionată de emițător și receptor și pe care aceștia o pot păstra în tampoanele lor.

Valoarea MTU afectează cantitatea de date de supraîncărcare (în special antetul ATT care este de 3 octeți). MTU ATT minimă permisă este de 27 de octeți. Acest lucru permite un maxim de 20 de octeți de sarcină utilă ATT (3 octeți sunt folosiți pentru antetul ATT și 4 octeți pentru antetul L2CAP).

Nu există o limită în specificație cu privire la cât de mare poate fi valoarea MTU, dar stiva specifică utilizată poate avea propriile limitări. De exemplu, dacă activați DLE, atunci puteți transfera până la 251 – 4 = 247 de octeți (după deducerea dimensiunii L2CAP Header). După luarea în considerare a antetului ATT (3 octeți), ne rămân 244 de octeți pentru datele efective ale sarcinii utile ATT. Dacă MTU este de cel puțin 247 de octeți, atunci MTU va încăpea într-un singur pachet. În cazul în care MTU este mai mare de 247 de octeți, atunci MTU se va întinde pe mai multe pachete, ceea ce va duce la scăderea debitului (din cauza supraîncărcării pachetelor și a intervalului de timp dintre pachete).

MTU efectivă este determinată de valoarea minimă a MTU ATT pe care o acceptă clientul și serverul. De exemplu, dacă un client suportă un ATT MTU de 100 de octeți, iar serverul răspunde că suportă un ATT MTU de 150 de octeți, atunci clientul va decide că ATT MTU care va fi utilizat pentru conexiune de acum încolo este de 100 de octeți.

Tip de operație: Scriere cu răspuns vs. Scriere fără răspuns, Indicații vs. Notificări

Dacă se dorește un debit mare, atunci putem utiliza Scriere fără răspuns sau Notificări pentru a transfera datele de la client la server și de la server la client. Aceste operații elimină necesitatea ca celălalt dispozitiv să confirme primirea datelor și să răspundă înainte ca următorul bloc de date să poată fi trimis.

Inter Frame Space (IFS): intervalul de timp dintre pachete consecutive (150 us)

Din specificația Bluetooth:

4.1.1 Inter Frame Space

Inter Frame Space

Intervalul de timp dintre două pachete consecutive pe același index de canal se numește Inter Frame Space. Acesta este definit ca fiind timpul scurs de la sfârșitul ultimului bit al pachetului anterior până la începutul primului bit al pachetului următor.
Spațiul Inter Frame este desemnat „T_IFS” și trebuie să fie de 150 μs.

Transmiterea pachetelor goale

Dacă dispozitivul care primește date nu are date de trimis înapoi, trebuie totuși să trimită un pachet gol, conform specificației Bluetooth.

Pachet overhead

După cum am văzut în figura formatului pachetului, pachetul include unele date overhead care nu contează pentru datele aplicației dumneavoastră (date ATT). Practic, acești octeți vor consuma o parte din rata de transfer de date, în timp ce nu iau în considerare niciun octet trimis ca parte a datelor aplicației dumneavoastră.

Calcularea debitului datelor aplicației

Marea întrebare este: cum calculăm debitul aplicației noastre?

După cum am menționat anterior, există câteva variabile care au impact asupra debitului de date:

  • Versiunea Bluetooth & PHY utilizat
  • DLE: Data Length Extensions – activat sau nu
  • Valoare MTUATT
  • Intervalul de conectare
  • Numărul maxim de pachete pe eveniment de conectare
  • Operațiune (scrieri cu răspunsuri vs. scrieri fără răspunsuri și notificare vs. indicație)
  • Inter Frame Space (IFS): 150 microsecunde

Versiunea Bluetooth și PHY determină rata brută de transfer de date. De exemplu, dacă folosim versiunea Bluetooth 4.2 și PHY LE 1M, atunci rata de transfer este de 1 Mbps. Dacă, pe de altă parte, folosim Bluetooth 5 LE PHY codificat LE cu S=8, atunci rata de transfer de date coboară la 125 kbps.

DLE, ATT MTU, intervalul de conectare, numărul maxim de pachete pe interval de conectare, Operațiunea și IFS, toate acestea determină porțiunea din timpul pe radio care este utilizată pentru transferul real de date.

Formatul pachetelor joacă un rol important în ceea ce privește cantitatea de date transferate care reprezintă datele reale ale aplicației dumneavoastră. Atât LE 1M PHY cât și LE 2M PHY au un format de pachete similar. LE Coded PHY are un format de pachete semnificativ diferit, așa că vom analiza aceste două cazuri separat.

Calcularea LE 1M PHY și LE 2M PHY

Referindu-ne din nou la formatul pachetelor pentru LE Uncoded PHYs:

Cantitatea de supraîncărcare pentru fiecare PHY este ușor diferită. Preambulul este de 1 octet în cazul PHY-ului de 1M și de 2 octeți în cazul PHY-ului de 2M. Câmpul MIC este un câmp opțional care este utilizat numai în cazul conexiunilor criptate. Pentru simplitate, vom lua în considerare doar conexiunile necriptate – pentru cazul criptat, acesta adaugă pur și simplu 4 octeți de suprataxă.

Pentru PHY-urile LE Coded, formatul pachetului arată astfel (din specificația Bluetooth 5.0 Vol 6, Partea B, Secțiunea 2.2.1.1.1.1.).2):

Pași pentru calcularea debitului (în Mbps):

Pentru simplificare, presupunem următoarele:

  • Criptarea NU este activată (câmpul MIC nu este inclus în pachet)
  • Ne interesează debitul pentru o direcție (de ex. Master to Slave), așa că presupunem că cealaltă direcție transferă doar pachete goale
  • Scrie fără răspunsuri (ceea ce ar ajuta la maximizarea debitului atunci când se transferă cantități mari de date
Etapele:
  1. Determinați PHY-ul utilizat și notați rata de transfer a datelor brute
    De ex. pentru 1M PHY -> 1 Mbps, pentru PHY codificat și S=8 -> 125 kbps
  2. Determinați timpul necesar pentru a trimite un pachet de date și pachetul gol de la receptor.
    Timpurile în care poate fi trimis un pachet de date vor include următoarele:

    Data_Packet_Time = Timp de transmitere a pachetului gol + IFS + Timp de transmitere a pachetului de date propriu-zis + IFS.
    Timp de transmitere a unui pachet gol poate fi calculat după cum urmează:

    Timp de transmitere a pachetului gol = dimensiunea pachetului gol / viteza de transmisie a datelor brute

    Un pachet gol va conține următoarele câmpuri:

    Preamble + Adresa de acces + Antetul LL + CRC.

    Pentru 1M PHY, Preambulul va fi de 1 octet și astfel dimensiunea totală a pachetului gol = 1 + 4 + 2 + 2 + 3 octeți = 10 octeți = 80 de biți.
    (pentru 2M PHY, dimensiunea unui pachet gol va fi de 88 de biți, deoarece Preambulul este de 2 octeți în loc de 1 octet).

    Pe baza acestui fapt, timpul de transmitere a unui pachet gol 1M PHY va fi:

    Timp de transmitere a pachetului gol = dimensiunea pachetului gol / rata de date brute = 80 biți / 1 Megabit pe secundă = 80 micro secunde

    Un pachet de date va conține toate câmpurile enumerate în diagrama de format a pachetului, cu excepția câmpului MIC (criptare dezactivată).

    Timp de transmitere a pachetului de date = dimensiunea pachetului de date / rata brută de date

    Dacă avem DLE activat și MTU ATT este egal cu numărul maxim de octeți permis într-un pachet: 247 de octeți, atunci putem calcula dimensiunea pachetului de date astfel:

    Dacă avem DLE activat și MTU ATT este egal cu numărul maxim de octeți permis într-un pachet: 247 de octeți:

    Dimensiunea pachetului de date = 1 + 4 + 2 + 2 + 4 + 4 + 247 + 3 octeți = 265 octeți = 265*8 biți = 2088 biți

    Timp de transmitere a pachetului de date = 2088 biți / 1 Mbps = 2,088 microsecunde

    Data_Packet_Time = Timpul de transmitere a pachetului gol + IFS + Timpul de transmitere a pachetului de date propriu-zis + IFS = 80 + 2*150 + 2088 = 2,468 microsecunde
    Pentru comparație, în cazul unui PHY de 2M, ar fi:

    Data_Packet_Time = Time to transmit empty packet + IFS + Time to transmit the actual data packet + IFS = 88/2 + 2*150 + (2 + 4 + 2 + 4 + 247 + 3)*8/2 = 1,392 microsecs
    Când DLE este activat și ATT MTU este setat la mai puțin de 247, ajungem să avem mai mult overhead (deoarece acum datele mai mari decât ATT MTU sunt împărțite în mai multe pachete). De exemplu, să presupunem că avem ATT MTU setat la 158, atunci, pentru a transfera 244 de octeți de date de aplicație, vom avea nevoie de două pachete în loc de unul, ceea ce face ca debitul să scadă din cauza creșterii numărului de octeți, precum și a creșterii IFS între pachete. Într-un alt scenariu, am putea avea DLE dezactivat (dimensiunea încărcăturii utile de până la 27 de octeți) și MTU ATT mai mare de 27 de octeți. Aici, acest lucru va duce, de asemenea, la necesitatea de a trimite mai multe pachete pentru aceeași cantitate de date, ceea ce va determina scăderea debitului.

    Nota: Aceeași metodă de calculare a dimensiunilor pachetelor de date și a pachetelor goale pe care am folosit-o mai sus poate fi folosită pentru LE Coded PHY.

  3. Dați-vă seama câte pachete pot fi transmise în timpul unui interval de conectare
    Acest calcul nu este întotdeauna pur matematic – va trebui să țineți cont de limitările stivei și ale dispozitivului utilizat. iOS și Android au maxime care se schimbă în funcție de versiunea sistemului de operare, așa că nu este întotdeauna ușor de calculat. Acestea fiind spuse, pe un MCU, SDK-ul furnizorului enumeră de obicei maximul în documentația sa. De asemenea, este util să faceți o încercare și eroare și să vă dați seama ce suportă dispozitivul dvs. specific.

    După ce v-ați dat seama de maxim, puteți calcula numărul maxim teoretic de pachete care s-ar încadra într-un interval de conexiune la alegere. De exemplu, dacă am avea un interval de conectare de 7,5 milisecunde (cel mai mic permis de specificații), atunci pentru exemplul nostru de mai sus (folosind 1M PHY, DLE activat):

    Număr maxim de pachete de date pe interval de conectare = , unde se rotunjește la cel mai mare număr întreg (număr întreg)Număr maxim de pachete de date pe interval de conectare = = 3 pachete

    De obicei, acest număr nu este realist, deoarece există întârzieri de timp între pachetele care sunt trimise la evenimente de conectare consecutive. Deci, pentru exemplul nostru, vom merge cu 2 pachete în loc de 3.

  4. După ce ne-am dat seama de numărul maxim de pachete de date care pot fi transferate pe interval de conexiune, putem calcula debitul de date:Debitul de date = date pe interval de conexiune / interval de conexiune = Nr. de pachete de date pe interval de conexiune * Dimensiunea datelor pe pachet / interval de conexiune
    = 2 * 244 * 8 biți / 7.5 milisecs = 520,533 biți/sec ~= 508 kbps

Testarea și calcularea debitului de date între două kituri de dezvoltare nRF52

În această secțiune, vom efectua mai multe teste de transfer de date, vom calcula debitul de date folosind procedura pe care am descris-o anterior și apoi le vom compara cu debitul măsurat raportat de aplicația care rulează pe plăcile de dezvoltare. Testele sunt executate pe baza aplicației demonstrative furnizate de Nordic Semiconductor și prezentate în această postare pe blog: Throughput and long range demo.

Codul sursă al exemplului poate fi găsit pe pagina GitHub aici.

Cazul 1 (PHY: 1 Mbps, ATT MTU = 23 bytes, DLE: activat, Interval de conectare: 7,5 milisecs)

Trasmiterea datelor raportate de firmware:

Timp: 36.11 secunde scurse.
Trasmitere: 232,29 Kbits/s.
Am trimis 1048580 octeți de sarcină utilă ATT.

Trasmitere de date calculată:

Cu MTU setat la 23 de octeți, DLE nu afectează cu adevărat viteza de transmisie a datelor și dimensiunile pachetelor.

Timpul de transmitere a pachetului de date = dimensiunea pachetului de date / rata brută de date = 1 + 4 + 2 + 4 + 4 + 23 + 3 octeți / 1 Mbps= 37*8 biți / 1 Mbps = 296 microsecs

Data_Packet_Time = Timpul de transmitere a pachetului gol + IFS + Timpul de transmitere a pachetului de date propriu-zis + IFS = 80 + 150 + 296 + 150 microsecs = 676 microsecs

Număr maxim de pachete de date pe interval de conexiune = = = = = 11 pachete
Date totale transferate pe interval de conexiune = 11 * 20 octeți = 11 * 20 * 8 biți = 1760 biți

Trasmiterea datelor = Date totale transferate pe interval de conexiune/interval de conexiune = 1760 biți / 7.5 milisecunde = 234,67 Kbits/s
După cum putem vedea, valoarea calculată și valoarea măsurată sunt destul de apropiate.

Cazul 2 (PHY: 2 Mbps, ATT MTU = 23 bytes, DLE: activat, Interval de conectare: 7.5 milisecunde)

Trasmitere de date raportată de firmware:

Timp: 27,23 secunde scurse.
Trasmitere: 307,96 Kbits/s.
Am trimis 1048580 octeți de sarcină utilă ATT.

Trasmitere de date calculată:

Timp pentru a transmite pachetul de date = dimensiunea pachetului de date / rata brută de date = 2 + 4 + 2 + 4 + 4 + 23 + 3 octeți / 2 Mbps= 38*8 biți / 2 Mbps = 152 microsecs

Data_Packet_Time = Timp pentru a transmite pachetul gol + IFS + Timp pentru a transmite pachetul de date efectiv + IFS = 44 + 150 + 152 + 152 + 150 microsecs = 496 microsecs

Număr maxim de pachete de date pe interval de conexiune = = = = = 15 pachete
Date totale transferate pe interval de conexiune = 15 * 20 octeți = 15 * 20 * 8 biți = 2400 biți

Trasmiterea datelor = Date totale transferate pe interval de conexiune/interval de conexiune = 2400 biți / 7.5 milisecunde = 320 Kbits/s
Cum putem vedea, valoarea calculată și valoarea măsurată sunt destul de apropiate.

Cazul 3 (PHY: 1 Mbps, ATT MTU = 158 bytes, DLE: activat, Interval de conexiune: 7.5 milisecunde)

Trasmitere de date raportată de firmware:

Timp: 17,53 secunde scurse.
Trasmitere: 478,36 Kbits/s.
Am trimis 1048730 octeți de sarcină utilă ATT.

Trasmitere de date calculată:

Timp de transmitere a pachetului de date = dimensiunea pachetului de date / rata brută de date = 1 + 4 + 2 + 2 + 4 + 158 + 3 octeți / 1 Mbps = 172*8 biți / 1 Mbps = 1376 microsecs

Data_Packet_Time = Timp de transmitere a pachetului gol + IFS + Timp de transmitere a pachetului de date efectiv + IFS = 80 + 150 + 1376 + 150 microsecs = 1756 microsecs

Număr maxim de pachete de date pe interval de conexiune = = = = = 4 pachete
Date totale transferate pe interval de conexiune = 4 * 155 octeți = 4 * 155 * 8 biți = 4960 biți

Trasfer de date = Date totale transferate pe interval de conexiune/interval de conexiune = 4960 biți / 7.5 milisecunde = 661,33 Kbits/s

Cazul 4 (PHY: 2 Mbps, ATT MTU = 247 bytes, DLE: activat, Interval de conectare: 7.5 milisecunde)

Trasmitere de date raportată de firmware:

Timp: 8,45 secunde scurse.
Trasmitere: 992,07 Kbits/s.
Am trimis 1048712 octeți de sarcină utilă ATT.

Trasmitere de date calculată:

Timpul de transmitere a pachetului de date = dimensiunea pachetului de date / rata brută de date = 2 + 4 + 2 + 2 + 4 + 247 + 3 octeți / 2 Mbps= 262*8 biți / 2 Mbps = 1048 microsecs

Data_Packet_Time = Timpul de transmitere a pachetului gol + IFS + Timpul de transmitere a pachetului de date propriu-zis + IFS = 44 + 150 + 1048 + 150 microsecs = 1392 microsecs

Număr maxim de pachete de date pe interval de conexiune = = = = = 5 pachete
Date totale transferate pe interval de conexiune = 5 * 244 octeți = 5 * 244 * 8 biți = 9760 biți

Trasmiterea datelor = Date totale transferate pe interval de conexiune/interval de conexiune = 9760 biți / 7.5 milisecunde = 1301,33 Kbits/s

Nota: În ultimele două cazuri, numărul de pachete pe interval de conexiune este mic și orice diferență între ceea ce calculăm și ceea ce este măsurat va avea un impact mare asupra debitului real al datelor. De exemplu, dacă numărul de pachete pe interval de conexiune ajunge să fie 4 în loc de 5 în cazul 4, debitul calculat devine 1.041,1 Kbps în loc de 1.301,33 Kbps (ceea ce reprezintă o diferență mare și ar putea explica discrepanța cifrelor de aici).

Cazul 5 (PHY: 2 Mbps, ATT MTU = 247 bytes, DLE: activat, Interval de conexiune: 50 milisecunde)

Trasmitere de date raportată de firmware:

Timp: 6,34 secunde scurse.
Trasmitere: 1322,33 Kbits/s.
Am trimis 1048712 octeți de sarcină utilă ATT.

Trasmitere de date calculată:

Timp pentru a transmite pachetul de date = dimensiunea pachetului de date / rata brută de date = 2 + 4 + 2 + 2 + 4 + 247 + 3 octeți / 2 Mbps= 262*8 biți / 2 Mbps = 1048 microsecs

Data_Packet_Time = Timp pentru transmiterea pachetului gol + IFS + Timp pentru transmiterea efectivă a pachetului de date + IFS = 44 + 150 + 1048 + 150 microsecs = 1392 microsecs

.

Nr. maxim de pachete de date pe interval de conectare = = = = = 35 pachete

Date totale transferate pe interval de conectare = 36 * 244 octeți = 35 * 244 * 8 biți = 68320 biți

Trasmiterea datelor = Date totale transferate pe interval de conectare/interval de conectare = 70272 biți / 50 milisecunde = 1366.4 Kbits/s

Cazul 6 (PHY: 2 Mbps, ATT MTU = 247 bytes, DLE: activat, Interval de conectare: 400 milisecunde)

Trasmitere de date raportată de firmware:

Timp: 6,11 secunde scurse.
Trasmitere: 1371,82 Kbits/s.
Am trimis 1048712 octeți de sarcină utilă ATT.

Trasmitere de date calculată:

Timp de transmitere a pachetului de date = dimensiunea pachetului de date / rata brută de date = 2 + 4 + 2 + 2 + 4 + 247 + 3 octeți / 2 Mbps= 262*8 biți / 2 Mbps = 1048 microsecs

Data_Packet_Time = Timp de transmitere a pachetului gol + IFS + Timp de transmitere a pachetului de date efectiv + IFS = 44 + 150 + 1048 + 150 microsecs = 1392 microsecs

.

Numărul maxim de pachete de date pe interval de conexiune = = = = = 287 pachete

Date totale transferate pe interval de conexiune = 287 * 244 octeți = 287 * 244 * 8 biți = 560224 biți

Trasmiterea datelor = Date totale transferate pe interval de conexiune/interval de conexiune =560224 biți / 400 milisecunde = 1400.56 Kbits/s

Optimizarea pentru un debit de date maxim

Pe baza factorilor pe care i-am parcurs, putem nota următoarele atunci când optimizăm pentru un debit de date ridicat:

  • Activați întotdeauna DLE
    Evident, dacă utilizați Bluetooth v4.1 sau o versiune anterioară, aceasta nu este o opțiune validă. În general, însă, asigurați-vă că ați activat DLE pentru a maximiza eficiența pachetelor la datele aplicației
  • Utilizați LE 2M PHY
    Dacă știți că dispozitivele de la ambele capete acceptă Bluetooth 5, atunci utilizarea LE 2M PHY este una dintre cele mai bune modalități de a maximiza debitul de date al aplicației. Utilizarea LE 2M PHY va ajuta, de asemenea, la reducerea consumului de energie, astfel încât să loviți doi iepuri dintr-o lovitură!
  • Utilizați Notificări și Scrieri fără răspuns
    Utilizarea acestora va ajuta la eliminarea oricăror pachete inutile care sunt transmise (în comparație cu Indicațiile și Scrierile normale care necesită ca capătul receptor să confirme fiecare pachet primit).
  • Alegeți o valoare MTU ATT de cel puțin mai mare de 247 octeți
    Aceasta va minimiza orice suprasolicitare în octeți de pachete.
  • Alegeți un interval de conectare care să permită numărul maxim de pachete pe interval de conectare
    Dar țineți cont de faptul că intervalul de conectare afectează consumul de energie. Cu cât intervalul este mai scurt, cu atât mai multă energie va consuma dispozitivul dvs. din cauza creșterii timpului de conectare radio. De asemenea, trebuie să vă asigurați că nu alegeți un interval prea mare, altfel veți compromite experiența utilizatorului (un interval de conectare mai mare duce la o latență mai mare). Un ultim lucru de care trebuie să vă asigurați că țineți cont este orice limitare a dispozitivelor din sistemul dvs. în ceea ce privește numărul maxim de pachete pe interval de conectare suportate.

Summary & closing

Valorile calculate pe care le-am enumerat mai sus sunt încă teoretice și s-ar putea să nu se alinieze cu debitul de date măsurat în practică și în mediile reale, dar ele reprezintă totuși un bun punct de plecare și oferă o bună indicație a ceea ce trebuie să vă așteptați (cel puțin pentru un maxim). Interferențele și erorile de transmisie/recepție afectează, de asemenea, debitul de date (reluările, pierderile de date și evenimentele de închidere a conexiunii duc la un debit mai mic). Acestea pot fi cauzate de prezența altor dispozitive care utilizează aceeași bandă de 2,4 GHz ca și Bluetooth, de distanța mai mare dintre dispozitive, de existența unor obstacole între dispozitive și multe altele…

Lasă un răspuns

Adresa ta de email nu va fi publicată.