刚拿到FM17580的数据手册时我对着寄存器列表愣了半天。一百多个寄存器每个寄存器又是各种位域读卡到底该先配谁、后配谁完全是一笔糊涂账。后来调通第一张M1卡再回头看才明白一件事寄存器不是一串需要背下来的开关而是芯片把复杂的射频收发过程封装成的一张“操作面板”。你配置寄存器实际上就是在配置整条通信链路——发什么帧、什么时候发、等多久、收到什么算成功、出错怎么上报。这篇文章我不打算贴一遍芯片手册而是想从一个实际跑通的角度把FM17580的寄存器配置和ISO14443A射频卡通信的本质串起来。适合正在调调制解调器、卡在读卡器固件迷宫里的人也适合刚接触NFC又想搞懂底层原理的硬件工程师。1. 先把概念捋清楚NFC、RFID和ISO14443A到底在讲什么1.1 RFID和NFC是包含关系不是替换关系很多人把RFID和NFC混着用其实它们不是同一层概念。RFID是射频识别技术的总称低频、高频、超高频都算比如停车场钥匙扣、仓库标签、动物耳标都是RFID。NFC则是工作在13.56MHz频段的一套近距离通信标准指向性很强既兼容一部分高频RFID卡又增加了双向通信和手机支付等应用。维度RFIDNFC定义射频识别的统称13.56MHz近距离通信技术栈频率范围125kHz、13.56MHz、915MHz等固定13.56MHz典型载体EM4100、M1卡、UHF标签等M1卡、NTAG、手机NFC通信模式多为读写器主动发起读写器、卡端可主动发起关系大类RFID在13.56MHz高频段的一个子集我调FM17580时用的M1卡就是一种工作在13.56MHz的高频RFID卡同时也是NFC标准下的经典卡片。所以你会发现很多NFC读卡器芯片本质上就是一个高频RFID读写前端FM17580就是这一类芯片。1.2 ISO14443A的“问与答”模型NFC在13.56MHz高频段最常用的一套底层协议是ISO14443A。卡片不是一贴到天线就自动把UID吐出来的而是读写器一句、卡片一句像对暗号一样一步步来。第一步读写器发送一个7bit的短帧REQA0x26询问“附近有没有卡”。卡片收到后回ATQA告诉读写器“我在我是什么类型的卡”。第二步读写器发送防碰撞命令让多张卡逐个报出自己的UID。第三步读写器选中其中一张卡卡片回SAK确认这时卡片才进入“激活”状态。第四步如果需要读数据还要经过MIFARE认证认证通过后才能发读写命令。FM17580这类芯片做的事情就是把上面这些步骤里的模拟调制解调、编码解码、CRC校验全部用硬件完成而MCU只需要通过寄存器告诉芯片“发送什么数据、以什么格式发、发完怎么处理”。所以理解寄存器就是理解这套“问与答”模型的最终落地点。2. FM17580为什么能当“翻译官”寄存器就是芯片的操作面板2.1 一颗13.56MHz芯片内部发生了什么FM17580是复旦微电子的13.56MHz读写卡芯片很多模块指令和NXP的RC522兼容这也是它容易上手的原因之一。芯片内部集成了射频振荡器、发送功放、接收解调、编码解码、CRC协处理器、FIFO缓冲、定时器和中断系统。MCU通过SPI接口访问寄存器实际上是在跟芯片内部这些硬件模块对话。你写一个字节到FIFODataReg数据不会直接跑到天线上去而是要经过编码、加CRC、加起始位和停止位、按设定的调制方式送到天线。反过来天线收到的卡片调制信号会被芯片解调、解码、校验最后把有效数据放进FIFO再置一个中断标志。这就是为什么“寄存器配置”看着繁琐却是最接近物理层本质的操作方式。你不需要自己干涉13.56MHz载波怎么产生但你必须告诉芯片你的协议是哪一种帧格式怎么对齐超时多久算失败。2.2 必须认识的12个寄存器在FM17580/RC522兼容平台上我第一次调通只用了大约12个寄存器并没有把手册里的每个寄存器都翻一遍。这些寄存器构成了读卡器的基本骨架。寄存器常见地址主要作用CommandReg0x01芯片命令状态机软复位、发射、接收、认证都靠它ComIEnReg0x02中断使能ComIrqReg0x04中断标志收发完成、超时都在这看ErrorReg0x06错误状态CRC、奇偶校验、碰撞等FIFODataReg0x09数据缓冲读写的核心入口FIFOLevelReg0x0AFIFO当前字节数也控制FIFO清空BitFramingReg0x0D控制收发帧的位长度和起始位ModeReg0x11设置协议模式、CRC预设值TxControlReg0x14天线驱动控制打开/关闭RF场RFCfgReg0x26接收器增益等模拟配置TModeReg/TPrescalerReg/TReloadReg0x2A~0x2D定时器控制收发超时VersionReg0x37芯片版本用于自检这几类寄存器覆盖了通信链路的关键点协议模式、数据缓冲、物理层位定时、射频收发控制、超时和错误处理。后面所有初始化配置都是绕着这几个模块转。3. 配置前先搞定通信链路SPI接口和寄存器读写原语3.1 最小硬件连接FM17580可以走SPI、I2C、UART我用的最多的是SPI接线最少而且速度快。MCU这边需要四根线SCK、MOSI、MISO、NSS再加一根RST复位脚和一根IRQ中断脚。建议把IRQ也接到MCU的GPIO上虽然轮询也能跑但有IRQ的话收发完成可以靠中断触发省得一直占着CPU。SPI速率我习惯压到1Mbps左右不是芯片不支持更快而是天线和电源布局不好的时候高速SPI容易引入干扰稳定比速度重要。还有FM17580是3.3V逻辑如果MCU是5V电平转换不能省。3.2 读写寄存器先懂地址编码FM17580的SPI寄存器访问不是简单发送一个寄存器地址然后读写数据。在兼容RC522的平台上一个SPI事务由地址字节和数据字节组成地址字节的bit0决定方向0表示写1表示读。因为寄存器只有低7位有效所以在代码里要把寄存器地址左移一位再按方向加上读标志。#define FM17580_CS_PIN 10 uint8_t FM17580_ReadRegister(uint8_t addr) { uint8_t value 0; uint8_t spiAddr ((addr 1) 0x7E) | 0x80; /* 寄存器地址左移1位bit0置1表示读 */ digitalWrite(FM17580_CS_PIN, LOW); SPI.transfer(spiAddr); value SPI.transfer(0x00); digitalWrite(FM17580_CS_PIN, HIGH); return value; } void FM17580_WriteRegister(uint8_t addr, uint8_t val) { uint8_t spiAddr (addr 1) 0x7E; /* bit0为0表示写 */ digitalWrite(FM17580_CS_PIN, LOW); SPI.transfer(spiAddr); SPI.transfer(val); digitalWrite(FM17580_CS_PIN, HIGH); }这里有个容易犯错的点千万别觉得SPI地址就是寄存器地址。我第一次直接写SPI.transfer(0x09)去读FIFODataReg读出来的数据完全是乱的。左移一位后0x09变成0x12再补上读标志才是正确的0x92。很多现成库都封装好了这一步但如果你在移植新平台一定要先把这两个原语写对后面所有寄存器操作都建立在它们之上。3.3 软复位一切配置的起点芯片上电后并不会自动进入一个干净状态我习惯先做一次软复位。FM17580里软复位就是往CommandReg写0x0F这个命令会把芯片内部状态机、FIFO、定时器都复位到初始状态但SPI接口本身不受影响。写完软复位后要等一下通常是几个毫秒量级然后读VersionReg看看芯片是否回应正常。如果VersionReg读出来的值要么是0xFF要么是0x00问题多半在SPI电平、接线或芯片供电上而不是寄存器配错。这一步是在所有调试里最先做的“自检动作”。4. 初始化配置实战逐个旋钮拧到位4.1 一套能用的初始化序列参考FM17580与RC522兼容平台上的常见配置我整理了一套经过验证的初始化序列。一句话说清楚先把时钟定时器和协议模式定好再把收发和天线打开。void FM17580_Init(void) { /* 1. 软复位 */ FM17580_WriteRegister(0x01, 0x0F); /* CommandReg SoftReset */ delay(2); /* 2. 先关天线避免在配置过程中辐射不稳定场 */ FM17580_WriteRegister(0x14, 0x00); /* TxControlReg */ /* 3. 配置定时器TModeReg、TPrescalerReg、TReloadReg */ FM17580_WriteRegister(0x2A, 0x8D); /* TModeReg */ FM17580_WriteRegister(0x2B, 0x3E); /* TPrescalerReg */ FM17580_WriteRegister(0x2C, 0x0F); /* TReloadRegH */ FM17580_WriteRegister(0x2D, 0x21); /* TReloadRegL */ /* 4. 发送与接收模式 */ FM17580_WriteRegister(0x15, 0x40); /* TxASKReg100%ASK调制 */ FM17580_WriteRegister(0x11, 0x3D); /* ModeRegMIFARE/ISO14443A模式 */ FM17580_WriteRegister(0x12, 0x00); /* TxModeReg */ FM17580_WriteRegister(0x13, 0x00); /* RxModeReg */ /* 5. 接收器配置 */ FM17580_WriteRegister(0x26, 0x70); /* RFCfgReg */ /* 6. 打开发射天线bit0、bit1置1使能两个发射通道 */ FM17580_WriteRegister(0x14, 0x03); /* TxControlReg */ }注意这套序列里的寄存器地址和值在不同的板子和不同版本的芯片上可能会有细节差异。尤其TxControlReg有的参考代码写0x0A有的是0x03原因在于板级天线结构不同。我的做法是先用厂商推荐值跑通再根据距离和波形微调而不是背死一组值。4.2 关键寄存器配置的“为什么”软复位好理解关键是那几个定时器寄存器和模式寄存器为什么要这么设。TModeReg的最主要功能是开启定时器并决定定时器是否在发送或接收时自动工作。TPrescalerReg是预分频系数TReloadReg是16位重装载值。芯片内部有一个倒数计数器从TReload开始往下数数到0就触发超时中断。定时器时钟通常由13.56MHz晶振分频得到我做过一个粗略估算TPrescaler取0x3E62时定时器时钟大约在100kHz量级TReload取0x0F21十进制3873时超时窗口大约在30到40毫秒。这样设置给卡片响应留足了余量同时也不会让一次无应答等待太久。ModeReg的0x3D和TxASKReg的0x40是在告诉芯片“用ISO14443A协议、按MIFARE Classic的CRC和帧格式处理”。M1卡的老底子是MIFARE Classic它要求读卡器用100%ASK调制发送数据所以TxASKReg要配合设置。这里面的关键不在数值本身而在于你必须知道每一组配置影响的是协议栈的哪一层。不知道就照抄能跑但会跑得不明不白。RFCfgReg是接收器前端增益。0x70是一个比较平衡的默认值增益太高容易把噪声一起放大太低又会缩短读卡距离。我在实践里会把读卡距离作为调整这个寄存器的参考指标距离不稳定时优先降增益距离太近时再微调上行。4.3 寄存器配置不只是FM17580HMC833也是一样的思路有一次我从FM17580切到HMC833去调频率合成器刚翻开手册又有点懵因为寄存器名字完全不一样。后来静下心一看思路其实是共通的先找芯片内部的数据流哪些寄存器管输入信号哪些管控制字哪些管状态反馈哪些管锁定指示。FM17580有CommandReg、FIFODataReg、ComIrqRegHMC833也有对应的控制、数据和状态寄存器只是封装方式不同。所以寄存器配置这个技能真正的门槛不是背表而是建立“芯片内部数据流地图”的能力。你拿到任何一款新芯片先分清楚时钟域、数据通路、控制通路和状态反馈配置起来就有章法了。5. 透过寄存器看懂一次卡通信的完整收发5.1 CommandReg芯片的命令状态机FM17580内部是一个多状态状态机。CommandReg就是触发状态切换的命令口比如Idle、Transmit、Receive、Transceive、MFAuthent、SoftReset。日常读卡用到最多的就是Transceive它会让芯片把FIFO里的数据按设定好的帧格式发送出去同时自动打开接收等卡片回应。一条读卡命令的完整过程是先把要发送的内容写入FIFO设置BitFramingReg确定位长度然后写CommandReg进入Transceive最后等ComIrqReg里的标志位。在写CommandReg之前FIFO、定时器、位长都要就位否则芯片会按上一次的残留状态乱来。这也是很多新人的调试痛点明明发了REQA芯片却把上一次的数据又发了一遍。5.2 BitFramingReg和FIFO物理层拼图的起点我刚开始不明白为什么寻卡时要把一个字节写进FIFO还要额外配BitFramingReg。其实REQA是一个7bit短帧不是完整的8bit。如果只写一个字节0x26芯片不知道你要发7bit还是8bit所以要用BitFramingReg告诉它发送位长度。FIFO则是芯片和MCU之间的数据仓库。发送时MCU把字节一个个写进FIFODataReg接收时卡片响应的数据会按顺序排列在FIFO里。你可以通过FIFOLevelReg读到FIFO中当前有多少字节从而判断卡片的响应长度。注意FIFO是字节缓冲区并不是只存有效数据卡片回过来的CRC也算在里面读取后要根据协议长度截断。5.3 从寻卡到读块寄存器视角下的完整流程以读M1卡第0块为例寄存器视角下完整流程是这样寻卡阶段把0x26写入FIFOBitFramingReg设为0x07CommandReg设为Transceive并利用BitFramingReg的StartSend位触发发送。IRQ置位后读FIFO得到两字节的ATQA。防碰撞阶段发送防碰撞命令MCU读取UID和BCC如果同时有多张卡CollReg会给出碰撞位置然后程序要根据碰撞位继续发部分位直到唯一确定一张卡。选卡阶段发送SELECT命令和完整UID卡片回SAK读卡器确认选中。认证阶段通过MFAuthent命令把块号、密钥类型和UID交给芯片芯片自动完成MIFARE认证。读写阶段发送READ命令0x30加块号然后从FIFO读回16字节数据加CRC。这段流程看起来很长但放到寄存器层面核心操作只有三个动作写FIFO、配BitFramingReg、写CommandReg然后等IRQ。每次收发的差异只在FIFO里的命令字节和超时参数不同。6. 真机调试记录读一张M1卡踩过的坑6.1 现象一能寻卡但认证失败我最早调M1卡时寻卡、防碰撞、选卡全过了但就是认证失败。检查了半天才发现认证命令里携带的UID字节序和代码里存取顺序不一致。FM17580的MFAuthent命令要求UID按防碰撞阶段读出的原始顺序组织不能从高到低翻转。这是典型的协议细节坑代码逻辑没错但数据格式不对。另外认证失败还有一个常见原因密钥写错。M1卡默认的Key A是全FF如果是别人改过密钥的卡必须用对应密钥。先用PC端NFC工具确认卡片原密钥能省掉不少排查时间。6.2 现象二接收中断一直不置位如果发送命令后ComIrqReg迟迟没有反映先不要怀疑芯片坏了。我遇到过几次都是天线没有真正打开或者TxControlReg被后续配置覆盖了。FM17580的天线驱动不是一上电就自动开启的初始化顺序里先关天线再配参数最后忘了打开就会导致只发不收。另一个容易忽略的原因是定时器配置太短。如果TReload设得很小芯片在卡片还没回复时就已经超时ComIrqReg里只会出现超时标志不会出现正常接收标志。调试时可以把超时时间先放宽到50毫秒左右等通信跑通了再收紧。6.3 现象三读卡距离只有1厘米读卡距离太近最容易想到的是发射功率或接收增益不够。但很多时候问题出在天线匹配上。FM17580的匹配电容和电感必须和天线线圈参数一起调如果只是随手用了参考设计里的电容值谐振点偏了场强距离自然上不来。我自己的排查顺序是先用示波器看天线端的射频波形确认有稳定的13.56MHz载波再看接收路径上解调后的信号幅度最后用NFC调试工具测试同一张卡片在“标准读卡器”下的表现。如果标准读卡器读得很远现场读卡器很近问题大概率在自己板子的天线匹配上。6.4 电脑版NFC工具和iOS NFC的正确用法调试M卡时我会先在电脑上抓一张卡的真实数据比如UID、SAK、扇区密钥是否能读。NFC Reader Tool这类工具电脑版比手机版灵活适合配合读卡器做卡片分析。它不算调试固件的替代品但可以帮你确认卡片本身的状态区分是卡的问题还是读卡器的问题。手机上iOS从CoreNFC开始也支持NFC标签读取但底层寄存器级别的调试明显不如PC工具直观。iOS的优势在于可以直接读取NDEF内容和部分MIFARE标签信息适合现场快速验证应用层不适合做物理层参数排查。做嵌入式开发还是老老实实用逻辑分析仪抓SPI和中断引脚比在手机上猜寄存器值更靠谱。7. 从寄存器到安全中继攻击到底“中继”了什么7.1 为什么中继攻击能绕过“刷卡距离”NFC中继攻击这几年经常被提起它不像很多人想的那样去破解密码而是在物理层打了一个时间差。FM17580这类读卡器芯片是完整实现了ISO14443A协议的它认的是“一串符合协议的数据”而不是“雷达回波的精确飞行时间”。中继攻击的基本思路是在真实读卡器附近放一个转发设备在远端放另一个设备去贴近真实卡片。本地读卡器发出的射频请求被转发设备解调成比特流再通过网络传到远程设备远程设备把比特流重新调制后发给远处的卡片卡片响应也按同样路径传回来。本质上就是把中间那段“空气”延长了读卡器看到的仍然是一张完整应答的卡所以认证会通过。我做安全方案时最关心的不是攻击者怎么实现这个链路而是你的产品不能把“能不能通信”当作“是否授权”的唯一依据。中继攻击能成立恰恰说明标准NFC通信本身不包含可靠的物理距离证明。7.2 产品设计里的防中继思路从产品设计角度防范中继攻击不能靠卡死FM17580的某个寄存器安全边界要放在协议层和应用层。第一敏感操作不能只依赖NFC碰一碰要增加用户主动确认比如手机端动态确认码。第二如果门禁系统要求高安全可以采用支持距离边界协议的安全芯片测量响应时间或引入挑战应答让中继带来的额外时延暴露出来。第三卡片端要尽可能使用支持双向认证和动态密钥的CPU卡而不是只读出UID就放行。UID本身极易被模拟这在防复制和防中继里都不够用。理解中继攻击的目的不是教人怎么攻击而是让做产品的人知道一块NFC芯片帮你完成了协议但完成协议的代价是它默认信任信道里的每个比特。安全要自己去加。7.3 寄存器级别的认识才是硬功夫搞清楚了FM17580的寄存器和收发流程再回头看中继攻击你会明白攻击发生的环节在物理层的“场”和“信号调制”而不是有了某个神级寄存器就能彻底防住。反过来说你也更容易理解产品安全方案为什么要放在上位机和后端平台。我在实际项目里的体会是NFC调通只是第一步真正拉开差距的是对通信本质的理解。寄存器配置不是背地址而是建立芯片、协议和现实场景之间的映射关系。你把这一层想透了换任何一款新芯片甚至从FM17580换到HMC833这样的频率综合器也能很快上手。这就是底层功底的用途。
企业数字化 ERP 产品动态
相关推荐
EMI辐射发射超标整改实录:从频谱定位到PCB布局优化 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:02:31
TY1613机顶盒TTL刷机实战:绕过锁Bootloader重获控制权 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:02:31
FPGA入门必读:5本书与Vivado工具链实战学习路径 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:02:31
识光CIOE亮相:SPAD-SoC三大产品线如何勾勒单光子感知的量产路径 在刚刚落幕的中国国际光电博览会(CIOE)上,苏州识光芯科技术有限公司(识光,Sophoton)携多款SPAD-SoC新品亮相。从单点、线阵到面阵,三条产品线并非孤立展示,而是呈现出一种清晰的技术逻辑:以全芯片化架构为底座,用不同形态的芯片去接住高度分化的产业需求。
统一技术… · 2026/9/27 2:34:03
3步搞定app开发人员网站被黑挂马怎么选安全方案 3步搞定app开发人员网站被黑挂马怎么选安全方案 半夜三点,手机突然弹出短信:“您的网站www.yourapp.com存在恶意代码”。你慌了神,点开后台,发现首页被替换成了博彩广告,SEO收录瞬间归零。这种 网站被黑挂马不知道怎么办… · 2026/9/27 2:34:03
国企干部民主评议场景,衡识人才测评等360评估系统适配 引文/摘要又到年终干部考核季。不少国企组织人事部门都在面对同一道题:民主评议怎么搞,才能既合规又高效,还能真正沉淀出有用的数据?传统纸票模式下,评议结果常常“评完就归档”,难以支撑干部选拔与梯队建设… · 2026/9/27 2:33:57
立创EDA安装全攻略:专业版与标准版选型及避坑指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 2:33:57
Vue 全局事件总线详解 一、什么是事件总线
1.1 定义
事件总线(Event Bus)本质上就是一个居中转发消息的"邮局":发送方不直接找接收方,而是把消息丢给总线,总线再帮转给所有订阅了这个消息的人。
在 Vue 里,它用来解决任意两个组件之间通信的问题,不限于父子,不限于兄弟,只要挂在同一条总线… · 2026/9/27 2:33:57
PADS Logic到OrCAD转换全流程:工具迁移、网表关联与高频问题排查 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 2:33:51
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01