基于XIAO nRF54LM20A Sense的NFC開發(fā)實(shí)戰(zhàn):從原理到應(yīng)用
1. 項(xiàng)目概述當(dāng)“小身材”遇上“大能量”的NFC最近在搗鼓Seeed Studio的XIAO nRF54LM20A Sense這塊板子它給我的第一印象就是“麻雀雖小五臟俱全”。作為XIAO家族的新成員它集成了Nordic最新的nRF54LM20A這顆雙核MCU性能強(qiáng)勁功耗控制得也相當(dāng)不錯(cuò)。但最讓我眼前一亮的是它板上集成的那個(gè)NFC天線——這意味著我們不用再外掛任何模塊就能直接玩轉(zhuǎn)NFC功能。這可不是簡(jiǎn)單的“有”和“沒有”的區(qū)別而是把NFC從一個(gè)需要額外布線和調(diào)試的“外設(shè)”變成了一個(gè)開箱即用、深度集成的“原生能力”。NFC近場(chǎng)通信這東西聽起來好像就是手機(jī)碰一碰支付或者門禁卡刷卡。但在嵌入式開發(fā)里它代表著一套完整的、短距離、低功耗的無線通信協(xié)議棧。XIAO nRF54LM20A Sense內(nèi)置的NFC控制器支持三種標(biāo)準(zhǔn)模式讀卡器/寫卡器模式PCD、卡模擬模式PICC和點(diǎn)對(duì)點(diǎn)模式P2P。這幾乎覆蓋了你能想到的所有NFC應(yīng)用場(chǎng)景。比如你可以用它來讀取一張MIFARE Classic卡片的信息模擬一張門禁卡讓手機(jī)去讀取或者和另一臺(tái)支持NFC的設(shè)備比如手機(jī)進(jìn)行小數(shù)據(jù)量的快速交換。對(duì)于開發(fā)者尤其是創(chuàng)客和物聯(lián)網(wǎng)項(xiàng)目愛好者來說這個(gè)集成的NFC功能價(jià)值巨大。它極大地簡(jiǎn)化了硬件設(shè)計(jì)降低了入門門檻。你不用再去研究NFC天線如何匹配、線圈怎么畫、外圍電路如何設(shè)計(jì)這些最讓人頭疼的射頻部分原廠已經(jīng)幫你優(yōu)化好了。你只需要關(guān)心應(yīng)用邏輯你想讓這塊板子“讀”什么或者“裝”成什么這讓我們能把精力完全集中在創(chuàng)意和軟件實(shí)現(xiàn)上。無論是想做一個(gè)NFC音樂墻的觸發(fā)終端一個(gè)智能物品的NFC標(biāo)簽還是一個(gè)簡(jiǎn)單的NFC數(shù)據(jù)交換中繼節(jié)點(diǎn)XIAO nRF54LM20A Sense都提供了一個(gè)近乎完美的硬件起點(diǎn)。2. 核心硬件與協(xié)議棧深度解析2.1 nRF54LM20A的NFC子系統(tǒng)架構(gòu)要玩轉(zhuǎn)XIAO Sense的NFC光知道它有這個(gè)功能還不夠得稍微深入一點(diǎn)理解它的硬件架構(gòu)和Nordic提供的軟件支持。nRF54LM20A內(nèi)部的NFC控制器是一個(gè)相對(duì)獨(dú)立的子系統(tǒng)它通過一個(gè)標(biāo)準(zhǔn)的I2C或SPI接口與主應(yīng)用處理器這里是Cortex-M33通信。這種設(shè)計(jì)的好處是NFC的輪詢、數(shù)據(jù)編解碼、沖突檢測(cè)等底層、實(shí)時(shí)性要求高的任務(wù)都由這個(gè)專用控制器完成不占用主CPU的資源主CPU只需要在數(shù)據(jù)準(zhǔn)備好時(shí)通過中斷來讀取即可非常高效。在協(xié)議層面它完整支持ISO/IEC 14443 Type A和Type B標(biāo)準(zhǔn)以及FeliCa索尼的Felica卡常用在日本交通系統(tǒng)和NFC Forum的Type 1-4 Tag操作。這意味著它能兼容市面上絕大多數(shù)NFC卡片和標(biāo)簽比如常見的MIFARE Classic 1K/4K雖然安全性有爭(zhēng)議但存量巨大、MIFARE DESFire安全性更高、NTAG系列常用于NFC海報(bào)、智能包裝等。注意雖然硬件支持很全但具體到軟件庫nRF Connect SDK其對(duì)某些特定卡片類型的支持可能需要額外的配置或庫文件。例如要完整操作MIFARE Classic卡通常需要啟用專門的MFCL庫因?yàn)樗褂昧朔菢?biāo)準(zhǔn)的加密算法Crypto-1。2.2 NFC天線設(shè)計(jì)與匹配要點(diǎn)XIAO Sense板載的NFC天線是一個(gè)精心設(shè)計(jì)的環(huán)形線圈。它的性能直接決定了NFC的通信距離和穩(wěn)定性。雖然我們不需要自己畫天線但了解其原理對(duì)排查問題和進(jìn)行二次開發(fā)比如你想外接一個(gè)更大尺寸的天線很有幫助。NFC天線可以等效為一個(gè)電感L和其寄生電阻R的串聯(lián)電路。為了讓天線在13.56MHz的工作頻率下達(dá)到最佳性能需要串聯(lián)或并聯(lián)一個(gè)匹配電容C使整個(gè)LC回路在該頻率下發(fā)生諧振。XIAO Sense的PCB上已經(jīng)集成了匹配網(wǎng)絡(luò)通常是一組可選的電容出廠時(shí)已針對(duì)板載天線尺寸做了調(diào)校。如果你需要外接天線例如想將天線引出來貼到設(shè)備外殼內(nèi)部有幾點(diǎn)必須注意電感量外接天線的電感量需要與板載設(shè)計(jì)值接近。電感量太大或太小都會(huì)導(dǎo)致諧振點(diǎn)嚴(yán)重偏移通信距離急劇下降甚至無法工作。通常需要用電感表測(cè)量或根據(jù)天線尺寸估算。匹配電容需要重新計(jì)算匹配電容值。公式是 f 1 / (2π√(LC))。知道目標(biāo)頻率f13.56MHz和天線的電感L就能算出所需的電容C。實(shí)際操作中常用一個(gè)可調(diào)電容如1-10pF的貼片可調(diào)電容進(jìn)行微調(diào)用頻譜分析儀或?qū)I(yè)的NFC場(chǎng)強(qiáng)測(cè)試儀觀察調(diào)諧效果。布線連接外接天線的導(dǎo)線應(yīng)盡量短并做成差分對(duì)如果天線是差分接口以減小輻射干擾。避免將天線走線靠近大的金屬物體或電源線這會(huì)吸收或干擾磁場(chǎng)嚴(yán)重削弱信號(hào)。實(shí)操心得對(duì)于絕大多數(shù)應(yīng)用強(qiáng)烈建議直接使用板載天線。它的性能對(duì)于常規(guī)的1-4厘米讀寫距離完全足夠且穩(wěn)定性有保障。只有在有特殊的結(jié)構(gòu)限制或需要更遠(yuǎn)距離即便如此受限于NFC標(biāo)準(zhǔn)也很難超過10厘米時(shí)才考慮外接天線并且要做好反復(fù)調(diào)試的心理準(zhǔn)備。3. 開發(fā)環(huán)境搭建與基礎(chǔ)示例3.1 工具鏈準(zhǔn)備與項(xiàng)目創(chuàng)建要開始編程我們首先得搭好環(huán)境。Nordic的nRF Connect SDKNCS是開發(fā)nRF54系列的首選它基于Zephyr RTOS提供了對(duì)NFC功能的完整驅(qū)動(dòng)和示例。我個(gè)人的工作流是在VSCode中安裝nRF Connect for VS Code擴(kuò)展這是最省事的方法。安裝工具鏈通過nRF Connect for VS Code擴(kuò)展可以一鍵安裝NCS、工具鏈GNU Arm Embedded Toolchain、以及必要的Python依賴。確保安裝的NCS版本支持nRF54LM20Av2.6.x及以上版本通常都支持。連接開發(fā)板用USB-C線將XIAO Sense連接到電腦。電腦會(huì)識(shí)別出兩個(gè)串口一個(gè)用于日志輸出CDC ACM一個(gè)用于J-Link調(diào)試。在VS Code的設(shè)備管理器中應(yīng)該能看到它。創(chuàng)建項(xiàng)目不要從零開始。最快捷的方式是使用NCS自帶的示例。打開VS Code命令面板CtrlShiftP輸入“nRF Connect: Show Examples”。在彈出窗口中篩選設(shè)備為“nRF54LM20A”然后找到與NFC相關(guān)的示例例如nfc目錄下的reader_writer讀卡器示例或tag_emulation標(biāo)簽?zāi)M示例。將其克隆到你的工作目錄。3.2 第一個(gè)NFC程序讀取UID我們從最簡(jiǎn)單的開始編寫一個(gè)程序讓XIAO Sense作為讀卡器讀取靠近它的NFC標(biāo)簽或卡片的UID唯一標(biāo)識(shí)符。這是驗(yàn)證硬件和基礎(chǔ)驅(qū)動(dòng)是否正常工作的最佳方式。在NCS中NFC功能主要通過nfc_t*系列的API來控制。核心步驟包括初始化、配置輪詢參數(shù)、注冊(cè)回調(diào)函數(shù)、然后啟動(dòng)輪詢。下面是一個(gè)極度簡(jiǎn)化的代碼邏輯框架幫助你理解流程#include zephyr/kernel.h #include zephyr/device.h #include nfc/ndef/msg.h #include nfc/t4t/lib.h #include nfc/t4t/cc_file.h // 可能需要的頭文件取決于具體協(xié)議 // NFC讀取回調(diào)函數(shù) static void nfc_callback(void *context, nfc_t_event_t event, const uint8_t *data, size_t data_len) { switch (event) { case NFC_T4T_EVENT_NDEF_READ: // 當(dāng)讀取到NDEF數(shù)據(jù)時(shí) printk(NDEF消息已讀取長(zhǎng)度%zu\n, data_len); // 這里可以解析data中的NDEF記錄 break; case NFC_T4T_EVENT_FIELD_ON: // NFC場(chǎng)激活 printk(檢測(cè)到NFC場(chǎng)\n); break; case NFC_T4T_EVENT_FIELD_OFF: // NFC場(chǎng)消失 printk(NFC場(chǎng)消失\n); break; default: break; } } void main(void) { // 1. 獲取NFC設(shè)備實(shí)例通常使用設(shè)備樹中定義的標(biāo)簽如 NFC const struct device *nfc_dev DEVICE_DT_GET(DT_ALIAS(nfc)); if (!device_is_ready(nfc_dev)) { printk(NFC設(shè)備未就緒\n); return; } // 2. 初始化NFC庫并注冊(cè)回調(diào) int err nfc_t4t_setup(nfc_dev, nfc_callback, NULL); // 這里以Type 4 Tag為例 if (err) { printk(NFC T4T初始化失敗: %d\n, err); return; } // 3. 配置并啟動(dòng)輪詢作為讀卡器 // 通常需要配置輪詢周期、支持的協(xié)議等 err nfc_start_polling(nfc_dev, NFC_POLL_TYPE_GENERIC_TARGET); if (err) { printk(啟動(dòng)輪詢失敗: %d\n, err); return; } printk(NFC讀卡器已啟動(dòng)等待標(biāo)簽靠近...\n); while (1) { k_sleep(K_SECONDS(1)); // 主循環(huán)可以處理其他任務(wù) } }這只是一個(gè)框架。實(shí)際在NCS的示例中初始化過程可能更復(fù)雜需要配置NFC-A (ISO14443A)或NFC-B的參數(shù)并處理更詳細(xì)的事件。編譯這個(gè)項(xiàng)目在VS Code中通常點(diǎn)擊底部狀態(tài)欄的“Build”按鈕然后將生成的.hex或.bin文件燒錄到板子里使用“Flash”按鈕。打開串口終端如PuTTY或VS Code的串口監(jiān)視器設(shè)置正確的串口號(hào)和波特率通常是115200當(dāng)你用一張NFC卡片靠近天線時(shí)應(yīng)該能看到類似“檢測(cè)到NFC場(chǎng)”和卡片UID輸出的日志。常見問題1編譯找不到頭文件或函數(shù)這通常是因?yàn)镃MakeLists.txt中沒有正確配置依賴。在NCS中你需要在項(xiàng)目的CMakeLists.txt文件中添加對(duì)應(yīng)的庫。對(duì)于基礎(chǔ)的NFC讀卡你很可能需要find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) target_sources(app PRIVATE src/main.c) target_link_libraries(app PRIVATE zephyr_interface nfc_lib # NFC核心庫 nfc_t4t_lib # Type 4 Tag庫 )具體鏈接的庫名需要參考NCS的文檔或示例項(xiàng)目。常見問題2能檢測(cè)到場(chǎng)但讀不到UID或數(shù)據(jù)首先確認(rèn)你的卡片類型是否被支持??梢試L試換一張標(biāo)準(zhǔn)的NTAG213卡片試試。其次檢查代碼中輪詢的配置是否支持你卡片的協(xié)議如NFC-A。最后也是最容易被忽略的天線的位置和方向。NFC是磁場(chǎng)耦合需要將卡片的線圈與板載天線的線圈大致平行并對(duì)準(zhǔn)中心距離在1-3厘米內(nèi)效果最佳。如果卡片有金屬外殼或貼在手機(jī)上可能會(huì)嚴(yán)重干擾通信。4. 核心應(yīng)用模式實(shí)戰(zhàn)4.1 模式一讀卡器/寫卡器模式實(shí)現(xiàn)在這個(gè)模式下XIAO Sense作為主動(dòng)方去讀寫被動(dòng)式的NFC標(biāo)簽或卡片。這是最常用的模式比如門禁讀頭、信息采集終端等。實(shí)戰(zhàn)讀取并解析NDEF文本記錄很多NFC標(biāo)簽如NTAG內(nèi)部存儲(chǔ)的是NDEFNFC Data Exchange Format格式的數(shù)據(jù)。我們的目標(biāo)是讀取它并解析出其中的文本內(nèi)容。初始化與輪詢和基礎(chǔ)示例類似先初始化和啟動(dòng)輪詢。數(shù)據(jù)接收回調(diào)在回調(diào)函數(shù)中當(dāng)收到NFC_T4T_EVENT_NDEF_READ事件時(shí)data指針指向的就是原始的NDEF消息字節(jié)流。解析NDEFNDEF消息由一個(gè)或多個(gè)NDEF記錄組成。我們需要解析它。NCS提供了nfc/ndef庫來幫忙。下面是一個(gè)解析單條文本記錄的簡(jiǎn)化示例#include nfc/ndef/msg.h #include nfc/ndef/record.h // ... 其他頭文件 static void nfc_callback(void *context, nfc_t_event_t event, const uint8_t *data, size_t data_len) { if (event NFC_T4T_EVENT_NDEF_READ data ! NULL) { // 將接收到的數(shù)據(jù)解析為NDEF消息 struct nfc_ndef_msg_desc *msg; int err nfc_ndef_msg_parse(msg, data, data_len); if (err) { printk(NDEF消息解析失敗: %d\n, err); return; } // 遍歷消息中的所有記錄 for (size_t i 0; i msg-record_count; i) { struct nfc_ndef_record_desc *record msg-record[i]; // 檢查記錄類型是否為文本類型 (TNF1, RTDT) if (record-tnf NFC_NDEF_TNF_WELL_KNOWN record-type_length 1 record-type[0] T) { // 這是一個(gè)文本記錄解碼它 struct nfc_ndef_record *nfc_record; err nfc_ndef_record_decode(record, nfc_record); if (err) { printk(記錄解碼失敗\n); continue; } // 假設(shè)我們知道這是文本記錄直接訪問payload // 文本記錄的payload第一個(gè)字節(jié)是狀態(tài)字節(jié)編碼和語言碼長(zhǎng)度 uint8_t status_byte nfc_record-payload[0]; uint8_t lang_code_len status_byte 0x3F; // 低6位是語言碼長(zhǎng)度 uint8_t *text_start nfc_record-payload[1 lang_code_len]; size_t text_len nfc_record-payload_length - 1 - lang_code_len; printk(讀取到文本: %.*s\n, text_len, text_start); nfc_ndef_record_clear(nfc_record); } } nfc_ndef_msg_clear(msg); } }實(shí)戰(zhàn)寫入NDEF URI記錄我們也可以讓XIAO Sense向一個(gè)可寫的標(biāo)簽寫入數(shù)據(jù)比如寫入一個(gè)網(wǎng)址。// 準(zhǔn)備一個(gè)NDEF消息包含一條URI記錄 uint8_t ndef_msg_buf[256]; // 緩沖區(qū) size_t ndef_msg_len 0; // 1. 創(chuàng)建一條URI記錄例如指向 https://www.seeedstudio.com struct nfc_ndef_record_desc *uri_record; nfc_ndef_record_desc_tnf_uri_create(uri_record, NFC_NDEF_TNF_WELL_KNOWN, NULL, 0, // 無ID https://www.seeedstudio.com, strlen(https://www.seeedstudio.com)); // 2. 將這條記錄放入一個(gè)NDEF消息中 struct nfc_ndef_msg_desc *msg_to_write; nfc_ndef_msg_create(msg_to_write); nfc_ndef_msg_add_record(msg_to_write, uri_record); // 3. 編碼NDEF消息到字節(jié)流 int err nfc_ndef_msg_encode(msg_to_write, ndef_msg_buf, sizeof(ndef_msg_buf), ndef_msg_len); if (err) { printk(NDEF消息編碼失敗: %d\n, err); return; } // 4. 將編碼后的字節(jié)流寫入NFC標(biāo)簽 // 這通常需要使用nfc_t4t_emulation_set_ndef_msg或類似的API將數(shù)據(jù)“裝載”到讀卡器模式的寫緩沖區(qū)。 // 具體API取決于你使用的底層庫如libnfc或NCS的特定實(shí)現(xiàn)。 // 偽代碼示意 err nfc_t4t_emulation_set_ndef_msg(nfc_dev, ndef_msg_buf, ndef_msg_len); if (err) { printk(設(shè)置NDEF消息失敗: %d\n, err); } // 5. 當(dāng)有可寫標(biāo)簽進(jìn)入場(chǎng)區(qū)時(shí)控制器會(huì)自動(dòng)將數(shù)據(jù)寫入。 printk(URI數(shù)據(jù)已準(zhǔn)備請(qǐng)將可寫NFC標(biāo)簽靠近以寫入。\n);注意事項(xiàng)寫入操作需要標(biāo)簽支持寫操作且未寫保護(hù)。對(duì)于NTAG系列通常前幾次寫入是允許的。寫入前最好先讀取標(biāo)簽的容量和狀態(tài)。4.2 模式二卡模擬模式實(shí)戰(zhàn)在這個(gè)模式下XIAO Sense模擬成一個(gè)被動(dòng)的NFC標(biāo)簽或卡片。當(dāng)手機(jī)或其他讀卡器靠近時(shí)會(huì)認(rèn)為它是一個(gè)標(biāo)準(zhǔn)的NFC標(biāo)簽。這是實(shí)現(xiàn)“智能名片”、“設(shè)備快速配對(duì)”如藍(lán)牙配對(duì)、“無源傳感器數(shù)據(jù)透?jìng)鳌钡葓?chǎng)景的關(guān)鍵。實(shí)戰(zhàn)模擬一個(gè)包含Wi-Fi配置的NFC標(biāo)簽這是一個(gè)非常實(shí)用的功能。你可以用手機(jī)碰一下XIAO Sense手機(jī)就自動(dòng)連接到指定的Wi-Fi網(wǎng)絡(luò)無需手動(dòng)輸入密碼。這需要模擬一個(gè)包含“Wi-Fi簡(jiǎn)單配置記錄”的NDEF標(biāo)簽。該記錄遵循Wi-Fi Alliance的規(guī)范。構(gòu)建NDEF消息消息中包含一條TNF為NFC_NDEF_TNF_MEDIA_TYPE類型為application/vnd.wfa.wsc的記錄其Payload是編碼后的Wi-Fi配置數(shù)據(jù)包括SSID、認(rèn)證類型、加密類型、網(wǎng)絡(luò)密鑰等。// 構(gòu)建WSC (Wi-Fi Simple Configuration) Payload // 這是一個(gè)簡(jiǎn)化的示例實(shí)際需要按照WSC規(guī)范構(gòu)建TLV格式的數(shù)據(jù) uint8_t wifi_payload[] { // 示例TLV結(jié)構(gòu)SSID (0x1045)后面是長(zhǎng)度和值 0x10, 0x45, 0x00, 0x0C, // TLV頭類型0x1045(SSID)長(zhǎng)度12 M, y, W, i, F, i, N, e, t, w, o, r, k, // SSID: MyWiFiNetwork (12字符) // 認(rèn)證類型 (0x1003): WPA2-Personal 0x10, 0x03, 0x00, 0x02, 0x00, 0x20, // 加密類型 (0x100F): AES 0x10, 0x0F, 0x00, 0x02, 0x00, 0x08, // 網(wǎng)絡(luò)密鑰 (0x1027) 0x10, 0x27, 0x00, 0x0D, // 長(zhǎng)度13 M, y, S, e, c, r, e, t, P, a, s, s, !, // ... 可以添加更多TLV }; // 創(chuàng)建媒體類型記錄 struct nfc_ndef_record_desc *wifi_record; nfc_ndef_record_desc_media_create(wifi_record, application/vnd.wfa.wsc, // MIME類型 sizeof(application/vnd.wfa.wsc) - 1, NULL, 0, // 無ID wifi_payload, sizeof(wifi_payload)); // 將記錄添加到NDEF消息 struct nfc_ndef_msg_desc *emulation_msg; nfc_ndef_msg_create(emulation_msg); nfc_ndef_msg_add_record(emulation_msg, wifi_record); // 編碼消息 uint8_t encoded_msg[256]; size_t encoded_len; err nfc_ndef_msg_encode(emulation_msg, encoded_msg, sizeof(encoded_msg), encoded_len); // 設(shè)置到NFC控制器的模擬數(shù)據(jù)區(qū) err nfc_t4t_emulation_set_ndef_msg(nfc_dev, encoded_msg, encoded_len); if (err) { printk(設(shè)置模擬NDEF消息失敗: %d\n, err); return; } // 啟動(dòng)卡模擬模式 err nfc_t4t_emulation_start(nfc_dev); if (err) { printk(啟動(dòng)卡模擬失敗: %d\n, err); return; } printk(已啟動(dòng)Wi-Fi配置卡模擬模式。請(qǐng)用手機(jī)NFC功能觸碰讀取。\n);當(dāng)支持WSC的安卓手機(jī)通常需要系統(tǒng)自帶“連接至NFC標(biāo)簽”功能或特定App觸碰板子時(shí)手機(jī)會(huì)自動(dòng)識(shí)別出這是一個(gè)Wi-Fi配置標(biāo)簽并提示用戶連接至“MyWiFiNetwork”。實(shí)操心得卡模擬模式非常省電。因?yàn)榘遄又皇潜粍?dòng)地響應(yīng)讀卡器的磁場(chǎng)能量和指令不需要自己發(fā)射射頻信號(hào)。這意味著你甚至可以讓設(shè)備在深度睡眠System OFF模式下由NFC場(chǎng)喚醒并完成一次數(shù)據(jù)交換這對(duì)于電池供電的物聯(lián)網(wǎng)設(shè)備是極大的優(yōu)勢(shì)。在nRF54LM20A上可以通過配置NFC事件來喚醒系統(tǒng)。4.3 模式三點(diǎn)對(duì)點(diǎn)模式探索點(diǎn)對(duì)點(diǎn)模式允許兩個(gè)主動(dòng)設(shè)備都支持NFC進(jìn)行雙向通信。雖然速度不如藍(lán)牙但建立連接極其快速碰一下就行。最常見的應(yīng)用是藍(lán)牙快速配對(duì)Bluetooth Low Energy Pairing或者交換少量數(shù)據(jù)如聯(lián)系人、網(wǎng)址。在NCS中P2P模式通常通過SNEPSimple NDEF Exchange Protocol或LLCPLogical Link Control Protocol來實(shí)現(xiàn)。配置相對(duì)復(fù)雜需要處理連接建立、數(shù)據(jù)分片和重組。一個(gè)典型的P2P數(shù)據(jù)交換流程初始化將NFC控制器配置為P2P模式同時(shí)支持發(fā)起方Initiator和目標(biāo)方Target角色。連接建立當(dāng)兩個(gè)設(shè)備靠近時(shí)它們會(huì)協(xié)商角色并建立LLCP鏈路。數(shù)據(jù)交換通過SNEP客戶端/服務(wù)器模型交換NDEF消息。例如一個(gè)設(shè)備可以推送一張圖片的URL給另一個(gè)設(shè)備。連接斷開設(shè)備分離后鏈路自動(dòng)斷開。由于P2P模式的代碼較為冗長(zhǎng)且使用場(chǎng)景相對(duì)于讀卡器和卡模擬較少這里不展開詳細(xì)代碼。但重要的是知道XIAO Sense具備這個(gè)能力。當(dāng)你的項(xiàng)目需要與手機(jī)App進(jìn)行“碰一碰”交互且不希望依賴藍(lán)牙的漫長(zhǎng)掃描配對(duì)過程時(shí)NFC P2P是一個(gè)值得考慮的方案。在NCS的示例目錄中搜索nfc_p2p可以找到相關(guān)參考代碼。5. 高級(jí)應(yīng)用與性能優(yōu)化5.1 低功耗設(shè)計(jì)與場(chǎng)檢測(cè)喚醒對(duì)于電池供電的XIAO Sense項(xiàng)目功耗是生命線。NFC功能可以設(shè)計(jì)成只在需要時(shí)喚醒系統(tǒng)。實(shí)現(xiàn)思路配置NFC喚醒源在進(jìn)入深度睡眠System OFF前配置NFC控制器使其保持在“場(chǎng)檢測(cè)”狀態(tài)。這個(gè)狀態(tài)功耗極低通常幾個(gè)微安。進(jìn)入深度睡眠主CPU進(jìn)入System OFF模式幾乎所有外設(shè)斷電。被喚醒當(dāng)有讀卡器如手機(jī)產(chǎn)生的NFC射頻場(chǎng)靠近時(shí)NFC控制器檢測(cè)到磁場(chǎng)能量會(huì)產(chǎn)生一個(gè)喚醒事件通過GPIO DETECT信號(hào)將主CPU從System OFF模式喚醒。快速響應(yīng)CPU喚醒后立即初始化NFC通信棧并進(jìn)入卡模擬或讀卡器模式完成數(shù)據(jù)交換。再次休眠數(shù)據(jù)交換完成后系統(tǒng)重新配置NFC為場(chǎng)檢測(cè)模式并再次進(jìn)入深度睡眠。這在Zephyr中可以通過配置電源管理PM和NFC驅(qū)動(dòng)來實(shí)現(xiàn)。關(guān)鍵是在設(shè)備樹中正確配置NFC的wakeup-source屬性并在應(yīng)用代碼中處理DEVICE_PM_LOW_POWER_STATE。// 偽代碼示意流程 void enter_nfc_wake_sleep(void) { // 1. 配置NFC為卡模擬模式并載入數(shù)據(jù) setup_nfc_as_tag(my_ndef_data); // 2. 配置NFC控制器使其在System OFF下仍能檢測(cè)場(chǎng)并喚醒MCU nfc_configure_for_wakeup(nfc_dev); // 3. 配置喚醒引腳內(nèi)部已由驅(qū)動(dòng)完成 // 4. 讓CPU進(jìn)入深度睡眠 printk(進(jìn)入深度睡眠等待NFC場(chǎng)喚醒...\n); k_sleep(K_FOREVER); // 實(shí)際應(yīng)調(diào)用pm_state_force進(jìn)入System OFF } // 系統(tǒng)被NFC喚醒后會(huì)從main()或指定的恢復(fù)點(diǎn)重新開始執(zhí)行 void main(void) { if (pm_resume_cause_is_wakeup()) { printk(被NFC場(chǎng)喚醒\n); // 快速處理NFC事務(wù) handle_nfc_transaction(); // 處理完準(zhǔn)備再次睡眠 enter_nfc_wake_sleep(); } else { // 冷啟動(dòng)正常初始化 normal_initialization(); enter_nfc_wake_sleep(); // 最終也進(jìn)入睡眠 } }5.2 多協(xié)議兼容與沖突處理在實(shí)際應(yīng)用中你可能會(huì)遇到各種不同類型的卡片。一個(gè)健壯的讀卡器應(yīng)該能自動(dòng)識(shí)別并處理它們。策略輪詢調(diào)度NFC控制器支持在多種輪詢模式間快速切換。我們可以設(shè)置一個(gè)輪詢調(diào)度表讓控制器依次以不同的協(xié)議去探測(cè)場(chǎng)區(qū)內(nèi)的設(shè)備。// 定義輪詢周期和協(xié)議 static const nfc_poll_period_t poll_period NFC_POLL_PERIOD_1000MS; static const nfc_poll_type_t poll_types[] { NFC_POLL_TYPE_A, // 優(yōu)先探測(cè)NFC-A (ISO14443A) NFC_POLL_TYPE_B, // 其次探測(cè)NFC-B // NFC_POLL_TYPE_F, // 如果需要支持FeliCa }; // 啟動(dòng)通用輪詢 int err nfc_start_general_polling(nfc_dev, poll_types, ARRAY_SIZE(poll_types), poll_period);在回調(diào)函數(shù)中你需要根據(jù)檢測(cè)到的協(xié)議類型event參數(shù)或額外的數(shù)據(jù)來調(diào)用不同的處理函數(shù)。例如檢測(cè)到NFC-A就調(diào)用nfc_t4t相關(guān)的處理檢測(cè)到NFC-B則調(diào)用nfc_t4t的B版本處理如果支持。沖突處理當(dāng)同時(shí)有多張卡片進(jìn)入場(chǎng)區(qū)時(shí)NFC控制器會(huì)檢測(cè)到?jīng)_突。高級(jí)的驅(qū)動(dòng)和協(xié)議棧會(huì)自動(dòng)處理防沖突流程如ISO14443A的Anti-collision最終選擇一張卡片進(jìn)行通信。在應(yīng)用層我們通常只需要知道“成功選擇了某張卡”或“沖突無法解決”的結(jié)果即可。5.3 數(shù)據(jù)安全與加密通信初探對(duì)于需要安全性的應(yīng)用如模擬門禁卡、支付卡簡(jiǎn)單的UID讀取和NDEF讀寫是不夠的。這涉及到更底層的卡片特定命令和加密算法。以MIFARE Classic為例 MIFARE Classic卡使用Crypto-1流密碼。要讀取其扇區(qū)數(shù)據(jù)需要先進(jìn)行三輪認(rèn)證Authentication。這個(gè)過程需要密鑰A或密鑰B默認(rèn)通常是0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF。在NCS中你可能需要使用專門的MIFARE Classic庫如mfcl。基本流程如下發(fā)送REQA/WUPA命令喚醒卡片。執(zhí)行防沖突和選卡獲取卡的UID。針對(duì)目標(biāo)扇區(qū)發(fā)送認(rèn)證命令A(yù)UTH_A或AUTH_B并提供密鑰。認(rèn)證成功后才能發(fā)送讀/寫該扇區(qū)的命令。重要警告MIFARE Classic的Crypto-1算法已被完全破解絕對(duì)不應(yīng)用于任何安全敏感的場(chǎng)景。此處僅作為技術(shù)示例。對(duì)于需要安全的應(yīng)用應(yīng)選擇MIFARE DESFire、NTAG 424 DNA等支持AES等強(qiáng)加密算法的芯片。更安全的實(shí)踐 對(duì)于卡模擬模式如果你要模擬一個(gè)安全卡片需要在XIAO Sense內(nèi)部實(shí)現(xiàn)相應(yīng)的加密算法和密鑰存儲(chǔ)。這通常意味著在MCU的安全存儲(chǔ)區(qū)如果支持或外部安全元件SE中保存密鑰。在NFC通信的回調(diào)中實(shí)時(shí)計(jì)算并返回加密的挑戰(zhàn)應(yīng)答。這實(shí)現(xiàn)復(fù)雜度很高通常需要芯片廠商提供完整的安全框架支持。6. 項(xiàng)目構(gòu)思與擴(kuò)展方向掌握了基礎(chǔ)功能后我們可以結(jié)合XIAO Sense的其他傳感器玩出更多花樣。項(xiàng)目一智能環(huán)境監(jiān)測(cè)NFC標(biāo)簽讓XIAO Sense周期性地用板載傳感器溫濕度、光照、氣壓采集環(huán)境數(shù)據(jù)然后通過NFC卡模擬模式將這些數(shù)據(jù)“存儲(chǔ)”在自身。當(dāng)維護(hù)人員用手機(jī)或?qū)S檬殖衷O(shè)備靠近時(shí)無需通電或配對(duì)直接讀取最新的環(huán)境數(shù)據(jù)。這非常適合部署在難以供電或無需實(shí)時(shí)聯(lián)網(wǎng)的監(jiān)測(cè)點(diǎn)如倉庫、檔案館。實(shí)現(xiàn)要點(diǎn)使用低功耗定時(shí)器每10分鐘喚醒一次采集傳感器數(shù)據(jù)。將數(shù)據(jù)格式化為NDEF記錄可以是自定義格式或標(biāo)準(zhǔn)的文本/URI。更新NFC控制器的模擬數(shù)據(jù)區(qū)。主CPU進(jìn)入深度睡眠等待NFC讀取喚醒。項(xiàng)目二NFC觸發(fā)的智能設(shè)備配置器很多智能家居設(shè)備如燈泡、插座在首次使用時(shí)需要配網(wǎng)。你可以做一個(gè)NFC配置工具。將Wi-Fi的SSID和密碼預(yù)先寫入XIAO Sense。當(dāng)需要配置新設(shè)備時(shí)將XIAO Sense靠近設(shè)備假設(shè)設(shè)備也有NFC讀卡功能設(shè)備就能自動(dòng)讀取網(wǎng)絡(luò)配置并連接。這比用手機(jī)App掃碼或手動(dòng)輸入方便得多。項(xiàng)目三結(jié)合BLE的復(fù)合應(yīng)用XIAO Sense的藍(lán)牙同樣強(qiáng)大??梢栽O(shè)計(jì)一個(gè)“NFC碰一碰快速連接”的應(yīng)用。手機(jī)先通過NFC讀取XIAO Sense模擬標(biāo)簽中的信息里面包含設(shè)備的BLE MAC地址、廣播名稱以及一個(gè)臨時(shí)的配對(duì)碼。手機(jī)App在讀取后自動(dòng)在后臺(tái)啟動(dòng)BLE掃描找到對(duì)應(yīng)設(shè)備并完成快速配對(duì)。這就是很多藍(lán)牙耳機(jī)和音箱采用的“快速配對(duì)”技術(shù)原理。7. 調(diào)試技巧與故障排查手冊(cè)即使按照教程操作在實(shí)際焊接、編程和測(cè)試中也難免會(huì)遇到問題。這里匯總了一些常見坑點(diǎn)和排查思路?,F(xiàn)象可能原因排查步驟與解決方案完全無法檢測(cè)到NFC場(chǎng)1. 硬件天線損壞或虛焊。2. 匹配電容嚴(yán)重失諧。3. NFC控制器未供電或初始化失敗。1.目視檢查查看板載天線線圈有無物理損傷、斷裂。2.軟件確認(rèn)檢查代碼中NFC初始化函數(shù)的返回值確認(rèn)驅(qū)動(dòng)加載成功。3.示波器/頻譜儀如果有條件測(cè)量NFC天線引腳通常標(biāo)有NFC1 NFC2在13.56MHz附近是否有信號(hào)。這是終極手段。檢測(cè)到場(chǎng)但無法讀取卡片1. 卡片類型不支持。2. 輪詢協(xié)議配置錯(cuò)誤。3. 天線性能弱信號(hào)強(qiáng)度不足。4. 卡片與天線距離或角度不對(duì)。1.換卡測(cè)試使用最通用的NTAG213卡片測(cè)試。2.檢查代碼確認(rèn)nfc_start_polling或相關(guān)API調(diào)用時(shí)參數(shù)包含了正確的協(xié)議類型如NFC_POLL_TYPE_A。3.調(diào)整位置確??ㄆ行膶?duì)準(zhǔn)天線線圈中心并平行貼近1cm。4.查看日志NCS的NFC驅(qū)動(dòng)通常有比較詳細(xì)的調(diào)試日志打開CONFIG_NFC_DEBUG_LOG等配置查看具體在哪一步失敗了。讀取UID成功但讀取NDEF數(shù)據(jù)失敗1. 標(biāo)簽為空或格式非NDEF。2. NDEF解析代碼有誤。3. 標(biāo)簽容量不足或已寫保護(hù)。1.用手機(jī)驗(yàn)證先用手機(jī)NFC工具如“NFC Tools”讀取標(biāo)簽確認(rèn)里面有NDEF數(shù)據(jù)且格式正確。2.簡(jiǎn)化代碼先嘗試讀取并打印原始字節(jié)看是否與手機(jī)讀取的一致。再逐步調(diào)試解析邏輯。3.檢查標(biāo)簽確認(rèn)標(biāo)簽是否還有可用空間是否被鎖定了。卡模擬模式手機(jī)無法識(shí)別1. 模擬的數(shù)據(jù)格式不正確。2. 手機(jī)NFC設(shè)置未開啟或功能不全。3. 模擬的標(biāo)簽類型手機(jī)不支持。1.格式驗(yàn)證確保模擬的NDEF消息編碼正確??梢韵葘⑼瑯拥臄?shù)據(jù)寫入一張物理標(biāo)簽用手機(jī)測(cè)試。2.換手機(jī)測(cè)試不同手機(jī)對(duì)NFC標(biāo)簽類型的支持度有差異。用另一部主流安卓手機(jī)測(cè)試。3.簡(jiǎn)化內(nèi)容先模擬一個(gè)最簡(jiǎn)單的文本記錄TNF1, RTDT這是兼容性最好的格式。功耗過高1. NFC控制器未在空閑時(shí)進(jìn)入低功耗模式。2. 輪詢周期設(shè)置太頻繁。1.檢查API確認(rèn)在不活動(dòng)時(shí)是否調(diào)用了nfc_stop_polling讀卡器模式或nfc_t4t_emulation_stop卡模擬模式。2.調(diào)整輪詢將輪詢周期如poll_period加長(zhǎng)例如從100ms改為500ms或1s。編譯錯(cuò)誤未定義的引用1. CMakeLists.txt中未鏈接必要的NFC庫。2. Kconfig配置未開啟對(duì)應(yīng)功能。1.對(duì)照示例仔細(xì)比對(duì)官方示例項(xiàng)目的CMakeLists.txt和prj.conf文件。2.菜單配置在VS Code中使用Guiconfig或編輯prj.conf確保打開了CONFIG_NFCyCONFIG_NFC_T4T_NRFXLIBy等關(guān)鍵配置。調(diào)試NFC耐心和細(xì)致的觀察是關(guān)鍵。從最簡(jiǎn)單的功能讀UID開始每步都驗(yàn)證通過再增加復(fù)雜度。充分利用串口日志在關(guān)鍵函數(shù)調(diào)用前后打印狀態(tài)和返回值。當(dāng)硬件行為異常時(shí)回歸到最基本的官方示例排除自己代碼的問題。XIAO nRF54LM20A Sense的NFC功能已經(jīng)封裝得相當(dāng)友好只要理解了上述流程和注意事項(xiàng)你就能將它靈活地運(yùn)用到各種有趣的項(xiàng)目中去。

