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

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

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

3天內不再提示

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

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

MAX14900E為高性能、8通道工業開關,具有豐富、先進的特性集。SPI接口允許微控制器監視和控制MAX14900E的大部分方面。為了增強魯棒性,MAX14900E中的硬件CRC(循環冗余校驗)電路可以選擇保護其與微處理器之間的所有數據,防止誤碼。

然而,在MAX14900E中啟用CRC功能是不夠的。微處理器還必須在軟件中實現相同的CRC算法,既要為發送到MAX14900E的數據附加校驗位,又要驗證從MAX<>E接收的數據。實現此目的的一種方法是檢查數據手冊,并使用它來創建自定義固件以實現必要的CRC功能。

更好的方法是改用本應用筆記中的功能。這些是用C語言編寫的,應該很容易移植到大多數常見的微處理器上。

選擇正確的來源

本應用筆記提供了六組C源代碼,每組都實現一個CRC生成器和一個CRC檢查器。MAX14900E使用單字節或雙字節包與微處理器通信。其中三個代碼集實現單字節數據包的生成器和檢查器算法,而其他三個代碼集實現雙字節數據包的生成器和檢查器算法。

除了選擇單字節或雙字節數據包與MAX14900E通信外,另一個選擇標準是代碼大小與執行速度的重要性。本應用筆記提供了三種不同假設的源代碼。首先,小代碼大小是最重要的(執行速度是次要的)。其次,執行速度比代碼大小更重要。第三,在代碼大小和執行速度之間取得平衡。奇怪的是,在某些微處理器架構中,第三個“折衷”選項與第二個選項一樣快,其中表查找相對昂貴。

使用的 API 約定

每個代碼集定義兩個函數調用,一個用于 CRC 生成器,另一個用于 CRC 檢查器。請注意,在這些代碼示例中,“無符號字符”是 8 位無符號值的別名,有時以不同的方式標記,例如 UINT8。函數返回值為“無符號字符”或“布爾值”,但如果返回值為“int”,而不是該微處理器的本機存儲大小,則某些微處理器執行代碼的速度更快。

單字節生成器函數調用如下所示:

send2 = generator (send1);

Send1是發送到MAX14900E的字節。代碼應先發送1,后再發送2至MAX14900E。同樣,雙字節生成器函數調用如下所示:

send3 = generator(send1, send2);

用戶應通過SPI接口發送3個字節,先發送1,后跟send2,然后發送3。

微處理器通過SPI接口將配置設置發送到MAX14900E,MAX14900E同時將狀態信息返回給微處理器。單字節檢查器如下所示:

flag = checker (ret1, ret2);

如果返回字節和 CRC 匹配,則布爾“標志”為真 (!= 0)。雙字節檢查器如下所示:

flag = checker (ret1, ret2, ret3);

小代碼大小

本節中的代碼示例使用循環來構建 CRC,一次生成一位。出于這個原因,它們不是那么快,而是緊湊地編譯。這些代碼片段依賴于幫助程序例程(Loop_CRC)來執行實際的一次位 CRC 計算。

unsigned char Loop_CRC (unsigned char crc, unsigned char byte)
{
	int i;

	for (i = 0; i < 8; i++)
	{
		crc <<= 1;
		if (crc & 0x80)
			crc ^= 0xB7; // 0x37 with MSBit on purpose
		if (byte & 0x80)
			crc ^=1;
		byte <<= 1;
	}

	return crc;
}

//
unsigned char crcSmallEncode8 (unsigned char byte1)
{
	unsigned char synd;

	synd = Loop_CRC (0x7f, byte1);
	return Loop_CRC (synd, 0x80) | 0x80;
}

//
bool crcSmallCheck8 (unsigned char byte1, unsigned char byte2)
{
	unsigned char synd;

	synd = Loop_CRC (0x7f, byte1);
	return Loop_CRC (synd, byte2) == 0;
}

 

unsigned char Loop_CRC (unsigned char crc, unsigned char byte)
{
	int i;

	for (i = 0; i < 8; i++)
	{
		crc <<= 1;
		if (crc & 0x80)
			crc ^= 0xB7; // 0x37 with MSBit on purpose
		if (byte & 0x80)
			crc ^=1;
		byte <<= 1;
	}

	return crc;
}

