微控制器 MSP430 IIC控制器程式設計 1

2021-07-07 08:30:56 字數 4053 閱讀 1865

近日在開發開發微型投影儀的微控制器程式,主要是用微控制器控制dlp晶元組進行相應的初始化和引數設定,所有晶元的通訊介面都是用iic。

在此記錄下,iic的開發過程。

ps:部落格裡面發就是這麼操蛋!哎

1.初始化

17.3.1 usci初始化和復位

usci由乙個 puc 進行復位或由 ucswrst 位設定。 在乙個 puc 之後, ucswrst 位被自動設定, 從而

保持了 usci 處於復位狀態。 為了選擇 i2c 執行, ucmodex 位必須設定為 11。 模組被初始化後, 已準備

好傳送或接收操作。 清除 ucswrst 位會使 usci 處於執行狀態。

當 ucswrst 被設定以便避免不可預知的執行狀態時, 應完成 usci 模組的配置和重新配置。 在 i2c 模式

下設定 ucswrst 具有以下作用:

• i2c 通訊停止

• sda 和 scl 為高阻抗

• ucbxi2cstat, 6-0 位被清零

• ucbxtxie 和 ucbxrxie 被清零

• ucbxtxifg 和 ucbxrxifg 被清零

• 所有其他位和暫存器保持不變。

注: 初始化或重新配置usci 模組

建議的 usci 初始化或重新配置過程是:

1. 置位 ucswrst (bis.b#ucswrst, ucxctl1)

2. ucswrst= 1, 初始化所有 usci 暫存器( 包括 ucxctl1)

3. 配置埠。

4. 通過軟體清零 ucswrst (bic.b#ucswrst, ucxctl1)

5. 通過 ucxrxie 和/或 ucxtxie 使能中斷( 可選)

2. 主從模式

17.3.4.1受控模式

通過把 i2c 模式設定為 ucmodex=11 和 uscync=1, 並清除 ucmst 位, usci 模組被配置為乙個 i2c

從器件。

首先, usci 模組必須在接收模式下通過清除 uctr 位進行配製, 以便接收 i2c 從器件位址。 之後, 傳送和

接收操作是由與從器件一起接收到的 r/w 位自動決定。

usci 從器件位址是由 ucbxi2coa 暫存器程式設計的。 當 uca10=0 時, 選用 7 位定址方式。 當 uca10=1

時, 選用 10 位定址方式。 如果從器件響應乙個常規呼叫, 則可以選擇 ucgcen 位。

17.3.4.2 主控模式

通過把 i2c 模式設定為 ucmodex= 11 和 uscync=1, 並置位 ucmst 位, usci 模組被配置為乙個 i}2c

主器件。 當主器件是多主器件系統的一部分時, 必須置位 ucmm, 並且其自身位址必須被編入

ucbxi2coa 暫存器。 當 uca10=0 時, 選用 7 位定址方式。 當 uca10=1 時, 選用 10 位定址方式。 如

果 usci 模組響應常規呼叫, 則可以選擇 ucgcen 位。

17.3.4.2.1 i2c主控傳送器模式

初始化之後, 通過把目標從器件位址寫入暫存器 ucbxi2csa、 用 ucsla 10 位來選擇從器件位址的位數、

置位 uctr 來選擇傳送模式、 置位 uctxstt 來產生乙個起始條件, 主控傳送器模式才被初始化。

usci 模組先檢測匯流排是否空閒, 之後產生乙個起始條件, 並傳送從器件位址。 當起始條件產

生, cbxtxifg 將被置位, 並將要傳送的第乙個資料寫入 ucbxtxbuf 中。 一旦從器件對位址作出應

答, uctxstt 位會被清零。

在從器件位址的傳送過程中, 如果仲裁沒有失效, 那麼會已傳送寫入到 ucbxtxbuf 中的資料。 一旦資料

由緩衝區轉移到移位暫存器, ucbxtxifg 將再次置位。 如果在應答週期到來之前 ucbxtxbuf 中沒有裝

載新資料, 那麼在應答週期過程中匯流排將被掛起, scl 將保持拉低電平狀態, 直到資料寫入快取器

ucbxtxbuf 中。 只要 uctxstp 位或 uctxstt 位沒被置位, 資料就就會被傳輸或匯流排被保持。

在從器件下乙個應答訊號到來之後, 置位 uctxstp 將會產生乙個停止條件。 如果在從器件的位址傳送過

程或者是 usci 模組等待把資料寫入 ucbxtxbuf 的過程中置位 uctxstp, 則即使沒有資料被傳送到從

器件依舊會產生乙個停止條件。 如果傳送的是單位元組資料, 在位元組傳送過程中或者在資料傳輸開始後必須置

位 uctxstp, 不要將任何新的資料寫入 ucbxtxbuf。 否則, 會造成只傳送位址。 當資料由緩衝器轉移

到傳送移位暫存器時, ucbxtxifg 將被置位, 這表示著資料傳輸已經開始, 可以置位 uctxstp 了。

置位 uctxstt 將會產生乙個重複起始條件。 在這種情況下, 可以通過置位或清零 uctr, 以便配置為發

送器或接收器。

如果從器件沒有響應傳送的資料, 則未響應中斷標誌 ucnackifg 會被置位。 主器件必須傳送乙個停止條

件或者重複起始條件的方式來響應。 如果已經把資料寫入 ucbxtxbuf, 那麼當前資料將被丟棄。 如果在

乙個重複起始條件後, 這個資料還要傳送出去, 則必須重新將其寫入 ucbxtxbuf。 任何置位 uctxstt

也會被丟棄。 若要觸發乙個重複起始條件, uctxstt 需要重新被置位。

圖 17-12給出了 i2c 主器件傳送操作。

17.3.4.2.2 i2c主控接收器模式

初始化之後, 通過把目標從器件位址寫入暫存器 ucbxi2csa、 用 ucsla 10 位來選擇從器件位址的位數、

置位 uctr 來選擇傳送模式、 置位 uctxstt 來產生乙個起始條件, 主器件接收模式才被初始化。

usci 模組先檢測匯流排是否空閒, 之後產生乙個起始條件, 並傳送從器件位址。 一旦從器件對位址作出應

答, uctxstt 位會被清零。

在從器件對位址應答後, 將接收到從器件傳送的第乙個資料位元組並傳送應答訊號, 同時置位 ucbxrxifg 標

志。 只要 uctxstp 或 uctxstt 不被置位, 就能接收到從器件發來的資料。 若沒有讀取 ucbxrxbuf,

那麼主器件將在接收最後到乙個資料位後掛起匯流排直到 ucbxrxbuf 被讀取。

如果從器件沒有響應傳送的位址, 則未響應中斷標誌 ucnackifg 會被置位。 主器件必須傳送乙個停止條

件或者重複起始條件的方式來響應。

置位 uctxstp 將會產生乙個停止條件。 置位 uctxstp 後, 主器件將在接收完從裝置傳送的資料後發出

乙個nack, 並緊接著傳送乙個停止, 或者如果在 usci 模組正在等待讀取 ucbxrxbuf時, 將立即產生停

止。如果主及想接收乙個單位元組資料, 那麼在接收位元組的過程中必須將 uctxspt 位置位。 在這種情況下, 可

以通過查詢 uctxstt 來確定何時將被清除:

bis.b #uctxstt,&ucboctl1 ;transmit start cond.poll_stt bit.b #uctxstt,&ucboctl1 ;poll uctxstt

bitjc poll_stt ;when cleared,bis.b #uctxstp,&ucb0ctl1 ;transmit stop cond.

置位 uctxstt 將會產生乙個重複起始條件。 在這種情況下, 可以通過置位或清零 uctr, 以便配置為發

送器或接收器, 如果需要的話, 還可以把不同的位址寫入 ucbxi2csa。

圖 17-13給出了 i2c 主控接收器操作。

注: 在不使用重複起始的情況下的連續主器件傳輸

在不使用重複起始功能的情況下, 當進行多個連續 i2c 主器件傳輸時, 當前傳輸必須在下乙個

傳輸初始化完成之前結束。 這可以通過確保在下乙個 i2c 傳輸初始化完成之前傳送停止條件標

志 uctxstp 被清零, 並設定 uctxstt= 1來完成。 否則, 將會影響當前的傳輸。

3. dlpc3438的iic器件位址0x36

4. it6605的iic器件位址

pcadr=1, iic address = 0x92; 

pcadr=0, iic address = 0x90;

MSP430教程8 MSP430微控制器復位電路

msp430 微控制器系統復位電路 從上msp430 系統復位電路功能模組圖中可以看到了兩個復位訊號,乙個是上電復位訊號 por power on reset 和上電清除訊號 puc power up clear por 訊號是器件的復位訊號,此訊號只有在以下的事件發生時才會產生 器件上電時。rst...

MSP430微控制器 中斷服務

430的中斷是按照下圖1的優先順序順序定義的,有三種中斷 1.系統重置 2.不可遮蔽中斷 nmi 3.可遮蔽中斷。圖1.中斷優先順序 部分具體的中斷優先順序由高到低為 port2 vector 1 2u 0xffe2 port 2 port1 vector 4 2u 0xffe8 port 1 ti...

MSP430微控制器的中斷

中斷是msp430微處理器的一大特色,有效地利用中斷可以簡化程式和提高執行效率。msp430的幾乎每個外圍模組都能夠產生中斷,為msp430針對事件 即外圍模組產生的中斷 進行的程式設計打下基礎。msp430在沒有事件發生時進入低功耗模式,事件發生時,通過中斷喚醒cpu,事件處理完畢後,cpu再次進...