0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用超低功耗MSP MCU開始一個(gè)I2C通信有關(guān)項(xiàng)目

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2022-01-26 14:06 ? 次閱讀

這是一份介紹性指南,指導(dǎo)你如何用超低功耗MSP微控制器 (MCU) 開始一個(gè)與I2C通信有關(guān)的項(xiàng)目:

簡介

I2C(或稱為I2C,集成電路總線)是一種兩線制通信形式,主要用來在短距離、電路板間的應(yīng)用中,實(shí)現(xiàn)微控制器與外設(shè)IC之間的低速通信。由于其采用范圍很廣,所以學(xué)習(xí)使用I2C與MSP MCU之間的通信已經(jīng)在幫助工程師開發(fā)應(yīng)用方面變得十分必要。通過使用一個(gè)超低功耗MSP MCU來訪問和控制IC器件,這份指南提供了理解I2C協(xié)議并執(zhí)行這一協(xié)議所需的工具與資源。

器件術(shù)語

驅(qū)動(dòng)SCL時(shí)鐘線路的器件被稱為主器件,而對(duì)其進(jìn)行響應(yīng)的器件被稱為從器件。在大多數(shù)應(yīng)用中,MSP MCU為主器件,而外設(shè)IC為從器件,雖然有時(shí)候MSP器件是其它MCU或處理器的從器件。

物理總線

I2C總線由兩條線路組成,SCL和SDA。SCL是用來將所有數(shù)據(jù)傳輸同步的時(shí)鐘線路,而SDA是實(shí)際的數(shù)據(jù)線路。還需要第三條線路,即普通接地,不過通常不被提及。由于兩條線路都是“開漏”驅(qū)動(dòng)器,它們都需要到電源線路的上拉電阻,這樣的話,輸出在無運(yùn)行期間保持在高電平。對(duì)于MSP MCU應(yīng)用來說,電源電壓應(yīng)該與MSP MCU的Vcc相匹配。傳統(tǒng)上,上拉電阻器的值為4.7k?,不過這個(gè)值的范圍可以在少于1k?到10k?之間,取決于所使用的從器件。要獲得正確的上拉電阻值,請(qǐng)參考器件數(shù)據(jù)表。多個(gè)從器件可以共用一條I2C總線,單個(gè)上拉電阻器

I2C軟件協(xié)議

不論何種應(yīng)用,每個(gè)支持I2C器件都需要遵守針對(duì)全部I2C器件所定義的共同軟件協(xié)議,其一般結(jié)構(gòu)始終保持不變。通信從啟動(dòng)序列開始,并在一個(gè)停止序列中結(jié)束,兩個(gè)序列之間有一個(gè)8位數(shù)據(jù)傳輸序列。啟動(dòng)位之后是從地址,通常為7位(雖然很少情況下也使用10位尋址)。這7個(gè)數(shù)據(jù)位被放置在一個(gè)字節(jié)的上7位,而LSB(最低有效位)被用來存儲(chǔ)讀/寫 (R/W) 位。這個(gè)位讓從器件知道是對(duì)其進(jìn)行寫入操作(位值為0),還是讀取操作(位值為1)。對(duì)一個(gè)寫入操作,操作序列如下:

發(fā)送啟動(dòng)序列

發(fā)送從地址,其中R/W位為低電平

發(fā)送寄存器數(shù)

發(fā)送數(shù)據(jù)字節(jié)

發(fā)送停止序列

讀取操作序列與寫入操作十分相似,除了它不發(fā)送數(shù)據(jù)字節(jié),而是重新發(fā)送啟動(dòng)序列(被稱為一個(gè)重復(fù)啟動(dòng))和從地址(不過此時(shí),對(duì)于讀取操作來說,R/W位為高電平),這樣的話,它可以接收數(shù)據(jù),而不是發(fā)送數(shù)據(jù)。這個(gè)操作在主器件發(fā)出典型停止序列后結(jié)束。下面是讀取操作序列:

發(fā)送啟動(dòng)序列

發(fā)送從地址,其中R/W位為低電平

發(fā)送寄存器數(shù)

再次發(fā)出啟動(dòng)序列(重復(fù)啟動(dòng))

發(fā)出從地址,其中R/W位為高電平

讀取數(shù)據(jù)字節(jié)

發(fā)出停止序列

MSP MCU通信外設(shè)

為了實(shí)現(xiàn)串行通信,MSP器件上有可能提供4種不同的外設(shè)。其中只有一個(gè)外設(shè)會(huì)因器件的不同而不同。根據(jù)在MSP MCU上實(shí)現(xiàn)I2C通信的難易程度(從最難到最容易),將這些使用的外設(shè)列出如下:

UART:通用同步/異步接收器/發(fā)射器。這是最早出現(xiàn)的通信形式,并且存在于大多數(shù)MSP430F1xx MCU上。它不支持I2C,因此必須使用一個(gè)基于軟件的位響應(yīng) (bit-bang) 解決方案來與I2C器件實(shí)現(xiàn)通信。

USI:通用串行接口。另外一個(gè)更加簡單的通信形式,用于MSP430G2xx系列內(nèi)的某些組件等成本有效或空間受限器件。器件上沒有I2C狀態(tài)機(jī),必須在軟件中實(shí)現(xiàn)。通常情況下,通過使用單獨(dú)的函數(shù)來實(shí)現(xiàn)。

USCI:通用串行接口。一個(gè)針對(duì)ISR和標(biāo)志用法進(jìn)行優(yōu)化的標(biāo)準(zhǔn)通信外設(shè)。這個(gè)外設(shè)常見于MSP430F5xx/F6xx系列中,其中包括一個(gè)基于硬件的I2C狀態(tài)機(jī),因此運(yùn)行所需要的代碼更少。

eUSCI:增強(qiáng)型通用串行通信接口。MSP器件上提供的最先進(jìn)通信外設(shè),它改進(jìn)了現(xiàn)有USCI功能,并且包含于所有MSP430FRxx (FRAM) MCU中。

當(dāng)考慮使用一個(gè)具有I2C應(yīng)用的MSP器件時(shí),用戶應(yīng)該明白,代碼結(jié)構(gòu)會(huì)隨著特定MSP系列器件上存在的外設(shè)而變化。每個(gè)變量包括必須考慮在內(nèi)的不同寄存器、ISR和函數(shù)。還需要澄清的一點(diǎn)是,并不是所有的器件系列都使用同樣的外設(shè)(USCI和eUSCI存在于MSP430F5xx/6xx中,USI和USCI存在于MSP430G2xx系列中,等等),這一點(diǎn)在用戶參考系列用戶指南時(shí)會(huì)感到很困惑。因此,需要注意的一點(diǎn)是,在開始應(yīng)用開發(fā)時(shí),要根據(jù)實(shí)際情況來查看正確的材料,并選擇合適的示例代碼。德州儀器 (TI) 提供針對(duì)USI、USCI和eUSCI通信的基本I2C代碼示例;這些代碼示例可以在工具&軟件->軟件->示例 (Tools & software -> Software -> Examples) 下的MSP系列器件產(chǎn)品頁面內(nèi)找到(提供ZIP格式的文件,需要注意的是,這些軟件包只包含與特定器件上存在的外設(shè)相關(guān)的代碼示例)。對(duì)于那些使用USART,或者不包含一個(gè)通信外設(shè)的器件,我們?cè)谏鐓^(qū)技術(shù)支持內(nèi)提供在線I2C位響應(yīng)解決方案。不論是否使用外設(shè),始終需要上拉電阻器來實(shí)現(xiàn)I2C通信。某些MSP器件具有內(nèi)部上拉電阻器,不過不建議使用這些電阻器,因?yàn)閹讉€(gè)從器件需要特定的、無法在內(nèi)部滿足的電阻值。

用MSP實(shí)現(xiàn)I2C的竅門

當(dāng)試圖用I2C在外設(shè)IC與MSP之間進(jìn)行通信時(shí),為了幫助避免常見的執(zhí)行錯(cuò)誤,以下的一些建議值得我們仔細(xì)地看一看:

從專門為你的MSP系列器件提供的示例I2C代碼入手(產(chǎn)品頁面-> Tools & software -> Software -> Examples)。查看根據(jù)系列用戶指南對(duì)I2C寄存器的更改(一定要確保你查看的是正確的外設(shè)章節(jié)),這樣的話,你就可以牢牢掌握實(shí)現(xiàn)通信所必須的更改。

使用從器件數(shù)據(jù)表中指定的上拉電阻和地址(有時(shí)會(huì)隨著輸入變量的不同而變化)。需牢記的一點(diǎn)是,從地址的7位被存儲(chǔ)在這個(gè)字節(jié)的上7位,之后是由通信外設(shè)設(shè)定的一個(gè)R/W位,因此,在設(shè)置從地址寄存器時(shí),這個(gè)值也許需要向左移動(dòng)一位。

從寫入一個(gè)寄存器開始,并且監(jiān)視MSP器件中的ACK。利用故障標(biāo)志和實(shí)驗(yàn)室設(shè)備來警告通信故障。使用CCS或IAR提供的調(diào)試工具來了解代碼的運(yùn)行方式,哪些寄存器被訪問,何時(shí)訪問函數(shù)/ISR,以及它們的訪問方式。在完成了這些操作后,在添加寄存器讀取功能性方面會(huì)變得更加容易。

