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

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

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

如何使用PIC16 MSSP模塊進(jìn)行從機(jī) I2C 通信

454398 ? 來(lái)源:eeweb ? 作者:eeweb ? 2021-06-20 18:03 ? 次閱讀

一些中檔增強(qiáng)型內(nèi)核 PIC16 單片機(jī)器件具有主同步串行端口(Master Synchronous Serial Port,MSSP)。MSSP 模塊可用于實(shí)現(xiàn) I2CTM 或 SPI 通信協(xié)議。在本應(yīng)用筆記中,將介紹 I2C 從協(xié)議的基礎(chǔ)知識(shí)。然后讀者應(yīng)該更好地了解 MSSP 模塊以及它如何用于 I2C 總線上的從機(jī)通信。還將提供代碼示例以幫助讀者將模塊實(shí)現(xiàn)到他們自己的設(shè)計(jì)中。

I2C 總線規(guī)范

內(nèi)部集成電路 (I2C) 總線是由 Philips? Inc. 開(kāi)發(fā)的廣泛使用的行業(yè)標(biāo)準(zhǔn),用于在集成電路(例如串行 EEPROM 或其他微控制器)之間傳輸數(shù)據(jù)。設(shè)備在主/從環(huán)境中通信,其中主設(shè)備始終發(fā)起通信,從設(shè)備通過(guò)尋址進(jìn)行控制。I2C 總線可以有一個(gè)或多個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備。主設(shè)備是在總線上發(fā)起數(shù)據(jù)傳輸?shù)脑O(shè)備,負(fù)責(zé)生成總線上使用的串行時(shí)鐘。任何尋址的設(shè)備都被視為從設(shè)備。I2C 協(xié)議支持 7 位或 10 位尋址模式。從 MSb 開(kāi)始,一次執(zhí)行 8 位數(shù)據(jù)傳輸。

總線的物理接口由兩條雙向開(kāi)漏線組成,一條線用于串行時(shí)鐘(SCL),另一條線用于串行數(shù)據(jù)(SDA)。每條線路都需要一個(gè)上拉電阻來(lái)為線路提供電壓。將線拉到地面被認(rèn)為是邏輯低點(diǎn),而讓線浮動(dòng)被認(rèn)為是邏輯高點(diǎn)。當(dāng)總線空閑時(shí),SDA 和 SCL 均為邏輯高電平。數(shù)據(jù)傳輸速率在標(biāo)準(zhǔn)模式下高達(dá) 100 kbits/s,在快速模式下高達(dá) 400 kbits/s,在快速模式 Plus 下高達(dá) 1 Mbits/s,或在高速模式下高達(dá) 3.4 Mbits/s模式。在時(shí)鐘的高電平期間,SDA 線上的數(shù)據(jù)必須是穩(wěn)定的。SDA 線上的任何變化只能在 SCL 線上的時(shí)鐘信號(hào)為低電平時(shí)發(fā)生。為每個(gè)傳輸?shù)臄?shù)據(jù)位生成一個(gè)時(shí)鐘脈沖。

I2C 規(guī)范將啟動(dòng)條件定義為 SDA 線從高電平變?yōu)榈碗娖綘顟B(tài),而 SCL 線為高電平。啟動(dòng)條件始終由主機(jī)生成,表示總線從空閑狀態(tài)轉(zhuǎn)換為活動(dòng)狀態(tài)。I2C 規(guī)范規(guī)定在開(kāi)始時(shí)不會(huì)發(fā)生總線沖突;但是,如果 MSSP 模塊在將 SDA 線置為低電平之前對(duì)其進(jìn)行采樣,則可能會(huì)發(fā)生總線沖突。

停止條件是 SDA 線從低到高狀態(tài)的轉(zhuǎn)換,而 SCL 線為高。在停止有效之前,必須至少出現(xiàn)一個(gè) SCL 低電平時(shí)間。因此,如果 SDA 線變?yōu)榈碗娖?,然后再次變?yōu)楦唠娖?,?SCL 線保持高電平,則僅檢測(cè)到啟動(dòng)條件。

poYBAGDPEjaATH0AAABzdY8A3nE945.png

圖 1 I2C 啟動(dòng)和停止條件

只要停止有效,重新啟動(dòng)或重復(fù)啟動(dòng)就有效。如果主機(jī)希望在終止當(dāng)前傳輸后保持總線,它可以發(fā)出重新啟動(dòng)。Restart 對(duì)從機(jī)具有與 Start 相同的效果,重置所有從機(jī)邏輯并準(zhǔn)備它在地址中計(jì)時(shí)。主站可能想要尋址同一個(gè)或另一個(gè)從站。這對(duì)于許多 I2C 外設(shè)很有用,例如非易失性 EEPROM 存儲(chǔ)器,其中 I2C 寫(xiě)操作和讀操作連續(xù)完成。在這種情況下,寫(xiě)操作指定要讀取的地址,讀操作獲取數(shù)據(jù)字節(jié)。由于主設(shè)備在將內(nèi)存地址寫(xiě)入設(shè)備后并沒(méi)有釋放總線,因此執(zhí)行一個(gè)Restart序列來(lái)讀取內(nèi)存地址的內(nèi)容。

pYYBAGDPEkCAPloyAABc3vsaifo630.png

圖 2 I2C 重啟條件

在 10 位尋址從機(jī)模式下,主機(jī)需要重啟才能將數(shù)據(jù)從尋址的從機(jī)中取出。一旦從設(shè)備被完全尋址,匹配高地址字節(jié)和低地址字節(jié),主設(shè)備就可以發(fā)出重啟并發(fā)送設(shè)置了 R/W 位的高地址字節(jié)。然后從邏輯將保持時(shí)鐘并準(zhǔn)備輸出數(shù)據(jù)。在 10 位模式下與 R/W 清除完全匹配后,設(shè)置并保持先前??匹配標(biāo)志。在停止條件之前,具有 R/W 清除或高地址匹配的高地址失敗。

