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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用MAX20340通過電源線發送和接收數據

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 17:50 ? 次閱讀

MAX20340簡化了通過電源線發送和接收數據的過程。任何具有 I 的系統2C主站可以在供電的同時發送和接收數據。本文討論如何編寫軟件以在主站和從站之間發送和接收數據。它還提供了示例代碼片段以加速開發。

介紹

本文說明如何使用MAX20340雙向直流電力線通信管理IC發送和接收數據。該文件描述了用于將數據傳輸到單個從站或多個從站的主從固件。還包括示例代碼片段。

通信概述

在最簡單的配置中,主機僅通過兩個物理觸點連接到單個從站:PLC和接地。主機和從機各有自己的微控制器,通過I與各自的MAX20340通信。2C 發送和接收數據。

pYYBAGP0k_SASNiCAABVQEVs1HE906.jpg?imgver=1

圖1.主站和單個從站之間通信接口的簡化框圖。

傳輸數據

MAX20340簡化了電力線數據傳輸。首先,要傳輸的數據是通過I寫入的2C 到三個 8 位傳輸數據字節寄存器。然后,PLC傳輸位通過I2C 指定要傳輸的字節數。一旦寫入 PLC 傳輸位,傳輸就開始了。

最多寫入三個字節的數據以傳輸到傳輸數據字節寄存器(TX_DATA0、TX_DATA1和寄存器TX_DATA2 0x0D、0x0E、0x0F)。

將 PLC 傳輸位 (TX[1:0]) 寫入PLC_COM_CTRL寄存器以觸發最多三個字節的傳輸。寫入 TX[1:0] 字段的值指定要傳輸的字節數。(PLC_COM_CTRL在登記冊0x09中)。

poYBAGP0k_aActSFAABcxqCZxY8253.jpg?imgver=1

圖2.流程圖顯示了使用MAX20340通過電源線傳輸數據的步驟。

接收數據

接收從另一個MAX20340發送的數據也非常簡單。斷言“新數據”中斷,指定接收數據時的字節數。然后,可以通過I2C在三個8位接收數據字節寄存器中讀取接收的數據。

等待新數據中斷(NEW_DATA1i并在寄存器2x0B中NEW_DATA0i)。

從接收數據字節寄存器(寄存器0x1、2x0 和 10x0)中讀取最多三個字節的接收數據(RX_DATA11、RX_DATA0 和寄存器中的RX_DATA12)。

pYYBAGP0k_iACDc6AABKtmvrhpA153.jpg?imgver=1

圖3.流程圖顯示了使用MAX20340通過電源線接收傳輸數據的步驟。

主/從通信流程

在典型應用中,主從應用處理器遵循主/從通信順序并檢查傳輸錯誤。

MAX20340配置為主站,啟動所有PLC通信。配置為從機的MAX20340只能在主站向其發送數據后向主站發送數據。主站傳輸數據后,啟動定時器等待從站響應。如果計時器過期,則在主站上斷言PLC_TMRi中斷,表示從機沒有響應。在發送任何新數據之前,主站應等待從站響應或超時。

主機和從站還應檢查PLC_TX_ERRi和PLC_RX_ERRi中斷指定的傳輸錯誤。

例子

這些實現示例假設主從應用處理器的輸入引腳配置為中斷,連接到MAX20340的中斷引腳。調用“wait_for_interrupt()”會檢查此引腳的狀態并等待其為低電平。此功能的實現是特定于平臺的。調用“I2C_write_register(...)”和“I2C_read_register(...)”可啟動MAX8中20340位寄存器的讀寫,其實現也特定于平臺。

假設在每個示例中都已取消屏蔽所有相關中斷。其他一些實現通過 I 輪詢中斷寄存器2C 而不是取消屏蔽中斷并使用中斷引腳。

這些示例假設所有傳輸均以默認通信設置發送:24μs通信頻率、288mA PLC灌電流、奇偶校驗和10ms RX等待定時器。這些設置取決于應用程序。

將數據傳輸到單個從站

