Bit-banging 是一種用軟體替代專職硬體的串列通信的技術。
基本介紹
- 中文名:Bit-banging
- 簡介:用軟體替代專職硬體的串列通信
- 功能:時鐘,電平,同步等所有參數
- 優點:讓相同的設備運行不同的協定
軟體性能,優點,缺點,代碼例程,
軟體性能
軟體直接對微處理器的管腳的狀態進行設定和採樣,其功能涵蓋諸如:時鐘,電平,同步等所有參數。與此不同的是(傳統的串列通信技術中),專職硬體諸如 modem、UART 或者 位移暫存器等一般是用來處理這些參數並且提供一個(快取)的數據接口,軟體在這種情況下同信號處理無關。實現 Bit-banging 技術的成本可以是很低的,比如利用 嵌入式系統。
優點
儘管它同“駭客”有些關聯,bit-banging 具有明顯優點諸如:讓相同的設備運行不同的協定而只需很小的(甚至不需)硬體的改動。藉助很少的額外設備,我們也許可以從數字管腳(數字終端)可以得到視頻信號。
缺點
bit-banging 也有一些明顯的缺點。在軟體仿真的過程中消耗的能量比同樣功能的專職硬體大。微處理器過忙地從管腳採樣和傳送採樣信號到管腳。在同等微處理器處理能力下,系統常常會有些噪音。儘管如此,如果bit-banging 僅僅是相應硬體中斷的例程的話,這些影響便微乎其微。
代碼例程
C 代碼例程
// transmit byte serially, MSB first
void send_8bit_serial_data(unsigned char data)
{
unsigned char i;
// select device
output_high(SD_CS);
// send bits 7..0
for(i = 0; i < 8; i++)
{
// consider leftmost bit
// set line high if bit is 1, low if bit is 0
if (data & 0x80)
output_high(SD_DI);
else
output_low(SD_DI);
// pulse clock to indicate that bit value should be read
output_low(SD_CLK);
output_high(SD_CLK);
// shift byte left so next bit will be leftmost
data <<= 1;
}
// deselect device
output_low(SD_CS);
}