小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

TWI總線可以認為是I2C總線,ATmega328p的TWI總線是一個簡單強大的通訊接口,使用兩根線就可以了,分別是時鐘線SCL和數據線SDA。關於TWI的一些術語就不在這裡講了,自己可以去百度一下,大把的資料。

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

TWI總線配置圖

我們主要來看它涉及到的寄存器。

1.TWBR :TWI比特率寄存器

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

TWBR 為比特率發生器分頻因子。比特率發生器是一個分頻器,在主機模式下產生SCL時鐘頻率。就是一個8位的,這個沒啥說的。

2.TWCR :TWI控制寄存器

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

該寄存器用來使能TWI,通過施加START到總線上來啟動主機訪問,產生接收器應答,產生STOP狀態,以及在寫入數據到TWDR寄存器時控制總線的暫停等一些列活動。

bit 7:TWI中斷標誌,當TWI完成當前的工作,希望應用程序介入時TWINT置位。若SREG的I標誌及其TWCR寄存器的TWIE標誌也置位,則MCU執行TWI中斷。

bit 6:使能TWI應答。TWEA標誌控制應答脈衝的產生,若TWEA置位,則會出現如下條件時接口發生ACK脈衝:

  • 設備從機地址被接收

  • TWAR的TWGCE置位時接收到廣播呼叫

  • 在主機模式或者從機模式下接收到一個字節的數據

將TWEA清零可以是器件暫時脫離總線,置位後器件重新恢復地址識別。

bit 5:TWI START狀態標誌。當cpu希望自己成為總線上的主機時需要置位該位。TWI硬件檢測總線是不是可用,若總線空閒時,接口就在總線上產生START狀態,若總線忙,接口就一直等待,直達檢測到一個STOP狀態然後產生START以聲明自己希望成為主機,發送START之後軟件必須清零TWSTA。

bit 4:TWI STOP狀態標誌。在主機模式下,如果該位置位,則TWI接口將在總線上產生STOP狀態,然後該位自動清零。在從機模式下,置位該位可以使接口從錯位狀態恢復到未被尋址的狀態。

bit 3:TWI寫碰撞標誌。當TWINT為低時,寫數據寄存器TWDR將置位該位。當TWINT為高時,每一次對TWDR的寫訪問都將更新此標誌。

bit 2:TWI使能。該位用於使能TWI操作與激活TWI接口,當該位置位,TWI引腳將I/O引腳切換到SCL與SDA引腳。如果該位清零,TWI接口將被關閉,所有的TWI傳輸將被終止。

bit 1:保留位

bit 0:使能TWI中斷。當SREG的I位和TWIE置位時,只要TWINT為1,TWI中斷就激活。

3.TWSR :TWI 狀態寄存器

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

bit 7~3:TWI狀態位。這5位用來反映TWI邏輯和總線的狀態,從TWSR讀出的值包含5位狀態值和2位預分頻值。

我們來看一下這5位對應的值,發送模式的狀態情況,見下表:

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

即當這5位的值為:0x08,表示START信號發送了,就這個意思。

bit 1~0:TWI預分頻位。可讀寫,用於控制比特率的預分頻因子。見下表:

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

4.TWDR :TWI 數據寄存器

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

在發送模式下,該寄存器包含了要發送的字節,在接收模式下,該寄存器包含了接收到的數據。當TWI接口沒有進行移位工作(TWINT置位)時,這個寄存器使可以寫的。

bit 7~0:根據不同的狀態,存放的要發的下一個字節數據或者是接收到的數據。

5.TWAR – TWI 從機地址寄存器

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

bit7~1:從機地址。工作在從機模式的時候,TWI講根據這個地址進行響應。主機模式不需要此地址。

bit 0:控制到底是讀還是寫。

6.TWAMR :TWI 從機地址掩碼寄存器

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

關於寄存器就先說這麼多了。

再來看兩個表:

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

典型數據傳輸中應用程序與 TWI 的接口

小5帶你飛(13)—AVR(ATmega 328P)單片機TWI總線的原理和使用(1)

彙編與 C 語言例程

我們寫程序的時候,就可以根據這個表來自己弄了。

下一個教程我們再來寫相關的程序。




分享到:


相關文章: