色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

與MAX3108 UART接口

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-04-04 11:32 ? 次閱讀

本應(yīng)用筆記是探討MAX3108高性能通用異步接收器/發(fā)送器(UART)特性系列筆記中的第一篇,解釋了MAX3108和控制微處理器之間的基本接口。應(yīng)用筆記簡要介紹了通過2、4或6引腳實(shí)現(xiàn)硬件連接;實(shí)施 31 個寄存器,可通過 SPI 或 I 訪問2C接口;和三種復(fù)位機(jī)制。SPI 和 I 的更詳細(xì)解釋2C 接口和偽代碼示例如下。

介紹

MAX3108為高性能通用異步收發(fā)器(UART),采用晶圓級封裝(WLP),理想用于低功耗便攜式設(shè)備。其高級功能范圍從單獨(dú)的 128 字發(fā)送和接收 FIFO 到廣泛的硬件介導(dǎo)流控制。然而,在應(yīng)用利用這些特性之前,它必須與MAX3108及其31個內(nèi)部寄存器進(jìn)行可靠的通信。本應(yīng)用筆記介紹了MAX3108通信的基本原理。有關(guān)偽代碼的軟件約定顯示在附錄中。

硬件連接

MAX3108與微處理器(μP)之間的通信通過2、4或6個引腳進(jìn)行。兩個專用引腳 %-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% 是微處理器的輸出引腳。它可靠地強(qiáng)制MAX3108復(fù)位至已知狀態(tài)。盡管可以在不使用這些引腳的情況下實(shí)現(xiàn)功能應(yīng)用程序,但最好連接它們,除非缺少 GPIO 引腳。

MAX3108實(shí)現(xiàn)31個寄存器,每個寄存器一個字節(jié)寬,可通過SPI或I訪問。2C 接口,在硬件中選擇。由于其更大的帶寬和更簡單的實(shí)現(xiàn),SPI接口更可取。綁定 SPI/%-overbar_pre%I2C%-overbar_post% 引腳高電平實(shí)現(xiàn) SPI 接口。把它綁得很低,實(shí)現(xiàn)了我2C 接口。

MAX3108 SPI接口直接連接到微處理器上常用的SPI硬件引擎時效果最佳。

微處理器 SPI 引腳 MAX3108引腳
味噌/自主權(quán)達(dá)
莫西 莫西/A1
高萊克 SCLK/SCL
黨衛(wèi)軍 /CS/A0

與其他SPI接口實(shí)現(xiàn)不同,即使MAX3108是SPI總線上唯一的器件,從選擇(SS)信號也必須連接到MAX3108。

同樣,I2C 接口在直接連接到 I 時效果最佳2微處理器上的 C 硬件引擎。

微處理器 I2C 引腳 MAX3108引腳
標(biāo)準(zhǔn)及校正實(shí)驗(yàn)所 SCLK/SCL
自主權(quán)評估 味噌/自主權(quán)達(dá)

與SPI接口不同,I2C 接口依賴于總線上具有唯一 I 的每個外設(shè)2C 地址。為避免地址沖突,MAX1 I引腳MOSI/A0和%-overbar_pre%CS%-overbar_post%/A3108上的硬件引腳搭接選項固定2C 外設(shè)地址為 16 種可能性之一。詳情請參考MAX3108數(shù)據(jù)資料

重置

MAX3108具有三種復(fù)位機(jī)制,所有這些機(jī)制都使MAX3108處于已知狀態(tài),需要后續(xù)寄存器設(shè)置負(fù)載。

