DCA1000EVM+IWR6843+mmWave数据采集

DCA1000EVM+IWR6843+mmWave数据采集

一、mmWave Studio

1、软件下载安装

(1)软件下载

mmWave Studio是Ti毫米波传感器的工具集

官网德州仪器 德州仪器 直接搜索mmWave Studio 选择第一个下载即可

一定要先注册,不然下载了也要注册,个别邮箱注册接收不到验证码,对应资源在附件

image-20231206105131186

文件

(2)软件安装

安装期间,一般选择默认路径,避免更改路径导致关联问题

安装后,打开mmWave软件image-20231206163959394,打开view的output显示调试页面

报错“Matlab Runtime Engine is not installed”,下载matlab的runtime软件

image-20231206105520437

MCR_R2015aSP1_win32_installer.exe下载链接

image-20231206163845123

安装后重启mmWave就可以成果打开了,打开界面如下

image-20231206105845816

二、采集硬件

1、DCA1000EVM开发板

DCA1000是对应的数据采集卡,适用于毫米波雷达传感器的EVM高速接口,从雷达的LVD接口送出的ADC数据

参考资料: DCA1000EVMDataCaptureCard,**DCA1000EVM使用指南

image-20231206110159265

2、IWR6843ISK

官方资料

IWR6843 是一个集成的单芯片调频连续波(FMCW)雷达传感器

四收三发,IWR6843 在 60 至 64GHz 的 4GHz 带宽下运行,最大输出功率为 10dBm,分贝毫瓦;IWR6843ISK 的天线增益约为7dBi,(10dBi就是代表增益10lg(10)))RX的噪声系数-14db,1MHz时的相位噪声92dbc/hz

image-20231206164041133

image-20231206164106885

(1) 正面图示

正面的接口以及按键示意

image-20231116092959286

LED显示

image-20231116093239295

编号颜色使用说明
D3橙色电源正常指示PGOOD,亮起表示电压轨在限制范围内
D4绿色USB枚举LED枚举USB时亮起
D5绿色复位按下时切换
D6绿色5V指示灯表示使用5V电源
D7绿色GPIO2连接到GPIO2,当GPIO设置为输出的时候使用
(2) SOP模式设置
模式123456
刷写模式onoffononoff-随意
功能模式offoffononoff-随意
DCA1000EVM模式offononoffoff-随意
mmWAVEEICBOOSToffoffoffoffon-随意

3、MMWAVEICBOOST

MMWAVEICBOOST 毫米波雷达承载卡扩展了 60GHz 毫米波评估模块的功能,该板通过TI 的 Code Composers 兼容调试器(ccs)提供高级软件开发、调试功能(例如跟踪和单步执行)。板载 Launchpad 接口可与 TI BoosterPack 兼容的硬件配对,以提供更多的传感器和无线连接。

MMWAVEICBOOST 具有可实现扩展连接的 LaunchPad™ 开发套件接口,例如以太网供电 (PoE)、Wi-Fi®、Sub-1 GHz 等。

特性

模块化连接,可连接到毫米波天线插件模块

BoosterPack插件模块接口

通过板载XDS110 进行调试和仿真

用于采集原始ADC数据的 DCA1000EVM 接口

兼容mmWave Studio (MMWAVE-STUDIO) 工具,包括毫米波演示可视化工具 (MMWAVE-DEMO-VISUALIZER)

image-20231123181508831

(1)模式设置

image-20231123182017633

(2)跳线、开关和LED

毫米波传感器装置可根据 SOP 线的状态设置为在三种不同模式下工作。只有在毫米波传感器器件启动过程中,才会对这些线路进行电源感应。 闭合跳线表示进入毫米波传感器器件的SOP信号的状态 1,断开跳线表示状态 0

image-20231124093449846

image-20231124093643169

image-20231124094850742

JTAG 接口:通过外部 XDS 仿真器进行调试和开发。要使用此接口,必须断开连接到板载仿真器(XDS110)的 JTAG线;此操作是通过 S1 完成的(DIP 开关的第 12 个位置应为打开 状态),同时还必须断开 MIPI 60 引脚连接器上的外部仿真器

