【随手笔记】FLASH-W25Q16(一)

W25Q16 存储器(Flash) W25Q16 Flash知识总结 阅读详情

STM32学习开发记录:W25Q16(FLASH)——SPI

一、SPI协议简介

1、SPI的接线与数据

SPI:Serial Peripheral interface 串行外围设备接口
在这里插入图片描述
上图是SPI主机与从机设备间连线的关系,可以看出,主机主导了主机和从机的时序(SCLK),数据发送的流程是:
主机移位寄存器发送数据→MOSI→从机移位寄存器接收数据
从机移位寄存器发送数据→MISO→主机移位寄存器接收数据
两条线路发送数据是同步的。于是主机和从机的移位寄存器数据被交换。

只进行主机写入数据到从机时,主机忽视从机返回的数据;
只进行主机读取从机数据时,主机可发送空数据。

通常规定主机与从机间的数据格式均为MSB(Most Significant Bit 高位数据先行)

此外SPI设备通常还有SS或NSS接口用于片选。每一个从设备都要接到主机的一个SS引脚上。
SS/NSS:低电平有效
通常不会使用硬件SS接口,而是直接软件控制引脚电平实现片选。
通讯开始时,SS端电平拉低,通讯结束时,SS端电平拉高。

2、时序:时钟极性(CPOL)和时钟相位(CPHA)

时钟极性(CPOL)和时钟相位(CPHA)对传输协议的影响如下:

CPOL=0:闲置时时钟信号(SCK)低电位
CPOL=1:闲置时时钟信号(SCK)高电位

CPHA=0:在时钟信号的第一个上升沿/下降沿采样
CPHA=1:在时钟信号的第二个上升沿/下降沿采样在这里插入图片描述
不同模式下SPI的采样与时钟电平关系如下表所示
在这里插入图片描述
对于W25Q16,只支持SPI模式0和模式3。这也是大多数SPI硬件支持的模式。


二、W25Q16简介

1、部分参数

数据内容大小
存储空间2M Byte
页数8192
每页大小256 Byte(0.25KB)
最小扇区4KB
电源供电2.7V~3.6V

W25Q16支持4倍传输模式,在本次学习中暂时不会用到,详情见数据手册。

2、硬件连接

引脚功能:

在这里插入图片描述
CS:片选端输入,发送或接受数据前应先拉低片选端为低电平0,完成后拉高片选端电平为1,读取BUSY位(见下文寄存器)直至BUSY位为0,可继续发送或接受下一条指令。
WP:低电平有效,用于保护状态寄存器。
HOLD:低电平有效,允许芯片暂停工作,保持输出。

开发板的硬件连接:
在这里插入图片描述
W25Q16支持软件Reset(有30μs的延迟),软件启动Dual SPI和Quad SPI 。使用QUAD SPI通信时,需要使用WP引脚和HOLD引脚。在此只学习有关标准SPI通信的方法。

W25Q16内部结构与存储地址示意图如下, W25Q16共2M字节的存储空间被分为32个Block, 每个Block(64KB)下有16个Sector(4KB), 每个Sector(4KB)下有 16个Page(256Byte), 在图中的每一行的左侧地址到右侧地址表示一个Page。
在这里插入图片描述
在这里插入图片描述

3、状态寄存器

在此特别说明两个状态寄存器:BUSY和WEL(Write Enable Only)
在这里插入图片描述
BUSY寄存器是只读寄存器,在对存储空间操作(包括页写入,块擦除等)时,BUSY寄存器保持在高电平位,此时芯片无法执行新的指令。完成操作后,BUSY寄存器重置为低电平,芯片可继续执行指令。(低电平有效,高电平忙)
实际使用中可以用BUSY寄存器来判断指令是否执行完毕。

WEL寄存器同样是只读寄存器。当寄存器至为高电平时,可以执行对存储内容进行更改(包括页写入,块擦除等)的命令。置为低电平时,不能更改存储内容。(低电平保护)

其它寄存器用于对数据的保护,通常不需要使用。需要使用时可查看数据手册的说明。

4、指令API

W25Q16数据传输为MSB模式,传入数据在上升沿采样。因此应使用SPI MODE3

The first byte of data clocked into the DI input provides the instruction code. Data on the DI input is sampled on the rising edge of clock with most significant bit (MSB) first.

芯片支持volatile数据写入,很多指令出于保护目的而设计,但在开发板上不需要。具体有待进一步学习。
预设的操作指令如下图所示:
在这里插入图片描述
在这里插入图片描述
对指令的一些说明:

(1) 芯片一次写入数据最多支持256Byte。超出256Byte的数据将覆盖前面已经写入的数据。

(2) 标准SPI模式下输入可基本参照上表,双路SPI或四路SPI模式下需要参考数据手册的说明。上表中带括号“()”的指令在双路SPI和四路SPI模式下有不同的输入方式,具体参照数据手册。

(3) 上表中【ID15-ID0】或【ID7-ID0】以及【MF7-MF0】对应第一个表中的设备地址,A表示地址,D表示数据,S表示寄存器,L表示Locked Value(具体见数据手册)。

(4) Write Enable/Disable 写使能/禁止
在页写入,扇区擦除,块擦除,全片擦除命令前必须使用的命令。使WEL位置1。

(5) Read/Write Status Register-1/2/3 读取/写入寄存器1/2/3的状态
上文中只介绍了Status Register-1的内容,实际使用中基本也只需要用到其中的BUSY和WEL两个状态寄存器,主要是读取寄存器的状态用于判断指令是否完成,或改变写入权限(通常通过写使能命令)。
对于读取状态寄存器的命令,当CS(片选端)未置高电平时将一直返回寄存器的状态。CS置1后命令结束。
在这里插入图片描述

(6) Read Data 读取数据
读取数据命令能够从发送的地址开始不断地读取数据直至CS置高电平1,能够读取至整个芯片。
此外还有作用相近的Fast Read 命令,在3个地址字节后加dummy字节,用于调整时钟速度,再进行数据的发送。具体没有进行实验,暂时只使用Read Data命令。
在这里插入图片描述

(7) Page Program 页写入
页写入命令必须在写使能(WEL=1)的条件下才有效。
页写入命令中的地址数据末八位(A7-A0)应当为00h,此时的地址是页的首地址,能够完整地将数据写入页中。
若地址末八位不是00h,则当输入的数据地址自增至页尾时,地址将回到页首继续写入。
写入数据的位置必须是擦出状态(0xFF),否则写入失败。
若写入的数据超出256字节,则超出的字节将覆盖写入数据的首部分字节。
完成数据写入后,应将CS置1才能使命令有效。此后芯片需要等待一段时间t才能完成数据的写入。写入过程中可用Read Status Register 读取BUSY寄存器查看命令是否完成。写入命令完成后,写使能自动被禁止(WEL=0)。

(8)
Sector Erase 扇区擦除(4KB)最小擦除单位是扇区
32KB Block Erase 半块擦除
64KB Block Erase 整块擦除
Chip Erase 全片擦除

这几个命令与页写入命令相似,同样需要在WEL=1的条件下才可使用。命令执行过程中可通过查看BUSY标志位确认命令是否完成,命令完成后写使能自动被禁止,即WEL=0。
被擦除的数据将被全部置为1,即FFh。


三、STM32 HAL库 有关SPI的API

1.SPI初始化结构体

初始化结构体的可控参数如下所示。

typedef struct
{
	uint32_t Mode; //模式:主(SPI_MODE_MASTER),从(SPI_MODE_SLAVE)
	uint32_t Direction; //方式: 只接收模式,单线双向通信数据模式,全双工
	uint32_t DataSize; //8 位还是 16 位帧格式选择项
	uint32_t CLKPolarity; //时钟极性
	uint32_t CLKPhase;//时钟相位
	uint32_t NSS; //SS 信号由硬件(NSS 管脚)还是软件控制
	uint32_t BaudRatePrescaler;//设置 SPI 波特率预分频值
	uint32_t FirstBit;//起始位是 MSB 还是 LSB
	uint32_t TIMode; //帧格式 SPI motorola 模式还是 TI 模式
	uint32_t CRCCalculation; //硬件 CRC 是否使能
	uint32_t CRCPolynomial; //CRC 多项式
}SPI_InitTypeDef;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