第一種復(fù)位機(jī)制是在上電時自動復(fù)位。MAX3108要完成復(fù)位,無需時鐘。但是,1.8V電源必須啟動并運(yùn)行。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ù)位機(jī)制是通過MAX3108 %-overbar_pre%RST%-overbar_post%引腳進(jìn)行硬件復(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ù)位機(jī)制是軟件控制的復(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寄存器之間的接口進(jìn)行。此寄存器接口可以是 SPI 或 I2C 接口。有關(guān) SPI 選項的詳細(xì)信息顯示在此處,而有關(guān) I 的詳細(xì)信息2C 接口出現(xiàn)在通過 I 接口2C部分。

SPI 接口是微處理器上常用的硬件接口。SPI接口的另一個優(yōu)點(diǎn)是它的速度。MAX3108可支持高達(dá)26Mbps的SPI數(shù)據(jù)速率,比目前大多數(shù)微處理器SPI硬件更快。

MAX3108 SPI接口不僅支持單寄存器讀寫,還支持突發(fā)讀寫。這些突發(fā)事務(wù)提高了寄存器接口的效率,進(jìn)一步推開了寄存器接口成為瓶頸的點(diǎn)。

與其他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é)不會降低接口速度,因?yàn)樗鼈兣c有效的寄存器讀取或?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ā)寫入將填充發(fā)送FIFO。這允許快速FIFO填充,無需切換MAX3108 %-overbar_pre%CS%-overbar_post%/A0線或?yàn)槊總€寫入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引腳,通常通過標(biāo)有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。這樣就可以快速進(jìn)行FIFO轉(zhuǎn)儲,而無需切換MAX3108 %-overbar_pre%CS%-overbar_post%/A0線或?yàn)槊總€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進(jìn)行。2C 接口。

我2C 接口是微處理器上常見的硬件輔助接口。I 的另一個優(yōu)點(diǎn)2C接口是它只使用兩個引腳。而不是為每個外設(shè)選擇單獨(dú)的芯片(如在SPI接口的情況下),一個I2C 接口依賴于每個具有唯一 I 的外設(shè)2C 地址。為避免與其他 I 發(fā)生可能的沖突2同一 I 上的 C 外設(shè)2C總線,MAX3108可通過引腳編程至16個唯一I之一2通過 MOSI/A1 和 %-overbar_pre%CS%-overbar_post%/A0 引腳的引腳綁定實(shí)現(xiàn) C 外設(shè)地址。在下面的偽代碼中,假定預(yù)處理器變量MAX3108_I2C_PERIPHERAL_ADDRESS是用適當(dāng)?shù)?I 定義的2C 寄存器寫入地址,與任何其他 I 的地址是唯一的2同一總線上的 C 外設(shè)。

MAX3108不僅支持標(biāo)準(zhǔn)模式(100kbps)和快速模式(400kbps)I2C,但也有快速模式加 (1Mbps) I2C.

The MAX3108 I2C 接口不僅支持單寄存器讀寫,還支持突發(fā)讀寫。這些突發(fā)事務(wù)提高了寄存器接口的效率,進(jìn)一步推開了寄存器接口成為瓶頸的點(diǎn)。

單 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)用筆記提供的編碼指南,可以快速啟動并運(yùn)行微處理器和MAX3108之間的接口。

本應(yīng)用筆記中偽代碼例程的大部分翻譯都是特定于微處理器的。除中斷處理程序外,本系列中的其他特定代碼應(yīng)用筆記詳細(xì)探討了MAX3108的特性,幾乎不需要轉(zhuǎn)換為特定的目標(biāo)微處理器。它們將依靠本應(yīng)用筆記中描述的讀、寫、獲取和放置基元來封裝微處理器特有的問題。

附錄

本附錄包含理解本應(yīng)用筆記以及本系列其他偽代碼所需的定義,詳細(xì)探討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)用程序中實(shí)現(xiàn)的接口。

MAX3108_Puts:此例程要么MAX3108_I2C_Puts,要么MAX3108_SPI_Puts,具體取決于應(yīng)用程序中實(shí)現(xiàn)的接口。

MAX3108_Read:此例程MAX3108_I2C_Read或MAX3108_SPI_Read,具體取決于應(yīng)用程序中實(shí)現(xiàn)的接口。

MAX3108_Write:此例程是MAX3108_I2C_Write的,也可以是MAX3108_SPI_Write的,具體取決于應(yīng)用程序中實(shí)現(xiàn)的接口。

MAX3108_I2C_Gets:本應(yīng)用筆記描述的本例程通過I接收FIFO或其它MAX3108寄存器的突發(fā)讀取。2C 接口。

