<!-- 本文件由脚本自动转换生成，请勿手动编辑 -->

> **《LKS32MC08x User Manual》FLASH** . 完整目录见 [README.md](README.md)
>
> **声明**：本文档由芯片用户手册自动转换生成，仅供检索与查阅参考。Markdown 格式可被自由编译、修改，本文档不构成正式技术文件，相关内容以凌鸥创芯官方网站正式发布的手册为准。
>
> 南京凌鸥创芯电子有限公司 . (C) 2019, 版权归凌鸥创芯所有 . 机密文件，未经许可不得扩散

# FLASH

## 概述

FLASH存储体包含两个部分：NVR和MAIN。NVR大小为1KB，MAIN为32KB或64KB（不同型号）。

主闪存存储区（MAIN），包括应用程序和用户数据区

信息存储区（info区/NVR），预留给用户使用，大小为1KB，供客户存储私有信息

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-1 FLASH存储体空间划分框图

- 可反复擦除写入不低于2万次
- 室温数据保持长达100年
- 单字节编程时间最长7.5us，Sector擦除时间最长5ms。
- Sector大小512字节，可按Sector擦除写入，支持运行时编程
- Flash数据防窃取（最后一个word须写入非0xFFFFFFFF的任意值）

## 功能特点

FLASH控制器模块，主要实现对FLASH存储体的相关操作。包括：

- FLASH读取数据的操作，包括对NVR部分的读取和对MAIN部分的读取。
- FLASH写入数据的操作，包括对NVR部分的写入和对MAIN部分的写入。
- FLASH擦除操作，包括CHIP擦除和SECTOR擦除。NVR部分仅支持SECTOR擦除，MAIN部分支持CHIP擦除和SECTOR擦除。
- FLASH深度休眠的操作，以降低芯片的休眠功耗。
- FLASH存储体内容的加密操作。
- FLASH的读取加速操作，以提升芯片整体运行效率。
- FLASH控制寄存器的访问。

### 功能描述

控制模块，实现了对FLASH存储体的复位/读出/写入/擦除/休眠等操作。如下为控制状态转换图：

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-2 FLASH控制状态转换图

#### 复位操作

系统完成复位后，FLASH需要一段时间恢复。其目的是保证FLASH存储体内部的电路稳定。待内部稳定后，才可对FLASH执行操作。此恢复操作由硬件自动实现，无需软件干预。

#### 休眠操作

FLASH的休眠操作分成两个部分：Standby和Deep
Sleep。当系统不执行对FLASH的操作时，FLASH可自动进入StandBy状态（若开启预取，此功能失效）。当系统执行Deep
Sleep操作时，将触发FLASH也进入Deep
Sleep，实现降低功耗的目的。FLASH进入Deep
Sleep的操作，硬件自动完成，无需软件介入。

当外界唤醒系统，同时将唤醒FLASH。经过一段时间恢复后，FLASH可执行正常操作。此唤醒恢复操作，硬件自动完成，无需软件介入。

#### FLASH读取操作

读操作为FLASH的基本操作。系统可通过两条路径访问FLASH内部的数据。

- CPU通过AHB总线，直接对FLASH执行取指取数操作。取指宽度为32bit，且只能访问MAIN空间的数据。为了加快CPU的取指取数据的速度，硬件提供了加速的功能。
- CPU通过AHB总线，访问控制器的寄存器，间接实现读取FLASH内部数据的操作。可以访问MAIN和NVR空间的数据；若执行连续读取操作，硬件可自动完成地址累加，无需每次都更新地址寄存器的值。

FLASH_CFG.REGION位指示当前访问的是哪个空间。具体表格如下：

表6-1 FLASH访问空间分配表

|||
|---|---|
|NVR (FLASH_CFG.REGION)|访问区域|
|0|MAIN区域|
|1|NVR区域|

访问控制器的寄存器，实现间接读取FLASH内部数据的操作的执行流程如下：

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-3 FLASH间接读取操作流程图

#### FLASH编程操作

执行对FLASH存储体的编程操作。一般而言，我们先执行擦除操作，然后才能执行数据编程操作。同时，只能通过访问FLASH控制器的寄存器，实现编程操作。具体流程为：

- 控制寄存器CFG，开启编程使能
- 地址寄存器ADDR，写入编程地址
- 写数据寄存器WDATA，写入编程数据