相關(guān)新聞

Unity數(shù)據(jù)可視化實(shí)戰(zhàn):ChartAndGraph高級(jí)架構(gòu)、性能優(yōu)化與交互實(shí)現(xiàn)

Unity數(shù)據(jù)可視化實(shí)戰(zhàn):ChartAndGraph高級(jí)架構(gòu)、性能優(yōu)化與交互實(shí)現(xiàn)

1. 項(xiàng)目概述:為什么ChartAndGraph值得深挖?在Unity項(xiàng)目里做數(shù)據(jù)可視化,尤其是需要?jiǎng)討B(tài)、交互式圖表的時(shí)候,很多開發(fā)者第一反應(yīng)可能是去GitHub找開源方案,或者自己用UI組件硬拼。但真正做過商業(yè)項(xiàng)目、需要快速交付穩(wěn)定功…

2026/8/2 4:24:41 閱讀更多
圖像處理畢業(yè)設(shè)計(jì):從OpenCV到深度學(xué)習(xí)的務(wù)實(shí)選題與實(shí)現(xiàn)指南

圖像處理畢業(yè)設(shè)計(jì):從OpenCV到深度學(xué)習(xí)的務(wù)實(shí)選題與實(shí)現(xiàn)指南

1. 從“水論文”到“穩(wěn)畢業(yè)”:圖像處理方向的務(wù)實(shí)選擇邏輯研一剛結(jié)束,很多同學(xué)開始為畢業(yè)論文發(fā)愁,尤其是在圖像處理這個(gè)看似熱門但內(nèi)卷嚴(yán)重的領(lǐng)域。當(dāng)你的目標(biāo)明確是“水論文畢業(yè)”時(shí),這里的“水”并非指學(xué)術(shù)造假或敷衍了事&…

