USB(TYPE-C)转串口(TTL)模块设计讲解

目录

一 、引言

二、方案设计

三、USB TYPE-C介绍

1、TYPE-C接口定义

        1、24P全引脚描述

        2、Type C 接口 VBUS/GND 作用

       3、Type C 接口 D+/D- 作用

        1、数据传输:

        2、设备识别:

        3、充电协议协商:

        4、Type C 接口 CC1/CC2 作用

        1、主从设备区分

        2、设备连接检测

        3、正反插确认

        4、USB PD 通信

        5、Type C 接口 SBU1/SBU2 作用

        6、Type C 接口 SSTX/SSRX 作用

2、TYPE-C接口特点   

        1、24P Type C

        2、16P/12P Type C

        3、6P Type C

3、TYPE-C引脚总结  

四、USB转UART芯片介绍

五、USB转UART电路设计

六、电路完成截图

七、文件下载链接


一 、引言

        USB TYPE-C(简称:TYPE-C)是目前主流的连接端口,而在单片机的开发中,TTL信号更是必不可少的通讯方式,目前市场上也有着不少USB转串口的商品设计,低端的价格也相对亲民,而稍微高端的也会价格不菲。

        今天,我们来设计一款USB转TTL模块。

二、方案设计

        USB TYPE-C端口  +  四路串口输出

三、USB TYPE-C介绍

1、TYPE-C接口定义

        按以下视角引出端子定义

USB TYPE-C母口

USB TYPE-C公口

        

         从上图的 Type C 公头和母口的引脚排列可以知道 Type C 的引脚功能是中心对称的,所以公头无论以什么方向接入母口两者的功能引脚都可以完美对接。

        1、24P全引脚描述

Pin名称功能描述Pin名称功能描述
A1GNDB12GND
A2SSTXp1SuperSpeed 差分信号 #1 的发送正端B11SSRXp1SuperSpeed 差分信号 #1 的接收正端
A3SSTXn1SuperSpeed 差分信号 #1 的发送负端B10SSRXn1SuperSpeed 差分信号 #1 的接收负端
A4VBUS总线电源B9VBUS总线电源
A5CC1Configuration Channel 1,即 “配置通道 1”B8SBU2Side Band Use 1,即辅助使用2
A6Dp1Data Positive 1,即 USB 2.0 差分信号 1 的正端B7Dn1Data Negative 1,即 USB 2.0 差分信号 1 的负端
A7Dn1Data Negative 1,即 USB 2.0 差分信号 1 的负端B6Dp1Data Positive 1,即 USB 2.0 差分信号 1 的正端
A8SBU1Side Band Use 1,即辅助使用1B5CC2Configuration Channel 2,即 “配置通道 2”
A9VBUS总线电源B4VBUS总线电源
A10SSRXn2SuperSpeed 差分信号 #2 的发送正端B3SSTXn2SuperSpeed 差分信号 #2 的接收正端
A11SSRXp2SuperSpeed 差分信号 #2 的发送负端B2SSTXp2SuperSpeed 差分信号 #2 的接收负端
A12GNDB1GND

       

        2、Type C 接口 VBUS/GND 作用

Pin名称功能描述Pin名称功能描述
A1GNDB12GND
A4VBUS总线电源B9VBUS总线电源
A9VBUS总线电源B4VBUS总线电源
A12GNDB1GND

        GND大家都可以理解,而VBUS大家可能不常见,直接理解为电源VCC即可

       3、Type C 接口 D+/D- 作用