//
unsigned char crcSmallEncode16 (unsigned char byte1, unsigned char byte2)
{
	unsigned char synd;

	synd = Loop_CRC (0x7f, byte1);
	synd = Loop_CRC (synd, byte2);
	return Loop_CRC (synd, 0x80) | 0x80;
}

//
bool crcSmallCheck16 (unsigned char byte1, unsigned char byte2, unsigned char byte3)
{
	unsigned char synd;

	synd = Loop_CRC (0x7f, byte1);
	synd = Loop_CRC (synd, byte2);
	return Loop_CRC (synd, byte3) == 0;
}

快速執行

本節中的代碼示例以代碼大小換取速度。兩個 128 字節的表對每個表訪問的一個完整字節的數據進行編碼。注意,如果用戶只想保護發送到MAX14900E的數據,并且使用單字節事務,則用戶只需要第二個表。

//
const unsigned char propagate8_next0 [128] = {
 0x00, 0x6E, 0x6B, 0x05, 0x61, 0x0F, 0x0A, 0x64,
 0x75, 0x1B, 0x1E, 0x70, 0x14, 0x7A, 0x7F, 0x11,
 0x5D, 0x33, 0x36, 0x58, 0x3C, 0x52, 0x57, 0x39,
 0x28, 0x46, 0x43, 0x2D, 0x49, 0x27, 0x22, 0x4C,
 0x0D, 0x63, 0x66, 0x08, 0x6C, 0x02, 0x07, 0x69,
 0x78, 0x16, 0x13, 0x7D, 0x19, 0x77, 0x72, 0x1C,
 0x50, 0x3E, 0x3B, 0x55, 0x31, 0x5F, 0x5A, 0x34,
 0x25, 0x4B, 0x4E, 0x20, 0x44, 0x2A, 0x2F, 0x41,
 0x1A, 0x74, 0x71, 0x1F, 0x7B, 0x15, 0x10, 0x7E,
 0x6F, 0x01, 0x04, 0x6A, 0x0E, 0x60, 0x65, 0x0B,
 0x47, 0x29, 0x2C, 0x42, 0x26, 0x48, 0x4D, 0x23,
 0x32, 0x5C, 0x59, 0x37, 0x53, 0x3D, 0x38, 0x56,
 0x17, 0x79, 0x7C, 0x12, 0x76, 0x18, 0x1D, 0x73,
 0x62, 0x0C, 0x09, 0x67, 0x03, 0x6D, 0x68, 0x06,
 0x4A, 0x24, 0x21, 0x4F, 0x2B, 0x45, 0x40, 0x2E,
 0x3F, 0x51, 0x54, 0x3A, 0x5E, 0x30, 0x35, 0x5B
};

const unsigned char propagate8_next1 [128] = {
 0xB7, 0xD9, 0xDC, 0xB2, 0xD6, 0xB8, 0xBD, 0xD3,
 0xC2, 0xAC, 0xA9, 0xC7, 0xA3, 0xCD, 0xC8, 0xA6,
 0xEA, 0x84, 0x81, 0xEF, 0x8B, 0xE5, 0xE0, 0x8E,
 0x9F, 0xF1, 0xF4, 0x9A, 0xFE, 0x90, 0x95, 0xFB,
 0xBA, 0xD4, 0xD1, 0xBF, 0xDB, 0xB5, 0xB0, 0xDE,
 0xCF, 0xA1, 0xA4, 0xCA, 0xAE, 0xC0, 0xC5, 0xAB,
 0xE7, 0x89, 0x8C, 0xE2, 0x86, 0xE8, 0xED, 0x83,
 0x92, 0xFC, 0xF9, 0x97, 0xF3, 0x9D, 0x98, 0xF6,
 0xAD, 0xC3, 0xC6, 0xA8, 0xCC, 0xA2, 0xA7, 0xC9,
 0xD8, 0xB6, 0xB3, 0xDD, 0xB9, 0xD7, 0xD2, 0xBC,
 0xF0, 0x9E, 0x9B, 0xF5, 0x91, 0xFF, 0xFA, 0x94,
 0x85, 0xEB, 0xEE, 0x80, 0xE4, 0x8A, 0x8F, 0xE1,
 0xA0, 0xCE, 0xCB, 0xA5, 0xC1, 0xAF, 0xAA, 0xC4,
 0xD5, 0xBB, 0xBE, 0xD0, 0xB4, 0xDA, 0xDF, 0xB1,
 0xFD, 0x93, 0x96, 0xF8, 0x9C, 0xF2, 0xF7, 0x99,
 0x88, 0xE6, 0xE3, 0x8D, 0xE9, 0x87, 0x82, 0xEC
};