CAN 连接器: J1 和 J2 连接器可分别提供来自板载 CAND-FD 收发器(TCAN1042HGVDRQ1)和 CAN 收发器 (SN65HVDA540QDR)的 CAN_L 和 CAN_H 信号,如 图 2-22 所示。与 SPI 接口信号多路复用后,这些信号 将连接到 CAN 总线;必须选择两条路径中的一条。通过关闭开关 S1(将开关第一个位置设为 ON)选择两个 CAN

image-20231124094911004

问题:232连接问题

image-20231206164137737

问题:FPGA连接问题,

[11:23:53]  [RadarAPI]: ar1.CaptureCardConfig_EthInit("192.168.33.30", "192.168.33.180", "12:34:56:78:90:12", 4096, 4098)
[11:23:53]  [RadarAPI]: ar1.CaptureCardConfig_Mode(1, 2, 1, 2, 3, 30)
[11:23:53]  [RadarAPI]: ar1.CaptureCardConfig_PacketDelay(25)
[11:23:53]  [RadarAPI]: Sending fpga command to DCA1000
[11:24:03]  [RadarAPI]: 
[11:24:03]  FPGA Configuration : 
[11:24:03]  Timeout Error! System disconnected
[11:24:03]  [RadarAPI]: Sending record command to DCA1000
[11:24:13]  [RadarAPI]: 
[11:24:13]  Configure Record : 
[11:24:13]  Timeout Error! System disconnected
[11:24:13]  [RadarAPI]: ar1.GetCaptureCardFPGAVersion()
[11:24:13]  [RadarAPI]: Sending fpga_version command to DCA1000
[11:24:23]  [RadarAPI]: 
[11:24:23]  
[11:24:23]  Unable to read FPGA Version. [error -5]

解决办法,重新刷新Fpga的固件flash,或者是关闭防火墙

image-20231206164204959

**设置电脑的IP地址:**DCA1000的数据使用UDP数据包形式通过以太网进行传输,DCA1000上的FPGA已编程,目标地址为192.168.33.30。因此,我们必须将目标PC配置为与FPGA的预期目标地址匹配的静态IP地址,以便从EVM接收数据

三、mmWave数据采集

1、设备连接

硬件连接图如下,其中需要注意的是DCA的mico线需要连接RADAR_FDTI而不是FPGA_JTAG

image-20231206164230542

image-20231206164247540

(1)电源设置

⑨是电源控制按钮,选择供电方式,成功供电后,④会点亮。

  • DC_JACK_5V_IN使用5v直流的适配器供电(这里比较坑,这个设备卖的时候需要单独购买适配器)
  • RADAR_5V_IN使用和DCA1000EAM连接的IWR6843ISK系列的毫米波传感器EVM板供电,不需要外接5V电源(尝试过,但是后续FPGA中会存在问题,乖乖使用适配器输入吧)
(2)模式设置

SW1 ⑦

设置为110

switch123描述
LVDS 12-bit modeonoffoff12位数据模式
LVDS 14-bit modeoffonoff14位数据模式
LVDS 16-bit modeoffoffon16位数据模式

SW2 ⑧

SW2处设置为00001000

switchusage说明
1LVDS_CAPTURE
1DMM_PLAYBACK
2SD_STORE
2ETH_STREAM
31243_MODE
3AR1642_MODE
4RAW_MODE
4DATA_MODE
6USER_SW1
6GND
7USER_SW2
7GND
8USER_SW
8GND

**SW3⑥ **

IWR6843ISK设置的为01100X

按键

按键usage说明
10PROGRAMN当SPI闪存被重新写入时,按下按钮从SPI闪存对FPGA进行编程
11Capture start当DCA1000处于硬件配置模式时,按下按钮开始启动数据传输,再按下停止数据传输
12SPARE_GPIO_SW未来使用
13FPGA_RST重置FPGA
(3)串口检查

安装mmWave studio时会安装FTDI驱动,如果驱动失败,手动安装mmwave_studio\ftdi下的驱动

驱动连接时,串口连接图如下,分别是DCA端口,和雷达模块端口

image-20231206154048947

如果没有Silicon的雷达模块端口的话,可以考虑一下SOP模式,对应的是011000;

image-20231206154130204

(4)网络连接

DCA1000的数据使用UDP数据包形式通过以太网进行传输,因此我们需要将PC设置为静态IP地址。

设置以太网的IIPV4的IP地址为192.168.33.30;子网掩码为255.255.255.0;

image-20231206154222539

image-20231206154245792

需要注意的是,正常使用5V适配器供电,这里以太网的备注应该是“未识别的网络”而不是"“网络电缆被拔出”"

2、Connection

mmwave最好使用2.1.1版本,3.0版本的release好像不支持6843

打开mmWave软件,当驱动和软件安装正常,界面显示如下,硬件连接正常的话,会显示连接了一个设备,对应FTDI连接

image-20231206155123947

软件对应操作顺序按照蓝色指示进行

image-20231206155317133

(1) Reset control

直接set

(2) RS232 operations

选择DCA的Enhanced COM端口;波特率选择115200,点击连接,连接之后image-20231206164334223

通过RS232接口提供雷达设备与PC连接,支持固件加载

设备管理器中 enhanced com port(用户端口),standard com port(数据端口),COM Port选择用户端口,我这里是COM10

image-20231103165148447

(3)operating Frequency

工作频率使用的DCA1000是60Hz

(4)Device Variant

设备类型,使用的IWR6843ISK

(5)BSS FW

下载IWR固件到芯片(对应射频模块软件补丁);对应路径为

D:\ti\mmwave_studio_02_01_01_00\rf_eval_firmware\radarss\xwr68xx_masterss.bin
(6)MSS FW

下载IWR固件到芯片(通信相关的MSS代码,即R4F的代码);对应路径为

D:\ti\mmwave_studio_02_01_01_00\rf_eval_firmware\masterss\xwr68xx_masterss.bin
(7)SPI Connect

SPI连接;mmWave雷达设备使用SPI接口与外部主机处理器进行通信;

如果SPI连接不正常,可以通过使用Uniflash擦除FPGA的闪存

(8)RF Power-UP

射频通电,用户可以通过SPI通信接口向设备发送命令,并评估射频结果

以上操作最好可以将output同时查看,以便于检查输出结果;如果操作正常,界面现实将如下所示

image-20231206155755331

3、StaticConfig

静态配置,配置射频基本参数

image-20231103171935968

image-20231206160025930

(1) Channel Config

使用天性以及级联模式

image-20231206162127743

(2) ADC Config

ADC采样位数、ADC采样输出格式、IQ采样选择

直接set

(3) Advanced Configuration

直接set

(4) LP Mode

选择数字模拟信号输入模式

  • Regular ADC:正常模式
  • Low Power ADC:低功耗模式,时钟速率降低一半
(5) RF Init

直接执行

3、DataConfig

数据配置选项

image-20231103175324139

image-20231103180318386

4、SencorConfig

传感器配置,对应的关键参数即

profilecfg、chripcfg、framecfg

image-20231206162908635

image-20231206162942704

操作流程

image-20231206163017706

第五步的SetUp,DCA1000,在连接成功的之后,需要确认确实读取到了FPGA的版本号码,在得到了FPGA版本之后才可以采集到数据

image-20231106100622256

image-20231106100203824

正常执行时,获取结果调试记录,方便对比操作问题。

