ad+硬件每日学习十个知识点(25)23.8.5(常见芯片类型、数字隔离芯片、IO扩展芯片TCAL6416)

文章目录

1.常见的芯片类型

答:

  1. 模数转换器(Analog-to-Digital Converter,ADC):模数转换器将模拟信号转换为数字信号,常用于测量和采集模拟传感器数据,并将其转换为数字形式供处理和分析。

  2. 数模转换器(Digital-to-Analog Converter,DAC):数模转换器将数字信号转换为模拟信号,常用于音频设备、通信系统和控制系统中,将数字数据转换为模拟信号输出。

  3. 时钟芯片(Clock Generator Chip):时钟芯片用于生成和分配设备或系统中所需的时钟信号,为各个部件和子系统提供同步和协调的时序。

  4. 存储器芯片(Memory Chip):存储器芯片用于数据存储,包括随机存储器(RAM)、只读存储器(ROM)、闪存(Flash Memory)等,可以存储计算机程序、数据、图像等信息。

  5. 放大器芯片(Amplifier Chip):放大器芯片可以放大信号,并用于信号处理和增强,例如音频放大器、运算放大器等。

  6. 接口芯片(Interface Chip):接口芯片用于不同设备、模块或系统间的连接和通信,例如USB接口芯片、以太网接口芯片等。

  7. 电源管理芯片(Power Management Chip):电源管理芯片用于管理和控制电源供应,包括电池管理、功率管理、电源转换等功能。

  8. 信号处理芯片(Signal Processing Chip):信号处理芯片用于数字信号处理、音频处理、图像处理等应用,例如数字信号处理器(DSP)和图形处理器(GPU)。

  9. 锁相环芯片(Phase-Locked Loop,PLL):锁相环芯片用于产生稳定的时钟信号和频率合成,常用于通信系统、数字逻辑电路等领域。

  10. 加密芯片(Cryptographic Chip):加密芯片用于数据加密和解密,提供安全的数据传输和存储,常用于网络安全和信息安全领域。

  11. 收发器芯片(Transceiver Chip):收发器芯片常用于数据通信和网络设备中,用于实现数据的发送和接收,如以太网收发器、无线通信收发器等。

  12. 传感器接口芯片(Sensor Interface Chip):传感器接口芯片用于连接和驱动各种传感器,提供与微处理器或微控制器的接口和通信功能,以便进行数据采集和处理。

  13. 触摸芯片(Touch Controller Chip):触摸芯片用于接收和解码触摸屏的输入信号,常用于触摸屏显示设备,如智能手机、平板电脑等。

  14. 温度传感器芯片(Temperature Sensor Chip):温度传感器芯片用于检测和测量环境的温度,并将温度转换为电信号输出,常用于温度监测和控制应用。

  15. 视频编解码芯片(Video Codec Chip):视频编解码芯片用于视频信号的压缩和解压缩,以实现视频的传输和存储,常用于视频监控、视频会议和多媒体设备。

  16. 边缘计算芯片(Edge Computing Chip):边缘计算芯片集成了处理器、存储器和加速器等组件,用于在接近数据源的边缘设备上进行实时数据处理和分析。

  17. 光电传感器芯片(Optical Sensor Chip):光电传感器芯片用于检测光线的强度、距离或颜色等信息,并将其转换为电信号输出,常用于光电开关、光传感器和光学测量应用。

  18. 处理器芯片(Processor Chip):处理器芯片是计算机的核心部件,负责执行计算和控制任务,例如中央处理器(CPU)、图形处理器(GPU)和协处理器等。

  19. 无线通信芯片(Wireless Communication Chip):无线通信芯片用于实现无线传输和通信功能,包括蓝牙芯片、Wi-Fi芯片、射频识别(RFID)芯片等。

  20. 混合信号芯片(Mixed-Signal Chip):混合信号芯片集成了模拟和数字电路,用于处理同时包含模拟和数字信号的应用,如音频信号处理器、数据转换器等。

2.数字隔离芯片有什么用?

