精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

MAX14915八通道、工業、高邊開關CRC編程指南

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

MAX14915為高性能、8通道、工業高邊開關,具有豐富、先進的功能集。SPI接口允許微控制器監視和控制MAX14915的大部分方面。為了增強魯棒性,MAX14915中的硬件循環冗余校驗(CRC)電路可以選擇保護其與微控制器之間的所有數據通信,防止誤碼。然而,在MAX14915中啟用CRC功能是不夠的。微控制器還必須在軟件中實現相同的CRC算法,既要為發送到MAX14915的數據附加校驗位,又要驗證從MAX14915接收的數據。實現此目的的一種方法是檢查數據手冊并使用它來創建自定義固件以實現必要的CRC功能。為了提供更快且經過驗證的解決方案,本應用筆記中提供了一系列功能。它們是用C語言編寫的,應該很容易移植到任何常見的微控制器上。

串行接口上的CRC錯誤檢測

MAX14915串行數據的CRC錯誤檢測可以啟用,以盡量減少由于SDISDO信號的數據損壞而導致的錯誤操作或錯誤信息。如果使能錯誤檢測,通過設置CRCEN引腳= 1,MAX14915執行以下操作:

對從微控制器接收的SDI數據執行錯誤檢測,以及

計算發送到微控制器的SDO數據的CRC,并將校驗字節附加到發送到微控制器的SDO診斷/狀態數據

這可確保從微控制器接收的數據(設置/配置)和發送到微控制器的數據(診斷/狀態)出現未檢測到錯誤的可能性較低。

CRC 錯誤檢測支持SPI尋址和菊花鏈操作模式,以及標準和突發讀/寫周期。

SDI(讀取周期)上的輸入數據

將 CRCEN 輸入設置為高電平可啟用 CRC 錯誤檢測。CRC 幀校驗序列 (FCS) 隨每個串行事務一起發送。5 位 FCS 基于生成器多項式 X5+ X4+ X2+ 1,CRC 起始值 = 11111。當CRC使能時,MAX14915期望在接收的SDI程序/配置數據后附加一個校驗字節。圖 1 顯示了校驗字節格式。

pYYBAGP0gK2ASrngAAArhcf36iI255.png

圖1.微控制器的SDI檢查字節。

5位FCS位CRC[4:0]是根據一個SPI命令中發送的所有數據計算的,包括校驗字節MSB中的三個“0”。因此,在突發命令的情況下,CRC 的計算范圍為 8+3 位到 24+3 位。CRC0是FCS的LSB。

MAX14915驗證接收到的FCS位,如果未檢測到錯誤,MAX14915設置OUT_輸出開關和/或根據SDI數據更改器件配置。如果檢測到CRC錯誤,MAX14915不會改變OUT_輸出和/或器件配置。相反,MAX14915將COMERR邏輯輸出設置為低電平,即COMERR輸出晶體管漏極開路導通。

如果掩模寄存器設置為使能全局故障寄存器中的CRCfault位,MAX14915還將FAULT引腳設置為低電平,為微控制器提供中斷,以進一步指示SPI接口上的通信錯誤。

SDO(寫入周期)上的輸出數據

當DAISY引腳為低電平時,MAX14915附加到SDO數據的檢查字節的格式如圖2所示:

poYBAGP0gLKAR4krAAAuniGF4Oc851.png

圖2.MAX14915在尋址SPI模式下發送SDO檢查字節。

A1 和 A0 是 A1 和 A0 引腳的電平,而 THERR 位是在發生芯片熱關斷事件時設置的。CRC[4:0]是MAX14915根據SDO數據計算的1個CRC位,包括A0、A14915和THERR值。這允許微控制器檢查從MAX<>接收的SDO數據是否存在錯誤。

源代碼

本應用筆記提供了實現CRC生成器和CRC檢查器的C源代碼。MAX14915使用單字節或雙字節包與微控制器通信。源代碼為每種情況提供了一個編碼器和解碼器:

CRC5encode_2byte(用于傳輸 2 個字節)

CRC5encode_1byte(用于傳輸 1 字節)

CRC5check_2byte(用于檢查MAX2的14915字節響應)

CRC5check_1byte(用于檢查MAX1的14915字節響應)

除了選擇單字節或雙字節數據包與MAX14915通信外,請注意,在這些代碼示例中,“byte”是8位無符號值的別名,有時以不同的方式標記,例如UINT8。

Send1為第一個字節,send2為第二個字節,發送至MAX14915。代碼應先發送1,后發送2,再crc_code至MAX14915。

crc_code = crc5encode (send1, send2);

用戶應通過SPI接口發送3個字節,先發送1,后跟send2,然后發送crc_code。當微控制器通過SPI接口將配置設置發送到MAX14915時,MAX14915同時將狀態信息返回給微控制器。這是檢查從MAX14915接收的crc_code是否正確的方法:

crc_ret = crc5decode (ret1, ret2);

字節結果“crc_ret”應與MAX14915接收的第三個字節相同。