2026/8/2 4:24:41 閱讀更多
單片機(jī)畢業(yè)設(shè)計(jì)-基于 MQTT 的嵌入式自助售貨終端軟硬件設(shè)計(jì) 基于 Android 的智能售貨機(jī)遠(yuǎn)程運(yùn)維 APP 開發(fā)(016401)

單片機(jī)畢業(yè)設(shè)計(jì)-基于 MQTT 的嵌入式自助售貨終端軟硬件設(shè)計(jì) 基于 Android 的智能售貨機(jī)遠(yuǎn)程運(yùn)維 APP 開發(fā)(016401)

博主介紹:??碼農(nóng)一枚 ,專注于大學(xué)生項(xiàng)目實(shí)戰(zhàn)開發(fā)、講解和畢業(yè)🚢文撰寫修改等。全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺(tái)優(yōu)質(zhì)作者、專注于嵌入式單片機(jī),Java、小程序技術(shù)領(lǐng)域和畢業(yè)項(xiàng)目實(shí)戰(zhàn) ??…

2026/8/2 4:24:41 閱讀更多
Spark Streaming核心原理與實(shí)戰(zhàn):從微批次到實(shí)時(shí)計(jì)算架構(gòu)

Spark Streaming核心原理與實(shí)戰(zhàn):從微批次到實(shí)時(shí)計(jì)算架構(gòu)