访问本控制器的寄存器，实现FLASH编程操作的执行流程如下：

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-4 FLASH模块编程操作流程图

系统工作频率的判断，需要参考SYS_CLK_CFG的配置。FLASH写入/擦除操作的绝对时间是固定的，FLASH控制器需要保存这些绝对时间对应的计数值。FLASH_CFG.TBS默认值是96MHz时钟频率下的计数值；当芯片工作在其他频率下时，需要配置FLASH_CFG.TBS的值，以实现48MHz/24MHz和12MHz的计数值（其它频率暂不支持）。最终保证计数值的的值×时钟频率等于恒定的时间。不同频率下对应的的FLASH_CFG.TBS值请参考6.3.2。切记，FLASH_CFG.TBS仅能配置寄存器说明中提供的几组值，不能被写入其它值，否则可能导致FLASH编程/擦除失败。建议对FLASH_CFG的操作，执行先读回，然后按照或/与的方法操作。另外，在执行FLASH的编程/擦除操作时，CPU将暂停工作直至FLASH的编程/擦除操作完毕。

图6-4仅展示了一次编程的流程。若执行连续编程时，可以在写入FLASH_ADDR寄存器前，配置FLASH_CFG.ADR_INC，开启地址自动递增模式，后续只需要反复写FLASH_WDATA寄存器即可，FLASH_ADDR每次写入一次数据会自动增加0x4。连续读操作类似。连续编程的流程如下：

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-5 FLASH模块编程操作流程图

#### FLASH擦除操作

擦除操作为FLASH的基本操作。系统只能通过访问FLASH控制器的寄存器实现。具体流程为：

- FLASH擦除操作使能
- 地址寄存器ADDR，写入擦除地址
- 写擦除寄存器ERASE，触发擦除操作

执行对FLASH存储体的擦除操作。擦除分成Sector和FullChip。分别对应，512Byte的擦除和32KB/64kB的擦除。通过配置FLASH控制寄存器决定执行哪一种类型的擦除操作。

下表为Block和Secotor地址分配空间。

表6-2 FLASH Sector地址分配表

||||
|---|---|---|
|Name|Addresses|Size(Bytes)|
|Sector 0|0x0000 0000 - 0x0000 01FF|512|
|Sector1|0x0000 0200 - 0x0000 03FF|512|
|Sector2|0x0000 0400 - 0x0000 05FF|512|
|…|…|…|
|Sector127|0x0000 FE00 - 0x0000 FFFF|512|

NVR区域只能实现Sector擦除；MAIN区域可以实现Sector擦除和FULL擦除。具体表格如下：

||||
|---|---|---|
|NVR (FLASH_CFG.REGION)|Sector Erase|FULL Erase|
|0|Main区域|Main区域|
|1|NVR区域|Main区域|

FLASH擦除操作流程如下所示。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-6 FLASH模块擦除操作流程图

若选择Secotor擦除，需要通过FLASH_ADDR确定哪个Secotor被擦除，若是Full
Chip模式的话，FLASH_ADDR的值将失效。FLASH_ERASE写入0x7654DCBA触发擦除操作。

#### FLASH预取操作

因FLASH存储体的速度限制，无法达到96MHz的速度。当对FLASH进行读取操作时，需要大于1个时钟周期才能完成数据的读出。为了加快数据的读出，FLASH控制器增加了预取功能。当FLASH控制器执行完当前读取操作后，在不影响正常程序执行的前提下，顺序预取下一个WORD的数据。预取操作的开启和关闭，只需要设置FLASH_CFG.PREF即可。

#### FLASH加密保护

若FLASH存储体内的数据处于加密状态，用户可执行解密操作，可对FLASH存储体内的数据进行解密。相反，若FLASH存储体内的数据处于解密状态，用户可执行加密操作，对FLASH存储体内的数据进行加密。默认情况下，FLASH存储体内的数据处于加密状态。芯片上电复位后，硬件自动执行一次加密状态更新操作，是加密状态的话仍然加密状态，是解密的话状态变成解密状态。

FLASH存储体共有32kB/64kB两个规格。无论哪种规格，相应规格中的最后一个WORD设计为加密字。当这个WORD内容为全1时，表明此时FLASH处于解密状态；当这个WORD的内容被写为非全1时，表明此时FLASH处于加密状态。若需要加密，执行最后一个WORD的编程，写入非全1的值，读取FLASH_PROTECT寄存器，即触发一次加密状态更新，完成加密（读取FLASH_PROTECT返回值无意义）。