答:数字隔离在电子系统中起到了重要的作用,以下是一些常见的原因和应用场景:

  1. 安全性:在一些应用中,数字隔离被用于提供电气隔离,将高电压或高功率部分与低电压或低功率部分隔离开来,以确保人员和设备的安全。例如,在测量高压电路或工业自动化中,数字隔离可防止高电压泄漏或干扰传输到低电压电路中。

  2. 噪声隔离:电子设备中常常存在各种干扰源,如电磁干扰(EMI)和射频干扰(RFI)。通过数字隔离可以有效地隔离干扰信号,防止其传播到其他部分,从而保持信号的纯净性和准确性。

  3. 地位分离:在一些场景中,需要将电路间的地位进行分离,避免不同部分之间的电位差引起的问题。数字隔离器能够提供完全隔离的电气路径,实现地位分离并避免共地和接地环路引起的异常和损坏。

  4. 系统互联:在一些多个电源或不同电压电平的电子系统中,需要进行数据交换和通信。通过数字隔离,即使在不同电压和电气条件下,也能够实现可靠的数据传输和通信,保持数据的完整性和可靠性。

总之,数字隔离在提高系统可靠性、安全性和抗干扰能力方面具有重要作用。它可以保护设备和人员免受高电压、干扰和地位问题的影响,同时实现有效的数据传输和通信。

3.I2C的I/O扩展芯片说明

答:
https://www.mouser.cn/ProductDetail/Texas-Instruments/TCAL6416RTWR?qs=sGAEpiMZZMuFG5L82ZqpsrdlMmcWFzSBd4mBuuuHb0AyggEmGTbxsQ%3D%3D

I/O扩展芯片,主要就是内部配置了各种协议,比如I2C、SPI、CAN、one wire等,然后接收到数据之后,通过接口转出去,也相当于把串行数据转换成立并行数据。

这里,我找到了一个I2C协议的16位I/O扩展芯片,TCAL6416,是TI的,cpu控制器使用I2C协议通过SDA和SCL向TCAL6416芯片传输数据。

INT引脚是TCAL6416芯片的一个输出引脚,用于指示系统控制器输入端口的状态是否发生了变化。当任何一个输入端口的状态发生变化时,INT引脚会被激活,向系统控制器发出中断信号,以通知系统控制器输入状态的变化。通过连接INT引脚到处理器的中断输入引脚,芯片可以在不通过I2C总线通信的情况下,向处理器传递输入端口的变化信息。

右侧的目标设备是通过P0 ~ P7与P10 ~ P17,进行数据传输,传输的方式是通过寄存器配置。(注意,没有P8、P9,所以是16位I/O扩展)

4.16位I/O扩展芯片TCAL6416的features、applications、description

答:主要就是介绍了该芯片有三种工作模式standard、fast、fast plus,然后介绍了各个引脚功能和电压、电流,工作频率。

5.TCAL6416的引脚功能

答:

6.TCAL6416的电气特性

答:极限值、ESD值、推荐工作值、热值信息、在测试条件下工作的电气参数、复位信号和PORT的时间需求、I2C总线通信的时间需求、开关特性。







7.TCAL6416的典型特性(图像)

答:



8.TCAL6416的参数测量信息(各个通信引脚的时间参数测量)(I2C的SDA、中断的INT、PORT、RESET)

答:



9.TCAL6416的细节描述

答:

TCAL6416支持在广泛的供电电压范围内进行电压转换。这使得该设备可以与I2C侧的现代处理器进行接口连接,因为处理器的供电电平较低以节省功耗。与处理器的降压电源相反,一些PCB组件(如LED)仍然需要较高电压的电源。

VCCI引脚是I2C总线的电源,因此连接到SCL、SDA和RESET引脚的上拉电阻应该连接到VCCI。

INT输出具有开漏结构,并且根据应用需要需要外部上拉电阻连接到VCCP或VCCI。

VCCP引脚是P端口的电源。如果在任何P端口上使用外部上拉电阻,或者任何P端口驱动LED,则连接到P00-P07和P10-P17的电阻或LED应该连接到VCCP。

配置为输出的设备P端口具有直接驱动LED的能力,但是电流必须通过额外的电阻进行外部限制。

