当前位置: 首页 > article >正文

STM32单片机学习(27) —— SPI相关概念

文章目录概述SPI通信的核心特性I2C和SPI的简单对比SPI学习的补充说明SPI硬件电路设计SPI的四条通信线SPI通信的片选线低电平选中不支持广播通信SPI通信的时序结构重点SPI通信的比特序通信空闲状态SPI时钟极性采样时机SPI时钟相位SPI四种时钟模式重点Mode0模式0Mode1模式1Mode2模式2Mode3模式3总结与补充概述我们已经学习过两种STM32通信接口了它们就是I2C总线通信以及USART串口通信。接下来我们再来学习一种全新的通信方式——SPI通信。首先我们要先建立一种正确的认知——SPI 并不是比 串口 / I2C 更高级的通信方式只是设计的思路不同解决的问题不同罢了。在《SPI相关概念》这一文中我们所讲的内容既和单片机的SPI外设没有关系也和与单片机进行SPI通信的从机设备没有关系。本文仅仅涉及与SPI通信本身、通信协议本身相关的一些设定和概念。SPI通信的核心特性SPI是什么呢SPISerial Peripheral Interface串行外设接口是Motorola摩托罗拉公司于1980年代中期提出的同步、全双工、主从模式的串行通信协议。SPI具有以下核心特性**串行通信。**数据仍然是1个bit位1个bit位的串行发送和接收的。**同步通信。**通信双方通过共享的时钟信号实现时序同步而不是依赖波特率。严格的主从模式通信。SPI 采用固定主从结构一主多从仅允许主机发起通信。SPI没有I2C通信那一套“主机切换”的复杂设计SPI通信就是一台固定主机和多台从机通信。在本课程中我们就固定STM32单片机为主机不需要考虑主机的切换**全双工通信。**主机和从机可以同时收发数据。**总线式物理接线。**多设备都将自身挂载在总线上但SPI通信在总线外还需要依赖其它信号线。**在总线外基于独立的“片选线”机制来确定通信的从机。**从机设备越多片选线就越多。**无寻址、无应答机制。**说人话就是SPI通信不管对方是谁不管收到没有只依照时钟信号驱动进行通信。同一时刻只有一台从机与主机通信且不支持广播模式。引脚资源占用多但通信速率相比较于其它通信协议提升显著。SPI通信相比较于串口、I2C等通信协议通信速率快是其最显著的特点与优势当然SPI的这种优势是用“高资源占用”为代价换取的。**SPI比I2C功能更少但灵活性显著高于I2C很多地方都不像I2C一样是完全规定死的。**主要体现在两方面时序结构可灵活配置拥有多样化的时序结构以适配不同的从机设备。数据帧格式也非常灵活需要从设备根据自身情况定义不同的从设备通信的数据帧格式会大不相同。数据传输是以时钟信号为驱动的双向移位过程每一个时钟周期内主机和从机都会同时发送 1 bit、接收 1 bit。标准SPI通信是真正意义上的必须同时发和同时收没有单纯的发送和接收过程。当然在发送数据时自身接收到的数据可能无意义但必须接收。同样的在接收数据时自身发送的数据也可能无意义但必须发送。SPI 通信本质上是在时钟信号驱动下主从双方移位寄存器进行同步移位操作从而完成串行数据的交换。SPI通信的过程是数据交换的过程总的来讲SPI通信把所有的资源都用来提高通信速度了所以摒弃了很多冗余的信息所以在学习它时始终牢记每一个因素都是为了提升它的速度这样去理解上述这11条基本囊括了SPI通信的绝大部分特性有些特性我们已经学过搞明白了但有些则还比较陌生。下面我们就逐一来介绍这些特性。SPI通信专为短距离高速通信设计是一种用于微控制器与外设芯片如Flash存储器、传感器、显示屏等之间进行数据传输的通信方式。从使用场景来说它和I2C通信非常类似但它们各有各的优缺点有些外设使用I2C通信更好有些外设则使用SPI通信更好。I2C和SPI的简单对比我们刚刚学完I2C通信现在要学习SPI通信恰好两种通信方式有很多类似的地方将它们做一个简单对比有利于我们学习SPI通信。对于I2C通信而言无论硬件电路、软件协议还是通信时序控制它们的设计都是比较复杂的。I2C通过这些复杂的、精心的设计利用最少的硬件资源实现了最多的软件功能可以说“I2C通信是一个非常具有性价比的通信方式资源占用少但功能却非常完善”。但I2C通信也并非没有缺点。I2C最大的缺点源自于其硬件电路的开漏接法使得其**“低电平 - 高电平”**的过程会比较缓慢进而拖累了整体的通信速率。大多数情况下的I2C通信也就能够支持400kHz的时钟线频率这个通信速率还是比较慢的。总之“I2C通信通过精打细算的精心设计用最少的硬件资源实现了最多的软件功能但缺点是通信速率较慢。”那么SPI通信呢?如果确实需要用一句话来概括SPI通信那么我会说“SPI通信通过简单粗暴的设计用更多的硬件资源甚至是资源浪费实现了速率更高、更简单也更直接的通信。”SPI学习的补充说明后关于SPI的学习需要补充说明的是本文中讲解的SPI通信指的是标准的、传统意义上的SPI通信不考虑各种SPI的变种、扩展或魔改版本。比如上文提到的SPI通信的一主多从模式、采用单一固定主机标准SPI就是这么设计的但如果考虑SPI的各种变种扩展版本则会有所不同。实际的应用中也大多使用标准SPI通信协议所以我们专心学习标准SPI通信即可。在本章节中我们来学习一些SPI相关的最基本概念。SPI硬件电路设计SPI和I2C通信同样都是总线通信协议而且SPI采用固定一主机、多从机的通信方式。在下文中我们统一把STM32单片机作为这个固定主机。SPI通信的总线电路设计如下图所示显然SPI的总线设计要比I2C复杂一些使用的引脚也会更多下面来详细介绍一下这几条通信线。SPI的四条通信线在标准SPI通信中一般都需要至少四条通信线**有些简化的SPI通信可能使用更少的通信线**如下表格所示通信线简称全称功能SLK/SCK/SCLSerial Clock主机输出时钟信号从机接收。用于同步数据传输MOSI/DIMaster Out Slave In数据线用于主机发送数据从机接收数据MISO/DOMaster In Slave Out数据线用于从机发送数据主机接收数据SS/CS/NSSSlave Select/Chip Select片选线用于主机确认和哪一台从机通信SPI的三条通信总线SLK线时钟信号线SPI和时钟信号线和I2C的时钟信号线作用完全一致。它的简写丝印由于硬件生产厂商不同有很多的简写。如SLK/SCK/SCL等。SPI通信中由STM32单片机生成同步时钟信号从机接收此信号。单片机通过生成并发送时钟信号从而控制数据传输的时序和速率。MOSI线数据线用于主机发送数据从机接收数据。很多外设的生产厂商出于简化考虑会直接使用丝印**“DI”**即Data Input表示此引脚为数据输入口。和串口、I2C通信一样主机发送数据仍然遵循TTL电平原则。即高电平表示发送数据1低电平表示发送数据0。MISO线数据线用于从机发送数据主机接收数据。很多外设的生产厂商出于简化考虑会直接使用丝印**“DO”**即Data Output表示此引脚为数据输出口。和串口、I2C通信一样从机发送数据仍然遵循TTL电平原则。即高电平表示发送数据1低电平表示发送数据0。我们已经学过I2C和串口通信了通信是否支持全双工或半双工本质上由通信的电路结构决定。SPI 使用两条独立的单向数据总线MOSI 和 MISO分别负责主机发送和接收以及从机接收和发送。所以SPI 支持主从设备在同一时刻、同时进行数据发送与接收属于全双工通信协议。串口通信同样采用发送线TX和接收线RX分离的结构因此也具备全双工通信能力。而 I²C 通信中通信双方共用一条双向数据线SDA同一时刻只能由一端进行数据发送因此 I²C 属于半双工通信协议。另外对于STM32单片机主机而言接入MOSI总线的对应引脚需要输出高低电平u送一此引脚需要设置为推挽输出模式。SPI通信主要采用硬件SPI实现需要使用固定的SPI外设基于固定的SPI通信引脚。如果采用硬件SPI实现那么MOSI引脚显然需要设置为复用推挽输出模式接入的MISO总线对应的引脚需要设置为浮空输入模式(如果采用硬件SPI也是使用固定引脚)如果采用硬件SPI那么单片机的SCK引脚也是固定引脚需要设置为复用推挽输出模式SPI不是典型的总线式涉及因为除了三条总线外它还有额外的信号线SPI通信的片选线SPI通信的片选线比较特殊下面单独讲解一下它。SS/CS线称之为片选线Chip SelectCS或者从机选择线Slave SelectSS所谓片选即选择芯片的意思SPI通信本质上还是芯片之间的通信选择从机就是选择某个芯片所以称之为片选。SS和CS都是常见的称呼在SPI通信中它们意思相同。每个从机都有一条独立的片选线和主机相连接由主机的引脚输出高低电平来决定是否与此从机通信。所以STM32单片机在作为主机时需要选择任一GPIO引脚来连接从机的片选引脚。通过片选线主机引脚输出高低电平决定与某台从机通信。那么到底是输出低电平表示与从机通信还是高电平呢低电平选中标准SPI通信规定CS线为低电平有效主机通过拉低某条CS线的电平表示与此从设备进行通信。但SPI并未定死此规定某些特殊的硬件也可以自行设定为高电平有效。但这不属于标准SPI的设计如果遇到这样的设备需要查阅其硬件手册了解相关信息。总之我们可以默认CS线低电平表示与此从机通信常见的硬件都是这么设定的只有极少数特殊硬件需要查阅手册、区别对待。在很多文档/原理图中SPI的片选线都会直接标记为NSS。其中的N表示低电平有效Negative/Negated这也进一步说明SPI通信中的片选普遍都是低电平选中的模式。不支持广播通信SPI 是否支持与多台从机进行同时的通信呢在 I2C 通信中协议标准中定义了一个特殊的广播地址0x00主机通过它可以向所有从机广播数据。具体来说是从机们只需要按照时序读取SDA数据线上的高低电平就可以同时接收主机发送的数据了。在广播模式下主机并不关心从机的应答从机也不需要应答。同时I2C还规定任何通信都由主机主动发起。所以I2C通信不存在多台从机同时发送数据给主机的情况。那么SPI通信时也和这类似吗答案是NoSPI不支持广播通信。SPI选择从机通信的方式和I2C完全不同SPI是通过硬件片选线实现的从机选择。对于SPI通信来说同一时刻仅会拉低某台从机的片选线从而使得该从机处于激活状态。SPI通信在同一时刻只能和某一台从机通信SPI不支持广播通信形式不支持同时和多台从机通信。总之在我们的学习中选择硬件SPI通信实现基于固定的单片机SPI外设和固定的引脚这里需要注意我们之前在初始化GPIO引脚时速度经常使用2MHz就足够了这里的速度代表的是引脚输出电平的反转速率。而SPI的通信速度是比较快的所以我们需要用更高的速度来适配SPI所以如果引脚设置为输出模式应该设置为50MHz来适配SPI的高速通信SPI通信的时序结构重点在前面的总结中我们提到过**SPI在时序结构上表现为灵活多变可配置。**我们就来看一看SPI的通信时序是如何的灵活多变可配置。SPI通信的比特序到目前为止我们学习过的通信方式全部都是串行通信。既然是串行通信那么在通信过程中bit 位的发送顺序也就是比特序就是一个必须首先关注的重要问题。在这里我们不妨再复习总结一下——比特序比特序用于在串行通信中描述一个数据单元内部bit位逐位发送的顺序。比特序有两种最常见的形式LSB First即Least Significant Bit First最低有效位优先。此时数据会从一个数据单元内部的最低有效位发送到最高有效位结束。MSB First即Most Significant Bit First最高有效位优先。此时数据会从一个数据单元内部的最高有效位发送到最低有效位结束。具体来说I2C和串口通信它们的比特序是固定的I2C通信的比特序是MSB First固定从数据的最高有效位发送到最低有效位。串口通信的比特序是LSB First固定从数据的最低有效位发送到最高有效位。那么SPI通信的比特序呢在回答这个问题之前我们先回到一句之前提到过的话SPI 的一个显著特点是时序灵活多变、可配置。既然是灵活多变可配置的时序那么比特序显然也是可配置的既然比特序有两种选择那么SPI的比特序那就交给程序员自己选择自己配置吧。所以SPI通信的比特序是由程序员自己配置的可以选择LSB First也可以选择MSB First。实际工程中SPI的比特序多数会选择MSB First。通信空闲状态SPI时钟极性在I2C和串口通信时我们知道接线完成后通信并不是立刻开始的而是先处于一种“空闲状态”。因此任何一种通信协议都必须明确规定当通信处于空闲状态时信号线应该处于什么样的电平状态。例如I2C通信规定当SCL和SDA总线都处于高电平状态时表示通信处于空闲状态。任一总线被拉低都表示通信开始或通信处于正在进行时。串口通信规定当信号线持续处于 高电平 时表示通信处于空闲状态。那么SPI呢它是如何表示通信的空闲状态呢在回答这个问题之前我们仍然需要记住 SPI 的一个显著特点SPI的时序灵活多变、可配置。所以SPI 通信的空闲状态同样不是固定不变的也是允许进行配置选择的。SPI和I2C同属于同步通信但与I2C不同的是SPI仅通过一条时钟信号线来确定通信的空闲状态。这里就需要引入SPI一个重要的概念——SPI极性或者叫SPI时钟极性。SPI 极性Clock PolarityCPOL用于规定当 SPI 总线处于空闲状态时时钟信号 SCK 的电平状态。SPI极性是可配置的具体来说有两个选择CPOL 0规定当SCK时钟信号线为低电平时表示通信处于空闲状态。通信开始时时钟信号翻转到高电平。CPOL 1规定当SCK时钟信号线为高电平时表示通信处于空闲状态。通信开始时时钟信号翻转到低电平。采样时机SPI时钟相位关于采样和采样时机这两个概念我们在前面已经涉及过了在这里我们先对这两个概念再做一次简要的复习和总结。采样接收端在某一确定时刻对信号线上的电平状态进行读取并将其判定为逻辑 0 或逻辑 1 的过程。采样时机通信协议所规定的接收端执行采样操作的具体时刻、时间点。我们先回顾一下以往学过的通信方式它们各自是如何规定采样时机的。串口通信以起始位为时间基准用波特率确定一个bit所占用的时间然后在每个bit的中点附近进行多次采样最终投票判决结果。I2C 通信中接收端在 SCL 时钟为高电平的工作时间内采集数据通常会选择在这一段工作时间的中点完成采样。那么SPI通信呢SPI 通信的数据采样时机又是如何规定的呢和“通信空闲状态”一样SPI通信的采样时机也是灵活可配置的。并且相比串口和 I2CSPI 的采样时机设计也更加“独特”。同样的SPI通信的采样时机也有一个专业的术语这就是SPI时钟相位。SPI 时钟相位Clock PhaseCPHA用于规定SPI通信的采样时机具体来说是在一个 SPI 时钟周期内数据应该在第几边沿被采样。时钟相位仍然有两种选择CPHA 0表示数据采样时机是在时钟周期的第一边沿采集。CPHA 1表示数据采样时机是在时钟周期的第二边沿采集。SPI四种时钟模式重点在上面我们讲到了时钟的两种相位选择提到了第一和第二边沿采集。那么什么是“第一边沿”、“第二边沿”呢为了讲清楚这个问题我们需要把时钟极性和时钟相位结合在一起进行排列组合。如此我们得到了四种SPI时钟模式SPI Clock Mode简称SPI ModeMode0模式0CPOL 0CPHA 0低电平空闲状态第一边沿采集。Mode1模式1CPOL 0CPHA 1低电平空闲状态第二边沿采集。Mode2模式2CPOL 1CPHA 0高电平空闲状态第一边沿采集。Mode3模式3CPOL 1CPHA 1高电平空闲状态第二边沿采集。接下来我们将以Model0为例对SPI 时钟模式 展开讲解。Mode0模式0首先我们来看下面这张SPI 时序图这张时序图没有带上任何数据线因为我们现在还不需要考虑数据收发的问题。那么你在上述图中能看出什么问题呢如果你搞懂了上面讲的内容你应该至少能够看出下面几条从机1的NSS1线低电平表示从机1与主机进行通信。从机2和从机3的NSS线全程拉高表示它们作为从机没有和主机进行通信。当然SPI在同一时刻只能有一台从机和主机进行通信。SCK时钟信号线在一开始处于低电平状态说明通信的空闲状态是低电平空闲。所以SPI通信选择的时钟极性是0低电平空闲。那么时钟相位呢哪里是第一边沿哪里是第二边沿实际上只要时钟极性确定了那么第几边沿也就确定了。如下图所示在模式0低电平空闲状态第一边沿采集其时钟信号的波形就如上图所示并且采样时机是红色箭头。现在我们已经明确了数据采样发生在什么时刻那么下一个问题自然就出现了在进行数据采样时对数据线有没有要求当然是有要求的。在理想情况下和I2C通信类似接收端在时钟边沿进行数据采样时数据线在该边沿附近处于“电平稳定区间的中点”。换句话说采样数据的边沿来临时数据最好已经稳定一段时间了而不是正在变化。接下来我们在时序图中加入数据线得到如下所示的波形。在Mode0的前提下分析这张时序图过程如下所示NSS线拉低表示主机选中从机进行通信但此时观察SCK总线还处于低电平空闲状态所以第一个bit数据还未发送。Mode0时时钟线低电平表示空闲状态所以当时钟线出现第一个上升沿时才表示发送第一个bit数据。当时钟信号线上的“时钟周期”消失呈现完全低电平的状态就表示通信已经回归空闲状态。分析SPI通信的过程只分析拥有完整时钟周期的部分其余没有时钟周期的部分都表示通信处于空闲状态未收发数据。当然在最终NSS片选线被重新拉高表示主机断开与从机联系通信彻底结束了。这张图上一共存在8个完整时钟周期也就是说通过MOSI数据线主机一共向从机发送了8个bit数据。从机会在所有的第一边沿采集数据也就是上升沿采集数据一共有8个上升沿所以从机会收到主机发送的8个bit数据。最终我们可以得出主机给从机发送了8个bit数据按照接收的顺序是1011 1000也就是说主机给从机发送了一个字节数据0xB8是这样吗当然不是。从机按照顺序接收的数据是1011 1000这是没有问题的。但这并不意味着主机发送的数据就是1011 10000xB8因为Mode0只约定了时钟极性和相位比特序还没有约定。所以如果通信双方约定的比特序是MSB First那么主机发送的数据就是0xB8即1011 1000如果通信双方约定的比特序是LSB First那么主机发送的数据就是0x1D即0001 1101扩展实际上从这张时序图中我们还能得出SPI通信的一些重要特点总结在下面NSS片选线的低电平时间段意味着主机和从机正在进行通信。在NSS拉低生效的时间段内SCK上每产生一个时钟周期就表示收发一个bit数据。在一次SPI通信的过程中允许传输任意的bit数量甚至可以传输非8整数倍的bit数量。这就是SPI通信数据帧的灵活之处片选线的状态决定一次通信的开始与结束时钟信号的时钟周期数量决定了实际收发bit数据的数量。Mode1模式1在已经搞懂 SPI Mode 0 的前提下Mode 1 的理解其实就会变得非常自然。Mode1和Mode0的差距仅限于第几边沿采样Mode0第一边沿采样Mode1则第二边沿采样。如下图所示时钟信号中的绿色箭头就是第二边沿Mode1时在这些下降沿进行数据采样。再看下面一个带数据线的时序图主机通信MOSI线发数据给从机一共发了8个bit依照顺序是0111 0011。那么如果约定MSB First比特序那么主机给从机发送的1个字节数据是0x73即0111 0011如果约定LSB First比特序那么主机给从机发送的1个字节数据是0xCE即1100 1110Mode2模式2模式2时钟信号高电平表示通信空闲并且在第一边沿进行数据采集。不带数据线时序图如下图所示图中的红色箭头就是第一边沿也就是全部下降沿mode2在此时进行数据采样。再看下面一个带数据线的时序图如此从机接收到的比特序列是0111 0011如果采用MSB First比特序那么主机发送的1个字节数据就是0111 0011即0x73如果采用LSB First比特序那么主机发送的1个字节数据就是1100 1110即0xCEMode3模式3模式3时钟信号高电平表示通信空闲并且在第二边沿进行数据采集。在下图中图中的绿色箭头就是第二边沿也就是全部上升沿mode3在此时进行数据采样。再看一个带数据线的时序图如此从机接收到的比特序列是0111 0110如果采用MSB First比特序那么主机发送的1个字节数据就是0111 0110即0x76如果采用LSB First比特序那么主机发送的1个字节数据就是0110 1110即0x6E注意/扩展在Mode 3的最后一张时序图中我们刻意做了一个与前面不同的设定在通信尚未开始时MOSI 数据线保持为高电平在通信结束之后MOSI 数据线最终停留在低电平这个设定和之前的时序图不同这合理吗是不是有问题啊进而我们就要提出一个非常重要的问题前面我们所讲述的时钟极性以及相位这两个概念都是描述时钟信号线的它们决定了通信开始传输数据还决定了采样机制。那么SPI通信协议有没有对数据线在通信时的电平做什么约束呢比如数据线高电平时表示通信未开始有没有这种设计呢答完全没有。对于SPI通信而言主机拉低片选线NSS拉低代表主从机通信关系建立通信正式开始。通信开始不意味着立刻传输数据只有SCK时钟信号线上出现了第一个有效边沿时第一个bit数据才开始传输。SPI的模式决定了接收端在何时进行数据采样。在接收端进行数据采样时数据线上的高低电平是有效的并且最好是保持一段时间后的稳定电平。而不是刚刚变化过来或马上要变化的不稳定电平。除此之外的任何时刻SPI通信都不关心数据线的电平状态。通信未开始或已结束时的数据线电平状态就更不需要关心了。总结与补充到此为止关于SPI 通信本身、以及SPI 通信协议相关的设定与概念我们已经全部讲清楚了。再回过头来看在本章节一开始我们曾对 SPI 通信做过 11 条总体性的总结。其中有一部分内容随着前面 串口 和 I2C 的学习其实大家已经具备了相应的理解基础因此没有再单独赘述。在本章节中我们重点讲解了 SPI 通信——通信时序的灵活可配置性。相信到现在为止你已经对这一点有所理解了。那么在这 11 条总结中还有哪些问题是目前还需要进一步讲解、加深理解的呢主要有以下三个问题第一SPI通信为什么显著的优势是快第二SPI通信的本质是主从双方的移位寄存器移位所导致的数据交换这是什么意思呢第三SPI通信的数据帧格式与从机有关那具体是什么情况呢这些问题会在后续的学习中逐步理解