各个参数具体的预设值可参考官方数据手册。以下是根据W25Q16数据手册进行的初始化预设

	SPI2_Handler.Instance=SPI2; //SPI2
	SPI2_Handler.Init.Mode=SPI_MODE_MASTER; //设置为主模式
	SPI2_Handler.Init.Direction=SPI_DIRECTION_2LINES; //SPI 设置为双线模式
	SPI2_Handler.Init.DataSize=SPI_DATASIZE_8BIT; //SPI 发送接收 8 位帧结构
	SPI2_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH; //串行同步时钟的空闲状态为高电平
	SPI2_Handler.Init.CLKPhase=SPI_PHASE_2EDGE; //第二个跳变沿数据被采样
	SPI2_Handler.Init.NSS=SPI_NSS_SOFT;//NSS 信号由硬件管理
	SPI2_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256
	;//定义波特率预分频的值:波特率预分频值为 256
	SPI2_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB; //数据传输从 MSB 位开始
	SPI2_Handler.Init.TIMode=SPI_TIMODE_DISABLE; //关闭 TI 模式
	SPI2_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;//关闭硬件 CRC
	SPI2_Handler.Init.CRCPolynomial=7; //CRC 值计算的多项式
	HAL_SPI_Init(&SPI2_Handler);//初始化

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注:
SPI模式中还支持TI模式,TI模式又称SSP模式,是由TI公司定义的通讯标准,关闭TI模式下的SPI是由Motorola公司定义的通讯标准。通常使用的是Motorola公司定义的SPI通讯模式。
CRC:CRC校验
用STM32CubeMX配置引脚时,要设置SYS的Debug模式为Serial Wire,以免下载程序一次后无法读取调试器。

</article>
详述16M bits串行Flash(W25Q16)的特性和用法 W25Q16JV阵列被组织成8192个可编程页面,每个页面256字节。最多可达256字节一次被编程。页可以以16为一组(4KB扇区擦除),128为一组(32KB)进行擦除块擦除),组256 (64KB块擦除)或整个芯片(芯片擦除)。W25Q16JV有512个可擦扇区和32个可擦块。较小的4KB扇区允许更大的灵活性需要数据和参数存储的应用程序。 阅读详情

相关推荐

【STM32CubeMX学习】SPI读写W25Q16

1、SPI总线 SPI分为主从工作模式,通常有一个主设备和一个或多个从设备,本文中MCU为主机,W25Q16为从机。 SPI通信有以下四根线: MISO:主设备数据输入,从设备数据输出。 MOSI:主设备数据输出,从设备数据输入。 SCLK:时钟信号,由主设备产生。 CS:从设备片选信号,由主设备控制,低电平为选中。 SPI可以同时发出和接收串行数据,主机发送一个数据的同时从机也将自己数据返回给主机。这样,双方的数据就被交换了。主机控制外设时,写操作和读操作是...

weixin_46183891的博客 7894

W25Q16_Flash手册总结

前面学习了我们的spi协议,下面我们需要对Flash芯片手册进行简单的学习总结,后面通过spi协议对flash进行读写。FLASH 存储器又称闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)存储器,一般用来保存一些重要的设置信息或者程序等等。通常采用 SPI 协议跟 FLASH 芯片进行数据交互。W25Q16BV是串行闪存为空间,引脚和功耗有限的系统提供存储解决方案。25Q 系列提供的灵活性和性能远远超过普通串行闪存设备。

qq_52215423的博客 9018

STM8L151 使用硬件SPI驱动W25Q16 Flash

STM8L 该如何使用硬件SPI驱动W25Q16 Flash 芯片

jnu_fangzebin的专栏 1万+

基于STM32实现W25Q16读写操作(spi)

在之前我们学习了flash闪存,这个更多的是内部数据存储,容量也是会比较小。这次我们来学习一下更多的存储单元w25q16,顺便了解spi———串行外围设备接口。在我们的核心板子上基本都会有这么一块芯片,只是有的容量会计较大,大家可以查看板子的原理图,如图所示:有的板子可能是w25q32或者其他,后面的数字代表的是容量,用法都是一样的,从图中或者产品手册我们可以看到芯片是spi协议通信的。串行外设接口 (SPI) 可与外部器件进行半双工/全双工的同步串行通信。

weixin_46155589的博客 1万+

W25Q64 Flash芯片原理与应用方案(含W25Q64中文数据手册)

W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb(8MB),应用较为广泛。 W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作。 W25Q64的擦写周期多达10W次,可将数据保存达2.

硬件之家,技术前行 2万+

SPI FLASH_W25Q64驱动 代码

#include "flash.h" #include "spi.h" #include "delay.h"    #include "usart.h"    //////////////////////////////////////////////////////////////////////////////////  //本程序只供学习使用,未经作者许可,不得用于其它任

zongguo的专栏 1万+

SPI _FLASH芯片W25Q16配置FATFS

一、SPI FLASH芯片能干啥有哪些种类 存放数据。SPI FLASH普遍比EEPROM大得多。所以容量SPI FLASH占优势。但是价格,EEPROM占优势. 1、IIC EEPROM------容量小,采用的是IIC通信协议;用于在掉电时,存系统配置参数,比如屏幕亮度等。常用芯片型号有 AT24C02、FM24C02、CAT24C02等,其常见的封装多为DIP8,SOP8,TSSOP8等; 2、SPI NorFlash------容量略大,采用的是SPI 通信协议;用于存放程序和数据。程序和数据可存放