在本例中,PLC 主站連接到單個 PLC 從站(圖 1)。主站傳輸三個字節,從站以一個字節響應。主機應僅在處于“從站發現充電”狀態(FSM_STAT = 0b110)時嘗試傳輸數據。

主傳輸

主固件遵循以下基本結構,在設置中斷掩碼后傳輸三個字節:

將一組三個字節加載到 TX_DATA0-2 寄存器中。

通過在PLC_COM_CTRL寄存器中寫入 TX[1:0] 位來發送三個字節。

(可選)等待 NEWDATA1/2、TMR_ERR、TX_ERR 或 RX_ERR 中斷。

或者,如果收到 NEWDATA1/2 中斷,則從RX_DATA寄存器讀取從屬響應。

從屬接收

設置中斷掩碼后,從屬固件遵循以下基本結構,等待來自主站的數據,并可選擇在主站的等待計時器到期之前做出響應:

等待 RX_ERR 或 NEW_DATA1/2 中斷。

如果收到 NEWDATA1/2 中斷,則從 RX_DATA0-2 個寄存器讀取數據字節。

(可選)將響應加載到 TXDATA0 寄存器中。

(可選)通過在PLC_COM_CTRL寄存器中寫入 TX[1:0] 位來發送一個字節。

主傳輸固件示例代碼片段

主固件的代碼片段如下所示。在此示例中,數據字節、0x55、0x5A和0xA5由主站傳輸。此代碼旨在用作輔助開發的參考,不能按原樣使用。

/*Load a set of three bytes into TX_DATA0-2 registers and write all three bytes at once (I2C auto-incrementation of register address)*/
uint8_t data_bytes[3];
data_bytes[0] = 0x55;
data_bytes[1] = 0x5A;
data_bytes[2] = 0xA5;
I2C_write_register(AO23_MAST_ADDR, TX_DATA0_REG, data_bytes, 3); 

/*Send three bytes by writing 0b11 to the TX[1:0] bits in the PLC_COM_CTRL register (all other bits [7:2] are application dependent)*/
I2C_write_register(AO23_MAST_ADDR, PLC_COM_CTRL_REG, 0x97); 
    
/*Optional: wait for NEWDATA, TMR_ERR, TX_ERR, or RX_ERR interrupt (timeout should be added in typical system)*/
wait_for_interrupt();

/*Optional: Check if interrupt was caused by slave response (NEWDATA1/2)*/
uint8_t plc_int_buf[1];
I2C_read_register(AO23_MAST_ADDR, PLC_IRQ_REG, plc_int_buf, 1);
bool new_data = (plc_int_buf[0] & 0x06) != 0;

/*Optional: If NEWDATA interrupt, read single-byte slave response (response should be processed in typical system)*/
if(new_data){
    uint8_t slave_resp_buf[1];
    I2C_read_register(AO23_MAST_ADDR, RX_DATA0_REG, slave_resp_buf, 1);
}

從站接收固件示例代碼片段

A snippet from the slave firmware is shown below. The slave responds to the received data by transmitting a single byte: 0x55 in this example. This code is meant to be used as a reference to assist development and cannot be used as is./*Wait for RX_ERR or NEW_DATA1/2 interrupt*/
wait_for_interrupt();

/*Check if interrupt caused by received data (NEWDATA1/2)*/
uint8_t plc_int_buf[1];
I2C_read_register(AO23_SLAV_ADDR, PLC_IRQ_REG, plc_int_buf, 1);
bool new_data = (plc_int_buf[0] & 0x06) != 0;

/*If data received, read data and optionally respond*/
if(new_data){    
    /*Read all three data bytes from RX_DATA0-2 registers (I2C auto-incrementation of register address) (received data should be processed in typical system)*/
    uint8_t data_reg_buf[3];
    I2C_read_register(AO23_SLAV_ADDR, RX_DATA0_REG, data_reg_buf, 3);
    
    /*Optional: Load response into TXDATA0 register*/
    I2C_write_register(AO23_SLAV_ADDR, TX_DATA0_REG, 0x55);
    
    /*Optional: Send one byte by writing the TX[1:0] bits in the PLC_COM_CTRL register (all other bits [7:2] are application dependent)*/
    I2C_write_register(AO23_SLAV_ADDR, PLC_COM_CTRL_REG, 0x95);
}