MAX3108_I2C_Puts:本應(yīng)用筆記中描述的本例程通過I向MAX3108發(fā)送FIFO或其它MAX3108寄存器進(jìn)行突發(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寄存器進(jìn)行突發(fā)讀取。

MAX3108_SPI_Puts:本應(yīng)用筆記描述的本例程通過SPI接口對MAX3108發(fā)送FIFO或其它MAX3108寄存器進(jìn)行突發(fā)寫入。

MAX3108_SPI_Read:本應(yīng)用筆記描述的該例程通過SPI接口讀取MAX3108寄存器之一的值。

MAX3108_SPI_Write:本應(yīng)用筆記描述的本例程通過SPI接口向MAX3108寄存器寫入一個值。

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    2468

    瀏覽量

    71889
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2261

    瀏覽量

    82417
  • 發(fā)送器
    +關(guān)注

    關(guān)注

    1

    文章

    259

    瀏覽量

    26818
收藏 人收藏

    評論

    相關(guān)推薦

    請問怎樣去設(shè)計一種基于MAX2741+LTC3108的GPS接收器?

    MAX2741是什么?有何作用?LTC3108是什么?有何作用?怎樣去設(shè)計一種基于MAX2741+LTC3108的GPS接收器?
    發(fā)表于 06-28 07:19

    MAX3108業(yè)內(nèi)尺寸最小的SPI/I²C UART

    小尺寸的MAX3108通用異步收發(fā)器與128每接收和發(fā)送FIFO字(UART)是控制通過一個串行I2C或SPI控制器接口。自動休眠和關(guān)機(jī)模式,有助于減少非活動期間的功耗。低為500A(最大值)電源電流和微小的25焊球WLP封裝(
    發(fā)表于 01-14 09:46 ?738次閱讀

    MAX3108帶有FIFO的SPI UART

    小尺寸的MAX3108通用異步收發(fā)器與128字的接收和發(fā)送FIFO每個(UART)是控制通過串行I ² C或SPI™控制器接口
    發(fā)表于 02-22 10:28 ?1517次閱讀
    <b class='flag-5'>MAX3108</b>帶有FIFO的SPI <b class='flag-5'>UART</b>

    MAX3108應(yīng)用筆記

    high-performance universal asynchronousreceiver/transmitter (UART) in detail, explains the basic interface between the MAX3108 and the
    發(fā)表于 03-28 16:10 ?0次下載

    MAX3108異步接收器指南

    The MAX3108, a high-performance universal asynchronous receiver-transmitter (UART) in a wafer-level
    發(fā)表于 03-31 10:16 ?0次下載
    <b class='flag-5'>MAX3108</b>異步接收器指南

    Programming Baud Rates of the MAX3108 UART

    Abstract: The MAX3108 is a complete high-performance universal asynchronous receiver-transmitter
    發(fā)表于 04-09 11:53 ?26次下載

    MAX3108A業(yè)界最小通用異步收發(fā)器(UART)

    MAX3108A小尺寸通用異步收發(fā)器(UART),128個字的接收和發(fā)送FIFO的控制是通過串行I2C或SPI控制器接口
    發(fā)表于 11-09 10:34 ?1679次閱讀

    MAX3108A,pdf數(shù)據(jù)手冊

    The MAX3108A small form factor universal asynchronousreceiver-transmitter (UART) with 128 words
    發(fā)表于 11-09 11:16 ?16次下載
    <b class='flag-5'>MAX3108</b>A,pdf數(shù)據(jù)手冊

    MAX3108A中文資料

    MAX3108A為小尺寸通用異步收發(fā)器(UART), 每路接收和發(fā)送FIFO具有128個字,通過串行I2C或SPI控制器接口控制。自動休眠和關(guān)斷模式有助于降低待機(jī)功耗。500A (最大)低電源電流、1A關(guān)斷電流以
    發(fā)表于 08-23 17:06 ?31次下載
    <b class='flag-5'>MAX3108</b>A中文資料

    max3108UART接口

    Introduction The MAX3108 is a high-performance universal asynchronous receiver-transmitter (UART
    發(fā)表于 04-05 15:14 ?12次下載

    連接至 MAX3108 UART

    發(fā)表于 11-17 12:42 ?0次下載
    連接至 <b class='flag-5'>MAX3108</b> <b class='flag-5'>UART</b>

    MAX3108和控制微處理器之間的基本接口解析

    本應(yīng)用筆記中偽代碼例程的大部分翻譯都是特定于微處理器的。除中斷處理程序外,本系列中的其他特定代碼應(yīng)用筆記詳細(xì)探討了MAX3108的特性,幾乎不需要轉(zhuǎn)換為特定的目標(biāo)微處理器。它們將依靠本應(yīng)用筆記中描述的讀、寫、獲取和放置基元來封裝微處理器特有的問題。
    的頭像 發(fā)表于 01-17 14:40 ?1036次閱讀

    MAX3108EWA+T 接口 - UART(通用異步接收器發(fā)送器)

    電子發(fā)燒友網(wǎng)為你提供Maxim(Maxim)MAX3108EWA+T相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MAX3108EWA+T的引腳圖、接線圖、封裝手冊、中文資料、英文資料,MAX3108EWA+T真值表,
    發(fā)表于 01-28 19:26
    <b class='flag-5'>MAX3108</b>EWA+T <b class='flag-5'>接口</b> - <b class='flag-5'>UART</b>(通用異步接收器發(fā)送器)

    MAX3108AEWA+T 接口 - UART(通用異步接收器發(fā)送器)

    電子發(fā)燒友網(wǎng)為你提供Maxim(Maxim)MAX3108AEWA+T相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MAX3108AEWA+T的引腳圖、接線圖、封裝手冊、中文資料、英文資料,MAX3108AEWA+T真值表,
    發(fā)表于 01-28 19:27
    <b class='flag-5'>MAX3108</b>AEWA+T <b class='flag-5'>接口</b> - <b class='flag-5'>UART</b>(通用異步接收器發(fā)送器)

    MAX3108 UART的波特率編程

    MAX3108是一款高性能通用異步收發(fā)器(UART),采用晶圓級封裝(WLP),具有許多硬件高級特性,從單獨(dú)的128字發(fā)送和接收FIFO到廣泛的硬件介導(dǎo)流控制。MAX3108的大部分功能依賴于時鐘的編程。因此,第一個編程任務(wù)是設(shè)
    的頭像 發(fā)表于 02-20 11:42 ?776次閱讀
    <b class='flag-5'>MAX3108</b> <b class='flag-5'>UART</b>的波特率編程
    主站蜘蛛池模板: 国产精品久久久精品日日| 噜噜噜在线AV免费观看看| 欧美日韩视频高清一区| 亚洲视频在线免费| 国产成人在线视频播放| 欧美内射AAAAAAXXXXX| 越南女 黑人 痛苦 大叫| 国产三级在线免费观看| 人妻久久久精品99系列AV| 91精品一区二区综合在线| 狠狠婷婷综合久久久久久| 窝窝影院午夜看片毛片| 不卡一区二区高清观看视频| 蕾丝边娱乐网| 亚洲中文字幕手机版| 国产欧美国日产在线播放| 日本妈妈在线观看中文字幕| 97国产蝌蚪视频在线观看| 久久五月综合婷婷中文云霸高清| 亚洲高清在线视频| 国产精品人妻系列21P| 入禽太深免费视频10| 苍井空教师BD在线观看全集| 男人插曲女人身体视频| 1V1各种PLAY女主被肉| 久久精品一区| 亚洲在线成色综合网站| 国产在线观看不卡| 羞羞影院男女爽爽影院尤物| 国产精品麻豆a啊在线观看| 色欲狠狠躁天天躁无码中文字幕| 日本女人水多| 99热国产这里只有精品6| 蜜臀AV精品久久无码99| 3D内射动漫同人资源在线观看| 国产超碰人人爱被IOS解锁| 日本理伦片午夜理伦片| 白百合在线观看| 日本二区三区欧美亚洲国| 成人免费在线| 三级黄色小视频|