相关文章:

STM32单片机学习(27) —— SPI相关概念

文章目录概述SPI通信的核心特性I2C和SPI的简单对比SPI学习的补充说明SPI硬件电路设计SPI的四条通信线SPI通信的片选线低电平选中不支持广播通信SPI通信的时序结构(重点)SPI通信的比特序通信空闲状态,SPI时钟极性采样时机,SPI时钟相…...

保姆级教程:在CentOS 7上用达梦8搭建DCA练习环境(附ulimit、VNC、ODBC全配置)

达梦8 DCA认证实战:CentOS 7环境搭建与调优全指南 在国产数据库技术快速发展的今天,达梦数据库作为核心产品之一,其DCA认证已成为众多从业者提升竞争力的重要选择。与理论为主的认证不同,DCA更注重实际操作能力,而一个…...

CentOS 7下‘Development Tools’和‘开发工具’组有区别吗?实测告诉你答案

CentOS 7下‘Development Tools’与‘开发工具’的隐藏关联:技术细节全解析在Linux系统管理中,yum的软件包组功能一直是个既实用又充满谜团的领域。特别是当系统语言环境与软件包元数据语言不一致时,开发者们常常会遇到一个有趣的现象&#x…...

DeepSeek RAG系统渗透测试全链路复现(含PoC代码与防御加固清单)