“Struggle”的博客 1万+

stm32 W25QXX系列驱动 W25Q80 W25Q16 W25Q32 W25Q64 W25Q128 W25Q256

W25QXX系列驱动,支持W25Q80,W25Q32,W25Q128,W25Q256,W25Q64,W25Q16,详细中文注释

qq_30551297的博客 5904

stm32 操作W25Q256 W25Q16 spi flash

stm32 操作W25Q256 W25Q16 spi flash

Car12 9244

W25Q16BV中文数据手册

最新的W25Q16BV闪存中文数据手册(W25Q16BV(16M位)串行闪存,该W25Q16BV阵列是由每256字节可编程8,192页.最多256个字节,2.7到3.6V电源)

GD32F4系列定时器正交译码器实战:用TIMER1读取旋转编码器信号(附完整代码)

本文详细介绍了GD32F4系列定时器正交译码器的实战应用,重点讲解如何使用TIMER1模块高效读取旋转编码器信号。内容涵盖硬件连接、定时器配置、方向判断与速度计算等关键环节,并提供了完整的代码实现和优化建议,帮助开发者快速掌握GD32微控制器在工业控制和消费电子领域的编码器接口设计。

weixin_29169505的博客 201

嵌入式——Flash(W25Q64)

W25Q16、 W25Q32 和 W25Q64 支持标准的 SPl接口,传输速率最大 75 MHz,采用四线制,即4个引脚。① 串行 时钟引脚 (CLK)② 芯片 选择引脚 (CS)③ 串行数据 输出引脚(DO)④ 串行数据 输入 / 输出引脚(DIO):在普通情况下,该引脚是串行输入引脚(DI),当使用快读双输出指令时,该 引脚就变成了 输出引脚,在 这种情况下,芯片就有2个 DO引脚,所以称为双输出,其 通信速率 相当于翻了 一番,所以 传输速率更快。二、W25Q64特性。

CXDNW的博客 1万+

YOLOV8主干改进方法:C2f-Dual——DualConv轻量化双卷积设计(附改进代码)

DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。

m0_74890428的博客 4698

细说Flash存储芯片W25Q128FW和W25Q16BV

如果一次写入的数据超过页的边界,会再从页的起始位置开始写。W25Q128的操作指令由1字节或多字节组成,指令的第1个字节是指令码,其后跟随的是指令的参数或返回的数据。一定要注意,在没有完全搞清楚状态寄存器各个位的意义和用法之前,请勿随便修改状态寄存器的内容,因为有些位是非易失的,有些位还是一次性编程的,修改状态寄存器的内容可能改变器件的特性,甚至造成器件无法再使用。"写数据"指令的起始地址可以是任意地址,数据长度也可以小于256,但如果写的过程中地址超过页的边界,就会从页的起始地址开始继续写。

wenchm的博客 3879

Halcon 3D点云匹配实战:从预处理到模板创建的完整流程(附代码)

本文详细介绍了Halcon在3D点云匹配中的实战应用,涵盖从预处理到模板创建的完整流程。通过代码示例和实用技巧,帮助开发者掌握点云采样、降噪、三角化等关键技术,并优化匹配参数以提高精度和效率。适用于工业检测、机器人引导等领域。

weixin_33670786的博客 432

从理论到实践:Zemax驱动下的离轴三反光学系统全流程构建

本文详细阐述了从理论推导到软件实现的离轴三反光学系统全流程设计方法。文章首先分析了离轴三反系统在空间遥感等领域的优势,然后手把手指导如何基于像差理论计算共轴三反的初始结构参数,包括曲率半径与圆锥系数。最后,重点介绍了在Zemax中完成从共轴建模、视场离轴设置到优化与性能评估的完整实战步骤,为光学工程师提供了宝贵的经验与避坑指南。

weixin_29205061的博客 238

Flash Rom存储器W25Q16/W25X16

认识Flash Rom FlashRom 是快速擦写只读存储器,也就是我们常说的“闪存”,单片机程序存储器就是Flash Rom,所谓“闪存”,就是一种非易失性的内存,属于EEPROM的改进产品。它的最大特点是必须按块对数据进行擦写操作,芯片容量大(W25Q16容量2M字节),而EEPROM则可以对单个字节进行操作,芯片容量较小(24c512容量65536字节)。前者容量是后者容量的32倍。另外F...

anny0884的博客 2万+

CMAC算法原理