对应的解密流程，分成两种情况。若最后一个WORD没有执行过编程写入非全1的操作，读取FLASH_PROTECT寄存器，即完成解密更新（无需考虑此时返回值）。若已经执行过编程写入非全1的操作，那么只能执行擦除操作才能解除。先对FLASH执行擦除操作，将最后一个WORD恢复为全1值，然后读取FLASH_PROTECT寄存器，即触发一次加密状态更新，完成解密（读取FLASH_PROTECT返回值无意义）。

#### FLASH在线升级(IAP)

IAP模式，实现中断向量表的重映射。在LKS32MC08x系列芯片中，包含了系统寄存器VTOR，其地址为0xE000_ED08。用于重新映射中断向量表入口地址。

表6-3 IAP VTOR寄存器描述

|||||||
|---|---|---|---|---|---|
|名称|复位值|偏移|位置|权限|说明|
|VTOR|0x0||\[31:7\]|RW|执行写入操作，写入中断向量表入口地址|
||||\[6:0\]|--|默认写0|

默认值为0x0，此时中断向量表入口地址为0x0。当写入非0值时，中断向量表入口地址将映射到写入值对应的地址上，立即生效。读回时会右移7位。

在LKS32MC08x系列芯片中，因为有VTOR寄存器。用户可根据自己需求，更新整个FLASH的内容。在线升级过程中可以使用中断，也可以关闭中断。

##### 开启中断的在线升级

推荐软件配置流程：

关闭CPU的中断控制器，暂时不接收新的中断响应；

在新的中断入口地址处，放置中断处理函数代码；

将新的中断入口地址写入VTOR寄存器；

开启CPU的中断控制器，使能中断；

用户跳转至在线升级函数，开始在线升级功能；

完成升级，关闭CPU的中断控制器，配置VTOR为默认值0；

执行CPU软复位，系统PC重新从0地址开始执行升级后的程序；

##### 关闭中断的在线升级

关闭CPU的中断控制器，暂时不接收新的中断响应；

用户跳转至在线升级函数，开始在线升级功能；如果在线升级使用了类似UART的外设通讯，需要CPU轮询处理UART的中断标志位。

执行CPU软复位，系统PC重新从0地址开始执行升级后的程序；

##### 在线升级函数的位置

如果需要将flash全部擦除，则需要将在线升级函数放置在RAM中，如果需要使用中断则新的中断向量入口地址也需要位于RAM地址空间。

如果只需要擦除应用程序占用的部分flash区域，则可以将在线升级函数放置在flash高段地址的空闲区域，使用块擦除flash旧的应用程序，写入新的应用程序。

## 寄存器

### 地址分配

FLASH控制器模块寄存器的基地址是0x4000_0400，寄存器列表如下：

表6-4
FLASH控制器模块寄存器列表

||||
|---|---|---|
|名称|偏移|说明|
|FLASH_CFG|0x00|FLASH配置寄存器|
|FLASH_ADDR|0x04|地址寄存器|
|FLASH_WDATA|0x08|写数据寄存器|
|FLASH_RDATA|0x0C|读数据寄存器|
|FLASH_ERASE|0x10|擦除使能寄存器|
|FLASH_PROTECT|0x14|FLASH保护状态寄存器|
|FLASH_READY|0x18|FLASH闲忙状态寄存器|

### FLASH_CFG 配置寄存器（推荐先读回，按或/与方式修改）

地址：0x4000_0400

复位值：0x00000060

表6-5配置寄存器FLASH_CFG