TCAL6416的数字核心由8位数据寄存器组成,允许用户配置I/O端口的特性。在上电或复位后,I/O被配置为输入。然而,系统控制器可以通过写入配置寄存器将I/O配置为输入或输出。每个输入或输出的数据保存在相应的输入端口或输出端口寄存器中。==输入端口寄存器的极性可以通过极性反转寄存器进行反转。==所有寄存器都可以由系统控制器读取。

此外,TCAL6416还具有敏捷I/O功能,专门用于增强I/O端口。敏捷I/O功能和寄存器包括可编程的输出驱动强度、可编程的上拉和下拉电阻、锁存输入、可屏蔽中断、中断状态寄存器以及可编程的开漏或推挽输出。

这些配置寄存器通过增加灵活性,允许用户优化设计以实现功耗、速度和电磁干扰的最佳性能,从而改善了I/O。设备的其他特性包括当任何输入端口状态与其对应的输入端口寄存器状态不同时,INT引脚会产生中断信号,用于向系统控制器指示输入状态已更改。

INT引脚可以连接到处理器的中断输入。通过在此线路上发送中断信号,设备可以向处理器通知远程I/O端口是否有传入数据,而无需通过I2C总线进行通信。因此,设备可以保持简单的响应器设备。在超时或其他不正常操作的情况下,系统控制器可以通过将RESET输入引脚置低或循环VCCP引脚的电源来对设备进行复位(POR)。复位将寄存器恢复到默认状态,并初始化I2C/SMBus状态机。RESET功能和POR会导致相同的复位/初始化操作,但RESET功能无需关闭设备电源即可执行。一个硬件引脚(ADDR)可以用于编程和变化固定的I2C地址,允许两个设备共享相同的I2C总线或SMBus。


可供选择的两端供电电压。

8.3.2 I/O端口

当将I/O配置为输入时,FETs Q1和Q2关闭(参见图8-2),从而创建高阻抗输入。输入电压可以升高到最大3.6V,高于供电电压。如果将I/O配置为输出,根据输出端口寄存器的状态,Q1或Q2将被启用。在这种情况下,I/O引脚与供电或GND之间存在低阻抗路径。应用于此I/O引脚的外部电压不应超过推荐的水平以确保正常操作。

8.3.3 可调输出驱动强度

输出驱动强度寄存器允许用户控制GPIO的驱动电平。每个GPIO可以独立配置为四个可能的电流水平之一。通过编程这些位,用户可以改变驱动I/O垫的晶体管对或"指头"的数量。图8-3显示了一个简化的输出级。垫的行为受到配置寄存器、输出端口数据和电流控制寄存器的影响。当将电流控制寄存器的位编程为01b时,只有两个指头处于活动状态,将电流驱动能力降低了50%。

减小电流驱动能力可能有助于减少系统噪音。当输出切换时,存在与输出驱动选择相关的峰值电流。这个峰值电流通过供电和GND封装电感产生噪音(一些辐射噪音,但更重要的是同时切换噪音(SSN))。换句话说,同时切换多个输出会产生地线和供电噪音。通过输出驱动强度寄存器的输出驱动强度控制,用户可以在不需要额外外部元件的情况下解决SSN问题。


8.3.4 中断输出(INT)

在输入模式下,只要中断功能未屏蔽,端口输入的任何上升或下降沿都会产生中断。经过时间tiv后,INT信号有效。当端口上的数据恢复到原始设置或从生成中断的端口读取数据时,中断电路将被复位。复位发生在SCL信号上升沿后的确认(ACK)位处于读取模式中。在ACK时钟脉冲期间发生的中断可能会丢失(或非常短),因为在此脉冲期间中断被复位。复位后的每次I/O更改都会被检测到并作为INT传输。从其他设备读取或写入不会影响中断电路,而配置为输出的引脚不会引发中断。如果I/O从输出切换为输入,如果引脚的状态与输入端口寄存器的内容不匹配,可能会导致错误的中断发生。INT输出具有开漏结构,并且根据应用需要,需要外部上拉电阻连接到VCCP或VCCI的电压源上,以提供中断信息所需的电压。

8.3.5 复位输入(RESET)