A6Dp1Data Positive 1,即 USB 2.0 差分信号 1 的正端B7Dn1Data Negative 1,即 USB 2.0 差分信号 1 的负端
A7Dn1Data Negative 1,即 USB 2.0 差分信号 1 的负端B6Dp1Data Positive 1,即 USB 2.0 差分信号 1 的正端

        在电子简称中,n是Negative缩写,意为负,p是 Positive的缩写,意为正。

        在 Type - C 接口里,D + 和 D - 属于 USB 2.0 的差分数据传输引脚,它们在数据传输和设备识别方面发挥着重要作用。

        差分信号传输是 D + 和 D - 的工作基础。差分信号传输是指通过两根信号线(即 D + 和 D - )来传输幅度相同但相位相反的信号。接收端会对这两个信号的差值进行检测,以此来还原原始数据。这种传输方式具备很强的抗干扰能力,能够有效降低外部电磁干扰对信号传输的影响,进而保证数据传输的稳定性和准确性。

        主要功能        

        1、数据传输

        D + 和 D - 主要用于 USB 2.0 协议的数据传输,其最高传输速率可达 480Mbps。在设备进行数据交换时,如电脑与 U 盘、手机与电脑之间传输文件,数据就会通过 D + 和 D - 这一对差分线进行传输。

        2、设备识别

        在设备连接的初始阶段,主机通过检测 D + 和 D - 上的电平状态来识别设备的类型和模式。例如,在 USB 通信中,当设备插入主机时,主机通过检测 D + 和 D - 引脚的上拉电阻情况来判断设备是高速设备、全速设备还是低速设备。对于全速设备,D + 上有一个 1.5kΩ 的上拉电阻;而对于低速设备,D - 上有一个 1.5kΩ 的上拉电阻。主机根据检测到的上拉电阻位置来确定设备的速度类型,并相应地调整通信参数。

        3、充电协议协商

        某些充电协议也会利用 D + 和 D - 进行通信,以协商充电电压和电流。例如,在一些手机充电过程中,充电器和手机会通过 D + 和 D - 交换信息,以确定合适的充电参数,实现快速充电功能。

典型应用

        4、Type C 接口 CC1/CC2 作用

A5CC1Configuration Channel 1,即 “配置通道 1”
B5CC2Configuration Channel 2,即 “配置通道 2”

        CC1 是 “Configuration Channel 1” 的缩写,即 “配置通道 1”。在 Type - C 接口中,CC1 引脚与 CC2 引脚共同承担着配置通道的功能,用于主从设备区分(确定数据传输方向)、检测设备连接、设备角色识别以及 USB PD 通信等。

        1、主从设备区分

        做主机时,CC1、CC2接上拉电阻VBUS。

        做从机时,CC1、CC2接5.1K电阻接地。

        主设备的 CC 引脚通过上拉电阻 Rp 连接到 VBUS,标识其供电能力。例如,常见的电阻值 56kΩ/22kΩ 可表示不同的电流能力。

        从设备的 CC 引脚则通过下拉电阻 Rd 连接到 GND,标识其受电需求,通常下拉电阻 Rd 为 5.1kΩ。

        需要说明的一点时,并非所有设备主机、从机设备都是固定的,有一种双角色端口,其 CC 引脚能够动态切换上拉电阻 Rp 和下拉电阻 Rd 的状态。在初始连接时,设备会随机确定一个初始角色(主或从),并通过 CC 引脚的电平状态来告知对方。之后,设备之间可以通过 USB PD 协议进行协商,根据实际需求动态切换主从角色。例如,手机在连接充电器时作为 从设备,接收充电,当手机通过 OTG 线连接 U 盘时,手机可通过 CC 引脚切换为 主设备,为 U 盘供电并读取数据。

        2、设备连接检测

        以手机及充电器为例:未连接时,充电器的 VBUS 无输出,CC 引脚由于上拉电阻处于高电平。当手机通过 CC 引脚与充电器 连接后,充电器 的 CC 引脚会检测到手机的下拉电阻 Rd,使得 CC 引脚电平被拉低。充电器检测到 CC 引脚电平变化,就知道有设备连接上了,从而打开 Vbus 电源开关,输出电源给手机。

        

        3、正反插确认

        在母口的端子中,可以看到引脚是中心对称的,但是对于TYPE-C的公口来说,却不是完全中心对称,少了B6、B7引脚功能,所以实际来说,TYPE-C的公头正插与反插是有区别的。

         依旧以手机充电为例,当手机处于充电状态扮演从机角色时,若手机内部 CC 引脚下拉导致充电器的 CC1 引脚被拉低,意味着手机的 Type - C 接口是向上插入;反之,若充电器检测到CC2 引脚被拉低,则表明手机的 Type - C 接口是向下插入。这样可以确定接口插入的方向。  

        4、USB PD 通信

        CC1/CC2 引脚是 USB PD(Power Delivery)协议通信的线路之一,通过该引脚,设备之间可以进行电源相关的信息交互,如协商供电电压、电流等参数,以实现快速充电或其他功率传输功能,实现负载的功能配置。

     

        5、Type C 接口 SBU1/SBU2 作用