更多请点击: https://kaifayun.com 第一章:DeepSeek RAG系统渗透测试全链路复现概览 DeepSeek RAG系统作为面向企业级知识检索增强生成的典型架构,其安全边界不仅涵盖LLM服务层,更延伸至向量数据库、检索代理、提示工程网关及外部…...

CVPR 2023反无人机数据集实战:用ModelScope上的开源模型快速上手目标检测

CVPR 2023反无人机数据集实战:用ModelScope上的开源模型快速上手目标检测无人机技术的普及带来了新的安全挑战,从隐私侵犯到关键设施威胁,反无人机技术正成为计算机视觉领域的热点。CVPR 2023反无人机竞赛提供的开源数据集和基线模型&#xf…...

艾尔登法环帧率解锁终极指南:告别卡顿,畅享丝滑游戏体验

艾尔登法环帧率解锁终极指南:告别卡顿,畅享丝滑游戏体验 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_m…...

别再死记硬背了!用Multisim仿真+图解,5分钟搞懂三极管共射放大电路工作原理

用Multisim仿真图解5分钟掌握三极管共射放大电路三极管共射放大电路是电子技术中最基础也最关键的电路之一,但传统教材中复杂的公式推导和静态图解往往让初学者望而生畏。本文将带你用Multisim仿真软件,通过可视化的方式直观理解电路工作原理&#xff0c…...