||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|||26|25|24|23||22|21|20|19|18|17|16|
|ERS_EN||||PRG_EN||||||ADR_INC|||||PREF||||
|RW||||RW||||||RW|||||RW||||
|0||||0||||||0|||||0||||
|15|14|13|12|11|||10|9|8|7||6|5|4|3|2|1|0|
|ERS_TYPE|||||REGION||||||TBS||||||||
|RW|||||RW||||||RW||||||||
|0|||||0||||||60||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31\]|ERS_EN|FLASH擦除使能。默认为0。0：关闭擦除1：开启擦除|
|\[27\]|PRG_EN|FLASH编程使能。默认为0。0：关闭编程1：开启编程|
|\[23\]|ADR_INC|FLASH地址递增使能。默认为0。0：关闭递增使能1：开启递增使能当执行FLASH连续读写访问时，可以开启此功能减少对地址的操作。|
|\[19\]|PREF|FLASH预取加速使能。默认为0。0：关闭加速1：开启加速|
|\[15\]|ERS_TYPE|FLASH擦除类型选择。默认为0。0：Sector1：FULL|
|\[11\]|REGION|访问FLASH区域选择。默认为0。0：MAIN1：NVR|
|\[6:0\]|TBS|编程/擦除时间基数寄存器,默认值为0x60。只能配成如下几个值0x60：96Mhz系统频率下，FLASH编程/擦除时间基数配置值。0x2F：48Mhz系统频率下，FLASH编程/擦除时间基数配置值。0x17：24Mhz系统频率下，FLASH编程/擦除时间基数配置值。0x0B：12Mhz系统频率下，FLASH编程/擦除时间基数配置值。|

### FLASH_ADDR 地址寄存器

地址：0x4000_0404

复位值：0x0

表6-6地址寄存器FLASH_ADDR

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|ADDR||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|ADDR|地址寄存器。读/写/擦除操作对应的地址寄存器。因按照WORD操作，最低两位会被FLASH控制器忽略。执行擦除操作时，需要根据擦除类型，地址需要对齐。一个Sector是512-Byte。若执行Sector擦除，地址需要是512的整数倍（若带偏移，偏移量会被忽略）。全芯片擦除，不会参考这个寄存器的值|

### FLASH_WDATA 写数据寄存器

地址：0x4000_0408

复位值：0x0

表6-7写数据寄存器FLASH_WDATA

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|WDATA||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|WDATA||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|WDATA|执行写入操作，写入FLASH的值|

### FLASH_RDATA 读数据寄存器

地址：0x4000_040C

复位值：0x0

表6-8读数据寄存器FLASH_RDATA

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|RDATA||||||||||||||||
|RO||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|RDATA||||||||||||||||
|RO||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|RDATA|执行读取操作，读出FLASH的值|

### FLASH_ERASE 擦除控制寄存器

地址：0x4000_0410

复位值：0x0

表6-9擦除控制寄存器FLASH_ERASE

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|ERASE||||||||||||||||
|WO||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|ERASE||||||||||||||||
|WO||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|ERASE|写入0x7654DCBA，触发擦除操作|

### FLASH_PROTECT 加密状态寄存器

地址：0x4000_0414

复位值：0x0

表6-10加密状态寄存器FLASH_PROTECT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|PROTECT||||||||||||||||
|RO||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|PROTECT||||||||||||||||
|RO||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|PROTECT|读取该寄存器，更新加密/解密状态读取返回值无参考意义。|

### FLASH_READY 工作状态寄存器

地址：0x4000_0418

复位值：0x0

表6-11工作状态寄存器FLASH_READY

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1||0|
||||||||||||||||READY||
||||||||||||||||RO||
||||||||||||||||0||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:1\]||未使用|
|\[0\]|READY|1:FLASH处于闲状态；0:FLASH处于忙状态|

### NVR校正值地址信息

LKS32MC08x 产品存储芯片校准参数：

校准参数，每颗产品均独立校准，每颗产品不支持校准参数混用；

校准参数，在出厂前进行写入，出厂后不支持编程和擦除，仅支持读取；

校准参数，通过LKS公司提供的库函数进行读取访问；

校准参数，推荐关闭系统中断后，执行访问操作；

lks32mc08x_nvr.o文件包含了校准参数的读取函数：

读取函数：uint32_t Read_Trim(uint32_t adr);

表6-12 校准参数列表

