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
- Lite manipulation
- Bitström
- Lite twiddler (disambiguation)
- Bitseriell arkitektur
- 1-bitars arkitektur
- Snabblastare
- Integrated Woz Machine (IWM)
- FTDI , en serie USB-till-serieomvandlarchips som också stöder lite bang-läge
- 2MGUI (en DOS-drivrutin av Ciriaco García de Celis som använder bit-bang för att stödja icke-standardiserade ultrahöga diskettformat som "förbigår" den normala diskettkontrollerns logik, ett liknande program för Amiga-disketter är Vincent Joguins Disk2FDI)
- Virtuell maskin (VM) (implementering av virtuella enhetsdrivrutiner som emulerar faktiska hårdvarukontroller innebär ibland att man använder programmeringstekniker som liknar bit banging)
- Programvarudefinierad radio (SDR)
- Polling (datavetenskap)
externa länkar
- Asynkron seriell (RS-232)
- Anteckningar om bit-banking asynkron serie
- Lite smällande för Async Serial Communication
- Lite smällande för RS-232
- I²C-buss
- SPI-buss