USCI/eUSCI狀態(tài)圖表示,在接收到最后一個(gè)字節(jié)前,需要設(shè)定UCTXSTP位。在只接收到一個(gè)字節(jié)的應(yīng)用中,UCTXSTP位與UCTXSTT位一同設(shè)置。如果接收到多個(gè)字節(jié),那么應(yīng)該在接收到第N-1字節(jié)后設(shè)定UCTXSTP。這樣就確保了在接收到最后一個(gè)字節(jié)后,立即發(fā)送停止序列。

調(diào)試建議

在放棄那些看起來似乎無法正確運(yùn)行的代碼前,以下是調(diào)試這個(gè)系統(tǒng)時(shí)需要考慮的某些關(guān)鍵點(diǎn):

確認(rèn)上拉電阻值&從地址值,用從器件數(shù)據(jù)表對(duì)它們進(jìn)行驗(yàn)證。

再次檢查通信外設(shè)初始化,其中包括:寄存器設(shè)置、正確的引腳分配、已使能中斷、針對(duì)運(yùn)行的外設(shè)接通/釋放等。

使用任何提供的工具(IDE調(diào)試器、邏輯分析器、示波器等)來確認(rèn)MSP430和從器件嚴(yán)格遵循I2C軟件協(xié)議。

查看針對(duì)已知I2C問題的勘誤表,并且查看勘誤表說明是否與應(yīng)用的故障癥狀相匹配。

研究E2E論壇內(nèi)的問題,看一看有沒有相似的情況已經(jīng)被解決。嘗試不同的I2C相關(guān)關(guān)鍵字組合,并且充分利用搜索過濾器。

E2E支持