將數據傳輸到兩個從站

在本例中,主機向兩個連接的從站之一傳輸三個字節(圖 4)。

pYYBAGP0k_yARG3yAAB7NUTfP70907.jpg?imgver=1

圖4.主站和兩個從站之間通信接口的簡化框圖。

每個從機都配置了不同的RSEL電阻值,以確保它們具有唯一的PLC從機地址。目標接收方的 PLC 從地址被添加到第一個傳輸字節的 MSB 中。

從站以一個字節響應,并在響應字節的MSB中包含自己的PLC從地址。

有關本實現示例中使用的PLC從站尋址的更多詳細信息,請參閱本文檔的“多個從站注意事項”部分。

主傳輸

主固件遵循以下基本結構,在設置主等待計時器和中斷掩碼后傳輸三個字節:

將一組三個字節加載到 TX_DATA0-2 寄存器中(23 位中只有 24 位包含要發送的數據)。一位,即TX_DATA0的MSB,包含接收方的PLC從地址)。

通過在PLC_COM_CTRL寄存器中寫入 TX[1:0] 位來發送三個字節。

(可選)等待 NEWDATA1/2、TMR_ERR、TX_ERR 或 RX_ERR 中斷。

或者,如果收到 NEWDATA1/2 中斷,則從RX_DATA寄存器讀取從屬響應。

從屬接收

設置中斷掩碼后,從屬固件遵循以下基本結構,等待來自主站的數據,并可選擇在主站的等待計時器到期之前做出響應:

等待 RX_ERR 或 NEW_DATA1/2 中斷。

如果收到 NEWDATA1/2 中斷,則從 RX_DATA0-2 寄存器讀取數據字節。

讀取DEV_STATUS1寄存器的PS_ADD位。

檢查RX_DATA0的 MSB。如果 MSB 不等于 PS_ADD,請忽略接收到的數據。

(可選)將響應加載到 TXDATA0 寄存器中(7 位中只有 8 位包含要發送的數據)。一位,即 TX_DATA0 的 MSB,包含 PS_ADD 位)。

(可選)通過在PLC_COM_CTRL寄存器中寫入 TX[1:0] 位來發送一個字節。

主傳輸固件示例代碼片段

主固件的代碼片段如下所示。在此示例中,數據字節0x55、0x5A和0xA5由主站傳輸。數據以PLC從站地址“1”傳輸到從站。因此,發送的實際數據是0xD5、0x5A和0xA5(PLC 從地址添加到字節 1 的 MSB 中)。此代碼旨在用作輔助開發的參考,不能按原樣使用。

/*Load a set of three bytes into TX_DATA0-2 registers and write all three bytes at once (I2C auto-incrementation of register address)*/
uint8_t data_bytes[3];
data_bytes[0] = 0xD5; /*This byte contains 7 bits of actual data, MSB is recipient PS_ADD*/
data_bytes[1] = 0x5A;
data_bytes[2] = 0xA5;
I2C_write_register(AO23_MAST_ADDR, TX_DATA0_REG, data_bytes, 3); 

/*Send three bytes by writing 0b11 to the TX[1:0] bits in the PLC_COM_CTRL register (all other bits [7:2] are application dependent)*/
I2C_write_register(AO23_MAST_ADDR, PLC_COM_CTRL_REG, 0x97); 
    
/*Optional: Wait for slave response interrupt (timeout should be added in typical system)*/
wait_for_interrupt();

/*Optional: Check if interrupt caused by slave response (NEWDATA1/2)*/
uint8_t plc_int_buf[1];
I2C_read_register(AO23_MAST_ADDR, PLC_IRQ_REG, plc_int_buf, 1);
bool new_data = (plc_int_buf[0] & 0x06) != 0;

