本應(yīng)用筆記是探討MAX3108高性能通用異步接收器/發(fā)送器(UART)特性系列筆記中的第一篇,解釋了MAX3108和控制微處理器之間的基本接口。應(yīng)用筆記簡要介紹了通過2、4或6引腳實現(xiàn)硬件連接;實施 31 個寄存器,可通過 SPI 或 I 訪問2C接口;和三種復(fù)位機制。SPI 和 I 的更詳細解釋2C 接口和偽代碼示例如下。
介紹
MAX3108為高性能通用異步收發(fā)器(UART),采用晶圓級封裝(WLP),理想用于低功耗便攜式設(shè)備。其高級功能范圍從單獨的 128 字發(fā)送和接收 FIFO 到廣泛的硬件介導(dǎo)流控制。然而,在應(yīng)用利用這些特性之前,它必須與MAX3108及其31個內(nèi)部寄存器進行可靠的通信。本應(yīng)用筆記介紹了MAX3108通信的基本原理。有關(guān)偽代碼的軟件約定顯示在附錄中。
硬件連接
MAX3108與微處理器(μP)之間的通信通過2、4或6個引腳進行。兩個專用引腳 %-overbar_pre%IRQ%-overbar_post% 和 %-overbar_pre%RST%-overbar_post% 通常連接到微處理器 GPIO 引腳。%-overbar_pre_sentence%IRQ%-overbar_post% 是微處理器的輸入引腳。作為雙功能信號,%-overbar_pre%IRQ%-overbar_post%既指示MAX3108復(fù)位何時完成,又在發(fā)生某些可編程UART事件時通知微處理器。%-overbar_pre_sentence%RST%-overbar_post% 是微處理器的輸出引腳。它可靠地強制MAX3108復(fù)位至已知狀態(tài)。盡管可以在不使用這些引腳的情況下實現(xiàn)功能應(yīng)用程序,但最好連接它們,除非缺少 GPIO 引腳。
MAX3108實現(xiàn)31個寄存器,每個寄存器一個字節(jié)寬,可通過SPI或I訪問。2C 接口,在硬件中選擇。由于其更大的帶寬和更簡單的實現(xiàn),SPI接口更可取。綁定 SPI/%-overbar_pre%I2C%-overbar_post% 引腳高電平實現(xiàn) SPI 接口。把它綁得很低,實現(xiàn)了我2C 接口。
MAX3108 SPI接口直接連接到微處理器上常用的SPI硬件引擎時效果最佳。
微處理器 SPI 引腳 | MAX3108引腳 |
醬 | 味噌/自主權(quán)達 |
莫西 | 莫西/A1 |
高萊克 | SCLK/SCL |
黨衛(wèi)軍 | /CS/A0 |
與其他SPI接口實現(xiàn)不同,即使MAX3108是SPI總線上唯一的器件,從選擇(SS)信號也必須連接到MAX3108。
同樣,I2C 接口在直接連接到 I 時效果最佳2微處理器上的 C 硬件引擎。
微處理器 I2C 引腳 | MAX3108引腳 |
標準及校正實驗所 | SCLK/SCL |
自主權(quán)評估 | 味噌/自主權(quán)達 |
與SPI接口不同,I2C 接口依賴于總線上具有唯一 I 的每個外設(shè)2C 地址。為避免地址沖突,MAX1 I引腳MOSI/A0和%-overbar_pre%CS%-overbar_post%/A3108上的硬件引腳搭接選項固定2C 外設(shè)地址為 16 種可能性之一。詳情請參考MAX3108數(shù)據(jù)資料。
重置
MAX3108具有三種復(fù)位機制,所有這些機制都使MAX3108處于已知狀態(tài),需要后續(xù)寄存器設(shè)置負載。
第一種復(fù)位機制是在上電時自動復(fù)位。MAX3108要完成復(fù)位,無需時鐘。但是,1.8V電源必須啟動并運行。LDOEN 必須連接高電平,或者如果 LDOEN 連接為低電平,則必須將有效的 1.8V 電源連接到 V18 引腳。僅在復(fù)位期間,%-overbar_pre%IRQ%-overbar_post%引腳不是中斷指示器,而是復(fù)位完成指示器。一旦%-overbar_pre%IRQ%-overbar_post%引腳變?yōu)楦唠娖?,?fù)位完成。如果MAX3108不存在或未上電,程序流可能會無限期地卡在環(huán)路中。如果這是一個問題,請?zhí)砑右粋€計時器。如果 %-overbar_pre%IRQ%-overbar_post% 在 300μs 后仍未出現(xiàn),您可以假設(shè)有問題。為避免在MAX3108完全就緒之前寫入寄存器,應(yīng)用必須遵循以下步驟。while
/* ** Wait for the MAX3108 to come out of reset */ // Wait for the IRQ pin to come up, as this // indicates that the MAX3108 reset is complete while (POLL_MAX3108_IRQ == 0);
第二種復(fù)位機制是通過MAX3108 %-overbar_pre%RST%-overbar_post%引腳進行硬件復(fù)位。在這種情況下,手動將%-overbar_pre%RST%-overbar_post%引腳脈沖為低電平,然后為高電平。與上電時自動復(fù)位一樣,%-overbar_pre%IRQ%-overbar_post%引腳表示復(fù)位完成。如上所述,為防止MAX3108缺電或未上電時無限期卡在環(huán)路中,增加一個延遲最小為300μs的定時器。偽代碼見下文。while
/* ** Perform a hardware reset */ SET_MAX3108_RESET_PIN_LOW; WAIT (1μs); SET_MAX3108_RESET_PIN_HIGH; // Wait for the IRQ pin to come up, as this // indicates that the MAX3108 reset is complete while (POLL_MAX3108_IRQ == 0);
第三種復(fù)位機制是軟件控制的復(fù)位,它依賴于SPI或I2C 訪問 MAX3108。與其他復(fù)位一樣,MAX3108寄存器需要在復(fù)位完成后重新加載。使用以下偽代碼調(diào)用重置。
/* ** Software reset of the MAX3108 */ MAX3108_Write (MAX3108R_MODE2, 0x01); MAX3108_Write (MAX3108R_MODE2, 0x00);
通過 SPI 接口
MAX3108與微處理器之間的通信通過%-overbar_pre%RST%-overbar_post%引腳、%-overbar_pre%IRQ%-overbar_post%引腳(均如上所述)以及應(yīng)用微處理器和MAX3108寄存器之間的接口進行。此寄存器接口可以是 SPI 或 I2C 接口。有關(guān) SPI 選項的詳細信息顯示在此處,而有關(guān) I 的詳細信息2C 接口出現(xiàn)在通過 I 接口2C部分。
SPI 接口是微處理器上常用的硬件接口。SPI接口的另一個優(yōu)點是它的速度。MAX3108可支持高達26Mbps的SPI數(shù)據(jù)速率,比目前大多數(shù)微處理器SPI硬件更快。
MAX3108 SPI接口不僅支持單寄存器讀寫,還支持突發(fā)讀寫。這些突發(fā)事務(wù)提高了寄存器接口的效率,進一步推開了寄存器接口成為瓶頸的點。
與其他SPI方案不同,微處理器上SPI主硬件的SS信號必須連接至MAX3108 %-overbar_pre%CS%-overbar_post%/A0引腳。除了選擇SPI總線外設(shè)的傳統(tǒng)用途外,%-overbar_pre%CS%-overbar_post%/A0引腳還向MAX3108發(fā)出SPI事務(wù)邊界信號。%-overbar_pre%CS%-overbar_post%/A0的下降沿向MAX3108表示SPI接口上的下一個字節(jié)是MAX3108寄存器地址。%-overbar_pre%CS%-overbar_post%/A0的上升沿向MAX3108發(fā)出信號,表明SPI事務(wù)(單次讀取、單次寫入、突發(fā)讀取或突發(fā)寫入)已經(jīng)結(jié)束。
SPI 事務(wù)本質(zhì)上是雙向的。對于從微處理器寫入MAX3108的每個字節(jié),MAX3108同時返回一個字節(jié)到微處理器。這些往往可以忽略;寄存器寫操作忽略MAX3108的返回字節(jié)。類似地,寄存器讀取返回其值,微處理器向MAX3108發(fā)送虛擬字節(jié)。這些虛擬字節(jié)不會降低接口速度,因為它們與有效的寄存器讀取或?qū)懭霐?shù)據(jù)同時發(fā)生。
單 SPI 寫入
單個寫入事務(wù)的偽代碼如下所示:
/* ** Write one byte to the specified register in the MAX3108 ** ** Arguments: ** port: MAX3108 register address to write to (0x00 through 0x1e) ** val: the value to write to that register ** ** return value: TRUE ** */ BOOL MAX3108_SPI_Write (unsigned int port, unsigned char val) { unsigned int dummy; // Indicate the start of a transaction SET_MAX3108_CS_PIN_LOW; // Write transaction is indicated by MSbit of the // MAX3108 register address byte = 1. SPI return // from the MAX3108 ignored dummy = SPI_SEND_BYTE (0x80 | port); // Now send the value to write, return value ignored dummy = SPI_SEND_BYTE (val); // Finally, indicate transaction completion SET_MAX3108_CS_PIN_HIGH; return TRUE; }
突發(fā) SPI 寫入
MAX3108 SPI接口還支持突發(fā)寫入,適用于快速FIFO填充或快速寄存器負載。如果寄存器地址為零,則突發(fā)寫入將填充發(fā)送FIFO。這允許快速FIFO填充,無需切換MAX3108 %-overbar_pre%CS%-overbar_post%/A0線或為每個寫入FIFO字節(jié)發(fā)送寄存器地址。
對于任何其他MAX3108寄存器地址,寄存器地址隨著突發(fā)的每個后續(xù)字節(jié)自動遞增,從而允許快速寄存器填充。
突發(fā)寫入事務(wù)的偽代碼如下所示:
/* ** Write a burst of bytes to the MAX3108 ** ** Arguments: ** port: MAX3108 register address to write to ** len: number of bytes to send to MAX3108 registers ** ptr: pointer to the bytes to send ** ** return value: TRUE ** */ BOOL MAX3108_SPI_Puts (unsigned int port, unsigned int len, unsigned char *ptr) { unsigned int dummy; // Indicate the start of a transaction SET_MAX3108_CS_PIN_LOW; // Write transaction indicated by MSbit of the // MAX3108 register address byte = 1. SPI return // from the MAX3108 ignored dummy = SPI_SEND_BYTE (0x80 | port); // Covers the case where len==0 while (len--) { dummy = SPI_SEND_BYTE (*ptr++); // return value ignored } // Indicate transaction completion SET_MAX3108_CS_PIN_HIGH; return TRUE; }
注意,對于突發(fā)寫入事務(wù),第一個字節(jié)是MAX3108寄存器地址,所有后續(xù)字節(jié)都是寄存器值寫入。最終寄存器寫入由%-overbar_pre%CS%-overbar_post%/A0引腳變?yōu)楦唠娖奖硎尽?/p>
SPI硬件引擎(通常基于DMA)也控制MAX3108 %-overbar_pre%CS%-overbar_post%/A0引腳,通常通過標有overbar_post overbar_pre SS的引腳。當(dāng) %-overbar_pre%CS%-overbar_post%/A0 變低時,表示下一個 SPI 事務(wù)開始。%-overbar_pre%CS%-overbar_post%/A0必須保持較高的最短時間為0ns。此時確保MAX100識別出交易已完成。
單 SPI 讀取
通過SPI讀取寄存器字節(jié)涉及發(fā)送寄存器地址,后跟虛擬字節(jié)。來自虛擬字節(jié)的SPI反饋是所選MAX3108寄存器的值。
單次讀取的偽代碼如下:
/* ** Read one byte from the specified register in the MAX3108 ** ** Arguments: ** port: MAX3108 register address to read from ** ** return value: the register value ** */ unsigned int MAX3108_SPI_Read (unsigned int port) { unsigned int dummy; unsigned int val; // Indicate the start of a transaction SET_MAX3108_CS_PIN_LOW; // Read transaction indicated by MSbit of the // address byte = 0. SPI return from the MAX3108 // ignored dummy = SPI_SEND_BYTE (port & 0x7f); // Now send a dummy byte to collect the // register value val = SPI_SEND_BYTE (0x00); // Finally, indicate transaction completion SET_MAX3108_CS_PIN_HIGH; return val; }
突發(fā) SPI 讀取
MAX3108 SPI接口還支持突發(fā)讀取,適用于快速FIFO清空或快速寄存器掃描。如果寄存器地址為零,則突發(fā)讀取為空接收FIFO。這樣就可以快速進行FIFO轉(zhuǎn)儲,而無需切換MAX3108 %-overbar_pre%CS%-overbar_post%/A0線或為每個FIFO字節(jié)讀取發(fā)送寄存器地址。
對于任何其他MAX3108寄存器地址,寄存器地址隨著突發(fā)的每個后續(xù)字節(jié)自動遞增,從而允許快速寄存器掃描。
突發(fā)讀取事務(wù)的偽代碼如下:
/* ** Read a burst of bytes from the MAX3108 ** ** Arguments: ** port: MAX3108 register address to read from ** len: number of bytes to get from MAX3108 registers ** ptr: pointer to where to place the bytes ** ** return value: TRUE ** */ BOOL MAX3108_SPI_Gets (unsigned int port, unsigned int len, unsigned char *ptr) { unsigned int dummy; // Indicate the start of a transaction SET_MAX3108_CS_PIN_LOW; // Read transaction indicated by MSbit of the // address byte = 0. SPI return from the MAX3108 // ignored dummy = SPI_SEND_BYTE (port & 0x7f); // Covers the case where len==0 while (len--) { *ptr++ = SPI_SEND_BYTE (0x00); } // Indicate transaction completion SET_MAX3108_CS_PIN_HIGH; return TRUE; }
注意,對于突發(fā)讀取事務(wù),第一個字節(jié)是MAX3108寄存器地址,所有后續(xù)字節(jié)都是假字節(jié),其返回值為寄存器值。最終寄存器讀取由%-overbar_pre%CS%-overbar_post%/A0引腳變?yōu)楦唠娖奖硎尽?/p>
通過 I 接口2C
MAX3108寄存器和微處理器之間的通信也可以通過I進行。2C 接口。
我2C 接口是微處理器上常見的硬件輔助接口。I 的另一個優(yōu)點2C接口是它只使用兩個引腳。而不是為每個外設(shè)選擇單獨的芯片(如在SPI接口的情況下),一個I2C 接口依賴于每個具有唯一 I 的外設(shè)2C 地址。為避免與其他 I 發(fā)生可能的沖突2同一 I 上的 C 外設(shè)2C總線,MAX3108可通過引腳編程至16個唯一I之一2通過 MOSI/A1 和 %-overbar_pre%CS%-overbar_post%/A0 引腳的引腳綁定實現(xiàn) C 外設(shè)地址。在下面的偽代碼中,假定預(yù)處理器變量MAX3108_I2C_PERIPHERAL_ADDRESS是用適當(dāng)?shù)?I 定義的2C 寄存器寫入地址,與任何其他 I 的地址是唯一的2同一總線上的 C 外設(shè)。
MAX3108不僅支持標準模式(100kbps)和快速模式(400kbps)I2C,但也有快速模式加 (1Mbps) I2C.
The MAX3108 I2C 接口不僅支持單寄存器讀寫,還支持突發(fā)讀寫。這些突發(fā)事務(wù)提高了寄存器接口的效率,進一步推開了寄存器接口成為瓶頸的點。
單 I2C 寫入
單個寫入事務(wù)的偽代碼如下所示:
/* ** Write one byte to the specified register in the MAX3108 ** ** Arguments: ** port: MAX3108 register address to write to ** val: the value to write to that register ** ** return value: TRUE – register successfully written ** FALSE – I2C protocol error of some kind ** */ BOOL MAX3108_I2C_Write (unsigned int port, unsigned char val) { // Indicate the start of a transaction and send the // MAX3108 write peripheral address (LSbit = 0) I2C_SET_START_CONDITION; I2C_SEND_BYTE (MAX3108_I2C_PERIPHERAL_ADDRESS); // Is anybody out there? if (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; // no – close out the return FALSE; // transaction } // The MAX3108 is out there, now send the MAX3108 // register to write I2C_SEND_BYTE (port); // Possibly illegal MAX3108 register address? If (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return FALSE; } // Now send the byte to write I2C_SEND_BYTE (val); // Did the MAX3108 get confused? If (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return FALSE; } // The MAX3108 is OK with our write, make it so I2C_SET_STOP_CONDITION; return TRUE; }
爆裂 I2C 寫入
The MAX3108 I2C 接口還支持突發(fā)寫入,適用于快速 FIFO 填充或快速寄存器加載。如果寄存器地址為零,則突發(fā)寫入將填充發(fā)送FIFO。這允許快速填充FIFO,而無需I2寫入的每個 FIFO 字節(jié)的 C 前導(dǎo)碼開銷。
對于任何其他MAX3108寄存器地址,寄存器地址隨著突發(fā)的每個后續(xù)字節(jié)自動遞增,從而允許快速寄存器填充。
突發(fā)寫入事務(wù)的偽代碼如下所示:
/* ** Write a burst of bytes to the MAX3108 ** ** Arguments: ** port: MAX3108 register address to write to ** len: number of bytes to send to MAX3108 registers ** ptr: pointer to the bytes to send ** ** return value: TRUE – register successfully written ** FALSE – I2C protocol error of some kind ** */ BOOL MAX3108_I2C_Puts (unsigned int port, unsigned int len, unsigned char *ptr) { // Indicate the start of a transaction and send the // MAX3108 write peripheral address (LSbit = 0) I2C_SET_START_CONDITION; I2C_SEND_BYTE (MAX3108_I2C_PERIPHERAL_ADDRESS); // Is anybody out there? if (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; // no – close out the return FALSE; // transaction } // The MAX3108 is out there, now send the MAX3108 // register address I2C_SEND_BYTE (port); // Possibly illegal MAX3108 register address? If (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return FALSE; } while (len--) { // Now send the byte to write I2C_SEND_BYTE (*ptr++); // Did the MAX3108 get confused? if (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return FALSE; } } // The MAX3108 is OK with our write, make it so I2C_SET_STOP_CONDITION; return TRUE; }
注意,對于突發(fā)寫入事務(wù),第一個字節(jié)為MAX3108 I2C外設(shè)地址,第二個字節(jié)為MAX3108寄存器地址,后續(xù)所有字節(jié)均為寄存器值寫入。最終寄存器寫入由 STOP 條件指示。
單 I2C 讀取
通過 I 讀取寄存器字節(jié)2C涉及發(fā)送MAX3108讀寄存器地址,后跟I2C 重新啟動條件以轉(zhuǎn)動 I2C總線繞行,從寫(到MAX3108指定MAX3108寄存器)到讀(獲取寄存器值)。
單次讀取的偽代碼如下:
/* ** Read one byte from the specified register in the MAX3108 ** ** Arguments: ** port: MAX3108 register address to read from ** ** return value: the register value (0x00XX) ** 0xff00 is there was some error ** */ unsigned int MAX3108_I2C_Read (unsigned int port) { unsigned int val; // Indicate the start of a transaction and send the // MAX3108 write peripheral address (LSbit = 0) I2C_SET_START_CONDITION; I2C_SEND_BYTE (MAX3108_I2C_PERIPHERAL_ADDRESS); // Is anybody out there? if (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; // no – close out the return 0xff00; // transaction } // The MAX3108 is out there, now send the MAX3108 // register address I2C_SEND_BYTE (port); // Possibly illegal MAX3108 register address? If (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return 0xff00; } // Now turn the I2C bus around by sending the MAX3108 // I2C peripheral read address (LSbit = 1) I2C_SET_RESTART_CONDITION; I2C_SEND_BYTE (MAX3108_I2C_PERIPHERAL_ADDRESS | 0x01); if (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return 0xff00; } // Now get the register value val = I2C_RECEIVE_BYTE; I2C_SEND_NACK; I2C_SET_STOP_CONDITION; return (val); }
爆裂 I2C 讀取
The MAX3108 I2C 接口還支持突發(fā)讀取,適用于快速 FIFO 清空或快速寄存器掃描。如果寄存器地址為零,則突發(fā)讀取為空接收FIFO。這允許快速 FIFO 轉(zhuǎn)儲,而不會產(chǎn)生與 I 相關(guān)的開銷2每個 FIFO 字節(jié)讀取的 C 前導(dǎo)碼。
對于任何其他MAX3108寄存器地址,寄存器地址隨著突發(fā)的每個后續(xù)字節(jié)自動遞增,從而允許快速寄存器掃描。
突發(fā)讀取事務(wù)的偽代碼如下所示:
/* ** Read a burst of bytes from the MAX3108 ** ** Arguments: ** port: MAX3108 register address to read from ** len: number of bytes to get from MAX3108 registers ** ptr: pointer to where to place the bytes ** ** return value: TRUE – if all read ** FALSE – if there was any error ** */ BOOL MAX3108_I2C_Gets (unsigned int port, unsigned int len, unsigned char *ptr) { // Indicate the start of a transaction and send the // MAX3108 write peripheral address (LSbit = 0) I2C_SET_START_CONDITION; I2C_SEND_BYTE (MAX3108_I2C_PERIPHERAL_ADDRESS); // Is anybody out there? if (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; // no – close out the return FALSE; // transaction } // The MAX3108 is out there, now send the MAX3108 // register address I2C_SEND_BYTE (port); // Possibly illegal MAX3108 register address? If (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return FALSE; } // Now turn the I2C bus around by sending the MAX3108 // I2C peripheral read address (LSbit = 1) I2C_SET_RESTART_CONDITION; I2C_SEND_BYTE (MAX3108_I2C_PERIPHERAL_ADDRESS | 0x01); if (!I2C_TEST_ACK) { I2C_SET_STOP_CONDITION; return FALSE; } // Now get the register values while (len--) { *ptr++ = I2C_RECEIVE_BYTE; if (len) I2C_SEND_ACK; // all but last read else I2C_SEND_NACK; // last read only } I2C_SET_STOP_CONDITION; return TRUE; }
注意,對于突發(fā)讀事務(wù),第一個字節(jié)是MAX3108 I2C外設(shè)寫地址,第二個字節(jié)為MAX3108寄存器地址,第三個字節(jié)為MAX3108 I2C外設(shè)讀取地址,并且所有后續(xù)字節(jié)都是寄存器值讀取。微處理器在要讀取更多寄存器時,以 ACK 條件響應(yīng)每個字節(jié)讀取。NACK條件表示從MAX3108讀取的最終寄存器。
結(jié)論
按照本應(yīng)用筆記提供的編碼指南,可以快速啟動并運行微處理器和MAX3108之間的接口。
本應(yīng)用筆記中偽代碼例程的大部分翻譯都是特定于微處理器的。除中斷處理程序外,本系列中的其他特定代碼應(yīng)用筆記詳細探討了MAX3108的特性,幾乎不需要轉(zhuǎn)換為特定的目標微處理器。它們將依靠本應(yīng)用筆記中描述的讀、寫、獲取和放置基元來封裝微處理器特有的問題。
附錄
本附錄包含理解本應(yīng)用筆記以及本系列其他偽代碼所需的定義,詳細探討MAX3108的特性。
與引腳 I/O 相關(guān)的定義
POLL_MAX3108_IRQ:該偽代碼返回MAX3108 %-overbar_pre%IRQ%-overbar_post%引腳的數(shù)字狀態(tài)。該引腳需要外部上拉才能正常工作。
SET_MAX3108_CS_PIN_HIGH:該偽代碼驅(qū)動MAX3108 %-overbar_pre%CS%-overbar_post%/A0引腳高電平。
SET_MAX3108_CS_PIN_LOW:該偽代碼驅(qū)動MAX3108 %-overbar_pre%CS%-overbar_post%/A0引腳為低電平。
SET_MAX3108_RESET_PIN_HIGH:該偽代碼驅(qū)動MAX3108 %-overbar_pre%RST%-overbar_post%引腳高電平。
SET_MAX3108_RESET_PIN_LOW:該偽代碼將MAX3108 %-overbar_pre%RST%-overbar_post%引腳驅(qū)動為低電平。
等:此偽代碼至少將以下指令的執(zhí)行延遲到指定的時間。
與I有關(guān)的定義2C 接口
I2C_SEND_BYTE:該偽代碼通過I向MAX3108發(fā)送一個字節(jié)2C總線。
I2C_SET_RESTART_CONDITION:此偽代碼在 I 上放置了 RESTART 條件2C總線。
I2C_SET_START_CONDITION:此偽代碼在 I 上放置了一個 START 條件2C總線。
I2C_SET_STOP_CONDITION:此偽代碼在 I 上放置了一個 STOP 條件2C總線。
I2C_TEST_ACK:如果MAX3108響應(yīng)用ACK寫入的字節(jié),則返回TRUE;如果MAX3108響應(yīng)用NACK寫入的字節(jié),則返回FALS。
SPI_SEND_BYTE:一個字節(jié)通過SPI接口發(fā)送到MAX3108,同時捕獲MAX3108返回的字節(jié)。
與寄存器接口相關(guān)的定義
MAX3108_Gets:此例程要么MAX3108_I2C_Gets,要么MAX3108_SPI_Gets,具體取決于應(yīng)用程序中實現(xiàn)的接口。
MAX3108_Puts:此例程要么MAX3108_I2C_Puts,要么MAX3108_SPI_Puts,具體取決于應(yīng)用程序中實現(xiàn)的接口。
MAX3108_Read:此例程MAX3108_I2C_Read或MAX3108_SPI_Read,具體取決于應(yīng)用程序中實現(xiàn)的接口。
MAX3108_Write:此例程是MAX3108_I2C_Write的,也可以是MAX3108_SPI_Write的,具體取決于應(yīng)用程序中實現(xiàn)的接口。
MAX3108_I2C_Gets:本應(yīng)用筆記描述的本例程通過I接收FIFO或其它MAX3108寄存器的突發(fā)讀取。2C 接口。
MAX3108_I2C_Puts:本應(yīng)用筆記中描述的本例程通過I向MAX3108發(fā)送FIFO或其它MAX3108寄存器進行突發(fā)寫入。2C 接口。
MAX3108_I2C_Read:本應(yīng)用筆記描述的本例程通過I讀取MAX3108寄存器之一的值。2C 接口。
MAX3108_I2C_Write:本應(yīng)用筆記描述的本例程通過I向MAX3108寄存器寫入一個值。2C 接口。
MAX3108_SPI_Gets:本應(yīng)用筆記描述了該例程,通過SPI接口從MAX3108接收FIFO或其他MAX3108寄存器進行突發(fā)讀取。
MAX3108_SPI_Puts:本應(yīng)用筆記描述的本例程通過SPI接口對MAX3108發(fā)送FIFO或其它MAX3108寄存器進行突發(fā)寫入。
MAX3108_SPI_Read:本應(yīng)用筆記描述的該例程通過SPI接口讀取MAX3108寄存器之一的值。
MAX3108_SPI_Write:本應(yīng)用筆記描述的本例程通過SPI接口向MAX3108寄存器寫入一個值。
審核編輯:郭婷
-
接收器
+關(guān)注
關(guān)注
14文章
2468瀏覽量
71871 -
微處理器
+關(guān)注
關(guān)注
11文章
2258瀏覽量
82402 -
發(fā)送器
+關(guān)注
關(guān)注
1文章
259瀏覽量
26816
發(fā)布評論請先 登錄
相關(guān)推薦
評論