圖 3 和圖 4 顯示了 C 函數注釋中提到的數據位置。下載電子表格

poYBAGP0fYGAb0m7AAFBDeS7XD8226.png?imgver=1

圖3.CRC5數據發送到SDI上的MAX14915。

pYYBAGP0fYiAbDT8AAEuKV_sNC0891.png?imgver=1

圖4.MAX5在SDO上發送的CRC14915數據。

public byte crc5encode(byte BYTE1, byte BYTE2)
{
byte crc5_start = 0x1f;
byte crc5_poly = 0x15;
byte crc_result = crc5_start;

// BYTE1
for (int i=0; i<8; i++)
{
if( ((( BYTE1>>(7-i) ) &0x01) ^ ((crc_result & 0x10)>>4)) > 0 ) // IF(XOR(C6;BITAND(D5;2^4)/2^4)
{ crc_result = (byte) (crc5_poly ^ ((crc_result<<1) & 0x1f)); } // BITXOR($D$1;BITAND((D5*2);31))
else
{ crc_result = (byte)((crc_result<<1) & 0x1f); } // shift left, keep only lower 6 bits
}

// BYTE2
for (int i=0; i<8; i++)
{
if( ((( BYTE2>>(7-i) ) &0x01) ^ ((crc_result & 0x10)>>4)) > 0 ) // IF(XOR(C6;BITAND(D5;2^4)/2^4)
{ crc_result = (byte) (crc5_poly ^ ((crc_result<<1) & 0x1f)); } // BITXOR($D$1;BITAND((D5*2);31))
else
{ crc_result = (byte)((crc_result<<1) & 0x1f); } // shift left, keep only lower 6 bits
}

// 3 extra bits set to zero
byte BYTE3=0x00;
for (int i=0; i<3; i++)
{
if( ((( BYTE3>>(7-i) ) &0x01) ^ ((crc_result & 0x10)>>4)) > 0 ) // IF(XOR(C6;BITAND(D5;2^4)/2^4)
{ crc_result = (byte) (crc5_poly ^ ((crc_result<<1) & 0x1f)); } // BITXOR($D$1;BITAND((D5*2);31))
else
{ crc_result = (byte)((crc_result<<1) & 0x1f)); } // shift left, keep only lower 6 bits
}
return crc_result;

}
byte crc5_decode(byte BYTE1, byte BYTE2)
{
byte crc5_start = 0x1f;
byte crc5_poly = 0x15;
byte crc_result = crc5_start;

// BYTE1

for (int i=2; i<8; i++)

{

if( ((( BYTE1>>(7-i) ) &0x01) ^ ((crc_result & 0x10)>>4)) > 0 ) // IF(XOR(C6;BITAND(D5;2^4)/2^4)

{ crc_result = (byte) (crc5_poly ^ ((crc_result<<1) & 0x1f)); } // BITXOR($D$1;BITAND((D5*2);31))

else

{ crc_result = (byte)((crc_result<<1) & 0x1f); } // shift left, keep only lower 6 bits

}

// BYTE2

for (int i=0; i<8; i++)

{

if( ((( BYTE2>>(7-i) ) &0x01) ^ ((crc_result & 0x10)>>4)) > 0 ) // IF(XOR(C6;BITAND(D5;2^4)/2^4)

{ crc_result = (byte) (crc5_poly ^ ((crc_result<<1) & 0x1f)); } // BITXOR($D$1;BITAND((D5*2);31))

else

{ crc_result = (byte)((crc_result<<1) & 0x1f); } // shift left, keep only lower 6 bits

}

// 3 extra bits set to zero
byte BYTE3=0x00;
for (int i=0; i<3; i++)
{
if( ((( BYTE3>>(7-i) ) &0x01) ^ ((crc_result & 0x10)>>4)) > 0 ) // IF(XOR(C6;BITAND(D5;2^4)/2^4)
{ crc_result = (byte) (crc5_poly ^ ((crc_result<<1) & 0x1f)); } // BITXOR($D$1;BITAND((D5*2);31))
else
{ crc_result = (byte)((crc_result<<1) & 0x1f); } // shift left, keep only lower 6 bits
}
return crc_result;

}

結論

本應用筆記介紹了如何在與MAX14915八通道工業高邊開關通信的微控制器上對CRC算法進行編碼。該代碼使用MAX14915EVKIT和相應的GUI進行測試。通過利用本應用筆記中的C代碼示例,工程師獲得了一個經過驗證的解決方案來實現這種額外的數據通信保護。在某些情況下,應在目標微控制器上執行一些基準測試,尤其是在優先考慮快速執行速度的情況下。

審核編輯:郭婷

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

    關注

    48

    文章

    7336

    瀏覽量

    150107
  • 控制器
    +關注

    關注

    112

    文章

    15885

    瀏覽量

    175372
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1669

    瀏覽量

    90733