可以通过将RESET引脚保持低电平至少tW时间来初始化系统,同时保持VCCP供电在其工作电平上。通过将RESET引脚保持低电平至少tW时间,可以进行复位。一旦RESET为低电平(0),TCAL6416寄存器和I2C/SMBus状态机将被更改为默认状态。当RESET为高电平(1)时,可以通过外部或控制器来改变P端口的I/O电平。如果没有使用主动连接,则此输入需要一个上拉电阻连接到VCCI。当RESET切换时,输入端口寄存器将更新以反映GPIO引脚的状态。

9.TCAL6416的软件编程命令

答:

8.3.6 软件复位调用

软件复位调用是从I2C总线上的控制器发送的命令,指示所有支持该命令的设备将被复位到上电默认状态。为了使其按预期工作,I2C总线必须正常工作,没有设备挂在总线上。

软件复位调用的定义如下步骤:

  1. I2C总线控制器发送起始条件。
  2. 使用保留的广播调用I2C总线地址"0000 0000",R/W位设置为0。发送的字节为0x00。
  3. 支持广播调用功能的任何设备都会应答。如果R/W位设置为1(读取),设备将不应答。
  4. 一旦广播调用地址被确认,控制器只发送一个字节的数据,等于0x06。如果数据字节是其他值,设备将不应答或复位。如果发送了多个字节,将不会应答更多字节,并且设备将忽略I2C消息,认为其无效。
  5. 在发送了1个字节的数据(0x06)之后,控制器发送停止条件来结束软件复位序列。设备将忽略重复的起始条件,不进行复位。
  6. 完成上述步骤后,设备将执行复位操作。这将清除所有寄存器的值,恢复到上电默认状态。

8.4 设备功能模式

8.4.1 上电复位

当将电源(从0V)应用于VCCP时,内部上电复位将使TCAL6416处于复位状态,直到电源达到VPO R。此时,复位条件被释放,TCAL6416寄存器和I2C/SMBus状态机初始化为默认状态。之后,必须将VCCP降低到低于VPO RF,并恢复到工作电压以进行电源复位循环。

8.5 编程

8.5.1 I2C接口

双向I2C总线由串行时钟(SCL)和串行数据(SDA)线组成。

当连接到设备的输出级时,这两条线必须通过上拉电阻连接到正电源。只有在总线空闲时才能启动数据传输。

与该设备的I2C通信是由控制器发送起始条件来启动的,即在SCL输入为高电平时,通过SDA输入/输出的高至低的转换(参见图8-4)。

在起始条件之后,发送设备地址字节,最高有效位(MSB)先发送,包括数据方向位(R/W)。

在接收到有效的地址字节后,该设备会以应答(ACK)的形式响应,即在ACK相关的时钟脉冲高电平期间,SDA输入/输出为低电平。

响应设备的地址输入在起始条件和停止条件之间不能改变。 在I2C总线上,每个时钟脉冲只传输一个数据位。在每个字节的后面跟随一个ACK位。在接收器发送ACK位之前,发送器必须释放SDA线。应答的设备必须在接收到每个字节后拉低SDA线,在ACK时钟脉冲期间,使SDA线在ACK相关的时钟脉冲高电平期间保持稳定低电平(参见图8-6)。

当寻址到接收器时,它必须在接收到每个字节后生成一个ACK。同样地,控制器在接收到来自响应器发送器的每个字节后必须生成一个ACK。必须满足设置时间和保持时间以确保正常操作。

控制器接收器通过在最后一个字节从响应器时钟出来后不生成应答(NACK)来向响应器发送器发出数据结束的信号。控制器接收器通过保持SDA线为高电平来实现。在这种情况下,发送器必须释放数据线,以使控制器能够生成停止条件。


10.TCAL6416的寄存器映射

答:

在地址字节成功确认后,总线控制器发送一个命令字节,该字节存储在TCAL6416的控制寄存器中。该数据字节的低位反映了受影响的内部寄存器(输入、输出、极性反转或配置)。命令字节的第6位与命令字节的低三位一起用于指示设备的扩展功能(Agile IO)。命令字节仅在写传输期间发送。一旦发送了新的命令,被寻址的寄存器将继续通过读取进行访问,直到发送新的命令字节。在上电、硬件复位或软件复位时,控制寄存器默认为00h。