1. 從批處理到流處理:為什么Spark Streaming是實(shí)時(shí)計(jì)算的“定海神針”如果你用過Spark做批處理,那你一定體驗(yàn)過它處理海量離線數(shù)據(jù)時(shí)那種“力大磚飛”的快感。但數(shù)據(jù)世界不是靜止的,業(yè)務(wù)對(duì)時(shí)效性的要求越來越高,報(bào)表從T1變成小時(shí)級(jí)…

2026/8/2 5:24:58 閱讀更多
555定時(shí)器工作原理深度解析:從內(nèi)部結(jié)構(gòu)到無穩(wěn)態(tài)、單穩(wěn)態(tài)實(shí)戰(zhàn)應(yīng)用

555定時(shí)器工作原理深度解析:從內(nèi)部結(jié)構(gòu)到無穩(wěn)態(tài)、單穩(wěn)態(tài)實(shí)戰(zhàn)應(yīng)用

1. 從“1秒看懂”到“真正會(huì)用”:為什么555定時(shí)器值得你花時(shí)間“1秒看懂555定時(shí)器”——這個(gè)標(biāo)題聽起來很誘人,對(duì)吧?它抓住了我們面對(duì)復(fù)雜技術(shù)時(shí),總想快速掌握核心的普遍心理。但作為一個(gè)在電子設(shè)計(jì)領(lǐng)域摸爬滾打多年的工程師&…