編輯:hfy

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

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635400
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1487

    瀏覽量

    123787
  • PIC16
    +關(guān)注

    關(guān)注

    2

    文章

    151

    瀏覽量

    34939
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PIC18F I2C總線電容MSSP與Bit-Banging通信錯(cuò)誤

    PIC18F25K40,我公司使用的主要I2C通信是很差的選擇/設(shè)計(jì),幾年后,我試圖解決由于噪聲問(wèn)題導(dǎo)致的I2C通信錯(cuò)誤,所以很有趣。我們不
    發(fā)表于 11-19 10:19

    選擇PIC18F45 50的MSSP模塊作為I2C或SPI的困難

    嗨,我在選擇PIC18F45 50的MSSP模塊作為I2C或SPI時(shí)遇到了一些困難,哪個(gè)寄存器選擇了這個(gè)?問(wèn)候,Akshay 以上來(lái)自于百度翻譯 以下為原文 Hi,
    發(fā)表于 12-21 15:37

    I2C Master到Master通信可能嗎?

    嗨,我有一個(gè)項(xiàng)目,一個(gè)PIC24FJ256GB210是一個(gè)I2C主控器,一個(gè)PIC16F18326,一個(gè)I2C
    發(fā)表于 12-27 16:04

    pic16和gestic之間的I2c通信是否有可用的樣本代碼?

    嗨,我在一個(gè)手勢(shì)板上使用一個(gè)pic16f1947主板和芯片mgc3130。我試著把一個(gè)pic18f14k50的狗和手勢(shì)芯片連接起來(lái),并且通信工作正常。但當(dāng)我試著把pic16和mgc31
    發(fā)表于 07-26 12:13

    使用MSSPI2C通信LCD屏幕不工作

    我已經(jīng)能夠使用MSSPI2C通信到我的LCD屏幕,和EuSART藍(lán)牙我的手機(jī)到HC-06。我通過(guò)切換LED來(lái)測(cè)試這個(gè)。當(dāng)我把兩個(gè)程序結(jié)合起來(lái)時(shí),它就不再工作了。當(dāng)我啟用EUSAT的
    發(fā)表于 03-23 09:04

    使用MCC PIC24F進(jìn)行I2C故障恢復(fù)

    你好!我有APIC24FV16KM204 I2C主控器,它通過(guò)通過(guò)滑環(huán)的導(dǎo)線與I2C機(jī)通信
    發(fā)表于 04-21 09:31

    基于pic單片機(jī)的模擬I2C通信

    基于pic單片機(jī)的模擬I2C通信設(shè)計(jì)
    發(fā)表于 05-25 08:58 ?2466次閱讀

    PIC單片機(jī)I2C模式)實(shí)例講解

    PIC單片機(jī)I2C模式)實(shí)例講解
    發(fā)表于 01-24 17:21 ?30次下載

    PIC單片機(jī)I2C模式)詳解

    I2C總線是由Philips公司開(kāi)發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。今天就來(lái)看看PIC單片機(jī)使用MSSP
    發(fā)表于 11-14 17:24 ?1.3w次閱讀
    <b class='flag-5'>PIC</b>單片<b class='flag-5'>機(jī)</b>之<b class='flag-5'>I2C</b>(<b class='flag-5'>從</b>模式)詳解

    使用C18編譯器和MSSP模塊進(jìn)行I2C?串行EEPROM與PIC18單片機(jī)的接口設(shè)計(jì)

    本文主要介紹了使用C18編譯器和MSSP模塊進(jìn)行I2C?串行EEPROM與PIC18單片
    發(fā)表于 06-28 08:25 ?11次下載
    使用<b class='flag-5'>C</b>18編譯器和<b class='flag-5'>MSSP</b><b class='flag-5'>模塊</b><b class='flag-5'>進(jìn)行</b><b class='flag-5'>I2C</b>?串行EEPROM與<b class='flag-5'>PIC</b>18單片<b class='flag-5'>機(jī)</b>的接口設(shè)計(jì)

    使用MSSP模塊進(jìn)行Microwire串行行EEPROM與PIC16器件的接口設(shè)計(jì)

    本應(yīng)用筆記提供了設(shè)計(jì)思路和源代碼,以方便設(shè)計(jì)人員 進(jìn)行 Microchip 中檔 PIC16F877A 單片機(jī)和 Microwire 串行 EEPROM 器件之間的通信設(shè)計(jì)。主控同步串
    發(fā)表于 06-28 09:25 ?10次下載
    使用<b class='flag-5'>MSSP</b><b class='flag-5'>模塊</b><b class='flag-5'>進(jìn)行</b>Microwire串行行EEPROM與<b class='flag-5'>PIC16</b>器件的接口設(shè)計(jì)

    使用MSSP模塊進(jìn)行I2C串行EEPROM與PIC16器件的接口設(shè)計(jì)說(shuō)明

    Microchip Technology生產(chǎn)的24XXX系列串行EEPROM 兼容 I2C? 通信標(biāo)準(zhǔn),最大時(shí)鐘頻率范圍 100 kHz 到 1 MHz。許多PICmicro?單片機(jī)內(nèi)置MS
    發(fā)表于 05-21 08:00 ?0次下載
    使用<b class='flag-5'>MSSP</b><b class='flag-5'>模塊</b><b class='flag-5'>進(jìn)行</b><b class='flag-5'>I2C</b>串行EEPROM與<b class='flag-5'>PIC16</b>器件的接口設(shè)計(jì)說(shuō)明

    使用MSSP模塊進(jìn)行Microwire串行EEPROM與PIC16器件的接口設(shè)計(jì)

    使用MSSP模塊進(jìn)行Microwire串行EEPROM與PIC16器件的接口設(shè)計(jì)說(shuō)明。
    發(fā)表于 05-11 10:13 ?11次下載

    使用MSSP模塊進(jìn)行I2C串行EEPROM與PIC16器件的接口設(shè)計(jì)

    使用MSSP模塊進(jìn)行I2C串行EEPROM與PIC16器件的接口設(shè)計(jì)說(shuō)明。
    發(fā)表于 05-11 10:14 ?16次下載

    使用MSSP模塊進(jìn)行I2C串行EEPROM與PIC18器件的接口設(shè)計(jì)

    使用MSSP模塊進(jìn)行I2C串行EEPROM與PIC18器件的接口設(shè)計(jì)說(shuō)明。
    發(fā)表于 05-11 10:23 ?11次下載