//
unsigned char crcFastEncode8 (unsigned char byte1)
{
	unsigned char synd;
	
	synd = (byte1 & 0x80) ? 0xEC : 0x5B; // 6C & 5B before optimization
	synd ^= byte1;
	return propagate8_next1[synd];
}

bool crcFastCheck8 (unsigned char byte1, unsigned char byte2)
{
	unsigned char synd;
	unsigned char const *ptr;

	synd = (byte1 & 0x80) ? 0xEC : 0x5B;
	synd ^= byte1;
	ptr = byte2 & 0x80 ? propagate8_next1 : propagate8_next0;
	return (ptr[synd] ^ byte2) == 0;
}
 
//
const unsigned char propagate8_next0 [128] = {
 0x00, 0x6E, 0x6B, 0x05, 0x61, 0x0F, 0x0A, 0x64,
 0x75, 0x1B, 0x1E, 0x70, 0x14, 0x7A, 0x7F, 0x11,
 0x5D, 0x33, 0x36, 0x58, 0x3C, 0x52, 0x57, 0x39,
 0x28, 0x46, 0x43, 0x2D, 0x49, 0x27, 0x22, 0x4C,
 0x0D, 0x63, 0x66, 0x08, 0x6C, 0x02, 0x07, 0x69,
 0x78, 0x16, 0x13, 0x7D, 0x19, 0x77, 0x72, 0x1C,
 0x50, 0x3E, 0x3B, 0x55, 0x31, 0x5F, 0x5A, 0x34,
 0x25, 0x4B, 0x4E, 0x20, 0x44, 0x2A, 0x2F, 0x41,
 0x1A, 0x74, 0x71, 0x1F, 0x7B, 0x15, 0x10, 0x7E,
 0x6F, 0x01, 0x04, 0x6A, 0x0E, 0x60, 0x65, 0x0B,
 0x47, 0x29, 0x2C, 0x42, 0x26, 0x48, 0x4D, 0x23,
 0x32, 0x5C, 0x59, 0x37, 0x53, 0x3D, 0x38, 0x56,
 0x17, 0x79, 0x7C, 0x12, 0x76, 0x18, 0x1D, 0x73,
 0x62, 0x0C, 0x09, 0x67, 0x03, 0x6D, 0x68, 0x06,
 0x4A, 0x24, 0x21, 0x4F, 0x2B, 0x45, 0x40, 0x2E,
 0x3F, 0x51, 0x54, 0x3A, 0x5E, 0x30, 0x35, 0x5B
};

const unsigned char propagate8_next1 [128] = {
 0xB7, 0xD9, 0xDC, 0xB2, 0xD6, 0xB8, 0xBD, 0xD3,
 0xC2, 0xAC, 0xA9, 0xC7, 0xA3, 0xCD, 0xC8, 0xA6,
 0xEA, 0x84, 0x81, 0xEF, 0x8B, 0xE5, 0xE0, 0x8E,
 0x9F, 0xF1, 0xF4, 0x9A, 0xFE, 0x90, 0x95, 0xFB,
 0xBA, 0xD4, 0xD1, 0xBF, 0xDB, 0xB5, 0xB0, 0xDE,
 0xCF, 0xA1, 0xA4, 0xCA, 0xAE, 0xC0, 0xC5, 0xAB,
 0xE7, 0x89, 0x8C, 0xE2, 0x86, 0xE8, 0xED, 0x83,
 0x92, 0xFC, 0xF9, 0x97, 0xF3, 0x9D, 0x98, 0xF6,
 0xAD, 0xC3, 0xC6, 0xA8, 0xCC, 0xA2, 0xA7, 0xC9,
 0xD8, 0xB6, 0xB3, 0xDD, 0xB9, 0xD7, 0xD2, 0xBC,
 0xF0, 0x9E, 0x9B, 0xF5, 0x91, 0xFF, 0xFA, 0x94,
 0x85, 0xEB, 0xEE, 0x80, 0xE4, 0x8A, 0x8F, 0xE1,
 0xA0, 0xCE, 0xCB, 0xA5, 0xC1, 0xAF, 0xAA, 0xC4,
 0xD5, 0xBB, 0xBE, 0xD0, 0xB4, 0xDA, 0xDF, 0xB1,
 0xFD, 0x93, 0x96, 0xF8, 0x9C, 0xF2, 0xF7, 0x99,
 0x88, 0xE6, 0xE3, 0x8D, 0xE9, 0x87, 0x82, 0xEC
};