/*Optional: if NEWDATA interrupt, read slave response (response should be processed in typical system)*/
if(new_data){
    uint8_t slave_resp_buf[1];
    I2C_read_register(AO23_MAST_ADDR, RX_DATA0_REG, slave_resp_buf, 1);
}

從站接收固件示例代碼片段

從固件的代碼片段如下所示。從站通過發送單個字節來響應接收到的數據:在本例中0x55。該從站的PLC從站地址為“1”。因此,發送的實際數據是0xD5(PLC從地址被添加到字節1的MSB)。此代碼旨在用作輔助開發的參考,不能按原樣使用。

/*Wait for RX_ERR or NEW_DATA1/2 interrupt*/
wait_for_interrupt();

/*Check if interrupt caused by received data (NEWDATA1/2)*/
uint8_t plc_int_buf[1];
I2C_read_register(AO23_SLAV_ADDR, PLC_IRQ_REG, plc_int_buf, 1);
bool new_data = (plc_int_buf[0] & 0x06) != 0;

/*If data received, read data, check if intended recipient, and optionally respond*/
if(new_data){    
    /*Read all three data bytes from RX_DATA0-2 registers (I2C auto-incrementation of register address) (received data should be processed in typical system)*/
    uint8_t data_reg_buf[3];
    I2C_read_register(AO23_SLAV_ADDR, RX_DATA0_REG, data_reg_buf, 3);

    /*read PS_ADD bit of the DEV_STATUS1 register*/
    uint8_t slave_addr_buf[1];
    I2C_read_register(AO23_SLAV_ADDR, DEV_STATUS1_REG, slave_addr_buf, 1);
    uint8_t PS_ADD = slave_addr_buf[0] & 0x01;

    /*Check if MSB of RX_DATA0 (intended recipient address) equals PS_ADD of this slave*/
    uint8_t = recipient_plc_addr = (data_reg_buf[0] & 0x80) >> 7;
    bool is_recipient = (PS_ADD == recipient_plc_addr);

    if(is_recipient){
        /*Optional: Load response into TXDATA0 register. This byte contains 7 bits of actual data, MSB is the slave's own PS_ADD*/
        I2C_write_register(AO23_SLAV_ADDR, TX_DATA0_REG, 0xD5);
        
        /*Optional: Send one byte by writing the TX[1:0] bits in the PLC_COM_CTRL register (all other bits [7:2] are application dependent)*/
        I2C_write_register(AO23_SLAV_ADDR, PLC_COM_CTRL_REG, 0x95);
    }
}

多個從站注意事項

MAX20340主機可以連接任意數量的從機。PLC上的最大從站數量僅受主站可以提供的最大充電電流(1.2A)和PLC上的總電容的限制。

應使用用戶定義的尋址方案,以防止當PLC主站與兩個或多個PLC從機接口時,多個從站嘗試同時響應。PLC從地址在傳輸過程中不會自動使用,盡管RSEL電阻可用于為從機分配具有唯一PLC從地址的從機。

當主站傳輸數據時,所有連接的從站都會接收數據,無論其配置的PLC從站地址如何。當 PLC 主站打算僅將數據包發送到其中一個 PLC 從站時,應在數據字節中嵌入唯一標識預期接收方的地址。用戶可以靈活地將地址分配給任何數據字節位。

RSEL 設置的 PLC 從地址僅為 1 位。因此,它僅在尋址最多兩個從站時才有用。如果連接了兩個以上的PLC從站,則必須使用更多位傳輸的數據字節來唯一地尋址所有從站。

所有PLC從站接收相同的數據。因此,每個從站的應用處理器都應該從傳輸的數據中提取地址位,并將其與自己的唯一地址進行比較,以確定它是否是預期的接收者。然后,預期的從站相應地處理數據,而其他從站則簡單地丟棄數據。

雙從機尋址示例

假設有兩個連接的從站,第一個具有PLC從地址“0”,第二個具有PLC從地址“1”(基于RSEL值并存儲在DEV_STATUS1寄存器的PS_ADD位中)。用戶選擇將目標接收方的PLC從地址編碼為第一個字節的最高有效位。

主機向第一個從站發送 23 位數據,如下所示:

字節 1: '0xxxx' 字節 2: 'xxxx'

字節 3: 'xxxxxx'

其中x是23位數據,字節1的MSB包含第一個從站的PLC從地址('0')。

主機向第二個從設備發送23位數據,如下所示:

字節 1: '1xxxx' 字節 2: 'xxxx'

字節 3: 'xxxxxxx'

其中x是23位數據,字節1的MSB包含第二個從站的PLC從地址(“1”)。

當主站傳輸此數據時,兩個從站都將接收數據。

當從站接收數據時,如果字節1的MSB與配置的PLC從地址匹配,則此數據適用于它,并且應該處理數據。 如果MSB與配置的PLC從地址不匹配,則此數據不適用于它,它應該簡單地丟棄/忽略數據。

如果預期的接收者從站響應主站,則所有其他從站也會收到響應。在具有多個從站的從站響應期間,預期的接收方從站自己的PLC從站地址應嵌入到響應的數據字節中。這可確保其他從站丟棄/忽略預期的從站對主站的響應。

請注意,這不是必需的,PLC協議中沒有內置從站尋址。如果用戶應用程序不要求兩個從站接收不同的數據,并且從屬機從不嘗試同時響應主站,則唯一地址不需要嵌入到數據字節中。如果未使用從站尋址方案,則兩個從站都接收主站發送的數據。如果任何從站響應主站,則所有其他從站將此響應視為接收到的數據。如果兩個從站嘗試同時響應,則會發生通信錯誤。適當的從站尋址方案可以防止此類錯誤。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電源
    +關注

    關注

    184

    文章

    17704

    瀏覽量

    249959
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • plc
    plc
    +關注

    關注

    5010

    文章

    13271

    瀏覽量

    463055