Allegro等长设置翻车实录:拓扑模板法的3个坑与手工PinPair的救赎

Allegro等长设计避坑指南:从拓扑模板到精准PinPair的实战演进在高速PCB设计中,等长匹配如同精密钟表里的齿轮啮合,差之毫厘便可能导致整个系统时序崩塌。当设计从简单的点对点结构升级到多负载复杂拓扑时,Allegro用户常陷入两种典…...

从测速到配置:一套完整的cFosSpeed网络加速保姆级教程(适用于小白)

从零开始掌握cFosSpeed:网络加速全流程实战指南对于经常进行在线游戏、视频会议或大文件传输的用户来说,网络延迟和带宽利用率低下往往是影响体验的关键痛点。cFosSpeed作为一款专业的网络流量优化工具,能够显著改善这些问题,但许…...

C++中显示与隐式加载dll的使用与区别

一、什么是 DLL?DLL(Dynamic Link Library) 是 Windows 下的动态链接库,包含可被多个程序共享的函数、资源或类。使用 DLL 可以实现代码复用、模块化设计和插件机制。在 C 中,调用 DLL 中的函数有两种主要方式&#xf…...

告别命令行!用Python脚本批量管理Docker容器,效率提升不止一点点

告别命令行!用Python脚本批量管理Docker容器,效率提升不止一点点每次在终端敲入docker ps、docker stop、docker rm时,你是否想过——当容器数量超过两位数,这种重复劳动是否在消耗你的生命?去年我们团队在迁移微服务架…...