2026/8/2 5:24:58 閱讀更多
從Grove環(huán)形LED入門WS2812B:?jiǎn)尉€驅(qū)動(dòng)原理與ESP32/Arduino實(shí)戰(zhàn)

從Grove環(huán)形LED入門WS2812B:?jiǎn)尉€驅(qū)動(dòng)原理與ESP32/Arduino實(shí)戰(zhàn)

1. 從“點(diǎn)亮”到“玩轉(zhuǎn)”:Grove環(huán)形LED的硬件入門新視角如果你剛開始接觸硬件開發(fā),或者玩過Arduino、樹莓派但總覺得連線麻煩,那“Grove”這個(gè)名字你應(yīng)該不陌生。它是一套標(biāo)準(zhǔn)化的電子模塊接口系統(tǒng),核心思想就是把復(fù)雜的杜邦線連接…

2026/8/2 5:24:58 閱讀更多
ABB機(jī)器人備份實(shí)戰(zhàn)指南:從系統(tǒng)鏡像到程序模塊的完整策略

ABB機(jī)器人備份實(shí)戰(zhàn)指南:從系統(tǒng)鏡像到程序模塊的完整策略

1. 項(xiàng)目概述:為什么備份是機(jī)器人的“生命線”干了這么多年自動(dòng)化集成,經(jīng)手的ABB機(jī)器人少說也有上百臺(tái)了。從最早的IRC5到現(xiàn)在的OmniCore,系統(tǒng)換了好幾代,項(xiàng)目現(xiàn)場(chǎng)也跑遍了天南海北。但無論技術(shù)怎么變,有一個(gè)話題永遠(yuǎn)是…

