Lite smällande

Inom datorteknik och elektroteknik är bitsnackning en " konstterm " för alla metoder för dataöverföring som använder mjukvara som ett substitut för dedikerad hårdvara för att generera överförda signaler eller bearbeta mottagna signaler . Programvaran ställer in och samplar direkt tillstånden för GPIO:er (t.ex. stift på en mikrokontroller ) och ansvarar för att uppfylla alla tidskrav och protokollsekvensering av signalerna. I motsats till bit banging, uppfyller dedikerad hårdvara (t.ex. UART , SPI , I²C ) dessa krav och tillhandahåller om nödvändigt en databuffert för att lätta på programvarutidskraven. Bit banging kan implementeras till mycket låg kostnad och används ofta i vissa inbyggda system .

Bit banging tillåter en enhet att implementera olika protokoll med minimala eller inga hårdvaruförändringar. I vissa fall görs bitsnackning möjlig av nyare, snabbare processorer eftersom nyare hårdvara fungerar mycket snabbare än hårdvaran gjorde när standardkommunikationsprotokoll skapades.

Exempel på C-kod

Följande C-språkkodexempel sänder en byte med data på en SPI- buss.


   

    

   
   

   
      0    
   
       
       
          
           
       
           

       
       
       
       

       
         
   

   
   
 // överför byte seriellt, MSB first  void  send_8bit_serial_data  (  osignerad  char  data  )  {  int  i  ;  // välj enhet (aktiv låg)  output_low  (  SD_CS  );  // skicka bitar 7..0  för  (  i  =  ;  i  <  8  ;  i  ++  )  {  // betrakta biten längst till vänster  // sätt raden hög om biten är 1, låg om biten är 0  om  (  data  &  0x80  )  output_high  (  SD_DI  );  else  output_low  (  SD_DI  );  // pulsera klocktillståndet för att indikera att bitvärdet ska läsas  output_low  (  SD_CLK  );  fördröjning  ();  output_high  (  SD_CLK  );  // skift byte åt vänster så nästa bit kommer att vara  data längst till vänster   <<=  1  ;  }  // avmarkera enhet  output_high  (  SD_CS  );  } 

Överväganden

Frågan om man ska använda bitsnack eller inte är en avvägning mellan belastning, prestanda och tillförlitlighet å ena sidan, och tillgången på ett hårdvarualternativ å andra sidan. Programvaruemuleringsprocessen förbrukar mer processorkraft än att stödja dedikerad hårdvara. Mikrokontrollern ägnar mycket av sin tid åt att skicka eller ta emot prover till och från stiften, på bekostnad av andra uppgifter. Signalen som produceras har vanligtvis mer jitter eller fel , speciellt om processorn också utför andra uppgifter medan den kommunicerar. Men om mjukvaran för bitsmäll är avbrottsdriven av signalen kan detta vara av mindre betydelse, speciellt om styrsignaler som RTS, CTS eller DCD är tillgängliga. Implementeringen i mjukvara kan vara en lösning när specifikt hårdvarustöd inte är tillgängligt eller kräver en dyrare mikrokontroller.

Se även

externa länkar

Asynkron seriell (RS-232)
I²C-buss
SPI-buss