//
// This is the fast (one byte at a time) algorithm
// 
// This is so fast that one could benefit from running it in-line
//
unsigned char crcFastEncode16 (unsigned char byte1, unsigned char byte2)
{
	unsigned char synd;
	unsigned char const *ptr;

	synd = (byte1 & 0x80) ? 0xEC : 0x5B;
	synd ^= byte1;
	ptr = byte2 & 0x80 ? propagate8_next1 : propagate8_next0;
	synd = ptr[synd] ^ byte2;
	return propagate8_next1[synd];
}


bool crcFastCheck16 (unsigned char byte1, unsigned char byte2, unsigned char byte3)
{
	unsigned char synd;
	unsigned char const *ptr;

	synd = (byte1 & 0x80) ? 0xEC : 0x5B;
	synd ^= byte1;
	ptr = byte2 & 0x80 ? propagate8_next1 : propagate8_next0;
	synd = ptr[synd] ^ byte2;
	ptr = byte3 & 0x80 ? propagate8_next1 : propagate8_next0;
	return (ptr[synd] ^ byte3) == 0;
}

平衡

本節中的代碼示例在代碼大小和執行速度之間取得了平衡。一個表查找將 7 位數據編碼到 CRC 中。第八位使用大小優化代碼中使用的技術進行編碼。一些哈佛架構設備具有相對昂貴的表查找執行時間,對于這類微處理器,這種平衡代碼的執行速度可能與速度優化的代碼一樣快,甚至可能更快。

//
unsigned char propagate7 [128] = {
 0x00, 0x6E, 0xDC, 0xB2, 0xD6, 0xB8, 0x0A, 0x64,
 0xC2, 0xAC, 0x1E, 0x70, 0x14, 0x7A, 0xC8, 0xA6,
 0xEA, 0x84, 0x36, 0x58, 0x3C, 0x52, 0xE0, 0x8E,
 0x28, 0x46, 0xF4, 0x9A, 0xFE, 0x90, 0x22, 0x4C,
 0xBA, 0xD4, 0x66, 0x08, 0x6C, 0x02, 0xB0, 0xDE,
 0x78, 0x16, 0xA4, 0xCA, 0xAE, 0xC0, 0x72, 0x1C,
 0x50, 0x3E, 0x8C, 0xE2, 0x86, 0xE8, 0x5A, 0x34,
 0x92, 0xFC, 0x4E, 0x20, 0x44, 0x2A, 0x98, 0xF6,
 0x1A, 0x74, 0xC6, 0xA8, 0xCC, 0xA2, 0x10, 0x7E,
 0xD8, 0xB6, 0x04, 0x6A, 0x0E, 0x60, 0xD2, 0xBC,
 0xF0, 0x9E, 0x2C, 0x42, 0x26, 0x48, 0xFA, 0x94,
 0x32, 0x5C, 0xEE, 0x80, 0xE4, 0x8A, 0x38, 0x56,
 0xA0, 0xCE, 0x7C, 0x12, 0x76, 0x18, 0xAA, 0xC4,
 0x62, 0x0C, 0xBE, 0xD0, 0xB4, 0xDA, 0x68, 0x06,
 0x4A, 0x24, 0x96, 0xF8, 0x9C, 0xF2, 0x40, 0x2E,
 0x88, 0xE6, 0x54, 0x3A, 0x5E, 0x30, 0x82, 0xEC
};

//}
unsigned char crcMediumEncode8 (unsigned char byte1)
{
	unsigned char synd;

	synd = (byte1 ^ 0xEC);
	if (synd & 0x80)
		synd ^= 0xB7;
	synd = propagate7[synd] ^ 0x80;
	if (synd & 0x80)
		synd ^= 0xB7;
	return synd | 0x80;
}

//
bool crcMediumCheck8 (unsigned char byte1, unsigned char byte2)
{
	unsigned char synd;

	synd = (byte1 ^ 0xEC);
	if (synd & 0x80)
		synd ^= 0xB7;
	synd = propagate7[synd] ^ byte2;
	if (synd & 0x80)
		synd ^= 0xB7;
	return synd == 0;
}