基于2D工程图几何特征与梯度提升模型的制造成本智能预测

1. 项目概述:从图纸到报价的智能革命在制造业,尤其是像汽车零部件这样的离散制造领域,报价速度直接决定了订单的生死。传统上,拿到一张新的2D工程图(DWG格式),成本工程师需要花上几天甚至几周时…...

ThinkPad开机嘀嘀响或报2100/2110错误?可能是硬盘松了!自己动手检测与修复指南

ThinkPad开机嘀嘀响或报2100/2110错误?三步排查硬盘接触不良问题ThinkPad用户对那个标志性的开机"嘀嘀"声再熟悉不过——正常情况下它意味着系统自检通过。但当这个声音变成急促的报警音,伴随屏幕上出现"2100 Detection error"或&qu…...

Win10家庭版别再卡了!保姆级教程:手动修复gpedit.msc路径,彻底关闭Antimalware Service

Win10家庭版性能优化实战:精准修复组策略路径与系统服务调优每次游戏激战正酣时突然卡顿,或是视频渲染到关键时刻系统响应迟缓,很多Win10家庭版用户都遭遇过这类困扰。任务管理器里那个名为"Antimalware Service Executable"的进程…...

混合求解器:用神经网络增强传统微分方程数值方法

1. 项目概述:当数值方法遇到机器学习在科学计算和工程仿真领域,求解常微分方程(ODE)和偏微分方程(PDE)是绕不开的核心任务。无论是模拟电路中的电流变化、预测天气系统的演变,还是分析机械结构的…...