B8SBU2Side Band Use 1,即辅助使用2
A8SBU1Side Band Use 1,即辅助使用1

        SBU1/SBU2 主要用于支持附加功能。

        音频信号传输:在模拟音频耳机附件模式下,SBU1 可作为麦克风信号传输通道,将音频信号从设备传输到外部音频设备。在 DP Alt Mode 模式下进行 DP 信号传输时,SBU 引脚可作为音频传输通道,传输音频信号。

        视频信号相关:在 DisplayPort 替代模式中,SBU1 和 SBU2 可用于传输 DisplayPort 协议中的辅助信号,如音频信号、热插拔检测信号等,以实现高清视频输出及相关功能的协同工作。

        设备连接与配置:SBU1 和 SBU2 在连接 Type - C 设备时参与建立连接,并在设备之间传输信息。例如,SBU1 可发出电压波形,以确定设备的电源和数据协议,SBU2 则用于接收电源和数据协议的信息,使设备能够进行正确的配置。

        6、Type C 接口 SSTX/SSRX 作用

A2SSTXp1SuperSpeed 差分信号 #1 的发送正端B11SSRXp1SuperSpeed 差分信号 #1 的接收正端
A3SSTXn1SuperSpeed 差分信号 #1 的发送负端B10SSRXn1SuperSpeed 差分信号 #1 的接收负端
A10SSRXn2SuperSpeed 差分信号 #2 的发送正端B3SSTXn2SuperSpeed 差分信号 #2 的接收正端
A11SSRXp2SuperSpeed 差分信号 #2 的发送负端B2SSTXp2SuperSpeed 差分信号 #2 的接收负端

        SSTXp1 是 “SuperSpeed Transmitter Pair 1, Positive” 的缩写,即 “超高速发送器差分信号对 1,正端”。

        在数据传输过程中,SSRXp1 和对应的负信号引脚(如 SSRXn1)共同组成差分信号对,它主要用于高速数据传输,在 USB 3.1 及更高版本的协议中发挥着重要作用,负责将设备内部的高速数据以差分信号的形式发送出去,以实现快速的数据传输,比如在连接外部存储设备、显示器或进行大文件传输时,能确保数据的高效、稳定传输。

2、TYPE-C接口特点   

        Type C 接口实际上为了适应不同的用途,按功能需求进行划分从而拥有多个版本。

        1、24P Type C

        全功能 USB3.0/3.1、USB2.0、音视频传输,上述我们说的引脚定义 指的就是 24P 全功能 Type C。

        2、16P/12P Type C

        支持 USB2.0,也能支持 PD 快充、音频设备、HDMI 传输、调试模式等功能,但相比 24P 接口,功能的完整性和性能会受到一定限制。

        TYPE - C 的 16P 和 12P 在本质上没有太大区别,通常可认为是同一种接口的不同称呼。

        16P 一般是接口厂家、封装的正式名称。在单排 16P 的 TYPE - C 母座中,头尾开始的 4 引脚 Pin 针分别是两两相连的,从外观上看好像是 12Pin 针,所以日常生活中习惯称呼为 12P。

        16P 和 12P 的 TYPE - C 接口都是在 24P 全功能版本的基础上进行了简化。它们移除USB3.0 的 TX1/2、RX1/2 引脚,保留了 SBU1/2、CC1/2、USB2.0 的 D + 和 D - 引脚。这意味着它们支持基本的充电和 USB2.0 数据传输功能,但不支持 USB3.0/3.1 高速数据传输。

        3、6P Type C

        仅支持充电

        6P 接口仅保留了 Vbus(电源总线)、GND(接地)、CC1(配置通道 1)、CC2(配置通道 2)引脚,主要支持大电流充电,不具备数据传输功能。

        支持 PD 快充协议:CC1 和 CC2 引脚用于 PD 设备识别,承载 USB - PD 的通信,以向供电端请求电源供给,可输出电压可调,最大传输 5A - 20V 共 100W 的功率。借助 USB - PD 协议,用电端能方便地从供电端取电。

3、TYPE-C引脚总结  

电源引脚:VBUS与GND

        VBUS:电源总线引脚,共有两对。用于为设备传输电源,能提供不同的电压等级(如 5V、9V、12V、15V、20V 等),具体取决于所支持的 USB Power Delivery(PD)协议。

        GND:接地引脚,同样有两对。

数据传输引脚:USB 2.0 数据引脚与USB 3.1 数据引脚

        USB 2.0 数据引脚

        D+、D -:这是一对差分信号引脚,用于实现 USB 2.0 协议的数据传输,最高传输速率可达 480Mbps。在一些对数据传输速率要求不高的设备连接中广泛应用,如鼠标、键盘等。

        USB 3.1 数据引脚

        TX1+、TX1 - 、TX2+、TX2 -:分别为两对发送差分信号引脚,用于高速数据的发送。

        RX1+、RX1 - 、RX2+、RX2 -:是两对接收差分信号引脚,用于高速数据的接收。这些引脚共同支持 USB 3.1 Gen 2 协议,最高传输速率可达 10Gbps,满足如移动硬盘、高速闪存等设备的高速数据传输需求。

配置与检测引脚:CC1、CC2与SBU1、SBU2

        CC1、CC2:配置通道引脚,主要用于设备的连接检测、正反插识别、功率传输协商以及 USB PD 协议的通信。例如,当设备连接时,通过检测 CC 引脚的电平状态和电阻值,来确定设备的角色(如主机、从机)、支持的功率等级等信息。

        SBU1、SBU2:辅助信号引脚,在不同的应用场景下有不同的功能。可用于支持音频、视频等其他功能。

        在 Type - C 接口中,D + 和 D - 通常与其他引脚协同工作。