//
unsigned char propagate7 [128] = {
 0x00, 0x6E, 0xDC, 0xB2, 0xD6, 0xB8, 0x0A, 0x64,
 0xC2, 0xAC, 0x1E, 0x70, 0x14, 0x7A, 0xC8, 0xA6,
 0xEA, 0x84, 0x36, 0x58, 0x3C, 0x52, 0xE0, 0x8E,
 0x28, 0x46, 0xF4, 0x9A, 0xFE, 0x90, 0x22, 0x4C,
 0xBA, 0xD4, 0x66, 0x08, 0x6C, 0x02, 0xB0, 0xDE,
 0x78, 0x16, 0xA4, 0xCA, 0xAE, 0xC0, 0x72, 0x1C,
 0x50, 0x3E, 0x8C, 0xE2, 0x86, 0xE8, 0x5A, 0x34,
 0x92, 0xFC, 0x4E, 0x20, 0x44, 0x2A, 0x98, 0xF6,
 0x1A, 0x74, 0xC6, 0xA8, 0xCC, 0xA2, 0x10, 0x7E,
 0xD8, 0xB6, 0x04, 0x6A, 0x0E, 0x60, 0xD2, 0xBC,
 0xF0, 0x9E, 0x2C, 0x42, 0x26, 0x48, 0xFA, 0x94,
 0x32, 0x5C, 0xEE, 0x80, 0xE4, 0x8A, 0x38, 0x56,
 0xA0, 0xCE, 0x7C, 0x12, 0x76, 0x18, 0xAA, 0xC4,
 0x62, 0x0C, 0xBE, 0xD0, 0xB4, 0xDA, 0x68, 0x06,
 0x4A, 0x24, 0x96, 0xF8, 0x9C, 0xF2, 0x40, 0x2E,
 0x88, 0xE6, 0x54, 0x3A, 0x5E, 0x30, 0x82, 0xEC
};

//
unsigned char crcMediumEncode16 (unsigned char byte1, unsigned char byte2)
{
	unsigned char synd;

	synd = (byte1 ^ 0xEC);
	if (synd & 0x80)
		synd ^= 0xB7;
	synd = propagate7[synd] ^ byte2;
	if (synd & 0x80)
		synd ^= 0xB7;
	synd = propagate7[synd] ^ 0x80;
	if (synd & 0x80)
		synd ^= 0xB7;
	return synd | 0x80;
}

//
bool crcMediumCheck16 (unsigned char byte1, unsigned char byte2, unsigned char byte3)
{
	unsigned char synd;

	synd = (byte1 ^ 0xEC);
	if (synd & 0x80)
		synd ^= 0xB7;
	synd = propagate7[synd] ^ byte2;
	if (synd & 0x80)
		synd ^= 0xB7;
	synd = propagate7[synd] ^ byte3;
	if (synd & 0x80)
		synd ^= 0xB7;
	return synd == 0;
}

比較

為了了解這些CRC計算的效率,該代碼是在以24 MIPS(16MHz內部CPU時鐘)運行的Microchip PIC32F系列上實現的。這是一個具有 16 位指令的 24 位數據路徑微處理器。對代碼的唯一修改是將返回值更改為“short”,C 編譯器將其解釋為有符號的 16 位值,即其本機數據寬度。

代碼大小由編譯器和鏈接器表確定。輔助程序生成 1,024 個隨機 8 位、16 位或 24 位值。報告的時間是這 1,024 次測試的平均值。表1總結了使用Microchip C編譯器及其代碼仿真器獲得的數據。對于使用表查找的代碼,大小以字節為單位指定為 CONST。

算法 字節(PGM + CONST) 編碼時間(μs) 解碼時間(微秒)
緊湊的單字節 219 24.8 25.5
快速單字節 570 (186 + 384) 1.72 3.00
平衡單字節 323 (195 + 128) 2.06 2.44
緊湊雙字節 267 37.2 37.8
快速雙字節 723 (339 + 384) 3.19 4.34
平衡雙字節 473 (345 + 128) 3.02 3.40

不同的微處理器會產生不同的結果,但在PIC24F的情況下,不需要使用快速算法。如果對快速CRC轉換感興趣,則應在目標處理器上對快速算法和平衡算法進行基準測試,以確定哪個更好。

結論

本應用筆記介紹了如何在與MAX14900E八通道高速工業開關通信的微處理器上對CRC算法進行編碼。利用本應用筆記中的C代碼示例是實現這種額外保護的無憂方法。

