MSP MCU I2C入門指南

2022-08-04 11:30:11 字數 2050 閱讀 3978

這是乙份介紹性指南,指導你如何用超低功耗msp微控制器 (mcu) 開始乙個與i2c通訊有關的專案:

簡介

i2c(或稱為i2c,積體電路匯流排)是一種兩線制通訊形式,主要用來在短距離、電路板間的應用中,實現微控制器與外設ic之間的低速通訊。由於其採用範圍很廣,所以學習使用i2c與msp mcu之間的通訊已經在幫助工程師開發應用方面變得十分必要。通過使用乙個超低功耗msp mcu來訪問和控制ic器件,這份指南提供了理解i2c協議並執行這一協議所需的工具與資源。

器件術語

驅動scl時鐘線路的器件被稱為主器件,而對其進行響應的器件被稱為從器件。在大多數應用中,msp mcu為主器件,而外設ic為從器件,雖然有時候msp器件是其它mcu或處理器的從器件。

物理匯流排

i2c匯流排由兩條線路組成,scl和sda。scl是用來將所有資料傳輸同步的時鐘線路,而sda是實際的資料線路。還需要第三條線路,即普通接地,不過通常不被提及。由於兩條線路都是「開漏」驅動器,它們都需要到電源線路的上拉電阻,這樣的話,輸出在無執行期間保持在高電平。對於msp mcu應用來說,電源電壓應該與msp mcu的vcc相匹配。傳統上,上拉電阻器的值為4.7kω,不過這個值的範圍可以在少於1kω到10kω之間,取決於所使用的從器件。要獲得正確的上拉電阻值,請參考器件資料表。多個從器件可以共用一條i2c匯流排,單個上拉電阻器

i2c軟體協議

不論何種應用,每個支援i2c器件都需要遵守針對全部i2c器件所定義的共同軟體協議,其一般結構始終保持不變。通訊從啟動序列開始,並在乙個停止序列中結束,兩個序列之間有乙個8位資料傳輸序列。啟動位之後是從位址,通常為7位(雖然很少情況下也使用10位定址)。這7個資料位被放置在乙個位元組的上7位,而lsb(最低有效位)被用來儲存讀/寫 (r/w) 位。這個位讓從器件知道是對其進行寫入操作(位值為0),還是讀取操作(位值為1)。對乙個寫入操作,操作序列如下:

傳送啟動序列

傳送從位址,其中r/w位為低電平

傳送暫存器數

傳送資料位元組

傳送停止序列

讀取操作序列與寫入操作十分相似,除了它不傳送資料位元組,而是重新傳送啟動序列(被稱為乙個重複啟動)和從位址(不過此時,對於讀取操作來說,r/w位為高電平),這樣的話,它可以接收資料,而不是傳送資料。這個操作在主器件發出典型停止序列後結束。下面是讀取操作序列:

傳送啟動序列

傳送從位址,其中r/w位為低電平

傳送暫存器數

再次發出啟動序列(重複啟動)

發出從位址,其中r/w位為高電平

讀取資料位元組

發出停止序列

msp mcu通訊外設

為了實現序列通訊,msp器件上有可能提供4種不同的外設。其中只有乙個外設會因器件的不同而不同。根據在msp mcu上實現i2c通訊的難易程度(從最難到最容易),將這些使用的外設列出如下:

msp實現i2c的竅門

當試圖用i2c在外設ic與msp之間進行通訊時,為了幫助避免常見的執行錯誤,以下的一些建議值得我們仔細地看一看:

除錯建議

在放棄那些看起來似乎無法正確執行的**前,以下是除錯這個系統時需要考慮的某些關鍵點:

e2e支援

如果適當的除錯和研究方法沒有成功,ti e2e社群論壇可以成為與器件專家進行直接溝通的極佳資源。無論遇到何種問題,一定要掌握與之相關的詳細資訊,以幫助社群成員和ti工程師更好地為請求提供技術支援,其中包括:

資源

從usci模組遷移至eusci模組 (slaa522): 

使用usci i2c主器件 (slaa382): 

使用usci i2c從器件 (slaa383): 

使用i2c匯流排(部落格):

祝大家編碼快樂!

jBPM開發入門指南 2

4 資料庫初始化 jbpm 需要資料庫支援,jbpm 會把自己的乙個初始化資料儲存到資料庫,同時工作流的資料也是儲存到資料庫中的。jbpm 使用 hibernate 來做為自己的儲存層,因此只要是 hibernate 支援的資料庫,jbpm 也就支援。本文先以 mysql 為例,然後再以 oracl...

JBPM開發入門指南 2

jbpm 需要資料庫支援,jbpm 會把自己的乙個初始化資料儲存到資料庫,同時工作流的資料也是儲存到資料庫中的。jbpm 使用hibernate 來做為自己的儲存層,因此只要是 hibernate 支援的資料庫,jbpm 也就支援。本文先以 mysql 為例,然後再以 oracle 為例,來談談 j...

jBPM開發入門指南 2

4 資料庫初始化 jbpm 需要資料庫支援,jbpm 會把自己的乙個初始化資料儲存到資料庫,同時工作流的資料也是儲存到資料庫中的。jbpm 使用 hibernate 來做為自己的儲存層,因此只要是 hibernate 支援的資料庫,jbpm 也就支援。本文先以 mysql 為例,然後再以 oracl...