Claude Code 之父:2026 年我一行代码都没写,编程已被 AI 解决

2026 年,你还在一行一行敲代码吗?Claude Code 的创造者、Anthropic 核心人物 Boris Cherny,在公开访谈里抛出一句让整个行业震动的话:2026 年到现在,我没有写过一行代码。所有开发工作,100% 交给 AI 代理完…...

基于XGBoost与SHAP的分子气味预测:从特征工程到可解释性分析

1. 项目概述与核心价值在香水设计、食品风味工业乃至环境监测领域,一个核心且持久的挑战是:如何从分子的化学结构出发,准确预测其气味?这不仅仅是化学家或调香师的直觉游戏,更是一个复杂的、高维度的模式识别问题。传统…...

Unity安卓构建实战指南:解决APK真机安装闪退与构建失败

1. 这不是一本“从零开始”的书,而是一份你真正上手Unity安卓游戏开发前必须撕开的说明书我带过三届Unity实习工程师,也帮二十多个独立开发者把Demo打包进Google Play。每次看到新人在“安卓构建失败”报错里反复挣扎,或者对着“IL2CPP编译卡…...

Unity安卓打包实战指南:从环境配置到APK生成全链路排错

1. 这不是“入门教程”,而是一份写给真实开发现场的生存指南你打开Unity,新建一个3D项目,拖进一个Cube,点击Play——它动了。你松了口气,觉得“Unity好像也没那么难”。但当你把APK打包发给测试同事,对方回…...