GM: Constructor
GM: Wed Dec 06 15:50:50 2023
RSTD.Transmit("/Settings")
[15:50:51]  
[15:50:51]  ### Running Startup script: "D:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\Scripts\Startup.lua" ###
[15:50:51]  RSTD.SetAndTransmit ("/Settings/Scripter/Display DateTime" , "1")
[15:50:51]  RSTD.SetAndTransmit ("/Settings/Scripter/DateTime Format" , "HH:mm:ss")
[15:50:51]  Scripter ignored: Attempt to UnBuild() again or before Build.
[15:50:51]  RSTD.SetVar ("/Settings/Clients/Client 0/Dll" , "D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\Clients\\\\LabClient.dll")
[15:50:51]  RSTD.SetVar ("/Settings/Clients/Client 0/Use" , "TRUE")
[15:50:51]  RSTD.SetVar ("/Settings/Clients/Client 1/Use" , "FALSE")
[15:50:51]  RSTD.SetVar ("/Settings/Clients/Client 2/Use" , "FALSE")
[15:50:51]  RSTD.SetVar ("/Settings/Clients/Client 3/Use" , "FALSE")
[15:50:51]  RSTD.SetVar ("/Settings/Clients/Client 4/Use" , "FALSE")
[15:50:51]  RSTD.SetVar ("/Settings/AL Client/AL Dll" , "D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\RunTime\\SAL.dll")
[15:50:51]  RSTD.SetVar ("/Settings/Clients/Client 0/GuiDll" , "")
[15:50:51]  RSTD.SetVar ("/Settings/AutoUpdate/Enabled" , "TRUE")
[15:50:51]  RSTD.SetVar ("/Settings/AutoUpdate/Interval" , "1")
[15:50:51]  RSTD.SetVar ("/Settings/Monitors/UpdateDisplay" , "TRUE")
[15:50:51]  RSTD.SetVar ("/Settings/Monitors/OneClickStart" , "TRUE")
[15:50:51]  RSTD.SetVar ("/Settings/Automation/Automation Mode" , "false")
[15:50:51]  RSTD.Transmit("/")
[15:50:51]  RSTD.SaveSettings(): Settings saved to "C:\Users\mengzhe\AppData\Roaming\RSTD\config.xml"
[15:50:51]  RSTD.Build()
[15:50:51]  RSTD.SaveSettings(): Settings saved to "C:\Users\mengzhe\AppData\Roaming\RSTD\config.xml"
[15:50:51]  RSTD.Transmit("/")
[15:50:51]  RSTD.AL_Build()
[15:50:51]  RSTD.AL_LoadXml()
[15:50:51]  RSTD.Transmit("/")
[15:50:51]  RSTD.AL_Init()
[15:50:51]  RSTD.Clients_Build()
[15:50:51]  GM: Init
[15:50:51]  GM: Loaded 'D:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\Clients\\LabClient.dll'
[15:50:51]  GM: 1 Guest (s) init
[15:50:51]  GM: 1 Module(s) init
[15:50:51]  GM: 2 Tab   (s) init
[15:50:51]  RSTD.Client_LoadXml()
[15:50:52]  [RadarAPI]: ar1.selectRadarMode(0)
[15:50:52]  [RadarAPI]: Status: Passed
[15:50:52]  Matlab Runtime Engine is installed
[15:50:52]  [RadarAPI]: Starting Matlab Engine..
[15:50:59]  [RadarAPI]: Matlab Engine Started!
[15:51:01]  [RadarAPI]: ar1.selectCascadeMode(0)
[15:51:01]  [RadarAPI]: Status: Passed
[15:51:01]  [RadarAPI]: ar1.LoadSettings('C:\Users\mengzhe\AppData\Roaming\RSTD\ar1gui.ini')
[15:51:01]  TESTING = false
[15:51:01]  RstdNet: Port 2777: Listening..
[15:51:01]  
[15:51:01]  ***Script completed successfully.***
[15:51:07]  [RadarAPI]: Opening Gpio Control Port()
[15:51:07]  [RadarAPI]: Status: Passed
[15:51:08]  [RadarAPI]: Opening Board Control Port()
[15:51:08]  [RadarAPI]: Status: Passed
[15:51:09]  [RadarAPI]: ar1.FullReset()
[15:51:09]  [RadarAPI]: Status: Passed
[15:51:09]  [RadarAPI]: Closing Board Control Port()
[15:51:09]  [RadarAPI]: Status: Passed
[15:51:09]  [RadarAPI]: Closing Gpio Control Port()
[15:51:09]  [RadarAPI]: Status: Passed
[15:51:09]  [RadarAPI]: ar1.SOPControl(2)
[15:51:09]  [RadarAPI]: Status: Passed
[15:52:13]  [RadarAPI]: ar1.Connect(10,115200,1000)
[15:52:15]  [RadarAPI]: ar1.Calling_IsConnected()
[15:52:16]  [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:52:16]  [RadarAPI]: Status: Passed
[15:52:16]  [RadarAPI]: ar1.frequencyBandSelection("60G")
[15:52:16]  [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:52:16]  [RadarAPI]: Status: Passed
[15:52:16]  Device Status : IWR6843/QM/SOP:2/ES:2
[15:52:16]  [RadarAPI]: ar1.SaveSettings('C:\Users\mengzhe\AppData\Roaming\RSTD\ar1gui.ini')
[15:53:57]  [RadarAPI]: ar1.DownloadBSSFw("D:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\radarss\\xwr68xx_radarss.bin")
[15:53:57]  [RadarAPI]: Downloading BSS ROM RPRC Binary..
[15:54:45]  [RadarAPI]: ar1.GetBSSFwVersion()
[15:54:45]  [RadarAPI]: BSSFwVersion:(06.02.01.05 (09/03/20))
[15:55:03]  [RadarAPI]: ar1.DownloadMSSFw("D:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\masterss\\xwr68xx_masterss.bin")
[15:55:03]  [RadarAPI]: Downloading MSS RPRC Binary..
[15:55:22]  [RadarAPI]: ar1.GetMSSFwVersion()
[15:55:22]  [RadarAPI]: MSSFwVersion:(02.00.00.03 (27/08/19))
[15:55:26]  [RadarAPI]: ar1.PowerOn(0, 1000, 0, 0)
[15:55:26]  MSS power up done async event received!
[15:55:26]  [RadarAPI]: Status: Passed
[15:57:39]  [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:57:39]  [RadarAPI]: Status: Passed
[15:57:39]  [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:57:39]  [RadarAPI]: Status: Passed
[15:57:39]  Device Status : IWR6843/QM/SOP:2/ES:2
[15:57:39]  [RadarAPI]: ar1.RfEnable()
[15:57:39]  BSS power up done async event received!
[15:57:39]  [RadarAPI]: Status: Passed
[15:57:39]  [RadarAPI]: ar1.GetMSSFwVersion()
[15:57:39]  [RadarAPI]: MSSFwVersion:(02.00.00.03 (27/08/19))
[15:57:40]  [RadarAPI]: ar1.GetBSSFwVersion()
[15:57:40]  [RadarAPI]: BSSFwVersion:(06.02.01.05 (09/03/20))
[15:58:47]  [RadarAPI]: ar1.ChanNAdcConfig(1, 1, 1, 1, 1, 1, 1, 2, 1, 0)
[15:58:47]  [RadarAPI]: Status: Passed
[15:58:52]  [RadarAPI]: ar1.LPModConfig(0, 0)
[15:58:52]  [RadarAPI]: Status: Passed
[15:59:01]  [RadarAPI]: ar1.SetMiscConfig(0)
[15:59:01]  [RadarAPI]: Status: Passed
[15:59:04]  [RadarAPI]: ar1.RfInit()
[15:59:04]  RF Init async event received!
[15:59:04]  [RadarAPI]: Time stamp, Temperture: 84875,46; APLL Status, Update: 1, 0; SynthVCO1 Status, Update: 1, 1; SynthVCO2 Status, Update: 1, 1; LODist Status, Update: 1, 1; RxADCDC Status, Update: 1, 1; HPFcutoff Status, Update: 1, 1; LPFcutoff Status, Update: 1, 1; PeakDetector Status, Update: 1, 1; TxPower Status, Update: 1, 1; RxGain Status, Update: 1, 1; TxPhase Status, Update: 1, 1; RxIQMM Status, Update: 1, 1; 
[15:59:04]  [RadarAPI]: Status: Passed
[16:25:42]  [RadarAPI]: ar1.DataPathConfig(513, 1216644097, 0)
[16:25:42]  [RadarAPI]: Status: Passed
[16:25:52]  [RadarAPI]: ar1.LvdsClkConfig(1, 1)
[16:25:52]  [RadarAPI]: Status: Passed
[16:26:05]  [RadarAPI]: ar1.LVDSLaneConfig(0, 1, 1, 0, 0, 1, 0, 0)
[16:26:06]  [RadarAPI]: Status: Passed
[16:28:06]  [RadarAPI]: ar1.ProfileConfig(0, 60, 100, 6, 60, 0, 0, 0, 0, 0, 0, 29.982, 0, 256, 10000, 0, 131072, 30)
[16:28:06]  [RadarAPI]: Status: Passed
[16:28:09]  [RadarAPI]: ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0)
[16:28:09]  [RadarAPI]: Status: Passed
[16:28:17]  Test Source Already Disabled...!!!
[16:28:17]  [RadarAPI]: ar1.DisableTestSource(0)
[16:28:17]  [RadarAPI]: Status: Passed
[16:28:17]  [RadarAPI]: ar1.FrameConfig(0, 0, 8, 128, 40, 0, 0, 1)
[16:28:17]  [RadarAPI]: Status: Passed
[16:30:32]  [RadarAPI]: ar1.GetCaptureCardDllVersion()
[16:30:32]  [RadarAPI]: Sending dll_version command to DCA1000
[16:30:32]  [RadarAPI]: 
[16:30:32]  DLL Version : 1.0
[16:30:32]  [RadarAPI]: ar1.SelectCaptureDevice("DCA1000")
[16:30:32]  [RadarAPI]: Status: Passed
[16:30:41]  [RadarAPI]: ar1.CaptureCardConfig_EthInit("192.168.33.30", "192.168.33.180", "12:34:56:78:90:12", 4096, 4098)
[16:30:41]  [RadarAPI]: ar1.CaptureCardConfig_Mode(1, 2, 1, 2, 3, 30)
[16:30:41]  [RadarAPI]: ar1.CaptureCardConfig_PacketDelay(25)
[16:30:41]  [RadarAPI]: Sending fpga command to DCA1000
[16:30:41]  [RadarAPI]: 
[16:30:41]  FPGA Configuration command : Success
[16:30:41]  [RadarAPI]: Sending record command to DCA1000
[16:30:41]  [RadarAPI]: 
[16:30:41]  Configure Record command : Success
[16:30:41]  [RadarAPI]: ar1.GetCaptureCardFPGAVersion()
[16:30:41]  [RadarAPI]: Sending fpga_version command to DCA1000
[16:30:41]  [RadarAPI]: 
[16:30:41]  
[16:30:41]  FPGA Version : 2.9 [Record]
[16:30:41]  
[16:30:51]  [RadarAPI]: ar1.CaptureCardConfig_StartRecord("D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\PostProc\\adc_data20231206.bin", 1)
[16:30:51]  [RadarAPI]: Sending start_record command to DCA1000
[16:30:56]  [RadarAPI]: ar1.StartFrame()
[16:30:56]  [RadarAPI]: Status: Passed
[16:30:56]  Frame start async event received!
[16:30:56]  Frame End async event received!
[16:30:56]  [RadarAPI]: Frame Ended
[16:30:58]  [RadarAPI]: 
[16:30:58]  [RadarAPI]: 
[16:30:58]  Start Record command : Success
[16:30:58]  
[16:30:58]  Record is completed
[16:30:58]  
[16:30:58]  Record stop is done successfully
[16:31:06]  [RadarAPI]: ar1.StartMatlabPostProc("D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\PostProc\\adc_data20231206.bin")
[16:31:06]  [RadarAPI]: No of files Captured: 1, Total no of frames for each device : 8
Frame start async event received!
[16:30:56]  Frame End async event received!
[16:30:56]  [RadarAPI]: Frame Ended
[16:30:58]  [RadarAPI]: 
[16:30:58]  [RadarAPI]: 
[16:30:58]  Start Record command : Success
[16:30:58]  
[16:30:58]  Record is completed
[16:30:58]  
[16:30:58]  Record stop is done successfully
[16:31:06]  [RadarAPI]: ar1.StartMatlabPostProc("D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\PostProc\\adc_data20231206.bin")
[16:31:06]  [RadarAPI]: No of files Captured: 1, Total no of frames for each device : 8
  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值