2、K1 通过以下运算导出:若 L 的最高有效位等于 0,则 K1 是 L 的左移 1 位。3、K2 通过如下运算导出:若 K1 的最高有效位等于 0,则 K2 是 K1 的左移 1 位。采用了 AES 算法中的类似 CBC 模式的加密方式,即对前一个分组的密文与当前分组的明文进行异或操作后在加密,2、分块处理:首先将消息分成多个固定长度的块,若消息长度不是块大小的倍数,则可以使用填充来将其填充到合适的大小。1、子密钥计算,通过主密钥生成子密钥(key1,key2),子密钥用于最后一个块处理;

sky的博客 1658

STM32学习开发记录:W25Q16(FLASH)——SPI

选用硬件:STM32F103 Nano开发板 板载有W25Q16 一、SPI协议简介 1、SPI的接线与数据 SPI:Serial Peripheral interface 串行外围设备接口 上图是SPI主机与从机设备间连线的关系,可以看出,主机主导了主机和从机的时序(SCLK),数据发送的流程是: 主机移位寄存器发送数据→MOSI→从机移位寄存器接收数据 从机移位寄存器发送数据→MISO→主机移位寄存器接收数据 两条线路发送数据是同步的。于是主机和从机的移位寄存器数据被交换。 只进行主机写入数据到从机时

Borton__的博客 1万+

Python+OpenCV实现游戏自动刷怪脚本(附完整代码)

本文详细介绍了如何使用Python和OpenCV开发游戏自动刷怪脚本,涵盖环境搭建、图像识别、行为决策引擎及反检测优化等关键技术。通过完整的代码示例,帮助开发者实现从简单脚本到智能自动化系统的升级,提升游戏效率。

weixin_29032489的博客 517

【网络教程】Ubuntu有线连接消失,无法联网怎么办!(亲测有效!)

文章目录问题描述解决方案 问题描述 今天打开Ubuntu,突然发现无法连接网络,并且打开设置,发现设置里面的网络已经没有了有线连接,只有VPN设置选项,如图 解决方案 按照下列的代码执行即可! # 关闭网路 service NetworkManager stop # 删除NetworkManager缓存文件 sudo rm /var/lib/NetworkManager/NetworkManager.state # 打开网络 service NetworkManager start 运行完

XiaoqiangClub的博客 1万+

Flash存储W25Q16芯片

1          一般描述 W25Q16BV(16M-bit)是为有限的空间、引脚和功耗的系统提供一个存储解决方案。25Q系列比普通的串行Flash存储器更灵活,性能更优越。基于双倍/四倍的SPI,它们能够可以立即完成提供数据给RAM,包括存储声音、文本和数据。芯片支持的工作电压2.7V到3.6V,正常工作时电流小于4mA,掉电时低于1uA。工作温度为-40℃到85℃。所有芯片提供标准的封装

Ccode11的专栏 3万+

第4章:外包接单全攻略——Upwork/电鸭/猪八戒从0到第一单

> - 三个外包平台的详细对比(适合人群、抽成、防骗) > - 每个平台的Profile优化模板(可直接复制修改) > - 用AI写Proposal的3个Prompt模板(我实测回复率提升50%) > - 报价策略与防骗指南(附5个危险信号) > - 我的第一单复盘:从注册到收款的全过程(含聊天记录脱敏)

sfishfly的博客 574

Linux下SPI Flash-W25Q64驱动调试

   1 简介     W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为8M。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块(block),每个块大小为64K字节,每个块又分为16个扇区(sector),每个扇区4K字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一...

weixin_40407893的博客 9291

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SPI Flash Rom W25Q16 ----基于STC15

(。。。。)先来简单认识一下这个芯片 W25Q16 其实就是以SPI作为通信时序要求的一款储存芯片,升级版的EEPROM,比EEPROM读取速度快,价格还差不多。 W25X16分为8192页,每页256字节,用“页编程指令”每次就可以编程256字节,用“扇区擦除指令”每次可擦除16页,用“块擦除指令”每次可擦除256页,用“整片擦除指令”可一次擦除整个芯片,W25X16有512个可擦除

悟已往之不谏 知来者之可追 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

W25Q64Flash芯片

W25Q64Flash芯片STM32操作 通讯方式:SPI通讯 大小:8M(Byte)   (128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字节,每个扇区16页,每页256个              字节) 特点:Flash芯片内的数据只能由1变0,不能由0变1。 引脚:  &nbs...

#elseif 1万+
上一篇: 【工具】固件合并工具_HEX解析
下一篇: 【随手笔记】FLASH-W25Q16(二)
Long-Run
博客等级 码龄3年 4600粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值