收藏 人收藏

    評論

    相關推薦

    專為電源線設計的DMX250收發器

    電力線網絡。  產品說明:  DMX250是一款專為通過電源線進行DMX/RDM網絡通信而設計的收發器。該設備以250Kbit/s的速度運行,消除了復雜的布線,簡化了安裝。  通過電源線的DMX512消息受到
    發表于 06-30 16:06

    電源線引入的電磁噪聲

    電源線引入的電磁噪聲     電源線噪聲是電網中各種用電設備產生的電磁騷擾沿著電源線傳播所造成的。電源線噪聲分為兩大類:共模干擾、差模干擾。共模干擾
    發表于 06-30 20:26 ?910次閱讀
    <b class='flag-5'>電源線</b>引入的電磁噪聲

    接插電源線

    接插電源線  ATX電源   第六步,接插電源線
    發表于 01-13 10:17 ?1549次閱讀

    SATA電源線數據線接口定義

    SATA電源線數據線接口定義,如果自己組裝電腦的時候犯難了,看看這個
    發表于 11-30 11:40 ?57次下載

    信號電源線的區別

    信號電源線最大的區別就是信號傳輸模擬信號或是數字信號,電源線用來傳輸電流。
    的頭像 發表于 05-17 15:11 ?6.9w次閱讀

    電源線結構名稱

    電源線的結構并不是十分復雜,但是也不要從表面就簡單的可以一下子看穿它,如果好好的去研究電源線的話,有的地方還是需要專業的去了解電源線的結構的。
    的頭像 發表于 08-07 15:46 ?1.2w次閱讀
    <b class='flag-5'>電源線</b>結構名稱

    電話電源線通用嗎

    有的人覺得即使用了也沒出問題,我只能說這是僥幸,多少事故的發生就是因為這樣的僥幸心理。同樣的,音響、網線也不可以作為電源線使用。用電安全無小事,一定要規范的使用電源線、插座。況且,電話
    的頭像 發表于 10-07 14:56 ?1.1w次閱讀

    服務器電源線的分類及應用

    服務器電源線是由插頭、電纜和插座三個部分組成,主要是用來連接服務器和電源分配器。而各個國家根據連接器類型和電壓等級的不同,有著不同的電源線標準,這樣導致服務器電源線的分類眾多,選擇合適
    發表于 01-10 14:43 ?2次下載
    服務器<b class='flag-5'>電源線</b>的分類及應用

    如何使用 MAX20340 通過電力線發送接收數據

    發表于 11-16 22:46 ?0次下載
    如何使用 <b class='flag-5'>MAX20340</b> <b class='flag-5'>通過電力線</b><b class='flag-5'>發送</b>和<b class='flag-5'>接收</b><b class='flag-5'>數據</b>

    使用nanoFramework通過CAN總線發送接收數據

    電子發燒友網站提供《使用nanoFramework通過CAN總線發送接收數據.zip》資料免費下載
    發表于 01-05 10:44 ?0次下載
    使用nanoFramework<b class='flag-5'>通過</b>CAN總線<b class='flag-5'>發送</b>和<b class='flag-5'>接收</b><b class='flag-5'>數據</b>

    工業電源線數據線的保護

    電子發燒友網站提供《工業電源線數據線的保護.pdf》資料免費下載
    發表于 07-31 14:37 ?0次下載
    工業<b class='flag-5'>電源線</b>和<b class='flag-5'>數據線</b>的保護

    MAX20340EWL+ - (Maxim Integrated) - PMIC - 電源管理 - 專用型

    電子發燒友網為你提供Maxim(Maxim)MAX20340EWL+相關產品參數、數據手冊,更有MAX20340EWL+的引腳圖、接線圖、封裝手冊、中文資料、英文資料,MAX20340
    發表于 08-31 18:42
    <b class='flag-5'>MAX20340</b>EWL+ - (Maxim Integrated) - PMIC - <b class='flag-5'>電源</b>管理 - 專用型

    電源線的型號規格

    電源線的型號規格主要可以從以下兩個方面進行分類: 按制造工藝和結構特征分類: 根據制造工藝和結構特征,電源線可分為單支導體硬和多股絞合軟線。單支導體硬包括WDZ-BYJ和BV兩種型
    的頭像 發表于 09-15 16:21 ?8886次閱讀

    電源線的直徑可以和信號的直徑相同嗎?

    和案例。 首先,讓我們先來了解一下電源線和信號的基本概念。電源線是用來連接電源(如交流電源或直流電源
    的頭像 發表于 12-11 15:24 ?836次閱讀

    PCB電源線及地線設計要點

    調整寬度:在設計PCB時,應根據通過電源線的電流大小來選擇合適的線寬。較大的電流需要較寬的導線,以減少電阻和電壓降,從而保證電源傳輸的穩定性和效率。 減少環路電阻:為了降低電源線上的環路電阻,應盡量加粗
    的頭像 發表于 09-25 15:45 ?814次閱讀
    主站蜘蛛池模板: 国产爱豆果冻传媒在线观看视频| 亚洲成a人不卡在线观看| 老师的快感电影完整版| 果冻传媒mv国产陈若瑶主演| 国产成人一区二区三中文| 伧理片午夜伧理片| 芭乐视频网页版在线观看| no视频在线观看| avove主播| www.三级| 成人免费毛片观看| 超碰在线vip| 俄罗斯9一14 young处| 成人在线免费| 国产不卡免费| 国产婷婷色综合AV蜜臀AV| 国产网址在线观看| 国产在线一区二区AV视频| 国模大胆一区二区三区| 好吊妞国产欧美日韩视频| 交video| 九九免费高清在线观看视频| 久久久久国产| 美女坐脸vk| 泡妞高手在都市完整版视频免费| 欧式午夜理伦三级在线观看| 热九九99香蕉精品品| 少妇无码吹潮久久精品AV| 香蕉精品国产自在现线拍| 亚洲高清在线mv| 夜色帮首页| 99国产精品久久人妻| seyeye高清视频在线| 国产成人啪精视频精东传媒网站 | 人妻少妇69式99偷拍| 日日碰狠狠躁久久躁77777| 无码天堂亚洲内射精品课堂| 亚洲男同tv| 97色伦亚洲自偷| 超碰免费视频部落格| 国产亚洲精品久久久久久国|