|||
|---|---|
|地址|内容|
|0x0310|ADC0_DC0 校准值|
|0x0314|ADC0_DC1 校准值|
|0x0318|ADC0_AMC0 校准值|
|0x031C|ADC0_AMC1 校准值|
|0x0320|ADC1_DC0 校准值|
|0x0324|ADC1_DC1 校准值|
|0x0328|ADC1_AMC0 校准值|
|0x032C|ADC1_AMC1 校准值|
|0x0330|DAC 选择 3.00V 档位，SYS_AFE_DAC_AMC 校准值（扩大512 倍结果）|
|0x0334|DAC 选择 1.20V 档位，SYS_AFE_DAC_AMC 校准值（扩大512 倍结果）|
|0x0338|DAC 选择 4.85V 档位，SYS_AFE_DAC_AMC 校准值（扩大512 倍结果）|
|0x0340|DAC 选择 3.00V 档位，SYS_AFE_DAC_DC 校准值|
|0x0344|DAC 选择 1.20V 档位，SYS_AFE_DAC_DC 校准值|
|0x0348|DAC 选择 4.85V 档位，SYS_AFE_DAC_DC 校准值|
|0x0350|OPA0 ，200K 欧姆 VS 10.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0354|OPA0 ，190K 欧姆 VS 20.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0358|OPA0 ，180K 欧姆 VS 30.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x035C|OPA0 ，170K 欧姆 VS 40.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0360|OPA1 ，200K 欧姆 VS 10.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0364|OPA1 ，190K 欧姆 VS 20.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0368|OPA1 ，180K 欧姆 VS 30.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x036C|OPA1 ，170K 欧姆 VS 40.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0370|OPA2 ，200K 欧姆 VS 10.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0374|OPA2 ，190K 欧姆 VS 20.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0378|OPA2 ，180K 欧姆 VS 30.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x037C|OPA2 ，170K 欧姆 VS 40.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0380|OPA3 ，200K 欧姆 VS 10.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0384|OPA3 ，190K 欧姆 VS 20.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0388|OPA3 ，180K 欧姆 VS 30.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x038C|OPA3 ，170K 欧姆 VS 40.4K 欧姆，GAIN 校准值（扩大1000 倍结果）,R0为0欧姆|
|0x0398|温度传感器，斜率校准值|
|0x039C|温度传感器，斜率校准值|
|0x03B0|高16-bit存放OPA1共模电压，低16-bit存放OPA0共模电压（注意，均是放大10000倍存入）|
|0x03B4|高16-bit存放OPA3共模电压，低16-bit存放OPA2共模电压（注意，均是放大10000倍存入）|
|0x02C0|OPA0，200K 欧姆:10.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02C4|OPA0，190K 欧姆:20.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02C8|OPA0，180K 欧姆:30.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02CC|OPA0，170K 欧姆:40.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02D0|OPA1，200K 欧姆:10.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02D4|OPA1，190K 欧姆:20.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02D8|OPA1，180K 欧姆:30.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02DC|OPA1，170K 欧姆:40.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02E0|OPA2，200K 欧姆:10.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02E4|OPA2，190K 欧姆:20.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02E8|OPA2，180K 欧姆:30.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02EC|OPA2，170K 欧姆:40.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02F0|OPA3，200K 欧姆:10.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02F4|OPA3，190K 欧姆:20.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02F8|OPA3，180K 欧姆:30.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x02FC|OPA3，170K 欧姆:40.4K 欧姆。高16位为R2实际电阻值，低16位为R1实际电阻值（扩大100 倍结果）|
|0x000002A0|OPA0挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA0 170K 欧姆：40.4K欧姆Bit\[15:0\] OPA0 180K 欧姆：30.4K欧姆|
|0x000002A4|OPA0挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA0 190K 欧姆：20.4K欧姆Bit\[15:0\] OPA0 200K 欧姆：10.4K欧姆|
|0x000002A8|OPA1挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA1 170K 欧姆：40.4K欧姆Bit\[15:0\] OPA1 180K 欧姆：30.4K欧姆|
|0x000002AC|OPA1挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA1 190K 欧姆：20.4K欧姆Bit\[15:0\] OPA1 200K 欧姆：10.4K欧姆|
|0x000002B0|OPA2挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA2 170K 欧姆：40.4K欧姆Bit\[15:0\] OPA2 180K 欧姆：30.4K欧姆|
|0x000002B4|OPA2挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA2 190K 欧姆：20.4K欧姆Bit\[15:0\] OPA2 200K 欧姆：10.4K欧姆|
|0x000002B8|OPA3挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA3 170K 欧姆：40.4K欧姆Bit\[15:0\] OPA3 180K 欧姆：30.4K欧姆|
|0x000002BC|OPA3挡位下的Offset值（有符号类型，单位：V，放大10000倍）Bit\[31:16\] OPA3 190K 欧姆：20.4K欧姆Bit\[15:0\] OPA3 200K 欧姆：10.4K欧姆|