收藏 人收藏

    評論

    相關推薦

    八通道高壓發送器接收器開關MAX4937電子資料

    概述:MAX4937采用節省空間的5mm x 11mm、56引腳TQFN封裝,為八通道、高壓發送器/接收器(T/R)開關。T/R開關基于二極管橋拓撲,二極管橋的總電流可通過SPI?接口
    發表于 04-14 06:16

    八通道超聲前端與CW多普勒混頻器MAX2078電子資料

    概述:MAX2078是MAXIM公司生產的一款八通道超聲前端是一個完全集成的雙極性,高密度的八通道超聲接收器的低成本,信道計數,高性能便攜式和推車式超聲系統進行了優化。易于使用的集成
    發表于 04-21 06:16

    求一種八通道傳輸/接收(T/R)開關的設計方案

    求一種八通道傳輸/接收(T/R)開關的設計方案
    發表于 05-24 06:32

    MAX2077中文資料,八通道超聲接收器

    MAX2077八通道超聲成像前端是完全集成的雙極型、高密度、八通道超聲接收器,優化用于低成本、多通道、高性能便攜及車載超聲系統。這款易于使用的IC允許用戶以較小的空間
    發表于 01-10 13:20 ?70次下載

    程序式八通道級聯定時器

    程序式八通道級聯定時器
    的頭像 發表于 08-10 23:04 ?2640次閱讀
    程序式<b class='flag-5'>八通道</b>級聯定時器

    MAX2078 八通道超聲前端,提供CW多普勒混頻器

    MAX2078 八通道超聲前端,提供CW多普勒混頻器 概述 MAX2078八通道超聲前端是完全集成的雙極型、高密度、八通道超聲接收器,
    發表于 01-10 13:18 ?1246次閱讀
    <b class='flag-5'>MAX</b>2078 <b class='flag-5'>八通道</b>超聲前端,提供CW多普勒混頻器

    MAX2077 八通道超聲成像前端是完全集成的雙極型、高密度

    MAX2077 八通道超聲成像前端是完全集成的雙極型、高密度、八通道超聲接收器 概述
    發表于 01-10 13:28 ?1044次閱讀
    <b class='flag-5'>MAX</b>2077 <b class='flag-5'>八通道</b>超聲成像前端是完全集成的雙極型、高密度

    CS222八通道觸摸傳感開關

    CS222八通道觸摸
    發表于 01-08 21:27 ?34次下載

    基于FPGA的八通道超聲探傷系統設計

    文中提出了一種基于FPGA的八通道超聲探傷系統設計方案。該系統利用低功耗可變增益運放和八通道ADC構成集成度的前端放大和數據采集模塊;采用FPGA和ARM作為數字信號處理的核心和
    發表于 06-09 16:30 ?54次下載
    基于FPGA的<b class='flag-5'>八通道</b>超聲探傷系統設計

    Maxim推出MAX14913八通道開關和驅動器,可對任意感性負載安全地驅動與消磁

    Maxim針對工業4.0應用推出MAX14913八通道開關和驅動器,幫助
    發表于 07-11 10:04 ?2528次閱讀

    Maxim八通道開關/驅動器可大幅提升工業4.0應用體驗

    Maxim八通道開關/驅動器可對任意感性負載安全消磁,大幅提升工業4.0應用體驗 。 Maxim針對
    發表于 07-11 10:18 ?854次閱讀

    AD5758+ADP1031八通道模擬輸出模塊-演示平臺用戶指南

    AD5758+ADP1031八通道模擬輸出模塊-演示平臺用戶指南
    發表于 03-23 09:23 ?0次下載
    AD5758+ADP1031<b class='flag-5'>八通道</b>模擬輸出模塊-演示平臺用戶<b class='flag-5'>指南</b>

    如何對MAX14915/16進行編程 - 8通道開關

    MAX14915為8通道開關。它支持8通道驅動1A。微控制器兼容型串行外設接口(SPI)提供
    的頭像 發表于 02-21 09:44 ?1624次閱讀
    如何對<b class='flag-5'>MAX14915</b>/16進行<b class='flag-5'>編程</b> - 8<b class='flag-5'>通道</b><b class='flag-5'>高</b><b class='flag-5'>邊</b><b class='flag-5'>開關</b>

    MAX14900E八通道高速工業開關CRC編程

    然而,在MAX14900E中啟用CRC功能是不夠的。微處理器還必須在軟件中實現相同的CRC算法,既要為發送到MAX14900E的數據附加校驗位,又要驗證從
    的頭像 發表于 02-21 16:37 ?796次閱讀

    如何對MAX14915/16進行編程 - 8通道開關

    MAX14915為8通道開關。它支持8通道驅動1A。微控制器兼容型串行外設接口(SPI)提供
    的頭像 發表于 06-13 16:29 ?829次閱讀
    如何對<b class='flag-5'>MAX14915</b>/16進行<b class='flag-5'>編程</b> - 8<b class='flag-5'>通道</b><b class='flag-5'>高</b><b class='flag-5'>邊</b><b class='flag-5'>開關</b>