输入端口寄存器(寄存器0和1)反映了引脚的输入逻辑电平,无论该引脚是否由配置寄存器定义为输入或输出。输入端口寄存器只能读取。对这些寄存器的写操作没有效果。默认值(X)由外部应用的逻辑电平确定。在进行读取操作之前,会发送一个带有命令字节的写传输,以向I2C设备指示接下来将访问输入端口寄存器。

输出端口寄存器(寄存器2和3)显示了由配置寄存器定义为输出的引脚的输出逻辑电平。这些寄存器中的位值对于定义为输入的引脚没有影响。反过来,从这些寄存器中读取的值反映了控制输出选择的触发器中的值,而不是实际的引脚值。

极性反转寄存器(寄存器4和5)允许对由配置寄存器定义为输入的引脚进行极性反转。如果这些寄存器中的某个位被设置(写入1),则相应的端口引脚极性将被反转。如果这些寄存器中的某个位被清除(写入0),则相应的端口引脚的原始极性将被保留。

配置寄存器(寄存器6和7)用于配置I/O引脚的方向。如果这些寄存器中的某个位被设置为1,则相应的端口引脚将被启用为带有高阻抗输出驱动器的输入。如果这些寄存器中的某个位被清除为0,则相应的端口引脚将被启用为输出。将一个端口从输入配置更改为输出配置将导致与该端口相关联的任何中断被清除。

输出驱动强度寄存器控制P端口GPIO缓冲区的输出驱动电平。每个GPIO可以通过两个寄存器控制位独立配置为所需的输出电流级别。例如,端口P07由寄存器41(位7和6)控制,端口P06由寄存器41(位5和4)控制,依此类推。GPIO的输出驱动电平编程为00b = 0.25x驱动强度,01b = 0.5x驱动强度,10b = 0.75x驱动强度,或11b = 1x以实现完全驱动强度能力。有关更多详细信息,请参阅第9.2节。

输入锁存寄存器启用和禁用P端口GPIO引脚的输入锁存功能。这些寄存器仅在引脚配置为输入端口时有效。当输入锁存寄存器位为0时,相应的输入引脚状态不被锁存。相应输入引脚的状态变化会生成中断。读取输入寄存器会清除中断。如果输入在读取输入端口寄存器之前返回到初始逻辑状态,则中断被清除。当输入锁存寄存器位设置为1时,相应的输入引脚状态被锁存。输入状态的变化会生成中断,并且输入逻辑值被加载到输入端口寄存器(寄存器0和1)的相应位中。读取输入端口寄存器会清除中断。然而,如果输入引脚在读取输入端口寄存器之前返回到初始逻辑状态,则中断不会被清除,并且输入端口寄存器的相应位保持引发中断的逻辑值。例如,如果P04输入处于逻辑0状态,然后转换为逻辑1状态,然后返回到逻辑0状态,输入端口0寄存器将捕获此变化并生成中断(如果未屏蔽)。当对输入端口0寄存器进行读取时,中断被清除,假设没有其他输入发生变化,并且输入端口0寄存器的第4位将读取为'1'。下一次读取输入端口寄存器的第4位应该读取为'0'。当非锁存输入与锁存输入同时切换状态并返回到其原始状态时,中断保持活动状态。读取输入寄存器仅反映锁存输入的状态变化,并且还会清除中断。如果输入锁存寄存器从锁存配置更改为非锁存配置,如果输入逻辑值返回到其原始状态,则中断将被清除。如果将输入引脚从锁存更改为非锁存输入,从输入端口寄存器读取将反映当前端口的逻辑电平。如果将输入引脚从非锁存更改为锁存输入,从输入寄存器读取将反映锁存的逻辑电平。

上拉/下拉使能寄存器允许用户在GPIO引脚上启用或禁用上拉/下拉电阻。将位设置为逻辑1可以启用上拉/下拉电阻的选择。将位设置为逻辑0会断开GPIO引脚上的上拉/下拉电阻。当GPIO引脚配置为输出时,电阻将被禁用。请参阅第7.4.11节。使用上拉/下拉选择寄存器选择上拉或下拉电阻。