2026/8/2 5:24:58 閱讀更多
基于Wio Terminal的無線空中鼠標(biāo):IMU傳感器融合與藍(lán)牙HID實(shí)戰(zhàn)

基于Wio Terminal的無線空中鼠標(biāo):IMU傳感器融合與藍(lán)牙HID實(shí)戰(zhàn)

1. 項(xiàng)目緣起:當(dāng)開發(fā)板不再滿足于“開發(fā)”作為一名嵌入式開發(fā)者和硬件愛好者,我手頭總有幾個(gè)“吃灰”的開發(fā)板。Wio Terminal 就是其中之一,它集成了屏幕、按鍵、傳感器和無線模塊,功能強(qiáng)大,但完成幾個(gè)示例項(xiàng)目后&#…

2026/8/2 5:24:58 閱讀更多
HCL模擬器設(shè)備啟動(dòng)失敗全解析:從錯(cuò)誤代碼40到Hyper-V沖突的終極解決方案

HCL模擬器設(shè)備啟動(dòng)失敗全解析:從錯(cuò)誤代碼40到Hyper-V沖突的終極解決方案

1. 項(xiàng)目概述:當(dāng)HCL模擬器“罷工”時(shí)搞網(wǎng)絡(luò)實(shí)驗(yàn)的朋友,對(duì)HCL(H3C Cloud Lab)這款華三官方的網(wǎng)絡(luò)設(shè)備模擬器肯定不陌生。它讓我們能在個(gè)人電腦上輕松搭建出包含路由器、交換機(jī)、防火墻的復(fù)雜網(wǎng)絡(luò)拓?fù)?amp;#xff0c;是學(xué)習(xí)和備考認(rèn)證的…

2026/8/2 5:14:57 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來沒有這么容易過! 支持本地語音模型chatTTS,fasterwhisper,…

2026/8/2 0:04:00 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來沒有這么容易過! 支持本地語音模型chatTTS,fasterwhisper,…

2026/8/2 0:04:00 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/2 2:52:49 閱讀更多