四、USB转UART芯片介绍

        我们选用X宝上这款使用的CH348Q芯片,

        CH348是一款高速USB总线的转接芯片,实现USB转八个异步串口UART0/1/2/3/4/5/6/7功能,用于为计算机扩展异步串口,或者将普通的串口设备或者MCU直接升级到USB总线。

        CH348分为CH348Q与CH348L,对应封装分别为LQFP48和LQFP100。

        在CH348Q数据手册中,提供了典型电路应用设计图,该电路中,采用6P的USB TYPE-C接口,使用AMS1117 - 3.3 线性稳压器将TYPE-C输入的5V电压转换为CH348Q所需要的3.3V电源电压,并提供了晶振电路,复位电路的设计,最终引出了8个端子,用于8路串口输出。     

        在这里,我们需要注意的是对于输出串口UART0\1\2\3与输出串口UART4\5\6\7略微有些区别。

        对于UART0~UART3,芯片CH348Q分别为串口提供了额外的3个引脚,RTS、CTS、DTR。

        RTS(Request To Send)

        功能概述:RTS 即请求发送,是一个输出信号引脚。当设备想要向外部发送数据时,会通过将 RTS 引脚置为有效电平(通常为低电平)来向接收方发出请求发送数据的信号。这是一种发送方主动发起的请求机制,用于告知接收方自己有数据准备发送。

        应用场景:在串口通信中,当发送设备有数据要发送时,先将 RTS 引脚置为有效,等待接收方的响应信号(CTS),只有在接收到接收方允许发送的信号后,才开始发送数据。这样可以避免接收方因缓冲区已满而无法接收数据,导致数据丢失的情况发生。

        CTS(Clear To Send)

        功能概述:CTS 即允许发送,是一个输入信号引脚。接收方通过检测 RTS 引脚的状态,当检测到发送方发出的请求发送信号(RTS 有效)时,会检查自身的接收缓冲区是否有足够的空间来接收新的数据。如果有足够的空间,接收方会将 CTS 引脚置为有效电平(通常为低电平),表示允许发送方发送数据。

        应用场景:在发送方收到接收方的 CTS 有效信号后,才会开始将数据发送出去。如果接收方的缓冲区已满,CTS 引脚会保持无效状态,发送方则会暂停发送数据,直到接收到有效的 CTS 信号为止。

        DTR(Data Terminal Ready)

        功能概述:DTR 即数据终端准备好,是一个输出信号引脚。该引脚用于表示设备的数据终端(如计算机)是否已经准备好进行通信。当设备的数据终端准备好时,会将 DTR 引脚置为有效电平(通常为低电平),告知外部设备可以进行数据通信。

        应用场景:在一些设备中,DTR 信号可以用于控制外部设备的电源或复位。例如,当计算机通过串口与外部设备通信时,计算机可以通过控制 DTR 引脚的电平来开启或关闭外部设备的电源,或者对外部设备进行复位操作。

        RTS/CTS 和 DTR 用于硬件流控制,以确保数据在发送和接收过程中的可靠性。

        为了避免各位对这几位引脚产生误解,我们以单片机STM32F103为例对于接线来进行讲解。

        首先是电源引脚,VDDA与VSSA是单片机STM32的数字电源供电引脚。

        若使用 USART1 进行通信,STM32F103其 TX 引脚为 PA9,RX 引脚为 PA10 ,而大家也都知道,一个设备的发要接另一个设备的收,故此,完成TX与RX的接线。

        RTS 是请求发送信号,是输出信号。STM32 的串口有对应的 RTS 引脚,如 USART1 的 RTS 引脚是 PA12 。将外部设备的 CTS 引脚连接到 STM32F103C8T6 的 PA12 引脚。

        CTS 是允许发送信号,是输入信号。USART1 的 CTS 引脚是 PA11 。把外部设备的 RTS 引脚连接到 STM32F103C8T6 的 PA11 引脚。

        DTR 是数据终端准备好信号,一般作为输出信号。在 STM32 中没有专门的 DTR 硬件引脚,但可以使用一个通用 GPIO 引脚来模拟该功能。例如,选择 PA8作为模拟 DTR 引脚,将其连接到外部设备的 DTR 接收引脚。

        至此也以完成一个串口通讯的连接,CH348Q原理图中的UART0、UART1、UART2、UART3便是此种连接方式。

        但我想提的是,RTS、CTS、DTR这三种引脚并不是UART0、UART1、UART2、UART3通讯不可或缺的引脚,只有TX、RX引脚,与供电引脚才是必要引脚。

        所以在原理图中,UART0、UART1、UART2、UART3是可以像UART4、UART5、UART6、UART7引脚一样,只引出四个引脚一样正常工作,实际上大多数情况下这三种端子也用不到,只是对于已提供了硬件控制流功能的端子,大家可以将端子引出以备用。

        

        接下来,我们对2号引脚CFG进行解释;

        CFG是一个配置引脚,用于控制上述中DTR引脚,上述中的DTR引脚在电路图中全称是DTR/TNOW,顾名思义,这类引脚是有两种模式的,一种是DTR模式,一种是TNOW模式。

        DTR(Data Terminal Ready,数据终端准备好)引脚,用于表示数据终端设备是否准备好进行数据通信。

        TNOW 引脚,支持半双工,可用于控制 RS485 收发切换,也可作为普通 GPIO 引脚使用。

        上电期间,CFG引脚接高电平或悬空,则所有DTRx/TNOWx引脚配置成TNOW功能;CFG 引脚接低电平,则所有DTRx/TNOWx引脚默认配置成DTR功能。

        接下来,我们对44号引脚TEST进行解释:

        内部测试引脚,建议对地接1个下拉电阻 (通常4.7KΩ)或直接接地。

        接下来,我们对14号引脚ACT进行解释:

        USB 配置完成状态输出,低电平有效。

        接下来,我们对7号引脚RESET进行解释:

        外部复位输入端,低电平有效,内置上拉电阻

        接下来,我们对12、13号引脚XI、XO进行解释:

        CH348 芯片内置了电源上电复位电路,芯片正常工作时需要外部向XI引脚提供8MHz时钟信号, 时钟信号可通过CH348内置的反相器通过晶体稳频振荡产生。外围电路需要在XI和XO引脚之间连接 一个8MHz晶体,XI和XO引脚对地接20/22pF左右的振荡电容。

        以上完成,我们对电路开始设计。