上拉/下拉选择寄存器允许用户通过编程相应的寄存器位来配置每个GPIO引脚具有上拉或下拉电阻。将位设置为逻辑1会选择为该GPIO引脚选择一个100 kΩ的上拉电阻。将位设置为逻辑0会选择为该GPIO引脚选择一个100 kΩ的下拉电阻。如果通过寄存器46和47禁用了上拉/下拉功能,则对这些寄存器的写入对GPIO引脚没有影响。

中断屏蔽寄存器在上电时默认为逻辑1,禁用系统启动期间的中断。通过将相应的屏蔽位设置为逻辑0可以启用中断。如果输入状态发生变化,并且中断屏蔽寄存器中的相应位设置为1,则中断被屏蔽,中断引脚不会被触发。如果中断屏蔽寄存器中的相应位设置为0,则中断引脚将被触发。当输入状态发生变化并且产生的中断被屏蔽时,将中断屏蔽寄存器位设置为0会导致中断引脚被触发。如果已经是中断源的输入的中断屏蔽位设置为1,则中断引脚将被取消触发。

中断状态寄存器是只读寄存器,用于识别中断的来源。当读取时,逻辑1表示相应的输入引脚是中断的来源。逻辑0表示输入引脚不是中断的来源。当中断屏蔽寄存器中的相应位设置为1(屏蔽)时,中断状态位将返回逻辑0。

输出端口配置寄存器选择逐个端口的推挽或开漏I/O模式。逻辑0将I/O配置为推挽模式(Q1和Q2处于活动状态,参见图8-2)。逻辑1将I/O配置为开漏模式(Q1被禁用,Q2处于活动状态),建议的命令顺序是在配置寄存器(06和07)将端口引脚设置为输出之前,先编程该寄存器(4F)。ODEN0配置端口0X,ODEN1配置端口1X。

11.根据寄存器映射,cpu写和读命令的说明

答:

11.1.写

通过发送设备地址并将最低有效位(LSB)设置为逻辑0,将数据传输到TCAL6416(请参见设备地址的图8-7)。在地址之后发送命令字节,确定接收命令字节后的数据的寄存器。在一次写入传输中发送的数据字节数没有限制。

TCAL6416内的22个寄存器被配置为11个寄存器对。这11个对是输入端口、输出端口、极性反转、配置、输出驱动强度(两个16位寄存器)、输入锁存器、上拉/下拉使能、上拉/下拉选择、中断屏蔽和中断状态寄存器。在向一个寄存器发送数据后,下一个数据字节将发送到对中的另一个寄存器(请参见图8-9和图8-10)。

例如,如果第一个字节发送到输出端口1(寄存器3),则下一个字节将存储在输出端口0(寄存器2)中。在一次写入传输中发送的数据字节数没有限制。通过这种方式,每个8位寄存器对可以独立于其他寄存器进行更新。

11.2.读

总线控制器首先必须发送TCAL6416的地址,最低有效位设置为逻辑0(请参见设备地址的图8-7)。地址之后发送命令字节,确定要访问的寄存器。在重新启动后,再次发送设备地址,但这次最低有效位设置为逻辑1。

TCAL6416发送由命令字节定义的寄存器中的数据(请参见图8-11和图8-12)。数据在ACK时钟脉冲的上升沿时被时钟进入寄存器。读取第一个字节后,可以继续读取其他字节,但数据现在反映了对中的另一个寄存器中的信息。例如,如果读取输入端口1,下一个字节将读取输入端口0。在一次读取传输中,接收的数据字节数没有限制,但在接收到最后一个字节时,总线控制器不能确认数据。在随后的重新启动后,命令字节包含要读取的对中的下一个寄存器的值。例如,在重新启动之前最后读取的是输入端口1,重新启动后读取的寄存器是输入端口0。


12.设计推荐案例

答:







13.PCB的layout推荐

14.PCB封装

答:


相关推荐
A懿轩A44 分钟前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
南宫生9 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__9 小时前
Web APIs学习 (操作DOM BOM)
学习
数据的世界0111 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐11 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO13 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A14 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒14 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash314 小时前
提升专业素养的实用指南
学习·职场和发展
1 9 J15 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法