Unity安卓构建72小时实战指南:从零到真机运行

1. 这不是“又一本Unity教程”,而是我带三个新人从零上线第一款安卓游戏的真实路径你点开这个标题,大概率正站在两个路口之间:一边是满屏“30天速成Unity”“零基础做爆款”的短视频封面,一边是你刚下载完Unity Hub、卡在Android …...

深度学习从心电信号中解码呼吸频率:原理、实现与临床价值

1. 项目概述:从心电信号中“听”到呼吸声呼吸频率,这个我们每分钟都在进行却很少被精确量化的生命体征,在临床医学中扮演着至关重要的角色。它不仅是评估呼吸系统功能的直接指标,更是反映全身代谢、循环乃至神经系统状态的“窗口”…...

别再让模型在Unity里‘抽风’了!Blender导出FBX到Unity的7步避坑自查清单

别再让模型在Unity里‘抽风’了!Blender导出FBX到Unity的7步避坑自查清单当你花了三天三夜精心雕琢的Blender模型,导入Unity后却变成了一团旋转错乱、贴图闪烁的"抽象艺术",那种崩溃感每个3D开发者都懂。本文将用实战经验帮你建立一…...

Shiro RememberMe反序列化漏洞深度解析与实战利用

1. 这个漏洞不是“老古董”,而是理解Java安全边界的活教材很多人看到CVE-2016-4437,第一反应是“Shiro都淘汰了,还讲这个干啥?”——我去年在给一家做政企内部系统的客户做渗透复测时,就遇到过一个上线三年的审批平台&…...