在某些情況下,應在目標處理器上執行一些基準測試,尤其是在優先考慮快速執行速度的情況下。

審核編輯:郭婷

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

    關注

    48

    文章

    7714

    瀏覽量

    152648
  • crc
    crc
    +關注

    關注

    0

    文章

    200

    瀏覽量

    29709
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1731

    瀏覽量

    92849
收藏 人收藏

    評論

    相關推薦

    CD4051八通道模擬開關的地址線ABC該怎么接?

    CD4051八通道模擬開關的地址線ABC該怎么接?一般接到哪里?由什么來控制他們?學渣求大神指點!
    發表于 04-21 08:36

    八通道電容式觸摸按鍵芯片TW308

    標準SOP24 封裝1.2 應用場合? 家電? 代替薄膜開關、機械開關? 密封式控制面板,鍵盤? 應用在門鑰匙鎖矩陣類型上? 替代觸摸屏TW308資料見附件參考圖TW308八通道觸摸IC_V4.2.pdf (910.41 KB
    發表于 07-05 04:00

    數字輸出驅動器:理解關鍵特性與挑戰

    記6002:“MAX14900E八通道高速工業開關CRC
    發表于 11-18 09:31

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

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

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

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

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

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

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

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

    程序式八通道級聯定時器

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

    Vishay宣布推出四通道八通道的LC EMI/ESD濾波

    Vishay宣布推出四通道八通道的LC EMI/ESD濾波器陣列--LLP1713/LLP3313 日前,Vishay Intertechnology, Inc. 宣布,推出四通道八通
    發表于 05-20 15:53 ?717次閱讀

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

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

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

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

    CS222八通道觸摸傳感開關

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

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

    Maxim八通道高邊開關/驅動器可對任意感性負載安全消磁,大幅提升工業4.0應用體驗 。 Maxim針對工業4.0應用聯合硅天下科技推出MAX
    發表于 07-11 10:18 ?1006次閱讀

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

    MAX14915為高性能、8通道工業高邊開關,具有豐富、先進的功能集。SPI接口允許微控制器監視和控制MAX14915的大部分方面。
    的頭像 發表于 02-21 16:14 ?1364次閱讀
    <b class='flag-5'>MAX</b>14915<b class='flag-5'>八通道</b>、<b class='flag-5'>工業</b>、高邊<b class='flag-5'>開關</b><b class='flag-5'>CRC</b><b class='flag-5'>編程</b>指南

    使用DAC53608的八通道編程比較器

    電子發燒友網站提供《使用DAC53608的八通道編程比較器.pdf》資料免費下載
    發表于 10-08 11:26 ?0次下載
    使用DAC53608的<b class='flag-5'>八通道</b>可<b class='flag-5'>編程</b>比較器
    主站蜘蛛池模板: 好男人好资源在线播放 | 亚洲国产精品免费线观看视频 | 亚洲中文字幕在线第六区 | 2017年伦理片免费观看 | 国产亚洲精品精品国产亚洲综合 | 色百度网址大全 | 精品日韩视频 | 天龙八部慕容属性加点 | 久久久久久极精品久久久 | 国产福利视频在线观看福利 | 久久久久国产精品嫩草影院 | 亚洲绝美精品一区二区 | 国产精品美女久久久网站动漫 | 丰满人妻妇伦又伦精品APP国产 | 51久久成人国产精品麻豆 | 精品综合久久久久久8888 | 精品久久久久久久国产潘金莲 | xxx日本黄色 | 男同志在线观看 | 国产一区二区在线观看免费 | 快播av种子大全 | 99国产电影 | 国产乱辈通伦影片在线播放亚洲 | 秋霞伦理机在线看片 | 帝王被大臣们调教高肉 | 国产成人久视频免费 | 亚洲在线视频自拍精品 | 超碰免费视频caoporn | YELLOW视频直播在线观看高清 | 国产午夜三区视频在线 | 国产精品日韩欧美一区二区三区 | 麻豆Av国产在线播放 | 加勒比一本之道高清视频在线观看 | 脱女学小内内摸出水网站免费 | 后式大肥臀国产在线 | 全彩无翼污之邪恶女教师 | A级毛片高清免费网站不卡 a级毛片高清免费视频 | 麻豆成人AV久久无码精品 | 中文字幕免费在线视频 | 成年视频国产免费观看 | 99久久婷婷国产综合精品青草 |