五、USB转UART电路设计

        电源方面,设计了三种方案,

        电源模块:可靠省事、价格略贵。

        LDO:价格便宜、省事。

        BUCK降压:可输出较大功率。

        都能正常使用,各有优缺点,各位可以自行选用,本次选用了LDO方案。

        在CH348Q芯片附近,主要有复位电路,晶振电路,上述已提,不再赘述。

        对于CFG引脚,各位可以直接使用下拉电阻接地,也可以如图上使用2P的排针,若需要接地,可使用跳线帽直接短接,方便。

        对于TEST引脚,直接对地接1个下拉电阻。

        最后对于输出的串口,并未将8个串口全部引出,看各人需要,本次只引出4个串口。

        对于ACT引脚,当USB配置完成后为低电平,此时LED2点亮,其余收发指示灯不再赘述。

六、电路完成截图

七、文件下载链接

        上述文件,源文件已导出,上传在本人的资源中,可免费下载

【免费】基于TYPE-C与CH348Q的USB转串口方案:串口一拖四资源-CSDN文库

因为在绝大多数情况下,历史没有正恶,只有成败!!!!!

完结、完结、完结!!!!!!!!!!

END、END!!!!!!!!!!

END!!!!!!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

v-model进阶+ref+nextTick

一、v-model进阶 复习 v-model v-model: 双向数据绑定指令 数据 <-> 视图: 数据和视图相互影响, 因此被称为双向数据绑定指令 1> 数据变了, 视图也会跟着变 (数据驱动视图) 2> 视图变了, 数据也会跟着变 1. v-model 原理 v-model只是一个语法糖, 比较好用, …

Sentinel源码—4.FlowSlot实现流控的原理二

大纲 1.FlowSlot根据流控规则对请求进行限流 2.FlowSlot实现流控规则的快速失败效果的原理 3.FlowSlot实现流控规则中排队等待效果的原理 4.FlowSlot实现流控规则中Warm Up效果的原理 3.FlowSlot实现流控规则中排队等待效果的原理 (1)实现排队等待流控效果的普通漏桶算法介…

2025华中杯数学建模B题完整分析论文(共42页)(含模型、数据、可运行代码)

2025华中杯大学生数学建模B题完整分析论文 目录 一、问题重述 二、问题分析 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1解析 4.1.2问题1模型建立 4.1.3问题1样例代码&#xff08;仅供参考&#xff09; 4.1.4问题1求解结果&#xff08;仅供参考&am…

Project ERROR: liblightdm-qt5-3 development package not found问题的解决方法

问题描述&#xff1a;使用make命令进行ukui-greeter-Debian构建时出现Project ERROR: liblightdm-qt5-3 development package not found错误&#xff0c;具体如图&#xff1a; 问题原因&#xff1a;缺乏liblightdm-qt5-3 development软件包 解决方法&#xff1a;安装liblightd…

【C++面向对象】封装(下):探索C++运算符重载设计精髓

&#x1f525;个人主页 &#x1f525; &#x1f608;所属专栏&#x1f608; 每文一诗 &#x1f4aa;&#x1f3fc; 年年岁岁花相似&#xff0c;岁岁年年人不同 —— 唐/刘希夷《代悲白头翁》 译文&#xff1a;年年岁岁繁花依旧&#xff0c;岁岁年年看花之人却不相同 目录 C运…

从代码学习深度学习 - Transformer PyTorch 版