如果適當(dāng)?shù)恼{(diào)試和研究方法沒有成功,TI E2E社區(qū)論壇可以成為與器件專家進(jìn)行直接溝通的極佳資源。無論遇到何種問題,一定要掌握與之相關(guān)的詳細(xì)信息,以幫助社區(qū)成員和TI工程師更好地為請(qǐng)求提供技術(shù)支持,其中包括:

MSP430系列器件

使用的LaunchPad或TI目標(biāo)板,或者定制電路板的電路原理

從器件

所發(fā)現(xiàn)情況或問題的準(zhǔn)確描述

使用調(diào)試器的同時(shí),所觀察到的運(yùn)行方式(CCS或IAR)

I2C初始化和函數(shù)/ISR代碼片段(并不是全部代碼)

包含合適標(biāo)簽的邏輯分析器和示波器圖像

審核編輯:何安

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式處理
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    9984
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用MSP430 MCU通過I2C實(shí)現(xiàn)低功耗Windows 8 HID應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《使用MSP430 MCU通過I2C實(shí)現(xiàn)低功耗Windows 8 HID應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 10-17 09:19 ?0次下載
    使用<b class='flag-5'>MSP</b>430 <b class='flag-5'>MCU</b>通過<b class='flag-5'>I2C</b>實(shí)現(xiàn)<b class='flag-5'>低功耗</b>Windows 8 HID應(yīng)用

    在低成本MSP430 MCU中集成I2C I/O擴(kuò)展器

    電子發(fā)燒友網(wǎng)站提供《在低成本MSP430 MCU中集成I2C I/O擴(kuò)展器.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 10:56 ?0次下載
    在低成本<b class='flag-5'>MSP</b>430 <b class='flag-5'>MCU</b>中集成<b class='flag-5'>I2C</b> <b class='flag-5'>I</b>/O擴(kuò)展器

    使用MSP430 MCU簡化溫度、濕度和光學(xué)I2C傳感器

    電子發(fā)燒友網(wǎng)站提供《使用MSP430 MCU簡化溫度、濕度和光學(xué)I2C傳感器.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 11:03 ?0次下載
    使用<b class='flag-5'>MSP</b>430 <b class='flag-5'>MCU</b>簡化溫度、濕度和光學(xué)<b class='flag-5'>I2C</b>傳感器

    使用低內(nèi)存MSP430?MCU的UART到I2C橋應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《使用低內(nèi)存MSP430?MCU的UART到I2C橋應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:45 ?0次下載
    使用低內(nèi)存<b class='flag-5'>MSP</b>430?<b class='flag-5'>MCU</b>的UART到<b class='flag-5'>I2C</b>橋應(yīng)用說明

    ISO154x低功耗雙向I2C隔離器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ISO154x低功耗雙向I2C隔離器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-19 11:35 ?0次下載
    ISO154x<b class='flag-5'>低功耗</b>雙向<b class='flag-5'>I2C</b>隔離器數(shù)據(jù)表

    ISO154x-Q1低功耗雙向I2C隔離器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ISO154x-Q1低功耗雙向I2C隔離器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-19 11:33 ?0次下載
    ISO154x-Q1<b class='flag-5'>低功耗</b>雙向<b class='flag-5'>I2C</b>隔離器數(shù)據(jù)表

    簡單認(rèn)識(shí)I2C通信協(xié)議

    I2C(Inter-Integrated Circuit)通信協(xié)議是由飛利浦公司(現(xiàn)為恩智浦半導(dǎo)體)開發(fā)的種簡單、雙向二線制同步串行總線協(xié)議。自1982年發(fā)布以來,I2C協(xié)議因其高效
    的頭像 發(fā)表于 07-25 18:06 ?1087次閱讀

    TCA9538低壓8位I2C和SMBus低功耗I/O擴(kuò)展器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TCA9538低壓8位I2C和SMBus低功耗I/O擴(kuò)展器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-08 10:03 ?0次下載
    TCA9538低壓8位<b class='flag-5'>I2C</b>和SMBus<b class='flag-5'>低功耗</b><b class='flag-5'>I</b>/O擴(kuò)展器數(shù)據(jù)表

    TCA9534低電壓8位I2C和SMBUS低功耗I/O擴(kuò)展器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TCA9534低電壓8位I2C和SMBUS低功耗I/O擴(kuò)展器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-02 10:31 ?0次下載
    TCA9534低電壓8位<b class='flag-5'>I2C</b>和SMBUS<b class='flag-5'>低功耗</b><b class='flag-5'>I</b>/O擴(kuò)展器數(shù)據(jù)表

    什么是I2C協(xié)議 I2C總線的控制邏輯

    在實(shí)際使用過程中,I2C比較容易出現(xiàn)的個(gè)問題就是死鎖 ,死鎖在I2C中主要表現(xiàn)為:I2C死鎖時(shí)表現(xiàn)為SCL為高,SDA
    發(fā)表于 03-12 09:17 ?778次閱讀
    什么是<b class='flag-5'>I2C</b>協(xié)議 <b class='flag-5'>I2C</b>總線的控制邏輯

    GD32 MCU硬件I2C不可靠不如軟件I2C?來看看紅楓派開發(fā)版的硬件I2C驅(qū)動(dòng)如何做到穩(wěn)得

    個(gè)評(píng)論中,看到網(wǎng)友對(duì)硬件I2C的討論,硬件I2C Busy找不到原因、軟件I2C穩(wěn)得批。
    的頭像 發(fā)表于 02-23 09:37 ?2473次閱讀
    GD32 <b class='flag-5'>MCU</b>硬件<b class='flag-5'>I2C</b>不可靠不如軟件<b class='flag-5'>I2C</b>?來看看紅楓派開發(fā)版的硬件<b class='flag-5'>I2C</b>驅(qū)動(dòng)如何做到穩(wěn)得<b class='flag-5'>一</b>批

    超低功耗16位MSP430 TM電源管理解決方案MCU

    電子發(fā)燒友網(wǎng)站提供《超低功耗16位MSP430 TM電源管理解決方案MCU.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 11:25 ?0次下載
    <b class='flag-5'>超低功耗</b>16位<b class='flag-5'>MSP</b>430 TM電源管理解決方案<b class='flag-5'>MCU</b>

    UART、SPI、I2C比較 串口通信介紹

    UART、SPI、I2C比較 I2C線更少,比UART、SPI更為強(qiáng)大,但是技術(shù)上也更加麻煩些,因?yàn)?b class='flag-5'>I2C需要有雙向IO的支持,而且使用上拉電阻,抗干擾能力較弱,般用于同
    的頭像 發(fā)表于 11-09 18:06 ?1197次閱讀
    UART、SPI、<b class='flag-5'>I2C</b>比較 串口<b class='flag-5'>通信</b>介紹

    I2C與SPI與UART:如何布局這些通用總線

    如果您要為項(xiàng)目構(gòu)建開發(fā)板或使用通用MCU,則會(huì)發(fā)現(xiàn)許多用于通信其他活動(dòng)組件的協(xié)議。USB和以太網(wǎng)之類的標(biāo)準(zhǔn)已內(nèi)置在大多數(shù)控制器中,用于與計(jì)算機(jī)外圍設(shè)備起使用。盡管如此,仍使用
    的頭像 發(fā)表于 11-08 17:33 ?914次閱讀
    <b class='flag-5'>I2C</b>與SPI與UART:如何布局這些通用總線

    I2C總線—電平轉(zhuǎn)換

    我們先來看張圖,熟悉I2C的人看,這不是I2C的level shifter電路嘛,在Philip的I2C標(biāo)準(zhǔn)里面有,沒有啥復(fù)雜的。
    的頭像 發(fā)表于 11-02 12:32 ?4363次閱讀
    <b class='flag-5'>I2C</b>總線—電平轉(zhuǎn)換