UE4动画蓝图实战:用双骨骼IK节点搞定手部穿模,附完整蓝图节点截图

UE4动画蓝图实战:双骨骼IK节点解决手部穿模的完整指南在角色动画开发中,手部穿模问题堪称"视觉杀手"。想象一下精心设计的角色挥拳时,拳头直接穿过墙壁或敌人身体——这种违和感足以毁掉整个场景的沉浸感。本文将彻底解决这个痛点&…...

64_《智能体微服务架构企业级实战教程》授权与认证之授权认证集成测试

前言 配套视频教程: 在 Bilibili课堂、CSDN课程、51CTO学堂 同步发售,提供:源码+部署脚本+文档。 bilibili课堂视频教程:智能体微服务架构企业级实战教程_哔哩哔哩_bilibili CSDN课程视频教程:智能体微服务架构企业级实战教程_在线视频教程-CSDN程序员研修院 51CTO学堂…...

Goframe项目实战:从数据库表到API接口的全链路开发指南(含避坑点)

Goframe项目实战:从数据库表到API接口的全链路开发指南(含避坑点)在当今微服务架构盛行的时代,Go语言因其高性能和并发优势成为后端开发的热门选择。而Goframe作为一款企业级的Go应用开发框架,提供了从数据库操作到API…...

Kerberos身份认证原理与企业级排错实战指南

1. 这不是“另一个登录框”,而是一套精密运转的身份验证齿轮系统很多人第一次听说 Kerberos,是在公司内网登录邮箱或访问内部系统时,看到那个带小盾牌图标的弹窗——“正在使用 Kerberos 协议进行身份验证”。于是下意识觉得:“哦…...

Kerberos身份认证原理与实战排错指南

1. 为什么今天还要花时间搞懂 Kerberos?——一个被低估的“老协议”正在悄悄支撑着你的日常你每天登录公司内网查邮件、访问财务系统提交报销、用 Jenkins 构建代码、甚至在 Windows 域环境中打开一台同事的共享文件夹……这些看似顺滑的操作背后,大概率…...

机器学习与深度学习在地球物理勘探中的应用:基于电阻率数据预测极化率模型

1. 项目概述与核心价值在花岗岩这类地质条件复杂的地区搞勘探,最头疼的就是地下情况“看不清”。传统的电阻率(ERT)和激发极化(IP)联合反演,就像用一把刻度模糊的尺子去量一块表面坑洼不平的石头——面对高…...

机器学习结合基因无关通路映射:从临床数据挖掘新药靶点

1. 项目概述:当机器学习遇见代谢通路,如何从数据中“挖”出新药靶点?在生物医学研究的前沿,我们正面临一个核心矛盾:一方面,我们拥有海量的临床数据,比如血糖、血压、BMI等指标;另一…...