文章目录 前言1. 位置编码(Positional Encoding)2. 多头注意力机制(Multi-Head Attention)3. 前馈网络与残差连接(Position-Wise FFN & AddNorm)3.1 基于位置的前馈网络(PositionWiseFFN)3.2 残差连接和层规范化(AddNorm)4. 编码器(Encoder)4.1 编码器块(Enco…

阅读分析Linux0.11 /boot/head.s

目录 初始化IDT、IDTR和GDT、GDTR检查协处理器并设置CR0寄存器初始化页表和CR3寄存器&#xff0c;开启分页 初始化IDT、IDTR和GDT、GDTR startup_32:movl $0x10,%eaxmov %ax,%dsmov %ax,%esmov %ax,%fsmov %ax,%gslss _stack_start,%espcall setup_idtcall setup_gdtmovl $0x1…

33、单元测试实战练习题

以下是三个练习题的具体实现方案&#xff0c;包含完整代码示例和详细说明&#xff1a; 练习题1&#xff1a;TDD实现博客评论功能 步骤1&#xff1a;编写失败测试 # tests/test_blog.py import unittest from blog import BlogPost, Comment, InvalidCommentErrorclass TestBl…

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09;349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a;输入&#xff1a;nu…

SciPy库详解

SciPy 是一个用于数学、科学和工程计算的 Python 库&#xff0c;它建立在 NumPy 之上&#xff0c;提供了许多高效的算法和工具&#xff0c;用于解决各种科学计算问题。 CONTENT 1. 数值积分功能代码 2. 优化问题求解功能代码3. 线性代数运算功能代码 4. 信号处理功能代码 5. 插…

杰弗里·辛顿:深度学习教父

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 杰弗里辛顿&#xff1a;当坚持遇见突破&#xff0c;AI迎来新纪元 一、人物简介 杰弗…

BladeX单点登录与若依框架集成实现

1. 概述 本文档详细介绍了将BladeX认证系统与若依(RuoYi)框架集成的完整实现过程。集成采用OAuth2.0授权码流程&#xff0c;使用户能够通过BladeX账号直接登录若依系统&#xff0c;实现无缝单点登录体验。 2. 系统架构 2.1 总体架构 #mermaid-svg-YxdmBwBtzGqZHMme {font-fa…

初识Redis · set和zset

目录 前言&#xff1a; set 基本命令 交集并集差集 内部编码和应用场景 zset 基本命令 交集并集差集 内部编码和应用场景 应用场景&#xff08;AI生成&#xff09; 排行榜系统 应用背景 设计思路 热榜系统 应用背景 设计思路 热度计算方式 总结对比表 前言&a…

playwright 教程高级篇:掌握网页自动化与验证码处理等关键技术详解

Playwright 教程高级篇:掌握网页自动化与验证码处理等关键技术详解 本教程将带您一步步学习如何使用 Playwright——一个强大的浏览器自动化工具,来完成网页任务,例如提交链接并处理旋转验证码。我们将按照典型的自动化流程顺序,从启动浏览器到关闭浏览器,详细讲解每个步骤…

数据结构(完)

树 二叉树 构建二叉树 int value;Node left;Node right;public Node(int val) {valueval;} 节点的添加 Node rootnull;public void insert(int num) {Node nodenew Node(num);if(rootnull) {rootnode;return;}Node index root;while(true) {//插入的节点值小if(index.value&g…

FastAPI与SQLAlchemy数据库集成与CRUD操作

title: FastAPI与SQLAlchemy数据库集成与CRUD操作 date: 2025/04/16 09:50:57 updated: 2025/04/16 09:50:57 author: cmdragon excerpt: FastAPI与SQLAlchemy集成基础包括环境准备、数据库连接配置和模型定义。CRUD操作通过数据访问层封装和路由层实现,确保线程安全和事务…

一个基于Django的写字楼管理系统实现方案

一个基于Django的写字楼管理系统实现方案 用户现在需要我用Django来编写一个写字楼管理系统的Web版本&#xff0c;要求包括增删改查写字楼的HTML页面&#xff0c;视频管理功能&#xff0c;本地化部署&#xff0c;以及人员权限管理&#xff0c;包含完整的代码结构和功能实现&am…

mongodb在window10中创建副本集的方法,以及node.js连接副本集的方法

创建Mongodb的副本集最好是新建一个文件夹&#xff0c;如D:/data&#xff0c;不要在mongodb安装文件夹里面创建副本集&#xff0c;虽然这样也可以&#xff0c;但是容易造成误操作或路径混乱&#xff1b;在新建文件夹里与现有 MongoDB 数据隔离&#xff0c;避免误操作影响原有数…

Maven 多仓库与镜像配置全攻略:从原理到企业级实践

Maven 多仓库与镜像配置全攻略&#xff1a;从原理到企业级实践 一、核心概念&#xff1a;Repository 与 Mirror 的本质差异 在 Maven 依赖管理体系中&#xff0c;repository与mirror是构建可靠依赖解析链的两大核心组件&#xff0c;其核心区别如下&#xff1a; 1. Repositor…

STM32 四足机器人常见问题汇总

文章不介绍具体参数&#xff0c;有需求可去网上搜索。 特别声明&#xff1a;不论年龄&#xff0c;不看学历。既然你对这个领域的东西感兴趣&#xff0c;就应该不断培养自己提出问题、思考问题、探索答案的能力。 提出问题&#xff1a;提出问题时&#xff0c;应说明是哪款产品&a…