HPM6300
UM
基于 RISC-V 内核的 32 位高性能微控制器
Rev 2.5
HPM6300 系列高性能微控制器用户手册
适用于上海先楫半导体科技有限公司以下型号产品:
HPM6360IPAx* 、HPM6360IEPx* 、HPM6360IDC2、HPM6350IPAx* 、HPM6350IEPx*
HPM6340IPAx* 、HPM6340IEPx* 、HPM6320IPAx* 、HPM6320IEPx*
HPM6364IPAx* 、HPM6364IEPx* 、HPM6364IDC2
HPM6330ICE2
*x=1:版本 1,x=2:版本 2
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
目录
1 产品概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1
系统框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.2.1
内核与系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.2.2
内部存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.2.3
电源管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2.4
时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2.5
复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2.6
启动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2.7
外部存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2.8
音频外设 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2.9
电机控制系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2.10 定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2.11 通讯外设 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2.12 模拟外设 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2.13 输入输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.2.14 信息安全系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.2.15 系统调试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
文档约定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
寄存器相关缩写词列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.3
1.3.1
2 处理器内核 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
2.1
中央处理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2
总线和存储器接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3
TRAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4
机器定时器 MCHTMR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5
硬件性能监视器 (Hardware Performance Monitor) . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.6
特权模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7
物理内存属性(Physical Memory Attributes)
2.8
物理内存保护(Physical Memory Protection) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.9
相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 RISC-V 处理器的控制状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
3.1
控制状态寄存器 CSR 说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2
控制状态寄存器 CSR 详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.1
USTATUS (0x0) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.2
UIE (0x4) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.3
UTVEC (0x5) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.4
USCRATCH (0x40) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.5
UEPC (0x41) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.6
UCAUSE (0x42) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.7
UTVAL (0x43) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.8
UIP (0x44) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
3.2.9
目录
SSTATUS (0x100) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.10 SEDELEG (0x102) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.11 SIDELEG (0x103) (standard read/write)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.12 SIE (0x104) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.13 STVEC (0x105) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.14 SCOUNTEREN (0x106) (non-standard read/write)
. . . . . . . . . . . . . . . . . . . . . . 29
3.2.15 SSCRATCH (0x140) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.16 SEPC (0x141) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.17 SCAUSE (0x142) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.18 STVAL (0x143) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.19 SIP (0x144) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.20 SATP (0x180) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.21 MSTATUS (0x300) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.22 MISA (0x301) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.23 MEDELEG (0x302) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.24 MIDELEG (0x303) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.25 MIE (0x304) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.26 MTVEC (0x305) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.27 MCOUNTEREN (0x306) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.28 MCOUNTINHIBIT (0x320) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . 40
3.2.29 MHPMEVENT3 (0x323) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2.30 MHPMEVENT4 (0x324) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2.31 MHPMEVENT5 (0x325) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.32 MHPMEVENT6 (0x326) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.33 MSCRATCH (0x340) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.34 MEPC (0x341) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2.35 MCAUSE (0x342) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2.36 MTVAL (0x343) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.2.37 MIP (0x344) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.38 PMPCFG0 (0x3A0) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.39 PMPCFG1 (0x3A1) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.40 PMPCFG2 (0x3A2) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2.41 PMPCFG3 (0x3A3) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2.42 PMPADDR[PMPADDR0] (0x3B0 + 0x1 * n) (standard read/write) . . . . . . . . . . . . . . 52
3.2.43 TSELECT (0x7A0) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2.44 TDATA1 (0x7A1) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.45 MCONTROL (0x7A1) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.46 ICOUNT (0x7A1) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2.47 ITRIGGER (0x7A1) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.48 ETRIGGER (0x7A1) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2.49 TDATA2 (0x7A2) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2.50 TDATA3 (0x7A3) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.51 TEXTRA (0x7A3) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
2/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
3.2.52 TINFO (0x7A4) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.53 TCONTROL (0x7A5) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2.54 MCONTEXT (0x7A8) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.55 SCONTEXT (0x7AA) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.56 DCSR (0x7B0) (debug-mode-only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.57 DPC (0x7B1) (debug-mode-only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2.58 DSCRATCH0 (0x7B2) (debug-mode-only) . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2.59 DSCRATCH1 (0x7B3) (debug-mode-only) . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.2.60 MILMB (0x7C0) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.2.61 MDLMB (0x7C1) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.62 MECC_CODE (0x7C2) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.63 MNVEC (0x7C3) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2.64 MXSTATUS (0x7C4) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2.65 MPFT_CTL (0x7C5) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2.66 MHSP_CTL (0x7C6) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.67 MSP_BOUND (0x7C7) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . 67
3.2.68 MSP_BASE (0x7C8) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . 67
3.2.69 MDCAUSE (0x7C9) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.2.70 MCACHE_CTL (0x7CA) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . 68
3.2.71 MCCTLBEGINADDR (0x7CB) (non-standard read/write) . . . . . . . . . . . . . . . . . . . 70
3.2.72 MCCTLCOMMAND (0x7CC) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . 70
3.2.73 MCCTLDATA (0x7CD) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . 71
3.2.74 MCOUNTERWEN (0x7CE) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . 72
3.2.75 MCOUNTERINTEN (0x7CF) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . 73
3.2.76 MMISC_CTL (0x7D0) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . 73
3.2.77 MCOUNTERMASK_M (0x7D1) (non-standard read/write) . . . . . . . . . . . . . . . . . . 74
3.2.78 MCOUNTERMASK_S (0x7D2) (non-standard read/write) . . . . . . . . . . . . . . . . . . . 75
3.2.79 MCOUNTERMASK_U (0x7D3) (non-standard read/write) . . . . . . . . . . . . . . . . . . . 75
3.2.80 MCOUNTEROVF (0x7D4) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . 75
3.2.81 MSLIDELEG (0x7D5) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . 76
3.2.82 MCLK_CTL (0x7DF) (non-standard read/write)
. . . . . . . . . . . . . . . . . . . . . . . . 77
3.2.83 DEXC2DBG (0x7E0) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . 77
3.2.84 DDCAUSE (0x7E1) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2.85 UITB (0x800) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.2.86 UCODE (0x801) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.87 UDCAUSE (0x809) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.88 UCCTLBEGINADDR (0x80B) (non-standard read/write) . . . . . . . . . . . . . . . . . . . 82
3.2.89 UCCTLCOMMAND (0x80C) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . 83
3.2.90 SLIE (0x9C4) (non-standard read/write)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.2.91 SLIP (0x9C5) (non-standard read/write)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.2.92 SDCAUSE (0x9C9) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.2.93 SCCTLDATA (0x9CD) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . 86
3.2.94 SCOUNTERINTEN (0x9CF) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . 87
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
3/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
3.2.95 SCOUNTERMASK_M (0x9D1) (non-standard read/write) . . . . . . . . . . . . . . . . . . . 87
3.2.96 SCOUNTERMASK_S (0x9D2) (non-standard read/write) . . . . . . . . . . . . . . . . . . . 88
3.2.97 SCOUNTERMASK_U (0x9D3) (non-standard read/write) . . . . . . . . . . . . . . . . . . . 88
3.2.98 SCOUNTEROVF (0x9D4) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . 89
3.2.99 SCOUNTINHIBIT (0x9E0) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . 89
3.2.100 SHPMEVENT3 (0x9E3) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . 89
3.2.101 SHPMEVENT4 (0x9E4) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . 90
3.2.102 SHPMEVENT5 (0x9E5) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . 90
3.2.103 SHPMEVENT6 (0x9E6) (non-standard read/write) . . . . . . . . . . . . . . . . . . . . . . 91
3.2.104 MCYCLE (0xB00) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.2.105 MINSTRET (0xB02) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.2.106 MHPMCOUNTER3 (0xB03) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . 92
3.2.107 MHPMCOUNTER4 (0xB04) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . 92
3.2.108 MHPMCOUNTER5 (0xB05) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . 92
3.2.109 MHPMCOUNTER6 (0xB06) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . 93
3.2.110 MCYCLEH (0xB80) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.2.111 MINSTRETH (0xB82) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.2.112 MHPMCOUNTER3H (0xB83) (standard read/write)
. . . . . . . . . . . . . . . . . . . . . 94
3.2.113 MHPMCOUNTER4H (0xB84) (standard read/write)
. . . . . . . . . . . . . . . . . . . . . 94
3.2.114 MHPMCOUNTER5H (0xB85) (standard read/write)
. . . . . . . . . . . . . . . . . . . . . 94
3.2.115 MHPMCOUNTER6H (0xB86) (standard read/write)
. . . . . . . . . . . . . . . . . . . . . 95
3.2.116 PMACFG0 (0xBC0) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.2.117 PMACFG1 (0xBC1) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.2.118 PMACFG2 (0xBC2) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.2.119 PMACFG3 (0xBC3) (standard read/write) . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.2.120 PMAADDR[PMAADDR0] (0xBD0 + 0x1 * n) (standard read/write) . . . . . . . . . . . . . 98
3.2.121 CYCLE (0xC00) () . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.2.122 CYCLEH (0xC80) () . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.2.123 MVENDORID (0xF11) (standard read only) . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.2.124 MARCHID (0xF12) (standard read only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.2.125 MIMPID (0xF13) (standard read only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.2.126 MHARTID (0xF14) (standard read only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4 TRAP 处理器的异常和中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
.
4.1
RISC-V 处理器 TRAP 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.1.1
异常 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.1.2
中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.1.3
平台中断控制器 PLIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.1.4
软件中断控制器 PLICSW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.1.5
机器定时器 MCHTMR
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2
TRAP 和处理器特权模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.3
中断嵌套 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.4
中断向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.5
中断响应流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
4/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
5 机器定时器 MCHTMR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
.
5.1
特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.2
功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.2.1
计时与定时功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.2.2
计时器重置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.3
MCHTMR 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.4
MCHTMR 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.4.1
MTIME (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.4.2
MTIMECMP (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6 平台级中断控制器 PLIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
.
6.1
特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.2
功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.2.1
向量式中断扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.2.2
中断优先级抢占 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.3
PLIC 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.4
PLIC 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.4.1
FEATURE (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.4.2
PRIORITY (0x4 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.4.3
PENDING (0x1000 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6.4.4
TRIGGER (0x1080 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6.4.5
NUMBER (0x1100) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
6.4.6
INFO (0x1104) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
6.4.7
TARGETINT[INTEN] (0x2000 + 0x80 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . . . . . 120
6.4.8
TARGETCONFIG[THRESHOLD] (0x200000 + 0x1000 * n) . . . . . . . . . . . . . . . . . . 121
6.4.9
TARGETCONFIG[CLAIM] (0x200004 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . 121
6.4.10 TARGETCONFIG[PPS] (0x200400 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . 122
7 平台级软件中断控制器 PLICSW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
.
7.1
特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2
功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3
PLICSW 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3.1
PLICSW 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3.2
PENDING (0x1000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3.3
INTEN (0x2000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.3.4
CLAIM (0x200004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8 电源管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
.
8.1
电源系统结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.2
电源供电系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.2.1
开关电源 DCDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.2.2
电源管理域线性稳压器 LDOPMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.2.3
OTP 线性稳压器 LDOOTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.3
IO 供电 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.4
电源引脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
5/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
8.5
上电和掉电时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.6
低功耗概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.7
电源管理功能相关 IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
8.8
VPMC 欠压检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
9 系统复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
.
9.1
复位概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.2
全局复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.3
系统电源域的复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
10 时钟系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
.
10.1 时钟系统概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.2 时钟源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.2.1 32KHz 时钟源 CLK_32K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.2.2 24MHz 时钟源 CLK_24M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.2.3 锁相环 PLL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
10.3 功能时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
10.4 直接使用时钟源的模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
11 电池备份域管理器 BCFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
.
11.1 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.2 CLK_32K 时钟源管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3 电池备份域复位控制 BPOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3.1 引脚复位配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3.2 电池备份域低功耗管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.4 电池备份域按键控制 BUTN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
11.4.1 电源按键和电源按键指示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
11.4.2 唤醒按键和唤醒按键指示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
11.5 按键状态检测和中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
11.6 BCFG 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.7 BCFG 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.7.1 VBG_CFG (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.7.2 IRC32K_CFG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
11.7.3 XTAL32K_CFG (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
11.7.4 CLK_CFG (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
11.8 BPOR 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
11.9 BPOR 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
11.9.1 POR_CAUSE (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
11.9.2 POR_SELECT (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
11.9.3 POR_CONFIG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
11.9.4 POR_CONTROL (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
11.10 BUTN 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11.11 BUTN 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11.11.1 BTN_STATUS (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11.11.2 BTN_IRQ_MASK (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
6/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
11.11.3 LED_INTENSE (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
12 电源管理域配置模块 PCFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
.
12.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12.2.1 线性稳压器 LDOOTP 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12.2.2 开关电源 DCDC 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12.2.3 电源管理域模块的时钟门控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12.2.4 系统电源域唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
12.2.5 调试控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
12.2.6 电源管理域复位控制模块 PPOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
12.3 PCFG 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
12.4 PCFG 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
12.4.1 BANDGAP (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
12.4.2 LDO1P1 (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
12.4.3 LDO2P5 (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
12.4.4 DCDC_MODE (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
12.4.5 DCDC_LPMODE (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
12.4.6 DCDC_PROT (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
12.4.7 DCDC_CURRENT (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
12.4.8 DCDC_ADVMODE (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
12.4.9 DCDC_ADVPARAM (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
12.4.10 DCDC_MISC (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
12.4.11 DCDC_DEBUG (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
12.4.12 DCDC_START_TIME (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
12.4.13 DCDC_RESUME_TIME (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
12.4.14 POWER_TRAP (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
12.4.15 WAKE_CAUSE (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
12.4.16 WAKE_MASK (0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
12.4.17 SCG_CTRL (0x4C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
12.4.18 DEBUG_STOP (0x50) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
12.4.19 RC24M (0x60) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
12.4.20 RC24M_TRACK (0x64) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
12.4.21 TRACK_TARGET (0x68) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
12.4.22 STATUS (0x6C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
12.5 PPOR 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
12.6 PPOR 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
12.6.1 RESET_FLAG (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
12.6.2 RESET_STATUS (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
12.6.3 RESET_HOLD (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
12.6.4 RESET_ENABLE (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
12.6.5 RESET_HOT (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
12.6.6 RESET_COLD (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
12.6.7 SOFTWARE_RESET (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
7/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
13 系统控制模块 SYSCTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
.
13.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.2 功能时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.3 CPU 启动管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.3.1 启动管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.4 系统电源域资源管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.4.1 资源节点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.4.2 资源节点的链式结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
13.4.3 资源节点的自动关闭机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
13.4.4 资源节点保持开启 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
13.4.5 功能模块与处理器的连接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
13.4.6 资源节点的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
13.5 低功耗管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
13.5.1 处理器的低功耗模式及唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
13.5.2 低功耗模式下资源节点的状态保持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
13.6 时钟测量模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
13.7 SYSCTL 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
13.8 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
13.8.1 RESOURCE (0x0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
13.8.2 GROUP0[VALUE] (0x800 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
13.8.3 GROUP0[SET] (0x804 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
13.8.4 GROUP0[CLEAR] (0x808 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
13.8.5 GROUP0[TOGGLE] (0x80C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
13.8.6 AFFILIATE[VALUE] (0x900 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
13.8.7 AFFILIATE[SET] (0x904 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
13.8.8 AFFILIATE[CLEAR] (0x908 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
13.8.9 AFFILIATE[TOGGLE] (0x90C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
13.8.10 RETENTION[VALUE] (0x920 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
13.8.11 RETENTION[SET] (0x924 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
13.8.12 RETENTION[CLEAR] (0x928 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
13.8.13 RETENTION[TOGGLE] (0x92C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 185
13.8.14 POWER[STATUS] (0x1000 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
13.8.15 POWER[LF_WAIT] (0x1004 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
13.8.16 POWER[OFF_WAIT] (0x100C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
13.8.17 RESET[CONTROL] (0x1400 + 0x10 * n)
. . . . . . . . . . . . . . . . . . . . . . . . . . . 187
13.8.18 RESET[CONFIG] (0x1404 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
13.8.19 RESET[COUNTER] (0x140C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
13.8.20 CLOCK_CPU (0x1800 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
13.8.21 CLOCK (0x1804 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
13.8.22 ADCCLK (0x1C00 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
13.8.23 DACCLK (0x1C0C + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
13.8.24 I2SCLK (0x1C10 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
13.8.25 GLOBAL00 (0x2000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
8/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
13.8.26 MONITOR[CONTROL] (0x2400 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 193
13.8.27 MONITOR[CURRENT] (0x2404 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 194
13.8.28 MONITOR[LOW_LIMIT] (0x2408 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . 194
13.8.29 MONITOR[HIGH_LIMIT] (0x240C + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . 195
13.8.30 CPU[LP] (0x2800 + 0x400 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
13.8.31 CPU[LOCK] (0x2804 + 0x400 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
13.8.32 CPU[GPR] (0x2808 + 0x400 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . . . . . . . . . 197
13.8.33 CPU[WAKEUP_STATUS] (0x2840 + 0x400 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . 197
13.8.34 CPU[WAKEUP_ENABLE] (0x2880 + 0x400 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . 197
14 锁相环控制器 PLLCTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
.
14.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.2.1 XTAL 振荡器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.2.2 PLL 参考时钟设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.2.3 PLL 工作频率配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.2.4 PLL 扩谱模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.2.5 PLL 输出分频器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
14.3 PLLCTL 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
14.3.1 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
14.3.2 XTAL (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
14.3.3 PLL[MFI] (0x80 + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
14.3.4 PLL[MFN] (0x84 + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.3.5 PLL[MFD] (0x88 + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.3.6 PLL[SS_STEP] (0x8C + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.3.7 PLL[SS_STOP] (0x90 + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
14.3.8 PLL[CONFIG] (0x94 + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
14.3.9 PLL[LOCKTIME] (0x98 + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
14.3.10 PLL[STEPTIME] (0x9C + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
14.3.11 PLL[ADVANCED] (0xA0 + 0x80 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
14.3.12 PLL[DIV] (0xC0 + 0x80 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
15 低功耗管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
.
15.1 运行模式 RUN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
15.2 等待模式 WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
15.3 停止模式 STOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
15.4 休眠模式 STANDBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
15.5 关机模式 SHUTDOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
15.6 低功耗总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
16 系统内存映射. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
.
16.1 系统内存映射 System Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
17 OTP 映射表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
.
18 总线. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
.
18.1 总线结构概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
9/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
18.2 总线配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
18.2.1 AXI 系统总线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
18.2.2 AHB/APB 外设总线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
19 BootROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
.
19.1 BootROM 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
19.2 启动流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
19.2.1 启动流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
19.2.2 XPI NOR 启动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
19.2.2.1 支持的 Serial NOR 设备
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
19.2.2.2 FLASH 的接入方式
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
19.2.2.3 XPI NOR 启动流程
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
19.2.2.4 XPI NOR 启动镜像布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
19.2.2.5 原地解密执行
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
19.2.3 串行启动 (Serial Boot) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
19.2.4 在系统编程 (In-System-Programming)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
19.2.4.1 命令协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
19.2.5 串口通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
19.2.5.1 载荷包 (Payload Packet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
19.2.5.2 确认包 (ACK Packet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
19.2.6 USB-HID 通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
19.2.6.1 USB-HID 描述符信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
19.2.6.2 USB 端点信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
19.2.6.3 USB-HID 通信协议
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
19.3 启动镜像 (Boot Image) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
19.3.1 固件容器头 (FW Container Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
19.3.2 固件信息表 (FW Info Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
19.3.3 设备配置信息块 (Device Configuration Info Block) . . . . . . . . . . . . . . . . . . . . . . . 238
19.3.3.1 XPI NOR 配置信息
19.3.3.2 唤醒验证信息
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
19.3.3.3 OTP 解锁信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
19.3.4 签名块 (Signature Block) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
19.3.4.1 签名块头部 (Signature Block Header) . . . . . . . . . . . . . . . . . . . . . . . . 244
19.3.5 根密钥表 (SRK Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
19.3.5.1 根密钥表头 (SRK Table Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
19.3.5.2 根密钥表项 (SRK Table Item)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
19.3.6 签名信息 (Signature Info) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
19.3.7 证书 (Certificate) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
19.3.8 固件 BLOB(FW BLOB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
19.3.9 命令容器 (Command Container) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
19.3.9.1 命令容器头 (Command Container Header) . . . . . . . . . . . . . . . . . . . . . 249
19.3.9.2 命令容器支持的命令
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
19.3.9.3 加密命令容器 (Encrypted Command Container)
. . . . . . . . . . . . . . . . . . 251
19.4 安全启动 (Secure Boot) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
10/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
19.4.1 安全启动简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
19.4.2 安全启动流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
19.4.3 固件容器验签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
19.4.4 固件的验签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
19.4.5 公钥的撤销 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
19.5 低功耗唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
19.5.1 快速跳转 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
19.5.2 强检验跳转 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
19.5.3 禁用低功耗唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
19.6 Debug 接口权限管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
19.7 ROM API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
19.7.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
19.7.2 run_bootloader API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
19.7.2.1 示例:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
19.7.3 OTP API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
19.7.3.1 init
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
19.7.3.2 read_from_shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
19.7.3.3 read_from_ip
19.7.3.4 program
19.7.3.5 reload
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
19.7.3.6 lock_otp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
19.7.3.7 set_configuratable_region
19.7.3.8 write_shadow_register
19.7.3.9 示例
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
19.7.4 XPI 底层驱动 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
19.7.4.1 get_default_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
19.7.4.2 get_default_device_config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
19.7.4.3 init
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
19.7.4.4 config_ahb_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
19.7.4.5 config_device
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
19.7.4.6 update_instr_table
19.7.4.7 transfer_blocking
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
19.7.4.8 software_reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
19.7.4.9 is_idle
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
19.7.4.10 update_dllcr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
19.7.5 XPI NOR API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
19.7.5.1 get_config
19.7.5.2 init
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
19.7.5.3 enable_write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
19.7.5.4 get_status
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
19.7.5.5 wait_busy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
19.7.5.6 erase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
19.7.5.7 erase_chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
11/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
19.7.5.8 erase_sector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
19.7.5.9 erase_block
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
19.7.5.10 program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
19.7.5.11 read
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
19.7.5.12 page_program_nonblocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
19.7.5.13 erase_sector_nonblocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
19.7.5.14 erase_block_nonblocking
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
19.7.5.15 erase_chip_nonblocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
19.7.6 XPI RAM API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
19.7.6.1 get_config
19.7.6.2 init
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
19.7.7 安全启动 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
19.7.8 SM3 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
19.7.9 SM4 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
19.8 SoC 专有信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
19.8.1 OTP 映射表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
19.8.2 BootROM 支持的外设信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
19.8.2.1 XPI 信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
19.8.2.2 UART 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
19.8.2.3 USB 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
19.8.2.4 启动模式 (BOOT_MODE) 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
19.8.3 BootROM 预占用的寄存器信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
19.8.4 通用寄存器配置支持的寄存器范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
19.8.5 BootROM 内存映射表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
19.8.6 BootROM 生命周期 (Lifecycle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
20 引脚配置及功能 PINMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
.
20.1 IO 功能分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
20.2 电源管理域 IO 功能分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
20.3 电池备份域 IO 功能分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
20.4 系统电源域外设管脚分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
20.5 电源管理域外设管脚分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
20.6 电池备份域外设管脚分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
20.7 特殊功能引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
20.8 IO 复位状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
21 输入输出模块概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
.
21.1 IO 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
21.2 GPIO 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
21.3 GPIO 管理器 GPIOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
22 IO 控制器 IOC,PIOC,BIOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
.
22.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
22.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
22.2.1 IO 基本配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
12/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
22.2.2 IO 外设功能配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
22.3 IOC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
22.3.1 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
22.3.2 PAD[FUNC_CTL] (0x0 + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
22.3.3 PAD[PAD_CTL] (0x4 + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
23 GPIO 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
.
23.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
23.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
23.2.1 GPIO 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
23.2.2 GPIO 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
23.3 GPIO 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
23.4 GPIO 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
23.4.1 DI[VALUE] (0x0 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
23.4.2 DO[VALUE] (0x100 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
23.4.3 DO[SET] (0x104 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
23.4.4 DO[CLEAR] (0x108 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
23.4.5 DO[TOGGLE] (0x10C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
23.4.6 OE[VALUE] (0x200 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
23.4.7 OE[SET] (0x204 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
23.4.8 OE[CLEAR] (0x208 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
23.4.9 OE[TOGGLE] (0x20C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
23.4.10 IF[VALUE] (0x300 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
23.4.11 IE[VALUE] (0x400 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
23.4.12 IE[SET] (0x404 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
23.4.13 IE[CLEAR] (0x408 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
23.4.14 IE[TOGGLE] (0x40C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
23.4.15 PL[VALUE] (0x500 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
23.4.16 PL[SET] (0x504 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
23.4.17 PL[CLEAR] (0x508 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
23.4.18 PL[TOGGLE] (0x50C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
23.4.19 TP[VALUE] (0x600 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
23.4.20 TP[SET] (0x604 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
23.4.21 TP[CLEAR] (0x608 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
23.4.22 TP[TOGGLE] (0x60C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
23.4.23 AS[VALUE] (0x700 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
23.4.24 AS[SET] (0x704 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
23.4.25 AS[CLEAR] (0x708 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
23.4.26 AS[TOGGLE] (0x70C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
24 GPIO 管理器 GPIOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
.
24.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
24.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
24.2.1 GPIO 分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
13/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
24.2.2 访问控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
24.3 GPIOM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
24.4 GPIOM 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
24.4.1 ASSIGN[PIN] (0x0 + 0x80 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
25 存储器概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
.
25.1 内部 SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
25.1.1 本地存储器 Local Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
25.1.2 通用内存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
25.2 通用寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
25.3 串行总线控制器 XPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
25.4 多功能外部存储器控制器 FEMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
25.5 SDXC 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
25.6 只读存储器 ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
25.7 一次性可编程存储器 OTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
26 OTP 和 OTP 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
.
26.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
26.1.1 OTP 控制器特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
26.2 OTP 控制器功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
26.2.1 OTP 影子寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
26.3 OTP 熔丝寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
26.4 OTP 操作引擎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
26.5 OTP 读写保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
26.6 OTP 控制器寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
26.7 OTP 控制器寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
26.7.1 SHADOW (0x0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
26.7.2 SHADOW_LOCK (0x200 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
26.7.3 FUSE (0x400 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
26.7.4 FUSE_LOCK (0x600 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
26.7.5 UNLOCK (0x800) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
26.7.6 DATA (0x804) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
26.7.7 ADDR (0x808) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
26.7.8 CMD (0x80C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
26.7.9 LOAD_REQ (0xA00) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
26.7.10 LOAD_COMP (0xA04)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
26.7.11 REGION (0xA20 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
26.7.12 INT_FLAG (0xC00) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
26.7.13 INT_EN (0xC04) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
27 串行总线控制器 XPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
.
27.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
27.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
27.2.1 外部器件连接配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
27.2.2 XPI 地址映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
14/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
27.2.3 外部器件地址转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
27.2.4 指令表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
27.2.5 总线寻址访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
27.2.6 寄存器指令访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
27.2.7 XPI 时间特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
27.2.8 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
27.3 XPI 配置和使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
28 多功能外部存储控制器 FEMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
.
28.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
28.2 FEMC 工作机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
28.2.1 FEMC 信号分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
28.2.2 FEMC 信号说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
28.2.3 FEM 地址映射配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
28.3 DRAM 控制器功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
28.3.1 初始化流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
28.3.2 Delay Chain 配置过程
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
28.3.3 DRAM 控制时序图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
28.3.3.1 DRAM 读写时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
28.3.3.2 DRAM REFRESH 时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
28.4 SRAM 控制器功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
28.4.1 数据地址非复用模式 Non-ADMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
28.4.2 数据地址复用模式 ADMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
28.4.3 SRAM 控制器时序参数配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
28.4.4 SRAM 控制器应用提示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
28.5 FEMC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
28.6 FEMC 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
28.6.1 CTRL (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
28.6.2 IOCTRL (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
28.6.3 BMW0 (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
28.6.4 BMW1 (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
28.6.5 BR (0x10 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
28.6.6 INTEN (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
28.6.7 INTR (0x3C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
28.6.8 SDRCTRL0 (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
28.6.9 SDRCTRL1 (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
28.6.10 SDRCTRL2 (0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
28.6.11 SDRCTRL3 (0x4C)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
28.6.12 SRCTRL0 (0x70) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
28.6.13 SRCTRL1 (0x74) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
28.6.14 SADDR (0x90) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
28.6.15 DATSZ (0x94) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
28.6.16 BYTEMSK (0x98) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
28.6.17 IPCMD (0x9C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
15/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
28.6.18 IPTX (0xA0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
28.6.19 IPRX (0xB0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
28.6.20 STAT0 (0xC0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
28.6.21 DLYCFG (0x150) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
29 SD 控制器 SDXC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
.
29.1 功能简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
29.2 初始化流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
29.3 数据传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
29.3.1 CPU 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
29.3.2 SDMA 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
29.3.3 ADMA2 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
29.3.4 ADMA3 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
29.4 SDXC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
29.5 SDXC 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
29.5.1 SDMASA (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
29.5.2 BLK_ATTR (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
29.5.3 CMD_ARG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
29.5.4 CMD_XFER (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
29.5.5 RESP (0x10 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
29.5.6 BUF_DATA (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
29.5.7 PSTATE (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
29.5.8 PROT_CTRL (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
29.5.9 SYS_CTRL (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
29.5.10 INT_STAT (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
29.5.11 INT_STAT_EN (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
29.5.12 INT_SIGNAL_EN (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
29.5.13 AC_HOST_CTRL (0x3C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
29.5.14 CAPABILITIES1 (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
29.5.15 CAPABILITIES2 (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
29.5.16 CURR_CAPABILITIES1 (0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
29.5.17 CURR_CAPABILITIES2 (0x4C)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
29.5.18 FORCE_EVENT (0x50) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
29.5.19 ADMA_ERR_STAT (0x54) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
29.5.20 ADMA_SYS_ADDR (0x58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
29.5.21 PRESET (0x60 + 0x2 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
29.5.22 ADMA_ID_ADDR (0x78) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
29.5.23 P_EMBEDDED_CNTRL (0xE6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
29.5.24 P_VENDOR_SPECIFIC_AREA (0xE8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
29.5.25 P_VENDOR2_SPECIFIC_AREA (0xEA)
. . . . . . . . . . . . . . . . . . . . . . . . . . . 461
29.5.26 SLOT_INTR_STATUS (0xFC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
29.5.27 CQVER (0x180) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
29.5.28 CQCAP (0x184) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
29.5.29 CQCFG (0x188) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
16/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
29.5.30 CQCTL (0x18C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
29.5.31 CQIS (0x190) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
29.5.32 CQISE (0x194) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
29.5.33 CQISGE (0x198) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
29.5.34 CQIC (0x19C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
29.5.35 CQTDLBA (0x1A0)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
29.5.36 CQTDBR (0x1A8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
29.5.37 CQTCN (0x1AC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
29.5.38 CQDQS (0x1B0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
29.5.39 CQDPT (0x1B4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
29.5.40 CQTCLR (0x1B8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
29.5.41 CQSSC1 (0x1C0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
29.5.42 CQSSC2 (0x1C4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
29.5.43 CQCRDCT (0x1C8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
29.5.44 CQRMEM (0x1D0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
29.5.45 CQTERRI (0x1D4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
29.5.46 CQCRI (0x1D8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
29.5.47 CQCRA (0x1DC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
29.5.48 MSHC_VER_ID (0x500) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
29.5.49 MSHC_VER_TYPE (0x504)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
29.5.50 EMMC_BOOT_CTRL (0x52C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
29.5.51 AUTO_TUNING_CTRL (0x540) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
29.5.52 AUTO_TUNING_STAT (0x544) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
29.5.53 MISC_CTRL0 (0x3000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
29.5.54 MISC_CTRL1 (0x3004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
30 FFA、DMA 和信箱概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
.
30.1 快速傅里叶变换和数字滤波器加速模块 FFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
30.2 DMA 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
30.3 DMA 请求路由器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
30.4 通讯信箱 MBX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
31 快速傅里叶变换和数字滤波器加速模块 FFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
.
31.1 特性总结和功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
31.2 FFA 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
31.3 FFA 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
31.3.1 CTRL (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
31.3.2 STATUS (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
31.3.3 INT_EN (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
31.3.4 OP_CTRL (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
31.3.5 OP_CMD (0x24)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
31.3.6 OP_REG0 (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
31.3.7 OP_FIR_MISC (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
31.3.8 OP_FFT_MISC (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
17/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
31.3.9 OP_REG1 (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
31.3.10 OP_FIR_MISC1 (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
31.3.11 OP_REG2 (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
31.3.12 OP_FFT_INRBUF (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
31.3.13 OP_REG3 (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
31.3.14 OP_FIR_INBUF (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
31.3.15 OP_REG4 (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
31.3.16 OP_FIR_COEFBUF (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
31.3.17 OP_FFT_OUTRBUF (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
31.3.18 OP_REG5 (0x3C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
31.3.19 OP_FIR_OUTBUF (0x3C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
31.3.20 OP_REG6 (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
31.3.21 OP_REG7 (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
31.4 FFA 配置使用简单说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
31.4.1 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
31.4.2 FFT(IFFT)模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
31.4.3 FIR 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
31.4.4 继发命令的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
31.4.5 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
32 DMA 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
.
32.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
32.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
32.2.1 DMA 硬件握手 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
32.2.2 DMA 链式传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
32.2.3 数据顺序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
32.3 DMA 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
32.4 DMA 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
32.4.1 DMACFG (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
32.4.2 DMACTRL (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
32.4.3 CHABORT (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
32.4.4 INTSTATUS (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
32.4.5 CHEN (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
32.4.6 CHCTRL[CTRL] (0x40 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
32.4.7 CHCTRL[TRANSIZE] (0x44 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
32.4.8 CHCTRL[SRCADDR] (0x48 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
32.4.9 CHCTRL[SRCADDRH] (0x4C + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
32.4.10 CHCTRL[DSTADDR] (0x50 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
32.4.11 CHCTRL[DSTADDRH] (0x54 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
32.4.12 CHCTRL[LLPOINTER] (0x58 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
32.4.13 CHCTRL[LLPOINTERH] (0x5C + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 508
33 DMA 请求路由器 DMAMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
.
33.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
18/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
33.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
33.3 DMAMUX 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
33.4 DMAMUX 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
33.4.1 MUXCFG (0x0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
34 通信信箱 MBX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
.
34.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
34.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
34.2.1 MBX 寄存器访问接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
34.2.2 FIFO 管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
34.2.3 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
34.3 MBX 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
34.4 MBX 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
34.4.1 CR (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
34.4.2 SR (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
34.4.3 TXREG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
34.4.4 RXREG (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
34.4.5 TXWRD (0x10 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
34.4.6 RXWRD (0x20 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
35 音频外设概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
.
35.1 集成电路内置音频总线 I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
35.2 数字音频输出 DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
35.3 数字麦克风 PDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
36 集成电路内置音频总线 I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
.
36.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
36.2 I2S 架构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
36.3 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
36.4 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
36.4.1 I2S 一般说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
36.4.2 设置分频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
36.4.2.1 主模式和从模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
36.4.3 发送缓冲区和接收缓冲区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
36.4.4 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
36.4.5 DMA 传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
36.4.6 支持的传输格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
36.4.6.1 I2S Philips 标准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
36.4.6.2 MSB 对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
36.4.6.3 LSB 对齐模式
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
36.4.6.4 PCM 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
36.4.6.5 TDM I2S Philips 标准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
36.4.6.6 TDM MSB 对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
36.4.6.7 TDM LSB 对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
36.4.6.8 TDM PCM 模式
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
19/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
36.5 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
36.6 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
36.6.1 CTRL (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
36.6.2 RFIFO_FILLINGS (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
36.6.3 TFIFO_FILLINGS (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
36.6.4 FIFO_THRESH (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
36.6.5 STA (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
36.6.6 RXD (0x20 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
36.6.7 TXD (0x30 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
36.6.8 CFGR (0x50) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
36.6.9 MISC_CFGR (0x58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
36.6.10 RXDSLOT (0x60 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
36.6.11 TXDSLOT (0x70 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
36.7 I2S 配置使用简单说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
36.7.1 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
36.7.2 使能 TX 流程
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
36.7.3 使能 RX 流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
36.7.4 注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
37 数字麦克风 PDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
.
37.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
37.2 PDM 架构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
37.3 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
37.4 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
37.4.1 PDM 一般说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
37.4.2 PDM_CLK 的产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
37.4.3 信号流图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
37.4.3.1 PDM 信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
37.4.3.2 参考信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
37.4.4 发送缓冲区和接收缓冲区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
37.4.5 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
37.4.6 DMA 传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
37.4.7 SNR 的估算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
37.5 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
37.6 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
37.6.1 CTRL (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
37.6.2 CH_CTRL (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
37.6.3 ST (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
37.6.4 CH_CFG (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
37.6.5 CIC_CFG (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
37.6.6 CTRL_INBUF (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
37.6.7 CTRL_FILT0 (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
37.6.8 CTRL_FILT1 (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
37.6.9 RUN (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
20/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
37.6.10 MEMADDR (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
37.6.11 MEMDATA (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
37.6.12 HPF_MA (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
37.6.13 HPF_B (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
37.7 PDM 配置使用简单说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
37.7.1 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
37.7.2 使能流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
38 数字音频输出 DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
.
38.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
38.2 DAO 架构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
38.3 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
38.4 功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
38.4.1 DAO 一般说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
38.4.2 DAO 输出波形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
38.4.3 相应的 I2S 的配置,以及槽通道的选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
38.4.4 信号流图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
38.4.4.1 PCM 信号的滤波和采样变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
38.4.4.2 高通滤波器 HPF 的配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
38.4.4.3 参考信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
38.4.5 发送缓冲区和接收缓冲区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
38.4.6 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
38.4.7 DMA 传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
38.5 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
38.6 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
38.6.1 CTRL (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
38.6.2 CMD (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
38.6.3 RX_CFGR (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
38.6.4 RXSLT (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
38.6.5 HPF_MA (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
38.6.6 HPF_B (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
38.7 DAO 配置使用简单说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
38.7.1 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
38.7.2 使能流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
39 电机系统概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
.
39.1 PWM 定时器 PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
39.2 正交编码器接口 QEI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
39.3 霍尔传感器接口 HALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
39.4 互联管理器 TRGM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
39.4.1 互联管理器输入分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
39.4.2 互联管理器输出分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
39.4.3 互联管理器 DMA 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
39.4.4 互联管理器数字滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
21/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
39.5 同步定时器 SYNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
40 PWM 定时器 PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
.
40.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
40.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
40.2.1 定时器时间基准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
40.2.2 PWM 生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
40.2.3 PWM 生成举例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
40.2.4 PWM 输出控制概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
40.2.5 PWM 互补控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
40.2.6 死区控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
40.2.7 输出取反 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
40.2.8 强制输出控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
40.2.9 故障保护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
40.2.10 Debug 模式支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
40.2.11 输入捕获模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
40.2.12 影子寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
40.2.13 中断和 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
40.3 PWM 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
40.4 PWM 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
40.4.1 UNLK (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
40.4.2 STA (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
40.4.3 RLD (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
40.4.4 CMP (0xC + 0x4 * m) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
40.4.5 FRCMD (0x78) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
40.4.6 SHLK (0x7C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
40.4.7 CHCFG (0x80 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
40.4.8 GCR (0xF0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
40.4.9 SHCR (0xF4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
40.4.10 CAPPOS (0x100 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
40.4.11 CNT (0x170) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
40.4.12 CAPNEG (0x180 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
40.4.13 CNTCOPY (0x1F0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
40.4.14 PWMCFG (0x200 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
40.4.15 SR (0x220) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
40.4.16 IRQEN (0x224) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
40.4.17 DMAEN (0x22C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
40.4.18 CMPCFG (0x230 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
41 正交解码器接口 QEI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
.
41.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
41.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
41.2.1 正交信号解码逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
41.2.2 相位计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
22/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
41.2.3 Z 相计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
41.2.4 相位计数器校正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
41.2.5 H 相输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
41.2.6 测速计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
41.2.7 方向模式和上下模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
41.2.8 位置匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
41.2.9 定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
41.2.10 看门狗计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
41.2.11 计数器读取和快照功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
41.2.12 计数器复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
41.2.13 计数器暂停 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
41.2.14 中断、DMA、触发输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
41.3 QEI 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
41.4 QEI 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
41.4.1 CR (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
41.4.2 PHCFG (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
41.4.3 WDGCFG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
41.4.4 PHIDX (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
41.4.5 TRGOEN (0x10)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
41.4.6 READEN (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
41.4.7 ZCMP (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
41.4.8 PHCMP (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
41.4.9 SPDCMP (0x20)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
41.4.10 DMAEN (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
41.4.11 SR (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
41.4.12 IRQEN (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
41.4.13 COUNT[Z] (0x30 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
41.4.14 COUNT[PH] (0x34 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
41.4.15 COUNT[SPD] (0x38 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
41.4.16 COUNT[TMR] (0x3C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
41.4.17 SPDHIS (0x70 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
42 霍尔传感器接口 HALL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
.
42.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
42.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
42.2.1 U,V,W 相输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
42.2.2 U,V,W 计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
42.2.3 定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
42.2.4 提前触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
42.2.5 延时事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
42.2.6 看门狗计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
42.2.7 计数器读取和快照功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
42.2.8 计数器复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
42.2.9 中断、DMA、触发输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
23/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
42.3 HALL 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
42.4 HALL 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
42.4.1 CR (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
42.4.2 PHCFG (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
42.4.3 WDGCFG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
42.4.4 UVWCFG (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
42.4.5 TRGOEN (0x10)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
42.4.6 READEN (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
42.4.7 DMAEN (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
42.4.8 SR (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
42.4.9 IRQEN (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
42.4.10 COUNT[W] (0x30 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
42.4.11 COUNT[V] (0x34 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
42.4.12 COUNT[U] (0x38 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
42.4.13 COUNT[TMR] (0x3C + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
42.4.14 HIS[HIS0] (0x70 + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
42.4.15 HIS[HIS1] (0x74 + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
43 互联管理器 TRGM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
.
43.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
43.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
43.2.1 管理器信号输入输出复选器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
43.2.2 输出配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
43.2.3 数字滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
43.2.4 DMA 请求管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
43.3 TRGM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
43.4 TRGM 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
43.4.1 FILTCFG (0x0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
43.4.2 TRGOCFG (0x100 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
43.4.3 DMACFG (0x200 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
43.4.4 GCR (0x400) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
44 同步定时器 SYNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
.
44.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
44.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
44.3 SYNT 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
44.4 SYNT 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
44.4.1 GCR (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
44.4.2 RLD (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
44.4.3 CNT (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
44.4.4 CMP (0x20 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
45 定时器概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
.
45.1 通用定时器 GPTMR, NTMR, PTMR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
45.2 看门狗定时器 WDG, PWDG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
24/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
45.3 实时时钟 RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
46 定时器 TMR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
.
46.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
46.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
46.2.1 定时器时间基准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
46.2.2 输出比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
46.2.3 输入捕获 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
46.2.4 中断和 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
46.2.5 调试模式支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
46.3 定时器寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
46.3.1 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
46.3.2 CHANNEL[CR] (0x0 + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
46.3.3 CHANNEL[CMP] (0x4 + 0x40 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . . . . . . . . . 640
46.3.4 CHANNEL[RLD] (0xC + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
46.3.5 CHANNEL[CNTUPTVAL] (0x10 + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 641
46.3.6 CHANNEL[CAPPOS] (0x20 + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
46.3.7 CHANNEL[CAPNEG] (0x24 + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
46.3.8 CHANNEL[CAPPRD] (0x28 + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
46.3.9 CHANNEL[CAPDTY] (0x2C + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
46.3.10 CHANNEL[CNT] (0x30 + 0x40 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
46.3.11 SR (0x200) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
46.3.12 IRQEN (0x204) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
46.3.13 GCR (0x208) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
47 看门狗 WDG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
.
47.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
47.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
47.2.1 WDG 超时中断和超时复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
47.2.2 WDG 喂狗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
47.2.3 WDG 寄存器解锁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
47.3 WDG 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
47.4 WDOG 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
47.4.1 CTRL (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
47.4.2 RESTART (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
47.4.3 WREN (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
47.4.4 ST (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
48 实时时钟 RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
.
48.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
48.2 时间计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
48.3 定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
48.4 RTC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
48.5 RTC 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
48.5.1 SECOND (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
25/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
48.5.2 SUBSEC (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
48.5.3 SEC_SNAP (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
48.5.4 SUB_SNAP (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
48.5.5 ALARM0 (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
48.5.6 ALARM0_INC (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
48.5.7 ALARM1 (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
48.5.8 ALARM1_INC (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
48.5.9 ALARM_FLAG (0x20)
48.5.10 ALARM_EN (0x24)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
49 通讯外设概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
.
49.1 通用异步收发器 UART,PUART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
49.2 串行外设总线 SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
49.3 集成电路总线 I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
49.4 控制器局域网 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
49.5 精确时间协议模块 PTPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
49.6 以太网控制器 ENET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
49.7 通用串行总线 USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
50 通用异步收发器 UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
.
50.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
50.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
50.2.1 UART 发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
50.2.2 UART 接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
50.2.3 波特率控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
50.2.4 Modem 控制器
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
50.2.5 Loopback 模式
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
50.2.6 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
50.3 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
50.4 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
50.4.1 CFG (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
50.4.2 OSCR (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
50.4.3 RBR (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
50.4.4 THR (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
50.4.5 DLL (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
50.4.6 IER (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
50.4.7 DLM (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
50.4.8 IIR (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
50.4.9 FCR (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
50.4.10 LCR (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
50.4.11 MCR (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
50.4.12 LSR (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
50.4.13 MSR (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
50.4.14 GPR (0x3C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
26/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
51 串行外设总线 SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
.
51.1 SPI 架构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
51.2 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
51.3 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
51.3.1 一般说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
51.3.2 主机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
51.3.3 从机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
51.3.4 2 线模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
51.3.5 4 线模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
51.3.6 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
51.3.7 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
51.4 SPI 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
51.5 SPI 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
51.5.1 TRANSFMT (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
51.5.2 TRANSCTRL (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
51.5.3 CMD (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
51.5.4 ADDR (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
51.5.5 DATA (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
51.5.6 CTRL (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
51.5.7 STATUS (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
51.5.8 INTREN (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
51.5.9 INTRST (0x3C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
51.5.10 TIMING (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
51.5.11 SLVST (0x60) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
51.5.12 SLVDATACNT (0x64) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
51.5.13 CONFIG (0x7C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
52 集成电路总线 I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
.
52.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
52.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
52.2.1 主要功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
52.2.2 时序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
52.2.3 主机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
52.2.4 从机模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
52.3 I2C 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
52.3.1 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
52.3.2 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
52.3.3 CFG (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
52.3.4 INTEN (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
52.3.5 STATUS (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
52.3.6 ADDR (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
52.3.7 DATA (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
52.3.8 CTRL (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
52.3.9 CMD (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
27/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
52.3.10 SETUP (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
52.3.11 TPM (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
53 控制器局域网 CAN 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
.
53.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
53.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
53.2.1 CAN 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
53.2.2 设定波特率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
53.2.3 发送缓冲器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
53.2.4 接受缓冲器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
53.2.5 接收筛选寄存器组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
53.2.6 单次数据发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
53.2.7 取消数据发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
53.2.8 数据接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
53.2.9 错误处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
53.2.10 节点关闭 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
53.2.11 仲裁失败位置捕捉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
53.2.12 回环模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
53.2.13 静默模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
53.2.14 软件复位功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
53.2.15 向上兼容 CAN-FD 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
53.2.16 时间触发 TTCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
53.2.16.1 TTCAN 模式下的 TBUF 行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
53.2.16.2 TTCAN 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
53.2.16.3 TTCAN 时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
53.2.16.4 TTCAN 触发方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
53.2.16.5 TTCAN 触发看门时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
53.2.17 CiA 603 时间戳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
53.2.17.1 时间戳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
53.2.17.2 外部定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704
53.3 CAN 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704
53.3.1 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704
53.3.2 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
53.3.3 RBUF (0x0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
53.3.4 TBUF (0x50 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
53.3.5 TTS (0x98 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
53.3.6 CMD_STA_CMD_CTRL (0xA0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
53.3.7 RTIE (0xA4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
53.3.8 RTIF (0xA5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
53.3.9 ERRINT (0xA6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
53.3.10 LIMIT (0xA7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
53.3.11 S_PRESC (0xA8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
53.3.12 F_PRESC (0xAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
53.3.13 EALCAP (0xB0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
28/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
53.3.14 TDC (0xB1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
53.3.15 RECNT (0xB2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
53.3.16 TECNT (0xB3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
53.3.17 ACFCTRL (0xB4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
53.3.18 TIMECFG (0xB5)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
53.3.19 ACF_EN (0xB6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
53.3.20 ACF (0xB8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
53.3.21 VER (0xBC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
53.3.22 TBSLOT (0xBE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
53.3.23 TTCFG (0xBF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
53.3.24 REF_MSG (0xC0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
53.3.25 TRIG_CFG (0xC4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
53.3.26 TT_TRIG (0xC6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
53.3.27 TT_WTRIG (0xC8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
54 精确时间协议模块 PTPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
.
54.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
54.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
54.2.1 时间戳模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
54.2.2 时间戳捕获和比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
54.2.3 时间戳输出端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
54.3 PTPC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
54.4 PTPC 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
54.4.1 PTPC[CTRL0] (0x0 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
54.4.2 PTPC[CTRL1] (0x4 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
54.4.3 PTPC[TIMEH] (0x8 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
54.4.4 PTPC[TIMEL] (0xC + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
54.4.5 PTPC[TS_UPDTH] (0x10 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
54.4.6 PTPC[TS_UPDTL] (0x14 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
54.4.7 PTPC[ADDEND] (0x18 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
54.4.8 PTPC[TARH] (0x1C + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
54.4.9 PTPC[TARL] (0x20 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
54.4.10 PTPC[PPS_CTRL] (0x2C + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
54.4.11 PTPC[CAPT_SNAPH] (0x30 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 735
54.4.12 PTPC[CAPT_SNAPL] (0x34 + 0x1000 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 736
54.4.13 TIME_SEL (0x2000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
54.4.14 INT_STS (0x2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
54.4.15 INT_EN (0x2008) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
54.4.16 PTPC_CAN_TS_SEL (0x3000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
55 以太网控制器 ENET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
.
55.1 功能简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
55.2 初始化流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
55.3 描述符详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
29/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
55.3.1 发送描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
55.3.2 接收描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
55.3.3 Buffer Size Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
55.4 ENET 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
55.5 ENET 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
55.5.1 MACCFG (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
55.5.2 MACFF (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
55.5.3 HASH_H (0x8)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
55.5.4 HASH_L (0xC)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
55.5.5 GMII_ADDR (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
55.5.6 GMII_DATA (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
55.5.7 FLOWCTRL (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
55.5.8 VLAN_TAG (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
55.5.9 RWKFRMFILT (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
55.5.10 PMT_CSR (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
55.5.11 LPI_CSR (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
55.5.12 LPI_TCR (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773
55.5.13 INTR_STATUS (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
55.5.14 INTR_MASK (0x3C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
55.5.15 MAC_ADDR_0_HIGH (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
55.5.16 MAC_ADDR_0_LOW (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
55.5.17 MAC_ADDR[HIGH] (0x48 + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
55.5.18 MAC_ADDR[LOW] (0x4C + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
55.5.19 XMII_CSR (0xD8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
55.5.20 WDOG_WTO (0xDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
55.5.21 MMC_CNTRL (0x100) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
55.5.22 MMC_INTR_RX (0x104) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
55.5.23 MMC_INTR_TX (0x108) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
55.5.24 MMC_INTR_MASK_RX (0x10C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
55.5.25 MMC_INTR_MASK_TX (0x110) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
55.5.26 TXOCTETCOUNT_GB (0x114) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
55.5.27 TXFRAMECOUNT_GB (0x118)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
55.5.28 TXBROADCASTFRAMES_G (0x11C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
55.5.29 TXMLTICASTFRAMES_G (0x120) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
55.5.30 TX64OCTETS_GB (0x124) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
55.5.31 TX65TO127OCTETS_GB (0x128) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
55.5.32 TX128TO255OCTETS_GB (0x12C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
55.5.33 TX256TO511OCTETS_GB (0x130) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
55.5.34 TX512TO1023OCTETS_GB (0x134)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
55.5.35 TX1024TOMAXOCTETS_GB (0x138) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
55.5.36 RXFRAMECOUNT_GB (0x180) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
55.5.37 MMC_IPC_INTR_MASK_RX (0x200) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
55.5.38 MMC_IPC_INTR_RX (0x208) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
30/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
55.5.39 RXIPV4_GD_FMS (0x210) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
55.5.40 L3_L4_CFG[L3_L4_CTRL] (0x400 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . 799
55.5.41 L3_L4_CFG[L4_ADDR] (0x404 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 801
55.5.42 L3_L4_CFG[L3_ADDR_0] (0x410 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . 801
55.5.43 L3_L4_CFG[L3_ADDR_1] (0x414 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . 802
55.5.44 L3_L4_CFG[L3_ADDR_2] (0x418 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . 802
55.5.45 L3_L4_CFG[L3_ADDR_3] (0x41C + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . 803
55.5.46 VLAN_TAG_INC_RPL (0x584) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
55.5.47 VLAN_HASH (0x588) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
55.5.48 TS_CTRL (0x700) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
55.5.49 SUB_SEC_INCR (0x704) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807
55.5.50 SYST_SEC (0x708) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
55.5.51 SYST_NSEC (0x70C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
55.5.52 SYST_SEC_UPD (0x710) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
55.5.53 SYST_NSEC_UPD (0x714) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
55.5.54 TS_ADDEND (0x718) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
55.5.55 TGTTM_SEC (0x71C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
55.5.56 TGTTM_NSEC (0x720) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
55.5.57 SYSTM_H_SEC (0x724) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
55.5.58 TS_STATUS (0x728) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
55.5.59 PPS_CTRL (0x72C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
55.5.60 AUX_TS_NSEC (0x730) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
55.5.61 AUX_TS_SEC (0x734) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
55.5.62 PPS0_INTERVAL (0x760) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
55.5.63 PPS0_WIDTH (0x764)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
55.5.64 PPS[TGTTM_SEC] (0x780 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
55.5.65 PPS[TGTTM_NSEC] (0x784 + 0x20 * n)
. . . . . . . . . . . . . . . . . . . . . . . . . . . 816
55.5.66 PPS[INTERVAL] (0x788 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
55.5.67 PPS[WIDTH] (0x78C + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
55.5.68 DMA_BUS_MODE (0x1000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
55.5.69 DMA_TX_POLL_DEMAND (0x1004)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
55.5.70 DMA_RX_POLL_DEMAND (0x1008) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
55.5.71 DMA_RX_DESC_LIST_ADDR (0x100C) . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
55.5.72 DMA_TX_DESC_LIST_ADDR (0x1010) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
55.5.73 DMA_STATUS (0x1014) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
55.5.74 DMA_OP_MODE (0x1018) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
55.5.75 DMA_INTR_EN (0x101C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
55.5.76 DMA_MISS_OVF_CNT (0x1020) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
55.5.77 DMA_RX_INTR_WDOG (0x1024) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
55.5.78 DMA_AXI_MODE (0x1028) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
55.5.79 DMA_BUS_STATUS (0x102C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
55.5.80 DMA_CURR_HOST_TX_DESC (0x1048) . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
55.5.81 DMA_CURR_HOST_RX_DESC (0x104C) . . . . . . . . . . . . . . . . . . . . . . . . . . 837
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
31/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
55.5.82 DMA_CURR_HOST_TX_BUF (0x1050) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
55.5.83 DMA_CURR_HOST_RX_BUF (0x1054) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
55.5.84 CTRL2 (0x3008) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
56 通用串行总线 USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
.
56.1 功能简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
56.2 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
56.3 工作流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
56.3.1 usbphy 初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
56.3.2 配置工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
56.3.3 主机初始化流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
56.3.4 设备初始化流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
56.4 数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
56.4.1 主机数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
56.4.2 设备数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
56.5 USB 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
56.6 USB 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
56.6.1 GPTIMER0LD (0x80) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
56.6.2 GPTIMER0CTRL (0x84) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
56.6.3 GPTIMER1LD (0x88) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
56.6.4 GPTIMER1CTRL (0x8C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
56.6.5 SBUSCFG (0x90) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
56.6.6 USBCMD (0x140) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
56.6.7 USBSTS (0x144) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
56.6.8 USBINTR (0x148) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
56.6.9 FRINDEX (0x14C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
56.6.10 DEVICEADDR (0x154) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860
56.6.11 PERIODICLISTBASE (0x154) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
56.6.12 ASYNCLISTADDR (0x158) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
56.6.13 ENDPTLISTADDR (0x158) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
56.6.14 BURSTSIZE (0x160)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
56.6.15 TXFILLTUNING (0x164) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
56.6.16 ENDPTNAK (0x178) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
56.6.17 ENDPTNAKEN (0x17C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
56.6.18 PORTSC1 (0x184) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
56.6.19 OTGSC (0x1A4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
56.6.20 USBMODE (0x1A8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
56.6.21 ENDPTSETUPSTAT (0x1AC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
56.6.22 ENDPTPRIME (0x1B0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
56.6.23 ENDPTFLUSH (0x1B4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
56.6.24 ENDPTSTAT (0x1B8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
56.6.25 ENDPTCOMPLETE (0x1BC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
56.6.26 ENDPTCTRL (0x1C0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
56.6.27 OTG_CTRL0 (0x200) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
32/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
56.6.28 PHY_CTRL0 (0x210) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880
56.6.29 PHY_CTRL1 (0x214) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
56.6.30 TOP_STATUS (0x220)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
56.6.31 PHY_STATUS (0x224) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882
57 模拟外设概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
.
57.1 16 位模拟数字转换器 ADC16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
57.1.1 ADC0 输入通道分配
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
57.1.2 ADC1 输入通道分配
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
57.1.3 ADC2 输入通道分配
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
57.1.4 ADC 转换触发信号连接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
57.2 比较器 ACMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
57.3 温度传感器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
57.4 数字模拟转换器 DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
58 16 位模数转换器 ADC16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
.
58.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
58.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
58.2.1 ADC 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
58.2.2 ADC 输入通道配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
58.2.3 读取转换模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
58.2.4 周期转换模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
58.2.5 序列转换模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888
58.2.6 序列转换模式的 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
58.2.7 抢占转换模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
58.2.8 抢占转换模式的 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
58.2.9 ADC 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892
58.3 ADC16 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892
58.4 ADC16 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
58.4.1 CONFIG (0x0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
58.4.2 TRG_DMA_ADDR (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
58.4.3 TRG_SW_STA (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
58.4.4 BUS_RESULT (0x400 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
58.4.5 BUF_CFG0 (0x500) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
58.4.6 SEQ_CFG0 (0x800) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
58.4.7 SEQ_DMA_ADDR (0x804) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
58.4.8 SEQ_DMA_CFG (0x80C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
58.4.9 SEQ_QUE (0x810 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
58.4.10 PRD_CFG[PRD_CFG] (0xC00 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . 901
58.4.11 PRD_CFG[PRD_THSHD_CFG] (0xC04 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . 901
58.4.12 PRD_CFG[PRD_RESULT] (0xC08 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . 902
58.4.13 SAMPLE_CFG (0x1000 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
58.4.14 CONV_CFG1 (0x1104) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
58.4.15 ADC_CFG0 (0x1108) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
33/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
58.4.16 INT_STS (0x1110) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
58.4.17 INT_EN (0x1114) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
58.4.18 ANA_CTRL0 (0x1200) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
58.4.19 ANA_STATUS (0x1210) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
58.4.20 ADC16_PARAMS (0x1400 + 0x2 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
58.4.21 ADC16_CONFIG0 (0x1444) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
58.4.22 ADC16_CONFIG1 (0x1460) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
59 模拟比较器 ACMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
.
59.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
59.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
59.2.1 ACMP 输入配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
59.2.2 ACMP 输出控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
59.2.3 ACMP 工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
59.2.4 中断和 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
59.3 ACMP 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
59.4 ACMP 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
59.4.1 CHANNEL[CFG] (0x0 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
59.4.2 CHANNEL[DACCFG] (0x4 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912
59.4.3 CHANNEL[SR] (0x10 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
59.4.4 CHANNEL[IRQEN] (0x14 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
59.4.5 CHANNEL[DMAEN] (0x18 + 0x20 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
60 数模转换器 DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
.
60.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
60.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
60.2.1 直接模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
60.2.2 阶梯模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
60.2.3 内存模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
60.2.4 触发控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
60.2.5 中断,DMA 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
60.2.6 时钟控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
60.3 DAC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
60.4 DAC 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
60.4.1 CFG0 (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
60.4.2 CFG1 (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
60.4.3 CFG2 (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
60.4.4 STEP_CFG (0x10 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
60.4.5 BUF_ADDR (0x20 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
60.4.6 BUF_LENGTH (0x28)
60.4.7 IRQ_STS (0x30)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
60.4.8 IRQ_EN (0x34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
60.4.9 DMA_EN (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
60.4.10 ANA_CFG0 (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
34/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
60.4.11 CFG0_BAK (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
60.4.12 STATUS0 (0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
61 温度传感器 TSNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
.
61.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
61.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
61.2.1 温度采集模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
61.2.2 温度比较功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
61.3 TSNS 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
61.4 TSNS 寄存器详细信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
61.4.1 T (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
61.4.2 TMAX (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
61.4.3 TMIN (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
61.4.4 AGE (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
61.4.5 STATUS (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
61.4.6 CONFIG (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
61.4.7 VALIDITY (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929
61.4.8 FLAG (0x1C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929
61.4.9 UPPER_LIM_IRQ (0x20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
61.4.10 LOWER_LIM_IRQ (0x24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
61.4.11 UPPER_LIM_RST (0x28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
61.4.12 LOWER_LIM_RST (0x2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
61.4.13 ASYNC (0x30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
61.4.14 ADVAN (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
62 信息安全模块概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
.
62.1 安全数据处理器 SDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
62.2 在线解密引擎 EXIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
62.3 密钥管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
62.4 电池备份域密钥模块 BKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
62.5 密钥管理总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
62.6 一次性可编程存储 OTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
62.7 真随机数发生器 RNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
62.8 电源管理域安全管理器 PSEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
62.9 电源管理域监视器 PMON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
62.10 电池备份域安全管理器 BSEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
62.11 电池备份域监视器 BMON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
62.12 侵入检测模块 TAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
62.13 单调计数器 MONO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
62.14 BOOT ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
63 安全数据处理器 SDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
.
63.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
63.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
63.2.1 命令描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
35/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
63.2.2 AES 加解密引擎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
63.2.3 AES 密钥配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
63.2.4 HASH 模块
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940
63.2.5 数据拷贝和数据充填 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
63.2.6 数据重排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
63.3 SDP 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942
63.3.1 寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942
63.3.2 SDPCR (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
63.3.3 MODCTRL (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944
63.3.4 PKTCNT (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
63.3.5 STA (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
63.3.6 KEYADDR (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947
63.3.7 KEYDAT (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
63.3.8 CIPHIV (0x18 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
63.3.9 HASWRD (0x28 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
63.3.10 CMDPTR (0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949
63.3.11 NPKTPTR (0x4C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949
63.3.12 PKTCTL (0x50)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950
63.3.13 PKTSRC (0x54) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950
63.3.14 PKTDST (0x58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950
63.3.15 PKTBUF (0x5C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951
64 在线解密引擎 EXIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
.
64.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
64.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
64.2.1 EXIP 区段,密钥,计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
64.2.2 EXIP 的密钥封装和密钥解封 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
64.3 附录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954
64.3.1 RFC3394 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954
65 随机数发生器 RNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
.
65.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
65.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
65.2.1 RNG 初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
65.2.2 RNG 生成 SEED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
65.2.3 RNG 自测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
65.2.4 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
65.3 RNG 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
65.3.1 RNG 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
65.3.2 CMD (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
65.3.3 CTRL (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
65.3.4 STA (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960
65.3.5 ERR (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960
65.3.6 FO2B (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
36/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
65.3.7 R2SK (0x20 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961
66 密钥管理器 KEYM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
.
66.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
66.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
66.2.1 ZMK 密钥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
66.2.2 FMK 密钥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
66.2.3 SMK 密钥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
66.2.4 MK 密钥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964
66.2.5 SK 密钥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964
66.3 KEYM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
66.4 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
66.4.1 SOFTMKEY (0x0 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
66.4.2 SOFTPKEY (0x20 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
66.4.3 SEC_KEY_CTL (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
66.4.4 NSC_KEY_CTL (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
66.4.5 RNG (0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
66.4.6 READ_CONTROL (0x4C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
67 电池域密钥模块 BKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
.
67.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
67.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
67.3 BKEY 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
67.4 寄存器详细信息描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
67.4.1 KEY[DATA] (0x0 + 0x20 * n + 0x4 * m) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
67.4.2 ECC (0x40 + 0x4 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
67.4.3 SELECT (0x48) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972
68 电源管理域安全管理器 PSEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973
.
68.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973
68.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973
68.2.1 芯片生命周期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973
68.2.2 电源管理域系统电源域安全状态管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974
68.2.3 安全事件通报 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
68.3 PSEC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
68.4 PSEC 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
68.4.1 SECURE_STATE (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
68.4.2 SECURE_STATE_CONFIG (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976
68.4.3 VIOLATION_CONFIG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977
68.4.4 ESCALATE_CONFIG (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977
68.4.5 EVENT (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978
68.4.6 LIFECYCLE (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979
69 电源管理域监视器 PMON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
.
69.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
69.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
37/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
69.2.1 芯片生命周期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
69.2.2 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
69.3 PMON 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
69.4 PMON 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
69.4.1 MONITOR[CONTROL] (0x0 + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
69.4.2 MONITOR[STATUS] (0x4 + 0x8 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
69.4.3 IRQ_FLAG (0x40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983
69.4.4 IRQ_ENABLE (0x44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983
70 电池备份域安全管理器 BSEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984
.
70.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984
70.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984
70.2.1 电池备份域安全状态管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984
70.2.2 安全事件通报 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985
70.3 BSEC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985
70.4 BSEC 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985
70.4.1 SECURE_STATE (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985
70.4.2 SECURE_STATE_CONFIG (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986
70.4.3 VIOLATION_CONFIG (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987
70.4.4 ESCALATE_CONFIG (0xC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988
70.4.5 EVENT (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989
71 电池备份域监视器 BMON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990
.
71.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990
71.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990
71.2.1 芯片生命周期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990
71.2.2 测试端口配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990
71.3 BMON 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990
71.3.1 BMON 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
71.3.2 MONITOR[CONTROL] (0x0 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
71.3.3 MONITOR[STATUS] (0x4 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
72 侵入检测模块 TAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
.
72.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
72.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
72.2.1 侵入检测引脚配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
72.2.2 中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
72.3 TAMP 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
72.4 TAMP 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
72.4.1 TAMP[CONTROL] (0x0 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
72.4.2 TAMP[POLY] (0x4 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994
72.4.3 TAMP[LFSR] (0x8 + 0x10 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
72.4.4 TAMP_FLAG (0x80) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
72.4.5 IRQ_EN (0x84) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
38/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
目录
73 单调计数器 MONO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
.
73.1 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
73.2 功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
73.3 MONO 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
73.3.1 MONO 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
73.3.2 MONOL (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
73.3.3 MONOH (0x4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998
74 系统调试概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999
.
75 调试传输模块 DTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000
.
75.1 DTM 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 000
75.2 DTM 指令描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 000
75.2.1 USERCODE (0x0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 000
75.2.2 IDCODE (0x1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 000
75.2.3 CLAMP (0x8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 000
75.2.4 EXTEST (0x9) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 001
75.2.5 SAMPLE/PRELOAD (0xA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 001
75.2.6 HIGHZ (0xB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 001
75.2.7 AUTHEN (0xF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 001
75.2.8 DTMCS (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 001
75.2.9 DMI (0x11) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 002
75.2.10 BYPASS (0x1F) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 002
76 调试模块 DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
.
76.1 系统内存映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 003
76.2 DMI 内存映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 003
76.3 DM 寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 004
76.3.1 DATA (0x4 + 0x1 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 004
76.3.2 DMCONTROL (0x10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 004
76.3.3 DMSTATUS (0x11) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 005
76.3.4 HARTINFO (0x12) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 006
76.3.5 HALTSUM (0x13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 007
76.3.6 HAWINDOWSEL (0x14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 007
76.3.7 HAWINDOW (0x15) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 007
76.3.8 ABSTRACTCS (0x16) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 008
76.3.9 COMMAND (0x17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 008
76.3.10 ABSTRACTAUTO (0x18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 009
76.3.11 PROGBUF (0x20 + 0x1 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 009
76.3.12 SBCS (0x38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 009
76.3.13 SBADDRESS (0x39 + 0x1 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 010
76.3.14 SBDATA (0x3C + 0x1 * n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1011
77 版本信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012
.
78 免责声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014
.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
39/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
1
1.1
产品概述
产品概述
系统框图
本产品的系统框图如图 1。
CPU0子系统
RISC-V
CPU0
ENET0
ILM0 128KB
DLM0 128KB
FGPIO
PLIC/PLICSW
MCHTMR
FFA
USB0
XDMA
SDP
SDXC0
AXI系统总线
AXI SRAM
512KB
XPI0
EXIP0
ILM0镜像
DLM0镜像
ROM
128KB
FEMC
XPI1
DAC
ADC
0
HDMA
AHB/APB外设总线
SYSCTL
AHB SRAM
32KB
PLLCTL
OTP
ACMP
0
0
DMAMUX
DAO
I2S
PWM
0
QEI
0
HALL
0
TRGM
0
UART
SYNT
PTPC
GPTMR
RNG
WDG
KEYM
0
SPI
0
I2C
0
CAN
0
PDM
IOC
0
0
MBX
GPIO
GPIOM
PGPR
64B
BGPR
32B
PMU
BMU
PIOC
BIOC
PGPIO
BGPIO
PSEC
BSEC
PMON
BMON
PUART
BKEY
TAMP
PTMR
MONO
PWDG
RTC
电源管理域
系统电源域
电池备份域
图 1: 系统架构框图
表 1总结了图 1中所有外设简称的释义。
简称
描述
CPU0 子系统
包含 RISC-V CPU0 及其本地存储器和私有外设的子系统
CONN 子系统
包含高速通讯外设的子系统
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
简称
描述
HART
硬件线程(Hardware Thread),RISC-V 规范定义一个可以包含完整
RISC-V 体系架构,并可以独立执行指令的单元为 HART。本手册中,
HART 等同与 RISC-V 内核。
ILM
指令本地存储器(Instruction Local Memory)
DLM
数据本地存储器(Data Local Memory)
FGPIO
快速 GPIO 控制器(Fast General Purpose Input Output)
ENET
以太网控制器(Ethernet)
USB
通用串行总线(Universal Serial Bus)
SDXC
SD/eMMC 控制器(Secure Digital Memory Card / Multi-Media Card)
SDP
安全数据处理器(Secure Data Processor)
XDMA
AXI 系统总线 DMA 控制器(AXI DMA)
HDMA
AHB 外设总线 DMA 控制器(AHB DMA)
AXI SRAM
AXI 总线 SRAM
AHB SRAM
AHB 总线 SRAM
XPI
串行总线控制器
FEMC
多功能外部存储器控制器(Flexible External Memory Controller)
EXIP
在线解密模块(Encrypted Execution-In-Place)
ADC
模数转换器(Analog-to-Digital Convertor)
DAC
数模转换器(Digital-to-Analog Convertor)
SYSCTL
系统控制模块(System Control)
PLLCTL
锁相环控制器(PLL Controller)
ACMP
模拟比较器(Analog Comparator)
MBX
信箱(Mailbox)
DMAMUX
DMA 请求路由器
FFA
快速傅里叶变换和滤波器加速模块(FFT and Filter Accelerator)
IOC
IO 控制器(Input Output Controllor)
PIOC
电源管理域 IO 控制器
BIOC
电池备份域 IO 控制器
GPIO
通用输入输出控制器(General Purpose Input Output)
PGPIO
电源管理域 GPIO 控制器
BGPIO
电池备份域 GPIO 控制器
GPIOM
GPIO 管理器(GPIO Manager)
OTP
一次性可编程存储(One Time Program)
I2S
集成电路内置音频总线(Inter IC Sound)
DAO
数字音频输出(Digital Audio Output)
PDM
PDM 数字麦克风(Pulse Density Modulation)
PWM
PWM 定时器(Pulse Width Modulation)
QEI
正交编码器接口(Quadrature Encoder Interface)
HALL
霍尔传感器接口
TRGM
互联管理器(Trigger Manager)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
2/1016
产品概述
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
简称
描述
SYNT
同步定时器(Sync Timer)
GPTMR
通用定时器(General Purpose Timer)
PTMR
电源管理域内的通用定时器
WDG
看门狗(Watchdog)
PWDG
电源管理域内的看门狗
UART
通用异步收发器(Universal Asynchronous Receiver and Transmitter)
PUART
电源管理域内的通用异步收发器
SPI
串行外设接口(Serial Peripheral Interface)
I2C
集成电路总线(Inter-Integrated Circuit)
CAN
控制器局域网(Control Area Network)
PTPC
精确时间协议模块(Precise Time Protocol)
RNG
随机数发生器(Random Number Generator)
KEYM
密钥管理器(Key Manager)
PGPR
电源管理域的通用寄存器
BGPR
电池备份域的通用寄存器
PCFG
电源管理域配置模块
BCFG
电池备份域配置模块
PSEC
电源管理域安全管理器
BSEC
电池备份域安全管理器
PMON
电源管理域监视器
BMON
电池备份域监视器
BKEY
电池备份域密钥模块
TAMP
侵入检测模块
MONO
单调计数器(Monolithic Counter)
RTC
实时时钟(Real Time Clock)
系统电源域
本手册中,系统电源域专指由 VDD_SOC 供电的逻辑和存储电路
电源管理域
本手册中,电源管理域专指由 VPMC 供电的逻辑和存储电路
电池备份域
本手册中,电池备份域专指由 VBAT 供电的逻辑和存储电路
表 1: 外设简称总结
特性总结
1.2
本章节介绍本产品的主要特性。
1.2.1
内核与系统
32 位 RISC-V 处理器,处理器特性如下:
● RV32-IMAFDCP 指令集
– 整数指令集
– 乘法指令集
– 原子指令集
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
3/1016
产品概述
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
产品概述
– 单精度浮点数指令集
– 双精度浮点数指令集
– 压缩指令集
– DSP 单元,支持 SIMD 和 DSP 指令,兼容 RV32-P 扩展指令集
● 性能可达 5.6 CoreMark / MHz
● 特权模式支持 Machine 模式,Supervisor 模式和 User 模式
● 支持 16 个物理内存保护(Physical Memory Protection PMP)区域
● 支持 32KB L1 指令缓存和 32KB L1 数据缓存
● 支持 128 KB 指令本地存储器 ILM 和 128 KB 数据本地存储器 DLM
处理器配备 1 个平台中断控制器 PLIC,用于管理 RISC-V 的外部中断
● 支持 78 个中断源
● 支持 8 级可编程中断优先级
● 中断嵌套扩展和中断向量扩展
处理器内核配备 1 个软件中断控制器 PLICSW,管理 RISC-V 的软件中断
● 生成 RISC-V 软件中断
处理器内核配备 1 个机器定时器 MCHTMR,管理 RISC-V 的定时器中断
● 生成 RISC-V 定时器中断
2 个 DMA 控制器:
● XDMA,支持 8 个通道,用于在存储器之间进行高带宽的数据搬移,也可以用于外设寄存器与存储器,或
者外设寄存器之间的数据搬移。
● HDMA,支持 8 个通道,用于在外设寄存器和存储器之间进行低延迟的数据搬移,也可以用于存储器之
间的数据搬移
● 支持 DMA 请求路由分配到任意 DMA 控制器
包括 1 个邮箱 MBX,支持处理器不同进程间的通信:
● 支持独立的信息收发接口
● 支持生成中断
1 个快速傅里叶变换和数字滤波器加速模块(FFA)
:
● 支持 512 点 FFT 加速
● 支持 FIR 加速
● 内置 DMA,直接读取数据并返回运算结果
1.2.2
内部存储器
内部存储器包括:
● 800 KB 的片上 SRAM
– ILM0,RISC-V CPU0 的指令本地存储器,128KB
– DLM0,RISC-V CPU0 的数据本地存储器,128KB
– AXI SRAM0,512KB,高速片上 SRAM
– AHB SRAM,32KB,适用于 HDMA 的低延时访问
● 通用寄存器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
4/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
产品概述
– 电源管理域通用寄存器 PGPR,容量 64 字节,可以在系统电源域掉电时保存数据
– 电池备份域通用寄存器 BGPR,容量 32 字节,可以在系统电源域,电源管理域掉电时保存数据
● 内部只读存储器 ROM,容量 128KB,ROM 存放本产品的启动代码,闪存加载(Flashloader)和部分外
设驱动程序
● 一次性可编程存储器 OTP,4096 位,可用于存放芯片的部分出厂信息,用户密钥和安全配置,启动配置
等数据
电源管理
1.2.3
本产品集成了完整的电源管理系统:
● 多个片上电源
– DCDC 电压转换器,提供 0.9∼1.3V 输出,为系统电源域的电路供电,可调节 DCDC 输出,以
支持动态电压频率调整 DVFS
– LDOPMC,典型值 1.1V 输出的线性稳压器,为电源管理域的电路供电
– LDOOTP,典型值 2.5V 输出的线性稳压器,为 OTP 供电,仅可在烧写 OTP 时打开
● 运行模式和低功耗模式:等待模式、停止模式、休眠模式和关机模式
● 芯片集成上电复位电路
● 芯片集成低压检测电路
时钟
1.2.4
本产品时钟管理系统支持多个时钟源和时钟低功耗管理:
● 外部时钟源:
– 24MHz 片上振荡器,OSC24M,支持 24MHz 晶体,也支持通过引脚从外部输入 24MHz 有源
时钟,24MHz 外部高速振荡器是片上各个 PLL 的默认时钟源
– 32.768KHz 片上振荡器,OSC32K,支持 32.768KHz 晶体,用作电池备份域外设如实时时钟
(RTC) 等的时钟源
● 内部时钟源:
– 内部 RC 振荡器,RC24M,频率 24MHz,允许配置内部 RC 振荡器作为 PLL 的候补时钟源
– 内部 32KHz RC 振荡器,RC32K,作为 RTC 等设备的候补时钟源
● 3 个锁相环 PLL,支持小数分频,支持展频
● 支持低功耗管理,支持自动时钟门控
复位
1.2.5
全局复位,也称为电池备份域复位,可以复位整个芯片,包括电池备份域,电源管理域和系统电源域,复位
源有:
● RESETN 引脚复位(RESETN)
系统电源域复位可以复位系统电源域,复位源有:
● VPMC 引脚的低压复位(VPMC BOR)
● 调试复位(DEBUG RST)
● 看门狗复位(WDOGx RST)
● 软件复位(SW RST)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
5/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
1.2.6
产品概述
启动
BootROM 为该芯片上电后执行的第一段程序, 它支持如下功能:
● 从串行 NOR FLASH 启动
● UART/USB 启动
● 在系统编程 (ISP)
● 安全启动
● 低功耗唤醒
● 多种 ROM API
1.2.7
外部存储器
外部存储器接口包括:
● 2 个串行总线控制器 XPI,可以连接片外的各种 SPI 串行存储设备,也可以连接支持串行总线的器件,每
个 XPI:
– 支持 1/2/4/8 位数据模式,支持 2 个 CS 片选信号
– 支持 SDR 和 DDR,最高支持 166MHz
– 支持 Quad-SPI 和 Octal-SPI 的串行 NOR Flash
– 支持串行 NAND Flash
– 支持 HyperBus,HyperRAM 和 HyperFlash
– 支持 Quad/Oct SPI PSRAM
● 1 个多功能外部存储器控制器 FEMC
– DRAM 控制器
* 支持 SDRAM 和支持 LPSDR SDRAM
* 支持 8 位,16 位和 32 位数据宽度
* 支持最高 166MHz 时钟
– SRAM 控制器
* 支持连接外部 SRAM 存储器或者访问接口兼容 SRAM 的外部器件
* 支持异步访问
* 支持数据地址复用模式 (ADMUX) 或者非复用模式 (Non-ADMUX)
* 支持 8 位或 16 位数据端口
● 1 个 SD 控制器 SDXC
– 支持 SD/SDHC/SDXC,支持 4 位数据位宽,支持 DS,HS,SDR12,SDR25,SDR50
1.2.8
音频外设
音频接口包括:
● 2 个 I2S 接口,每个 I2S 支持 4 线 Tx 和 4 线 Rx,支持 I2S Philips 标准,MSB 对齐标准,LSB 对齐标
准,PCM 对齐标准,支持 TDM 模式,最多 16 通道
● 1 个 PDM 数字麦克风接口,将 PDM 数据流转换为 24 位 PCM 音频数据,支持最多 8 通道数据输入
● 1 个数字音频输出 DAO,支持 2 通道输出,每个通道支持一对差分 PWM 输出引脚,直接驱动 Class D
音频放大器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
6/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
产品概述
电机控制系统
1.2.9
电机控制系统包括:
● 2 组电机控制系统,每组电机控制系统配备有:
– 1 个 8 通道 PWM 定时器 PWM,PWM 调制精度达 3.0ns,支持产生互补 PWM 输出,死区插
入和故障保护
– 1 个正交编码器接口 QEI
– 1 个霍尔传感器接口 HALL
– 1 个互联管理器 TRGM
● 各模块支持通过互联管理器 TRGM 与电机控制系统内部或外部的模块交互
● 1 个同步定时器,用于同步各组电机控制系统
1.2.10
定时器
定时器包括:
● 5 组 32 位通用定时器,其中一组 (PTMR) 位于电源管理域,支持低功耗唤醒,每组通用定时器包括 4 个
32 位计数器
● 3 个看门狗,其中一个 (PWDG) 位于电源管理域
● 1 个实时时钟,位于电池备份域
1.2.11
通讯外设
支持丰富的通讯外设,包括:
● 9 个通用异步收发器 UART,其中 1 个 (PUART) 位于电源管理域,支持低功耗唤醒
● 4 个串行外设接口 SPI
● 4 个集成电路总线 I2C,支持标准(100kbps)
,快速(400kbps)和快速 +(1 Mbps)
● 2 个控制器局域网 CAN,支持 CAN_FD
– 支持 CAN 2.0B 标准,1Mbps
– 支持 CAN FD,8 Mbps
– 支持时间戳
● 1 个精确时间协议模块 PTPC,PTPC 支持 2 组时间戳模块,每组包含 64 位计数器,连接到 CAN 模块,
CAN 模块可以随时从端口读取时间戳信息
● 1 个 USB OTG 控制器,集成 1 个高速 USB-PHY
– 符合 Universal Serial Bus Specification Rev. 2.0
● 1 个以太网控制器 ENET
– 支持 10/100 Mbps 数据传输
– 支持 RMII 接口
– 支持由 IEEE 1588-2002 和 IEEE 1588-2008 标准定义的以太网帧时间戳
– MDIO 主接口,用于配置和管理 PHY
1.2.12
模拟外设
模拟外设包括:
● 3 个 16 位模拟数字转换器 ADC
– 16 位逐次逼近型 ADC
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
7/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
– 支持 16 个输入通道
– 2M 采样率,4M 采样率(转换精度设置为 12 位)
● 2 个高速比较器
– 工作电压 3.0 ∼ 3.6V,支持轨到轨输入
– 内置 8 位 DAC
● 1 个数模转换器 DAC
– 12 位精度,1MSPS,支持输出缓存
1.2.13
输入输出
● 提供 PA∼PZ 共 8 组最多 108 个 GPIO 功能复用引脚
● IO 支持 3V 和 1.8V 两种电压模式,分组供电
● IO 支持开漏控制、内部上下拉、驱动能力调节,内置施密特触发器
● GPIO 控制器
– 支持读取任意 IO 的输入或者控制 IO 的输出
– 支持 IO 输入触发中断
● 快速 GPIO 控制器 FGPIO,作为处理器私有的 IO 快速访问接口
● 提供一个 GPIO 管理器,管理各 GPIO 控制器的 IO 控制权限
● 电源管理域专属 IO PYxx 拥有专属 GPIO 控制器和 IO 配置模块,支持低功耗模式下状态保持
● 电池备份域专属 IO PZxx 拥有专属 GPIO 控制器和 IO 配置模块,支持低功耗模式下状态保持
1.2.14
信息安全系统
信息安全模块包含:
● 安全数据处理器 SDP,为片上加解密算法引擎:
– 支持 AES-128/256,支持 ECB 模式和 CBC 模式
– 支持 SHA-1/SHA-256
● 在线解密模块 EXIP:
– 与串行总线控制器 XPI 紧密耦合,支持外部 NOR Flash 在线解密
– AES-128 CTR 模式,零等待周期解密
– 支持 RFC3394 的密钥解封,通过密钥加密密钥 KEK 保护数据加密密钥 DEK
● 密钥管理器 KEYM:
– 支持通过独立的数据通路从电池域密钥单元 BKEY 和 OTP 的密钥区载入密钥
– 支持密钥混淆
– 支持从真随机数发生器 RNG 载入随机密钥
– 支持生成 Session Key
– 支持独立的数据通路将密钥传送到安全数据处理器 SDP
● 密钥单元 BKEY:
– 使用电池备份域的供电保存密钥
– 受电池备份域安全管理器 BSEC 保护,在违反安全规则的事件发生时,擦除密钥
● OTP 中的密钥区,支持存放并保护;
– SDP,EXIP 的相关密钥
– 安全启动的相关密钥
– 安全调试相关密钥
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
8/1016
产品概述
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
产品概述
– 产品生命周期配置
● 真随机数发生器 RNG:
– 3 个独立熵源为内部模拟噪声源
● 电源管理域安全管理器 PSEC:
– 监测产品生命周期
– 配置系统 (系统电源域和电源域) 安全状态,
– 制定安全规则并监测安全规则违反的事件
– 关联电源管理域监视器 PMON,监测 VPMC 供电和时钟 OSC24M
● 电池备份域安全管理器 BSEC:
– 配置电池备份域安全状态,制定安全规则
– 关联电池备份域监视器 BMON,监测 VBAT 供电和时钟 XTAL32K
– 关联侵入检测模块 TAMP,监测侵入事件
– 关联单调计数器 MONO
● 基于 BOOT ROM 的安全启动机制,支持加密启动,支持可信的执行环境
系统调试
1.2.15
系统调试模块包括:
● 支持 JTAG 接口
– 支持 RISC-V External Debug Support V0.13 规范
– 支持 IEEE1149.1
– 访问 RISC-V 内核寄存器和 CSR,访问存储器
● 调试端口锁定功能
– 开放模式,调试功能开放
– 锁定模式,调试功能关闭,可以通过调试密钥解锁
– 关闭模式,调试功能关闭
文档约定
1.3
1.3.1
寄存器相关缩写词列表
本手册的寄存器说明中采用了如下缩写词
缩写
描述
ro(只读)
软件只能读该位。
rc(只读,读清零) 软件只能读该位,读后清零。
wo(只写)
软件只能写该位。
w1c(写 1 清零)
软件可以通过写入 1 将该位清零。写入 0 对该位的值无影响。
w1s(写 1 置 1)
软件可以通过写入 1 将该位置 1。写入 0 对该位的值无影响。
wc(写清零)
软件可以通过写入任意值将该位清零。
ws(写置 1)
软件可以通过写入任意值将该位置 1。
rw(读/写)
软件可以读写该位。
rw1c(可读/写 1 清
零)
软件可以读该位,也可以通过写入 1 将该位清零。写入 0 对该位的值无影响。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
9/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
缩写
rw1s(可读/写 1 置
1)
描述
软件可以读该位,也可以通过写入 1 将该位置 1。写入 0 对该位的值无影响。
rwc(可读/写清零) 软件可以读该位,也可以通过写入任意值将该位清零。
rws(可读/写置 1)
产品概述
软件可以读该位,也可以通过写入任意值将该位置 1。
表 2: 寄存器描述缩写词列表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
10/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
2
处理器内核
处理器内核
本产品集成了高性能 RISC-V 处理器作为 CPU,符合以下 RISC-V 规范:
● The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Version 2.2
● The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 1.11
● The RISC-V Debug Specification, Version 0.13
2.1
中央处理器
RISC-V32 位高性能嵌入式处理器,支持以下指令集:
● RISC-V, RV32I:基础整数指令集
● RISC-V, M 扩展:乘法和除法指令集
● RISC-V, A 扩展:原子指令集
● RISC-V, F 扩展:单精度浮点数指令集
● RISC-V, D 扩展:双精度浮点数指令集
● RISC-V, C 扩展:压缩指令集
同时也支持扩展指令集:
● RISC-V, P 扩展:SIMD 和 DSP 扩展指令集
其他特性:
● 8 级顺序流水线
● 双发射超标量处理器
● 动态分支预测
● 处理器性能监视器
● 非对齐的存储器访问
2.2
总线和存储器接口
RISC-V 处理器配置为支持以下总线接口:
● 总线主接口,处理器以之访问片上的内存和其他资源。
● 总线从接口,片上其他的总线主设备可以以之访问处理器的数据和指令本地存储器
● 指令本地存储器接口,处理器以之访问高速指令本地存储器
● 数据本地存储器接口,处理器以之访问高速数据本地存储器
2.3
TRAP
按照 RISC-V 规范,由异常或者中断引起的处理器指令执行控制流程转换称为 trap,其中异常由处理器自身
的指令执行引发,而中断是由处理器内外部的中断源生成。当 trap 发生时,处理器会中断当前的指令执行流程,
关闭中断,保存需要的内核通用寄存器到堆栈,随后执行相应的 trap 服务程序。
有关 RISC-V 处理器 TRAP 的细节,请用户查询章 4。
本产品所有支持生成中断的外设,及其中断向量表,请查阅节 4.4。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
11/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
2.4
处理器内核
机器定时器 MCHTMR
机器定时器是个 64 位的定时器,符合 RISC-V 规范,这个定时器以固定的时钟运行,提供固定的时间基准,
并能够产生机器定时器中断 (Machine Timer Interrupt)。机器定时器 MCHTMR,包含 64 位的计数器 mtime 和 64
位的比较器 mtimecmpx,当计数器 mtime >= mtimecmpx 时,产生中断。
2.5
硬件性能监视器 (Hardware Performance Monitor)
硬件性能监视器符合 RISC-V 规范,包含:
● mcycle / mcycleh CSR,64 位的计数器,统计特定时刻以来处理器运行的时钟周期数。
● minstret / minstreth CSR,64 位的计数器,统计特定时刻以来处理器执行完成(instruction retired)的
指令数目。
● hpmcounter3∼6 / hpmcounterh3∼6 CSR,4 个 64 位的事件计数器,通过配置 CSR mhpmevent3∼6,可
以配置事件计数器统计特定时刻以来:
– 特定指令执行的数量,指令可以是 LOAD,STORE,乘法等整数指令,浮点数相关指令,跳转,
返回等程序流控指令
– 处理器本地存储器 ILM 和 DLM 的访问次数
– 缓存相关的事件数目:如指令或数据缓存命中,MISS 次数等
– 分支预测模块预测失败次数等
2.6
特权模式
本产品符合 The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 1.11 规范。
● 支持机器模式,也称为 Machine Mode,M-mode,M 模式
● 支持监管模式,也称为 Supervisor Mode,S-mode,S 模式
● 支持用户模式,也称为 User Mode,U-mode,U 模式
支持物理存储保护 Physical Memory Protection(PMP)。支持 16 个 region。
2.7
物理内存属性(Physical Memory Attributes)
系统的存储器映射 (Memory Map) 空间可以分为若干种不同的区域,有些对应存储器,有些对应外设的控制寄
存器。这些区域都有着不同的属性,比如,有些区域不支持读,写或者代码执行,有些区域不支持缓存等。RISC-V
规范把这些不同物理地址存储区间的不同访问属性称为 PMA (Physical Memory Attributes)。
本产品的 RISC-V 处理器支持静态 PMA 配置和可编程 PMA 配置。
静态 PMA 配置,支持把存储器映射的制定区域设置为 Device Region,Device Region 的存储器不支持缓存
(non-cacheable)。在本产品上,静态 PMA 配置如下:
● 0x30000000 ∼ 0x3FFFFFFF,Device Region 0
● 0xF0000000 ∼ 0xFFFFFFFF,Device Region 1
可编程 PMA 支持 16 个 PMA 入口,允许软件通过 4 个 PMA CFG CSR 和 16 个 PMA ADDR CSR 设置 16 个
PMA 的存储器属性。可编程 PMA 配置的优先级高于静态 PMA,16 个 PMA region 中,序号较低的 PMA Region
优先级较高。
用户可以通过 PMA ADDR CSR 指定配置区域的基地址和长度。
用户可以通过 PMA CFG CSR 将指定的地址区域,配置为 Device Region 或者 Memory Region。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
12/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
处理器内核
Memory Region 支持配置为 cacheable 或者 non-cacheable。
对应 cacheable 的 Memory Region,可以进一步配置缓存的策略,总结如下:
● Write-Back, Non-Allocate
– 读命中时,从 cache 读
– 写命中时,写入 cache,并将 cache line 标记为 modified
– 读未命中,从存储器读
– 写未命中,写入存储器
● Write-Back, Read-Allocate
– 读命中时,从 cache 读
– 写命中时,写入 cache,并将 cache line 标记为 modified
– 读未命中,从存储器读,并 allocate cache line
– 写未命中,写入存储器
● Write-Back, Write-Allocate
– 读命中时,从 cache 读
– 写命中时,写入 cache,并将 cache line 标记为 modified
– 读未命中,从存储器读
– 写未命中,allocate cache line,并标记为 modified,写入 cache
● Write-Back, Read-and-Write-Allocate
– 读命中时,从 cache 读
– 写命中时,写入 cache,并将 cache line 标记为 modified
– 读未命中,从存储器读,并 allocate cache line
– 写未命中,allocate cache line,并标记为 modified,写入 cache
● Write-Through, Non-Allocate
– 读命中时,从 cache 读
– 写命中时,写入 cache,并写入存储器
– 读未命中,从存储器读
– 写未命中,写入存储器
● Write-Through, Read-Allocate
– 读命中时,从 cache 读
– 写命中时,写入 cache,并写入存储器
– 读未命中,从存储器读,并 allocate cache line
– 写未命中,写入存储器
2.8
物理内存保护(Physical Memory Protection)
RISC-V 规范定义,RISC-V 处理器可以支持 PMP (Physical Memory Protection) 模块。PMP 支持对存储器
映射的指定地址区间提供读,写和执行代码保护。PMP 的读,写,代码执行检查针对 CPU 的特权模式,即允许
用户通过配置 PMP,向监管者模式 Supervisor Mode 或者用户模式 User Mode 下的软件授权对指定地址区间的
读,写或者代码执行权限。
用户通过配置 PMP,可以撤回机器模式 Machine Mode 下执行的软件,对指定地址区间的读,写或者代码执
行权限。
本产品的 RISC-V 处理器,支持 16 个 PMP 入口 entry,可以通过 4 个 PMP CFG CSR 和 16 个 PMP ADDR
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
13/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
处理器内核
CSR,配置这 16 个 PMP 入口。
用户可以通过 PMP 的 ADDR CSR 配置指定内存区域的基地址和长度。
用户可以配置 PMP 的 CFG CSR,指定当 CPU 处于监管模式 Supervisor Mode 或者用户模式 User Mode
时,对指定的地址区间,可读,可写,或者可执行代码。
用户可以锁定 PMP CSR 的配置。一旦锁定,即使 CPU 在机器模式 Machine Mode 下,在下次复位前,也
不能再修改 PMP 的相关 CSR。同时,一旦锁定,PMP 的配置不再只针对监管模式 Supervisor Mode 或者用户模
式 User Mode 生效,对机器模式 Machine Mode 也有效。
2.9
相关文档
RISC-V 开源指令集的相关信息,请访问 RISC-V 主页 https://riscv.org/。
RISC-V 指令集相关规范,请访问 https://riscv.org/technical/specifications/。
本产品 RISC-V CPU 的 DSP 扩展指令相关信息,
请访问 http://www.andestech.com/en/products-solutions/product-
documentation/ 并下载《AndeStar V5 DSP ISA Extension Specification》
。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
14/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
RISC-V 处理器的控制状态寄存器
3
本章节列举了本产品 RISC-V 处理器内核的控制状态寄存器组(control and status register)
,简称为 CSR。
CSR 属于 RISC-V CPU 私有的寄存器,RISC-V 规范定义了一系列标准的 CSR,处理器厂家也可以在 CPU
中实现 CSR 支持非标准的功能。
CSR 主要功能有:
● 包含处理器固有信息相关:例如处理器的厂商信息,架构信息,核心数等;
● 中断相关:例如中断开关以及中断入口等信息;
● 中断响应相关:例如中断原因,中断返回地址等信息;
● 存储器保护相关:设置不同地址空间的存储器的访问属性,例如可读可写可执行等等;
● 性能统计相关和调试接口相关
RISC-V 指令集定义了一系列访问 CSR 的指令,用户可以通过这些指令来操作 CSR 寄存器,如:
csrr rd, csr //Read CSR
csrw csr, rs //Write CSR
用户可以查询 RISC-V 相关规范以了解更多的相关信息。
3.1
控制状态寄存器 CSR 说明
控制状态寄存器 CSR 列表如下,注意列表中的地址偏移,代表 RISC-V CPU 的 CSR 的编码空间地址:
地址偏移
名称
描述
类型
复位值
0x000
USTATUS
用户状态寄存器
standard read/write
0x00000000
0x004
UIE
用户中断使能
standard read/write
0x00000000
0x005
UTVEC
用户 trap 向量基地址
standard read/write
0x00000000
0x040
USCRATCH
用户暂存登记表
standard read/write
0x00000000
0x041
UEPC
用户异常程序计数器
standard read/write
0x00000000
0x042
UCAUSE
用户原因寄存器
standard read/write
0x00000000
0x043
UTVAL
用户 trap 值
standard read/write
0x00000000
0x044
UIP
用户中断未决
standard read/write
0x00000000
0x100
SSTATUS
特权状态
standard read/write
0x00000000
0x102
SEDELEG
特权异常委托
standard read/write
0x00000000
0x103
SIDELEG
特权中断委托
standard read/write
0x00000000
0x104
SIE
监控中断使能
standard read/write
0x00000000
0x105
STVEC
特权模式 trap 向量基地址
standard read/write
0x00000000
0x106
SCOUNTEREN
特权模式计数器使能寄存器
0x140
SSCRATCH
特权暂存器
standard read/write
0x00000000
0x141
SEPC
特权异常程序计数器
standard read/write
0x00000000
0x142
SCAUSE
特权原因登记
standard read/write
0x00000000
0x143
STVAL
特权 trap 值
standard read/write
0x00000000
0x144
SIP
特权中断待处理
standard read/write
0x00000000
non-standard
read/write
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
15/1016
0x00000000
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
名称
描述
0x180
SATP
0x300
RISC-V 处理器的控制状态寄存器
类型
复位值
特权地址转换和保护
standard read/write
0x00000000
MSTATUS
机器模式状态
standard read/write
0x00001800
0x301
MISA
机器模式指令集架构寄存器
standard read/write
-
0x302
MEDELEG
机器模式异常委托
standard read/write
0x00000000
0x303
MIDELEG
机器模式中断委托
standard read/write
0x00000000
0x304
MIE
机器模式中断使能
standard read/write
0x00000000
0x305
MTVEC
机器模式 trap 向量基地址
standard read/write
0x00000000
0x306
MCOUNTEREN
机器计数器使能
standard read/write
0x00000000
0x320
MCOUNTINHIBIT
机器模式禁止计数
0x323
MHPMEVENT3
0x324
MHPMEVENT4
0x325
MHPMEVENT5
0x326
MHPMEVENT6
0x340
MSCRATCH
0x341
机器模式性能监控事件选择
non-standard
read/write
0x00000000
standard read/write
0x00000000
standard read/write
0x00000000
standard read/write
0x00000000
standard read/write
0x00000000
机器模式擦写寄存器
standard read/write
0x00000000
MEPC
机器模式异常程序计数器
standard read/write
0x00000000
0x342
MCAUSE
机器模式异常原因寄存器
standard read/write
0x00000000
0x343
MTVAL
机器模式 trap 值寄存器
standard read/write
0x00000000
0x344
MIP
机器模式中断未决
standard read/write
0x00000000
0x3A0
PMPCFG0
PMP 配置寄存器
standard read/write
0x00000000
0x3A1
PMPCFG1
PMP 配置寄存器
standard read/write
0x00000000
0x3A2
PMPCFG2
PMP 配置寄存器
standard read/write
0x00000000
0x3A3
PMPCFG3
PMP 配置寄存器
standard read/write
0x00000000
0x3B0
PMPADDR[PMPADDR0]
PMP 地址寄存器
standard read/write
-
0x3B1
PMPADDR[PMPADDR1]
PMP 地址寄存器
standard read/write
-
0x3B2
PMPADDR[PMPADDR2]
PMP 地址寄存器
standard read/write
-
0x3B3
PMPADDR[PMPADDR3]
PMP 地址寄存器
standard read/write
-
0x3B4
PMPADDR[PMPADDR4]
PMP 地址寄存器
standard read/write
-
0x3B5
PMPADDR[PMPADDR5]
PMP 地址寄存器
standard read/write
-
0x3B6
PMPADDR[PMPADDR6]
PMP 地址寄存器
standard read/write
-
0x3B7
PMPADDR[PMPADDR7]
PMP 地址寄存器
standard read/write
-
0x3B8
PMPADDR[PMPADDR8]
PMP 地址寄存器
standard read/write
-
0x3B9
PMPADDR[PMPADDR9]
PMP 地址寄存器
standard read/write
-
0x3BA
PMPADDR[PMPADDR10]
PMP 地址寄存器
standard read/write
-
0x3BB
PMPADDR[PMPADDR11]
PMP 地址寄存器
standard read/write
-
0x3BC
PMPADDR[PMPADDR12]
PMP 地址寄存器
standard read/write
-
器
机器模式性能监控事件选择
器
机器模式性能监控事件选择
器
机器模式性能监控事件选择
器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
16/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
名称
描述
0x3BD
PMPADDR[PMPADDR13]
0x3BE
RISC-V 处理器的控制状态寄存器
类型
复位值
PMP 地址寄存器
standard read/write
-
PMPADDR[PMPADDR14]
PMP 地址寄存器
standard read/write
-
0x3BF
PMPADDR[PMPADDR15]
PMP 地址寄存器
standard read/write
-
0x7A0
TSELECT
trigger 选择
standard read/write
0x00000000
0x7A1
TDATA1
trigger 数据 1
standard read/write
0x20000000
0x7A1
MCONTROL
匹配控制
standard read/write
0x22400000
0x7A1
ICOUNT
指令计数
standard read/write
0x20000400
0x7A1
ITRIGGER
中断触发
standard read/write
0x20000000
0x7A1
ETRIGGER
异常 trigger
standard read/write
0x20000000
0x7A2
TDATA2
trigger 数据 2
standard read/write
0x00000000
0x7A3
TDATA3
triggr 数据 3
standard read/write
0x00000000
0x7A3
TEXTRA
额外触发
standard read/write
0x00000000
0x7A4
TINFO
trigger 信息
standard read/write
-
0x7A5
TCONTROL
trigger 控制
standard read/write
0x00000000
0x7A8
MCONTEXT
机器模式上下文
standard read/write
0x00000000
0x7AA
SCONTEXT
特权模式上下文
standard read/write
0x00000000
0x7B0
DCSR
调试控制和状态寄存器
debug-mode-only
0x40000603
0x7B1
DPC
调试程序计数器
debug-mode-only
0x00000000
0x7B2
DSCRATCH0
调试暂存寄存器 0
debug-mode-only
0x00000000
0x7B3
DSCRATCH1
调试暂存寄存器 1
debug-mode-only
0x00000000
0x7C0
MILMB
指令本地存储器基址寄存器
0x7C1
MDLMB
数据本地存储器基址寄存器
0x7C2
MECC_CODE
ECC 代码寄存器
0x7C3
MNVEC
NMI 向量基地址寄存器
0x7C4
MXSTATUS
机器模式扩展状态
0x7C5
MPFT_CTL
性能节流控制寄存器
0x7C6
MHSP_CTL
机器模式硬件堆栈保护控制
0x7C7
MSP_BOUND
机器模式 SP 绑定寄存器
0x7C8
MSP_BASE
机器模式 SP 基址寄存器
0x7C9
MDCAUSE
机器模式详细 trap 原因
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
0x00000001
0x00000000
0x00000000
0x00000000
non-standard
read/write
0xFFFFFFFF
non-standard
read/write
non-standard
read/write
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
17/1016
-
0xFFFFFFFF
0x00000000
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
名称
描述
0x7CA
MCACHE_CTL
缓存控制寄存器
0x7CB
MCCTLBEGINADDR
机器模式 CCTL 起始地址
0x7CC
MCCTLCOMMAND
机器模式 CCTL 命令
0x7CD
MCCTLDATA
机器模式 CCTL 数据
0x7CE
MCOUNTERWEN
机器计数器写使能
0x7CF
MCOUNTERINTEN
机器计数器中断使能
0x7D0
MMISC_CTL
机器模式杂项控制寄存器
0x7D1
MCOUNTERMASK_M
机器模式的机器计数器掩码
0x7D2
MCOUNTERMASK_S
特权模式的机器计数器掩码
0x7D3
MCOUNTERMASK_U
用户模式的机器计数器掩码
0x7D4
MCOUNTEROVF
机器计数器溢出状态
0x7D5
MSLIDELEG
机器特权模式本地中断委托
0x7DF
MCLK_CTL
时钟控制寄存器
0x7E0
DEXC2DBG
异常重定向寄存器
0x7E1
DDCAUSE
调试异常详细原因
0x800
UITB
指令表基地址寄存器
0x801
UCODE
代码寄存器
0x809
UDCAUSE
用户详细的 trap 原因
0x80B
UCCTLBEGINADDR
用户 CCTL 起始地址
0x80C
UCCTLCOMMAND
用户 CCTL 命令
RISC-V 处理器的控制状态寄存器
类型
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
0x00001800
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000048
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
18/1016
复位值
0x01FFFC07
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
地址偏移
名称
描述
类型
0x9C4
SLIE
特权本地中断使能
0x9C5
SLIP
特权本地中断未决
0x9C9
SDCAUSE
特权详细陷阱原因
0x9CD
SCCTLDATA
特权 CCTL 数据
0x9CF
SCOUNTERINTEN
特权计数器中断使能
0x9D1
SCOUNTERMASK_M
0x9D2
SCOUNTERMASK_S
特权模式的特权计数器掩码
0x9D3
SCOUNTERMASK_U
用户模式的特权计数器掩码
0x9D4
SCOUNTEROVF
特权计数器溢出状态
0x9E0
SCOUNTINHIBIT
特权反禁止
0x9E3
SHPMEVENT3
0x9E4
SHPMEVENT4
0x9E5
SHPMEVENT5
0x9E6
SHPMEVENT6
0xB00
MCYCLE
机器模式循环计数器
standard read/write
0x00000000
0xB02
MINSTRET
机器模式指令报废计数器
standard read/write
0x00000000
0xB03
MHPMCOUNTER3
机器模式性能监控计数器
standard read/write
0x00000000
0xB04
MHPMCOUNTER4
机器模式性能监控计数器
standard read/write
0x00000000
0xB05
MHPMCOUNTER5
机器模式性能监控计数器
standard read/write
0x00000000
0xB06
MHPMCOUNTER6
机器模式性能监控计数器
standard read/write
0x00000000
0xB80
MCYCLEH
机器模式循环计数器
standard read/write
0x00000000
0xB82
MINSTRETH
机器模式指令报废计数器
standard read/write
0x00000000
0xB83
MHPMCOUNTER3H
机器模式性能监控计数器
standard read/write
0x00000000
0xB84
MHPMCOUNTER4H
机器模式性能监控计数器
standard read/write
0x00000000
0xB85
MHPMCOUNTER5H
机器模式性能监控计数器
standard read/write
0x00000000
0xB86
MHPMCOUNTER6H
机器模式性能监控计数器
standard read/write
0x00000000
0xBC0
PMACFG0
PMA 配置寄存器
standard read/write
0x00000000
机器模式模式的特权计数器
掩码
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
特权模式性能监控事件选择
器
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
non-standard
read/write
特权模式性能监控事件选择
器
non-standard
read/write
特权模式性能监控事件选择
器
non-standard
read/write
特权模式性能监控事件选择
器
non-standard
read/write
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
19/1016
复位值
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
名称
描述
0xBC1
PMACFG1
0xBC2
RISC-V 处理器的控制状态寄存器
类型
复位值
PMA 配置寄存器
standard read/write
0x00000000
PMACFG2
PMA 配置寄存器
standard read/write
0x00000000
0xBC3
PMACFG3
PMA 配置寄存器
standard read/write
0x00000000
0xBD0
PMAADDR[PMAADDR0]
PMA 地址寄存器
standard read/write
-
0xBD1
PMAADDR[PMAADDR1]
PMA 地址寄存器
standard read/write
-
0xBD2
PMAADDR[PMAADDR2]
PMA 地址寄存器
standard read/write
-
0xBD3
PMAADDR[PMAADDR3]
PMA 地址寄存器
standard read/write
-
0xBD4
PMAADDR[PMAADDR4]
PMA 地址寄存器
standard read/write
-
0xBD5
PMAADDR[PMAADDR5]
PMA 地址寄存器
standard read/write
-
0xBD6
PMAADDR[PMAADDR6]
PMA 地址寄存器
standard read/write
-
0xBD7
PMAADDR[PMAADDR7]
PMA 地址寄存器
standard read/write
-
0xBD8
PMAADDR[PMAADDR8]
PMA 地址寄存器
standard read/write
-
0xBD9
PMAADDR[PMAADDR9]
PMA 地址寄存器
standard read/write
-
0xBDA
PMAADDR[PMAADDR10]
PMA 地址寄存器
standard read/write
-
0xBDB
PMAADDR[PMAADDR11]
PMA 地址寄存器
standard read/write
-
0xBDC
PMAADDR[PMAADDR12]
PMA 地址寄存器
standard read/write
-
0xBDD
PMAADDR[PMAADDR13]
PMA 地址寄存器
standard read/write
-
0xBDE
PMAADDR[PMAADDR14]
PMA 地址寄存器
standard read/write
-
0xBDF
PMAADDR[PMAADDR15]
PMA 地址寄存器
standard read/write
-
0xC00
CYCLE
CYCLE 寄存器
0x00000000
0xC80
CYCLEH
CYCLE 高 32 位寄存器
0x00000000
0xF11
MVENDORID
机器模式供应商 ID 寄存器
standard read only
0x0000031E
0xF12
MARCHID
机器模式架构 ID 寄存器
standard read only
0x00000045
0xF13
MIMPID
机器模式实现 ID 寄存器
standard read only
-
0xF14
MHARTID
HartID 寄存器
standard read only
0x00000000
表 3: CSR 寄存器列表
控制状态寄存器 CSR 详细信息
3.2
控制状态寄存器 CSR 的详细说明如下:
USTATUS (0x0) (standard read/write)
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
x
x
3
UPIE
RW
N/A
x
4
0
2
x
x
USTATUS [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
20/1016
1
0
UIE
28
RW
29
RSVD
30
RSVD
31
N/A
3.2.1
x
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
位域
名称
描述
4
UPIE
UPIE 在异常之前保存 UIE 位的值。
U 模式中断使能位。
0
UIE
0:禁用
1:启用
USTATUS 位域
UIE (0x4) (standard read/write)
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
x
0
x
x
x
0
x
x
x
0
0
7
UEIE
RW
N/A
x
8
6
5
4
3
2
1
0
USIE
24
RW
25
RSVD
26
N/A
27
UTIE
28
RW
29
RSVD
30
RSVD
31
N/A
3.2.2
UIE [31:0]
位域
名称
描述
U 模式外部中断使能位
8
0:禁用
UEIE
1:启用
U 模式定时器中断使能位。
4
UTIE
0:禁用
1:启用
U 模式软件中断使能位。
0
USIE
0:禁用
1:启用
UIE 位域
3.2.3
UTVEC (0x5) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
RW
N/A
RSVD
BASE_31_2
31
0
UTVEC [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
21/1016
x
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-2
BASE_31_2
RISC-V 处理器的控制状态寄存器
描述
中断和异常处理程序的基址。当 PLIC
处于矢量模式时,请参阅上面的描述以了解对齐要求。
UTVEC 位域
3.2.4
USCRATCH (0x40) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
USCRATCH
31
0
USCRATCH [31:0]
位域
名称
描述
31-0
USCRATCH
暂存寄存器存储。
USCRATCH 位域
UEPC (0x41) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
13
12
11
10
9
8
7
6
5
4
3
2
1
0
RW
N/A
EPC
31
RSVD
3.2.5
0
UEPC [31:0]
位域
名称
描述
31-1
EPC
异常程序计数器。
UEPC 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
EXCEPTION_CODE
INTERRUPT
31
UCAUSE (0x42) (standard read/write)
RSVD
3.2.6
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
22/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
21
0
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
0
0
x
RW
N/A
30
RW
31
RISC-V 处理器的控制状态寄存器
UCAUSE [31:0]
位域
名称
描述
31
INTERRUPT
中断
异常代码。
当中断为 1 时:
0:用户软件中断
4:用户定时器中断
8:用户外部中断
当中断为 0 时:
0:指令地址未对齐
1:指令访问错误
2:非法指令
3:断点
4:加载地址未对齐
EXCEPTION_COD
9-0
5:负载访问故障
E
6:Store/AMO 地址未对齐
7:Store/AMO 访问故障
8:U-mode 环境调用
9-11:保留
12:指令缺页
13:加载页面错误
14:保留
15: Store/AMO 页面错误
32:堆栈溢出异常
33:堆栈下溢异常
40-47:保留
UCAUSE 位域
3.2.7
UTVAL (0x43) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
UTVAL
31
0
UTVAL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
23/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
UTVAL
RISC-V 处理器的控制状态寄存器
描述
软件 trap 处理的异常特定信息。
UTVAL 位域
UIP (0x44) (standard read/write)
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
x
0
x
x
x
0
x
x
x
0
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
7
6
UEIP
RW
N/A
x
8
5
4
3
2
1
0
USIP
24
RW
25
RSVD
26
N/A
27
UTIP
28
RW
29
RSVD
30
RSVD
31
N/A
3.2.8
UIP [31:0]
位域
名称
描述
U 模式外部中断挂起位。
8
UEIP
0:未挂起
1:待定
U 模式定时器中断挂起位。
4
0:未挂起
UTIP
1:待定
U 模式软件中断挂起位。
0
USIP
0:未挂起
1:待定
UIP 位域
x
0
x
x
RSVD
0
N/A
0
x
x
UIE
x
RW
0
SIE
0
RW
0
SPIE
0
UPIE
x
RW
0
13
RW
0
14
RSVD
x
15
N/A
x
16
SPP
x
17
RW
x
18
RSVD
x
N/A
x
19
N/A
20
FS
x
21
RW
x
22
XS
x
23
RO
x
24
RSVD
x
RO
0
25
N/A
26
SUM
27
MXR
28
RW
29
RSVD
30
SD
31
SSTATUS (0x100) (standard read/write)
RW
3.2.9
0
0
SSTATUS [31:0]
位域
名称
31
SD
描述
SD 总结了 FS 字段或 XS 字段是否脏。
MXR 控制只执行页面是否可读。当基于页面的虚拟内存无效时,
19
MXR
它没有任何影响。
0:只执行页面不可读
1:只执行页面是可读的
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
24/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
SUM 控制在启用页面转换时是否允许对用户可访问页面的 S 模
式加载/存储指令。它在两种情况下有效:
(a)MPRV=1 和
MPP=S 的 M 模式,(b) 在 S 模式下,当基于页的虚拟内存无效
18
SUM
时,它没有影响。当相应 PTE 条目的 U 位为 1 时,用户可以访问
页面。
0:不允许
1:允许
XS 保存 ACE 指令的架构状态(ACE 寄存器)的状态。如果未配
置 ACE 扩展,则该字段的值为零。
该领域主要由软件管理。处理器硬件在两个方面协助状态管理:
XS 为 Off 时触发非法指令异常。
当 XS 不是 Off 时,随着 ACE 指令的执行,XS 更新为脏状态。
更改此字段的设置对 ACE 状态的内容没有影响。特别是,将 XS
设置为 Off 不会破坏状态,将 XS 设置为 Initial
16-15
XS
也不会清除内容。
mstatus 和 sstatus 共享相同的 XS 位副本。通常,管理员模式特
权软件将使用 XS 位来管理 ACE
状态的延迟上下文切换。机器模式软件在使用 XS 位管理上下文
切换时应该更加保守
0:关
1:初始
2:清洁
3:脏
FS 保存着浮点单元的架构状态的状态,包括 fcsr CSR 和 f0 -f31
浮点数据寄存器。如果处理器没有 FPU,则该字段的值为零且只
读。该领域主要由软件管理。处理器硬件在两个方面协助状态管
理:
当 FS 关闭时,尝试访问 fcsr 或任何 f 寄存器会引发非法指令异
常。否则,任何更新 fcsr 或任何 f 寄存器的指令都会将 FS 更新为
脏状态。更改此字段的设置对浮点寄存器状态的内容没有影响。
14-13
FS
特别是,将 FS 设置为 Off 不会破坏状态,将 FS 设置为 Initial 也
不会清除内容。mstatus 和 sstatus 共享相同的 FS 位副本。通常,
管理员模式特权软件将使用 FS 位来管理 FPU 状态的延迟上下文
切换。机器模式软件在使用 FS 位管理上下文切换时应该更加保
守。
0:关
1:初始
2:清洁
3:脏
8
SPP
SPP 持有异常之前的特权模式。S 模式编码为 1,U 模式编码为
0。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
25/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
位域
名称
描述
5
SPIE
SPIE 在异常之前保存 SIE 位的值。
4
UPIE
UPIE 在异常之前保存 UIE 位的值。
S 模式中断使能位
1
0 已禁用
SIE
1 启用
U 模式中断使能位。
0
0 已禁用
UIE
1 启用
SSTATUS 位域
SEDELEG (0x102) (standard read/write)
x
x
0
3
2
名称
0
0
0
0
0
0
0
描述
SPF 表示是否将 Store/AMO 页错误异常委托给 U-mode
15
SPF
0:不重定向
1:重定向
LPF 指示是否将加载页面错误异常委托给 U-mode
13
LPF
0:不重定向
1:重定向
IPF 指示是否将指令页错误异常委托给 U 模式
12
IPF
0:不重定向
1:重定向
UEC 表示是否将来自 U-mode 的环境调用触发的异常委托给
8
UEC
U-mode
0:不重定向
1:重定向
SAF 指示是否将 Store/AMO 访问故障异常委托给 U-mode
7
SAF
0:不重定向
1:重定向
SAM 指示是否将存储/AMO 地址未对齐异常委托给 U 模式
6
SAM
0:不重定向
1:重定向
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
26/1016
0
0
SEDELEG [31:0]
位域
1
IAM
x
4
RW
0
5
II
0
6
IAF
x
7
RW
0
8
RW
x
9
B
x
10
RW
x
11
LAF
x
12
LAM
x
13
RW
x
14
RW
x
N/A
x
15
SAF
x
16
SAM
x
17
RW
x
18
RW
x
19
UEC
x
20
RW
x
21
RSVD
x
22
N/A
x
23
IPF
24
LPF
25
RW
26
RW
27
RSVD
28
N/A
29
SPF
30
RSVD
31
RW
3.2.10
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
LAF 指示是否将负载访问故障异常委托给 U 模式
5
LAF
0:不重定向
1:重定向
LAM 指示是否将加载地址未对齐异常委托给 U 模式
4
LAM
0:不重定向
1:重定向
B 表示断点触发的异常是否会委托给 U-mode
3
0:不重定向
B
1:重定向
II 指示是否将非法指令异常委托给 U 模式
2
II
0:不重定向
1:重定向
IAF 指示是否将指令访问错误异常委托给 U 模式
1
IAF
0:不重定向
1:重定向
IAM 指示指令地址未对齐异常是否将委托给 U 模式..
0
IAM
0:不重定向
1:重定向
SEDELEG 位域
SIDELEG (0x103) (standard read/write)
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
x
7
UEI
RW
N/A
x
8
0
6
5
x
x
4
3
x
0
2
x
x
SIDELEG [31:0]
位域
名称
描述
UEI 指示是否将 U-mode 外部中断委托给 S-mode
8
UEI
0:不重定向
1:重定向
UTI 指示是否将 U 模式定时器中断委托给 S 模式
4
UTI
0:不重定向
1:重定向
USI 指示是否将 U 模式软件中断委托给 S 模式。
0
USI
0:不重定向
1:重定向
SIDELEG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
27/1016
1
0
USI
24
RW
25
RSVD
26
N/A
27
UTI
28
RW
29
RSVD
30
RSVD
31
N/A
3.2.11
x
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
x
x
x
x
x
x
x
x
x
x
0
0
x
x
0
0
x
x
0
0
0
N/A
x
6
5
4
3
2
1
0
USIE
x
7
RW
x
8
SSIE
x
9
RW
x
20
RSVD
21
N/A
22
STIE
23
UTIE
24
RW
25
RW
26
RSVD
27
N/A
28
UEIE
29
RW
30
RSVD
31
SEIE
SIE (0x104) (standard read/write)
RW
3.2.12
RISC-V 处理器的控制状态寄存器
SIE [31:0]
位域
名称
描述
S 模式外部中断使能位
9
SEIE
0:禁用
1:启用
U 模式外部中断使能位
8
UEIE
0:禁用
1:启用
S 模式定时器中断使能位。
5
STIE
0:禁用
1:启用
U 模式定时器中断使能位
4
0:禁用
UTIE
1:启用
S 模式软件中断使能位。
1
SSIE
0:禁用
1:启用
U 模式软件中断使能位。
0
USIE
0:禁用
1:启用
SIE 位域
3.2.13
STVEC (0x105) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
RW
N/A
RSVD
BASE_31_2
31
0
STVEC [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
28/1016
x
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-2
BASE_31_2
RISC-V 处理器的控制状态寄存器
描述
中断和异常处理程序的基址。当 PLIC
处于矢量模式时,请参阅上面的描述以了解对齐要求。
STVEC 位域
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
x
0
0
N/A
x
1
0
CY
x
19
RW
20
IR
21
RSVD
22
RW
23
N/A
24
6
5
4
3
2
HPM3
25
RW
26
HPM4
27
HPM5
28
RW
29
RW
30
RSVD
31
HPM6
SCOUNTEREN (0x106) (non-standard read/write)
RW
3.2.14
0
0
0
0
x
SCOUNTEREN [31:0]
位域
名称
描述
6
HPM6
见寄存器说明
5
HPM5
见寄存器说明
4
HPM4
见寄存器说明
3
HPM3
见寄存器说明
2
IR
见寄存器说明
0
CY
见寄存器说明
SCOUNTEREN 位域
3.2.15
SSCRATCH (0x140) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SSCRATCH
31
0
SSCRATCH [31:0]
位域
名称
31-0
SSCRATCH
描述
暂存寄存器存储。
SSCRATCH 位域
3.2.16
SEPC (0x141) (standard read/write)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
29/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
4
3
2
1
0
0
0
0
0
0
N/A
RW
0
0
RSVD
30
EPC
31
RISC-V 处理器的控制状态寄存器
SEPC [31:0]
位域
名称
描述
31-1
EPC
异常程序计数器。
SEPC 位域
30
29
28
27
26
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
x
RW
N/A
RW
0
20
RSVD
INTERRUPT
31
SCAUSE (0x142) (standard read/write)
EXCEPTION_CODE
3.2.17
SCAUSE [31:0]
位域
名称
描述
31
INTERRUPT
中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
30/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
异常代码。
当中断为 1 时:
0:用户软件中断
1:特权软件中断
4:用户定时器中断
5:特权定时器中断
8:用户外部中断
9:特权外部中断
256+16:从端口 ECC 错误中断(S 模式)
256+17:总线写事务错误中断(S-mode)
256+18:性能监视器溢出中断(S-mode)
当中断为 0 时:
0:指令地址未对齐
1:指令访问错误
EXCEPTION_COD
9-0
2:非法指令
E
3:断点
4:加载地址未对齐
5:负载访问故障
6:Store/AMO 地址未对齐
7:Store/AMO 访问故障
8:U-mode 环境调用
9:来自 S 模式的环境调用
11:10:预约
12:指令缺页
13:加载页面错误
14:保留
15: Store/AMO 页面错误
32:堆栈溢出异常
33:堆栈下溢异常
40-47:保留
SCAUSE 位域
3.2.18
STVAL (0x143) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
STVAL
31
0
STVAL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
31/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
STVAL
RISC-V 处理器的控制状态寄存器
描述
软件 trap 处理的异常特定信息。
STVAL 位域
x
x
x
x
x
x
x
16
15
14
13
12
11
10
USIP
x
17
RW
x
18
SSIP
x
19
RW
x
20
x
x
x
x
x
x
x
x
x
x
0
0
x
x
0
0
x
x
0
0
11
10
9
8
7
6
5
4
3
2
1
0
N/A
x
9
8
7
6
5
4
3
2
RSVD
21
N/A
22
STIP
23
UTIP
24
RO
25
RO
26
RSVD
27
N/A
28
UEIP
29
RW
30
RSVD
31
SEIP
SIP (0x144) (standard read/write)
RO
3.2.19
1
0
SIP [31:0]
位域
名称
描述
S 模式外部中断挂起位。
9
SEIP
0:未挂起
1:挂起
U 模式外部中断挂起位。
8
0:未挂起
UEIP
1:挂起
S 模式定时器中断挂起位。
5
STIP
0:未挂起
1:挂起
U 模式定时器中断挂起位
4
UTIP
0:未挂起
1:挂起
S 模式软件中断挂起位。
1
SSIP
0:未挂起
1:挂起
U 模式软件中断挂起位。
0
USIP
0:未挂起
1:挂起
SIP 位域
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
PPN
27
ASID
28
RW
29
MODE
30
RW
31
SATP (0x180) (standard read/write)
RW
3.2.20
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
32/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
SATP [31:0]
位域
名称
描述
MODE 持有页面转换模式。当 MODE 为 Bare 时,虚拟地址等于
S-mode 中的物理地址。当不支持 MMU 时,此 CSR 将是硬连线
31
到 0。
MODE
0:无页面翻译
1:基于页的 32 位虚拟寻址
30-22
ASID
ASID 保存地址空间标识符。
21-0
PPN
PPN 保存着根页表的物理页号。
SATP 位域
MIE
RSVD
SIE
UIE
N/A
RW
RW
0
RW
1
SPIE
2
UPIE
0
3
RW
x
4
RW
x
5
MPIE
RSVD
1
6
RSVD
1
7
RW
0
8
N/A
0
9
SPP
0
10
RW
0
11
N/A
0
12
MPP
0
13
RW
0
14
FS
0
15
RW
0
16
XS
0
17
RO
18
MPRV
19
RW
x
20
MXR
x
21
SUM
x
N/A
x
22
RW
x
23
RW
x
24
TW
x
25
TVM
x
RO
0
26
RW
27
RW
28
TSR
29
RSVD
30
SD
31
MSTATUS (0x300) (standard read/write)
RW
3.2.21
0
x
0
0
0
x
0
0
MSTATUS [31:0]
位域
名称
31
SD
描述
SD 总结了 FS 字段或 XS 字段是否脏。
TSR 控制在 S 模式下执行 SRET 指令是否会引发非法指令异常。
22
TSR
当不支持 S 模式时,它被硬连线为 0。
0:正常执行
1:引发异常
TW 控制在 S 模式下执行 WFI 指令是否会引发非法指令异常。当
21
TW
不支持 S 模式时,它被硬连线为 0。
0:正常执行
1:引发异常
TVM 控制在 S 模式下执行某些虚拟内存操作是否会引发非法指令
异常。这些操作包括访问 satp 寄存器和执行 SFENCE.VMA 指
20
TVM
令。当不支持 S
模式时,它被硬连线为 0。
0:正常执行
1:引发异常
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
33/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
MXR 控制只执行页是否可读。当基于页的虚拟内存无效时它没有
19
MXR
作用
0:只执行页面不可读
1:只执行页面是可读的
SUM 控制在启用页面转换时是否允许对用户可访问页面的 S 模
式加载/存储指令。它在两种情况下有效:
(a)MPRV=1 和
MPP=S 的 M 模式,(b) 在 S 模式下。当基于页面的虚拟内存无效
18
SUM
时,它没有影响。当相应 PTE 条目的 U 位为 1 时,用户可以访问
页面。当 S 模式时,它被硬连线为 0 不支持。
0:不允许
1:允许
17
MPRV
当 MPRV 位被设置时,加载和存储的内存访问权限由 MPP 字段
指定。当 U 模式不可用时,该字段被硬连线为 0。
XS 保存 ACE 指令的架构状态(ACE 寄存器)的状态。如果没有
配置 ACE 扩展,这个字段的值为零。这个字段主要由软件管理。
处理器硬件在两个方面辅助状态管理:
XS 关闭时会触发非法指令异常。
当 XS 不是 Off 时,随着 ACE 指令的执行,XS 更新为 Dirty 状态。
16-15
XS
更改此字段的设置对 ACE 状态的内容没有影响。特别是,将 XS
设置为 Off 不会破坏状态,将 XS 设置为 Initial 也不会清除内容。
0:关
1:初始
2:清洁
3:脏
FS 保存着浮点单元架构状态的状态,包括 fcsr CSR 和 f0 -f31 浮
点数据寄存器。如果处理器没有 FPU,则该字段的值为零且只读。
该字段主要由软件管理,在硬件电路方面,处理器可以在两方面
进行辅助管理:
当 FS 关闭时,尝试访问 fcsr 或任何 f 寄存器会引发非法指令异
常。
14-13
FS
当 FS 为 Initial 或 Clean 时,通过执行更新 fcsr 或任何 f 寄存器
的任何指令,FS 将更新为 Dirty 状态。更改此字段的设置对浮点
寄存器状态的内容没有影响。特别是,将 FS 设置为 Off 不会破坏
状态,将 FS 设置为 Initial 也不会清除内容。
0:关
1:初始
2:干净
3:脏
12-11
MPP
MPP 持有 trap 之前的特权模式。特权模式的编码在表 5 中描述。
当 U 模式不可用时,该字段被硬连接到 3。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
34/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
位域
名称
描述
8
SPP
7
MPIE
MPIE 在 trap 之前保存 MIE 位的值。
5
SPIE
SPIE 在 trap 之前保存 SIE 位的值。
4
UPIE
UPIE 在 trap 之前保存 UIE 位的值。
SPP 持有 trap 之前的特权模式。S 模式编码为 1,U 模式编码为
0。
M 模式中断使能位。
3
MIE
0:禁用
1:启用
S 模式中断使能位。
1
0:禁用
SIE
1:启用
U 模式中断使能位。
0
UIE
0:禁用
1:启用
MSTATUS 位域
D
C
B
A
RO
RO
RO
RO
1
F
0
E
0
RO
0
RO
1
H
*
G
0
RO
0
RO
0
I
0
RO
*
J
0
K
*
RO
0
RO
0
L
1
RO
2
N
3
M
4
RO
5
RO
6
O
7
RO
8
P
9
Q
10
RO
0
11
RO
1
12
R
0
13
RO
0
14
T
15
S
16
RO
17
RO
18
V
19
U
20
RO
21
RO
22
W
x
23
RO
x
24
X
N/A
1
25
Y
x
26
RO
x
RO
0
27
RO
28
Z
29
RSVD
30
BASE
31
MISA (0x301) (standard read/write)
RO
3.2.22
0
0
*
0
*
1
0
*
MISA [31:0]
位域
名称
描述
本机基本整数 ISA 的通用寄存器宽度。
0:保留
31-30
BASE
1:32
2:64
3:128
25
Z
保留
24
Y
保留
23
X
存在非标准扩展
22
W
保留
21
V
暂为 Vector 扩展保留
用户模式实现
20
U
0:机器
1:机器 + 用户/机器 + 特权 + 用户
19
T
暂时保留用于事务性内存扩展
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
35/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
包含了特权模式
18
0:机器/机器 + 用户
S
1:机器 + 特权 + 用户
17
R
保留
16
Q
四精度浮点扩展
15
P
暂时保留用于 Packed-SIMD 扩展
14
O
保留
支持用户级中断
13
N
0:否
1:是
12
M
整数乘法/除法扩展
11
L
暂时保留用于十进制浮点扩展
10
K
保留
9
J
暂时保留用于动态翻译语言扩展
8
I
RV32I/64I/128I 基础 ISA
7
H
保留
6
G
存在额外的标准扩展
单精度浮点扩展
5
F
0:无
1:双精度 + 单精度/单精度
4
RV32E 基础 ISA
E
双精度浮点扩展
3
D
0:单精度/无
1:双精度 + 单精度
2
C
压缩扩展
1
B
暂保留用于位操作扩展
原子扩展
0
A
0:否
1:是
MISA 位域
MEDELEG (0x302) (standard read/write)
1
0
0
0
IAM
2
RW
x
3
II
x
4
IAF
0
5
RW
0
6
RW
x
7
RSVD
0
8
N/A
x
9
LAF
x
10
LAM
x
11
RW
x
12
RW
x
13
SAF
x
14
SAM
x
N/A
x
15
RW
x
16
RW
x
17
UEC
x
18
RW
x
19
SEC
x
20
RW
x
21
RSVD
x
22
N/A
x
23
IPF
24
LPF
25
RW
26
RW
27
RSVD
28
N/A
29
SPF
30
RSVD
31
RW
3.2.23
0
0
0
0
x
0
0
0
MEDELEG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
36/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
SPF 指示是否将 Store/AMO 页错误异常委托给 S 模式。
15
SPF
0:不代表
1:委托
LPF 指示是否将加载页面错误异常委托给 S 模式。
13
LPF
0:不代表
1:委托
IPF 指示指令页面错误异常是否将委托给 S 模式。
12
IPF
0:不代表
1:委托
SEC 指示由 S-mode 的环境调用触发的异常是否将委托给
9
SEC
S-mode。
0:不代表
1:委托
UEC 指示由 U-mode 的环境调用触发的异常是否将委托给
8
UEC
S-mode。
0:不代表
1:委托
SAF 指示是否将存储/AMO 访问故障异常委托给 S 模式。
7
SAF
0:不代表
1:委托
SAM 指示是否将存储/AMO 地址未对齐异常委托给 S 模式
6
SAM
0:不代表
1:委托
LAF 指示是否将负载访问故障异常委托给 S 模式。
5
LAF
0:不代表
1:委托
LAM 指示是否将加载地址未对齐异常委托给 S 模式。
4
LAM
0:不代表
1:委托
II 指示是否将非法指令异常委托给 S 模式。
2
II
0:不代表
1:委托
IAF 指示是否将指令访问错误异常委托给 S 模式。
1
IAF
0:不代表
1:委托
IAM 指示指令地址未对齐异常是否将委托给 S-Mode
0
IAM
0:不代表
1:委托
MEDELEG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
37/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
MIDELEG (0x303) (standard read/write)
x
x
x
x
x
x
15
14
13
12
11
10
x
x
x
x
x
x
x
x
x
x
N/A
x
9
8
0
0
7
6
x
x
5
4
3
2
1
0
USI
x
16
RW
x
17
SSI
x
18
RW
x
19
RSVD
x
20
0
0
x
x
0
0
N/A
21
STI
22
UTI
23
RW
24
RW
25
RSVD
26
N/A
27
UEI
28
RW
29
SEI
30
RSVD
31
RW
3.2.24
RISC-V 处理器的控制状态寄存器
MIDELEG [31:0]
位域
名称
描述
SEI 指示是否将 S 模式外部中断委托给 S 模式。
9
SEI
0:不代表
1:委托
UEI 指示是否将 U 模式外部中断委托给 S 模式。
8
UEI
0:不代表
1:委托
STI 指示是否将 S 模式定时器中断委托给 S 模式。
5
STI
0:不代表
1:委托
UTI 指示是否将 U 模式定时器中断委托给 S 模式。
4
0:不代表
UTI
1:委托
SSI 指示是否将 S 模式软件中断委托给 S 模式。
1
SSI
0:不代表
1:委托
USI 指示是否将 U 模式软件中断委托给 S 模式。
0
USI
0:不代表
1:委托
MIDELEG 位域
MIE (0x304) (standard read/write)
0
x
0
0
USIE
0
RW
1
SSIE
2
RW
3
RSVD
4
N/A
5
MSIE
x
6
RW
x
7
STIE
x
8
UTIE
x
9
RW
0
10
RW
0
11
MTIE
0
12
RSVD
x
13
RW
x
14
N/A
x
15
UEIE
x
16
RW
x
17
SEIE
x
N/A
x
18
RSVD
19
RW
x
20
N/A
x
21
MEIE
x
22
RW
x
23
RSVD
x
24
N/A
x
25
IMECCI
26
RW
27
BWEI
28
RW
29
PMOVI
30
RSVD
31
RW
3.2.25
0
x
0
0
0
x
0
0
MIE [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
38/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
性能监视器溢出本地中断使能位
18
PMOVI
0:禁用
1:启用
总线读/写事务错误本地中断使能位。处理器可能会收到加载/存储
17
BWEI
指令或缓存写回的总线错误。
0:禁用
1:启用
不精确的 ECC 错误本地中断使能位。处理器可能会在从端口访问
16
IMECCI
或缓存写回时收到不精确的 ECC 错误。
0:禁用
1:启用
M 模式外部中断使能位
11
MEIE
0:禁用
1:启用
S 模式外部中断使能位
9
SEIE
0:禁用
1:启用
U 模式外部中断使能位
8
UEIE
0:禁用
1:启用
M 模式定时器中断使能位。
7
MTIE
0:禁用
1:启用
S 模式定时器中断使能位。
5
STIE
0:禁用
1:启用
U 模式定时器中断使能位。
4
UTIE
0:禁用
1:启用
M 模式软件中断使能位
3
MSIE
0:禁用
1:启用
S 模式软件中断使能位。
1
SSIE
0:禁用
1:启用
U 模式软件中断使能位。
0
USIE
0:禁用
1:启用
MIE 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
39/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
3.2.26
RISC-V 处理器的控制状态寄存器
MTVEC (0x305) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
0
RW
N/A
RSVD
BASE_31_2
31
0
x
MTVEC [31:0]
位域
名称
描述
31-2
BASE_31_2
中断和异常处理程序的基址。当 PLIC 处于矢量模式时,请参阅上
面的描述以了解对齐要求
MTVEC 位域
x
x
x
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
x
0
0
9
8
7
6
5
4
3
2
1
0
N/A
x
CY
x
RW
x
IR
x
TM
x
RW
x
RW
x
1
HPM3
x
2
RW
x
18
HPM3
x
19
RW
20
6
5
4
3
HPM4
21
HPM5
22
RW
23
RW
24
HPM4
25
HPM5
26
RW
27
RW
28
HPM6
29
RW
30
RSVD
31
HPM6
MCOUNTEREN (0x306) (standard read/write)
RW
3.2.27
0
0
0
0
0
0
MCOUNTEREN [31:0]
位域
名称
描述
6
HPM6
见寄存器说明
5
HPM5
见寄存器说明
4
HPM4
见寄存器说明
3
HPM3
见寄存器说明
2
IR
见寄存器说明
1
TM
见寄存器说明
0
CY
见寄存器说明
MCOUNTEREN 位域
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
CY
25
RW
26
IR
27
TM
28
RW
29
RW
30
RSVD
31
MCOUNTINHIBIT (0x320) (non-standard read/write)
N/A
3.2.28
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
40/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
0
0
MCOUNTINHIBIT [31:0]
位域
名称
描述
6
HPM6
请参阅寄存器说明。
5
HPM5
请参阅寄存器说明。
4
HPM4
请参阅寄存器说明。
3
HPM3
请参阅寄存器说明。
2
IR
请参阅寄存器说明。
1
TM
请参阅寄存器说明。
0
CY
请参阅寄存器说明。
MCOUNTINHIBIT 位域
30
29
28
27
26
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
0
0
RW
N/A
SEL
RSVD
31
TYPE
MHPMEVENT3 (0x323) (standard read/write)
x
0
RW
3.2.29
MHPMEVENT3 [31:0]
位域
名称
描述
8-4
SEL
参见事件选择器表
3-0
TYPE
参见事件选择器表
MHPMEVENT3 位域
TYPE
SEL
事件名称
0
1
Cycle count
0
2
Retired instruction count
0
3
Integer load instruction count
Number of retired load instructions (including LR).
0
4
Integer store instruction count
Number of retired store instructions (including SC).
0
5
Atomic instruction count
0
6
System instruction count
0
7
Integer computational
instruction count
解释
Number of elapsed processor clock cycles
Number of retired instructions
Number of retired atomic instructions (not including
LR and SC).
Number of retired SYSTEM instructions(instructions
with major opcode equal to 0b1110011).
Number of retired integer computational
instructions.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
41/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TYPE
SEL
0
8
0
9
0
10
事件名称
RISC-V 处理器的控制状态寄存器
解释
Conditional branch instruction
count
Taken conditional branch
Number of retired conditional branch instructions.
Number of retired conditional branch instructions
instruction count
that are taken.
JAL instruction count
Number of retired JAL instructions.
Number of retired JALR instructions.This event
0
11
selector also counts the events monitored by the
JALR instruction count
return instruction count event selector defined in the
next row.
Number of retired return instructions. Return
instructions are JALR instructions with zero
0
12
immediate offset and the following operands:
Return instruction count
• (rd != x1/x5) and (rs1 == x1/x5)
• rd == x1 and rs1 == x5
• rd == x5 and rs1 == x1
0
13
0
14
0
15
0
16
0
17
0
18
0
19
0
20
0
0
0
0
21
22
23
24
Control transfer instruction
Number of retired unconditional jumps (JAL and
count
JALR) and conditional branch instructions.
EXEC.IT instruction count
Number of retired EXEC.IT instructions.
Integer multiplication instruction
count
Integer division instruction count
Floating-point load instruction
count
Floating-point store instruction
count
Floating-point addition
Number of retired integer division/remainder
instructions.
Number of retired floating-point load instructions.
Number of retired floating-point store instructions.
Number of retired floating-point addition/subtraction
instruction count
instructions.
Floating-point multiplication
Number of retired floating-point multiplication
instruction count
instructions.
Number of retired floating-point fused
Floating-point fused
multiply-add instruction count
Floating-point division or
multiply-add/subtraction instructions (FMADD,
FMSUB, FNMSUB, FNMADD).
Number of retired floating-point division/square-root
square-root instruction count
Other floating-point instruction
count
Number of retired integer multiplication instructions.
instructions.
Number of retired floating-point instructions not
counted by the previous floating-point instruction
event selectors
Integer multiplication and
Number of retired integer multiplication and
add/sub instruction count
add/sub instructions.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
42/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TYPE
SEL
事件名称
RISC-V 处理器的控制状态寄存器
解释
Number of retired operations. a floating-point
0
25
Retired operation count
multiply-add instruction is counted as 2 operations.
other instructions are counted as 1 operation
Number of ILM transfers, including speculative
1
0
ILM access
instruction fetch, load/store accesses, ECC repair
and slave port accesses.
Number of DLM transfers, including speculative
1
1
load/store accesses, ECC repair and slave port
DLM access
accesses.
1
2
I-Cache access
1
3
I-Cache miss
Number of completed I-Cache fetch access.
Number of I-Cache fetch miss.
Number of completed D-Cache load-and-store
access. Misaligned load/store accesses might
1
4
increase this counter by either one or two,
D-Cache access
depending on access sizes and alignments. Only
misaligned accesses crossing two cache lines are
guaranteed to result in increment of two.
The event counts the number of D-Cache
load-and-store miss. Misaligned load/store
1
5
accesses might increase this counter by either zero,
D-Cache miss
one or two, depending on access sizes, alignments
and whether the accessed lines are in D-Cache.
Number of completed D-Cache load access. See
1
6
D-Cache load access
the D-Cache access count event selector for the
handling of misaligned load accesses.
Number of D-Cache load miss. See the D-Cache
1
7
D-Cache load miss
miss count event selector for the handling of
misaligned load accesses.
Number of completed D-Cache store access. See
1
8
D-Cache store access
the D-Cache access count event selector for the
handling of misaligned load accesses.
Number of D-Cache store miss. See the D-Cache
1
9
miss count event selector for the handling of
D-Cache store miss
misaligned load accesses.
1
10
D-Cache writeback
Number of D-Cache writeback.
Number of cycles waiting for the return of the
1
11
Cycles waiting for I-Cache fill
data
critical word of I-Cache misses from the system
bus. This event selector does not monitor accesses
to I/O regions or accesses to cacheable regions
when I-Cache is turned off.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
43/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TYPE
事件名称
SEL
RISC-V 处理器的控制状态寄存器
解释
Number of cycles waiting for the return of the
1
critical word of D-Cache misses from the system
Cycles waiting for D-Cache fill
12
bus. This event selector does not monitor accesses
data
to I/O regions or accesses to cacheable regions
when D-Cache is turned off.
Number of accesses of uncached instruction data
1
returning from the system bus. This event selector
Uncached fetch data access
13
monitors accesses to I/O regions or accesses to
from bus
cacheable regions when I-Cache is not configured
or off.
Number of accesses of uncached load data
1
returning from the system bus. This event selector
Uncached load data access
14
monitors accesses to I/O regions or accesses to
from bus
cacheable regions when D-Cache is not configured
or off.
Number of cycles waiting for the instruction data to
1
return from the system bus. This event selector
Cycles waiting for uncached
15
monitors accesses to I/O regions or accesses to
fetch data from bus
cacheable regions when I-Cache is not configured
or off.
Number of cycles waiting for the load data to return
1
16
Cycles waiting for uncached
from the system bus. This event selector monitors
load data from bus
accesses to I/O regions or accesses to cacheable
regions when D-Cache is not configured or off.
1
23
2
0
2
1
2
2
This event counts the bus accesses generated by
Hardware prefetch bus access
the hardware data prefetcher.
Misprediction of conditional
Number of misprediction of committed conditional
branches (direction)
branches.
Misprediction of taken
Number of misprediction of committed taken
conditional branches (direction)
conditional branches.
Misprediction of targets of
Number of misprediction of committed Return
Return instructions
instruction.
表 4: Event Selectors
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
TYPE
27
RW
28
SEL
29
RW
30
RSVD
31
MHPMEVENT4 (0x324) (standard read/write)
N/A
3.2.30
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
44/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RISC-V 处理器的控制状态寄存器
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
0
6
5
4
3
2
1
0
MHPMEVENT4 [31:0]
位域
名称
描述
8-4
SEL
参见事件选择器表
3-0
TYPE
参见事件选择器表
MHPMEVENT4 位域
MHPMEVENT5 (0x325) (standard read/write)
29
28
27
26
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
0
0
SEL
RW
N/A
x
TYPE
30
RSVD
31
RW
3.2.31
MHPMEVENT5 [31:0]
位域
名称
描述
8-4
SEL
参见事件选择器表
3-0
TYPE
参见事件选择器表
MHPMEVENT5 位域
30
29
28
27
26
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
0
0
x
RW
N/A
SEL
RSVD
31
TYPE
MHPMEVENT6 (0x326) (standard read/write)
0
RW
3.2.32
MHPMEVENT6 [31:0]
位域
名称
描述
8-4
SEL
参见事件选择器表
3-0
TYPE
参见事件选择器表
MHPMEVENT6 位域
3.2.33
MSCRATCH (0x340) (standard read/write)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
45/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
MSCRATCH
31
RISC-V 处理器的控制状态寄存器
0
MSCRATCH [31:0]
位域
名称
描述
31-0
MSCRATCH
暂存寄存器存储。
MSCRATCH 位域
MEPC (0x341) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
5
4
3
2
1
0
0
0
0
0
0
0
RW
N/A
EPC
31
RSVD
3.2.34
0
MEPC [31:0]
位域
名称
描述
31-1
EPC
异常程序计数器。
MEPC 位域
30
29
28
27
26
25
24
23
22
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
x
RW
N/A
RW
0
21
RSVD
INTERRUPT
31
MCAUSE (0x342) (standard read/write)
EXCEPTION_CODE
3.2.35
MCAUSE [31:0]
位域
名称
描述
31
INTERRUPT
中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
46/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
异常代码当中断为 1 时,该值表示:
0:用户软件中断
1:特权软件中断
3:机器软件中断
4:用户定时器中断
5:监控定时器中断
7:机器定时器中断
8:用户外部中断
9:特权外部中断
11:机器外部中断
16:不精确的 ECC 错误中断(从端口访问、D-Cache 驱逐和非
阻塞加载/存储)(M 模式)
17:总线读/写事务错误中断(M-mode)
18:性能监视器溢出中断(M-mode)
256+16:不精确的 ECC 错误中断(从端口访问、D-Cache 驱逐
和非阻塞加载/存储)(S 模式)
EXCEPTION_COD
11-0
256+17:总线写事务错误中断(S-mode)
E
256+18:性能监视器溢出中断(S-mode)
当中断位为 0 时,该值表示:
0:指令地址未对齐
1:指令访问错误
2:非法指令
3:断点
4:加载地址未对齐
5:负载访问故障
6:Store/AMO 地址未对齐
7:Store/AMO 访问故障
8:U-mode 环境调用
9:来自 S 模式的环境调用
11:M 模式的环境调用
32:堆栈溢出异常
33:堆栈下溢异常
40-47:保留
MCAUSE 位域
31
30
MTVAL (0x343) (standard read/write)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
MTVAL
3.2.36
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
47/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
9
8
7
6
5
4
3
2
1
0
RW
31
RISC-V 处理器的控制状态寄存器
0
MTVAL [31:0]
位域
名称
描述
31-0
MTVAL
软件 trap 处理的异常特定信息。
MTVAL 位域
USIP
RW
0
SSIP
0
RSVD
x
RW
0
N/A
x
MSIP
x
RW
x
STIP
x
UTIP
0
10
RW
0
11
RW
0
12
MTIP
x
13
RSVD
x
14
RW
x
15
UEIP
x
16
RW
x
N/A
x
17
SEIP
x
18
RSVD
19
RW
x
20
N/A
x
21
MEIP
x
22
RW
x
23
RSVD
x
24
N/A
x
25
IMECCI
26
RW
27
BWEI
28
RW
29
PMOVI
30
RSVD
31
N/A
MIP (0x344) (standard read/write)
RW
3.2.37
0
x
0
0
0
x
0
0
MIP [31:0]
位域
名称
描述
性能监视器溢出本地中断挂起位。
18
PMOVI
0:未挂起
1:挂起
总线读/写事务错误本地中断挂起位。处理器可能会收到加载/存储
17
BWEI
指令或缓存写回的总线错误。
0:未挂起
1:挂起
不精确的 ECC 错误本地中断使能位。处理器可能会在从端口访问
16
IMECCI
或缓存写回时收到不精确的 ECC 错误。
0:未挂起
1:挂起
M 模式外部中断挂起位。
11
MEIP
0:未挂起
1:挂起
S 模式外部中断挂起位。
9
SEIP
0:未挂起
1:挂起
U 模式外部中断挂起位。
8
UEIP
0:未挂起
1:挂起
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
48/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
M 模式定时器中断挂起位。
7
MTIP
0:未挂起
1:挂起
S 模式定时器中断挂起位。
5
STIP
0:未挂起
1:挂起
U 模式定时器中断挂起位
4
0:未挂起
UTIP
1:挂起
M 模式软件中断挂起位。
3
MSIP
0:未挂起
1:挂起
S 模式软件中断挂起位。
1
SSIP
0:未挂起
1:挂起
U 模式软件中断挂起位。
0
USIP
0:未挂起
1:挂起
MIP 位域
PMPCFG0 (0x3A0) (standard read/write)
0
0
0
26
25
24
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RW
RW
0
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
0
PMP0CFG
0
27
RW
28
PMP1CFG
29
RW
30
PMP3CFG
31
PMP2CFG
3.2.38
0
PMPCFG0 [31:0]
位域
名称
描述
31-24
PMP3CFG
见 PMPCFG 表
23-16
PMP2CFG
见 PMPCFG 表
15-8
PMP1CFG
见 PMPCFG 表
7-0
PMP0CFG
见 PMPCFG 表
PMPCFG0 位域
3.2.39
PMPCFG1 (0x3A1) (standard read/write)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
49/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
0
26
25
24
23
22
21
20
0
0
0
0
0
0
0
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RW
RW
PMP6CFG
19
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
PMP4CFG
0
27
RW
28
PMP5CFG
29
RW
30
PMP7CFG
31
RISC-V 处理器的控制状态寄存器
0
PMPCFG1 [31:0]
位域
名称
描述
31-24
PMP7CFG
见 PMPCFG 表
23-16
PMP6CFG
见 PMPCFG 表
15-8
PMP5CFG
见 PMPCFG 表
7-0
PMP4CFG
见 PMPCFG 表
PMPCFG1 位域
PMPCFG2 (0x3A2) (standard read/write)
0
0
0
26
25
24
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
RW
RW
0
PMP8CFG
0
27
RW
28
PMP9CFG
29
RW
30
PMP11CFG
31
PMP10CFG
3.2.40
0
PMPCFG2 [31:0]
位域
名称
描述
31-24
PMP11CFG
见 PMPCFG 表
23-16
PMP10CFG
见 PMPCFG 表
15-8
PMP9CFG
见 PMPCFG 表
7-0
PMP8CFG
见 PMPCFG 表
PMPCFG2 位域
PMPCFG3 (0x3A3) (standard read/write)
0
0
0
26
25
24
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RW
RW
0
PMP12CFG
0
27
RW
28
PMP13CFG
29
RW
30
PMP15CFG
31
PMP14CFG
3.2.41
0
0
PMPCFG3 [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
50/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-24
PMP15CFG
见 PMPCFG 表
23-16
PMP14CFG
见 PMPCFG 表
15-8
PMP13CFG
见 PMPCFG 表
7-0
PMP12CFG
见 PMPCFG 表
RISC-V 处理器的控制状态寄存器
描述
PMPCFG3 位域
0
R
RW
0
1
W
0
N/A
x
2
RW
x
A
L
W1S*
0
3
RW
4
X
5
RW
6
RSVD
7
0
0
0
表 5: PMPCFG [7:0]
位域
名称
描述
Write lock and permission enforcement bit for Machine mode
0:Machine mode writes to PMP entry registers are allowed.
R/W/X permissions apply to S and U modes.
7
L
1:For PMP entry i, writes to PMPiCFG and PMPADDRi are
ignored. Additionally, if PMPiCFG.A is set to TOR, writes to
pmpaddri-1 are ignored as well. As for permission enforcement,
R/W/X permissions apply to all modes. This bit can only be
cleared to 0 with a system reset.
Address matching mode.
0:OFF: Null region.
1:TOR: Top of range. For PMP entry 0, it matches any address A
< pmpaddr0. For PMP entry i, it matches any address A such
that pmpaddri > A >= pmpaddri-1. But the 4-byte range is not
4-3
A
supported.
2:Reserved.
3:NAPOT: Naturally aligned power-of-2 region. This mode
makes use of the low-order bits of the associated address
register to encode the size of the range. The minimal size of
NAPOT regions must be 8 bytes.
Instruction execution control.
2
X
0:Instruction execution is not allowed
1:Instruction execution is allowed.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
51/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
Write access control.
1
W
0:Write accesses are not allowed.
1:Write accesses are allowed.
Read access control.
0
R
0:Read accesses are not allowed.
1:Read accesses are allowed.
表 6: PMPCFG 位域
3.2.42
PMPADDR[PMPADDR0] (0x3B0 + 0x1 * n) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
*
*
*
*
*
*
*
*
*
*
*
*
*
*
x
x
9
8
7
6
5
4
3
2
1
0
0
RW
N/A
RSVD
PMPADDR_31_2
31
*
PMPADDR [31:0]
位域
名称
描述
寄存器内容:匹配大小(字节)
aaaa. . . aaa0 8
aaaa. . . aa01 16
aaaa. . . a011 32
31-2
. . . . .
PMPADDR_31_2
.
aa01. . . 1111 2^{XLEN}
a011. . . 1111 2^{XLEN+1}
0111. . . 1111 2^{XLEN+2}
1111. . . 1111 2^{XLEN+3*1}
PMPADDR 位域
31
30
TSELECT (0x7A0) (standard read/write)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
TRIGGER_INDEX
3.2.43
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
52/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
RISC-V 处理器的控制状态寄存器
0
TSELECT [31:0]
位域
名称
描述
31-0
TRIGGER_INDEX
该寄存器确定哪个 trigger 可通过其他 trigger 寄存器访问。
TSELECT 位域
TDATA1 (0x7A1) (standard read/write)
0
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
0
0
0
0
0
0
0
0
0
0
0
0
0
13
RW
RW
1
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
DATA
0
29
DMODE
30
TYPE
31
RW
3.2.44
0
TDATA1 [31:0]
位域
名称
描述
表示 trigger 类型。
0:选择的 trigger 无效。
31-28
2:选择的 trigger 是地址/数据匹配 trigger。
TYPE
3:选择的 trigger 是指令计数 trigger
4:选择的 trigger 为中断 trigger。
5:选择的 trigger 是异常 trigger。
设置此字段以指示调试模式使用的 trigger。
27
0:Debug-mode 和 M-mode 都可以写当前选中的 trigger 寄存器。
DMODE
1:只有调试模式可以写入当前选择的 trigger 寄存器。忽略来自
M 模式的写入。
26-0
特定 trigger 的数据
DATA
TDATA1 位域
0
0
0
0
0
0
6
5
4
3
2
0
0
x
0
0
0
0
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
53/1016
1
LOAD
0
7
RW
0
8
STORE
0
9
EXECUTE
x
10
RW
x
11
RW
x
12
U
0
13
RW
14
S
x
15
RSVD
x
16
RW
0
17
N/A
1
18
MATCH
0
19
RW
1
20
M
0
21
RW
0
22
CHAIN
0
RW
RW
1
23
RW
24
ACTION
25
RW
26
RSVD
27
N/A
0
28
MASKMAX
0
29
DMODE
30
TYPE
31
MCONTROL (0x7A1) (standard read/write)
RO
3.2.45
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
RISC-V 处理器的控制状态寄存器
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
MCONTROL [31:0]
位域
名称
描述
表示 trigger 类型。
31-28
TYPE
0:选择的 trigger 无效。
2:选择的 trigger 是地址/数据匹配 trigger。
设置此字段以指示调试模式使用 trigger。
27
DMODE
0:Debug-mode 和 M-mode 都可以写当前选中的 trigger 寄存器
1:只有调试模式可以写入当前选择的 trigger 寄存器。忽略来自
M 模式的写入。
26-21
MASKMAX
表示硬件支持的最大自然对齐范围为 2^12 字节。
设置此字段以选择此 trigger 匹配时会发生什么。
15-12
ACTION
0:引发断点异常
1:进入调试模式。(仅当 DMODE 为 1 时才支持。
)
设置此字段以启用 trigger 链。
0:当此 trigger 匹配时,执行配置的动作。
1:当这个 trigger 不匹配时,它阻止下一个索引的 trigger 匹配。
如果 trigger 数为 2,则该字段在触发器 1 上硬连线为 0 (tselect =
11
CHAIN
1)。
如果 trigger 数量为 4,则该字段是硬连线的
在 trigger 3 上变为 0 (tselect = 3)。
如果 trigger 数为 8,则该字段在 trigger 3 和 trigger 7 上硬连线为
0(tselect = 3 或 7)。
设置该字段选择匹配方案。0:当值等于 tdata2 时匹配。1:当值
的前 M 位与 tdata2 的前 M 位匹配时匹配。M 是 31 减去最低有
10-7
MATCH
效位的索引 tdata2
中包含 0。
2:当值大于(无符号)或等于 tdata2 时匹配。
3:当值小于(无符号)tdata2 时匹配
6
M
设置此字段以在 M 模式下启用此 trigger。
4
S
设置此字段以在 S 模式下启用此 trigger。
3
U
设置此字段以在 U 模式下启用此 trigger。
2
EXECUTE
1
STORE
0
LOAD
设置此字段以启用此 trigger 来比较指令的虚拟地址。
设置此字段以启用此 trigger 来比较 store 的虚拟地址。
设置此字段以启用此 trigger 以比较负载的虚拟地址。
MCONTROL 位域
3.2.46
ICOUNT (0x7A1) (standard read/write)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
54/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
x
x
x
x
x
15
14
13
12
11
x
x
x
x
x
x
x
x
10
9
8
7
6
1
0
x
0
0
5
4
3
0
0
0
2
1
0
0
0
0
ACTION
x
16
RW
x
17
S
x
RW
RW
1
18
U
19
RW
20
RW
21
RSVD
22
N/A
23
M
24
COUNT
25
RO
26
RW
27
RSVD
0
28
N/A
0
29
DMODE
30
TYPE
31
RISC-V 处理器的控制状态寄存器
ICOUNT [31:0]
位域
名称
31-28
TYPE
描述
选择的 trigger 是指令计数 trigger。
设置此字段以指示调试模式使用 trigger。
27
0:Debug-mode 和 M-mode 都可以写当前选中的 trigger 寄存器。
DMODE
1:只有调试模式可以写入当前选择的 trigger 寄存器。忽略来自
M 模式的写入。
此字段硬连线为 1 以支持单步执行
10
COUNT
9
M
设置此字段以在 M 模式下启用此 trigger。
7
S
设置此字段以在 S 模式下启用此 trigger。
6
U
设置此字段以在 U 模式下启用此 trigger。
设置此字段以选择此 trigger 匹配时会发生什么。
5-0
0:引发断点异常
ACTION
1:进入调试模式。(仅当 DMODE 为 1 时才支持。
)
ICOUNT 位域
ITRIGGER (0x7A1) (standard read/write)
x
x
x
x
x
x
x
x
18
RW
RW
1
0
0
17
16
15
14
13
12
11
10
x
x
x
x
x
x
x
x
x
9
8
7
6
0
x
0
0
5
4
3
0
0
0
2
1
0
0
0
0
ACTION
19
RW
20
S
21
U
22
RW
23
RW
24
RSVD
25
N/A
26
M
27
RW
0
28
RSVD
0
29
DMODE
30
TYPE
31
N/A
3.2.47
ITRIGGER [31:0]
位域
名称
31-28
TYPE
描述
所选 trigger 为中断 trigger。
设置此字段以指示调试模式使用 trigger。
27
DMODE
0:Debug-mode 和 M-mode 都可以写当前选中的 trigger 寄存器。
1:只有调试模式可以写入当前选择的 trigger 寄存器。忽略来自
M 模式的写入。
9
M
设置此字段以在 M 模式下启用此 trigger。
7
S
设置此字段以在 S 模式下启用此 trigger。
6
U
设置此字段以在 U 模式下启用此 trigger。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
55/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
设置此字段以选择此 trigger 匹配时会发生什么。
5-0
ACTION
0:引发断点异常。
1:进入调试模式。(仅当 DMODE 为 1 时才支持。
)
ITRIGGER 位域
ETRIGGER (0x7A1) (standard read/write)
0
0
x
x
x
x
x
x
16
15
14
13
12
11
x
x
x
x
x
x
x
x
10
9
8
7
6
0
0
x
0
0
5
4
3
0
0
0
2
1
0
0
0
0
ACTION
x
17
RW
x
RW
RW
1
18
S
19
U
20
RW
21
RW
22
RSVD
23
N/A
24
M
25
NMI
26
RW
27
RW
0
28
RSVD
0
29
DMODE
30
TYPE
31
N/A
3.2.48
ETRIGGER [31:0]
位域
名称
31-28
TYPE
描述
选择的 trigger 是异常 trigger。
设置此字段以指示调试模式使用 trigger。
27
0:Debug-mode 和 M-mode 都可以写当前选中的 trigger 寄存器。
DMODE
1:只有调试模式可以写入当前选择的 trigger 寄存器。忽略来自
M 模式的写入。
设置此字段以在不可屏蔽中断中启用此 trigger,而不管 s、u 和 m
10
NMI
9
M
设置此字段以在 M 模式下启用此 trigger。
7
S
设置此字段以在 S 模式下启用此 trigger。
6
U
设置此字段以在 U 模式下启用此 trigger。
的值如何。
设置此字段以选择此 trigger 匹配时会发生什么。
5-0
ACTION
0:引发断点异常
1:进入调试模式。(仅当 DMODE 为 1 时才支持。
)
ETRIGGER 位域
3.2.49
TDATA2 (0x7A2) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DATA
31
0
TDATA2 [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
56/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
DATA
RISC-V 处理器的控制状态寄存器
描述
该寄存器提供对 tselect 寄存器选择的当前所选 trigger 寄存器的
tdata2 寄存器的访问,并且它保存特定于 trigger 的数据。
TDATA2 位域
3.2.50
TDATA3 (0x7A3) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DATA
31
0
TDATA3 [31:0]
位域
名称
31-0
DATA
描述
该寄存器提供对 tselect 寄存器选择的当前所选触发寄存器的
tdata3 寄存器的访问,并且它保存特定于触发器的数据。
TDATA3 位域
TEXTRA (0x7A3) (standard read/write)
0
24
23
22
21
20
19
18
x
x
x
x
x
x
x
RW
RW
0
0
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
SSELECT
0
25
x
0
RW
0
26
SVALUE
0
27
RW
0
28
RSVD
29
N/A
30
MVALUE
31
MSELECT
3.2.51
TEXTRA [31:0]
位域
名称
31-26
MVALUE
25
MSELECT
10-2
SVALUE
描述
与 MSELECT 一起使用的数据。
0:忽略 MVALUE。
1:此 trigger 仅在 mcontext 的低位等于 MVALUE 时匹配。
与 SSELECT 一起使用的数据。
0: 忽略 MVALUE
1-0
SSELECT
1:此 trigger 仅在 scontext 的低位等于 SVALUE 时匹配
2:此 trigger 仅在 satp.ASID 等于 SVALUE 时才匹配。
TEXTRA 位域
3.2.52
TINFO (0x7A4) (standard read/write)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
57/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
*
*
*
*
*
*
*
*
7
6
5
4
3
2
1
0
*
*
*
*
*
*
*
*
RO
N/A
INFO
RSVD
31
RISC-V 处理器的控制状态寄存器
x
TINFO [31:0]
位域
名称
描述
tdata1 中每种可能类型的一位。位 N 对应于类型 N。如果设置了
该位,那么当前选择的 trigger 支持类型。如果当前选择的 trigger
不存在,则该字段包含 1。
0:当该位被设置时,该 tselect 没有触发
1:保留并硬连线为 0。
15-0
2:设置该位时,选择的 trigger 支持地址/数据匹配 trigger 类型
INFO
3:当该位置位时,选择的 trigger 支持指令计数 trigger 类型。
4:当该位被设置时,选择的 trigger 支持中断 trigger 类型
5:当该位被设置时,选择的 trigger 支持异常 trigger 类型
15:当该位被设置时,选定的 trigger 存在(因此枚举不应终止)
,
但当前不可用。
其他:保留以备将来使用。
TINFO 位域
TCONTROL (0x7A5) (standard read/write)
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
x
x
x
x
7
6
RW
N/A
x
0
5
4
x
x
3
2
x
0
1
0
RSVD
25
N/A
26
MTE
27
RW
28
RSVD
29
N/A
30
RSVD
31
MPTE
3.2.53
x
x
x
TCONTROL [31:0]
位域
名称
7
MPTE
描述
M 模式先前 trigger 启用字段。当陷入 M 模式时,MPTE 被设置
为 MTE 的值。
M-mode trigger enable field。当陷入 M-mode 的异常时,MTE 设
3
MTE
置为 0。当执行 MRET 指令时,MTE 设置为 MPTE 的值。
0:当 hart 处于 M 模式时,trigger 不匹配/trigger。
1:当 hart 处于 M 模式时,trigger 会匹配/开火。
TCONTROL 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
58/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
MCONTEXT (0x7A8) (standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
2
1
0
0
0
0
RW
N/A
RSVD
31
MCONTEXT
3.2.54
RISC-V 处理器的控制状态寄存器
x
MCONTEXT [31:0]
位域
名称
描述
5-0
MCONTEXT
机器模式软件可以将上下文编号写入该寄存器,可用于设置仅在
该特定上下文中 trigger 的 trigger。
MCONTEXT 位域
SCONTEXT (0x7AA) (standard read/write)
30
29
28
27
26
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
x
4
3
2
1
0
0
0
0
0
RW
N/A
RSVD
31
SCONTEXT
3.2.55
0
SCONTEXT [31:0]
位域
名称
描述
8-0
SCONTEXT
机器模式软件可以将上下文编号写入该寄存器,可用于设置仅在
该特定上下文中 trigger 的 trigger。
SCONTEXT 位域
1
1
0
0
0
5
4
3
2
x
0
0
0
DCSR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
59/1016
1
0
PRV
0
6
RW
0
7
STEP
0
8
RW
x
9
NMIP
0
10
RO
x
11
RSVD
x
12
MPRVEN
x
13
RW
x
RSVD
x
N/A
x
14
N/A
x
RO
0
15
CAUSE
x
16
RO
x
17
STOPTIME
x
18
STOPCOUNT
x
19
RW
x
20
RW
0
21
STEPIE
22
RW
23
EBREAKS
24
EBREAKU
25
RW
26
RW
27
RSVD
1
28
N/A
0
29
EBREAKM
30
XDEBUGVER
31
DCSR (0x7B0) (debug-mode-only)
RW
3.2.56
1
1
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
外部调试器的版本。0 表示不存在外部调试器,4 表示外部调试器
31-28
XDEBUGVER
符合 RISC-V
External Debug Support (TD003) V0.13
该位控制机器模式下 EBREAK 指令的行为
15
EBREAKM
0:生成常规断点异常
1:进入调试模式
该位控制 EBREAK 指令在特权用户模式下的行为。
13
EBREAKS
0:生成常规断点异常
1:进入调试模式
该位控制 EBREAK 指令在用户/应用程序模式下的行为
12
EBREAKU
0:生成常规断点异常
1:进入调试模式
该位控制单步执行时是否启用中断
11
STEPIE
0:单步执行时禁止中断
1:允许单步中断
该位控制是否在调试模式下停止性能计数器。
10
STOPCOUNT
0:在调试模式下不停止计数器
1:在调试模式下停止计数器
此位控制定时器在调试模式下是否停止。如果处理器处于调试模
式并且此位已设置,则处理器仅将其停止时间输出引脚驱动为 1。
9
STOPTIME
需要集成工作以使平台中的定时器观察此引脚是否真正停止他们。
0:在调试模式下不停止定时器
1:在调试模式下停止定时器
进入调试模式的原因。当有多种原因进入调试模式时,确定
CAUSE 值的优先级将是:触发模块
>EBREAK>halt-on-reset>halt 请求 > 单步。Halt 请求是发出的请
求通过外部调试器
0:保留
8-6
CAUSE
1:EBREAK
2:trigger 模块
3:hart 请求
4:单步
5:Halt-on-reset
6-7:保留
该位控制 mstatus.MPRV 在调试模式下是否生效。
4
MPRVEN
0: mstatus 中的 MPRV 在调试模式下被忽略。
1:mstatus 中的 MPRV 在 Debug 模式下生效。
设置此位后,hart 将有一个不可屏蔽中断 (NMI) 待处理。由于
3
NMIP
NMI 可以指示硬件错误情况,因此一旦设置了此位,就可能无法
进行可靠的调试。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
60/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
该位控制非 DebugMode 指令执行是否处于单步模式。设置时,
hart 在单条指令执行后返回 Debug Mode。如果由于异常指令没
2
有完成,hart 将立即进入 Debug 执行异常处理程序之前的模式,
STEP
并设置了适当的异常寄存器。
0:单步模式关闭
1:单步模式开启
进入调试模式时 hart 运行的权限级别。外部调试器可以修改此值
以在退出调试模式时更改 hart 的权限级别。
1-0
0:用户/应用
PRV
1:特权
2:预留
3:机器
DCSR 位域
3.2.57
DPC (0x7B1) (debug-mode-only)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DPC
31
0
DPC [31:0]
位域
名称
描述
31-0
DPC
调试程序计数器。位 0 硬连线为 0。
DPC 位域
3.2.58
DSCRATCH0 (0x7B2) (debug-mode-only)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
DSCRATCH
31
0
DSCRATCH0 [31:0]
位域
名称
31-0
DSCRATCH
描述
保留供调试模块使用的暂存寄存器。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
61/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
DSCRATCH0 位域
3.2.59
DSCRATCH1 (0x7B3) (debug-mode-only)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
6
5
4
3
2
1
0
x
x
x
RO
DSCRATCH
31
0
DSCRATCH1 [31:0]
位域
名称
描述
31-0
DSCRATCH
保留供调试模块使用的暂存寄存器。
DSCRATCH1 位域
25
24
23
22
21
*
*
*
*
*
*
*
*
*
*
*
20
19
18
17
16
15
14
13
12
11
10
9
8
7
*
*
*
*
*
*
*
*
*
*
x
x
x
N/A
RO
*
0
IEN
26
0
RO
27
ECCEN
28
RW
29
RW
30
IBPA
31
RWECC
MILMB (0x7C0) (non-standard read/write)
RSVD
3.2.60
0
1
MILMB [31:0]
位域
名称
描述
31-10
IBPA
ILM 的基本物理地址。它必须是 ILM 大小的整数倍
控制 ILM RAM 的 ECC 代码的诊断访问。设置后,加载/存储到
ILM 将 ECC 代码读/写到 mecc_code 寄存器。可以设置此位以注
3
RWECC
入 ECC
错误以测试 ECC 处理程序。
0:禁用 ECC 代码的诊断访问
1:启用 ECC 代码的诊断访问
奇偶校验/ECC 使能控制:
0:禁用奇偶校验/ECC
2-1
ECCEN
1:预留
2:仅对不可纠正的奇偶校验/ECC 错误生成异常
3:对任何类型的奇偶校验/ECC 错误生成异常
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
62/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
ILM 使能控制:
0
0:ILM 被禁用
IEN
1:ILM 已启用
MILMB 位域
MDLMB (0x7C1) (non-standard read/write)
24
23
22
21
*
*
*
*
*
*
*
*
*
*
*
20
19
18
17
16
15
14
13
12
11
10
9
8
7
*
*
*
*
*
*
*
*
*
*
x
x
x
6
5
4
x
x
x
N/A
RO
*
3
2
0
1
0
0
DEN
25
RO
26
ECCEN
27
RW
28
RWECC
29
RW
30
DBPA
31
RSVD
3.2.61
0
1
MDLMB [31:0]
位域
名称
31-10
DBPA
描述
DLM 的基本物理地址。它必须是 DLM 大小的整数倍
控制 DLM RAM 的 ECC 代码的诊断访问。设置后,加载/存储到
DLM 将 ECC 代码读/写到 mecc_code 寄存器。可以设置此位以
3
注入 ECC 错误以测试 ECC 处理程序。
RWECC
0:禁用 ECC 代码的诊断访问
1:启用 ECC 代码的诊断访问
奇偶校验/ECC 使能控制:
0:禁用奇偶校验/ECC
2-1
1:预留
ECCEN
2:仅对不可纠正的奇偶校验/ECC 错误生成异常
3:对任何类型的奇偶校验/ECC 错误生成异常
DLM 使能控制:
0
0:DLM 被禁用
DEN
1:DLM 已启用
MDLMB 位域
MECC_CODE (0x7C2) (non-standard read/write)
x
x
x
21
20
0
0
INSN
RO
0
19
18
0
0
17
16
0
0
15
14
13
12
x
x
x
x
11
10
9
8
7
6
5
4
x
x
x
x
x
0
0
0
3
2
1
0
0
0
1
CODE
x
N/A
x
22
RW
23
RSVD
x
24
N/A
x
25
C
x
26
RO
x
27
P
28
RO
29
RAMID
30
RSVD
31
RO
3.2.62
0
MECC_CODE [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
63/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
RISC-V 处理器的控制状态寄存器
描述
指示奇偶校验/ECC 错误是由取指令还是数据访问引起的。
22
INSN
0:数据访问
1:指令获取
导致奇偶校验/ECC 错误的 RAM 的 ID。该位在奇偶校验/ECC 错
误异常时更新。
0-1: 保留
2:I-Cache 的 Tag RAM
3:I-Cache 的数据 RAM
21-18
4:D-Cache 的 Tag RAM
RAMID
5:D-Cache 的数据 RAM
6:TLB 的标签 RAM
7:TLB 的数据 RAM
8: ILM
9: DLM
10-15:保留
精确错误。此位在奇偶校验/ECC 错误异常时更新。
17
P
0:不精确的错误
1:精确误差
可纠正错误。此位在奇偶校验/ECC 错误异常时更新。
16
C
0:不可纠正的错误
1:可纠正错误
该字段记录 ECC 错误异常的 ECC 值。当启用 ECC 代码的诊断
6-0
访问时(milmb.RWECC 或 mdlmb.RWECC 为 1),此字段还用
CODE
于读/写 ECC 代码。
MECC_CODE 位域
3.2.63
MNVEC (0x7C3) (non-standard read/write)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
RO
MNVEC
31
*
MNVEC [31:0]
位域
名称
31-0
MNVEC
描述
NMI 处理程序的基址。它的值是 reset_vector 的零扩展值。
MNVEC 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
64/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
MXSTATUS (0x7C4) (non-standard read/write)
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
x
x
x
5
N/A
x
4
0
0
3
2
x
x
1
0
PFT_EN
22
RW
23
PPFT_EN
24
RW
25
RSVD
26
N/A
27
DME
28
PDME
29
RW
30
RSVD
31
RW
3.2.64
RISC-V 处理器的控制状态寄存器
0
0
MXSTATUS [31:0]
位域
名称
描述
用于在进入 trap 时保存之前的 DME
5
状态。如果不支持数据缓存和数据本地内存,则此字段硬连线为
PDME
0。
机器数据错误标志。它表示数据缓存或数据本地内存 (DLM) 发生
4
异常。设置此位时,加载/存储访问将绕过 D-Cache。处理完机器
DME
错误后,异常处理程序应清除该位。
当 mcause 是不精确异常(以中断的形式)时,PM 字段记录了导
致不精确异常的指令的特权模式。PM 字段编码
定义如下:
1
PPFT_EN
0:用户模式
1:特权模式
2:保留
3:机器模式
启用性能节流。启用节流后,处理器将在 mpft_ctl.T_LEVEL 中指
定的性能级别执行指令。进入 trap 时:
PPFT_EN WREN = 0x5AA5UL ;
HPM_PMIC_WDG−>CTRL =
WDT_CTRL_INTTIME ( 2 ) | WDT_CTRL_RSTEN( 0 ) | WDT_CTRL_INTEN ( 1 ) \
| WDT_CTRL_CLKSEL( 1 ) | WDT_CTRL_EN ( 1 ) ;
HPM_SYSCTL−>CPU0_GPR0 = ( u i n t 3 2 _ t )& lowpower_wakeup_test ;
__asm ( ” w f i ” ) ;
19.5.2
强检验跳转
当 FORCE_WAKEUP_ENTRY_CHK OTP 位被置上后,
BootROM 会强制执行唤醒代码的完整性检查,
只有完
整性检验通过后,BootROM 才会执行唤醒代码,否则 BootROM 会执行完整的启动流程。除快速跳转配置外,用户
还需要将程序的起始地址,长度填入 SYSCTL.CPU0_PARAM[0], SYSCTL.CPU0_PARAM[1] 并将以及整个 wakeup 代码的 SHA256 哈希值填入 SYSCTL.CPU0_DATA[0] - SYSCTL.CPU0_DATA[7]。其中 SYSCTL.CPU_GPR0
的地址入口必须在 CPU0_GPR1 和 CPU0_GPR2 指定的地址范围内。
当 CPU0 被唤醒后,ROM 会根据 SYSCTL.CPU0_PARAM[0] 以及 SYSCTL.CPU0_PARAM[1] 的地址范围
来计算 SHA256 哈希值并与 SYSCTL.CPU0_DATA[0] - SYSCTL.CPU0_DATA[7] 中的值比对,当有当结果匹配
时,BootROM 才会跳转到唤醒地址入口。
为保证安全性,用户可通过 SYSCTL.CPU0_LOCK 寄存器锁定上述寄存器。
开启方式:
● 在用户代码上按上述描述来配置
● 在设备配置信息块中配置,详细信息见唤醒验证信息小节。当用户需要 BootROM 确保唤醒代码也被安
全启动认证时,推荐使用该方式。在该模式下,BootROM 会在跳转到用户程序前锁定上述寄存器。
19.5.3
禁用低功耗唤醒
当 FORCE_COLD_BOOT OTP 位被置上后,BootROM 会忽略唤醒请求,执行完整的安全启动流程。
19.6
Debug 接口权限管理
SoC 的调试端口的访问受 SoC 硬件和 ROM 共同管理。
● 当设备处于 CREATE 模式时,Debug 口默认处于开启状态,BootROM 的执行可以随时被打断接管。
● 当设备出厂后,Debug 口默认处于禁止状态,Debug 端口控制由 BootROM 接管。当 SoC 离开 BootROM
时,BootROM 会开启 DEBUG 端口的访问权限。
– 在 ISP/Serial boot 模式下,当 BootROM 检测到 DEBUG 请求后,会打开 DEBUG 端口访问权
限并进入 while(1) 循环。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
254/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
– 在有正常启动镜像的情况下,BootROM 会在跳转到 APP 之前打开 DEBUG 端口访问权限并继
续执行用户应用程序。
19.7
ROM API
本节详细介绍该 SoC 支持的所有 API 接口。
19.7.1
简介
BootROM 导出了常用的 FLASH 操作 API 接口、安全相关的 API 接口。用户程序可直接调用这些接口进行
快速的 FLASH 和安全相关的编程,以节省开发和验证的时间。API 以模块为单位来分类,以下为当前 SoC 所支
持的 API 大类:
● run_bootloader 接口
● XPI NOR 驱动接口
● XPI RAM 接口
● XPI 底层驱动接口
● OTP
● 安全启动 API 接口
● SM3 API 接口
● SM4 API 接口
本 SoC 中,BootROM 提供的 API 以位于 0x2001_FF00 的 API 根列表为基础来组织。其中 API 根的数据结
构如下:
typedef s t r u c t {
const u i n t 3 2 _ t version ;
c o n s t char * c o p y r i g h t ;
hpm_stat_t ( * c o n s t r u n _ b o o t l o a d e r ) ( v o i d * arg ) ;
const o t p _ d r i v e r _ i n t e r f a c e _ t * o t p _ d r i v e r _ i f ;
/ * ! < o f f s e t : 0x00 * /
/ * ! < o f f s e t : 0x04 * /
/ * ! < o f f s e t : 0x08 * /
/ * ! < o f f s e t : 0x0c * /
/ * ! < o f f s e t : 0x10 * /
const x p i _ d r i v e r _ i n t e r f a c e _ t * x p i _ d r i v e r _ i f ;
c o n s t x p i _ n o r _ d r i v e r _ i n t e r f a c e _ t * x p i _ n o r _ d r i v e r _ i f ; / * ! < o f f s e t : 0x14 * /
c o n s t x p i _ r a m _ d r i v e r _ i n t e r f a c e _ t * x p i _ r a m _ d r i v e r _ i f ; / * ! < o f f s e t : 0x18 * /
const s d p _ d r i v e r _ i n t e r f a c e _ t * s d p _ d r i v e r _ i f ;
const sec_boot_api_interface_t * sec_boot_api_if ;
/ * ! < o f f s e t : 0x1c * /
/ * ! < o f f s e t : 0x20 * /
const sm3_api_interface_t * sm3_api_if ;
const sm4_api_interface_t * sm4_api_if ;
/ * ! < o f f s e t : 0x24 * /
/ * ! < o f f s e t : 0x28 * /
} bootloader_api_table_t ;
# d e f i n e ROM_API_TABLE_ROOT
19.7.2
( c o n s t b o o t l o a d e r _ a p i _ t a b l e _ t * ) 0 x2001FF00U
run_bootloader API
用户程序可通过调用该 API 跳转到指定的启动模式 (如进入 ISP 模式或选择启动另一个镜像)。其原型定义
为:
typedef s t r u c t {
u i n t 3 2 _ t index : 8 ;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
255/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
uint32_t peripheral :8;
uint32_t src : 8 ;
u i n t 3 2 _ t tag : 8 ;
} api_boot_arg_t ;
# d e f i n e API_BOOT_TAG
( 0xEBU )
# d e f i n e API_BOOT_SRC_FUSE ( 0U)
# d e f i n e API_BOOT_SRC_PRIMARY ( 1U)
# d e f i n e API_BOOT_SRC_SERIAL_BOOT ( 2U)
# d e f i n e API_BOOT_SRC_ISP ( 3U)
# d e f i n e API_BOOT_SRC_MAX
( API_BOOT_SRC_ISP )
# d e f i n e API_BOOT_PERIPH_AUTO ( 0U)
# d e f i n e API_BOOT_PERIPH_UART ( 1U)
# d e f i n e API_BOOT_PERIPH_USBHID ( 2U)
# d e f i n e API_BOOT_PERIPH_MASK ( API_BOOT_PERIPH_USBHID )
v o i d r u n _ b o o t l o a d e r ( v o i d * arg ) ;
19.7.2.1
示例:
用户在应用程序中想进入在系统编程模式,可通过如下方式进入:
a p i _ b o o t _ a r g _ t boot_arg = { . i n d e x = 0 ,
. p e r i p h e r a l = API_BOOT_PERIPH_AUTO ,
. s r c = API_BOOT_SRC_ISP ,
. t a g = API_BOOT_TAG } ;
ROM_API_TABLE_ROOT−> r u n _ b o o t l o a d e r (& boot_arg ) ;
19.7.3
OTP API
OTP API 提供了 OTP 的读和写操作。其原型定义如下:
typedef s t r u c t {
uint32_t version ;
void (* i n i t ) ( void ) ;
u i n t 3 2 _ t reserved ;
u i n t 3 2 _ t ( * read_from_shadow ) ( u i n t 3 2 _ t addr ) ;
u i n t 3 2 _ t ( * re ad _ fr om _ ip ) ( u i n t 3 2 _ t addr )
hpm_stat_t ( * program ) ( u i n t 3 2 _ t addr , c o n s t u i n t 3 2 _ t * src , u i n t 3 2 _ t num_of_words ) ;
hpm_stat_t ( * r e l o a d ) ( e f u s e _ r e g i o n _ t r e g i o n ) ;
hpm_stat_t ( * l o c k _ o t p ) ( u i n t 3 2 _ t addr , o t p _ l o c k _ o p t i o n _ t l o c k _ o p t i o n ) ;
hpm_stat_t ( * lock_shadow ) ( u i n t 3 2 _ t addr , o t p _ l o c k _ o p t i o n _ t l o c k _ o p t i o n ) ;
hpm_stat_t ( * s e t _ c o n f i g u r a b l e _ r e g i o n ) ( u i n t 3 2 _ t s t a r t , u i n t 3 2 _ t num_of_words ) ;
hpm_stat_t ( * w r i t e _ s h a d o w _ r e g i s t e r ) ( u i n t 3 2 _ t addr , u i n t 3 2 _ t data ) ;
} otp_driver_interface_t ;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
256/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
19.7.3.1
BOOTROM
init
该 API 用于初始化 OTP 驱动,在调用 OTP 的读写操作前,确认该 API 已被调用过。
19.7.3.2
read_from_shadow
该 API 用于从 OTP Shadow 寄存器中读取指定的 OTP 字。
19.7.3.3
read_from_ip
该 API 用于用 IP 读的方式从 OTP 中读取指定的 OTP 字。
19.7.3.4
program
该 API 用于向指定的 OTP 地址范围内写入数据。该 API 的参数定义如下:
● addr - 指定的写入地址
● src - 要写入的数据的指针
● num_of_words - 要写入的字数 (单位 32-bit)
19.7.3.5
reload
该 API 用于重回加载指定区域的 shadow 寄存器的值。其中参数的定义如下:
t y p e d e f enum {
efuse_region0_mask = 1U,
efuse_region1_mask = 2U,
efuse_region2_mask = 4U,
efuse_region3_mask = 8U,
/ * ! < Address range : [ 0 , 7 ]
*/
/ * ! < Address range : [ 8 , 1 5 ] * /
/ * ! < Address range : [ 1 6 , 127] * /
/ * ! < Address range : user d e f i n e d * /
} otp_region_t ;
19.7.3.6
lock_otp
该 API 可锁定指定 OTP 字的相应权限。其参数定义如下所示:
t y p e d e f enum {
efuse_no_lock = 0 ,
e fu se_ rea d_o nly = 1 ,
efuse_permanent_no_lock = 2 ,
efuse_disable_access = 3 ,
efuse_lock_option_max = efuse_disable_access ,
} otp_lock_option_t ;
19.7.3.7
set_configuratable_region
该 API 用于设置用户指定的可配置区域。
19.7.3.8
write_shadow_register
该 API 可直接向指定的 shadow 寄存器写入指定的值。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
257/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
19.7.3.9
BOOTROM
示例
如用户想读取 OTP 的第 26 个字。可通过如下两种方式来获取: 方式一: 通过 Shadow 寄存器获取:
u i n t 3 2 _ t fuse_word = ROM_API_TABLE_ROOT−> o t p _ d r i v e r _ i f −>read_from_shadow ( 2 6 ) ;
方式二:通过 IP 读来获取:
u i n t 3 2 _ t fuse_word = ROM_API_TABLE_ROOT−> o t p _ d r i v e r _ i f −> r e ad _f r om _ ip ( 2 6 ) ;
19.7.4
XPI 底层驱动 API
XPI 底层 API 提供了 XPI 模块特定功能的配置以及数据的传输,其 API 接口原型定义如下所示:
:
typedef s t r u c t {
uint32_t version ;
hpm_stat_t ( * g e t _ d e f a u l t _ c o n f i g ) ( x p i _ c o n f i g _ t * x p i _ c o n f i g ) ;
hpm_stat_t ( * g e t _ d e f a u l t _ d e v i c e _ c o n f i g ) ( x p i _ d e v i c e _ c o n f i g _ t * d e v _ c o n f i g ) ;
hpm_stat_t ( * i n i t ) ( XPI_Type * base , x p i _ c o n f i g _ t * x p i _ c o n f i g ) ;
hpm_stat_t ( * c o n f i g _ a h b _ b u f f e r ) ( XPI_Type * base , x p i _ a h b _ b u f f e r _ c f g _ t * ahb_buf_cfg ) ;
hpm_stat_t ( * c o n f i g _ d e v i c e ) ( XPI_Type * base , x p i _ d e v i c e _ c o n f i g _ t * dev_cfg , 4
xpi_port_t port ) ;
hpm_stat_t ( * u p d a t e _ i n s t r _ t a b l e ) ( XPI_Type * base , c o n s t u i n t 3 2 _ t * i n s t _ b a s e ,
u i n t 3 2 _ t seq_idx , u i n t 3 2 _ t num ) ;
hpm_stat_t ( * t r a n s f e r _ b l o c k i n g ) ( XPI_Type * base , x p i _ x f e r _ c t x _ t * x f e r ) ;
v o i d ( * s o f t w a r e _ r e s e t ) ( XPI_Type * base ) ;
b o o l ( * i s _ i d l e ) ( XPI_Type * base ) ;
v o i d ( * u p d a t e _ d l l c r ) ( XPI_Type * base , u i n t 3 2 _ t s e r i a l _ r o o t _ c l k _ f r e q ,
uint32_t data_valid_time , xp i_po rt_t port , uint32_t dl y_ta rget ) ;
hpm_stat_t ( * get_abs_apb_xfer_addr ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
u i n t 3 2 _ t in_addr , u i n t 3 2 _ t * out_addr ) ;
hpm_stat_t ( * i o m u x _ i n i t ) ( XPI_Type * base , c o n s t x p i _ i o _ c o n f i g _ t * i o _ c f g ) ;
hpm_stat_t ( * c l o c k _ i n i t ) ( XPI_Type * base , c o n s t x p i _ c l k _ c o n f i g _ t * c l k _ c f g ) ;
} xpi_driver_interface_t ;
19.7.4.1
get_default_config
本 API 用于获取 XPI 默认的配置参数。xpi_config_t 定义详见 SDK。
示例:
xpi_config_t xpi_config ;
hpm_stat_t s t a t u s = ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> g e t _ d e f a u l t _ c o n f i g (& x p i _ c o n f i g ) ;
19.7.4.2
get_default_device_config
本 API 用于获取设备的默认配置参数。xpi_device_config_t 定义见 SDK。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
258/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
示例:
xpi_device_config_t device_config ;
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> g e t _ d e f a u l t _ d e f a u l t _ c o n f i g (& d e v i c e _ c o n f i g ) ;
19.7.4.3
init
根据 xpi_config 参数配置 XPI 控制器.
示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> i n i t ( HPM_XPI0 , & x p i _ c o n f i g ) ;
19.7.4.4
config_ahb_buffer
配置 AHB Buffer 的信息。xpi_ahb_buffer_cfg_t 的定义如下:
typedef s t r u c t
{
struct
{
uint8_t p r i o r i t y ;
/ * O f f s e t : 0x00 * /
/ * O f f s e t : 0x01 * /
u i n t 8 _ t m a s t e r_ i d x ;
u i n t 8 _ t buf_size_in_dword ;
/ * O f f s e t : 0x02 * /
/ * O f f s e t : 0x03 * /
bool enable_prefetch ;
} e n t r y [ XPI_AHB_BUF_CR_COUNT ] ;
} xpi_ahb_buffer_cfg_t ;
示例:
x p i _ a h b _ b u f f e r _ c f g _ t ahb_cfg ;
f o r ( u i n t 3 2 _ t i =0; i x p i _ d r i v e r _ i f −> c o n f i g _ a h b _ b u f f e r ( HPM_XPI0 , &ahb_cfg ) ;
19.7.4.5
config_device
将 Device 信息配置到 XPI 控制器。
示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> c o n f i g _ d e v i c e ( HPM_XPI0 , &d e v i c e _ c o n f i g ) ;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
259/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
19.7.4.6
BOOTROM
update_instr_table
将指令表更新到 XPI 控制器。
示例:
u i n t 3 2 _ t l u t [ 4 ] = { XPI_INSTR_SEQ (XPI_PHASE_CMD_SDR, XPI_1PAD , 0x03 ,
XPI_PHASE_RADDR_SDR, XPI_1PAD , 0 x18 ) ,
XPI_INSTR_SEQ (XPI_PHASE_READ_SDR, XPI_1PAD , 0x04 ,
XPI_PHASE_STOP , XPI_1PAD , 0x00 ) ,
0, 0};
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> u p d a t e _ i n s t r _ t a b l e ( HPM_XPI0 ,
&lut [0] , 0, 1);
19.7.4.7
transfer_blocking
完成阻塞式的传输 (读/写/发命令)。示例:
uint32_t buffer [128];
xpi_xfer_ctx_t xfer = {0};
x f e r . cmd_type = x p i _ a p b _ x f e r _ t y p e _ r e a d ;
x f e r . addr = 0x1000 ;
x f e r . seq_idx = 0 ;
x f e r . seq_num = 1 ;
xfer . port = xpi_xfer_port_auto ;
x f e r . buf = &b u f f e r [ 0 ] ;
xfer . xfer_size = sizeof ( buffer ) ;
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> t r a n s f e r _ b l o c k i n g ( HPM_XPI0 , & x f e r ) ;
19.7.4.8
software_reset
对 XPI 模块进行软复位。示例:
ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> s o f t w a r e _ r e s e t ( HPM_XPI0 ) ;
19.7.4.9
is_idle
判断 XPI 模块是否空闲。示例:
b o o l i s _ i d l e = ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> i s _ i d l e ( HPM_XPI0 ) ;
19.7.4.10
update_dllcr
更新延时线 (delay line) 设置。示例:
u i n t 3 2 _ t s e r i a l _ r o o t _ c l k _ f r e q = 133000000UL ;
u i n t 8 _ t d a t a _ v a l i d _ t i m e = 100;
xpi_port_t port = xpi_port_a1 ;
uint8_t delay_target = 8;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
260/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
ROM_API_TABLE_ROOT−> x p i _ d r i v e r _ i f −> u p d a t e _ d l l c r ( HPM_XPI0 , s e r i a l _ r o o t _ c l k _ f r e q ,
data_valid_time , port , delay_target ) ;
19.7.5
XPI NOR API
XPI NOR API 提供了对市面上大多数 FLASH 设备的支持,可以方便的进行 FLASH 的读写操作,其 API 接
口原型定义如下所示:
typedef s t r u c t {
uint32_t version ;
hpm_stat_t ( * g e t _ c o n f i g ) ( XPI_Type * base ,
x p i _ n o r _ c o n f i g _ t * nor_cfg ,
xpi_nor_config_option_t * cfg_option ) ;
hpm_stat_t ( * i n i t ) ( XPI_Type * base , x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g ) ;
hpm_stat_t ( * e n a b l e _ w r i t e ) ( XPI_Type * base ,
x p i _ x f e r _ p o r t _ t port ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t addr ) ;
hpm_stat_t ( * g e t _ s t a t u s ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t addr ,
uint16_t * out_status ) ;
hpm_stat_t ( * wait_busy ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t addr ) ;
hpm_stat_t ( * erase ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
const x p i _ n o r _ c o n f i g _ t * nor_config , u i n t 3 2 _ t s t a r t ,
uint32_t length ) ;
hpm_stat_t ( * er a se _ c hi p ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
const x p i _ n o r _ c o n f i g _ t * nor_config ) ;
hpm_stat_t ( * e r a s e _ s e c t o r ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t addr ) ;
hpm_stat_t ( * er a s e _ bl o ck ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t addr ) ;
hpm_stat_t ( * program ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , c o n s t u i n t 3 2 _ t * src ,
u i n t 3 2 _ t dst_addr , u i n t 3 2 _ t l e n g t h ) ;
hpm_stat_t ( * read ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t * dst ,
uint32_t start , uint32_t length ) ;
hpm_stat_t ( * page_program_nonblocking ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , c o n s t u i n t 3 2 _ t * src ,
u i n t 3 2 _ t dst_addr , u i n t 3 2 _ t l e n g t h ) ;
hpm_stat_t ( * e r a s e _ s e c t o r _ n o n b l o c k i n g ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t addr ) ;
hpm_stat_t ( * e r a s e _ b l o c k _ n o n b l o c k i n g ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
c o n s t x p i _ n o r _ c o n f i g _ t * n o r _ c o n f i g , u i n t 3 2 _ t addr ) ;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
261/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
hpm_stat_t ( * e r a s e _ c h i p _ n o n b l o c k i n g ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
const x p i _ n o r _ c o n f i g _ t * nor_config ) ;
hpm_stat_t ( * r e s t o r e _ s p i _ p r o t o c o l ) ( XPI_Type * base , x p i _ x f e r _ p o r t _ t p o r t ,
xpi_nor_config_t * config , flash_run_context_t * run_ctx ) ;
hpm_stat_t ( * w r i t e _ p e r s i s t e n t ) ( c o n s t u i n t 3 2 _ t data ) ;
hpm_stat_t ( * r e a d _ p e r s i s t e n t ) ( u i n t 3 2 _ t * data ) ;
hpm_stat_t ( * a u t o _ c o n f i g ) ( XPI_Type * base , x p i _ n o r _ c o n f i g _ t * nor_cfg ,
xpi_nor_config_option_t * cfg_option ) ;
hpm_stat_t ( * g e t _ p r o p e r t y ) ( XPI_Type * base , x p i _ n o r _ c o n f i g _ t * nor_cfg ,
u i n t 3 2 _ t property_id , u i n t 3 2 _ t * value ) ;
hpm_stat_t ( * s e t _ p r o p e r t y ) ( XPI_Type * base , x p i _ n o r _ c o n f i g _ t * nor_cfg ,
u i n t 3 2 _ t property_id , u i n t 3 2 _ t value ) ;
} xpi_nor_driver_interface_t ;
19.7.5.1
get_config
根据 FLASH 配置选项来获取 FLASH 的配置。该 API 支持市面上大多数的 4 线和 8 线串行 NOR FLASH。详
细的定义见XPI NOR 配置信息。
示例:
xpi_nor_config_option_t flash_option = { 0 } ;
xpi_nor_config_t flash_config ;
f l a s h _ o p t i o n . header . U = 0 x f c f 9 0 0 0 1 ;
f l a s h _ o p t i o n . o p t i o n 0 .U = 0x00000007 ;
hpm_stat_t s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> g e t _ c o n f i g ( HPM_XPI0 ,
&f l a s h _ c o n f i g , & f l a s h _ o p t i o n ) ;
19.7.5.2
init
根据 FLASH 配置初始化 XPI。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> i n i t ( HPM_XPI0 , & f l a s h _ c o n f i g ) ;
19.7.5.3
enable_write
使能 FLASH 写操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> e n a b l e _ w r i t e ( HPM_XPI0 ,
xpi_xfer_port_auto , &f l a s h _ c o n f i g ) ;
19.7.5.4
get_status
获取 FLASH 当前的状态。示例:
uint16_t flash_status ;
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> g e t _ s t a t u s ( HPM_XPI0 ,
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
262/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
x p i _ x f e r _ p o r t _ a u t o , &f l a s h _ c o n f i g , 0 , & f l a s h _ s t a t u s ) ;
19.7.5.5
wait_busy
FLASH 忙等待操作。API 在 FLASH 忙时会一直阻塞式等待。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> wait_busy ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , &f l a s h _ c o n f i g , 0 ) ;
19.7.5.6
erase
阻塞式擦除指定的 FLASH 区间,该命令依次执行 FLASH 擦除和忙等待操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −>erase ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , &f l a s h _ c o n f i g , 0 , 0x2000 ) ;
19.7.5.7
erase_chip
阻塞式擦除整块 FLASH。该命令依次执行 FLASH 擦除和忙等待操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> e ra s e _c h i p ( HPM_XPI0 ,
xpi_xfer_port_auto , &fl ash _co nfi g ) ;
19.7.5.8
erase_sector
阻塞式擦除指定的 FLASH 扇区。该命令依次执行 FLASH 擦除和忙等待操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> e r a s e _ s e c t o r ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , &f l a s h _ c o n f i g , 0x4000 ) ;
19.7.5.9
erase_block
阻塞式擦除指定的 FLASH 块。该命令依次执行 FLASH 擦除和忙等待操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> e ra s e_ b lo c k ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , &f l a s h _ c o n f i g , 0x4000 ) ;
19.7.5.10
program
阻塞式烧写数据到指定的 FLASH 区域。该命令依次执行 FFLASH 写操作和忙等待操作示例:
uint32_t buffer [64];
u i n t 8 _ t * buf_8 = ( u i n t 8 _ t * )& b u f f e r [ 0 ] ;
f o r ( u i n t 3 2 _ t i =0; i x p i _ n o r _ d r i v e r _ i f −>program ( HPM_XPI0 ,
xpi_xfer_port_auto , &f l a s h _ c o n f i g , buf fer , 0 , s i z e o f ( b u f f e r ) ) ;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
263/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
19.7.5.11 read
阻塞式读 FLASH 指定的区域。示例:
uint32_t buffer [64];
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −>read ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , &f l a s h _ c o n f i g , b u f f e r , 0 , s i z e o f ( b u f f e r ) ) ;
19.7.5.12
page_program_nonblocking
非阻塞式的写数据到指定 FLASH 页。该 API 只负责完成 PAGE Program 命令的发送,用户程序需要完成后续
的忙等待操作。示例:
uint32_t buffer [64];
u i n t 8 _ t * buf_8 = ( u i n t 8 _ t * )& b u f f e r [ 0 ] ;
f o r ( u i n t 3 2 _ t i =0; i x p i _ n o r _ d r i v e r _ i f −>page_program_nonblocking ( HPM_XPI0 ,
xpi_xfer_port_auto , &f l a s h _ c o n f i g , buf fer , 0 , s i z e o f ( b u f f e r ) ) ;
19.7.5.13
erase_sector_nonblocking
非阻塞式的擦除指定的 FLASH 扇区,该 API 只负责完成 Sector Erase 命令的发送,用户程序需要完成后续的
忙等待操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> e r a s e _ s e c t o r _ n o n b l o c k i n g ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , & f l a s h _ c o n f i g , 0x4000 ) ;
19.7.5.14
erase_block_nonblocking
非阻塞式的擦除指定的 FLASH 块, 该 API 只负责完成 Block Erase 命令的发送,用户程序需要完成后续的忙等
待操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> e r a s e _ b l o c k _ n o n b l o c k i n g ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , & f l a s h _ c o n f i g , 0x4000 ) ;
19.7.5.15
erase_chip_nonblocking
非阻塞式的擦除整片 FLASH 空间, 该 API 只负责完成 Chip Erase 命令的发送,用户程序需要完成后续的忙等
待操作。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ n o r _ d r i v e r _ i f −> e r a s e _ c h i p _ n o n b l o c k i n g ( HPM_XPI0 ,
x p i _ x f e r _ p o r t _ a u t o , & f l a s h _ c o n f i g , 0x4000 ) ;
19.7.6
XPI RAM API
XPI RAM API 提供了对市面上常见的 HyperRAM,Octal RAM, QPI RAM 的支持。其 API 接口原型定义如下
所示:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
264/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
typedef s t r u c t {
uint32_t version ;
hpm_stat_t ( * g e t _ c o n f i g ) ( XPI_Type * base ,
x p i _ r a m _ c o n f i g _ t * ram_cfg ,
xpi_ram_config_option_t * cfg_option ) ;
hpm_stat_t ( * i n i t ) ( XPI_Type * base , x p i _ r a m _ c o n f i g _ t * ram_cfg ) ;
} xpi_ram_driver_interface_t ;
19.7.6.1
get_config
根据 RAM 配置选项获取 RAM 的配置参数。示例:
x p i _ r a m _ c o n f i g _ t ram_config ;
xpi_ram_config_option_t option = { 0 } ;
o p t i o n . header . t a g = XPI_RAM_CFG_OPTION_TAG ;
o p t i o n . header . words = 2 ;
option . option0 . freq_opt = 8;
o p t i o n . o p t i o n 0 . probe_type = xpi_ram_type_apmemory_x8 ; / / APS6408L−OBM
o p t i o n . o p t i o n 0 . misc = 1 ; / * 1 . 8V * /
option . option1 . port = xpi_port_a2 ;
hpm_stat_t s t a t u s = ROM_API_TABLE_ROOT−> x p i _ r a m _ d r i v e r _ i f −> g e t _ c o n f i g ( HPM_XPI1 ,
&ram_config , &o p t i o n ) ;
19.7.6.2
init
根据 RAM 配置信息配置 XPI。示例:
s t a t u s = ROM_API_TABLE_ROOT−> x p i _ r a m _ d r i v e r _ i f −> i n i t ( HPM_XPI1 , &ram_config ) ;
19.7.7
安全启动 API
安全启动 API 提供了对兼容 BootROM 启动镜像的数据的安全认证支持。其 API 接口原型定义如下所示:
typedef s t r u c t {
uint32_t version ;
s e c u r e _ s t a t u s _ t ( * i n i t ) ( r o m_ co r e _ ct x_ t * c t x , u i n t 3 2 _ t c o r e _ i d ) ;
s e c u r e _ s t a t u s _ t ( * auth_img_hdr ) ( r o m_ co re _ ct x_ t * c t x ,
c o n s t boot_image_hdr_t * img_hdr ,
c o n s t u i n t 8 _ t * blob ,
c o n s t u i n t 8 _ t * srk_hash ) ;
s e c u r e _ s t a t u s _ t ( * auth_fw ) ( ro m_ co re _ ct x_ t * c t x ,
const f i r m w a r e _ i n f o _ t * fw_info ) ;
s e c u r e _ s t a t u s _ t ( * hdl_img ) ( ro m _c or e _ c tx _t * c t x ,
c o n s t image_buf_t * img_hdr_buf ,
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
265/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
const b o o t _ i n t e r f a c e _ t * b o o t _ i f ,
uint32_t img_offset ) ;
} sec_boot_api_interface_t ;
详细的结构体定义见 SDK 中的示例。
19.7.8
SM3 API
SM3 API 支持基于 SM3 的数据的哈希值计算。其 API 接口原型定义如下所示:
typedef s t r u c t {
uint32_t version ;
hpm_stat_t ( * i n i t ) ( sm3_context_t * c t x ) ;
hpm_stat_t ( * update ) ( sm3_context_t * c t x , c o n s t u i n t 8 _ t * i n p u t , u i n t 3 2 _ t l e n ) ;
hpm_stat_t ( * f i n a l i z e ) ( sm3_context_t * c t x , u i n t 8 _ t o u t p u t [ 3 2 ] ) ;
} sm3_api_interface_t ;
详细的结构体定义见 SDK 中的示例。
19.7.9
SM4 API
SM4 API 支持基于 SM4 的 ECB,CBC,CTR, 以及 CCM 模式的加密和解密操作。其 API 接口原型定义如下所
示:
typedef s t r u c t {
uint32_t version ;
v o i d ( * setkey_enc ) ( sm4_context_t * c t x , c o n s t u i n t 8 _ t key [ 1 6 ] ) ;
v o i d ( * setkey_dec ) ( sm4_context_t * c t x , c o n s t u i n t 8 _ t key [ 1 6 ] ) ;
hpm_stat_t ( * c r y p t _ e c b ) ( sm4_context_t * c t x , u i n t 3 2 _ t mode , u i n t 3 2 _ t l e n g t h ,
const u i n t 8 _ t * input , u i n t 8 _ t * output ) ;
hpm_stat_t ( * c r y p t _ c b c ) ( sm4_context_t * c t x , u i n t 3 2 _ t mode , u i n t 3 2 _ t l e n g t h ,
const u i n t 8 _ t i v [ 1 6 ] , const u i n t 8 _ t * input , u i n t 8 _ t * output ) ;
hpm_stat_t ( * c r y p t _ c t r ) ( sm4_context_t * c t x , u i n t 8 _ t * nonce_counter ,
const u i n t 8 _ t * input , u i n t 8 _ t * output , u i n t 3 2 _ t length ) ;
hpm_stat_t ( * ccm_gen_enc ) ( sm4_context_t * c t x , u i n t 3 2 _ t i n p u t _ l e n ,
const u i n t 8 _ t * iv , u i n t 3 2 _ t iv_len ,
c o n s t u i n t 8 _ t * aad , u i n t 3 2 _ t aad_len ,
const u i n t 8 _ t * input , u i n t 8 _ t * output ,
u i n t 8 _ t * tag , u i n t 3 2 _ t t a g _ l e n ) ;
hpm_stat_t ( * ccm_dec_verify ) ( sm4_context_t * c t x , u i n t 3 2 _ t i n p u t _ l e n ,
const u i n t 8 _ t * iv , u i n t 3 2 _ t iv_len ,
c o n s t u i n t 8 _ t * aad , u i n t 3 2 _ t aad_len ,
const u i n t 8 _ t * input , u i n t 8 _ t * output ,
c o n s t u i n t 8 _ t * tag , u i n t 3 2 _ t t a g _ l e n ) ;
} sm4_api_interface_t ;
详细的结构体定义见 SDK 中的示例。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
266/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
19.8
19.8.1
SoC 专有信息
OTP 映射表
OTP
位偏
字段
字索
移
宽度
引
1
BOOTROM
字段
描述
(位)
0
4
LIFE_CYCLE_A
Life Cycle(生命周期)
8
8
PUBK_REVOKE
Public Key REVOKE(公钥撤销)
低4位有效, bitn 代表撤销第 n 个公钥
28
4
LIFE_CYCLE_B
Duplicate Life Cycle(重复的生命周期)
实际的生命周期值为
LIFE_CYCLE_A|LIFE_CYCLE_B
3
软件最低版本号
0
32
SW_VER
0
4
XPI_FREQ_OPTION
XPI 频率选项
详见XPI 频率选项
4
1
XPI 实例
XPI_INSTANCE
0 - XPI0
1 - XPI1
24
5
1
XPI_PIN_GROUP
XPI 引脚分组
0 - 第一组
1 - 第二组
6
2
XPI 端口选择
XPI_PORT_SEL
0 - XPI_CA (仅支持 CS0)
1 - XPI_CB (仅支持 CS0)
8
4
Serial NOR 探测类型
PROBE_TYPE
0 - 基于 SFDP (SDR 模式)
1 - 基于 SFDP (DDR/DTR 模式)
2 - 1-4-4 读 (命令 0xEB, 地址 24 位)
3 - 1-2-2 读 (命令 0xBB, 地址 24 位)
4 - HyperFLASH (1.8 伏)
5 - HyperFLASH (3.0 伏)
6 - OctaBus DTR 模式
8 - Xcella DDR 模式
10 - EcoXiP Octal DDR 模式
其它-保留
12
1
加密原地执行使能
ENCRYPT_XIP
0 - 不启用加密原地执行
1 - 启用加密原地执行
13
1
XPI_NOR_CFG_SRC
选择 XPI NOR 配置选项的位置
0 - 从 FLASH 偏移 0x400 处寻找 XPI NOR CFG
OPTION
1 - 从 OTP 中寻找 XPI NOR CFG OPTION
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
267/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP
位偏
字段
字索
移
宽度
引
字段
BOOTROM
描述
(位)
14
2
XPI_DEFAULT_READ
XPI 默认读模式
0 - 1-1-1 读,命令为 0x03,24 位地址
1 - HyperBUS 读
2 - Xcella OPI DDR 读
3 - OctaBUS OPI DDR 读
16
4
启动模式选择
BOOT_MODE
0 - 启动模式由 BOOT_MODE 引脚决定
● 0 - 从 XPI NOR 启动
● 1 - 从 UART/USB-HID 启动
● 2 - 在系统编程模式
● 其他 - 保留
1 - 从 XPI NOR 启动
2 - 从 UART/USB-HID 启动
其它 - 保留
20
4
DRIVE_STRENGTH
IO 驱动强度选择
0 - BootROM 默认配置
其它-见 IOC 中的 PAD_CTL 中的 DS 字段定义
24
7
DUMMY_CYCLE
Serial NOR FLASH DUMMY CYCLE 值
0 - DUMM CYCLE 值由 ROM 自动检测/使用 ROM
预置的值
其它 - 使用该字段定义的 DUMMY CYCLE 值
31
1
选择 IO 口电压
IO_VOLTAGE
0 - 3.0 伏
1 - 1.8 伏
25
0
16
SEC_IMG_OFFSET
第二份启动镜像的地址偏移
0 - 第二份启动镜像并不存在
其它 - S EC_IMG_OFFS ET ×256KB
16
16
启动镜像的最大长度
MAX_IMG_LEN
0 - S EC_IMG_OFFS ET ×256KB
其它 - MAX_IMG_LEN×256KB
0
2
FORCE_COLD_BOOT
强制冷启动
0 - 支持低功耗唤醒
26
其它 - 强制冷启动
2
2
FORCE_WAKEUP_ENTRY_CHK 强制检查唤醒入口的完整性校验
0 - 无需检查唤醒入口的完整性
1 - 强制检测唤醒入口的完整性 (基于 SHA256)
4
1
HIGH_SPEED_BOOT
高速启动模式使能
0 - 普通启动模式 (CPU CORE 频率约为 325MHz)
1 - 高速启动模式 (CPU CORE 频率约为 650MHz)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
268/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP
位偏
字段
字索
移
宽度
引
字段
BOOTROM
描述
(位)
5
27
保留
-
27
0
32
保留
-
80
0
32
SRK_HASH[31:0]
81
0
32
SRK_HASH[63:32]
82
0
32
SRK_HASH[95:64]
83
0
32
SRK_HASH[127:96]
84
0
32
SRK_HASH[159:128]
85
0
32
SRK_HASH[191:160]
86
0
32
SRK_HASH[223:192]
87
0
32
SRK_HASH[255:224]
96
0
32
EXIP0_KEK[31:0]
KEK 在 OTP 里以大端方式存储。
97
0
32
EXIP0_KEK[63:32]
若 KEK 以字节的形式表示为 (b0, b1, b2, ...,
98
0
32
EXIP0_KEK[95:64]
b14, b15) 则在 OTP 里的存储表示为
99
0
32
EXIP0_KEK[127:96]
0xb15b14b13b12, ..., 0xb3b2b1b0
100
0
32
OTP_KEK0[31:0]
101
0
32
OTP_KEK0[63:32]
102
0
32
OTP_KEK0[95:64]
103
0
32
OTP_KEK0[127:96]
104
0
32
EXIP0_KEK[31:0]
KEK 在 OTP 里以大端方式存储。
105
0
32
EXIP0_KEK[63:32]
若 KEK 以字节的形式表示为 (b0, b1, b2, ...,
106
0
32
EXIP0_KEK[95:64]
b14, b15) 则在 OTP 里的存储表示为
107
0
32
EXIP0_KEK[127:96]
0xb15b14b13b12, ... , 0xb3b2b1b0
108
0
32
OTP_KEK1[31:0]
109
0
32
OTP_KEK1[63:32]
110
0
32
OTP_KEK1[95:64]
111
0
32
OTP_KEK1[127:96]
SRK_HASH 在 OTP 里以小端形式存储
若 SRK_HASH 以字节的形式表示为 (b0, b1,
b2, b3, ..., b30, b31), 则在 OTP 的存储依次
为:
0xb3b2b1b0, 0xb7b6b5b4
...,
0xb31b30b29b28
-
-
表 84: BootROM 相关的 OTP 映射表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
269/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
19.8.2
BootROM 支持的外设信息
19.8.2.1
XPI 信息
BOOTROM
XPI0 引脚组
引脚分组
0
1
引脚
功能
描述
PA00
XPI0.CA_CS0
PA06
XPI0.CA_CS1
PA04
XPI0.CA_SCLK
PA03
XPI0.CA_D[0]
PA01
XPI0.CA_D[1]
PA02
XPI0.CA_D[2]
PA05
XPI0.CA_D[3]
PA07
XPI0.CA_DQS
当 FLASH 设备支持 SPI 模式时,XPI 默认通
PA15
XPI0.CB_CS0
过加粗的引脚来访问 FLASH
PA14
XPI0.CB_CS1
PA11
XPI0.CB_SCLK / XPI0.CA_SCLK_B
PA08
XPI0.CB_D[0] / XPI0.CA_D[4]
PA10
XPI0.CB_D[1] / XPI0.CA_D[5]
PA09
XPI0.CB_D[2] / XPI0.CA_D[6]
PA12
XPI0.CB_D[3] / XPI0.CA_D[7]
PA13
XPI0.CB_DQS
PX02
XPI0.CA_CS0
PX04
XPI0.CA_SCLK
PX03
XPI0.CA_D[0]
PX01
XPI0.CA_D[1]
PX00
XPI0.CA_D[2]
PX05
XPI0.CA_D[3]
PX06
XPI0.CA_DQS
-
表 85: XPI0 引脚信息
注意:
● 当 XPI0 CA 这组引脚连接了不支持 DQS 引脚的 FLASH 时,CA_DQS 引脚可用于其他用途
● 第二组的 XPI 引脚只有 SiP 封装的芯片才有效
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
270/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
XPI1 引脚组
引脚分组
0
引脚
功能
描述
PB17
XPI1.CA_CS0
PB14
XPI1.CA_SCLK
PB12
XPI1.CA_D[0]
PB15
XPI1.CA_D[1]
PB13
XPI1.CA_D[2]
PB16
XPI1.CA_D[3]
PB11
XPI1.CA_DQS
PB03
XPI1.CB_CS0
PB08
XPI1.CB_SCLK /
当 FLASH 设备支持 SPI 模式时,XPI 默认通
过加粗的引脚来访问 FLASH
XPI1.CA_SCLK_B
1
PB10
XPI1.CB_D[0] / XPI1.CA_D[4]
PB07
XPI1.CB_D[1] / XPI1.CA_D[5]
PB09
XPI1.CB_D[2] / XPI1.CA_D[6]
PB06
XPI1.CB_D[3] / XPI1.CA_D[7]
PB05
XPI1.CB_DQS
PD13
XPI1.CA_CS0
PD01
XPI1.CA_CS1
PD04
XPI1.CA_SCLK
PD06
XPI1.CA_D[0]
PD12
XPI1.CA_D[1]
PD14
XPI1.CA_D[2]
PD02
XPI1.CA_D[3]
PD15
XPI1.CA_DQS
PD08
XPI1.CB_CS0
PD10
XPI1.CB_CS1
PD05
XPI1.CB_SCLK /
-
XPI1.CA_SCLK_B
PD07
XPI1.CB_D[0] / XPI1.CA_D[4]
PD09
XPI1.CB_D[1] / XPI1.CA_D[5]
PD11
XPI1.CB_D[2] / XPI1.CA_D[6]
PD03
XPI1.CB_D[3] / XPI1.CA_D[7]
PD00
XPI1.CB_DQS
表 86: XPI1 引脚信息
XPI 频率选项
BootROM 支持的 XPI NOR 频率如下:
● 1 - 31MHz
● 2 - 50MHz
● 3 - 66MHz
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
271/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BOOTROM
● 4 - 80MHz
● 5 - 102MHz
● 6 - 120MHz
● 7 - 133MHz(注:SDR 模式下,该值为 133MHz, DTR/DDR 模式下,该值为 125MHz)
● 8 - 166MHz
注意: 上述频率均基于 SoC 默认的 PRESET 时钟分频而来,若对应的时钟源(如 PLL1CLK1) 的频率发生改变,上述频率
会发生改变,用户需事先确认对 PLL 时钟的改变 XPI 的频率产生影响。
19.8.2.2
UART 引脚
芯片引脚
功能
功能描述
PY06
UART0.TXD
PY07
UART0.RXD
UART0 引脚
表 87: UART0 引脚
19.8.2.3
USB 引脚
芯片引脚
功能
USB0.DP
USB_DP
USB0.DM
USB_DM
功能描述
USB0 引脚
表 88: USB0 引脚
19.8.2.4
启动模式 (BOOT_MODE) 引脚
芯片引脚
功能
功能描述
PA20
BOOT_MODE[0]
PA21
BOOT_MODE[1]
启动模式引脚
表 89: BOOT_MODE 引脚
19.8.3
BootROM 预占用的寄存器信息
寄存器
功能
描述/备注
SYSCTL.CPU0.GPR0
CPU0 唤醒入口
SYSCTL.CPU0.PARAM0
CPU0 唤醒代码起始地址
CPU0 的唤醒程序入口
CPU0 唤醒程序的起始地址(用于完整性检
验)
SYSCTL.CPU0.PARAM1
CPU0 唤醒代码的长度
CPU0 唤醒程序的长度(用于完整性检验)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
272/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
CPU0 唤醒代码哈希值
SYSCTL.CPU0_DATA0
BOOTROM
在 FORCE_WAKEUP_ENTRY_CHK 被置 1
后,BootROM 需要根据
-
SYSCTL.CPU0_PARAM0 和
SYSCTL.CPU0_DATA7
SYSCTL.CPU0_PARAM1 指定的地址范围做
SHA256 计算,并与
PMIC.GPR4-PMIC.GPR11 中的值作比较,只
有当结果匹配后,才允许跳转,否则执行完整
的启动流程
SYSCTL.CPU0_LOCK
上述寄存器的锁定寄存器
-
SYSCTL.CPU1_GPR0
CPU1 启动程序入口
-
SYSCTL.CPU1_GPR1
CPU1 启动程序入口有效
仅当该寄存器值为 0xc1bef1a9 时,CPU1 启
标记
动程序入口方有效
PMIC.GPR0
run_bootloader 参数
详见ROM API 简介
PMIC.GPR1
XPI NOR FLASH 状态上
保存 XPI NOR 运行的上下文,详细定义见
下文
ROM 特定标记
PMIC.GPR2
-
表 90: BootROM 占用的寄存器
19.8.4
通用寄存器配置支持的寄存器范围
以下模块支持在通用寄存器信息中配置:
● SYSCTL
● IOC
● DRAM
● XPI0
● XPI1
19.8.5
BootROM 内存映射表
地址范围
功能
0x2000_0000 - 0x2001_FFFF
BootROM 代码及数据
0x000B_4000 - 0x000B_FFFF
BSS,RW,Stack 等
表 91: BootROM 内存映射
19.8.6
BootROM 生命周期 (Lifecycle)
编码
生命周期
描述
4’b0000
CREATE
该模式下 BootROM 不控制 DEBUG 接口
4’b0001
NONSEC
该模式下 DEBUG 口受 BootROM 管控,BootROM 支持引
导非签名的和签名的启动镜像
4’b0011
SECURE
该模式下 DEBUG 口受 BootROM 管控,BootROM 仅支持
引导签名的启动镜像
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
273/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
4’b0111
RETURN
BOOTROM
该模式下芯片的安全相关的信息被禁用,BootROM 可引导
非签名的启动镜像
4’b1011
NONRET
该模式和封闭/部署模式下的表现一致,唯一不同的是
OEM 厂商在该模式下只能切到废弃模式
4’b1111
SCRIBE
作废模式,BootROM 在该模式下无法执行正常的启动操作
表 92: BootROM 生命周期编码
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
274/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
引脚配置及功能 PINMUX
20
20.1
IO 功能分配
本产品引脚配置及功能如下:
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_00
1.8/3.3
-
VIO_00
1.8/3.3
-
VIO_00
1.8/3.3
-
VIO_00
1.8/3.3
-
VIO_00
1.8/3.3
-
VIO_00
1.8/3.3
IO 电压/V
GPIO_A_00(ALT0)
UART1_TXD(ALT2)
27
15
16
K1
P2
PA00
SPI3_CSN(ALT5)
XPI0_CA_CS0(ALT14)
SDC0_DATA_1(ALT17)
GPIO_A_01(ALT0)
UART1_RXD(ALT2)
26
14
15
K3
P1
PA01
SPI3_MISO(ALT5)
XPI0_CA_D_1(ALT14)
SDC0_DATA_0(ALT17)
GPIO_A_02(ALT0)
UART2_TXD(ALT2)
25
13
14
J3
P3
PA02
SPI3_SCLK(ALT5)
XPI0_CA_D_2(ALT14)
SDC0_CLK(ALT17)
GPIO_A_03(ALT0)
UART2_RXD(ALT2)
24
12
13
H3
N3
PA03
SPI3_MOSI(ALT5)
XPI0_CA_D_0(ALT14)
SDC0_CMD(ALT17)
GPIO_A_04(ALT0)
UART3_TXD(ALT2)
22
11
11
H1
M3
PA04
SPI3_DAT3(ALT5)
XPI0_CA_SCLK(ALT14)
ACMP_COMP_1(ALT16)
SDC0_DATA_3(ALT17)
GPIO_A_05(ALT0)
UART3_RXD(ALT2)
21
10
10
H2
M1
PA05
SPI3_DAT2(ALT5)
XPI0_CA_D_3(ALT14)
ACMP_COMP_0(ALT16)
SDC0_DATA_2(ALT17)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
275/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_00
1.8/3.3
-
VIO_00
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_A_06(ALT0)
GPTMR0_CAPT_0(ALT1
)
UART2_DE(ALT2)
20
-
-
-
M2
PA06
UART2_RTS(ALT3)
I2C0_SCL(ALT4)
SPI0_CSN(ALT5)
XPI0_CA_CS1(ALT14)
ETH0_TXEN(ALT18)
GPIO_A_07(ALT0)
GPTMR0_CAPT_1(ALT1
)
19
-
-
-
L2
PA07
UART2_CTS(ALT3)
I2C0_SDA(ALT4)
SPI0_MISO(ALT5)
XPI0_CA_DQS(ALT14)
ETH0_TXD_1(ALT18)
GPIO_A_08(ALT0)
GPTMR0_COMP_0(ALT
1)
UART3_DE(ALT2)
UART3_RTS(ALT3)
17
-
-
-
K2
PA08
I2C1_SCL(ALT4)
SPI0_SCLK(ALT5)
CAN0_TXD(ALT7)
XPI0_CB_D_0(ALT14)
SDC0_DATA_2(ALT17)
ETH0_TXD_0(ALT18)
GPIO_A_09(ALT0)
GPTMR0_COMP_1(ALT
1)
UART3_CTS(ALT3)
16
-
-
-
K1
PA09
I2C1_SDA(ALT4)
SPI0_MOSI(ALT5)
CAN0_RXD(ALT7)
XPI0_CB_D_2(ALT14)
SDC0_DATA_3(ALT17)
ETH0_RXD_1(ALT18)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
276/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_A_10(ALT0)
GPTMR1_CAPT_0(ALT1
)
UART4_DE(ALT2)
15
-
-
-
K3
PA10
UART4_RTS(ALT3)
SPI0_CSN(ALT5)
CAN1_TXD(ALT7)
XPI0_CB_D_1(ALT14)
SDC0_CMD(ALT17)
ETH0_RXD_0(ALT18)
GPIO_A_11(ALT0)
GPTMR1_CAPT_1(ALT1
)
UART4_CTS(ALT3)
14
-
-
-
J3
PA11
SPI0_MISO(ALT5)
CAN1_RXD(ALT7)
XPI0_CB_SCLK(ALT14)
SDC0_CLK(ALT17)
ETH0_RXDV(ALT18)
GPIO_A_12(ALT0)
GPTMR1_COMP_0(ALT
1)
UART5_DE(ALT2)
13
-
-
-
H3
PA12
UART5_RTS(ALT3)
SPI0_SCLK(ALT5)
XPI0_CB_D_3(ALT14)
SDC0_DATA_0(ALT17)
ETH0_REFCLK(ALT18)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
277/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_A_13(ALT0)
GPTMR1_COMP_1(ALT
1)
UART5_CTS(ALT3)
SPI0_MOSI(ALT5)
11
-
-
-
H1
PA13
PDM0_D_3(ALT10)
XPI0_CB_DQS(ALT14)
SDC0_DATA_1(ALT17)
ETH0_RXER(ALT18)
ETH0_MDIO(ALT19)
SOC_REF1(ALT24)
GPIO_A_14(ALT0)
UART4_TXD(ALT2)
SPI0_DAT3(ALT5)
PDM0_D_2(ALT10)
10
-
-
-
H2
PA14
XPI0_CB_CS1(ALT14)
PWM1_P_5(ALT16)
SDC0_CDN(ALT17)
ETH0_RXD_3(ALT18)
ETH0_MDC(ALT19)
SOC_REF0(ALT24)
GPIO_A_15(ALT0)
UART4_RXD(ALT2)
SPI0_DAT2(ALT5)
PDM0_CLK(ALT10)
XPI0_CB_CS0(ALT14)
9
-
-
-
G2
PA15
PWM1_P_4(ALT16)
SDC0_WP(ALT17)
ETH0_RXD_2(ALT18)
ETH0_MDIO(ALT19)
SYSCTL_CLK_OBS_3(A
LT24)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
278/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_A_16(ALT0)
UART5_TXD(ALT2)
SPI1_CSN(ALT5)
PDM0_D_1(ALT10)
8
7
7
G2
F2
PA16
PWM1_P_3(ALT16)
SDC0_VSEL(ALT17)
ETH0_RXCK(ALT18)
ETH0_MDC(ALT19)
SYSCTL_CLK_OBS_2(A
LT24)
GPIO_A_17(ALT0)
UART5_RXD(ALT2)
SPI1_MISO(ALT5)
7
6
6
F2
F1
PA17
PDM0_D_0(ALT10)
PWM1_P_2(ALT16)
ETH0_RXD_1(ALT18)
SYSCTL_CLK_OBS_1(A
LT24)
GPIO_A_18(ALT0)
UART6_TXD(ALT2)
SPI1_SCLK(ALT5)
6
5
5
F1
F3
PA18
PDM0_CLK(ALT10)
PWM1_P_1(ALT16)
ETH0_RXD_0(ALT18)
SYSCTL_CLK_OBS_0(A
LT24)
GPIO_A_19(ALT0)
GPTMR0_CAPT_0(ALT1
)
UART6_RXD(ALT2)
4
2
4
F3
E3
PA19
I2C2_SCL(ALT4)
SPI1_MOSI(ALT5)
DAOR_P(ALT10)
PWM1_P_0(ALT16)
ETH0_RXDV(ALT18)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
279/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_A_20(ALT0)
GPTMR0_CAPT_1(ALT1
)
3
1
3
E3
D3
PA20
UART7_TXD(ALT2)
I2C2_SDA(ALT4)
DAOR_N(ALT10)
TRGM1_P_00(ALT16)
ETH0_TXD_0(ALT18)
GPIO_A_21(ALT0)
GPTMR0_COMP_0(ALT
1)
UART7_RXD(ALT2)
2
80
2
D3
D1
PA21
I2C3_SCL(ALT4)
CAN0_TXD(ALT7)
DAOL_P(ALT10)
TRGM1_P_01(ALT16)
ETH0_TXD_1(ALT18)
GPIO_A_22(ALT0)
GPTMR0_COMP_1(ALT
1)
UART6_DE(ALT2)
1
79
1
D1
D2
PA22
UART6_RTS(ALT3)
I2C3_SDA(ALT4)
CAN0_RXD(ALT7)
DAOL_N(ALT10)
TRGM1_P_02(ALT16)
ETH0_REFCLK(ALT18)
GPIO_A_23(ALT0)
GPTMR1_CAPT_0(ALT1
)
UART6_CTS(ALT3)
144
77
100
D2
C2
PA23
I2C0_SCL(ALT4)
CAN0_STBY(ALT7)
FEMC_CS_1(ALT12)
TRGM1_P_03(ALT16)
ETH0_TXEN(ALT18)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
280/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_A_24(ALT0)
GPTMR1_CAPT_1(ALT1
)
UART7_DE(ALT2)
143
78
99
C2
B2
PA24
UART7_RTS(ALT3)
I2C0_SDA(ALT4)
CAN1_STBY(ALT7)
FEMC_SCLK(ALT12)
TRGM1_P_04(ALT16)
ETH0_TXD_2(ALT18)
GPIO_A_25(ALT0)
GPTMR1_COMP_0(ALT
1)
UART7_CTS(ALT3)
142
75
98
B2
B1
PA25
I2C1_SCL(ALT4)
CAN1_TXD(ALT7)
FEMC_DQ_07(ALT12)
TRGM1_P_05(ALT16)
ETH0_TXD_3(ALT18)
ETH0_MDC(ALT19)
GPIO_A_26(ALT0)
GPTMR1_COMP_1(ALT
1)
UART0_DE(ALT2)
UART0_RTS(ALT3)
141
76
97
B1
A2
PA26
I2C1_SDA(ALT4)
CAN1_RXD(ALT7)
FEMC_DQ_06(ALT12)
TRGM1_P_06(ALT16)
ETH0_CRS(ALT18)
ETH0_MDIO(ALT19)
GPIO_A_27(ALT0)
UART0_CTS(ALT3)
139
-
95
A2
B3
PA27
FEMC_DQ_05(ALT12)
TRGM1_P_07(ALT16)
ETH0_COL(ALT18)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
281/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_A_28(ALT0)
UART1_DE(ALT2)
138
-
94
B3
B4
PA28
UART1_RTS(ALT3)
SPI0_CSN(ALT5)
FEMC_DQ_04(ALT12)
TRGM1_P_08(ALT16)
GPIO_A_29(ALT0)
UART1_CTS(ALT3)
137
-
93
B4
A4
PA29
SPI0_MISO(ALT5)
CAN0_TXD(ALT7)
FEMC_DQ_03(ALT12)
TRGM1_P_09(ALT16)
GPIO_A_30(ALT0)
UART0_TXD(ALT2)
136
-
92
A4
C4
PA30
SPI0_SCLK(ALT5)
CAN0_RXD(ALT7)
FEMC_DQ_02(ALT12)
TRGM1_P_10(ALT16)
GPIO_A_31(ALT0)
UART0_RXD(ALT2)
135
-
91
C4
C5
PA31
SPI0_MOSI(ALT5)
FEMC_DQ_01(ALT12)
TRGM1_P_11(ALT16)
GPIO_B_00(ALT0)
UART1_TXD(ALT2)
134
72
90
C5
C6
PB00
SPI0_DAT2(ALT5)
FEMC_DQ_00(ALT12)
PWM1_P_0(ALT16)
GPIO_B_01(ALT0)
UART1_RXD(ALT2)
132
71
89
C6
A6
PB01
SPI0_DAT3(ALT5)
FEMC_DM_0(ALT12)
PWM1_P_1(ALT16)
GPIO_B_02(ALT0)
UART2_TXD(ALT2)
131
-
-
-
B6
PB02
SPI1_CSN(ALT5)
FEMC_DQ_08(ALT12)
PWM1_P_2(ALT16)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
282/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_B_03(ALT0)
UART2_RXD(ALT2)
130
-
-
-
B7
PB03
SPI1_MISO(ALT5)
FEMC_DQ_09(ALT12)
XPI1_CB_CS0(ALT14)
PWM1_P_3(ALT16)
GPIO_B_04(ALT0)
UART3_TXD(ALT2)
129
-
-
-
B8
PB04
SPI1_SCLK(ALT5)
FEMC_DQ_10(ALT12)
XPI1_CB_CS1(ALT14)
PWM1_P_4(ALT16)
GPIO_B_05(ALT0)
UART3_RXD(ALT2)
128
-
-
-
A8
PB05
SPI1_MOSI(ALT5)
FEMC_DQ_11(ALT12)
XPI1_CB_DQS(ALT14)
PWM1_P_5(ALT16)
GPIO_B_06(ALT0)
UART4_TXD(ALT2)
127
-
-
-
C8
PB06
FEMC_DQ_12(ALT12)
XPI1_CB_D_3(ALT14)
PWM1_P_6(ALT16)
GPIO_B_07(ALT0)
UART4_RXD(ALT2)
125
-
-
-
C9
PB07
SPI1_DAT2(ALT5)
FEMC_DQ_13(ALT12)
XPI1_CB_D_1(ALT14)
PWM1_P_7(ALT16)
GPIO_B_08(ALT0)
UART5_TXD(ALT2)
SPI1_DAT3(ALT5)
124
-
-
-
C10
PB08
FEMC_DQ_14(ALT12)
XPI1_CB_SCLK(ALT14)
PWM1_FAULT_0(ALT16
)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
283/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_B_09(ALT0)
UART5_RXD(ALT2)
SPI1_SCLK(ALT5)
123
-
-
-
A10
PB09
FEMC_DQ_15(ALT12)
XPI1_CB_D_2(ALT14)
PWM1_FAULT_1(ALT16
)
GPIO_B_10(ALT0)
UART6_TXD(ALT2)
SPI1_MISO(ALT5)
122
-
-
-
B10
PB10
FEMC_DM_1(ALT12)
XPI1_CB_D_0(ALT14)
PWM0_FAULT_1(ALT16
)
GPIO_B_11(ALT0)
UART6_RXD(ALT2)
SPI1_MOSI(ALT5)
121
68
87
A6
B11
PB11
FEMC_WE(ALT12)
XPI1_CA_DQS(ALT14)
PWM0_FAULT_0(ALT16
)
GPIO_B_12(ALT0)
UART7_TXD(ALT2)
119
67
86
B6
B12
PB12
SPI1_CSN(ALT5)
FEMC_CAS(ALT12)
XPI1_CA_D_0(ALT14)
PWM0_P_0(ALT16)
GPIO_B_13(ALT0)
UART7_RXD(ALT2)
118
66
85
B7
A12
PB13
SPI2_CSN(ALT5)
FEMC_RAS(ALT12)
XPI1_CA_D_2(ALT14)
PWM0_P_1(ALT16)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
284/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_B_14(ALT0)
UART6_DE(ALT2)
UART6_RTS(ALT3)
117
65
84
B8
C12
PB14
SPI2_MISO(ALT5)
CAN1_TXD(ALT7)
FEMC_CS_0(ALT12)
XPI1_CA_SCLK(ALT14)
PWM0_P_2(ALT16)
GPIO_B_15(ALT0)
UART6_CTS(ALT3)
SPI2_SCLK(ALT5)
116
64
83
A8
C13
PB15
CAN1_RXD(ALT7)
FEMC_BA0(ALT12)
XPI1_CA_D_1(ALT14)
PWM0_P_3(ALT16)
GPIO_B_16(ALT0)
UART7_DE(ALT2)
UART7_RTS(ALT3)
115
63
82
C8
C14
PB16
SPI2_MOSI(ALT5)
FEMC_BA1(ALT12)
XPI1_CA_D_3(ALT14)
PWM0_P_4(ALT16)
GPIO_B_17(ALT0)
UART7_CTS(ALT3)
114
62
81
C9
A14
PB17
FEMC_A_10(ALT12)
XPI1_CA_CS0(ALT14)
PWM0_P_5(ALT16)
GPIO_B_18(ALT0)
GPTMR2_CAPT_0(ALT1
)
UART0_DE(ALT2)
112
61
79
C10
B14
PB18
UART0_RTS(ALT3)
I2C2_SCL(ALT4)
CAN1_STBY(ALT7)
I2S0_TXD_3(ALT8)
FEMC_A_00(ALT12)
PWM0_P_6(ALT16)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
285/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_B_19(ALT0)
GPTMR2_CAPT_1(ALT1
)
UART0_CTS(ALT3)
111
59
78
A10
B15
PB19
I2C2_SDA(ALT4)
CAN0_STBY(ALT7)
I2S0_TXD_2(ALT8)
FEMC_A_01(ALT12)
PWM0_P_7(ALT16)
GPIO_B_20(ALT0)
GPTMR2_COMP_0(ALT
1)
UART1_DE(ALT2)
110
60
77
B10
A16
PB20
UART1_RTS(ALT3)
I2C3_SCL(ALT4)
CAN0_TXD(ALT7)
I2S0_TXD_1(ALT8)
FEMC_A_02(ALT12)
TRGM0_P_00(ALT16)
GPIO_B_21(ALT0)
GPTMR2_COMP_1(ALT
1)
UART1_CTS(ALT3)
109
58
76
B11
B17
PB21
I2C3_SDA(ALT4)
CAN0_RXD(ALT7)
I2S0_TXD_0(ALT8)
FEMC_A_03(ALT12)
TRGM0_P_01(ALT16)
GPIO_B_22(ALT0)
GPTMR3_CAPT_0(ALT1
)
UART0_TXD(ALT2)
108
56
75
B12
B16
PB22
I2C0_SCL(ALT4)
CAN1_TXD(ALT7)
I2S0_BCLK(ALT8)
FEMC_CLK(ALT12)
TRGM0_P_02(ALT16)
SOC_REF0(ALT24)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
286/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_B_23(ALT0)
GPTMR3_CAPT_1(ALT1
)
UART0_RXD(ALT2)
107
57
74
A12
C16
PB23
I2C0_SDA(ALT4)
CAN1_RXD(ALT7)
I2S0_FCLK(ALT8)
FEMC_CKE(ALT12)
TRGM0_P_03(ALT16)
SOC_REF1(ALT24)
GPIO_B_24(ALT0)
GPTMR3_COMP_0(ALT
1)
106
54
73
B13
D16
PB24
UART1_TXD(ALT2)
I2C1_SCL(ALT4)
I2S0_MCLK(ALT8)
FEMC_A_12(ALT12)
TRGM0_P_04(ALT16)
GPIO_B_25(ALT0)
GPTMR3_COMP_1(ALT
1)
105
55
72
C12
D17
PB25
UART1_RXD(ALT2)
I2C1_SDA(ALT4)
I2S0_RXD_0(ALT8)
FEMC_A_11(ALT12)
TRGM0_P_05(ALT16)
GPIO_B_26(ALT0)
UART2_TXD(ALT2)
103
-
70
D12
D15
PB26
I2S0_RXD_1(ALT8)
FEMC_A_09(ALT12)
TRGM0_P_06(ALT16)
GPIO_B_27(ALT0)
UART2_RXD(ALT2)
102
-
69
D13
E15
PB27
SPI1_CSN(ALT5)
I2S0_RXD_2(ALT8)
FEMC_A_08(ALT12)
TRGM0_P_07(ALT16)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
287/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
IO 电压/V
GPIO_B_28(ALT0)
UART3_TXD(ALT2)
101
-
68
D11
F15
PB28
SPI1_MISO(ALT5)
I2S0_RXD_3(ALT8)
FEMC_A_07(ALT12)
TRGM0_P_08(ALT16)
GPIO_B_29(ALT0)
UART3_RXD(ALT2)
100
-
67
F12
F17
PB29
SPI1_SCLK(ALT5)
I2S0_TXD_3(ALT8)
FEMC_A_06(ALT12)
TRGM0_P_09(ALT16)
GPIO_B_30(ALT0)
UART2_DE(ALT2)
UART2_RTS(ALT3)
99
-
66
G12
F16
PB30
SPI1_MOSI(ALT5)
I2S0_TXD_2(ALT8)
FEMC_A_05(ALT12)
TRGM0_P_10(ALT16)
GPIO_B_31(ALT0)
UART2_CTS(ALT3)
98
-
65
F13
G16
PB31
SPI2_CSN(ALT5)
I2S0_TXD_1(ALT8)
FEMC_A_04(ALT12)
TRGM0_P_11(ALT16)
GPIO_C_00(ALT0)
UART3_DE(ALT2)
UART3_RTS(ALT3)
97
-
-
-
H16
PC00
SPI2_MISO(ALT5)
I2S0_TXD_0(ALT8)
FEMC_SRDY(ALT12)
PWM0_P_0(ALT16)
USB0_ID(ALT24)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
288/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VIO_01
1.8/3.3
-
VIO_01
1.8/3.3
DAC0_OUT
VIO_02
1.8/3.3
ADC0_INA0
VIO_02
1.8/3.3
ADC0_INA1
VIO_02
1.8/3.3
IO 电压/V
GPIO_C_01(ALT0)
UART3_CTS(ALT3)
SPI2_SCLK(ALT5)
96
-
-
-
H17
PC01
I2S0_BCLK(ALT8)
FEMC_DQS(ALT12)
PWM0_P_1(ALT16)
USB0_PWR(ALT24)
GPIO_C_02(ALT0)
UART4_DE(ALT2)
UART4_RTS(ALT3)
95
-
-
-
H15
PC02
SPI2_MOSI(ALT5)
I2S0_FCLK(ALT8)
PWM0_P_2(ALT16)
USB0_OC(ALT24)
GPIO_C_03(ALT0)
UART4_CTS(ALT3)
SPI2_DAT2(ALT5)
83
-
-
-
L16
PC03
I2S0_MCLK(ALT8)
I2S1_TXD_3(ALT9)
PDM0_CLK(ALT10)
PWM0_P_3(ALT16)
GPIO_C_04(ALT0)
UART5_DE(ALT2)
UART5_RTS(ALT3)
82
-
-
-
M16
PC04
SPI2_DAT3(ALT5)
I2S0_RXD_0(ALT8)
I2S1_TXD_2(ALT9)
PDM0_D_2(ALT10)
PWM0_P_4(ALT16)
GPIO_C_05(ALT0)
UART5_CTS(ALT3)
SPI2_SCLK(ALT5)
81
-
-
-
M17
PC05
I2S0_RXD_1(ALT8)
I2S1_TXD_1(ALT9)
PDM0_D_3(ALT10)
PWM0_P_5(ALT16)
USB0_OC(ALT24)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
289/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
ADC0_INA2
VIO_02
1.8/3.3
ADC0_INA3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
IO 电压/V
GPIO_C_06(ALT0)
GPTMR2_CAPT_0(ALT1
)
UART4_TXD(ALT2)
80
44
57
J11
M15
PC06
SPI2_MISO(ALT5)
I2S0_RXD_2(ALT8)
I2S1_TXD_0(ALT9)
PDM0_CLK(ALT10)
USB0_ID(ALT24)
GPIO_C_07(ALT0)
GPTMR2_CAPT_1(ALT1
)
UART4_RXD(ALT2)
79
43
56
K11
N15
PC07
SPI2_MOSI(ALT5)
I2S0_RXD_3(ALT8)
I2S1_MCLK(ALT9)
PDM0_D_0(ALT10)
ETH0_MDIO(ALT19)
USB0_OC(ALT24)
GPIO_C_08(ALT0)
GPTMR2_COMP_0(ALT
1)
UART5_TXD(ALT2)
78
42
55
K13
P15
PC08
SPI2_CSN(ALT5)
I2S1_FCLK(ALT9)
ADC0_INA4
ADC1_INA0
PDM0_D_1(ALT10)
ETH0_MDC(ALT19)
USB0_PWR(ALT24)
GPIO_C_09(ALT0)
GPTMR2_COMP_1(ALT
1)
76
41
54
K12
P17
PC09
UART5_RXD(ALT2)
ADC0_INA5
I2C2_SCL(ALT4)
ADC1_INA1
CAN0_TXD(ALT7)
I2S1_BCLK(ALT9)
DAOR_N(ALT10)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
290/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
IO 电压/V
GPIO_C_10(ALT0)
GPTMR3_CAPT_0(ALT1
)
75
39
53
L12
P16
PC10
UART6_TXD(ALT2)
ADC0_INA6
I2C2_SDA(ALT4)
ADC1_INA2
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
CAN0_RXD(ALT7)
I2S1_RXD_0(ALT9)
DAOR_P(ALT10)
GPIO_C_11(ALT0)
GPTMR3_CAPT_1(ALT1
74
40
52
M12
R16
PC11
)
ADC0_INA7
UART6_RXD(ALT2)
ADC1_INA3
I2C3_SCL(ALT4)
ACMP_CMP1
CAN0_STBY(ALT7)
_INP7
I2S1_RXD_1(ALT9)
DAOL_N(ALT10)
GPIO_C_12(ALT0)
GPTMR3_COMP_0(ALT
1)
73
38
51
M13
T16
PC12
UART7_TXD(ALT2)
I2C3_SDA(ALT4)
CAN1_STBY(ALT7)
I2S1_RXD_2(ALT9)
ADC0_INA8
ADC1_INA4
ADC2_INA0
ACMP_CMP1
_INP6
DAOL_P(ALT10)
GPIO_C_13(ALT0)
72
36
50
N12
T17
PC13
GPTMR3_COMP_1(ALT
ADC0_INA9
1)
ADC1_INA5
UART7_RXD(ALT2)
ADC2_INA1
I2C0_SCL(ALT4)
ACMP_CMP1
CAN1_TXD(ALT7)
_INP5
I2S1_RXD_3(ALT9)
71
37
49
M11
U16
PC14
GPIO_C_14(ALT0)
ADC0_INA10
UART6_DE(ALT2)
ADC1_INA6
UART6_RTS(ALT3)
ADC2_INA2
I2C0_SDA(ALT4)
ACMP_CMP0
CAN1_RXD(ALT7)
_INN7
I2S1_MCLK(ALT9)
ACMP_CMP1
ACMP_COMP_0(ALT16)
_INN7
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
291/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
IO 电压/V
ADC0_INA11
GPIO_C_15(ALT0)
70
35
48
M10
T15
PC15
UART6_CTS(ALT3)
I2C1_SCL(ALT4)
ACMP_COMP_1(ALT16)
ADC1_INA7
ADC2_INA3
ACMP_CMP0
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
_INN6
ACMP_CMP1
_INN6
ADC0_INA12
69
-
47
N10
T14
PC16
GPIO_C_16(ALT0)
ADC1_INA8
UART7_DE(ALT2)
ADC2_INA4
UART7_RTS(ALT3)
ACMP_CMP0
I2C1_SDA(ALT4)
_INN5
I2S1_TXD_3(ALT9)
ACMP_CMP1
_INN5
GPIO_C_17(ALT0)
67
-
45
L10
U14
PC17
UART7_CTS(ALT3)
I2S1_TXD_2(ALT9)
PDM0_D_1(ALT10)
GPIO_C_18(ALT0)
UART0_DE(ALT2)
66
-
44
L9
R14
PC18
UART0_RTS(ALT3)
SPI3_CSN(ALT5)
I2S1_TXD_1(ALT9)
PDM0_D_0(ALT10)
65
-
43
L8
R13
PC19
ADC0_INA13
ADC1_INA9
ADC2_INA5
ACMP_CMP0
_INN4
ADC0_INA14
ADC1_INA10
ADC2_INA6
ACMP_CMP0
_INN3
GPIO_C_19(ALT0)
ADC0_INA15
UART0_CTS(ALT3)
ADC1_INA11
SPI3_MISO(ALT5)
ADC2_INA7
I2S1_TXD_0(ALT9)
ACMP_CMP0
PDM0_CLK(ALT10)
_INN2
GPIO_C_20(ALT0)
64
-
42
N8
R12
PC20
UART1_DE(ALT2)
ADC1_INA12
UART1_RTS(ALT3)
ADC2_INA8
SPI3_SCLK(ALT5)
ACMP_CMP0
I2S1_MCLK(ALT9)
_INP7
PDM0_D_3(ALT10)
ACMP_CMP1
ETH0_EVTO_1(ALT19)
_INN4
WDG0_RST(ALT24)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
292/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
GPIO_C_21(ALT0)
UART1_CTS(ALT3)
SPI3_MOSI(ALT5)
63
-
41
M8
U12
PC21
I2S1_FCLK(ALT9)
PDM0_D_2(ALT10)
ETH0_EVTO_0(ALT19)
WDG1_RST(ALT24)
GPIO_C_22(ALT0)
UART0_TXD(ALT2)
SPI2_CSN(ALT5)
62
-
-
-
T12
PC22
I2S1_BCLK(ALT9)
PDM0_CLK(ALT10)
SDC0_WP(ALT17)
ETH0_MDIO(ALT19)
60
59
58
-
-
-
-
-
-
-
-
-
T11
T10
U10
PC23
PC24
PC25
-
-
-
R10
PC26
ACMP_CMP0
_INP6
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
VIO_02
1.8/3.3
ADC2_INA10
ACMP_CMP0
_INP5
ACMP_CMP1
_INN2
SPI2_MOSI(ALT5)
ACMP_CMP0
_INP4
SDC0_VSEL(ALT17)
ACMP_CMP1
ETH0_MDC(ALT19)
_INP4
GPIO_C_24(ALT0)
ADC2_INA12
UART1_TXD(ALT2)
ACMP_CMP0
SPI2_MISO(ALT5)
_INP3
I2S1_RXD_0(ALT9)
ACMP_CMP1
SDC0_CDN(ALT17)
_INP3
GPIO_C_25(ALT0)
ADC2_INA13
UART1_RXD(ALT2)
ACMP_CMP0
SPI2_SCLK(ALT5)
_INP2
I2S1_RXD_1(ALT9)
ACMP_CMP1
SDC0_WP(ALT17)
_INP2
ETH0_EVTI_1(ALT19)
VIO_02
ADC1_INA14
I2S1_MCLK(ALT9)
SDC0_VSEL(ALT17)
1.8/3.3
_INN3
ADC2_INA11
I2S1_RXD_2(ALT9)
VIO_02
ACMP_CMP1
UART0_RXD(ALT2)
SPI2_DAT3(ALT5)
ADC2_INA14
ACMP_CMP0
_INN1
ACMP_CMP1
_INN1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
293/1016
IO 电压/V
ADC2_INA9
ADC1_INA15
UART2_TXD(ALT2)
IO 电源
ADC1_INA13
GPIO_C_23(ALT0)
GPIO_C_26(ALT0)
57
模拟功能
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
GPIO_C_27(ALT0)
UART2_RXD(ALT2)
56
-
-
-
R9
PC27
SPI2_DAT2(ALT5)
I2S1_RXD_3(ALT9)
SDC0_CDN(ALT17)
ETH0_EVTI_0(ALT19)
模拟功能
IO 电源
IO 电压/V
ADC2_INA15
ACMP_CMP0
_INP1
VIO_02
1.8/3.3
-
VPMC
1.8/3.3
-
VPMC
1.8/3.3
-
VPMC
1.8/3.3
-
VPMC
1.8/3.3
-
VPMC
1.8/3.3
-
VPMC
1.8/3.3
-
VPMC
1.8/3.3
ACMP_CMP1
_INP1
GPIO_Y_00(ALT0)
UART7_DE(ALT2)
42
32
31
N4
R4
PY00
UART7_RTS(ALT3)
SPI3_CSN(ALT5)
CAN0_TXD(ALT7)
GPIO_Y_01(ALT0)
40
28
29
M4
U4
PY01
UART7_CTS(ALT3)
SPI3_MISO(ALT5)
CAN0_RXD(ALT7)
GPIO_Y_02(ALT0)
38
26
27
M3
T4
PY02
UART0_DE(ALT2)
UART0_RTS(ALT3)
SPI3_SCLK(ALT5)
GPIO_Y_03(ALT0)
37
25
26
M2
T3
PY03
UART0_CTS(ALT3)
SPI3_MOSI(ALT5)
GPIO_Y_04(ALT0)
UART7_TXD(ALT2)
36
24
25
N2
T2
PY04
I2C0_SCL(ALT4)
CAN1_TXD(ALT7)
DAOR_P(ALT10)
WDG0_RST(ALT24)
GPIO_Y_05(ALT0)
UART7_RXD(ALT2)
35
22
24
M1
U2
PY05
I2C0_SDA(ALT4)
CAN1_RXD(ALT7)
DAOR_N(ALT10)
WDG1_RST(ALT24)
GPIO_Y_06(ALT0)
34
23
23
L2
T1
PY06
UART0_TXD(ALT2)
I2C1_SCL(ALT4)
DAOL_P(ALT10)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
294/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
VPMC
1.8/3.3
-
VBAT
3.3
-
VBAT
3.3
-
VBAT
3.3
-
VBAT
3.3
-
VBAT
3.3
-
VBAT
3.3
-
VBAT
3.3
-
VBAT
3.3
IO 电压/V
GPIO_Y_07(ALT0)
33
21
22
K2
R2
PY07
UART0_RXD(ALT2)
I2C1_SDA(ALT4)
DAOL_N(ALT10)
GPIO_Z_00(ALT0)
54
-
39
M7
R8
PZ00
UART3_TXD(ALT2)
CAN0_TXD(ALT7)
GPIO_Z_01(ALT0)
53
-
38
L6
T8
PZ01
UART3_RXD(ALT2)
CAN0_RXD(ALT7)
GPIO_Z_02(ALT0)
52
-
37
L5
T7
PZ02
UART4_TXD(ALT2)
I2C2_SCL(ALT4)
GPIO_Z_03(ALT0)
51
-
36
L4
T6
PZ03
UART4_RXD(ALT2)
I2C2_SDA(ALT4)
GPIO_Z_04(ALT0)
50
-
-
-
P13
PZ04
UART5_TXD(ALT2)
CAN1_TXD(ALT7)
GPIO_Z_05(ALT0)
49
-
-
-
P10
PZ05
UART5_RXD(ALT2)
CAN1_RXD(ALT7)
GPIO_Z_06(ALT0)
48
-
-
-
P8
PZ06
UART6_TXD(ALT2)
I2C3_SCL(ALT4)
GPIO_Z_07(ALT0)
47
-
-
-
P5
PZ07
UART6_RXD(ALT2)
I2C3_SDA(ALT4)
88
49
59
H11
K16
XTALI
-
-
XTALI
89
50
60
H12
K17
XTALO
-
-
XTALO
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
295/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
-
-
-
-
VIO_01
-
-
-
-
VIO_00
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
IO 电压/V
5,18,
28,5
5,68,
8,17,
G4,
77,9
3,17,
46,6
C7,D
J4,D
0,10
34,5
1,71,
7,G1
9,J1
4,11
3
80,9
0,G1
4
6
1
3,12
VDD_SOC
6,14
0
12,9
C3,D
4,12
9,51,
9,64,
4,D1
E5,E
0,13
70
88
0,C1
10
3
1
23
9
12
F5
H5
29
17
18
G3
H4
30
18
19
H5
31
19
20
J5
32
20
21
39
27
28
41
29
30
43
31
32
J6
U6
44
-
33
M6
R5
45
-
34
N6
R6
46
31
35
J8
U8
VBAT
-
-
-
-
40,5
K10,
8
L11
N10
VIO_02
-
-
-
-
61,8
6
47
K7,L
7
4
K5,N
4
5
H7
N8
7
DCDC_GND
K4,N
L3,K
K7,L
DCDC_SNS
-
DCDC_LP
DCDC_IN
VDD_OTPCAP
VDD_PMCCAP
VPMC
RTC_XTALI
RTC_XTALO
84
45
-
J9
L11
VREFL
-
-
-
-
85
46
-
H9
N13
VREFH
-
-
-
-
87
-
-
F9
K13
VANA
-
-
-
-
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
296/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
91
-
92
93
BGA
BGA
_116
_172
-
H13
K14
-
62
F11
K15
-
63
E11
J15
PIN 名称
数字功能
模拟功能
IO 电源
-
-
-
-
-
-
-
-
-
-
-
-
VSS
-
-
-
-
USBVBUS
USB_DP
USB_DM
IO 电压/V
A1,U
1,D4
,P4,
G7,
H7,J
7,G8
4,8,1
6,30,
-
33,4
8,52,
-
69,7
3
A1,N
,J8,L
1,E5
8,G9
,E6,
,H9,
G6,F
K9,L
7,E8
9,G1
,G8,
0,J1
E9,A
0,L1
13,N
0,G1
13
1,H1
1,K1
1,D1
4,P1
4,A1
7,U1
7
-
47
-
-
-
VADC
-
-
-
-
-
51
-
-
H13
VPLL
-
-
-
-
-
74
-
-
-
-
-
-
-
VDDSOC
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
297/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
模拟功能
IO 电源
DNC
-
-
-
-
-
-
-
-
IO 电压/V
E4,D
5,D8
,E8,
-
-
-
D10,
-
D13,
E14,
H14,
N14
-
-
-
-
P9
-
-
-
-
J11
VSSA
-
-
-
-
-
-
-
-
E13
VUSB
-
-
-
-
VDDPMC_CAP
表 93: SOC IOMUX
注意,本产品上,VIOB 01VUS BV IOB 011.8V
电源管理域 IO 功能分配
20.2
本产品电源管理域 IO 引脚配置及功能如下:
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
IO 电源
IO 电压/V
PGPIO_Y_00(ALT0)
42
32
31
N4
R4
PY00
JTAG_TDO(ALT1)
PTMR_COMP_0(ALT2)
VPMC
1.8/3.3
VPMC
1.8/3.3
VPMC
1.8/3.3
SOC_PY_00(ALT3)
PGPIO_Y_01(ALT0)
40
28
29
M4
U4
PY01
JTAG_TDI(ALT1)
PTMR_CAPT_0(ALT2)
SOC_PY_01(ALT3)
PGPIO_Y_02(ALT0)
38
26
27
M3
T4
PY02
JTAG_TCK(ALT1)
PTMR_COMP_1(ALT2)
SOC_PY_02(ALT3)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
298/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
IO 电源
IO 电压/V
PGPIO_Y_03(ALT0)
37
25
26
M2
T3
JTAG_TMS(ALT1)
PY03
PTMR_CAPT_1(ALT2)
VPMC
1.8/3.3
VPMC
1.8/3.3
VPMC
1.8/3.3
VPMC
1.8/3.3
VPMC
1.8/3.3
SOC_PY_03(ALT3)
PGPIO_Y_04(ALT0)
36
24
25
N2
T2
JTAG_TRST(ALT1)
PY04
PTMR_COMP_2(ALT2)
SOC_PY_04(ALT3)
PGPIO_Y_05(ALT0)
35
22
24
M1
U2
PWDG_RST(ALT1)
PY05
PTMR_CAPT_2(ALT2)
SOC_PY_05(ALT3)
PGPIO_Y_06(ALT0)
34
23
23
L2
T1
PUART_TXD(ALT1)
PY06
PTMR_COMP_3(ALT2)
SOC_PY_06(ALT3)
PGPIO_Y_07(ALT0)
33
21
22
K2
R2
PUART_RXD(ALT1)
PY07
PTMR_CAPT_3(ALT2)
SOC_PY_07(ALT3)
表 94: PMIC IOMUX
电池备份域 IO 功能分配
20.3
本产品电池备份域 IO 引脚配置及功能如下:
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
IO 电源
IO 电压/V
BGPIO_Z_00(ALT0)
54
-
39
M7
R8
PWR_ON(ALT1)
PZ00
TAMP_00(ALT2)
VBAT
3.3
VBAT
3.3
SOC_PZ_00(ALT3)
BGPIO_Z_01(ALT0)
53
-
38
L6
T8
RESETN(ALT1)
PZ01
TAMP_01(ALT2)
SOC_PZ_01(ALT3)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
299/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
封装
LQF
LQF
LQF
P_1
P_8
P_1
44
0
00
BGA
BGA
_116
_172
PIN 名称
数字功能
IO 电源
IO 电压/V
BGPIO_Z_02(ALT0)
52
-
37
L5
T7
PBUTN(ALT1)
PZ02
TAMP_02(ALT2)
VBAT
3.3
VBAT
3.3
VBAT
3.3
VBAT
3.3
VBAT
3.3
VBAT
3.3
SOC_PZ_02(ALT3)
BGPIO_Z_03(ALT0)
51
-
36
L4
T6
WBUTN(ALT1)
PZ03
TAMP_03(ALT2)
SOC_PZ_03(ALT3)
BGPIO_Z_04(ALT0)
50
-
-
-
P13
PLED(ALT1)
PZ04
TAMP_04(ALT2)
SOC_PZ_04(ALT3)
BGPIO_Z_05(ALT0)
49
-
-
-
P10
WLED(ALT1)
PZ05
TAMP_05(ALT2)
SOC_PZ_05(ALT3)
BGPIO_Z_06(ALT0)
48
-
-
-
P8
PZ06
TAMP_06(ALT2)
SOC_PZ_06(ALT3)
BGPIO_Z_07(ALT0)
47
-
-
-
P5
TAMP_07(ALT2)
PZ07
SOC_PZ_07(ALT3)
表 95: BATT IOMUX
20.4
系统电源域外设管脚分配
本产品系统电源域的外设,不同模块的引脚分配总结如下:
ACMP 信号名称
引脚
CMP0_INN1
PC26
CMP0_INN2
PC19
CMP0_INN3
PC18
CMP0_INN4
PC17
CMP0_INN5
PC16
CMP0_INN6
PC15
CMP0_INN7
PC14
CMP0_INP1
PC27
CMP0_INP2
PC25
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
300/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
ACMP 信号名称
引脚
CMP0_INP3
PC24
CMP0_INP4
PC23
CMP0_INP5
PC22
CMP0_INP6
PC21
CMP0_INP7
PC20
CMP1_INN1
PC26
CMP1_INN2
PC22
CMP1_INN3
PC21
CMP1_INN4
PC20
CMP1_INN5
PC16
CMP1_INN6
PC15
CMP1_INN7
PC14
CMP1_INP1
PC27
CMP1_INP2
PC25
CMP1_INP3
PC24
CMP1_INP4
PC23
CMP1_INP5
PC13
CMP1_INP6
PC12
CMP1_INP7
PC11
PA05
COMP_0
PC14
PA04
COMP_1
PC15
表 96: ACMP 信号引脚
ADC0 信号名称
引脚
INA0
PC04
INA1
PC05
INA2
PC06
INA3
PC07
INA4
PC08
INA5
PC09
INA6
PC10
INA7
PC11
INA8
PC12
INA9
PC13
INA10
PC14
INA11
PC15
INA12
PC16
INA13
PC17
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
301/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
ADC0 信号名称
引脚
INA14
PC18
INA15
PC19
表 97: ADC0 信号引脚
ADC1 信号名称
引脚
INA0
PC08
INA1
PC09
INA2
PC10
INA3
PC11
INA4
PC12
INA5
PC13
INA6
PC14
INA7
PC15
INA8
PC16
INA9
PC17
INA10
PC18
INA11
PC19
INA12
PC20
INA13
PC21
INA14
PC22
INA15
PC23
表 98: ADC1 信号引脚
ADC2 信号名称
引脚
INA0
PC12
INA1
PC13
INA2
PC14
INA3
PC15
INA4
PC16
INA5
PC17
INA6
PC18
INA7
PC19
INA8
PC20
INA9
PC21
INA10
PC22
INA11
PC23
INA12
PC24
INA13
PC25
INA14
PC26
INA15
PC27
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
302/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
ADC2 信号名称
引脚配置及功能 PINMUX
引脚
表 99: ADC2 信号引脚
CAN0 信号名称
引脚
PA09
PA22
PA30
RXD
PB21
PC10
PY01
PZ01
PA23
STBY
PB19
PC11
PA08
PA21
PA29
TXD
PB20
PC09
PY00
PZ00
表 100: CAN0 信号引脚
CAN1 信号名称
引脚
PA11
PA26
PB15
RXD
PB23
PC14
PY05
PZ05
PA24
STBY
PB18
PC12
PA10
PA25
PB14
TXD
PB22
PC13
PY04
PZ04
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
303/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
CAN1 信号名称
引脚配置及功能 PINMUX
引脚
表 101: CAN1 信号引脚
DAC0 信号名称
引脚
OUT
PC03
表 102: DAC0 信号引脚
DAOL 信号名称
引脚
PA22
N
PC11
PY07
PA21
P
PC12
PY06
表 103: DAOL 信号引脚
DAOR 信号名称
引脚
PA20
N
PC09
PY05
PA19
P
PC10
PY04
表 104: DAOR 信号引脚
ETH0 信号名称
引脚
COL
PA27
CRS
PA26
EVTI_0
PC27
EVTI_1
PC26
EVTO_0
PC21
EVTO_1
PC20
PA14
PA16
MDC
PA25
PC08
PC23
PA13
PA15
MDIO
PA26
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
304/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
ETH0 信号名称
引脚配置及功能 PINMUX
引脚
PC07
PC22
PA12
REFCLK
PA22
RXCK
PA16
PA11
RXDV
PA19
PA10
RXD_0
PA18
PA09
RXD_1
PA17
RXD_2
PA15
RXD_3
PA14
RXER
PA13
PA08
TXD_0
PA20
PA07
TXD_1
PA21
TXD_2
PA24
TXD_3
PA25
PA06
TXEN
PA23
表 105: ETH0 信号引脚
FEMC 信号名称
引脚
A_00
PB18
A_01
PB19
A_02
PB20
A_03
PB21
A_04
PB31
A_05
PB30
A_06
PB29
A_07
PB28
A_08
PB27
A_09
PB26
A_10
PB17
A_11
PB25
A_12
PB24
BA0
PB15
BA1
PB16
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
305/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
FEMC 信号名称
引脚
CAS
PB12
CKE
PB23
CLK
PB22
CS_0
PB14
CS_1
PA23
DM_0
PB01
DM_1
PB10
PC01
DQS
PX07
DQ_00
PB00
DQ_01
PA31
DQ_02
PA30
DQ_03
PA29
DQ_04
PA28
DQ_05
PA27
DQ_06
PA26
DQ_07
PA25
DQ_08
PB02
DQ_09
PB03
DQ_10
PB04
DQ_11
PB05
DQ_12
PB06
DQ_13
PB07
DQ_14
PB08
DQ_15
PB09
RAS
PB13
SCLK
PA24
SRDY
PC00
WE
PB11
表 106: FEMC 信号引脚
GPIO 信号名称
引脚
A_00
PA00
A_01
PA01
A_02
PA02
A_03
PA03
A_04
PA04
A_05
PA05
A_06
PA06
A_07
PA07
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
306/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
GPIO 信号名称
引脚
A_08
PA08
A_09
PA09
A_10
PA10
A_11
PA11
A_12
PA12
A_13
PA13
A_14
PA14
A_15
PA15
A_16
PA16
A_17
PA17
A_18
PA18
A_19
PA19
A_20
PA20
A_21
PA21
A_22
PA22
A_23
PA23
A_24
PA24
A_25
PA25
A_26
PA26
A_27
PA27
A_28
PA28
A_29
PA29
A_30
PA30
A_31
PA31
B_00
PB00
B_01
PB01
B_02
PB02
B_03
PB03
B_04
PB04
B_05
PB05
B_06
PB06
B_07
PB07
B_08
PB08
B_09
PB09
B_10
PB10
B_11
PB11
B_12
PB12
B_13
PB13
B_14
PB14
B_15
PB15
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
307/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
GPIO 信号名称
引脚
B_16
PB16
B_17
PB17
B_18
PB18
B_19
PB19
B_20
PB20
B_21
PB21
B_22
PB22
B_23
PB23
B_24
PB24
B_25
PB25
B_26
PB26
B_27
PB27
B_28
PB28
B_29
PB29
B_30
PB30
B_31
PB31
C_00
PC00
C_01
PC01
C_02
PC02
C_03
PC03
C_04
PC04
C_05
PC05
C_06
PC06
C_07
PC07
C_08
PC08
C_09
PC09
C_10
PC10
C_11
PC11
C_12
PC12
C_13
PC13
C_14
PC14
C_15
PC15
C_16
PC16
C_17
PC17
C_18
PC18
C_19
PC19
C_20
PC20
C_21
PC21
C_22
PC22
C_23
PC23
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
308/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
GPIO 信号名称
引脚
C_24
PC24
C_25
PC25
C_26
PC26
C_27
PC27
X_00
PX00
X_01
PX01
X_02
PX02
X_03
PX03
X_04
PX04
X_05
PX05
X_06
PX06
X_07
PX07
Y_00
PY00
Y_01
PY01
Y_02
PY02
Y_03
PY03
Y_04
PY04
Y_05
PY05
Y_06
PY06
Y_07
PY07
Z_00
PZ00
Z_01
PZ01
Z_02
PZ02
Z_03
PZ03
Z_04
PZ04
Z_05
PZ05
Z_06
PZ06
Z_07
PZ07
表 107: GPIO 信号引脚
GPTMR0 信号名称
引脚
PA06
CAPT_0
PA19
PA07
CAPT_1
PA20
PA08
COMP_0
PA21
PA09
COMP_1
PA22
表 108: GPTMR0 信号引脚
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
309/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPTMR1 信号名称
引脚配置及功能 PINMUX
引脚
PA10
CAPT_0
PA23
PA11
CAPT_1
PA24
PA12
COMP_0
PA25
PA13
COMP_1
PA26
表 109: GPTMR1 信号引脚
GPTMR2 信号名称
引脚
PB18
CAPT_0
PC06
PB19
CAPT_1
PC07
PB20
COMP_0
PC08
PB21
COMP_1
PC09
表 110: GPTMR2 信号引脚
GPTMR3 信号名称
引脚
PB22
CAPT_0
PC10
PB23
CAPT_1
PC11
PB24
COMP_0
PC12
PB25
COMP_1
PC13
表 111: GPTMR3 信号引脚
I2C0 信号名称
引脚
PA06
PA23
SCL
PB22
PC13
PY04
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
310/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
I2C0 信号名称
引脚配置及功能 PINMUX
引脚
PA07
PA24
SDA
PB23
PC14
PY05
表 112: I2C0 信号引脚
I2C1 信号名称
引脚
PA08
PA25
SCL
PB24
PC15
PY06
PA09
PA26
SDA
PB25
PC16
PY07
表 113: I2C1 信号引脚
I2C2 信号名称
引脚
PA19
PB18
SCL
PC09
PZ02
PA20
PB19
SDA
PC10
PZ03
表 114: I2C2 信号引脚
I2C3 信号名称
引脚
PA21
PB20
SCL
PC11
PZ06
PA22
PB21
SDA
PC12
PZ07
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
311/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
I2C3 信号名称
引脚配置及功能 PINMUX
引脚
表 115: I2C3 信号引脚
I2S0 信号名称
引脚
PB22
BCLK
PC01
PB23
FCLK
PC02
PB24
MCLK
PC03
PB25
RXD_0
PC04
PB26
RXD_1
PC05
PB27
RXD_2
PC06
PB28
RXD_3
PC07
PB21
TXD_0
PC00
PB20
TXD_1
PB31
PB19
TXD_2
PB30
PB18
TXD_3
PB29
表 116: I2S0 信号引脚
I2S1 信号名称
引脚
PC09
BCLK
PC22
PC08
FCLK
PC21
PC07
PC14
MCLK
PC20
PC23
PC10
RXD_0
PC24
PC11
RXD_1
PC25
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
312/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
I2S1 信号名称
引脚配置及功能 PINMUX
引脚
PC12
RXD_2
PC26
PC13
RXD_3
PC27
PC06
TXD_0
PC19
PC05
TXD_1
PC18
PC04
TXD_2
PC17
PC03
TXD_3
PC16
表 117: I2S1 信号引脚
PDM0 信号名称
引脚
PA15
PA18
PC03
CLK
PC06
PC19
PC22
PA17
D_0
PC07
PC18
PA16
D_1
PC08
PC17
PA14
D_2
PC04
PC21
PA13
D_3
PC05
PC20
表 118: PDM0 信号引脚
PWM0 信号名称
引脚
FAULT_0
PB11
FAULT_1
PB10
PB12
P_0
PC00
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
313/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM0 信号名称
引脚配置及功能 PINMUX
引脚
PB13
P_1
PC01
PB14
P_2
PC02
PB15
P_3
PC03
PB16
P_4
PC04
PB17
P_5
PC05
P_6
PB18
P_7
PB19
表 119: PWM0 信号引脚
PWM1 信号名称
引脚
FAULT_0
PB08
FAULT_1
PB09
PA19
P_0
PB00
PA18
P_1
PB01
PA17
P_2
PB02
PA16
P_3
PB03
PA15
P_4
PB04
PA14
P_5
PB05
P_6
PB06
P_7
PB07
表 120: PWM1 信号引脚
SDC0 信号名称
引脚
PA14
CDN
PC24
PC27
PA02
CLK
PA11
PA03
CMD
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
314/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SDC0 信号名称
引脚配置及功能 PINMUX
引脚
PA10
PA01
DATA_0
PA12
PA00
DATA_1
PA13
PA05
DATA_2
PA08
PA04
DATA_3
PA09
PA16
VSEL
PC23
PC26
PA15
WP
PC22
PC25
表 121: SDC0 信号引脚
SOC 信号名称
引脚
PA14
REF0
PB22
PA13
REF1
PB23
表 122: SOC 信号引脚
SPI0 信号名称
引脚
PA06
CSN
PA10
PA28
PA15
DAT2
PB00
PA14
DAT3
PB01
PA07
MISO
PA11
PA29
PA09
MOSI
PA13
PA31
PA08
SCLK
PA12
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
315/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SPI0 信号名称
引脚配置及功能 PINMUX
引脚
PA30
表 123: SPI0 信号引脚
SPI1 信号名称
引脚
PA16
PB02
CSN
PB12
PB27
DAT2
PB07
DAT3
PB08
PA17
PB03
MISO
PB10
PB28
PA19
PB05
MOSI
PB11
PB30
PA18
PB04
SCLK
PB09
PB29
表 124: SPI1 信号引脚
SPI2 信号名称
引脚
PB13
PB31
CSN
PC08
PC22
PC03
DAT2
PC27
PC04
DAT3
PC26
PB14
PC00
MISO
PC06
PC24
PB16
PC02
MOSI
PC07
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
316/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SPI2 信号名称
引脚配置及功能 PINMUX
引脚
PC23
PB15
PC01
SCLK
PC05
PC25
表 125: SPI2 信号引脚
SPI3 信号名称
引脚
PA00
CSN
PC18
PY00
DAT2
PA05
DAT3
PA04
PA01
MISO
PC19
PY01
PA03
MOSI
PC21
PY03
PA02
SCLK
PC20
PY02
表 126: SPI3 信号引脚
SYSCTL 信号名称
引脚
CLK_OBS_0
PA18
CLK_OBS_1
PA17
CLK_OBS_2
PA16
CLK_OBS_3
PA15
表 127: SYSCTL 信号引脚
TRGM0 信号名称
引脚
P_00
PB20
P_01
PB21
P_02
PB22
P_03
PB23
P_04
PB24
P_05
PB25
P_06
PB26
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
317/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
TRGM0 信号名称
引脚
P_07
PB27
P_08
PB28
P_09
PB29
P_10
PB30
P_11
PB31
表 128: TRGM0 信号引脚
TRGM1 信号名称
引脚
P_00
PA20
P_01
PA21
P_02
PA22
P_03
PA23
P_04
PA24
P_05
PA25
P_06
PA26
P_07
PA27
P_08
PA28
P_09
PA29
P_10
PA30
P_11
PA31
表 129: TRGM1 信号引脚
UART0 信号名称
引脚
PA27
PB19
CTS
PC19
PY03
PA26
PB18
DE
PC18
PY02
PA26
PB18
RTS
PC18
PY02
PA31
PB23
RXD
PC23
PY07
PA30
TXD
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
318/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
UART0 信号名称
引脚配置及功能 PINMUX
引脚
PB22
PC22
PY06
表 130: UART0 信号引脚
UART1 信号名称
引脚
PA29
CTS
PB21
PC21
PA28
DE
PB20
PC20
PA28
RTS
PB20
PC20
PA01
PB01
RXD
PB25
PC25
PA00
PB00
TXD
PB24
PC24
表 131: UART1 信号引脚
UART2 信号名称
引脚
PA07
CTS
PB31
PA06
DE
PB30
PA06
RTS
PB30
PA03
PB03
RXD
PB27
PC27
PA02
PB02
TXD
PB26
PC26
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
319/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
UART2 信号名称
引脚配置及功能 PINMUX
引脚
表 132: UART2 信号引脚
UART3 信号名称
引脚
PA09
CTS
PC01
PA08
DE
PC00
PA08
RTS
PC00
PA05
PB05
RXD
PB29
PZ01
PA04
PB04
TXD
PB28
PZ00
表 133: UART3 信号引脚
UART4 信号名称
引脚
PA11
CTS
PC03
PA10
DE
PC02
PA10
RTS
PC02
PA15
PB07
RXD
PC07
PZ03
PA14
PB06
TXD
PC06
PZ02
表 134: UART4 信号引脚
UART5 信号名称
引脚
PA13
CTS
PC05
PA12
DE
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
320/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
UART5 信号名称
引脚配置及功能 PINMUX
引脚
PC04
PA12
RTS
PC04
PA17
PB09
RXD
PC09
PZ05
PA16
PB08
TXD
PC08
PZ04
表 135: UART5 信号引脚
UART6 信号名称
引脚
PA23
CTS
PB15
PC15
PA22
DE
PB14
PC14
PA22
RTS
PB14
PC14
PA19
PB11
RXD
PC11
PZ07
PA18
PB10
TXD
PC10
PZ06
表 136: UART6 信号引脚
UART7 信号名称
引脚
PA25
PB17
CTS
PC17
PY01
PA24
PB16
DE
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
321/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
UART7 信号名称
引脚配置及功能 PINMUX
引脚
PC16
PY00
PA24
PB16
RTS
PC16
PY00
PA21
PB13
RXD
PC13
PY05
PA20
PB12
TXD
PC12
PY04
表 137: UART7 信号引脚
USB0 信号名称
引脚
PC00
ID
PC06
PC02
OC
PC05
PC07
PC01
PWR
PC08
表 138: USB0 信号引脚
WDG0 信号名称
引脚
PC20
RST
PY04
表 139: WDG0 信号引脚
WDG1 信号名称
引脚
PC21
RST
PY05
表 140: WDG1 信号引脚
XPI0 信号名称
引脚
PA00
CA_CS0
PX02
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
322/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
XPI0 信号名称
引脚
CA_CS1
PA06
PA07
CA_DQS
PX06
PA03
CA_D_0
PX03
PA01
CA_D_1
PX01
PA02
CA_D_2
PX00
PA05
CA_D_3
PX05
PA04
CA_SCLK
PX04
CB_CS0
PA15
CB_CS1
PA14
CB_DQS
PA13
CB_D_0
PA08
CB_D_1
PA10
CB_D_2
PA09
CB_D_3
PA12
CB_SCLK
PA11
表 141: XPI0 信号引脚
XPI1 信号名称
引脚
CA_CS0
PB17
PB11
CA_DQS
PX07
CA_D_0
PB12
CA_D_1
PB15
CA_D_2
PB13
CA_D_3
PB16
CA_SCLK
PB14
CB_CS0
PB03
CB_CS1
PB04
CB_DQS
PB05
CB_D_0
PB10
CB_D_1
PB07
CB_D_2
PB09
CB_D_3
PB06
CB_SCLK
PB08
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
323/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
XPI1 信号名称
引脚配置及功能 PINMUX
引脚
表 142: XPI1 信号引脚
20.5
电源管理域外设管脚分配
本产品电源管理域的外设,不同模块的引脚分配总结如下:
JTAG 信号名称
引脚
TCK
PY02
TDI
PY01
TDO
PY00
TMS
PY03
TRST
PY04
表 143: JTAG 信号引脚
PGPIO 信号名称
引脚
Y_00
PY00
Y_01
PY01
Y_02
PY02
Y_03
PY03
Y_04
PY04
Y_05
PY05
Y_06
PY06
Y_07
PY07
表 144: PGPIO 信号引脚
PTMR 信号名称
引脚
CAPT_0
PY01
CAPT_1
PY03
CAPT_2
PY05
CAPT_3
PY07
COMP_0
PY00
COMP_1
PY02
COMP_2
PY04
COMP_3
PY06
表 145: PTMR 信号引脚
PUART 信号名称
引脚
RXD
PY07
TXD
PY06
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
324/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PUART 信号名称
引脚配置及功能 PINMUX
引脚
表 146: PUART 信号引脚
PWDG 信号名称
引脚
RST
PY05
表 147: PWDG 信号引脚
SOC 信号名称
引脚
PY_00
PY00
PY_01
PY01
PY_02
PY02
PY_03
PY03
PY_04
PY04
PY_05
PY05
PY_06
PY06
PY_07
PY07
表 148: SOC 信号引脚
20.6
电池备份域外设管脚分配
本产品电池备份域的外设,不同模块的引脚分配总结如下:
BGPIO 信号名称
引脚
Z_00
PZ00
Z_01
PZ01
Z_02
PZ02
Z_03
PZ03
Z_04
PZ04
Z_05
PZ05
Z_06
PZ06
Z_07
PZ07
表 149: BGPIO 信号引脚
PWR 信号名称
引脚
ON
PZ00
表 150: PWR 信号引脚
SOC 信号名称
引脚
PZ_00
PZ00
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
325/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
引脚配置及功能 PINMUX
SOC 信号名称
引脚
PZ_01
PZ01
PZ_02
PZ02
PZ_03
PZ03
PZ_04
PZ04
PZ_05
PZ05
PZ_06
PZ06
PZ_07
PZ07
表 151: SOC 信号引脚
TAMP 信号名称
引脚
00
PZ00
01
PZ01
02
PZ02
03
PZ03
04
PZ04
05
PZ05
06
PZ06
07
PZ07
表 152: TAMP 信号引脚
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
326/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
20.7
引脚配置及功能 PINMUX
特殊功能引脚
芯片默认是通过 BOOT_MODE[1:0]=[PA21:PA20] 引脚选择三种不同的启动模式,启动配置如表 153。其他
特殊引脚配置如表 154。
启动模式选择引脚
BOOT_MODE1
BOOT_MODE0
0
0
启动模式
说明
XPI NOR 启动
从连接在 XPI0/1 上的串行 NOR
FLASH 启动
0
串行启动
1
从 UART0/USB0 上启动
UART0/USB-HID
1
在系统编程(ISP)
0
从 UART0/USB0 上烧写固件,
OTP
1
保留模式
1
保留模式
表 153: 启动配置表
引脚名称
描述
建议用法
XTAL_IN
24MHz 时钟输入
接 24MHz 晶体或有源时钟
XTAL_OUT
24MHz 时钟输出
接 24MHz 晶体或悬空
RTC_XTAL_IN
32.768kHz 时钟输入
接 32.768kHz 晶体或有源时钟
RTC_XTAL_OUT
32.768kHz 时钟输出
接 32.768kHz 晶体或悬空
表 154: 特殊功能引脚配置
20.8
IO 复位状态
表 155总结了本产品所有 IO 在系统复位后的状态:
名称
复位后状态
PY00
输入内部上拉
PY01
输入内部上拉
PY02
输入内部下拉
PY03
输入内部上拉
PY04
输入内部上拉
PY05
输出高电平
PY06
输入内部下拉
PY07
输入内部下拉
PZ00
输出高电平
PZ01
输入内部上拉
PZ02
输入内部上拉
PZ03
输入内部上拉
PZ04
开漏高阻
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
327/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
名称
复位后状态
PZ05
开漏高阻
PZ06
输入内部下拉
PZ07
输入内部下拉
其余 IO
输入高阻
引脚配置及功能 PINMUX
表 155: IO 复位状态表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
328/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
输入输出模块概述
输入输出模块概述
21
本章节介绍了本产品的输入输出 IO 相关模块。本产品的输入输出相关控制模块包含通用 IO 控制模块 IOC,
电源管理域 IO 控制模块 PIOC,电池备份域 IO 控制模块 BIOC。GPIO 控制器,快速 GPIO 控制,GPIO 管理器
以及电源管理域 GPIO 控制器 PGPIO,电池备份域 GPIO 控制器 BGPIO。
21.1
IO 控制器
IO 控制器模块包括通用 IO 控制器 IOC,电源管理域 IO 控制器 PIOC 和电池备份域 IO 控制器 BIOC。
通用 IO 控制器 IOC 可以控制通用 IO(PA,PB,PC)。
电源管理域 IO 控制器 PIOC 可以控制电源管理域 IO(PY)
。它的功能和通用 IOC 一致,可以配置电源管理
域 IO 的基本属性以及外设功能。
电池备份域 IO 控制器 BIOC 可以控制电池备份域 IO(PZ)。它的功能和通用 IOC 一致,可以配置电池备份
域 IO 的基本属性以及外设功能。
PIOC 和 BIOC 可以把电源管理域 IO(PY)和电池备份域 IO(PZ)中的一个或者多个 IO 映射到系统电源
域。之后,这些 IO 就可以由 IOC 控制。
IO 控制器支持对任意 IO 进行配置,如开漏控制,内部上下拉控制,施密特触发器,压摆率,驱动能力等。还
可以配置每一个 IO 的外设复用功能映射,模拟输入和 IO 状态监测功能。通用 IO 的外设复用功能由 IOC 配置,
如图 22。
IOC 复用功能选择
ALT0
ALT1
ALT2
......
通用IO
ALT31
图 22: 通用 IO 外设复用功能选择
电源管理域 IO(PY)的外设复用功能由 PIOC 和 IOC 配置,如图 23。
IOC 复用功能选择
ALT0
ALT1
ALT2
PIOC 复用功能选择
ALT0
ALT1
ALT2
......
电源管理域IO
ALT3来自IOC
ALT31
图 23: 电源管理域 IO 外设复用功能选择
当电源管理域 IO(PY)的外设复用功能由 PIOC 设置为 ALT3 时,IOC 针对该 IO 的配置生效,而 PIOC 的
配置不再生效。
电池备份域 IO(PZ)的外设复用功能由 BIOC 和 IOC 配置,如图 24。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
329/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
IOC 复用功能选择
ALT0
ALT1
ALT2
输入输出模块概述
BIOC 复用功能选择
ALT0
ALT1
ALT2
......
ALT3来自IOC
电池备份域IO
ALT31
图 24: 电池备份域 IO 外设复用功能选择
当电池备份域 IO(PZ)的外设复用功能由 BIOC 设置为 ALT3 时,IOC 针对该 IO 的配置生效,而 BIOC 的
配置不再生效。
21.2
GPIO 控制器
GPIO 控制器包括:GPIO 控制器(GPIO0),快速 GPIO 控制器(FGPIO0),电源管理域 GPIO 控制器
(PGPIO)和电池备份域 GPIO 控制器 (BGPIO)。
GPIO0 和 FGPIO0 可以控制通用 IO(PA,PB,PC)
。对任一 IO,由 GPIO 管理器 GPIOM 配置决定具体哪
个控制器生效。
电源管理域 GPIO 控制器 PGPIO 可以控制电源管理域 IO(PY)。
电源管理域 GPIO 控制器 BGPIO 可以控制电池备份域 IO(PZ)。
PIOC 和 BIOC 可以把电源管理域 IO(PY)和电池备份域 IO(PZ)中的一个或者多个 IO 映射到系统电源
域。之后,这些 IO 就可以由 GPIO0 或 FGPIO0 控制。
GPIO 控制器 GPIO0 和快速 GPIO 控制器 FGPIO0,可以控制片上的通用 IO(PA,PB,PC)
。
通用 IO 的 GPIO 控制如图 25。
GPIOM控制选择
GPIO0
IOC 复用功能选择
ALT0
FGPIO0
ALT1
ALT2
.
.
.
.
.
.
通用IO
ALT31
图 25: 通用 IO GPIO 控制选择
经过适当的 PIOC 和 IOC 配置,2 个 GPIO 控制器 GPIO0,GPIO1 和 2 个快速 GPIO 控制器 FGPIO0,FGPIO1
可以控制电源管理域 IO(PY)。
电源管理域 IO 的 GPIO 控制如图 26。
经过适当的 BIOC 和 IOC 配置,GPIO 控制器 GPIO0 和快速 GPIO 控制器 FGPIO0 可以控制电池备份域 IO
(PZ)。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
330/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
输入输出模块概述
GPIOM控制选择
IOC 复用功能选择
GPIO0
ALT0
FGPIO0
PIOC 复用功能选择
ALT0来自PGPIO
ALT1
ALT2
ALT1
ALT2
电源管理域IO
.
.
.
.
.
ALT3来自IOC
.
ALT31
图 26: 电源管理域 IO GPIO 控制选择
电池备份域 IO 的 GPIO 控制如图 27。
GPIOM控制选择
IOC 复用功能选择
GPIO0
ALT0
FGPIO0
BIOC 复用功能选择
ALT0来自BGPIO
ALT1
ALT2
ALT1
ALT2
电池备份域IO
.
.
.
.
.
ALT3来自IOC
.
ALT31
图 27: 电池备份域 IO GPIO 控制选择
快速 GPIO 控制器 (FGPIO0) 是处理器 CPU0 的私有外设,只能由 RISC-V 处理器访问。处理器支持以零等
待周期访问自己的快速 GPIO 控制器。
GPIO 控制器与快速 GPIO 控制器功能基本相同,可以按照 IO 端口 Port 读取输入,配置 IO 的方向(输入或
者输出),设置 IO 输出,或者同时把一个或者多个 IO 输出设置高,设置低或者翻转。
GPIO 控制器支持配置和生成 GPIO 中断。快速 GPIO 控制器不支持中断。
电源管理域 GPIO 控制器 PGPIO 是电源管理域 IO(PY)的 GPIO 控制器,和 GPIO 控制器一样具有读取
IO 输入和配置 IO 输出的功能。此外 PGPIO 作为电源管理域外设,它能在系统电源域掉电时保持工作,PGPIO
中断能在系统电源域掉电时把系统唤醒。
电池备份域 GPIO 控制器 BGPIO 是电池备份域 IO(PZ)的 GPIO 控制器,和 GPIO 控制器一样具有读取
IO 输入和配置 IO 输出的功能。此外 BGPIO 作为电池备份域外设,它能在系统电源域和电源管理域掉电时保持
工作,BGPIO 中断能在系统电源域和电源管理域掉电时把系统唤醒。
21.3
GPIO 管理器 GPIOM
GPIO 管理器用来管理所有的 IO。它的主要功能是配置 IO 的管理权限。GPIO 管理器为每一个 IO 选择快速
GPIO 控制器和 GPIO 控制器中的一个,作为这个 IO 的控制器。
GPIO 管理器支持配置任意 IO 输入的可见度,即快速 GPIO 控制器和 GPIO 控制器的输入寄存器可否读取到
IO 的输入。
复位后,GPIO 管理器默认 GPIO0 控制所有的通用 IO。所有的 GPIO 控制器和快速 GPIO 控制器都可以读
取到 IO 的输入。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
331/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
输入输出模块概述
注意,系统电源域的复位不会复位 GPIO 端口 Y 和 GPIO 端口 Z 的 IO 状态。因为这两个 IO 端口分别位于电源管理
域和电池备份域。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
332/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
IO 控制器 IOC,PIOC,BIOC
IO 控制器 IOC,PIOC,BIOC
22
本章节描述了 IO 控制器 IOC 的主要特性和功能。
特性总结
22.1
IO 控制器 IOC 的主要特性如下:
● 外设复用功能映射
● 输出回送控制 (loopback)
● 模拟功能配置
● 压摆率配置
● 开漏设置
● 施密特触发器
● 上下拉配置
● 驱动能力配置
22.2
功能描述
本章节描述 IO 控制器 IOC 的功能。
22.2.1
IO 基本配置
IO 控制器 IOC 可以用来配置 IO 的基本属性,这些属性包括 IO 的开漏选择,施密特触发器开关,压摆率内
部上下拉电阻,以及驱动强度。用户可以通过 IOC_X_PAD_CTL 寄存器,配置任意 IO 的基本属性。
本产品的 IO 支持 3.3V 和 1.8V 两种工作电压,其中电池域的 IO 只工作在 3.3V。
IO 的开漏选择是指,用户可以把 IO 配置成开漏输出(open drain)。如果 IO 配置成开漏输出,那么输出低
电平时,正常输出;输出高电平时,IO 不会驱动高电平,而是输出高阻,需要用户配置外部上拉电阻。
IO 的施密特触发器是指,用户可以打开 IO 的输入施密特触发器,即打开输入滞回(hysteresis),增加抗干
扰能力。
IO 还可以打开内部的上下拉电阻,即可以配置成内部上拉,也可以配置成下拉。
IO 支持配置压摆率。
IO 支持配置驱动能力。
22.2.2
IO 外设功能配置
用户可以通过 IOC 的 IOC_X_FUNC_CTL 寄存器配置 IO 的外设功能,包括输出回送功能,模拟功能和外设
功能映射。
用户打开 IO 的输出回送功能后,即可在输入端读取到输出信号。
用户打开 IO 的模拟功能后,这个 IO 就可以用作模拟外设的引脚,如 ADC,ACMP 等。
用户可以通过 IO 的外设功能复选器,选择映射到这个 IO 上的外设功能。有关 IO 和外设功能的映射表,请
查阅 PINMUX 相关章节。
22.3
IOC 寄存器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
333/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
22.3.1
IO 控制器 IOC,PIOC,BIOC
寄存器说明
IOC 的寄存器列表如下:
IOC base address: 0xF4040000
PIOC base address: 0xF40D8000
BIOC base address: 0xF5010000
地址偏移
名称
描述
复位值
0x0000
PAD[PA00][FUNC_CTL]
ALT SELECT
0x00000000
0x0004
PAD[PA00][PAD_CTL]
PAD SETTINGS
0x01010056
0x0008
PAD[PA01][FUNC_CTL]
ALT SELECT
0x00000000
0x000C
PAD[PA01][PAD_CTL]
PAD SETTINGS
0x01010056
0x0010
PAD[PA02][FUNC_CTL]
ALT SELECT
0x00000000
0x0014
PAD[PA02][PAD_CTL]
PAD SETTINGS
0x01010056
0x0018
PAD[PA03][FUNC_CTL]
ALT SELECT
0x00000000
0x001C
PAD[PA03][PAD_CTL]
PAD SETTINGS
0x01010056
0x0020
PAD[PA04][FUNC_CTL]
ALT SELECT
0x00000000
0x0024
PAD[PA04][PAD_CTL]
PAD SETTINGS
0x01010056
0x0028
PAD[PA05][FUNC_CTL]
ALT SELECT
0x00000000
0x002C
PAD[PA05][PAD_CTL]
PAD SETTINGS
0x01010056
0x0030
PAD[PA06][FUNC_CTL]
ALT SELECT
0x00000000
0x0034
PAD[PA06][PAD_CTL]
PAD SETTINGS
0x01010056
0x0038
PAD[PA07][FUNC_CTL]
ALT SELECT
0x00000000
0x003C
PAD[PA07][PAD_CTL]
PAD SETTINGS
0x01010056
0x0040
PAD[PA08][FUNC_CTL]
ALT SELECT
0x00000000
0x0044
PAD[PA08][PAD_CTL]
PAD SETTINGS
0x01010056
0x0048
PAD[PA09][FUNC_CTL]
ALT SELECT
0x00000000
0x004C
PAD[PA09][PAD_CTL]
PAD SETTINGS
0x01010056
0x0050
PAD[PA10][FUNC_CTL]
ALT SELECT
0x00000000
0x0054
PAD[PA10][PAD_CTL]
PAD SETTINGS
0x01010056
0x0058
PAD[PA11][FUNC_CTL]
ALT SELECT
0x00000000
0x005C
PAD[PA11][PAD_CTL]
PAD SETTINGS
0x01010056
0x0060
PAD[PA12][FUNC_CTL]
ALT SELECT
0x00000000
0x0064
PAD[PA12][PAD_CTL]
PAD SETTINGS
0x01010056
0x0068
PAD[PA13][FUNC_CTL]
ALT SELECT
0x00000000
0x006C
PAD[PA13][PAD_CTL]
PAD SETTINGS
0x01010056
0x0070
PAD[PA14][FUNC_CTL]
ALT SELECT
0x00000000
0x0074
PAD[PA14][PAD_CTL]
PAD SETTINGS
0x01010056
0x0078
PAD[PA15][FUNC_CTL]
ALT SELECT
0x00000000
0x007C
PAD[PA15][PAD_CTL]
PAD SETTINGS
0x01010056
0x0080
PAD[PA16][FUNC_CTL]
ALT SELECT
0x00000000
0x0084
PAD[PA16][PAD_CTL]
PAD SETTINGS
0x01010056
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
334/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
IO 控制器 IOC,PIOC,BIOC
名称
描述
复位值
0x0088
PAD[PA17][FUNC_CTL]
ALT SELECT
0x00000000
0x008C
PAD[PA17][PAD_CTL]
PAD SETTINGS
0x01010056
0x0090
PAD[PA18][FUNC_CTL]
ALT SELECT
0x00000000
0x0094
PAD[PA18][PAD_CTL]
PAD SETTINGS
0x01010056
0x0098
PAD[PA19][FUNC_CTL]
ALT SELECT
0x00000000
0x009C
PAD[PA19][PAD_CTL]
PAD SETTINGS
0x01010056
0x00A0
PAD[PA20][FUNC_CTL]
ALT SELECT
0x00000000
0x00A4
PAD[PA20][PAD_CTL]
PAD SETTINGS
0x01010056
0x00A8
PAD[PA21][FUNC_CTL]
ALT SELECT
0x00000000
0x00AC
PAD[PA21][PAD_CTL]
PAD SETTINGS
0x01010056
0x00B0
PAD[PA22][FUNC_CTL]
ALT SELECT
0x00000000
0x00B4
PAD[PA22][PAD_CTL]
PAD SETTINGS
0x01010056
0x00B8
PAD[PA23][FUNC_CTL]
ALT SELECT
0x00000000
0x00BC
PAD[PA23][PAD_CTL]
PAD SETTINGS
0x01010056
0x00C0
PAD[PA24][FUNC_CTL]
ALT SELECT
0x00000000
0x00C4
PAD[PA24][PAD_CTL]
PAD SETTINGS
0x01010056
0x00C8
PAD[PA25][FUNC_CTL]
ALT SELECT
0x00000000
0x00CC
PAD[PA25][PAD_CTL]
PAD SETTINGS
0x01010056
0x00D0
PAD[PA26][FUNC_CTL]
ALT SELECT
0x00000000
0x00D4
PAD[PA26][PAD_CTL]
PAD SETTINGS
0x01010056
0x00D8
PAD[PA27][FUNC_CTL]
ALT SELECT
0x00000000
0x00DC
PAD[PA27][PAD_CTL]
PAD SETTINGS
0x01010056
0x00E0
PAD[PA28][FUNC_CTL]
ALT SELECT
0x00000000
0x00E4
PAD[PA28][PAD_CTL]
PAD SETTINGS
0x01010056
0x00E8
PAD[PA29][FUNC_CTL]
ALT SELECT
0x00000000
0x00EC
PAD[PA29][PAD_CTL]
PAD SETTINGS
0x01010056
0x00F0
PAD[PA30][FUNC_CTL]
ALT SELECT
0x00000000
0x00F4
PAD[PA30][PAD_CTL]
PAD SETTINGS
0x01010056
0x00F8
PAD[PA31][FUNC_CTL]
ALT SELECT
0x00000000
0x00FC
PAD[PA31][PAD_CTL]
PAD SETTINGS
0x01010056
0x0100
PAD[PB00][FUNC_CTL]
ALT SELECT
0x00000000
0x0104
PAD[PB00][PAD_CTL]
PAD SETTINGS
0x01010056
0x0108
PAD[PB01][FUNC_CTL]
ALT SELECT
0x00000000
0x010C
PAD[PB01][PAD_CTL]
PAD SETTINGS
0x01010056
0x0110
PAD[PB02][FUNC_CTL]
ALT SELECT
0x00000000
0x0114
PAD[PB02][PAD_CTL]
PAD SETTINGS
0x01010056
0x0118
PAD[PB03][FUNC_CTL]
ALT SELECT
0x00000000
0x011C
PAD[PB03][PAD_CTL]
PAD SETTINGS
0x01010056
0x0120
PAD[PB04][FUNC_CTL]
ALT SELECT
0x00000000
0x0124
PAD[PB04][PAD_CTL]
PAD SETTINGS
0x01010056
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
335/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
IO 控制器 IOC,PIOC,BIOC
名称
描述
复位值
0x0128
PAD[PB05][FUNC_CTL]
ALT SELECT
0x00000000
0x012C
PAD[PB05][PAD_CTL]
PAD SETTINGS
0x01010056
0x0130
PAD[PB06][FUNC_CTL]
ALT SELECT
0x00000000
0x0134
PAD[PB06][PAD_CTL]
PAD SETTINGS
0x01010056
0x0138
PAD[PB07][FUNC_CTL]
ALT SELECT
0x00000000
0x013C
PAD[PB07][PAD_CTL]
PAD SETTINGS
0x01010056
0x0140
PAD[PB08][FUNC_CTL]
ALT SELECT
0x00000000
0x0144
PAD[PB08][PAD_CTL]
PAD SETTINGS
0x01010056
0x0148
PAD[PB09][FUNC_CTL]
ALT SELECT
0x00000000
0x014C
PAD[PB09][PAD_CTL]
PAD SETTINGS
0x01010056
0x0150
PAD[PB10][FUNC_CTL]
ALT SELECT
0x00000000
0x0154
PAD[PB10][PAD_CTL]
PAD SETTINGS
0x01010056
0x0158
PAD[PB11][FUNC_CTL]
ALT SELECT
0x00000000
0x015C
PAD[PB11][PAD_CTL]
PAD SETTINGS
0x01010056
0x0160
PAD[PB12][FUNC_CTL]
ALT SELECT
0x00000000
0x0164
PAD[PB12][PAD_CTL]
PAD SETTINGS
0x01010056
0x0168
PAD[PB13][FUNC_CTL]
ALT SELECT
0x00000000
0x016C
PAD[PB13][PAD_CTL]
PAD SETTINGS
0x01010056
0x0170
PAD[PB14][FUNC_CTL]
ALT SELECT
0x00000000
0x0174
PAD[PB14][PAD_CTL]
PAD SETTINGS
0x01010056
0x0178
PAD[PB15][FUNC_CTL]
ALT SELECT
0x00000000
0x017C
PAD[PB15][PAD_CTL]
PAD SETTINGS
0x01010056
0x0180
PAD[PB16][FUNC_CTL]
ALT SELECT
0x00000000
0x0184
PAD[PB16][PAD_CTL]
PAD SETTINGS
0x01010056
0x0188
PAD[PB17][FUNC_CTL]
ALT SELECT
0x00000000
0x018C
PAD[PB17][PAD_CTL]
PAD SETTINGS
0x01010056
0x0190
PAD[PB18][FUNC_CTL]
ALT SELECT
0x00000000
0x0194
PAD[PB18][PAD_CTL]
PAD SETTINGS
0x01010056
0x0198
PAD[PB19][FUNC_CTL]
ALT SELECT
0x00000000
0x019C
PAD[PB19][PAD_CTL]
PAD SETTINGS
0x01010056
0x01A0
PAD[PB20][FUNC_CTL]
ALT SELECT
0x00000000
0x01A4
PAD[PB20][PAD_CTL]
PAD SETTINGS
0x01010056
0x01A8
PAD[PB21][FUNC_CTL]
ALT SELECT
0x00000000
0x01AC
PAD[PB21][PAD_CTL]
PAD SETTINGS
0x01010056
0x01B0
PAD[PB22][FUNC_CTL]
ALT SELECT
0x00000000
0x01B4
PAD[PB22][PAD_CTL]
PAD SETTINGS
0x01010056
0x01B8
PAD[PB23][FUNC_CTL]
ALT SELECT
0x00000000
0x01BC
PAD[PB23][PAD_CTL]
PAD SETTINGS
0x01010056
0x01C0
PAD[PB24][FUNC_CTL]
ALT SELECT
0x00000000
0x01C4
PAD[PB24][PAD_CTL]
PAD SETTINGS
0x01010056
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
336/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
IO 控制器 IOC,PIOC,BIOC
地址偏移
名称
描述
复位值
0x01C8
PAD[PB25][FUNC_CTL]
ALT SELECT
0x00000000
0x01CC
PAD[PB25][PAD_CTL]
PAD SETTINGS
0x01010056
0x01D0
PAD[PB26][FUNC_CTL]
ALT SELECT
0x00000000
0x01D4
PAD[PB26][PAD_CTL]
PAD SETTINGS
0x01010056
0x01D8
PAD[PB27][FUNC_CTL]
ALT SELECT
0x00000000
0x01DC
PAD[PB27][PAD_CTL]
PAD SETTINGS
0x01010056
0x01E0
PAD[PB28][FUNC_CTL]
ALT SELECT
0x00000000
0x01E4
PAD[PB28][PAD_CTL]
PAD SETTINGS
0x01010056
0x01E8
PAD[PB29][FUNC_CTL]
ALT SELECT
0x00000000
0x01EC
PAD[PB29][PAD_CTL]
PAD SETTINGS
0x01010056
0x01F0
PAD[PB30][FUNC_CTL]
ALT SELECT
0x00000000
0x01F4
PAD[PB30][PAD_CTL]
PAD SETTINGS
0x01010056
0x01F8
PAD[PB31][FUNC_CTL]
ALT SELECT
0x00000000
0x01FC
PAD[PB31][PAD_CTL]
PAD SETTINGS
0x01010056
0x0200
PAD[PC00][FUNC_CTL]
ALT SELECT
0x00000000
0x0204
PAD[PC00][PAD_CTL]
PAD SETTINGS
0x01010056
0x0208
PAD[PC01][FUNC_CTL]
ALT SELECT
0x00000000
0x020C
PAD[PC01][PAD_CTL]
PAD SETTINGS
0x01010056
0x0210
PAD[PC02][FUNC_CTL]
ALT SELECT
0x00000000
0x0214
PAD[PC02][PAD_CTL]
PAD SETTINGS
0x01010056
0x0218
PAD[PC03][FUNC_CTL]
ALT SELECT
0x00000000
0x021C
PAD[PC03][PAD_CTL]
PAD SETTINGS
0x01010056
0x0220
PAD[PC04][FUNC_CTL]
ALT SELECT
0x00000000
0x0224
PAD[PC04][PAD_CTL]
PAD SETTINGS
0x01010056
0x0228
PAD[PC05][FUNC_CTL]
ALT SELECT
0x00000000
0x022C
PAD[PC05][PAD_CTL]
PAD SETTINGS
0x01010056
0x0230
PAD[PC06][FUNC_CTL]
ALT SELECT
0x00000000
0x0234
PAD[PC06][PAD_CTL]
PAD SETTINGS
0x01010056
0x0238
PAD[PC07][FUNC_CTL]
ALT SELECT
0x00000000
0x023C
PAD[PC07][PAD_CTL]
PAD SETTINGS
0x01010056
0x0240
PAD[PC08][FUNC_CTL]
ALT SELECT
0x00000000
0x0244
PAD[PC08][PAD_CTL]
PAD SETTINGS
0x01010056
0x0248
PAD[PC09][FUNC_CTL]
ALT SELECT
0x00000000
0x024C
PAD[PC09][PAD_CTL]
PAD SETTINGS
0x01010056
0x0250
PAD[PC10][FUNC_CTL]
ALT SELECT
0x00000000
0x0254
PAD[PC10][PAD_CTL]
PAD SETTINGS
0x01010056
0x0258
PAD[PC11][FUNC_CTL]
ALT SELECT
0x00000000
0x025C
PAD[PC11][PAD_CTL]
PAD SETTINGS
0x01010056
0x0260
PAD[PC12][FUNC_CTL]
ALT SELECT
0x00000000
0x0264
PAD[PC12][PAD_CTL]
PAD SETTINGS
0x01010056
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
337/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
IO 控制器 IOC,PIOC,BIOC
名称
描述
复位值
0x0268
PAD[PC13][FUNC_CTL]
ALT SELECT
0x00000000
0x026C
PAD[PC13][PAD_CTL]
PAD SETTINGS
0x01010056
0x0270
PAD[PC14][FUNC_CTL]
ALT SELECT
0x00000000
0x0274
PAD[PC14][PAD_CTL]
PAD SETTINGS
0x01010056
0x0278
PAD[PC15][FUNC_CTL]
ALT SELECT
0x00000000
0x027C
PAD[PC15][PAD_CTL]
PAD SETTINGS
0x01010056
0x0280
PAD[PC16][FUNC_CTL]
ALT SELECT
0x00000000
0x0284
PAD[PC16][PAD_CTL]
PAD SETTINGS
0x01010056
0x0288
PAD[PC17][FUNC_CTL]
ALT SELECT
0x00000000
0x028C
PAD[PC17][PAD_CTL]
PAD SETTINGS
0x01010056
0x0290
PAD[PC18][FUNC_CTL]
ALT SELECT
0x00000000
0x0294
PAD[PC18][PAD_CTL]
PAD SETTINGS
0x01010056
0x0298
PAD[PC19][FUNC_CTL]
ALT SELECT
0x00000000
0x029C
PAD[PC19][PAD_CTL]
PAD SETTINGS
0x01010056
0x02A0
PAD[PC20][FUNC_CTL]
ALT SELECT
0x00000000
0x02A4
PAD[PC20][PAD_CTL]
PAD SETTINGS
0x01010056
0x02A8
PAD[PC21][FUNC_CTL]
ALT SELECT
0x00000000
0x02AC
PAD[PC21][PAD_CTL]
PAD SETTINGS
0x01010056
0x02B0
PAD[PC22][FUNC_CTL]
ALT SELECT
0x00000000
0x02B4
PAD[PC22][PAD_CTL]
PAD SETTINGS
0x01010056
0x02B8
PAD[PC23][FUNC_CTL]
ALT SELECT
0x00000000
0x02BC
PAD[PC23][PAD_CTL]
PAD SETTINGS
0x01010056
0x02C0
PAD[PC24][FUNC_CTL]
ALT SELECT
0x00000000
0x02C4
PAD[PC24][PAD_CTL]
PAD SETTINGS
0x01010056
0x02C8
PAD[PC25][FUNC_CTL]
ALT SELECT
0x00000000
0x02CC
PAD[PC25][PAD_CTL]
PAD SETTINGS
0x01010056
0x02D0
PAD[PC26][FUNC_CTL]
ALT SELECT
0x00000000
0x02D4
PAD[PC26][PAD_CTL]
PAD SETTINGS
0x01010056
0x02D8
PAD[PC27][FUNC_CTL]
ALT SELECT
0x00000000
0x02DC
PAD[PC27][PAD_CTL]
PAD SETTINGS
0x01010056
0x0D00
PAD[PX00][FUNC_CTL]
ALT SELECT
0x00000000
0x0D04
PAD[PX00][PAD_CTL]
PAD SETTINGS
0x01010056
0x0D08
PAD[PX01][FUNC_CTL]
ALT SELECT
0x00000000
0x0D0C
PAD[PX01][PAD_CTL]
PAD SETTINGS
0x01010056
0x0D10
PAD[PX02][FUNC_CTL]
ALT SELECT
0x00000000
0x0D14
PAD[PX02][PAD_CTL]
PAD SETTINGS
0x01010056
0x0D18
PAD[PX03][FUNC_CTL]
ALT SELECT
0x00000000
0x0D1C
PAD[PX03][PAD_CTL]
PAD SETTINGS
0x01010056
0x0D20
PAD[PX04][FUNC_CTL]
ALT SELECT
0x00000000
0x0D24
PAD[PX04][PAD_CTL]
PAD SETTINGS
0x01010056
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
338/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
IO 控制器 IOC,PIOC,BIOC
地址偏移
名称
描述
复位值
0x0D28
PAD[PX05][FUNC_CTL]
ALT SELECT
0x00000000
0x0D2C
PAD[PX05][PAD_CTL]
PAD SETTINGS
0x01010056
0x0D30
PAD[PX06][FUNC_CTL]
ALT SELECT
0x00000000
0x0D34
PAD[PX06][PAD_CTL]
PAD SETTINGS
0x01010056
0x0D38
PAD[PX07][FUNC_CTL]
ALT SELECT
0x00000000
0x0D3C
PAD[PX07][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E00
PAD[PY00][FUNC_CTL]
ALT SELECT
0x00000000
0x0E04
PAD[PY00][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E08
PAD[PY01][FUNC_CTL]
ALT SELECT
0x00000000
0x0E0C
PAD[PY01][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E10
PAD[PY02][FUNC_CTL]
ALT SELECT
0x00000000
0x0E14
PAD[PY02][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E18
PAD[PY03][FUNC_CTL]
ALT SELECT
0x00000000
0x0E1C
PAD[PY03][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E20
PAD[PY04][FUNC_CTL]
ALT SELECT
0x00000000
0x0E24
PAD[PY04][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E28
PAD[PY05][FUNC_CTL]
ALT SELECT
0x00000000
0x0E2C
PAD[PY05][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E30
PAD[PY06][FUNC_CTL]
ALT SELECT
0x00000000
0x0E34
PAD[PY06][PAD_CTL]
PAD SETTINGS
0x01010056
0x0E38
PAD[PY07][FUNC_CTL]
ALT SELECT
0x00000000
0x0E3C
PAD[PY07][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F00
PAD[PZ00][FUNC_CTL]
ALT SELECT
0x00000000
0x0F04
PAD[PZ00][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F08
PAD[PZ01][FUNC_CTL]
ALT SELECT
0x00000000
0x0F0C
PAD[PZ01][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F10
PAD[PZ02][FUNC_CTL]
ALT SELECT
0x00000000
0x0F14
PAD[PZ02][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F18
PAD[PZ03][FUNC_CTL]
ALT SELECT
0x00000000
0x0F1C
PAD[PZ03][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F20
PAD[PZ04][FUNC_CTL]
ALT SELECT
0x00000000
0x0F24
PAD[PZ04][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F28
PAD[PZ05][FUNC_CTL]
ALT SELECT
0x00000000
0x0F2C
PAD[PZ05][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F30
PAD[PZ06][FUNC_CTL]
ALT SELECT
0x00000000
0x0F34
PAD[PZ06][PAD_CTL]
PAD SETTINGS
0x01010056
0x0F38
PAD[PZ07][FUNC_CTL]
ALT SELECT
0x00000000
0x0F3C
PAD[PZ07][PAD_CTL]
PAD SETTINGS
0x01010056
表 156: IOC 寄存器列表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
339/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
IO 控制器 IOC,PIOC,BIOC
IOC 的寄存器详细说明如下:
PAD[FUNC_CTL] (0x0 + 0x8 * n)
x
x
x
x
x
22
21
20
19
18
17
x
x
x
x
x
x
x
15
14
13
x
x
x
12
RW
N/A
x
16
0
11
10
9
x
8
7
x
x
x
0
x
11
10
9
8
7
x
x
x
6
5
4
3
x
x
0
0
6
5
4
3
2
1
0
0
0
0
2
1
0
ALT_SELECT
x
23
RW
x
24
RSVD
25
N/A
26
ANALOG
27
RW
28
RSVD
29
N/A
30
RSVD
31
LOOP_BACK
22.3.2
PAD[FUNC_CTL] [31:0]
位域
名称
描述
强制输入 (PAD 值环回)
16
0: 失效
LOOP_BACK
1: 使能
选择模拟功能
8
0: 失效
ANALOG
1: 使能
功能选择
0: 功能 0
4-0
1: 功能 1
ALT_SELECT
...
31: 功能 31
PAD[FUNC_CTL] 位域
x
1
0
DS
x
1
x
RW
0
RSVD
x
N/A
x
SPD
x
RW
1
12
SR
0
13
RSVD
0
14
RSVD
x
15
N/A
16
RW
0
17
N/A
0
18
OD
x
19
KE
x
20
RW
HYS
RW
1
21
PE
x
22
RW
x
23
PS
x
N/A
x
24
RSVD
25
RW
x
26
N/A
x
27
PRS
x
28
RW
29
RSVD
30
RSVD
31
RW
PAD[PAD_CTL] (0x4 + 0x8 * n)
N/A
22.3.3
1
PAD[PAD_CTL] [31:0]
位域
名称
描述
施密特触发器使能
24
HYS
0: 失效
1: 使能
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
340/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
IO 控制器 IOC,PIOC,BIOC
描述
选择上拉下拉内部电阻强度:
对于下拉, 只支持 100 千欧姆电阻
对于上拉:
21-20
PRS
00: 100 千欧姆
01: 47 千欧姆
10: 22 千欧姆
11: 22 千欧姆
上拉下拉选择
18
PS
0: 下拉
1: 上拉
上拉下拉使能
17
PE
0: 失效
1: 使能
保持能力使能
16
KE
0: 失效
1: 使能
漏极开路使能
8
OD
0: 失效
1: 使能
压摆率设置
6
SR
0: 慢
1: 快
额外 2bit 压摆率设置用于选择在降噪条件下 IO 单元工作频率范
围
5-4
SPD
00: 低频压摆率 (50 Mhz)
01: 中频压摆率 (100 Mhz)
10: 高频压摆率 (150 Mhz)
11: 超高频压摆率 (200 Mhz)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
341/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
IO 控制器 IOC,PIOC,BIOC
描述
驱动强度
1.8V 模式:
000: 260 欧姆
001: 260 欧姆
010: 130 欧姆
011: 88 欧姆
100: 65 欧姆
101: 52 欧姆
110: 43 欧姆
2-0
DS
111: 37 欧姆
3.3V 模式:
000: 157 欧姆
001: 157 欧姆
010: 78 欧姆
011: 53 欧姆
100: 39 欧姆
101: 32 欧姆
110: 26 欧姆
111: 23 欧姆
PAD[PAD_CTL] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
342/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPIO 控制器
GPIO 控制器
23
本章节描述了 GPIO 控制器的主要特性和功能。GPIO 控制器包括:GPIO 控制器 GPIO0,快速 GPIO 控制
器 FGPIO0,电源管理域 GPIO 控制器(PGPIO)和电池备份域 GPIO 控制器 (BGPIO)。
特性总结
23.1
本章节介绍 GPIO 控制器的主要特性:
● 配置 IO 作为输入或者输出
● 读取 IO 输入的状态
● 设置 IO 的输出
● 原子化操作设置 IO 输出高,输出低,翻转
GPIO,PGIO,BGPIO 支持配置 GPIO 中断,FGPIO0 不支持生成中断。
功能描述
23.2
23.2.1
GPIO 控制
GPIO 控制器支持 OE 寄存器,每一个 IO 都有对应的 DIRECTION 控制位。用户把该位置 1 就可以把对应的
IO 配置为 GPIO 输出,反之该 IO 即为 GPIO 输入。
用户可以通过 GPIO 控制器的 DO 寄存器配置 GPIO 的输出。
GPIO 输出支持原子化操作寄存器:
● 输出高寄存器 SET,把此寄存器里对应位置 1,会把对应 IO 输出置高;置 0 则 IO 输出不变。
● 输出低寄存器 CLEAR,把此寄存器里对应位置 1,会把对应 IO 输出置低;置 0 则 IO 输出不变。
● 翻转寄存器 TOGGLE,把此寄存器里对应位置 1,会把对应 IO 输出翻转;置 0 则 IO 输出不变。
用户可以通过 GPIO 控制器的 DI 寄存器读取 IO 的电平状态。
注意,DI 寄存器可以实现 IO 监听。即无论 GPIO 配置为输入还是输出,或者对应的 IO 控制器 IOC 是否将 IO 功能映
射为 GPIO,用户总能从 DI 读取到 IO 的状态。
23.2.2
GPIO 中断
用户可以通过 GPIO 控制器的 IE 寄存器打开 GPIO 中断,IE 寄存器内的对应位置 1 就可以使能对应 IO 的中
断。
用户可以通过 GPIO 控制器的 TP 寄存器来指定中断的类型,对应位置 1,表示中断由边沿触发,对应位置
0,表示中断由电平触发。
用户可以通过 GPIO 控制器的 PL 寄存器来指定中断的极性,对应位置 1,表示中断由下降沿或者低电平触
发,对应位置 0,表示中断由上升沿或高电平触发。
用户可以通过 GPIO 控制器的 IF 寄存器来查询中断的状态,对应标志位置 1,表示对应 IO 有中断待处理。对
标志位写 1,可以清除这个标志位。
23.3
GPIO 寄存器列表
GPIO 的寄存器列表如下:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
343/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPIO 控制器
FGPIO base address: 0x000C0000
GPIO0 base address: 0xF0000000
PGPIO base address: 0xF40DC000
BGPIO base address: 0xF5014000
地址偏移
名称
描述
复位值
0x0000
DI[GPIOA][VALUE]
gpioa 状态寄存器
0x00000000
0x0010
DI[GPIOB][VALUE]
gpiob 状态寄存器
0x00000000
0x0020
DI[GPIOC][VALUE]
gpioc 状态寄存器
0x00000000
0x00D0
DI[GPIOX][VALUE]
gpiox 状态寄存器
0x00000000
0x00E0
DI[GPIOY][VALUE]
gpioy 状态寄存器
0x00000000
0x00F0
DI[GPIOZ][VALUE]
gpioz 状态寄存器
0x00000000
0x0100
DO[GPIOA][VALUE]
gpioa 输出寄存器
0x00000000
0x0104
DO[GPIOA][SET]
gpioa 输出设置寄存器
0x00000000
0x0108
DO[GPIOA][CLEAR]
gpioa 输出清除寄存器
0x00000000
0x010C
DO[GPIOA][TOGGLE]
gpioa 输出翻转寄存器
0x00000000
0x0110
DO[GPIOB][VALUE]
gpiob 输出寄存器
0x00000000
0x0114
DO[GPIOB][SET]
gpiob 输出设置寄存器
0x00000000
0x0118
DO[GPIOB][CLEAR]
gpiob 输出清除寄存器
0x00000000
0x011C
DO[GPIOB][TOGGLE]
gpiob 输出翻转寄存器
0x00000000
0x0120
DO[GPIOC][VALUE]
gpioc 输出寄存器
0x00000000
0x0124
DO[GPIOC][SET]
gpioc 输出设置寄存器
0x00000000
0x0128
DO[GPIOC][CLEAR]
gpioc 输出清除寄存器
0x00000000
0x012C
DO[GPIOC][TOGGLE]
gpioc 输出翻转寄存器
0x00000000
0x01D0
DO[GPIOX][VALUE]
gpiox 输出寄存器
0x00000000
0x01D4
DO[GPIOX][SET]
gpiox 输出设置寄存器
0x00000000
0x01D8
DO[GPIOX][CLEAR]
gpiox 输出清除寄存器
0x00000000
0x01DC
DO[GPIOX][TOGGLE]
gpiox 输出翻转寄存器
0x00000000
0x01E0
DO[GPIOY][VALUE]
gpioy 输出寄存器
0x00000000
0x01E4
DO[GPIOY][SET]
gpioy 输出设置寄存器
0x00000000
0x01E8
DO[GPIOY][CLEAR]
gpioy 输出清除寄存器
0x00000000
0x01EC
DO[GPIOY][TOGGLE]
gpioy 输出翻转寄存器
0x00000000
0x01F0
DO[GPIOZ][VALUE]
gpioz 输出寄存器
0x00000000
0x01F4
DO[GPIOZ][SET]
gpioz 输出设置寄存器
0x00000000
0x01F8
DO[GPIOZ][CLEAR]
gpioz 输出清除寄存器
0x00000000
0x01FC
DO[GPIOZ][TOGGLE]
gpioz 输出翻转寄存器
0x00000000
0x0200
OE[GPIOA][VALUE]
gpioa 方向控制寄存器
0x00000000
0x0204
OE[GPIOA][SET]
gpioa 方向控制设置寄存器
0x00000000
0x0208
OE[GPIOA][CLEAR]
gpioa 方向控制清除寄存器
0x00000000
0x020C
OE[GPIOA][TOGGLE]
gpioa 方向控制翻转寄存器
0x00000000
0x0210
OE[GPIOB][VALUE]
gpiob 方向控制寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
344/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
GPIO 控制器
名称
描述
复位值
0x0214
OE[GPIOB][SET]
gpiob 方向控制设置寄存器
0x00000000
0x0218
OE[GPIOB][CLEAR]
gpiob 方向控制清除寄存器
0x00000000
0x021C
OE[GPIOB][TOGGLE]
gpiob 方向控制翻转寄存器
0x00000000
0x0220
OE[GPIOC][VALUE]
gpioc 方向控制寄存器
0x00000000
0x0224
OE[GPIOC][SET]
gpioc 方向控制设置寄存器
0x00000000
0x0228
OE[GPIOC][CLEAR]
gpioc 方向控制清除寄存器
0x00000000
0x022C
OE[GPIOC][TOGGLE]
gpioc 方向控制翻转寄存器
0x00000000
0x02D0
OE[GPIOX][VALUE]
gpiox 方向控制寄存器
0x00000000
0x02D4
OE[GPIOX][SET]
gpiox 方向控制设置寄存器
0x00000000
0x02D8
OE[GPIOX][CLEAR]
gpiox 方向控制清除寄存器
0x00000000
0x02DC
OE[GPIOX][TOGGLE]
gpiox 方向控制翻转寄存器
0x00000000
0x02E0
OE[GPIOY][VALUE]
gpioy 方向控制寄存器
0x00000000
0x02E4
OE[GPIOY][SET]
gpioy 方向控制设置寄存器
0x00000000
0x02E8
OE[GPIOY][CLEAR]
gpioy 方向控制清除寄存器
0x00000000
0x02EC
OE[GPIOY][TOGGLE]
gpioy 方向控制翻转寄存器
0x00000000
0x02F0
OE[GPIOZ][VALUE]
gpioz 方向控制寄存器
0x00000000
0x02F4
OE[GPIOZ][SET]
gpioz 方向控制设置寄存器
0x00000000
0x02F8
OE[GPIOZ][CLEAR]
gpioz 方向控制清除寄存器
0x00000000
0x02FC
OE[GPIOZ][TOGGLE]
gpioz 方向控制翻转寄存器
0x00000000
0x0300
IF[GPIOA][VALUE]
gpioa 中断标志
0x00000000
0x0310
IF[GPIOB][VALUE]
gpiob 中断标志
0x00000000
0x0320
IF[GPIOC][VALUE]
gpioc 中断标志
0x00000000
0x03D0
IF[GPIOX][VALUE]
gpiox 中断标志
0x00000000
0x03E0
IF[GPIOY][VALUE]
gpioy 中断标志
0x00000000
0x03F0
IF[GPIOZ][VALUE]
gpioz 中断标志
0x00000000
0x0400
IE[GPIOA][VALUE]
gpioa 中断使能
0x00000000
0x0404
IE[GPIOA][SET]
gpioa 中断使能设置
0x00000000
0x0408
IE[GPIOA][CLEAR]
gpioa 中断使能清除
0x00000000
0x040C
IE[GPIOA][TOGGLE]
gpioa 中断使能翻转
0x00000000
0x0410
IE[GPIOB][VALUE]
gpiob 中断使能
0x00000000
0x0414
IE[GPIOB][SET]
gpiob 中断使能设置
0x00000000
0x0418
IE[GPIOB][CLEAR]
gpiob 中断使能清除
0x00000000
0x041C
IE[GPIOB][TOGGLE]
gpiob 中断使能翻转
0x00000000
0x0420
IE[GPIOC][VALUE]
gpioc 中断使能
0x00000000
0x0424
IE[GPIOC][SET]
gpioc 中断使能设置
0x00000000
0x0428
IE[GPIOC][CLEAR]
gpioc 中断使能清除
0x00000000
0x042C
IE[GPIOC][TOGGLE]
gpioc 中断使能翻转
0x00000000
0x04D0
IE[GPIOX][VALUE]
gpiox 中断使能
0x00000000
0x04D4
IE[GPIOX][SET]
gpiox 中断使能设置
0x00000000
0x04D8
IE[GPIOX][CLEAR]
gpiox 中断使能清除
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
345/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPIO 控制器
地址偏移
名称
描述
复位值
0x04DC
IE[GPIOX][TOGGLE]
gpiox 中断使能翻转
0x00000000
0x04E0
IE[GPIOY][VALUE]
gpioy 中断使能
0x00000000
0x04E4
IE[GPIOY][SET]
gpioy 中断使能设置
0x00000000
0x04E8
IE[GPIOY][CLEAR]
gpioy 中断使能清除
0x00000000
0x04EC
IE[GPIOY][TOGGLE]
gpioy 中断使能翻转
0x00000000
0x04F0
IE[GPIOZ][VALUE]
gpioz 中断使能
0x00000000
0x04F4
IE[GPIOZ][SET]
gpioz 中断使能设置
0x00000000
0x04F8
IE[GPIOZ][CLEAR]
gpioz 中断使能清除
0x00000000
0x04FC
IE[GPIOZ][TOGGLE]
gpioz 中断使能翻转
0x00000000
0x0500
PL[GPIOA][VALUE]
gpioa 中断极性
0x00000000
0x0504
PL[GPIOA][SET]
gpioa 中断极设置
0x00000000
0x0508
PL[GPIOA][CLEAR]
gpioa 中断极性清除
0x00000000
0x050C
PL[GPIOA][TOGGLE]
gpioa 中断极性翻转
0x00000000
0x0510
PL[GPIOB][VALUE]
gpiob 中断极性
0x00000000
0x0514
PL[GPIOB][SET]
gpiob 中断极设置
0x00000000
0x0518
PL[GPIOB][CLEAR]
gpiob 中断极性清除
0x00000000
0x051C
PL[GPIOB][TOGGLE]
gpiob 中断极性翻转
0x00000000
0x0520
PL[GPIOC][VALUE]
gpioc 中断极性
0x00000000
0x0524
PL[GPIOC][SET]
gpioc 中断极设置
0x00000000
0x0528
PL[GPIOC][CLEAR]
gpioc 中断极性清除
0x00000000
0x052C
PL[GPIOC][TOGGLE]
gpioc 中断极性翻转
0x00000000
0x05D0
PL[GPIOX][VALUE]
gpiox 中断极性
0x00000000
0x05D4
PL[GPIOX][SET]
gpiox 中断极设置
0x00000000
0x05D8
PL[GPIOX][CLEAR]
gpiox 中断极性清除
0x00000000
0x05DC
PL[GPIOX][TOGGLE]
gpiox 中断极性翻转
0x00000000
0x05E0
PL[GPIOY][VALUE]
gpioy 中断极性
0x00000000
0x05E4
PL[GPIOY][SET]
gpioy 中断极设置
0x00000000
0x05E8
PL[GPIOY][CLEAR]
gpioy 中断极性清除
0x00000000
0x05EC
PL[GPIOY][TOGGLE]
gpioy 中断极性翻转
0x00000000
0x05F0
PL[GPIOZ][VALUE]
gpioz 中断极性
0x00000000
0x05F4
PL[GPIOZ][SET]
gpioz 中断极设置
0x00000000
0x05F8
PL[GPIOZ][CLEAR]
gpioz 中断极性清除
0x00000000
0x05FC
PL[GPIOZ][TOGGLE]
gpioz 中断极性翻转
0x00000000
0x0600
TP[GPIOA][VALUE]
gpioa 中断类型
0x00000000
0x0604
TP[GPIOA][SET]
gpioa 中断类型设置
0x00000000
0x0608
TP[GPIOA][CLEAR]
gpioa 中断类型清除
0x00000000
0x060C
TP[GPIOA][TOGGLE]
gpioa 中断类型翻转
0x00000000
0x0610
TP[GPIOB][VALUE]
gpiob 中断类型
0x00000000
0x0614
TP[GPIOB][SET]
gpiob 中断类型设置
0x00000000
0x0618
TP[GPIOB][CLEAR]
gpiob 中断类型清除
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
346/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPIO 控制器
地址偏移
名称
描述
复位值
0x061C
TP[GPIOB][TOGGLE]
gpiob 中断类型翻转
0x00000000
0x0620
TP[GPIOC][VALUE]
gpioc 中断类型
0x00000000
0x0624
TP[GPIOC][SET]
gpioc 中断类型设置
0x00000000
0x0628
TP[GPIOC][CLEAR]
gpioc 中断类型清除
0x00000000
0x062C
TP[GPIOC][TOGGLE]
gpioc 中断类型翻转
0x00000000
0x06D0
TP[GPIOX][VALUE]
gpiox 中断类型
0x00000000
0x06D4
TP[GPIOX][SET]
gpiox 中断类型设置
0x00000000
0x06D8
TP[GPIOX][CLEAR]
gpiox 中断类型清除
0x00000000
0x06DC
TP[GPIOX][TOGGLE]
gpiox 中断类型翻转
0x00000000
0x06E0
TP[GPIOY][VALUE]
gpioy 中断类型
0x00000000
0x06E4
TP[GPIOY][SET]
gpioy 中断类型设置
0x00000000
0x06E8
TP[GPIOY][CLEAR]
gpioy 中断类型清除
0x00000000
0x06EC
TP[GPIOY][TOGGLE]
gpioy 中断类型翻转
0x00000000
0x06F0
TP[GPIOZ][VALUE]
gpioz 中断类型
0x00000000
0x06F4
TP[GPIOZ][SET]
gpioz 中断类型设置
0x00000000
0x06F8
TP[GPIOZ][CLEAR]
gpioz 中断类型清除
0x00000000
0x06FC
TP[GPIOZ][TOGGLE]
gpioz 中断类型翻转
0x00000000
0x0700
AS[GPIOA][VALUE]
gpioa 异步中断
0x00000000
0x0704
AS[GPIOA][SET]
gpioa 异步中断设置
0x00000000
0x0708
AS[GPIOA][CLEAR]
gpioa 异步中断清除
0x00000000
0x070C
AS[GPIOA][TOGGLE]
gpioa 异步中断翻转
0x00000000
0x0710
AS[GPIOB][VALUE]
gpiob 异步中断
0x00000000
0x0714
AS[GPIOB][SET]
gpiob 异步中断设置
0x00000000
0x0718
AS[GPIOB][CLEAR]
gpiob 异步中断清除
0x00000000
0x071C
AS[GPIOB][TOGGLE]
gpiob 异步中断翻转
0x00000000
0x0720
AS[GPIOC][VALUE]
gpioc 异步中断
0x00000000
0x0724
AS[GPIOC][SET]
gpioc 异步中断设置
0x00000000
0x0728
AS[GPIOC][CLEAR]
gpioc 异步中断清除
0x00000000
0x072C
AS[GPIOC][TOGGLE]
gpioc 异步中断翻转
0x00000000
0x07D0
AS[GPIOX][VALUE]
gpiox 异步中断
0x00000000
0x07D4
AS[GPIOX][SET]
gpiox 异步中断设置
0x00000000
0x07D8
AS[GPIOX][CLEAR]
gpiox 异步中断清除
0x00000000
0x07DC
AS[GPIOX][TOGGLE]
gpiox 异步中断翻转
0x00000000
0x07E0
AS[GPIOY][VALUE]
gpioy 异步中断
0x00000000
0x07E4
AS[GPIOY][SET]
gpioy 异步中断设置
0x00000000
0x07E8
AS[GPIOY][CLEAR]
gpioy 异步中断清除
0x00000000
0x07EC
AS[GPIOY][TOGGLE]
gpioy 异步中断翻转
0x00000000
0x07F0
AS[GPIOZ][VALUE]
gpioz 异步中断
0x00000000
0x07F4
AS[GPIOZ][SET]
gpioz 异步中断设置
0x00000000
0x07F8
AS[GPIOZ][CLEAR]
gpioz 异步中断清除
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
347/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPIO 控制器
地址偏移
名称
描述
复位值
0x07FC
AS[GPIOZ][TOGGLE]
gpioz 异步中断翻转
0x00000000
表 157: GPIO 寄存器列表
GPIO 寄存器描述
23.4
GPIO 的寄存器详细说明如下:
23.4.1
DI[VALUE] (0x0 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
INPUT
31
0
DI[VALUE] [31:0]
位域
名称
描述
GPIO 输入值,每一位代表一个引脚
31-0
0: 引脚上为低电平
INPUT
1: 引脚上为高电平
DI[VALUE] 位域
23.4.2
DO[VALUE] (0x100 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
OUTPUT
31
0
DO[VALUE] [31:0]
位域
名称
描述
GPIO 输出值,每一位代表一个引脚
31-0
OUTPUT
0: 引脚输出低电平
1: 引脚输出高电平
DO[VALUE] 位域
23.4.3
DO[SET] (0x104 + 0x10 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
348/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
OUTPUT
31
GPIO 控制器
0
DO[SET] [31:0]
位域
名称
描述
GPIO 输出值置位,每一位代表一个引脚,写 1 则置位,写 0 没
31-0
有影响
OUTPUT
0: 引脚输出不变
1: 引脚输出高电平
DO[SET] 位域
23.4.4
DO[CLEAR] (0x108 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
OUTPUT
31
0
DO[CLEAR] [31:0]
位域
名称
描述
GPIO 输出值清零,每一位代表一个引脚,写 1 则清零,写 0 没
31-0
有影响
OUTPUT
0: 引脚输出不变
1: 引脚输出低电平
DO[CLEAR] 位域
23.4.5
DO[TOGGLE] (0x10C + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
OUTPUT
31
0
DO[TOGGLE] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
349/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
GPIO 控制器
描述
GPIO 输出值翻转,每一位代表一个引脚,写 1 则翻转,写 0 没
31-0
有影响
OUTPUT
0: 引脚输出不变
1: 引脚输出翻转
DO[TOGGLE] 位域
23.4.6
OE[VALUE] (0x200 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DIRECTION
31
0
OE[VALUE] [31:0]
位域
名称
描述
GPIO 方向,每一位代表一个引脚
31-0
0: 输入
DIRECTION
1: 输出
OE[VALUE] 位域
23.4.7
OE[SET] (0x204 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DIRECTION
31
0
OE[SET] [31:0]
位域
名称
描述
GPIO 方向置位,每一位代表一个引脚
31-0
DIRECTION
0: OE 不变
1: OE 置 1
OE[SET] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
350/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
23.4.8
GPIO 控制器
OE[CLEAR] (0x208 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DIRECTION
31
0
OE[CLEAR] [31:0]
位域
名称
描述
GPIO 方向清零,每一位代表一个引脚
31-0
0: OE 不变
DIRECTION
1: OE 置 0
OE[CLEAR] 位域
23.4.9
OE[TOGGLE] (0x20C + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DIRECTION
31
0
OE[TOGGLE] [31:0]
位域
名称
描述
GPIO 方向翻转,每一位代表一个引脚
31-0
0: OE 不变
DIRECTION
1: OE 翻转
OE[TOGGLE] 位域
23.4.10
IF[VALUE] (0x300 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
W1C
IRQ_FLAG
31
0
IF[VALUE] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
351/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
GPIO 控制器
描述
GPIO 中断标志,每一位代表一个引脚,写 1 清零,写 0 无影响
31-0
0: 没有产生中断
IRQ_FLAG
1: 产生中断
IF[VALUE] 位域
23.4.11
IE[VALUE] (0x400 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_EN
31
0
IE[VALUE] [31:0]
位域
名称
描述
GPIO 中断使能,每一位代表一个引脚
31-0
0: 禁止中断
IRQ_EN
1: 使能中断
IE[VALUE] 位域
23.4.12
IE[SET] (0x404 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_EN
31
0
IE[SET] [31:0]
位域
名称
描述
GPIO 中断使能置位,每一位代表一个引脚
31-0
IRQ_EN
0: 禁止中断
1: 使能中断
IE[SET] 位域
23.4.13
IE[CLEAR] (0x408 + 0x10 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
352/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_EN
31
GPIO 控制器
0
IE[CLEAR] [31:0]
位域
名称
描述
GPIO 中断使能清零,每一位代表一个引脚
31-0
0: 禁止中断
IRQ_EN
1: 使能中断
IE[CLEAR] 位域
23.4.14
IE[TOGGLE] (0x40C + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_EN
31
0
IE[TOGGLE] [31:0]
位域
名称
描述
GPIO 中断使能翻转,每一位代表一个引脚
31-0
0: 禁止中断
IRQ_EN
1: 使能中断
IE[TOGGLE] 位域
23.4.15
PL[VALUE] (0x500 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_POL
31
0
PL[VALUE] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
353/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
GPIO 控制器
描述
GPIO 中断极性,每一位代表一个引脚
31-0
0: 中断在高电平或上升沿产生
IRQ_POL
1: 中断在低电平或下降沿产生
PL[VALUE] 位域
23.4.16
PL[SET] (0x504 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_POL
31
0
PL[SET] [31:0]
位域
名称
描述
GPIO 中断极性置位,每一位代表一个引脚
31-0
0: 中断在高电平或上升沿产生
IRQ_POL
1: 中断在低电平或下降沿产生
PL[SET] 位域
23.4.17
PL[CLEAR] (0x508 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_POL
31
0
PL[CLEAR] [31:0]
位域
名称
描述
GPIO 中断极性清零,每一位代表一个引脚
31-0
IRQ_POL
0: 中断在高电平或上升沿产生
1: 中断在低电平或下降沿产生
PL[CLEAR] 位域
23.4.18
PL[TOGGLE] (0x50C + 0x10 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
354/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_POL
31
GPIO 控制器
0
PL[TOGGLE] [31:0]
位域
名称
描述
GPIO 中断极性翻转,每一位代表一个引脚
31-0
0: 中断在高电平或上升沿产生
IRQ_POL
1: 中断在低电平或下降沿产生
PL[TOGGLE] 位域
23.4.19
TP[VALUE] (0x600 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_TYPE
31
0
TP[VALUE] [31:0]
位域
名称
描述
GPIO 中断类型,每一位代表一个引脚
31-0
0: 中断以电平方式产生
IRQ_TYPE
1: 中断以边沿方式产生
TP[VALUE] 位域
23.4.20
TP[SET] (0x604 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_TYPE
31
0
TP[SET] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
355/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
GPIO 控制器
描述
GPIO 中断类型置位,每一位代表一个引脚
31-0
0: 中断以电平方式产生
IRQ_TYPE
1: 中断以边沿方式产生
TP[SET] 位域
23.4.21
TP[CLEAR] (0x608 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_TYPE
31
0
TP[CLEAR] [31:0]
位域
名称
描述
GPIO 中断类型清零,每一位代表一个引脚
31-0
0: 中断以电平方式产生
IRQ_TYPE
1: 中断以边沿方式产生
TP[CLEAR] 位域
23.4.22
TP[TOGGLE] (0x60C + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_TYPE
31
0
TP[TOGGLE] [31:0]
位域
名称
描述
GPIO 中断类型翻转,每一位代表一个引脚
31-0
IRQ_TYPE
0: 中断以电平方式产生
1: 中断以边沿方式产生
TP[TOGGLE] 位域
23.4.23
AS[VALUE] (0x700 + 0x10 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
356/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_ASYNC
31
GPIO 控制器
0
AS[VALUE] [31:0]
位域
名称
描述
GPIO 以异步方式产生中断,每一位代表一个引脚。
0: 使用系统时钟产生中断
31-0
1: 利用组合逻辑产生中断
IRQ_ASYNC
注:异步方式可以在没有时钟的条件下产生中断,但中断信号的
产生对环境干扰较敏感。
AS[VALUE] 位域
23.4.24
AS[SET] (0x704 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_ASYNC
31
0
AS[SET] [31:0]
位域
名称
描述
GPIO 以异步方式产生中断置位,每一位代表一个引脚。
0: 使用系统时钟产生中断
31-0
1: 利用组合逻辑产生中断
IRQ_ASYNC
注:异步方式可以在没有时钟的条件下产生中断,但中断信号的
产生对环境干扰较敏感。
AS[SET] 位域
31
30
AS[CLEAR] (0x708 + 0x10 * n)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
IRQ_ASYNC
23.4.25
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
357/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
GPIO 控制器
0
AS[CLEAR] [31:0]
位域
名称
描述
GPIO 以异步方式产生中断清零,每一位代表一个引脚。
0: 使用系统时钟产生中断
31-0
1: 利用组合逻辑产生中断
IRQ_ASYNC
注:异步方式可以在没有时钟的条件下产生中断,但中断信号的
产生对环境干扰较敏感。
AS[CLEAR] 位域
23.4.26
AS[TOGGLE] (0x70C + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
IRQ_ASYNC
31
0
AS[TOGGLE] [31:0]
位域
名称
描述
GPIO 以异步方式产生中断翻转,每一位代表一个引脚。
0: 使用系统时钟产生中断
31-0
IRQ_ASYNC
1: 利用组合逻辑产生中断
注:异步方式可以在没有时钟的条件下产生中断,但中断信号的
产生对环境干扰较敏感。
AS[TOGGLE] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
358/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPIO 管理器 GPIOM
GPIO 管理器 GPIOM
24
本章节描述了 GPIO 管理器 GPIOM 的主要特性和功能。GPIO 管理器的主要功能是为任一 IO 指定 GPIO 配
置生效的模块,每个 IO 都可以单独地从 GPIO 控制器(GPIO0)和快速 GPIO 控制器(FGPIO0)中指定作为其
控制器。
特性总结
24.1
本章节介绍 GPIO 管理器 GPIOM 的主要特性:
● 分配 IO 给指定的 GPIO 控制器
● 配置 IO 输入是否对特定 GPIO 控制器可见
● GPIOM 寄存器访问控制
● GPIOM 寄存器锁定
功能描述
24.2
本章节介绍 GPIO 管理器 GPIOM 的功能。
24.2.1
GPIO 分配
本产品支持多个 GPIO 控制器,其目的是为了方便多核,多任务间实现 GPIO 资源隔离。GPIO 管理器的主
要功能是管理所有的 IO,每一个 IO 都可以单独地指定由某一个 GPIO 控制器控制,其他 GPIO 控制器无法控制
GPIO。
用户可以通过 GPIOxASSIGNy 寄存器实现管理 Px 的 y 引脚。该寄存器的 SELECT 位域可以选择这个 IO 收
到哪个 GPIO 控制器控制:
● 0’b0,GPIO0
● 0’b1,FGPIO0
GPIOxASSIGNy 寄存器的 HIDE 位域,由 2 个 HIDE 位组成,每一位置 1,即表示这个 IO 的输入在对应的
GPIO 控制器 DI 寄存器内不可见,即 GPIO 控制器无法读取到这个 IO 的输入。
● HIDE[0],置 1 表示 IO 对 GPIO0 不可见
● HIDE[1],置 1 表示 IO 对 FGPIO0 不可见
24.2.2
访问控制
GPIOxASSIGNy 寄存器的 LOCK 位,可以用来锁定这个 IO 的对应寄存器。一旦置 1,这个寄存器的配置直
到下次复位前都不能再更改。
GPIOxASSIGNy 寄存器的 NON_SEC 位,可以按照系统安全状态进行访问权限控制。一旦置 1,寄存器只
能在安全状态下访问。请访问系统安全的相关章节获取系统安全状态的详细信息。
24.3
GPIOM 寄存器列表
GPIOM 的寄存器列表如下:
GPIOM base address: 0xF0008000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
359/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
GPIO 管理器 GPIOM
名称
描述
复位值
0x0000
ASSIGN[GPIOA][PIN][PIN00]
GPIOA 管理寄存器
0x00000000
0x0004
ASSIGN[GPIOA][PIN][PIN01]
GPIOA 管理寄存器
0x00000000
0x0008
ASSIGN[GPIOA][PIN][PIN02]
GPIOA 管理寄存器
0x00000000
0x000C
ASSIGN[GPIOA][PIN][PIN03]
GPIOA 管理寄存器
0x00000000
0x0010
ASSIGN[GPIOA][PIN][PIN04]
GPIOA 管理寄存器
0x00000000
0x0014
ASSIGN[GPIOA][PIN][PIN05]
GPIOA 管理寄存器
0x00000000
0x0018
ASSIGN[GPIOA][PIN][PIN06]
GPIOA 管理寄存器
0x00000000
0x001C
ASSIGN[GPIOA][PIN][PIN07]
GPIOA 管理寄存器
0x00000000
0x0020
ASSIGN[GPIOA][PIN][PIN08]
GPIOA 管理寄存器
0x00000000
0x0024
ASSIGN[GPIOA][PIN][PIN09]
GPIOA 管理寄存器
0x00000000
0x0028
ASSIGN[GPIOA][PIN][PIN10]
GPIOA 管理寄存器
0x00000000
0x002C
ASSIGN[GPIOA][PIN][PIN11]
GPIOA 管理寄存器
0x00000000
0x0030
ASSIGN[GPIOA][PIN][PIN12]
GPIOA 管理寄存器
0x00000000
0x0034
ASSIGN[GPIOA][PIN][PIN13]
GPIOA 管理寄存器
0x00000000
0x0038
ASSIGN[GPIOA][PIN][PIN14]
GPIOA 管理寄存器
0x00000000
0x003C
ASSIGN[GPIOA][PIN][PIN15]
GPIOA 管理寄存器
0x00000000
0x0040
ASSIGN[GPIOA][PIN][PIN16]
GPIOA 管理寄存器
0x00000000
0x0044
ASSIGN[GPIOA][PIN][PIN17]
GPIOA 管理寄存器
0x00000000
0x0048
ASSIGN[GPIOA][PIN][PIN18]
GPIOA 管理寄存器
0x00000000
0x004C
ASSIGN[GPIOA][PIN][PIN19]
GPIOA 管理寄存器
0x00000000
0x0050
ASSIGN[GPIOA][PIN][PIN20]
GPIOA 管理寄存器
0x00000000
0x0054
ASSIGN[GPIOA][PIN][PIN21]
GPIOA 管理寄存器
0x00000000
0x0058
ASSIGN[GPIOA][PIN][PIN22]
GPIOA 管理寄存器
0x00000000
0x005C
ASSIGN[GPIOA][PIN][PIN23]
GPIOA 管理寄存器
0x00000000
0x0060
ASSIGN[GPIOA][PIN][PIN24]
GPIOA 管理寄存器
0x00000000
0x0064
ASSIGN[GPIOA][PIN][PIN25]
GPIOA 管理寄存器
0x00000000
0x0068
ASSIGN[GPIOA][PIN][PIN26]
GPIOA 管理寄存器
0x00000000
0x006C
ASSIGN[GPIOA][PIN][PIN27]
GPIOA 管理寄存器
0x00000000
0x0070
ASSIGN[GPIOA][PIN][PIN28]
GPIOA 管理寄存器
0x00000000
0x0074
ASSIGN[GPIOA][PIN][PIN29]
GPIOA 管理寄存器
0x00000000
0x0078
ASSIGN[GPIOA][PIN][PIN30]
GPIOA 管理寄存器
0x00000000
0x007C
ASSIGN[GPIOA][PIN][PIN31]
GPIOA 管理寄存器
0x00000000
0x0080
ASSIGN[GPIOB][PIN][PIN00]
GPIOB 管理寄存器
0x00000000
0x0084
ASSIGN[GPIOB][PIN][PIN01]
GPIOB 管理寄存器
0x00000000
0x0088
ASSIGN[GPIOB][PIN][PIN02]
GPIOB 管理寄存器
0x00000000
0x008C
ASSIGN[GPIOB][PIN][PIN03]
GPIOB 管理寄存器
0x00000000
0x0090
ASSIGN[GPIOB][PIN][PIN04]
GPIOB 管理寄存器
0x00000000
0x0094
ASSIGN[GPIOB][PIN][PIN05]
GPIOB 管理寄存器
0x00000000
0x0098
ASSIGN[GPIOB][PIN][PIN06]
GPIOB 管理寄存器
0x00000000
0x009C
ASSIGN[GPIOB][PIN][PIN07]
GPIOB 管理寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
360/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
GPIO 管理器 GPIOM
名称
描述
复位值
0x00A0
ASSIGN[GPIOB][PIN][PIN08]
GPIOB 管理寄存器
0x00000000
0x00A4
ASSIGN[GPIOB][PIN][PIN09]
GPIOB 管理寄存器
0x00000000
0x00A8
ASSIGN[GPIOB][PIN][PIN10]
GPIOB 管理寄存器
0x00000000
0x00AC
ASSIGN[GPIOB][PIN][PIN11]
GPIOB 管理寄存器
0x00000000
0x00B0
ASSIGN[GPIOB][PIN][PIN12]
GPIOB 管理寄存器
0x00000000
0x00B4
ASSIGN[GPIOB][PIN][PIN13]
GPIOB 管理寄存器
0x00000000
0x00B8
ASSIGN[GPIOB][PIN][PIN14]
GPIOB 管理寄存器
0x00000000
0x00BC
ASSIGN[GPIOB][PIN][PIN15]
GPIOB 管理寄存器
0x00000000
0x00C0
ASSIGN[GPIOB][PIN][PIN16]
GPIOB 管理寄存器
0x00000000
0x00C4
ASSIGN[GPIOB][PIN][PIN17]
GPIOB 管理寄存器
0x00000000
0x00C8
ASSIGN[GPIOB][PIN][PIN18]
GPIOB 管理寄存器
0x00000000
0x00CC
ASSIGN[GPIOB][PIN][PIN19]
GPIOB 管理寄存器
0x00000000
0x00D0
ASSIGN[GPIOB][PIN][PIN20]
GPIOB 管理寄存器
0x00000000
0x00D4
ASSIGN[GPIOB][PIN][PIN21]
GPIOB 管理寄存器
0x00000000
0x00D8
ASSIGN[GPIOB][PIN][PIN22]
GPIOB 管理寄存器
0x00000000
0x00DC
ASSIGN[GPIOB][PIN][PIN23]
GPIOB 管理寄存器
0x00000000
0x00E0
ASSIGN[GPIOB][PIN][PIN24]
GPIOB 管理寄存器
0x00000000
0x00E4
ASSIGN[GPIOB][PIN][PIN25]
GPIOB 管理寄存器
0x00000000
0x00E8
ASSIGN[GPIOB][PIN][PIN26]
GPIOB 管理寄存器
0x00000000
0x00EC
ASSIGN[GPIOB][PIN][PIN27]
GPIOB 管理寄存器
0x00000000
0x00F0
ASSIGN[GPIOB][PIN][PIN28]
GPIOB 管理寄存器
0x00000000
0x00F4
ASSIGN[GPIOB][PIN][PIN29]
GPIOB 管理寄存器
0x00000000
0x00F8
ASSIGN[GPIOB][PIN][PIN30]
GPIOB 管理寄存器
0x00000000
0x00FC
ASSIGN[GPIOB][PIN][PIN31]
GPIOB 管理寄存器
0x00000000
0x0100
ASSIGN[GPIOC][PIN][PIN00]
GPIOC 管理寄存器
0x00000000
0x0104
ASSIGN[GPIOC][PIN][PIN01]
GPIOC 管理寄存器
0x00000000
0x0108
ASSIGN[GPIOC][PIN][PIN02]
GPIOC 管理寄存器
0x00000000
0x010C
ASSIGN[GPIOC][PIN][PIN03]
GPIOC 管理寄存器
0x00000000
0x0110
ASSIGN[GPIOC][PIN][PIN04]
GPIOC 管理寄存器
0x00000000
0x0114
ASSIGN[GPIOC][PIN][PIN05]
GPIOC 管理寄存器
0x00000000
0x0118
ASSIGN[GPIOC][PIN][PIN06]
GPIOC 管理寄存器
0x00000000
0x011C
ASSIGN[GPIOC][PIN][PIN07]
GPIOC 管理寄存器
0x00000000
0x0120
ASSIGN[GPIOC][PIN][PIN08]
GPIOC 管理寄存器
0x00000000
0x0124
ASSIGN[GPIOC][PIN][PIN09]
GPIOC 管理寄存器
0x00000000
0x0128
ASSIGN[GPIOC][PIN][PIN10]
GPIOC 管理寄存器
0x00000000
0x012C
ASSIGN[GPIOC][PIN][PIN11]
GPIOC 管理寄存器
0x00000000
0x0130
ASSIGN[GPIOC][PIN][PIN12]
GPIOC 管理寄存器
0x00000000
0x0134
ASSIGN[GPIOC][PIN][PIN13]
GPIOC 管理寄存器
0x00000000
0x0138
ASSIGN[GPIOC][PIN][PIN14]
GPIOC 管理寄存器
0x00000000
0x013C
ASSIGN[GPIOC][PIN][PIN15]
GPIOC 管理寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
361/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
GPIO 管理器 GPIOM
名称
描述
复位值
0x0140
ASSIGN[GPIOC][PIN][PIN16]
GPIOC 管理寄存器
0x00000000
0x0144
ASSIGN[GPIOC][PIN][PIN17]
GPIOC 管理寄存器
0x00000000
0x0148
ASSIGN[GPIOC][PIN][PIN18]
GPIOC 管理寄存器
0x00000000
0x014C
ASSIGN[GPIOC][PIN][PIN19]
GPIOC 管理寄存器
0x00000000
0x0150
ASSIGN[GPIOC][PIN][PIN20]
GPIOC 管理寄存器
0x00000000
0x0154
ASSIGN[GPIOC][PIN][PIN21]
GPIOC 管理寄存器
0x00000000
0x0158
ASSIGN[GPIOC][PIN][PIN22]
GPIOC 管理寄存器
0x00000000
0x015C
ASSIGN[GPIOC][PIN][PIN23]
GPIOC 管理寄存器
0x00000000
0x0160
ASSIGN[GPIOC][PIN][PIN24]
GPIOC 管理寄存器
0x00000000
0x0164
ASSIGN[GPIOC][PIN][PIN25]
GPIOC 管理寄存器
0x00000000
0x0168
ASSIGN[GPIOC][PIN][PIN26]
GPIOC 管理寄存器
0x00000000
0x016C
ASSIGN[GPIOC][PIN][PIN27]
GPIOC 管理寄存器
0x00000000
0x0170
ASSIGN[GPIOC][PIN][PIN28]
GPIOC 管理寄存器
0x00000000
0x0174
ASSIGN[GPIOC][PIN][PIN29]
GPIOC 管理寄存器
0x00000000
0x0178
ASSIGN[GPIOC][PIN][PIN30]
GPIOC 管理寄存器
0x00000000
0x017C
ASSIGN[GPIOC][PIN][PIN31]
GPIOC 管理寄存器
0x00000000
0x0680
ASSIGN[GPIOX][PIN][PIN00]
GPIOX 管理寄存器
0x00000000
0x0684
ASSIGN[GPIOX][PIN][PIN01]
GPIOX 管理寄存器
0x00000000
0x0688
ASSIGN[GPIOX][PIN][PIN02]
GPIOX 管理寄存器
0x00000000
0x068C
ASSIGN[GPIOX][PIN][PIN03]
GPIOX 管理寄存器
0x00000000
0x0690
ASSIGN[GPIOX][PIN][PIN04]
GPIOX 管理寄存器
0x00000000
0x0694
ASSIGN[GPIOX][PIN][PIN05]
GPIOX 管理寄存器
0x00000000
0x0698
ASSIGN[GPIOX][PIN][PIN06]
GPIOX 管理寄存器
0x00000000
0x069C
ASSIGN[GPIOX][PIN][PIN07]
GPIOX 管理寄存器
0x00000000
0x06A0
ASSIGN[GPIOX][PIN][PIN08]
GPIOX 管理寄存器
0x00000000
0x06A4
ASSIGN[GPIOX][PIN][PIN09]
GPIOX 管理寄存器
0x00000000
0x06A8
ASSIGN[GPIOX][PIN][PIN10]
GPIOX 管理寄存器
0x00000000
0x06AC
ASSIGN[GPIOX][PIN][PIN11]
GPIOX 管理寄存器
0x00000000
0x06B0
ASSIGN[GPIOX][PIN][PIN12]
GPIOX 管理寄存器
0x00000000
0x06B4
ASSIGN[GPIOX][PIN][PIN13]
GPIOX 管理寄存器
0x00000000
0x06B8
ASSIGN[GPIOX][PIN][PIN14]
GPIOX 管理寄存器
0x00000000
0x06BC
ASSIGN[GPIOX][PIN][PIN15]
GPIOX 管理寄存器
0x00000000
0x06C0
ASSIGN[GPIOX][PIN][PIN16]
GPIOX 管理寄存器
0x00000000
0x06C4
ASSIGN[GPIOX][PIN][PIN17]
GPIOX 管理寄存器
0x00000000
0x06C8
ASSIGN[GPIOX][PIN][PIN18]
GPIOX 管理寄存器
0x00000000
0x06CC
ASSIGN[GPIOX][PIN][PIN19]
GPIOX 管理寄存器
0x00000000
0x06D0
ASSIGN[GPIOX][PIN][PIN20]
GPIOX 管理寄存器
0x00000000
0x06D4
ASSIGN[GPIOX][PIN][PIN21]
GPIOX 管理寄存器
0x00000000
0x06D8
ASSIGN[GPIOX][PIN][PIN22]
GPIOX 管理寄存器
0x00000000
0x06DC
ASSIGN[GPIOX][PIN][PIN23]
GPIOX 管理寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
362/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
GPIO 管理器 GPIOM
名称
描述
复位值
0x06E0
ASSIGN[GPIOX][PIN][PIN24]
GPIOX 管理寄存器
0x00000000
0x06E4
ASSIGN[GPIOX][PIN][PIN25]
GPIOX 管理寄存器
0x00000000
0x06E8
ASSIGN[GPIOX][PIN][PIN26]
GPIOX 管理寄存器
0x00000000
0x06EC
ASSIGN[GPIOX][PIN][PIN27]
GPIOX 管理寄存器
0x00000000
0x06F0
ASSIGN[GPIOX][PIN][PIN28]
GPIOX 管理寄存器
0x00000000
0x06F4
ASSIGN[GPIOX][PIN][PIN29]
GPIOX 管理寄存器
0x00000000
0x06F8
ASSIGN[GPIOX][PIN][PIN30]
GPIOX 管理寄存器
0x00000000
0x06FC
ASSIGN[GPIOX][PIN][PIN31]
GPIOX 管理寄存器
0x00000000
0x0700
ASSIGN[GPIOY][PIN][PIN00]
GPIOY 管理寄存器
0x00000000
0x0704
ASSIGN[GPIOY][PIN][PIN01]
GPIOY 管理寄存器
0x00000000
0x0708
ASSIGN[GPIOY][PIN][PIN02]
GPIOY 管理寄存器
0x00000000
0x070C
ASSIGN[GPIOY][PIN][PIN03]
GPIOY 管理寄存器
0x00000000
0x0710
ASSIGN[GPIOY][PIN][PIN04]
GPIOY 管理寄存器
0x00000000
0x0714
ASSIGN[GPIOY][PIN][PIN05]
GPIOY 管理寄存器
0x00000000
0x0718
ASSIGN[GPIOY][PIN][PIN06]
GPIOY 管理寄存器
0x00000000
0x071C
ASSIGN[GPIOY][PIN][PIN07]
GPIOY 管理寄存器
0x00000000
0x0720
ASSIGN[GPIOY][PIN][PIN08]
GPIOY 管理寄存器
0x00000000
0x0724
ASSIGN[GPIOY][PIN][PIN09]
GPIOY 管理寄存器
0x00000000
0x0728
ASSIGN[GPIOY][PIN][PIN10]
GPIOY 管理寄存器
0x00000000
0x072C
ASSIGN[GPIOY][PIN][PIN11]
GPIOY 管理寄存器
0x00000000
0x0730
ASSIGN[GPIOY][PIN][PIN12]
GPIOY 管理寄存器
0x00000000
0x0734
ASSIGN[GPIOY][PIN][PIN13]
GPIOY 管理寄存器
0x00000000
0x0738
ASSIGN[GPIOY][PIN][PIN14]
GPIOY 管理寄存器
0x00000000
0x073C
ASSIGN[GPIOY][PIN][PIN15]
GPIOY 管理寄存器
0x00000000
0x0740
ASSIGN[GPIOY][PIN][PIN16]
GPIOY 管理寄存器
0x00000000
0x0744
ASSIGN[GPIOY][PIN][PIN17]
GPIOY 管理寄存器
0x00000000
0x0748
ASSIGN[GPIOY][PIN][PIN18]
GPIOY 管理寄存器
0x00000000
0x074C
ASSIGN[GPIOY][PIN][PIN19]
GPIOY 管理寄存器
0x00000000
0x0750
ASSIGN[GPIOY][PIN][PIN20]
GPIOY 管理寄存器
0x00000000
0x0754
ASSIGN[GPIOY][PIN][PIN21]
GPIOY 管理寄存器
0x00000000
0x0758
ASSIGN[GPIOY][PIN][PIN22]
GPIOY 管理寄存器
0x00000000
0x075C
ASSIGN[GPIOY][PIN][PIN23]
GPIOY 管理寄存器
0x00000000
0x0760
ASSIGN[GPIOY][PIN][PIN24]
GPIOY 管理寄存器
0x00000000
0x0764
ASSIGN[GPIOY][PIN][PIN25]
GPIOY 管理寄存器
0x00000000
0x0768
ASSIGN[GPIOY][PIN][PIN26]
GPIOY 管理寄存器
0x00000000
0x076C
ASSIGN[GPIOY][PIN][PIN27]
GPIOY 管理寄存器
0x00000000
0x0770
ASSIGN[GPIOY][PIN][PIN28]
GPIOY 管理寄存器
0x00000000
0x0774
ASSIGN[GPIOY][PIN][PIN29]
GPIOY 管理寄存器
0x00000000
0x0778
ASSIGN[GPIOY][PIN][PIN30]
GPIOY 管理寄存器
0x00000000
0x077C
ASSIGN[GPIOY][PIN][PIN31]
GPIOY 管理寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
363/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
GPIO 管理器 GPIOM
名称
描述
复位值
0x0780
ASSIGN[GPIOZ][PIN][PIN00]
GPIOZ 管理寄存器
0x00000000
0x0784
ASSIGN[GPIOZ][PIN][PIN01]
GPIOZ 管理寄存器
0x00000000
0x0788
ASSIGN[GPIOZ][PIN][PIN02]
GPIOZ 管理寄存器
0x00000000
0x078C
ASSIGN[GPIOZ][PIN][PIN03]
GPIOZ 管理寄存器
0x00000000
0x0790
ASSIGN[GPIOZ][PIN][PIN04]
GPIOZ 管理寄存器
0x00000000
0x0794
ASSIGN[GPIOZ][PIN][PIN05]
GPIOZ 管理寄存器
0x00000000
0x0798
ASSIGN[GPIOZ][PIN][PIN06]
GPIOZ 管理寄存器
0x00000000
0x079C
ASSIGN[GPIOZ][PIN][PIN07]
GPIOZ 管理寄存器
0x00000000
0x07A0
ASSIGN[GPIOZ][PIN][PIN08]
GPIOZ 管理寄存器
0x00000000
0x07A4
ASSIGN[GPIOZ][PIN][PIN09]
GPIOZ 管理寄存器
0x00000000
0x07A8
ASSIGN[GPIOZ][PIN][PIN10]
GPIOZ 管理寄存器
0x00000000
0x07AC
ASSIGN[GPIOZ][PIN][PIN11]
GPIOZ 管理寄存器
0x00000000
0x07B0
ASSIGN[GPIOZ][PIN][PIN12]
GPIOZ 管理寄存器
0x00000000
0x07B4
ASSIGN[GPIOZ][PIN][PIN13]
GPIOZ 管理寄存器
0x00000000
0x07B8
ASSIGN[GPIOZ][PIN][PIN14]
GPIOZ 管理寄存器
0x00000000
0x07BC
ASSIGN[GPIOZ][PIN][PIN15]
GPIOZ 管理寄存器
0x00000000
0x07C0
ASSIGN[GPIOZ][PIN][PIN16]
GPIOZ 管理寄存器
0x00000000
0x07C4
ASSIGN[GPIOZ][PIN][PIN17]
GPIOZ 管理寄存器
0x00000000
0x07C8
ASSIGN[GPIOZ][PIN][PIN18]
GPIOZ 管理寄存器
0x00000000
0x07CC
ASSIGN[GPIOZ][PIN][PIN19]
GPIOZ 管理寄存器
0x00000000
0x07D0
ASSIGN[GPIOZ][PIN][PIN20]
GPIOZ 管理寄存器
0x00000000
0x07D4
ASSIGN[GPIOZ][PIN][PIN21]
GPIOZ 管理寄存器
0x00000000
0x07D8
ASSIGN[GPIOZ][PIN][PIN22]
GPIOZ 管理寄存器
0x00000000
0x07DC
ASSIGN[GPIOZ][PIN][PIN23]
GPIOZ 管理寄存器
0x00000000
0x07E0
ASSIGN[GPIOZ][PIN][PIN24]
GPIOZ 管理寄存器
0x00000000
0x07E4
ASSIGN[GPIOZ][PIN][PIN25]
GPIOZ 管理寄存器
0x00000000
0x07E8
ASSIGN[GPIOZ][PIN][PIN26]
GPIOZ 管理寄存器
0x00000000
0x07EC
ASSIGN[GPIOZ][PIN][PIN27]
GPIOZ 管理寄存器
0x00000000
0x07F0
ASSIGN[GPIOZ][PIN][PIN28]
GPIOZ 管理寄存器
0x00000000
0x07F4
ASSIGN[GPIOZ][PIN][PIN29]
GPIOZ 管理寄存器
0x00000000
0x07F8
ASSIGN[GPIOZ][PIN][PIN30]
GPIOZ 管理寄存器
0x00000000
0x07FC
ASSIGN[GPIOZ][PIN][PIN31]
GPIOZ 管理寄存器
0x00000000
表 158: GPIOM 寄存器列表
24.4
GPIOM 寄存器描述
GPIOM 的寄存器详细说明如下:
24.4.1
ASSIGN[PIN] (0x0 + 0x80 * n + 0x4 * m)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
364/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
0
x
8
7
6
5
0
x
x
x
HIDE
RW
N/A
RW
0
20
4
3
2
1
x
x
x
x
ASSIGN[PIN] [31:0]
位域
名称
描述
锁定该寄存器的设置,锁定后无法解锁,锁定只能由复位清零
31
LOCK
0: 寄存器字段可以修改
1: 寄存器字段不可修改
引脚状态对 GPIO 可见
9-8
HIDE
0 位: 1, GPIO0 不可见; 0: GPIO0 可见
1 位: 1, CPU0 快速 GPIO0 不可见; 0: CPU0 快速 GPIO0 可见
选择引脚控制来源
0
SELECT
0: GPIO0;
1: CPU0 快速 GPIO
ASSIGN[PIN] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
365/1016
0
SELECT
26
RW
27
RSVD
28
N/A
29
RSVD
30
LOCK
31
GPIO 管理器 GPIOM
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
存储器概述
存储器概述
25
本章节介绍了本产品的内部存储器和外部存储外设相关接口。
内部 SRAM
25.1
本产品集成了总共 800 KB 内部 RAM,其中包括处理器的本地存储器和通用内存。
25.1.1
本地存储器 Local Memory
本地存储器 LM 包括指令本地存储器 ILM 和数据本地存储器 DLM,是指可以与内核工作在相同时钟频率,可
以供内核实现零等待周期访问的内存。本产品上 RISC-V CPU0 配置有 256 KB 的本地存储器。本地存储器 LM 可
被处理器直接访问,也能通过处理器的总线从接口被片上的其他主设备访问,其对应系统地址映射表上的 LM 和
LM_SLV。
ILD 和 DLM 的分配如下:
● ILM0,RISC-V CPU0 的指令本地存储器,128KB;
● DLM0,RISC-V CPU0 的数据本地存储器,128KB;
25.1.2
通用内存
本产品支持通用内存如下:
● AXI SRAM0,512KB,位于 AXI 总线;
● AHB SRAM,32KB,位于 AHB 总线;
25.2
通用寄存器
本产品包含一定容量的通用寄存器 GPR(General Purpose Register),可供用户存放数据供特殊用途。
● 电源管理域通用寄存器 PGPR,容量 64 Byte,位于电源管理域,可以在系统电源域掉电时保存数据。并
且不受系统电源域复位影响。
● 电池备份域通用寄存器 BGPR,容量 32 Byte,位于电池备份域,可以在系统电源域,电源管理域掉电时
保存数据。并且不受系统电源域,电源管理域复位影响。
25.3
串行总线控制器 XPI
串行总线控制器 XPI 支持连接各类可串行访问的外部存储器,也可以与一些支持串行总线的器件互联。
XPI 支持的外部存储器包括串行 NOR Flash,串行 NAND Flash,串行 PSRAM 等,也支持 HyperBus 器件,
如 HyperRAM,HyperFlash。
XPI0 连接外部 NOR Flash 时,支持代码在线执行 XIP。并可以通过在线解密模块 EXIP 实现代码和数据的
在线解密,即数据和代码可以以密文的形式存放在外部 NOR Flash 中。
25.4
多功能外部存储器控制器 FEMC
多功能外部存储器控制器 FEMC 支持:
● DRAM 控制器
– 支持 SDRAM 和支持 LPSDR SDRAM
– 支持 8 位,16 位和 32 位数据宽度
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
366/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
存储器概述
– 支持最高 166MHz 时钟
● SRAM 控制器
– 支持连接外部 SRAM 存储器或者访问接口兼容 SRAM 的外部器件
– 支持异步访问
– 支持数据地址复用模式 (ADMUX) 或者非复用模式 (Non-ADMUX)
– 支持 8 位或 16 位数据端口
25.5
SDXC 控制器
本产品支持 1 个 SDXC 控制器,特性如下:
● 支持 SD/SDHC/SDXC
– 支持 4 位数据位宽
– 支持 DS,HS,SDR12,SDR25,SDR50,SDR104
– 支持 SDIO 读等待
– 支持 1-bit 和 4-bit 模式下 SDIO 卡中断
– 卡中断唤醒
25.6
只读存储器 ROM
本产品支持 128KB 内部只读存储器 ROM。
ROM 存放本产品的启动代码,Flashloader 和部分外设驱动程序。
25.7
一次性可编程存储器 OTP
本产品支持 4096 bit 熔丝作为片上一次性可编程存储器 OTP。
OTP 用于存储以下信息:
● 产品的独特序列号 Unique ID
● 产品的启动配置信息
● 产品的安全配置信息
● 一部分安全密钥。
● 产品出厂时存放的片上模拟模块校正数据
● 供用户使用的通用数据
一次性可编程存储器 OTP 的管理由 OTP 控制器实现。用户可以通过 OTP 控制器实现对 OTP 的读和烧写操
作。此外,OTP 控制器还负责实现 OTP 的读保护和写保护。
本产品上,用户在烧写 OTP 熔丝阵列时,需要打开 LDOOTP,在烧写完成后,必须关闭 LDOOTP。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
367/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
OTP 和 OTP 控制器
26
本章节介绍片上一次性可编程存储器 OTP 和 OTP 控制器的主要功能和特点。
特性总结
26.1
片上一次性可编程存储器 OTP 的特性如下:
● OTP 基于熔丝阵列实现,熔丝阵列内的每个位可以烧写一次,烧写之后不可更改
● OTP 熔丝阵列包含 128 个字 (word),每个字包含 32 位 (bit) 熔丝,容量共 4096 位
● OTP 字按功能和特性分为以下不同类型:
– 识别(IDENTITY)
:芯片的出厂信息,UUID 等信息归为识别类型,此类信息由原厂烧写,安全
启动的公钥 HASH 也归为识别类型,可由客户烧写
– 安全(SECURE):芯片的生命周期,OTP 硬件锁定位等 OTP 字归为安全类型
– 密钥(SECRET)
:各类密钥,如 Debug Key,EXIP 的 KEK,密钥管理器的 FMK 等归为密钥
类型
– 通用(GENERAL)
:用户可自由烧录通用数据,归为通用类型。保留给 BOOT ROM 使用的控
制 OTP 字,也归为通用类型
● 支持 32 位 OTP 硬件锁定位,每个锁定位对应 4 个 OTP 字,结合 OTP 控制器的影子锁定位和熔丝锁定
位,实现 OTP 读和烧写保护
26.1.1
OTP 控制器特性总结
本产品的一次性可编程存储器 OTP 管理由 OTP 控制器实现。用户可以通过 OTP 控制器实现对 OTP 的读和
烧写操作。此外,OTP 控制器还负责实现 OTP 的读保护和写保护。
OTP 控制器在系统地址映射上分为 2 部分:
● 本体部分(内存映射表上命名为 OTP)
● 影子部分(内存映射表上命名为 OTPSHW)
OTP 控制器的特性,以及本体部分(OTP)和影子部分(OTPSHW)的不同配置如下:
● 支持 128 个影子寄存器,对应 OTP 的 128 个字
– 本体部分(OTP)包含影子寄存器 0∼15,对应 OTP 字 0∼15
– 影子部分(OTPSHW)包含影子寄存器 16∼127,对应 OTP 字 16∼127
● 影子锁定寄存器,OTP 每个字对应 2 位锁定位,影子锁定寄存器可配置影子寄存器的读写保护
– 本体部分(OTP)包含影子锁定寄存器 0,对应 OTP 字 0∼15
– 影子部分(OTPSHW)包含影子锁定寄存器 1∼7,对应 OTP 字 16∼127
● 支持 128 个熔丝寄存器,对应 OTP 的 128 个字,熔丝寄存器是 OTP 的直接读写接口
– 本体部分(OTP)包含熔丝寄存器 0∼127,对应 OTP 字 0∼127
– 影子部分(OTPSHW)不支持熔丝寄存器
● 熔丝锁定寄存器,OTP 每个字对应 2 个锁定位,熔丝锁定寄存器可配置熔丝阵列的读写保护
– 本体部分(OTP)包含熔丝锁定寄存器 0∼7,对应 OTP 字 0∼127
– 影子部分(OTPSHW)不支持熔丝锁定寄存器
● 支持 OTP 操作引擎,支持读,写 OTP,及 OTP 影子寄存器重载,支持生成中断
– 本体部分(OTP)的操作引擎支持 OTP 字 0∼127
– 影子部分(OTPSHW)不支持操作引擎
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
368/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
OTP 控制器功能描述
26.2
26.2.1
OTP 影子寄存器
OTP 控制器包含 128 个影子寄存器,每个影子寄存器对应 OTP 的一个字(Word)
。OTP 控制器会在芯片从
复位中释放的时候,把 OTP 的熔丝阵列的全部数据载入影子寄存器。
用户也可以通过 OTP 操作引擎,手动重载特定的 OTP 字到对应的影子寄存器,细节请查阅节 26.4。
如果某个影子寄存器没有配置读,写保护的话,用户可以任意读取并修改影子寄存器的值。注意,一些保存
在 OTP 中的系统配置相关控制位,实际上是载入影子寄存器后生效的。因此,修改 OTP 影子寄存器可以在不烧
录 OTP 的情况下,直接修改对应配置。比如,把 OTP 影子寄存器的 DEBUG_DISABLE 位置 1,可以立即关闭
调试端口。
OTP 影子寄存器包含一套影子锁定寄存器。锁定寄存器用来配置影子寄存器的读保护,写保护以及是否允许
影子寄存器从 OTP 的熔丝阵列重载对应字的值。
每个 OTP 影子寄存器(32 位)对应 2 位锁定控制位。锁定位 LOCK 位域定义如下:
● 2’b00,不锁定,不限制用户读写影子寄存器
● 2’b01,单重锁定,用户可以读影子寄存器,但不允许写影子寄存器,并且不允许再修改锁定位 LOCK 本
身
● 2’b10,不锁定,不限制用户读写影子寄存器,并且不允许再修改锁定位 LOCK 本身
● 2’b11,双重锁定,用户即不允许读也不允许写影子寄存器,并且不允许再修改锁定位 LOCK 本身
对于 OTP 的不同类型字对应的影子寄存器,实际的读保护,写,重载保护效果,同时受影子锁定寄存器和
OTP 硬件锁定位影响。具体效果,请查阅节 26.5。
26.3
OTP 熔丝寄存器
OTP 控制器包含 128 个熔丝寄存器,每个熔丝寄存器对应 OTP 的一个字(Word)。熔丝寄存器实质上是
OTP 熔丝阵列的读写接口。对熔丝寄存器读操作,可以绕过 OTP 影子寄存器直接读取到 OTP 熔丝阵列对应字的
值。
为了防止用户误操作,熔丝寄存器包含一个解锁寄存器 UNLOCK,对解锁寄存器写入 0x4F50454E(对应
ASCII 字符串“OPEN”)
,可以解锁熔丝寄存器的写保护。解锁以后,对熔丝寄存器写操作,可以直接启动对 OTP
对应字的烧录。如果用户对解锁寄存器写入 0x4F50454E 以外的任意值,会直接激活熔丝寄存器的写保护。
OTP 熔丝寄存器包含一套熔丝锁定寄存器。锁定寄存器可以配置熔丝阵列对应字的读保护和烧写保护。
每个 OTP 字(32 位)对应 2 位锁定控制位。锁定位 LOCK 位域定义如下:
● 2’b00,不锁定,不限制用户读写熔丝寄存器
● 2’b01,单重锁定,用户可以读熔丝,但不允许烧写熔丝,并且不允许再修改锁定位 LOCK 本身
● 2’b10,不锁定,不限制用户读写熔丝寄存器,并且不允许再修改锁定位 LOCK 本身
● 2’b11,双重锁定,用户即不允许读也不允许烧写熔丝,并且不允许再修改锁定位 LOCK 本身
对于 OTP 熔丝阵列内的不同类型的字,实际的读保护,烧写保护效果,同时受熔丝锁定寄存器和 OTP 硬件
锁定位影响。具体效果,请查阅节 26.5。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
369/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
26.4
OTP 和 OTP 控制器
OTP 操作引擎
OTP 控制器支持通过读写熔丝寄存器,直接读写 OTP 的熔丝阵列。不过,如果处理器直接读写熔丝寄存器
的话,由于熔丝阵列本身的读写延时较长,可能会阻塞处理器工作。因此,OTP 控制器支持一套操作引擎,用户
可以通过操作引擎实现 OTP 熔丝阵列的读,烧写,还可以把 OTP 熔丝阵列重载入对应的影子寄存器。
通过操作引擎读取 OTP 步骤如下:
● 对 ADDR 寄存器写入目标字的子地址,即 0 代表 Word 0,1 代表 Word 1,以此类推。
● 对 CMD 寄存器写入 0x52454144(对应 ASCII 字符串“READ”)
● 等待 INT_FLAG[READ] 标志位置 1
● 从 DATA 寄存器读取目标字的值
通过操作引擎烧录 OTP 步骤如下:
● 对 ADDR 寄存器写入目标字的子地址,即 0 代表 Word 0,1 代表 Word 1,以此类推。
● 对 DATA 寄存器写入目标字的烧录值
● 对 CMD 寄存器写入 0x424C4F57(对应 ASCII 字符串“BLOW”
)
● 等待 INT_FLAG[WRITE] 标志位置 1
用户可以通过操作引擎重载 OTP 影子寄存器,操作引擎支持 4 个重载区域:
● REGION[LOAD_REGION0],重载 OTP Word 0 ∼ Word7 至 SHAWD0 ∼ SHADOW7
● REGION[LOAD_REGION1],重载 OTP Word 8 ∼ Word15 至 SHAWD7 ∼ SHADOW15
● REGION[LOAD_REGION2],重载 OTP Word 16 ∼ Word127 至 SHAWD16 ∼ SHADOW127
● REGION[LOAD_REGION3],用户自定义 OTP Word 的起始和结尾字地址
用户对 LOAD_REQ 寄存器的位 0∼3 置 1,即可启动 LOAD_REGION0∼3 的重载。
注意,在启动REGION[LOAD_REGION3]之前,用户需要配置REGION[LOAD_REGION3]寄存器的 START位
域和REGION[LOAD_REGION3]寄存器的 STOP位域,来指定一段连续的 OTP 字。START位域定义了需要重载
的第一个 OTP 字地址,STOP位域定义了重载的截止字地址,即重载 OTP Word (START) ∼ OTP Word (STOP
-1) 至 SHAWD (START) ∼ SHADOW(STOP -1)。
用户可以通过LOAD_COMP寄存器,查询重载进程,对应的重载区域重载完成时,标志位置 1。
注意,OTP 操作引擎对 OTP 的读,写和重载,会受到 OTP 硬件锁定位,影子寄存器锁定位和熔丝寄存器锁定位的限制。
如果对应的 OTP 字,或者 OTP 影子寄存器被读或写保护,那么 OTP 操作引擎的读,写,重载操作就不会成功。
26.5
OTP 读写保护
OTP 控制器支持对 OTP 内不同类型的字配置不同的读,写保护策略。OTP 熔丝阵列,熔丝寄存器,和影子
寄存器的实际读写保护效果,同时受到 OTP 硬件锁定位,影子寄存器锁定位和熔丝寄存器锁定位的影响。
OTP 熔丝阵列的字 0,即 32 位硬件锁定位 HARD_LOCK[31:0],烧写 HARD_LOCK 可以对 OTP 的指定区
域加以读或写保护。把 HARD_LOCK 中的若干位烧写为 1,就对对应的 OTP 区域加以硬件锁定。
注意,OTP 支持 32 位硬件锁定位 HARD_LOCK[31:0],每位对应 OTP 的 4 个字。OTP 熔丝寄存器和影子寄存器的锁定
位,每 2 位对应 OTP 的一个字或一个 32 位影子寄存器。
全部 OTP 数据按字可分为以下 4 个类型,不同类型的 OTP 字,设置对应的硬件锁定位后,读保护或写保护
的效果有所不同:
● 识别(IDENTITY)
● 安全(SECURE)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
370/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
● 密钥(SECRET)
● 通用(GENERAL)
用户可以查阅 OTP 映射表,了解 OTP 每个字的类型归属。
总结 OTP 的读写保护策略如下:
● 影子寄存器锁定位的效果
– 影子寄存器的锁定控制位设置为不锁定时,影子寄存器可以自由读写,或者重载 OTP 阵列的值
到影子寄存器
– 影子寄存器的锁定控制位设置为单重锁定时,影子寄存器被写保护,不允许重载 OTP 阵列的值
到影子寄存器
– 影子寄存器的锁定控制位设置为双重锁定时,影子寄存器被读保护和写保护,不允许重载 OTP
阵列的值到影子寄存器
● 熔丝寄存器锁定位的效果
– 熔丝寄存器的锁定控制位设置为不锁定时,熔丝寄存器可以自由读写
– 熔丝寄存器的锁定控制位设置为单重锁定时,熔丝阵列被写保护,即不允许通过写熔丝寄存器
或者 OTP 操作引擎烧写熔丝阵列
– 熔丝寄存器的锁定控制位设置为双重锁定时,熔丝阵列被读保护和写保护,即不允许通过熔丝
寄存器或者 OTP 操作引擎读取或者烧写熔丝阵列
● OTP 硬件锁定位的效果
– 识别类型的 OTP 字,当其对应的硬件锁定位为 1 时,只施加写保护,即允许通过熔丝寄存器或
者 OTP 操作引擎读取该 OTP 字,也允许读取该 OTP 字对应的影子寄存器。但是不允许通过
熔丝寄存器或者 OTP 操作引擎烧写该 OTP 字,也不允许写或者重载该 OTP 字对应的影子寄
存器。
– 安全类型的 OTP 字,当其对应的硬件锁定位为 1 时,只施加写保护,即允许通过熔丝寄存器或
者 OTP 操作引擎读取该 OTP 字,也允许读取该 OTP 字对应的影子寄存器。但是不允许通过
熔丝寄存器或者 OTP 操作引擎烧写该 OTP 字,也不允许写或者重载该 OTP 字对应的影子寄
存器。注意,安全类型 OTP 字中,对应产品生命周期的影子寄存器为例外,允许用户写该影子
寄存器,使当前生命周期前进(把产品生命周期的位由 0 置 1)
,但不允许生命周期回退(把产
品生命周期的位由 1 清 0)
– 密钥类型的 OTP 字,当其对应的硬件锁定位为 1 时,同时施加读保护和写保护,即不允许通
过熔丝寄存器或者 OTP 操作引擎读取该 OTP 字,也不允许读取该 OTP 字对应的影子寄存器。
也不允许通过熔丝寄存器或者 OTP 操作引擎烧写该 OTP 字,也不允许写或者重载该 OTP 字
对应的影子寄存器。
– 通用类型的 OTP 字,当其对应的硬件锁定位为 1 时,只对熔丝阵列施加写保护,即允许通过熔
丝寄存器或者 OTP 操作引擎读取该 OTP 字,也允许读取该 OTP 字对应的影子寄存器。不允
许通过熔丝寄存器或者 OTP 操作引擎烧写该 OTP 字,但是允许写或者重载该 OTP 字对应的
影子寄存器。
● 对于 OTP 阵列中某个字,如果硬件锁定位和熔丝锁定位配置的读保护或者烧写保护冲突,则保护总是生
效。同样的,对于某个 OTP 影子寄存器,如果硬件锁定位和影子锁定位配置的读保护或者写保护冲突,
则保护总是生效。
以下表格汇总了 OTP 不同类型字的读写保护效果:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
371/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
识别类型
OTP 和 OTP 控制器
硬件锁定
熔丝单重锁定
熔丝双重锁定
影子单重锁定
影子双重锁定
读熔丝
Y
Y
N
Y
Y
写熔丝
N
N
N
Y
Y
影子寄存器重载
Y
Y
Y
N
N
读影子寄存器
Y
Y
Y
Y
N
写影子寄存器
N
Y
Y
N
N
表 159: 识别类型 OTP 字读写保护总结
安全类型
硬件锁定
熔丝单重锁定
熔丝双重锁定
影子单重锁定
影子双重锁定
读熔丝
Y
Y
N
Y
Y
写熔丝
N
N
N
Y
Y
影子寄存器重载
Y
Y
Y
N
N
读影子寄存器
Y
Y
Y
Y
N
写影子寄存器
N
Y
Y
N
N
表 160: 安全类型 OTP 字读写保护总结
密钥类型
硬件锁定
熔丝单重锁定
熔丝双重锁定
影子单重锁定
影子双重锁定
读熔丝
N
Y
N
Y
Y
写熔丝
N
N
N
Y
Y
影子寄存器重载
Y
Y
Y
N
N
读影子寄存器
N
Y
Y
Y
N
写影子寄存器
N
Y
Y
N
N
表 161: 密钥类型 OTP 字读写保护总结
通用类型
硬件锁定
熔丝单重锁定
熔丝双重锁定
影子单重锁定
影子双重锁定
读熔丝
Y
Y
N
Y
Y
写熔丝
N
N
N
Y
Y
影子寄存器重载
Y
Y
Y
N
N
读影子寄存器
Y
Y
Y
Y
N
写影子寄存器
Y
Y
Y
N
N
表 162: 通用类型 OTP 字读写保护总结
26.6
OTP 控制器寄存器
OTP 的寄存器列表如下:
OTPSHW base address: 0xF4080000
OTP base address: 0xF40C8000
地址偏移
名称
描述
复位值
0x0000
SHADOW[SHADOW000]
熔丝加载寄存器
0x00000000
0x0004
SHADOW[SHADOW001]
熔丝加载寄存器
0x00000000
0x0008
SHADOW[SHADOW002]
熔丝加载寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
372/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x000C
SHADOW[SHADOW003]
熔丝加载寄存器
0x00000000
0x0010
SHADOW[SHADOW004]
熔丝加载寄存器
0x00000000
0x0014
SHADOW[SHADOW005]
熔丝加载寄存器
0x00000000
0x0018
SHADOW[SHADOW006]
熔丝加载寄存器
0x00000000
0x001C
SHADOW[SHADOW007]
熔丝加载寄存器
0x00000000
0x0020
SHADOW[SHADOW008]
熔丝加载寄存器
0x00000000
0x0024
SHADOW[SHADOW009]
熔丝加载寄存器
0x00000000
0x0028
SHADOW[SHADOW010]
熔丝加载寄存器
0x00000000
0x002C
SHADOW[SHADOW011]
熔丝加载寄存器
0x00000000
0x0030
SHADOW[SHADOW012]
熔丝加载寄存器
0x00000000
0x0034
SHADOW[SHADOW013]
熔丝加载寄存器
0x00000000
0x0038
SHADOW[SHADOW014]
熔丝加载寄存器
0x00000000
0x003C
SHADOW[SHADOW015]
熔丝加载寄存器
0x00000000
0x0040
SHADOW[SHADOW016]
熔丝加载寄存器
0x00000000
0x0044
SHADOW[SHADOW017]
熔丝加载寄存器
0x00000000
0x0048
SHADOW[SHADOW018]
熔丝加载寄存器
0x00000000
0x004C
SHADOW[SHADOW019]
熔丝加载寄存器
0x00000000
0x0050
SHADOW[SHADOW020]
熔丝加载寄存器
0x00000000
0x0054
SHADOW[SHADOW021]
熔丝加载寄存器
0x00000000
0x0058
SHADOW[SHADOW022]
熔丝加载寄存器
0x00000000
0x005C
SHADOW[SHADOW023]
熔丝加载寄存器
0x00000000
0x0060
SHADOW[SHADOW024]
熔丝加载寄存器
0x00000000
0x0064
SHADOW[SHADOW025]
熔丝加载寄存器
0x00000000
0x0068
SHADOW[SHADOW026]
熔丝加载寄存器
0x00000000
0x006C
SHADOW[SHADOW027]
熔丝加载寄存器
0x00000000
0x0070
SHADOW[SHADOW028]
熔丝加载寄存器
0x00000000
0x0074
SHADOW[SHADOW029]
熔丝加载寄存器
0x00000000
0x0078
SHADOW[SHADOW030]
熔丝加载寄存器
0x00000000
0x007C
SHADOW[SHADOW031]
熔丝加载寄存器
0x00000000
0x0080
SHADOW[SHADOW032]
熔丝加载寄存器
0x00000000
0x0084
SHADOW[SHADOW033]
熔丝加载寄存器
0x00000000
0x0088
SHADOW[SHADOW034]
熔丝加载寄存器
0x00000000
0x008C
SHADOW[SHADOW035]
熔丝加载寄存器
0x00000000
0x0090
SHADOW[SHADOW036]
熔丝加载寄存器
0x00000000
0x0094
SHADOW[SHADOW037]
熔丝加载寄存器
0x00000000
0x0098
SHADOW[SHADOW038]
熔丝加载寄存器
0x00000000
0x009C
SHADOW[SHADOW039]
熔丝加载寄存器
0x00000000
0x00A0
SHADOW[SHADOW040]
熔丝加载寄存器
0x00000000
0x00A4
SHADOW[SHADOW041]
熔丝加载寄存器
0x00000000
0x00A8
SHADOW[SHADOW042]
熔丝加载寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
373/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x00AC
SHADOW[SHADOW043]
熔丝加载寄存器
0x00000000
0x00B0
SHADOW[SHADOW044]
熔丝加载寄存器
0x00000000
0x00B4
SHADOW[SHADOW045]
熔丝加载寄存器
0x00000000
0x00B8
SHADOW[SHADOW046]
熔丝加载寄存器
0x00000000
0x00BC
SHADOW[SHADOW047]
熔丝加载寄存器
0x00000000
0x00C0
SHADOW[SHADOW048]
熔丝加载寄存器
0x00000000
0x00C4
SHADOW[SHADOW049]
熔丝加载寄存器
0x00000000
0x00C8
SHADOW[SHADOW050]
熔丝加载寄存器
0x00000000
0x00CC
SHADOW[SHADOW051]
熔丝加载寄存器
0x00000000
0x00D0
SHADOW[SHADOW052]
熔丝加载寄存器
0x00000000
0x00D4
SHADOW[SHADOW053]
熔丝加载寄存器
0x00000000
0x00D8
SHADOW[SHADOW054]
熔丝加载寄存器
0x00000000
0x00DC
SHADOW[SHADOW055]
熔丝加载寄存器
0x00000000
0x00E0
SHADOW[SHADOW056]
熔丝加载寄存器
0x00000000
0x00E4
SHADOW[SHADOW057]
熔丝加载寄存器
0x00000000
0x00E8
SHADOW[SHADOW058]
熔丝加载寄存器
0x00000000
0x00EC
SHADOW[SHADOW059]
熔丝加载寄存器
0x00000000
0x00F0
SHADOW[SHADOW060]
熔丝加载寄存器
0x00000000
0x00F4
SHADOW[SHADOW061]
熔丝加载寄存器
0x00000000
0x00F8
SHADOW[SHADOW062]
熔丝加载寄存器
0x00000000
0x00FC
SHADOW[SHADOW063]
熔丝加载寄存器
0x00000000
0x0100
SHADOW[SHADOW064]
熔丝加载寄存器
0x00000000
0x0104
SHADOW[SHADOW065]
熔丝加载寄存器
0x00000000
0x0108
SHADOW[SHADOW066]
熔丝加载寄存器
0x00000000
0x010C
SHADOW[SHADOW067]
熔丝加载寄存器
0x00000000
0x0110
SHADOW[SHADOW068]
熔丝加载寄存器
0x00000000
0x0114
SHADOW[SHADOW069]
熔丝加载寄存器
0x00000000
0x0118
SHADOW[SHADOW070]
熔丝加载寄存器
0x00000000
0x011C
SHADOW[SHADOW071]
熔丝加载寄存器
0x00000000
0x0120
SHADOW[SHADOW072]
熔丝加载寄存器
0x00000000
0x0124
SHADOW[SHADOW073]
熔丝加载寄存器
0x00000000
0x0128
SHADOW[SHADOW074]
熔丝加载寄存器
0x00000000
0x012C
SHADOW[SHADOW075]
熔丝加载寄存器
0x00000000
0x0130
SHADOW[SHADOW076]
熔丝加载寄存器
0x00000000
0x0134
SHADOW[SHADOW077]
熔丝加载寄存器
0x00000000
0x0138
SHADOW[SHADOW078]
熔丝加载寄存器
0x00000000
0x013C
SHADOW[SHADOW079]
熔丝加载寄存器
0x00000000
0x0140
SHADOW[SHADOW080]
熔丝加载寄存器
0x00000000
0x0144
SHADOW[SHADOW081]
熔丝加载寄存器
0x00000000
0x0148
SHADOW[SHADOW082]
熔丝加载寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
374/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x014C
SHADOW[SHADOW083]
熔丝加载寄存器
0x00000000
0x0150
SHADOW[SHADOW084]
熔丝加载寄存器
0x00000000
0x0154
SHADOW[SHADOW085]
熔丝加载寄存器
0x00000000
0x0158
SHADOW[SHADOW086]
熔丝加载寄存器
0x00000000
0x015C
SHADOW[SHADOW087]
熔丝加载寄存器
0x00000000
0x0160
SHADOW[SHADOW088]
熔丝加载寄存器
0x00000000
0x0164
SHADOW[SHADOW089]
熔丝加载寄存器
0x00000000
0x0168
SHADOW[SHADOW090]
熔丝加载寄存器
0x00000000
0x016C
SHADOW[SHADOW091]
熔丝加载寄存器
0x00000000
0x0170
SHADOW[SHADOW092]
熔丝加载寄存器
0x00000000
0x0174
SHADOW[SHADOW093]
熔丝加载寄存器
0x00000000
0x0178
SHADOW[SHADOW094]
熔丝加载寄存器
0x00000000
0x017C
SHADOW[SHADOW095]
熔丝加载寄存器
0x00000000
0x0180
SHADOW[SHADOW096]
熔丝加载寄存器
0x00000000
0x0184
SHADOW[SHADOW097]
熔丝加载寄存器
0x00000000
0x0188
SHADOW[SHADOW098]
熔丝加载寄存器
0x00000000
0x018C
SHADOW[SHADOW099]
熔丝加载寄存器
0x00000000
0x0190
SHADOW[SHADOW100]
熔丝加载寄存器
0x00000000
0x0194
SHADOW[SHADOW101]
熔丝加载寄存器
0x00000000
0x0198
SHADOW[SHADOW102]
熔丝加载寄存器
0x00000000
0x019C
SHADOW[SHADOW103]
熔丝加载寄存器
0x00000000
0x01A0
SHADOW[SHADOW104]
熔丝加载寄存器
0x00000000
0x01A4
SHADOW[SHADOW105]
熔丝加载寄存器
0x00000000
0x01A8
SHADOW[SHADOW106]
熔丝加载寄存器
0x00000000
0x01AC
SHADOW[SHADOW107]
熔丝加载寄存器
0x00000000
0x01B0
SHADOW[SHADOW108]
熔丝加载寄存器
0x00000000
0x01B4
SHADOW[SHADOW109]
熔丝加载寄存器
0x00000000
0x01B8
SHADOW[SHADOW110]
熔丝加载寄存器
0x00000000
0x01BC
SHADOW[SHADOW111]
熔丝加载寄存器
0x00000000
0x01C0
SHADOW[SHADOW112]
熔丝加载寄存器
0x00000000
0x01C4
SHADOW[SHADOW113]
熔丝加载寄存器
0x00000000
0x01C8
SHADOW[SHADOW114]
熔丝加载寄存器
0x00000000
0x01CC
SHADOW[SHADOW115]
熔丝加载寄存器
0x00000000
0x01D0
SHADOW[SHADOW116]
熔丝加载寄存器
0x00000000
0x01D4
SHADOW[SHADOW117]
熔丝加载寄存器
0x00000000
0x01D8
SHADOW[SHADOW118]
熔丝加载寄存器
0x00000000
0x01DC
SHADOW[SHADOW119]
熔丝加载寄存器
0x00000000
0x01E0
SHADOW[SHADOW120]
熔丝加载寄存器
0x00000000
0x01E4
SHADOW[SHADOW121]
熔丝加载寄存器
0x00000000
0x01E8
SHADOW[SHADOW122]
熔丝加载寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
375/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x01EC
SHADOW[SHADOW123]
熔丝加载寄存器
0x00000000
0x01F0
SHADOW[SHADOW124]
熔丝加载寄存器
0x00000000
0x01F4
SHADOW[SHADOW125]
熔丝加载寄存器
0x00000000
0x01F8
SHADOW[SHADOW126]
熔丝加载寄存器
0x00000000
0x01FC
SHADOW[SHADOW127]
熔丝加载寄存器
0x00000000
0x0200
SHADOW_LOCK[LOCK00]
加载寄存器锁定
0x00000000
0x0204
SHADOW_LOCK[LOCK01]
加载寄存器锁定
0x00000000
0x0208
SHADOW_LOCK[LOCK02]
加载寄存器锁定
0x00000000
0x020C
SHADOW_LOCK[LOCK03]
加载寄存器锁定
0x00000000
0x0210
SHADOW_LOCK[LOCK04]
加载寄存器锁定
0x00000000
0x0214
SHADOW_LOCK[LOCK05]
加载寄存器锁定
0x00000000
0x0218
SHADOW_LOCK[LOCK06]
加载寄存器锁定
0x00000000
0x021C
SHADOW_LOCK[LOCK07]
加载寄存器锁定
0x00000000
0x0400
FUSE[FUSE000]
熔丝
0x00000000
0x0404
FUSE[FUSE001]
熔丝
0x00000000
0x0408
FUSE[FUSE002]
熔丝
0x00000000
0x040C
FUSE[FUSE003]
熔丝
0x00000000
0x0410
FUSE[FUSE004]
熔丝
0x00000000
0x0414
FUSE[FUSE005]
熔丝
0x00000000
0x0418
FUSE[FUSE006]
熔丝
0x00000000
0x041C
FUSE[FUSE007]
熔丝
0x00000000
0x0420
FUSE[FUSE008]
熔丝
0x00000000
0x0424
FUSE[FUSE009]
熔丝
0x00000000
0x0428
FUSE[FUSE010]
熔丝
0x00000000
0x042C
FUSE[FUSE011]
熔丝
0x00000000
0x0430
FUSE[FUSE012]
熔丝
0x00000000
0x0434
FUSE[FUSE013]
熔丝
0x00000000
0x0438
FUSE[FUSE014]
熔丝
0x00000000
0x043C
FUSE[FUSE015]
熔丝
0x00000000
0x0440
FUSE[FUSE016]
熔丝
0x00000000
0x0444
FUSE[FUSE017]
熔丝
0x00000000
0x0448
FUSE[FUSE018]
熔丝
0x00000000
0x044C
FUSE[FUSE019]
熔丝
0x00000000
0x0450
FUSE[FUSE020]
熔丝
0x00000000
0x0454
FUSE[FUSE021]
熔丝
0x00000000
0x0458
FUSE[FUSE022]
熔丝
0x00000000
0x045C
FUSE[FUSE023]
熔丝
0x00000000
0x0460
FUSE[FUSE024]
熔丝
0x00000000
0x0464
FUSE[FUSE025]
熔丝
0x00000000
0x0468
FUSE[FUSE026]
熔丝
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
376/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x046C
FUSE[FUSE027]
熔丝
0x00000000
0x0470
FUSE[FUSE028]
熔丝
0x00000000
0x0474
FUSE[FUSE029]
熔丝
0x00000000
0x0478
FUSE[FUSE030]
熔丝
0x00000000
0x047C
FUSE[FUSE031]
熔丝
0x00000000
0x0480
FUSE[FUSE032]
熔丝
0x00000000
0x0484
FUSE[FUSE033]
熔丝
0x00000000
0x0488
FUSE[FUSE034]
熔丝
0x00000000
0x048C
FUSE[FUSE035]
熔丝
0x00000000
0x0490
FUSE[FUSE036]
熔丝
0x00000000
0x0494
FUSE[FUSE037]
熔丝
0x00000000
0x0498
FUSE[FUSE038]
熔丝
0x00000000
0x049C
FUSE[FUSE039]
熔丝
0x00000000
0x04A0
FUSE[FUSE040]
熔丝
0x00000000
0x04A4
FUSE[FUSE041]
熔丝
0x00000000
0x04A8
FUSE[FUSE042]
熔丝
0x00000000
0x04AC
FUSE[FUSE043]
熔丝
0x00000000
0x04B0
FUSE[FUSE044]
熔丝
0x00000000
0x04B4
FUSE[FUSE045]
熔丝
0x00000000
0x04B8
FUSE[FUSE046]
熔丝
0x00000000
0x04BC
FUSE[FUSE047]
熔丝
0x00000000
0x04C0
FUSE[FUSE048]
熔丝
0x00000000
0x04C4
FUSE[FUSE049]
熔丝
0x00000000
0x04C8
FUSE[FUSE050]
熔丝
0x00000000
0x04CC
FUSE[FUSE051]
熔丝
0x00000000
0x04D0
FUSE[FUSE052]
熔丝
0x00000000
0x04D4
FUSE[FUSE053]
熔丝
0x00000000
0x04D8
FUSE[FUSE054]
熔丝
0x00000000
0x04DC
FUSE[FUSE055]
熔丝
0x00000000
0x04E0
FUSE[FUSE056]
熔丝
0x00000000
0x04E4
FUSE[FUSE057]
熔丝
0x00000000
0x04E8
FUSE[FUSE058]
熔丝
0x00000000
0x04EC
FUSE[FUSE059]
熔丝
0x00000000
0x04F0
FUSE[FUSE060]
熔丝
0x00000000
0x04F4
FUSE[FUSE061]
熔丝
0x00000000
0x04F8
FUSE[FUSE062]
熔丝
0x00000000
0x04FC
FUSE[FUSE063]
熔丝
0x00000000
0x0500
FUSE[FUSE064]
熔丝
0x00000000
0x0504
FUSE[FUSE065]
熔丝
0x00000000
0x0508
FUSE[FUSE066]
熔丝
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
377/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x050C
FUSE[FUSE067]
熔丝
0x00000000
0x0510
FUSE[FUSE068]
熔丝
0x00000000
0x0514
FUSE[FUSE069]
熔丝
0x00000000
0x0518
FUSE[FUSE070]
熔丝
0x00000000
0x051C
FUSE[FUSE071]
熔丝
0x00000000
0x0520
FUSE[FUSE072]
熔丝
0x00000000
0x0524
FUSE[FUSE073]
熔丝
0x00000000
0x0528
FUSE[FUSE074]
熔丝
0x00000000
0x052C
FUSE[FUSE075]
熔丝
0x00000000
0x0530
FUSE[FUSE076]
熔丝
0x00000000
0x0534
FUSE[FUSE077]
熔丝
0x00000000
0x0538
FUSE[FUSE078]
熔丝
0x00000000
0x053C
FUSE[FUSE079]
熔丝
0x00000000
0x0540
FUSE[FUSE080]
熔丝
0x00000000
0x0544
FUSE[FUSE081]
熔丝
0x00000000
0x0548
FUSE[FUSE082]
熔丝
0x00000000
0x054C
FUSE[FUSE083]
熔丝
0x00000000
0x0550
FUSE[FUSE084]
熔丝
0x00000000
0x0554
FUSE[FUSE085]
熔丝
0x00000000
0x0558
FUSE[FUSE086]
熔丝
0x00000000
0x055C
FUSE[FUSE087]
熔丝
0x00000000
0x0560
FUSE[FUSE088]
熔丝
0x00000000
0x0564
FUSE[FUSE089]
熔丝
0x00000000
0x0568
FUSE[FUSE090]
熔丝
0x00000000
0x056C
FUSE[FUSE091]
熔丝
0x00000000
0x0570
FUSE[FUSE092]
熔丝
0x00000000
0x0574
FUSE[FUSE093]
熔丝
0x00000000
0x0578
FUSE[FUSE094]
熔丝
0x00000000
0x057C
FUSE[FUSE095]
熔丝
0x00000000
0x0580
FUSE[FUSE096]
熔丝
0x00000000
0x0584
FUSE[FUSE097]
熔丝
0x00000000
0x0588
FUSE[FUSE098]
熔丝
0x00000000
0x058C
FUSE[FUSE099]
熔丝
0x00000000
0x0590
FUSE[FUSE100]
熔丝
0x00000000
0x0594
FUSE[FUSE101]
熔丝
0x00000000
0x0598
FUSE[FUSE102]
熔丝
0x00000000
0x059C
FUSE[FUSE103]
熔丝
0x00000000
0x05A0
FUSE[FUSE104]
熔丝
0x00000000
0x05A4
FUSE[FUSE105]
熔丝
0x00000000
0x05A8
FUSE[FUSE106]
熔丝
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
378/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x05AC
FUSE[FUSE107]
熔丝
0x00000000
0x05B0
FUSE[FUSE108]
熔丝
0x00000000
0x05B4
FUSE[FUSE109]
熔丝
0x00000000
0x05B8
FUSE[FUSE110]
熔丝
0x00000000
0x05BC
FUSE[FUSE111]
熔丝
0x00000000
0x05C0
FUSE[FUSE112]
熔丝
0x00000000
0x05C4
FUSE[FUSE113]
熔丝
0x00000000
0x05C8
FUSE[FUSE114]
熔丝
0x00000000
0x05CC
FUSE[FUSE115]
熔丝
0x00000000
0x05D0
FUSE[FUSE116]
熔丝
0x00000000
0x05D4
FUSE[FUSE117]
熔丝
0x00000000
0x05D8
FUSE[FUSE118]
熔丝
0x00000000
0x05DC
FUSE[FUSE119]
熔丝
0x00000000
0x05E0
FUSE[FUSE120]
熔丝
0x00000000
0x05E4
FUSE[FUSE121]
熔丝
0x00000000
0x05E8
FUSE[FUSE122]
熔丝
0x00000000
0x05EC
FUSE[FUSE123]
熔丝
0x00000000
0x05F0
FUSE[FUSE124]
熔丝
0x00000000
0x05F4
FUSE[FUSE125]
熔丝
0x00000000
0x05F8
FUSE[FUSE126]
熔丝
0x00000000
0x05FC
FUSE[FUSE127]
熔丝
0x00000000
0x0600
FUSE_LOCK[LOCK00]
Fuse lock
0x00000000
0x0604
FUSE_LOCK[LOCK01]
Fuse lock
0x00000000
0x0608
FUSE_LOCK[LOCK02]
Fuse lock
0x00000000
0x060C
FUSE_LOCK[LOCK03]
Fuse lock
0x00000000
0x0610
FUSE_LOCK[LOCK04]
Fuse lock
0x00000000
0x0614
FUSE_LOCK[LOCK05]
Fuse lock
0x00000000
0x0618
FUSE_LOCK[LOCK06]
Fuse lock
0x00000000
0x061C
FUSE_LOCK[LOCK07]
Fuse lock
0x00000000
0x0800
UNLOCK
UNLOCK
0x00000000
0x0804
DATA
DATA
0x00000000
0x0808
ADDR
ADDR
0x00000000
0x080C
CMD
CMD
0x00000000
0x0A00
LOAD_REQ
LOAD Request
0x00000007
0x0A04
LOAD_COMP
LOAD complete
0x00000007
0x0A20
REGION[LOAD_REGION0]
LOAD region
0x00000800
0x0A24
REGION[LOAD_REGION1]
LOAD region
0x00001008
0x0A28
REGION[LOAD_REGION2]
LOAD region
0x00000010
0x0A2C
REGION[LOAD_REGION3]
LOAD region
0x00000000
0x0C00
INT_FLAG
interrupt flag
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
379/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
OTP 和 OTP 控制器
地址偏移
名称
描述
复位值
0x0C04
INT_EN
interrupt enable
0x00000000
表 163: OTP 寄存器列表
OTP 控制器寄存器详细信息
26.7
OTP 的寄存器详细说明如下:
26.7.1
SHADOW (0x0 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SHADOW
31
0
SHADOW [31:0]
位域
名称
描述
31-0
SHADOW
熔丝加载寄存器
电源域 0-15 有效,数字域 16-128 有效
SHADOW 位域
26.7.2
SHADOW_LOCK (0x200 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
LOCK
31
0
SHADOW_LOCK [31:0]
位域
名称
描述
加载寄存器锁定,每两位控制一个 32 位字,只有该字段为 0 的时
候可以写入,不同类型的熔丝的锁定行为具有差异
31-0
LOCK
00: 未锁定
01: 锁定
10: 不锁定,禁止锁定
11: 双重锁定
SHADOW_LOCK 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
380/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
26.7.3
OTP 和 OTP 控制器
FUSE (0x400 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FUSE
31
0
FUSE [31:0]
位域
名称
描述
熔丝,仅电源域有效
31-0
写操作可读出熔丝值
FUSE
写操作写入熔丝 (写入前需并开启 2.5V 电源,并对熔丝解锁)
FUSE 位域
26.7.4
FUSE_LOCK (0x600 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
LOCK
31
0
FUSE_LOCK [31:0]
位域
名称
描述
熔丝锁定,每两位控制一个 32 位字,只有该字段为 0 的时候可以
写入,不同类型的熔丝的锁定行为具有差异
31-0
00: 未锁定
LOCK
01: 锁定
10: 不锁定,禁止锁定
11: 双重锁定
FUSE_LOCK 位域
26.7.5
UNLOCK (0x800)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
UNLOCK
31
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
381/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
OTP 和 OTP 控制器
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
UNLOCK [31:0]
位域
名称
描述
解锁熔丝写入功能
31-0
写入”OPEN” 可解锁,写入其他值将锁定熔丝
UNLOCK
写入熔丝前需打开 2.5V 电源,24M OSC
UNLOCK 位域
26.7.6
DATA (0x804)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
RW
DATA
31
0
DATA [31:0]
位域
名称
31-0
DATA
描述
非阻塞工作模式下的读写数据
DATA 位域
ADDR (0x808)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
x
RW
N/A
RSVD
31
ADDR
26.7.7
0
ADDR [31:0]
位域
名称
6-0
ADDR
描述
读写的 32 位字地址
ADDR 位域
26.7.8
CMD (0x80C)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
382/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
RW
CMD
31
OTP 和 OTP 控制器
0
CMD [31:0]
位域
名称
描述
熔丝命令
31-0
”BLOW” 将 DATA 寄存器写入位于 ADDR 的字
CMD
”READ” 将位于 ADDR 的字读出到 DATA 寄存器
CMD 位域
LOAD_REQ (0xA00)
30
29
28
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
0
1
1
1
1
0
1
1
RW
N/A
RSVD
31
REQUEST
26.7.9
x
LOAD_REQ [31:0]
位域
名称
描述
4 个区域的加载请求
bit0: 区域 0
3-0
bit1: 区域 1
REQUEST
bit2: 区域 2
bit3: 区域 3
LOAD_REQ 位域
LOAD_COMP (0xA04)
30
29
28
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
0
1
RW
N/A
RSVD
31
COMPLETE
26.7.10
x
LOAD_COMP [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
383/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
OTP 和 OTP 控制器
描述
4 个区域的加载完成标志,写 1 清零
bit0: 区域 0
3-0
bit1: 区域 1
COMPLETE
bit2: 区域 2
bit3: 区域 3
LOAD_COMP 位域
REGION (0xA20 + 0x4 * n)
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
x
x
x
x
x
x
x
x
0
0
0
10
9
8
0
0
0
RW
N/A
STOP
11
x
0
7
6
5
4
x
0
0
0
3
2
1
0
0
0
0
0
2
1
0
START
28
RW
29
RSVD
30
RSVD
31
N/A
26.7.11
REGION [31:0]
位域
名称
描述
14-8
STOP
加载区域的末尾地址,末尾地址不会被加载
6-0
START
加载区域的开始地址,开始地址会被加载
REGION 位域
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
LOAD
27
RW
28
READ
29
WRITE
30
RSVD
31
RW
INT_FLAG (0xC00)
RW
26.7.12
0
0
0
INT_FLAG [31:0]
位域
名称
描述
熔丝写入完成标志
2
WRITE
0: 未写入或写入未完成
1: 写入完成
熔丝读取完成标志
1
READ
0: 未读取或读取未完成
1: 读取完成
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
384/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
OTP 和 OTP 控制器
描述
熔丝加载完成标志
0
0: 未加载或未完成
LOAD
1: 加载完成
INT_FLAG 位域
INT_EN (0xC04)
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
2
名称
0
0
描述
熔丝写入完成中断使能
2
WRITE
0: 禁止
1: 使能
熔丝读取完成中断使能
1
READ
0: 禁止
1: 使能
熔丝加载完成中断使能
0
LOAD
0: 禁止
1: 使能
INT_EN 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
385/1016
0
0
INT_EN [31:0]
位域
1
LOAD
26
RW
27
READ
28
WRITE
29
RW
30
RSVD
31
RW
26.7.13
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行总线控制器 XPI
串行总线控制器 XPI
27
本章节介绍串行总线控制器 XPI 的主要特性和功能。
特性总结
27.1
串行总线控制器 XPI 支持连接各类外部存储器,也可以与一些支持串行总线的器件互联。
XPI 支持的外部存储器包括串行 NOR Flash,串行 NAND Flash,串行 PSRAM 等,也支持 HyperBus 器件,
如 HyperRAM。HyperFlash。
XPI 的特性如下:
● 支持 1/2/4/8 位数据模式;
● 两个端口 CA 和 CB,每个端口有 2 个 CS 片选,两个端口可连接四个数据位宽为 4 或者两个数据位宽
为 8 的外部器件;
● 支持 SDR 和 DDR 的数据传输模式;
● 支持总线直接寻址访问外部存储器件;
● 支持 Quad-SPI 和 Octal-SPI 的串行 NOR Flash;
● 支持串行 NAND Flash;
● 支持 HyperBus,HyperRAM 和 HyperFlash;
● 支持 Quad/Oct SPI PSRAM。
功能描述
27.2
本章节描述串行总线控制器 XPI 的功能。
27.2.1
外部器件连接配置
XPI 支持连接不同外部存储器,可配置成:外部端口独立模式,外部端口组合模式;简称独立模式和组合模
式。
XPI 配置为独立模式时,端口 CA 和端口 CB 分别,管脚如下:
● 端口 CA: CA_CS0, CA_CS1, CA_SCLK, CA_DQS, CA_D[3:0];
● 端口 CB: CB_CS0, CB_CS1, CB_SCLK, CB_DQS, CB_D[3:0];
独立模式时,可连接四个外部器件(比如 nor flash):
● 器件 1:CA_CS0,CA_SCLK,CA_DQS,CA_D[3:0];
● 器件 2:CA_CS1,CA_SCLK,CA_DQS,CA_D[3:0];
● 器件 3:CB_CS0,CB_SCLK,CB_DQS,CB_D[3:0];
● 器件 4:CB_CS1,CB_SCLK,CB_DQS,CB_D[3:0];
XPI 配置为组合模式时,可连接两个 8 位数数据位宽的存储器,如 Octal-SPI NOR Flash 或者 Octal-SPI
PSRAM。
● 器件 1:CA_CS0,CA_SCLK,CA_DQS,CA_D[3:0],CB_D[3:0];
● 器件 2:CB_CS0,CB_SCLK,CB_DQS,CA_D[3:0],CB_D[3:0];
XPI 支持的数据位宽:经典 SPI 模式,Dual-SPI 模式,Quad-SPI 模式和 Octal-SPI 模式。
● 经典 SPI 模式,D0 作为 MOSI(Master OUT Slave IN),D1 作为 MISO(Master IN Slave OUT);
● Dual-SPI 模式,D0 和 D1 用作 2 线双向数据信号;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
386/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行总线控制器 XPI
● Qual-SPI 模式,D0∼D3 用作 4 线双向数据信号;
● Octal-SPI 模式,端口 A 的 D0∼D3 和端口 B 的 D0∼D3 用作 8 线双向数据信号.
XPI 的数据传输模式,可以配置 SDR(Single Data Rate) 模式或 DDR(Double Data Rate) 模式;SDR 模式在
数据传输以时钟上升沿对准;DDR 模式,在时钟的上升沿和下降沿传输数据。传输时采样哪种数据传输模式,可
由 XPI 的 INSTGRP 里的访问指令决定。
27.2.2
XPI 地址映射
XPI 支持连接至多 4 个外部串行存储设备,不同存储设备按照地址区分。当访问地址落在某个存储设备地址
范围内时,会通过对应的片选信号,选中这个外部器件。用户通过各个外部器件的 CR0 寄存器 FLSHSZ 位配置
每个外部器件的地址范围,以字节 Byte 为单位。
● CA_CS0,地址范围为 0 ∼ DEVS IZE[0].S IZE_KB
● CA_CS1,地址范围为 DEVS IZE[0].S IZE_KB ∼ DEVS IZE[0].S IZE_KB + DEVS IZE[1].S IZE_KB
● CB_CS0,地址范围为 DEVS IZE[0].S IZE_KB + DEVS IZE0[1].S IZE_KB
∼ DEVS IZE[0].S IZE_KB + DEVS IZE[1].S IZE_KB + DEVS IZE[2].S IZE_KB
● CB_CS1,地址范围为 DEVS IZE[0].S IZE_KB + DEVS IZE[1].S IZE_KB + DEVS IZE[2].S IZE_KB
∼ DEVS IZE[0].S IZE_KB + DEVS IZE[1].S IZE_KB + DEVS IZE[2].S IZE_KB + DEVS IZE[3].S IZE_KB
27.2.3
外部器件地址转换
XPI 支持总线寻址范围,总线上的主设备可以直接通过 XPI 系统存储器映射的地址来访问 XPI 连接的外部器
件。此时,XPI 会在收到的系统地址上自动去掉 XPI 在系统存储器映射表上的基地址,仅以地址偏移来访问外部
器件。
XPI 支持把地址再分为行地址和列地址,把 DEVATTR[x].CAS 位置为非 0 值时,XPI 支持向外部器件分别发
送行地址和列地址。否则全部地址以行地址发送。
27.2.4
指令表
XPI 支持通过指令表配置向外部存储器发送指令,地址和数据的格式。XPI 支持 16 组指令表,每组指令表支
持最多 8 条指令,每条指令长 16 位。
指令可以配置 XPI 与外部器件通讯的一个特定阶段,如指令段,地址段,Dummy 段,数据读/写段等,若干
条指令组合构成一个完整的 XPI 读或者写操作。
16 位的指令格式如下:
● 位 [15],为 0 时,SDR 模式传输数据,为1时 DDR 模式传输数据;
● 位 [14],保留位;
● 位 [13:10],操作码 opcode ;
● 位 [9:8],数据位数 numpad ;
● 位 [7:0],操作数 oprand 。
指令表支持以下操作码 opcode:
● 4’h1,发送 CMD,发送的 CMD 值等于操作数 oprand;
● 4’h2,发送行地址 (row addr),操作数 oprand 代表地址长度,以位 (bit) 为单位;
● 4’h3,发送列地址 (col addr),操作数 oprand 代表地址长度,以位 (bit) 为单位;
● 4’h4,发送 1 位 MODE,MODE 等于操作数 oprand[0],数据位数只能为 1 位;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
387/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行总线控制器 XPI
● 4’h5,发送 2 位 MODE,MODE 等于操作数 oprand[1:0],数据位数不能超过 2 位;
● 4’h6,发送 4 位 MODE,MODE 等于操作数 oprand[3:0],数据位数不能超过 4 位;
● 4’h7,发送 8 位 MODE,MODE 等于操作数 oprand[7:0];
● 4’h8,写数据;
● 4’h9,读数据;
● 4’hC,发送 Dummy 周期,发送 Dummy 时,XPI 不驱动数据线。Dummy 周期数等于操作数 oprand;
● 4’hD,发送 Dummy RWDS,与 Dummy 类似,用于 HyperBus 器件。读操作时,如果 RWDS 高,Dummy
周期数为 (oprand × 4 − 1),否则为 (oprand × 2 − 1);写操作时,如果 RWDS 高,Dummy 周期数为
(oprand × 4 − 2),否则为 (oprand × 2 − 2) ;
● 4’h0,停止执行指令。
指令表支持以下数据位数 numpad,数据位数代表该指令用到的数据线路数目:
● 2’h0,1 线数据线传输数据;
● 2’h1,2 线数据线传输数据;
● 2’h2,4 位数据线传输数据;
● 2’h3,8 位数据线传输数据;
当 XPI 通过总线寻址访问时,按照 DEVMACR[x] 寄存器的配置,决定执行指令表中的哪段指令,完成相应
的读或者写操作。
当 XPI 通过寄存器指令访问时,按照 APBINSCR 寄存器的配置,执行指令表中指定的指令。
27.2.5
总线寻址访问
XPI 支持总线寻址访问。总线寻址访问是指,总线上的主设备,比如处理器,DMA 等,将 XPI 作为总线从设
备,按照内存映射表上分配给 XPI 的地址,对 XPI 连接的外部器件直接访问。XPI 在线执行代码即通过总线寻址
访问实现。
系统上总线主设备对 XPI 地址的任意读或者写访问,即对 XPI 发出总线寻址访问请求。XPI 在收到此类请求
时,会将请求转换为对外部器件的读或者写访问。转换通过执行指令表中的一条或者多条指令实现。
用户需要预先编辑指令表,通过指令实现对外部器件的读或者写操作。再配置 DEVMACR[x] 寄存器,WRINSGRPIND 位配置收到总线寻址访问写操作时,执行的指令索引。
27.2.6
寄存器指令访问
XPI 支持寄存器指令访问。用户可以编辑指令表,并通过配置 XPI 的寄存器来执行指令表中的任意指令。
用户编辑完成指令表后,通过 APBINSCR 寄存器 PINSGRPIND 位指定需要执行的指令在指令表中的索引。
之后对 APBCMD 寄存器的 TRG 位置 1,来触发指令的执行。
XPI 通过寄存器指令访问,操作外部器件时,读取到的数据存放到寄存器 RX 缓存中,软件可以通过 PRX 寄
存器直接读取缓存。对外部器件写操作时,要把待发送的数据预先写入寄存器 TX 缓存,软件可以通过 PTX 寄存
器直接写 TX 缓存。
XPI 寄存器指令访问外部器件时,目标地址存放在 APBDAR 寄存器的 DAR 位。
27.2.7
XPI 时间特性
XPI 支持调整 IO 输入输出的时间特性。
CSx 信号与 SCLK 间的信号建立时间和保持时间,可通过 DEVATTR[x] 寄存器的 TCSS 位和 TCSH 位调节。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
388/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行总线控制器 XPI
● SDR 模式下,建立时间为 TCS S + 0.5 个周期,保持时间为为 TCS H 个周期;
● DDR 模式下,建立时间为 TCS S + 0.5 个周期,保持时间为为 TCS H + 0.5 个周期。
XPI 支持配置 CSx 信号由有效翻转为无效到下一次再翻转为有效之间的间隔。用户可以配置 DEVATTR[x] 寄
存器,间隔为
CS INT V AL × 1 个时钟周期,CSINTVU = 1’b0;
CS INT V AL × 256 个时钟周期,CSINTVU = 1’b1。
XPI 支持设置数据的采样选项,可以通过 GCR0 寄存器的 RXCLKSRC 位配置
● 2’b00,发送时钟,内部回环;
● 2’b01,通过芯片的 DQS 引脚回环;
● 2’b10,保留待用;
● 2’b11,通过外部器件提供的 DQS 信号。
27.2.8
中断
XPI 支持生成以下中断请求:
● 寄存器指令访问触发的指令执行完毕;
● 寄存器指令访问触发的指令执行超时;
● 总线寻址访问触发的指令执行超时;
● 寄存器指令访问触发的指令执行错误;
● 总线寻址访问触发的指令执行错误;
● 寄存器指令访问的 RX 缓存内有效数据数目达到或超过警戒线;
● 寄存器指令访问的 TX 缓存内有效数据数目达到或低于警戒线;
● 总线超时。
27.3
XPI 配置和使用
建议用户通过调用本产品的 ROM API,对 XPI 进行初始化及配置。
本产品 ROM API 的详情,请查阅节 19.7。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
389/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
多功能外部存储控制器 FEMC
28
本章节介绍了多功能外部存储器控制器 FEMC (Flexible External Memory Controller) 的功能和特性。
特性总结
28.1
本章节介绍多功能外部存储器控制器 FEMC (Flexible External Memory Controller) 的主要特性:
● DRAM 控制器,支持连接外部 SDRAM
– 支持 8/16/32 位数据模式
– 可以使用高 16 位数据线访问 16 位 SDRAM(当低 16 位数据线的 IO 被其他功能占用时)
– 最大支持 166MHz 工作频率
– 支持通过 APB 总线往 SDRAM 发命令 (READ, WRITE, MODE_SET, AUTO_REFRESH 等)
– 32 位 AXI 总线,内部读写数据 buffer,最大 outstanding 支持 8 级读和 8 级写
– auto-refresh 时间, bank 数, CAS 延迟, column 地址位数, burst 长度可配
● SRAM 控制器,支持连接外部 SRAM 或者兼容 SRAM 访问接口的器件
– 支持异步访问
– 支持数据地址复用模式 (ADMUX) 或者非复用模式 (Non-ADMUX)
– 支持 8 位或 16 位数据端口
28.2
FEMC 工作机制
FEMC 包含 DRAM 控制器和 SRAM 控制器 2 套外部存储器控制模块。本章节介绍了这 2 套模块之间分工和
配合使用的机制。
28.2.1
FEMC 信号分配
下表列举了 FEMC 的 DRAM 控制器在连接外部 SDRAM 时,以及 SRAM 控制器在连接外部 SRAM 时,对
FEMC 各个信号引脚的使用情况。
FEMC 引脚名称
DRAM 信号
SRAM 信号
SRAM 信号 (ADMUX)
(Non-ADMUX)
FEMC_A_00
A_00
A0
A16
FEMC_A_01
A_01
A1
A17
FEMC_A_02
A_02
A2
A18
FEMC_A_03
A_03
A3
A19
FEMC_A_04
A_04
A4
A20
FEMC_A_05
A_05
A5
A21
FEMC_A_06
A_06
A6
A22
FEMC_A_07
A_07
A7
A23
FEMC_A_08
A_08
FEMC_A_09
A_09
FEMC_A_10
A_10
FEMC_A_11
A_11
NWE
NWE
FEMC_A_12
A_12
NOE
NOE
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
390/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
FEMC 引脚名称
DRAM 信号
多功能外部存储控制器 FEMC
SRAM 信号
SRAM 信号 (ADMUX)
(Non-ADMUX)
FEMC_BA0
BA0
FEMC_BA0
BA1
FEMC_CAS
CAS
FEMC_CKE
CKE
FEMC_CLK
CLK
FEMC_CS_0
CS_0
FEMC_CS_1
NADV
NADV
CS_1
NCE
NCE
FEMC_DM_0
DM_0
NLB
NLB
FEMC_DM_1
DM_1
NUB
NUB
FEMC_DQS
DQS
FEMC_DQ_00
DQ_00
D0
AD0
FEMC_DQ_01
DQ_01
D1
AD1
FEMC_DQ_02
DQ_02
D2
AD2
FEMC_DQ_03
DQ_03
D3
AD3
FEMC_DQ_04
DQ_04
D4
AD4
FEMC_DQ_05
DQ_05
D5
AD5
FEMC_DQ_06
DQ_06
D6
AD6
FEMC_DQ_07
DQ_07
D7
AD7
FEMC_DQ_08
DQ_08
D8
AD8
FEMC_DQ_09
DQ_09
D9
AD9
FEMC_DQ_10
DQ_10
D10
AD10
FEMC_DQ_11
DQ_11
D11
AD11
FEMC_DQ_12
DQ_12
D12
AD12
FEMC_DQ_13
DQ_13
D13
AD13
FEMC_DQ_14
DQ_14
D14
AD14
FEMC_DQ_15
DQ_15
D15
AD15
FEMC_RAS
RAS
FEMC_WE
WE
表 164: FEMC 信号映射表
FEMC_CS_0 和 FEMC_CS_1 作为片选信号,默认用作 DRAM 的片选信号。用户可以配置 IOCTRL 寄存器
IOCSX 位域,将 FEMC_CS_1 信号用作 SRAM 控制器的片选信号 SRAM_NCE。
28.2.2
FEMC 信号说明
FEMC 的 DRAM 控制器各信号说明如下:
DRAM 信号名称
描述
DQ_00∼DQ_15
数据输入和输出信号 0∼15。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
391/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
DRAM 信号名称
描述
A_00∼A_12
地址信号 0∼12,可作为行地址 (Row Address) 或列地址 (Column
Address)。
其中列地址信号宽度可配置为 9∼12 位.。
CS_0/CS_1
片选信号 0 和片选信号 1。
BA0/BA1
Bank 选择信号 (Bank Select)
DM_0∼DM_3
数据掩码 0 3 (Data Mask)。
CAS
列地址选通 (Column Address Strobe),CAS,RAS,WE 一起定义将对
SDRAM 执行的操作
RAS
行地址选通 (Row Address Strobe),CAS,RAS,WE 一起定义将对
SDRAM 执行的操作
写使能 (Write Enable),CAS,RAS,WE 一起定义将对 SDRAM 执行
WE
的操作
DQS
数据选通信号 (Data Strobe)
表 165: FEMC DRAM 控制器信号说明
FEMC 的 SRAM 控制器各信号说明如下:
SRAM 信号名称
描述
D0∼D15/AD0∼AD15
在数据和地址非复用 AD Non-MUX 模式下,为数据输入和输出信号
0∼15
在数据和地址复用 ADMUX 模式下,地址信号 0∼15 和数据信号 0∼15
共享信号 AD0∼AD15
A0∼A7/A16∼A23
在数据和地址非复用 AD Non-MUX 模式下,为地址信号 0∼7。
在数据和地址复用 ADMUX 模式下,为地址信号 16∼23。
NWE
写使能信号 (Write Enable),低电平有效
NOE
读使能信号 (Read Enable),低电平有效。
NCE
片选信号 (Chip Enable),低电平有效
NLB
低字节控制 (Lower-Byte Control) ,低电平有效
NUB
高字节控制 (Upper-Byte Control) ,低电平有效
NADV
在数据和地址复用 ADMUX 模式下,为地址/数据有效信号
(address/data valid),可以用来锁存地址
表 166: FEMC SRAM 控制器信号映射表
28.2.3
FEM 地址映射配置
用户可以通过以下寄存器,配置外部 DRAM,或者 SRAM 器件地址在芯片的内存映射表上的地址范围:
● BR[BASE0] 寄存器,配置 DRAM 片选信号 CS_0 对应的外部 SDRAM
● BR[BASE1] 寄存器,配置 DRAM 片选信号 CS_1 对应的外部 SDRAM
● BR[BASE6] 寄存器,配置 SRAM 片选信号 NCE 对应的外部 SRAM 或类似接口器件
BR 寄存器的 BASE 位域,可以配置外部存储器 (SDRAM 或 SRAM 等) 映射到内存映射表的基地址;SIZE
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
392/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
位域,可以配置外部存储器的容量;VLD 位域,置 1 表示该 BR 寄存器对应的外部存储器有效。
当 BR 寄存器配置完成并设置为有效后,当总线上的数据读写访问地址匹配 BR[BASE0] 寄存器的配置时,会
触发 DRAM 控制器,CS_0 信号有效,访问外部的 SDRAM。
当总线上的数据读写访问地址匹配 BR[BASE1] 寄存器的配置时,会触发 DRAM 控制器,CS_1 信号有效,访
问外部的 SDRAM。
当总线上的数据读写访问地址匹配 BR[BASE6] 寄存器的配置时,会触发 SRAM 控制器,NCE 信号有效,访
问外部的 SRAM 或类似器件。
注意,根据 IOCTRL 寄存器 IOCSX 位域的配置,FEMC_CS_1 信号或者用作 DRAM 的 CS_1,或者用作 SRAM 控
制器的 SRAM_NCE。因此 BR[BASE1] 和 BR[BASE6] 这 2 个寄存器同时只有 1 个能生效,即 FEMC 外部可以同时
连接 2 个 SDRAM 或者 1 个 SDRAM 和 1 个 SRAM。
DRAM 控制器功能描述
28.3
提供 SDRAM 读写访问控制.
CPU 可以通过 APB 总线往 SDRAM 发命令.
CPU 和其他外设可以通过 AXI 总线直接读写 DRAM.
28.3.1
初始化流程
● 根据 SDRAM 型号以及开发板设计图,配置 pinmux(主要是 SDRAM 数据宽度,以及使用哪些数据位);
注意:需使用 PC16 作为 DQS 补偿接收数据延迟,PC16 的 pad 设置中需要使能 loopback(详见 IOC 寄
存器描述)
● 根据 SDRAM 型号以及应用需求,配置 SDRAM 工作频率,以下以 IS42S32800J 的 32 位 SDRAM,工
作在 166MHz 为例,仅供参考。
● 设置 CTRL(offset 0x00)=0x04, 模块使能,使用 DQS 补偿接收延迟;
● 设置 BR0(offset 0x10) 的 MS=01101b(32MB),VLD=1; BA 为系统默认 SDRAM 地址,无需改变。
● 设置 SDRAMCR0(offset 0x40)=0xF32, 4bank/CAS=3/9bitCOL/burst length=8/32bit;
● 根据 SDRAM 手册设置 SDRAMCR1/2/3, 这里给出参考值:
SDRAMCR1=0x664A33;
SDRAMCR2=0x10A0A;
SDRAMCR3=0x14147D01;
● 使用 IPCMD 初始化 SDRAM。IPCMD 流程如下:
将数据部分写入寄存器 IPTXDAT(offset 0xA0);(WRITE 和 MODESET 命令有数据部分);
将命令写入寄存器 IPCMD(offset 0x9C) 的低 4 位,高 16 位写 0x5AA5,其他位写 0;
等待 IPCMD 结束或者错误中断 (可以用中断,或者轮询状态寄存器 INTR,offset 0x3C),写状态寄存器
INTR 清中断
● 依次发送以下 IPCMD:
PRECHARGE ALL; AUTO REFRESH; AUTO REFRESH(第二次); MODESET(IPTXDAT
写 0x33,设置 CAS=3/burst length=8/burst type=seq)
● 初始化完成,cpu 和其他模块可以通过 AXI 直接访问 SDRAM
28.3.2
Delay Chain 配置过程
● DQS 是通过 Delay Chain 来调整相位,以适应各电路板上 DRAM 的不同延迟。现在 FEMC 的 DLYCFG
寄存器中,设置 DLYEN 控制位位 1,设置 DLYSEL 的延迟级数。
● 然后再次配置 DLYCFG 寄存器,把 OE 控制位设置成 1,Delay Chain 生效。
● 最后在 FEMC 的 CTRL 寄存器,把控制位 DQS 设置为 1,完成 DQS 功能设置。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
393/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
28.3.3
DRAM 控制时序图
28.3.3.1
DRAM 读写时序
多功能外部存储控制器 FEMC
从预充电 PRECHAGE(PRE)
,到 ACT 的时间由 SDRCTRL[1] 的 PRE2ACT 决定,持续时间为 PRE2ACT
+1 个周期,PRE 之后到 ACT 之间的间隔时间为 PRE2ACT 个周期。从 ACT 到 RD 的间隔时间为 ACT2RW 个周
期。RD 之后第 CL 个周期是读取的第一个数据。CL 为列地址 CAS 的延迟周期,由 SDRCTRL[0] 的 CAS 配置。
CLK
CKE
PRE2ACT+1
Command
NOP
PRE
NOP
ADDR
ACT2RW+1
ACT
NOP
RA
CL
RD
NOP
CA
A[10]
BA
BA
BA
DQ
D0
D1
D2
D3
D4
D5
D6
D7
DQS
图 28: 读时序操作
从自动刷新 AUTO REFRESH 到 ACTIVE,其间隔周期为 RFRC。从 ACT 到 PRE 的间隔周期为 ACT2PRE
个周期。最后从写操作(WR)到再次预充电(FRE),时间间隔为 WRC 个周期。
CLK
CKE
RFRC+1
ACT2PRE+1
WRC+1
Command
AREF
NOP
ACT
NOP
WR
NOP
PRE
ADDR
RA
CA
ADDR
BA
BA
BA
BA
DQ
D0
DM
DM0
NOP
图 29: 写时序操作
28.3.3.2
DRAM REFRESH 时序
DRAM 的自动刷新 AREF 最小时间间隔为 REF2REF 个周期。
CLK
CKE
REF2REF+1
Command
AREF
NOP
AREF
NOP
AREF
NOP
AREF
NOP
ADDR
BA
DQ
DM
图 30: AUTO REFRESH 时序操作
DRAM 进入低功耗后,从自我刷新模式 SREF 到时钟使能 CKE 恢复的最小时间间隔为 SREF 个周期。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
394/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
CLK
CKE
RFRC+1
Command
NOP
PRE
NOP
SRCC+1
SREF
NOP
ACT2RW+1
ACT
ADDR
RA
NOP
WR
NOP
CA
A[10]
BA
BA
DQ
D0
DM
D1
D2
D3
D4
D5
D6
D7
DM0 DM1 DM2 DM3 DM4 DM5 DM6 DM7
图 31: SELF REFRESH 时序操作
SRAM 控制器功能描述
28.4
本章节介绍了 FEMC 内部 SRAM 控制器的功能。SRAM 控制器可以连接外部的 SRAM,PSRAM 或者兼容
SRAM 访问接口的外部器件。
SRAM 控制器支持数据和地址信号复用和非复用两种工作模式,可以通过 SRCTR0 寄存器的 ADM 控制位进
行设置。
SRAM 的端口数据宽度,可以通过 SRCTR0 寄存器的 PORTSZ 控制位进行数据端口宽度设置,8bit 或者
16bit。
28.4.1
数据地址非复用模式 Non-ADMUX
SRAM 控制器工作在数据地址非复用模式时,需要各自独立的地址和数据信号线,NADV 信号为可选信号,
可以不使用,其写操作的接口信号示意图如下:
CLK
NCE
CES
NADV
AS
A
CEH
AH
ADDR0
D
ADDR1
D0
NWE
D1
WEH
WEL
图 32: 数据地址非复用模式写操作
读操作的接口信号示意图如下:
CLK
NCE
CES
NADV
A
AS
CEH
AH
ADDR0
D
NOE
ADDR1
D0
D1
REH
REL
图 33: 数据地址非复用模式读操作
28.4.2
数据地址复用模式 ADMUX
在数据地址复用模式下,控制器的低 16 位地址线与 16 位数据线是复用的,外围电路需要增加地址锁存器,
通过 NADV 信号对低 16 位地址进行锁存。NADV 信号的极性可通过 SRCTL0.ADVH 和 SRCTL0.ADVP 进行配
置,以适应不同的地址锁存器。
其写操作的接口信号示意图如下:
读操作的接口信号示意图如下:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
395/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
CLK
NCE
CES
NADV
AS
CEH
A
AH
D/A
ADDR0[15:0]
ADDR0[M:16]
D0
NWE
ADDR1[M:16]
ADDR1[15:0]
WEH
D1
WEL
图 34: 数据地址复用模式写操作
CLK
NCE
CES
NADV
AS
CEH
A
AH
D/A
ADDR0[15:0]
ADDR0[M:16]
NOE
ADDR1[M:16]
D0 REH
1 Cycle
ADDR1[15:0]
D1
REL
图 35: 数据地址复用模式读操作
28.4.3
SRAM 控制器时序参数配置
可以通过 SRCTRL1 寄存器控制 SRAM 读写操作的各个时序参数:
● REH 位域,配置 REH(Read Enable High)的长度,为 REH+1 个时钟周期
● REL 位域,配置 REL(Read Enable Low)的长度,为 REL+1 个时钟周期
● WEH 位域,配置 WEH(Write Enable High)的长度,为 WEH+1 个时钟周期
● WEL 位域,配置 WEL(Write Enable Low)的长度,为 WEL+1 个时钟周期
● AH 位域,配置 AH (Address Hold) 的长度,为 AH+1 个时钟周期
● AS 位域,配置 AS (Address Setup) 的长度,为 AS+1 个时钟周期
● CEH 位域,配置 CEH (Chip Enable Hold) 的长度,为 CEH+1 个时钟周期
● CES 位域,配置 CES (Chip Enable Setup) 的长度,为 CES+1 个时钟周期
28.4.4
SRAM 控制器应用提示
用户可以利用 SRAM 控制器连接 SRAM 或者访问接口兼容 SRAM 的外部器件。SRAM 控制器仅支持一根
片选信号。当用户希望连接多个外部器件时,可以将不必须的高位地址线与片选信号通过片外逻辑器件组合起来,
生成多个新的片选信号。
28.5
FEMC 寄存器列表
FEMC base address: 0xF3050000
地址偏移
名称
描述
复位值
0x0000
CTRL
控制寄存器
0x00000000
0x0004
IOCTRL
IO Mux Control Register
0x00000000
0x0008
BMW0
AXI 总线权重配置寄存器 0
0x00000000
0x000C
BMW1
AXI 总线权重配置寄存器 1
0x00000000
0x0010
BR[BASE0]
SDRAM0 基地址配置
0x00000000
0x0014
BR[BASE1]
SDRAM1 基地址配置
0x00000000
0x0028
BR[BASE6]
SRAM 基地址配置
0x00000000
0x0038
INTEN
中断使能寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
396/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
地址偏移
名称
描述
复位值
0x003C
INTR
中断状态寄存器
0x00000000
0x0040
SDRCTRL0
SDRAM 控制寄存器 0
0x00000000
0x0044
SDRCTRL1
SDRAM 控制寄存器 1
0x00000000
0x0048
SDRCTRL2
SDRAM 控制寄存器 2
0x00000000
0x004C
SDRCTRL3
SDRAM 控制寄存器 3
0x00000000
0x0070
SRCTRL0
SRAM 控制寄存器 0
0x00000000
0x0074
SRCTRL1
SRAM 控制寄存器 1
0x00000000
0x0090
SADDR
IP 命令控制寄存器 0
0x00000000
0x0094
DATSZ
IP 命令控制寄存器 1
0x00000000
0x0098
BYTEMSK
IP 命令控制寄存器 2
0x00000000
0x009C
IPCMD
IP 命令寄存器
0x00000000
0x00A0
IPTX
IP 写数据寄存器
0x00000000
0x00B0
IPRX
IP 读数据寄存器
0x00000000
0x00C0
STAT0
状态寄存器 0
0x00000000
0x0150
DLYCFG
延迟线配置寄存器
0x00000000
表 167: FEMC 寄存器列表
FEMC 寄存器描述
28.6
21
20
0
0
0
0
0
0
BTO
RW
0
19
18
17
16
15
14
13
12
11
10
0
0
0
x
x
x
x
x
x
9
8
7
6
5
4
3
0
x
x
x
x
x
x
x
2
1
0
RST
22
RW
0
23
DIS
0
24
DQS
x
25
RW
x
N/A
x
26
RW
27
RSVD
28
N/A
29
CTO
30
RSVD
31
CTRL (0x0)
RW
28.6.1
0
0
0
CTRL [31:0]
位域
名称
描述
AXI 总线超时。
超时时间为(255*(2^BTO)) 个 FEMC 时钟周期
28-24
BTO
00000b: 255;
11111b: 255*2^31;
超时后会产生 AXIBUSERR 中断
命令执行超时。
设 0 使用最大值:256*1024 个 FEMC 时钟周期; 设其他值,超时
23-16
CTO
时间为:CTO*1024 个 FEMC 时钟周期
当命令执行时间超过后,会产生 IPCMDERR 或者 AXICMDERR
中断。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
397/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
多功能外部存储控制器 FEMC
描述
DQS 模式,控制读时钟来源
0 - 关闭,读时钟由内部产生,此模式无需占用 pad,但需要配置
2
合适的延迟线,
DQS
1 - 打开,读时钟内部产生后,输出到 pad 再返回,需配置 pad
loopback 模式,此模式下无需打开延迟线
模块关闭
1
0b - 打开
DIS
1b - 关闭
0
软件复位,复位内部逻辑,不包括配置寄存器
RST
CTRL 位域
IOCTRL (0x4)
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
0
11
10
9
8
0
0
0
1
0
0
0
0
x
x
x
x
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
N/A
RSVD
29
N/A
30
RSVD
31
IO_CSX
28.6.2
x
IOCTRL [31:0]
位域
名称
描述
IO_CSX 引脚功能选择
7-4
IO_CSX
0001b - SDRAM CS1
0110b - SRAM CE#
IOCTRL 位域
x
x
x
26
25
24
23
22
21
20
x
x
x
0
0
0
0
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RW
N/A
RWS
19
x
0
RW
x
27
AGE
28
RW
29
SH
30
RSVD
31
QOS
BMW0 (0x8)
RW
28.6.3
0
BMW0 [31:0]
位域
名称
描述
23-16
RWS
读写切换权重配置
15-8
SH
读写未切换权重配置
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
398/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
多功能外部存储控制器 FEMC
描述
AGE 权重配置
7-4
AGE 用来表示当前命令在队列中等待时间,时间越长优先级越高。
AGE
等待时间乘以 AGE 为 AGE 权重
QOS 权重配置
3-0
AXI 总线有 AxQOS 信号,用来控制相关读写的优先级,
QOS
值越大优先级越高。
AxQOS*QOS 为 QOS 权重
BMW0 位域
BMW1 (0xC)
0
24
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RW
RW
0
11
10
9
8
7
6
0
0
0
0
0
0
5
4
3
2
0
0
0
0
0
1
0
0
0
QOS
0
25
RW
0
26
AGE
0
27
RW
28
PH
29
RW
30
BR
31
RWS
28.6.4
BMW1 [31:0]
位域
名称
描述
31-24
BR
BANK 变化权重配置
23-16
RWS
读写未切换权重配置
15-8
PH
读写未切换权重配置
7-4
AGE
AGE 权重配置
AGE 用来表示当前命令在队列中等待时间,时间越长优先级越
高。等待时间乘以 AGE 为 AGE 权重
QOS 权重配置
3-0
AXI 总线有 AxQOS 信号,用来控制相关读写的优先级,值越大优
QOS
先级越高。AxQOS*QOS 为 QOS 权重
BMW1 位域
BR (0x10 + 0x4 * n)
26
25
24
23
22
0
0
0
0
0
0
0
0
0
0
21
20
19
18
17
16
15
14
13
12
11
10
9
0
0
0
0
0
0
0
0
0
x
x
x
8
7
6
5
4
x
x
x
0
0
N/A
RW
0
3
2
1
0
0
0
BR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
399/1016
0
VLD
27
RW
28
SIZE
29
RW
30
BASE
31
RSVD
28.6.5
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-12
BASE
多功能外部存储控制器 FEMC
描述
基地址
SDRAM 的高 20 位基地址,低 12 位必须为 0
SDRAM 大小:
00000b - 4KB
00001b - 8KB
00010b - 16KB
00011b - 32KB
00100b - 64KB
00101b - 128KB
00110b - 256KB
00111b - 512KB
01000b - 1MB
5-1
01001b - 2MB
SIZE
01010b - 4MB
01011b - 8MB
01100b - 16MB
01101b - 32MB
01110b - 64MB
01111b - 128MB
10000b - 256MB
10001b - 512MB
10010b - 1GB
10011b - 2GB
10100-11111b - 4GB
0
设 1 表示 CS0 对应的 SDRAM 有效
VLD
BR 位域
INTEN (0x38)
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
3
2
名称
3
AXIBUSERR
AXI 总线错误中断使能
2
AXICMDERR
AXI 命令错误中断使能
0
0
0
描述
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
400/1016
0
0
INTEN [31:0]
位域
1
IPCMDDONE
24
RW
25
IPCMDERR
26
AXICMDERR
27
RW
28
RW
29
AXIBUSERR
30
RSVD
31
RW
28.6.6
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
位域
名称
描述
1
IPCMDERR
IP 命令错误中断使能
0
IPCMDDONE
IP 命令结束中断使能
INTEN 位域
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
0
12
11
10
9
8
7
6
5
4
3
2
1
0
N/A
x
2
1
IPCMDDONE
25
W1C
26
IPCMDERR
27
AXICMDERR
28
W1C
29
W1C
30
RSVD
31
AXIBUSERR
INTR (0x3C)
W1C
28.6.7
3
0
0
0
0
INTR [31:0]
位域
名称
描述
3
AXIBUSERR
AXI 总线错误中断状态
2
AXICMDERR
AXI 总线错误中断状态
1
IPCMDERR
IP 命令错误中断状态
0
IPCMDDONE
IP 命令结束中断状态
INTR 位域
15
x
x
x
x
x
x
x
x
13
RW
N/A
x
14
0
x
x
0
0
0
0
0
0
0
0
0
x
SDRCTRL0 [31:0]
位域
名称
描述
BANK 数选择,可以从 SDRAM 手册获得
14
BANK2
0 - SDRAM 有 4BANK
1 - SDRAM 有 2BANK
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
401/1016
PORTSZ
x
16
RW
x
17
RSVD
x
18
N/A
x
19
HIGHBAND
x
20
RW
x
21
RW
x
22
COL8
x
23
RW
24
COL
25
RW
26
CAS
27
RW
28
RSVD
29
N/A
30
RSVD
31
BURSTLEN
SDRCTRL0 (0x40)
BANK2
28.6.8
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
多功能外部存储控制器 FEMC
描述
CAS 延迟周期,可以从 SDRAM 手册获得
00b - 1
11-10
CAS
01b - 1
10b - 2
11b - 3
列地址位数:
00b - 12 位
9-8
01b - 11 位
COL
10b - 10 位
11b - 9 位
8 位列地址:
7
设 1 表示 8 位列地址
COL8
设 0 由 COL 决定列地址位数
列地址可以从 SDRAM 手册得到
BURST 长度
000b - 1
001b - 2
010b - 4
6-4
BURSTLEN
011b - 8
100b - 8
101b - 8
110b - 8
111b - 8
高位选择:
3
0:16 位 SDRAM 使用低 16 位数据线
HIGHBAND
1:16 位 SDRAM 使用高 16 位数据线
仅在选择 16 位 SDRAM 时有效 (PORTSZ=01b)
SDRAM 位宽:
1-0
00b - 8 位
PORTSZ
01b - 16 位
10b - 32 位
SDRCTRL0 位域
SDRCTRL1 (0x44)
x
x
0
0
20
19
18
0
0
0
RW
N/A
x
17
16
15
0
0
0
14
13
12
11
0
0
0
0
0
10
9
8
7
6
0
0
0
0
0
5
4
3
2
0
0
0
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
402/1016
1
0
0
0
PRE2ACT
x
21
RW
22
ACT2RW
23
RW
x
24
RFRC
x
25
RW
x
26
WRC
x
27
RW
28
CKEOFF
29
RW
30
RSVD
31
ACT2PRE
28.6.9
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
多功能外部存储控制器 FEMC
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
SDRCTRL1 [31:0]
位域
名称
描述
ACT 命令到 PRECHARGE 命令的最小间隔,可以从 SDRAM 手
23-20
册获得:
ACT2PRE
(PREACT+1)个时钟周期。
19-16
时钟关闭最小时间
CKEOFF
FEMC 时钟会在 CKE 关闭后至少保持(CKEOFF+1)个时钟周期
写命令到 PRECHARGE 命令的最小间隔,可以从 SDRAM 手册
15-13
获得:
WRC
(RFRC+1)个时钟周期
REFRESH 命令到 ACT 命令的最小间隔,可以从 SDRAM 手册
12-8
获得:
RFRC
(RFRC+1)个时钟周期
7-4
ACT 命令到读写命令的最小间隔,可以从 SDRAM 手册获得:
ACT2RW
(ACT2RW+1)个时钟周期
PRECHARGE 命令到 ACT/REFRESH 命令的最小间隔,可以从
3-0
SDRAM 手册获得:
PRE2ACT
(PREACT+1)个时钟周期。
例如 ISSI 的 SDRAM 手册上 tRP=3 周期,这里设置为 2
SDRCTRL1 位域
SDRCTRL2 (0x48)
0
0
0
26
25
24
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RW
RW
0
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
0
SRRC
0
27
RW
28
REF2REF
29
RW
30
ITO
31
ACT2ACT
28.6.10
0
SDRCTRL2 [31:0]
位域
名称
描述
SDRAM 空闲超时:
31-24
ITO
FEMC 模块会在超时后关掉所有打开的页。
0:256 个预分频时间周期(详见 PRESCALE)
其他值:ITO 个预分频时间周期
23-16
ACT2ACT
15-8
REF2REF
ACT 命令到 ACT 命令最小间隔:
(ACT2ACT+1)个时钟周期
REFRESH 命令到 REFRESH 命令最小间隔:
(REF2REF+1)个时钟周期
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
403/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
7-0
SRRC
多功能外部存储控制器 FEMC
描述
self REFRESH 命令到其他命令最小间隔:
(SRRC+1)个时钟周期
SDRCTRL2 位域
SDRCTRL3 (0x4C)
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RT
RW
RW
0
11
10
9
8
7
6
0
0
0
0
x
x
5
4
3
0
x
x
0
2
1
0
0
REN
0
24
RW
0
25
REBL
0
26
RW
0
27
RSVD
28
N/A
29
PRESCALE
30
UT
31
RW
28.6.11
0
0
SDRCTRL3 [31:0]
位域
名称
描述
紧急 REFRESH 时间周期:
0:256 个预分频时间周期
其他值:UT 个预分频时间周期;
31-24
UT
与 RT 的区别:
当 RT 时间到达时,如果当前有 AXI 或者 IP 命令正在等待完成,
会等待所有命令结束再发送 REFRESH 命令;
当 UT 时间到达时,会在当前 AXI 或者 IP 命令结束后立即发送
REFRESH 命令.
REFRESH 时间周期:
23-16
RT
0:256 个预分频时间周期
其他值:RT 个预分频时间周期
预分频时间:
15-8
PRESCALE
0:256*16 个 FEMC 时钟周期
其他值:PRESCALE*16 个 FEMC 时钟周期
FEMC 可以连续发送多个 AUTO REFRESH 命令:
000b - 1
001b - 2
010b - 3
3-1
REBL
011b - 4
100b - 5
101b - 6
110b - 7
111b - 8
0
REN
自动 REFRESH 使能
SDRCTRL3 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
404/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SRCTRL0 (0x70)
x
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
x
x
x
x
x
x
x
x
x
N/A
x
11
10
0
0
9
8
7
6
5
0
0
x
x
x
4
3
2
1
0
x
x
x
x
0
5
4
3
2
1
0
0
0
0
0
0
0
PORTSZ
22
RW
23
RSVD
24
N/A
25
ADM
26
RW
27
ADVP
28
RW
29
ADVH
30
RSVD
31
RW
28.6.12
多功能外部存储控制器 FEMC
SRCTRL0 [31:0]
位域
名称
描述
ADV 保持电平
11
0b - 地址保持态时,ADV 信号为高电平
ADVH
1b - 地址保持态时,ADV 信号为低电平
ADV 极性
10
0b - ADV 动作时为低电平
ADVP
1b - ADV 动作时为高电平
地址线和数据线工作模式
9-8
00b - 地址线和数据线复用模式
ADM
11b - 地址线和数据线非复用模式
数据位宽
0
0b - 8 位
PORTSZ
1b - 16 位
SRCTRL0 位域
0
19
18
OEL
0
0
0
0
17
16
15
14
0
0
0
0
13
12
11
10
0
0
0
0
9
8
7
6
0
0
0
0
0
CES
0
20
RW
0
RW
RW
0
21
CEH
22
RW
0
23
AS
0
24
RW
0
25
AH
26
RW
27
WEL
0
28
RW
0
29
RW
30
OEH
31
SRCTRL1 (0x74)
WEH
28.6.13
SRCTRL1 [31:0]
位域
名称
描述
31-28
OEH
OE 高电平时间,为 OEH+1 个时钟周期
27-24
OEL
OE 低电平时间,为 OEL+1 个时钟周期
23-20
WEH
WE 高电平时间,为 WEH+1 个时钟周期
19-16
WEL
WE 低电平时间,为 WEL+1 个时钟周期
15-12
AH
AH 时间,为 AH+1 个时钟周期
11-8
AS
AS 时间,为 AS+1 个时钟周期
7-4
CEH
CEH 时间,为 CEH+1 个时钟周期
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
405/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
多功能外部存储控制器 FEMC
位域
名称
描述
3-0
CES
CES 时间,为 CES+1 个时钟周期
SRCTRL1 位域
28.6.14
SADDR (0x90)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
RW
SA
31
0
SADDR [31:0]
位域
名称
31-0
SA
描述
目标地址
SADDR 位域
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
9
8
7
6
5
4
3
2
1
0
BM0
28
DATSZ
29
BM1
30
RW
N/A
RSVD
31
BM2
DATSZ (0x94)
BM3
28.6.15
x
DATSZ [31:0]
位域
名称
描述
读写位宽,仅对读写命令有效:
001b - 8 位
2-0
010b - 16 位
DATSZ
011b - 24 位
其他 - 32 位
DATSZ 位域
31
30
BYTEMSK (0x98)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
RSVD
28.6.16
14
13
12
11
10
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
406/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
x
3
2
1
0
RW
27
RW
28
RW
29
RW
30
N/A
31
多功能外部存储控制器 FEMC
0
0
0
0
BYTEMSK [31:0]
位域
名称
描述
3
BM3
字节 3 屏蔽使能(对应 IPTXD 的比特 31 到 24)
2
BM2
字节 2 屏蔽使能(对应 IPTXD 的比特 23 到 16)
1
BM1
字节 1 屏蔽使能(对应 IPTXD 的比特 15 到 8)
字节 0 屏蔽使能(对应 IPTXD 的比特 7 到 0)
0
BM0
0:不屏蔽
1:屏蔽
BYTEMSK 位域
IPCMD (0x9C)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
WO
KEY
31
CMD
28.6.17
0
IPCMD [31:0]
位域
名称
31-16
KEY
描述
命令字.
写入 0x5AA5 会触发一次 IP 命令
SDRAM 命令:
• 0x8: READ
• 0x9: WRITE
• 0xA: MODESET
15-0
CMD
• 0xB: ACTIVE
• 0xC: AUTO REFRESH
• 0xD: SELF REFRESH
• 0xE: PRECHARGE
• 0xF: PRECHARGE ALL
• Others: RSVD
IPCMD 位域
28.6.18
IPTX (0xA0)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
407/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DAT
31
多功能外部存储控制器 FEMC
0
IPTX [31:0]
位域
名称
描述
31-0
DAT
IP 写数据
IPTX 位域
28.6.19
IPRX (0xB0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RW
DAT
31
0
IPRX [31:0]
位域
名称
描述
31-0
DAT
IP 读数据
IPRX 位域
28.6.20
STAT0 (0xC0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
RO
N/A
IDLE
RSVD
31
STAT0 [31:0]
位域
名称
描述
空闲状态指示位。
0
IDLE
0 表示当前有正在执行的 AXI 命令;
1 表示没有未执行的 AXI 命令;
STAT0 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
408/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DLYCFG (0x150)
25
24
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
x
x
x
x
x
x
x
x
12
11
10
x
x
x
RW
N/A
OE
13
x
0
9
8
7
6
5
4
x
x
x
x
0
0
3
2
1
0
0
0
DLYCFG [31:0]
位域
名称
13
OE
5-1
DLYSEL
延迟线级数选择,0 表示一级,31 选择所有 32 级
0
DLYEN
延迟线使能
描述
延迟线时钟输出,DLYEN 和 DLYSEL 必须在 OE 为 0 时改动,
最后设置 OE 为 1.
DLYCFG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
409/1016
0
DLYEN
26
RW
27
DLYSEL
28
RW
29
RSVD
30
RSVD
31
N/A
28.6.21
多功能外部存储控制器 FEMC
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SD 控制器 SDXC
SD 控制器 SDXC
29
SDXC 为 CPU 提供访问外部 SD 卡/SDIO 的通道
29.1
功能简介
本章节介绍了 SDXC 的主要功能:
● 支持 SD-HCI 主机版本 4, 支持以下速度模式:default speed(DS), high-speed(HS), SDR12, SDR25
● 支持 SDIO(SD Specifications Part E1 SDIO Specification Version 4.10 Sept 2014)
● 支持以下数据传输类型:CPU/SDMA/ADMA2/ADMA3
● 支持命令队列 Command Queuing Engine (CQE)
29.2
初始化流程
以 SD 卡的初始化为例,主要介绍系统相关的初始化,具体卡的初始化请参考相关协议。
● 根据开发板设计图,配置 pinmux,注意 cmd 和 data 需要在 PAD_CTL 寄存器中设置上拉;
● 设置 sd 时钟为 400KHz(需设置系统控制模块 SYSCTL,CLK_TOP_SDC0/CLK_TOP_SDC1);
● 根据应用设置 AC_HOST_CTRL 寄存器 (offset 0x3C);
● 置位 PROT_CTRL(base+0x28) bit8
● 配置 SYS_CTRL(base+0x2C), 置位 bit0/2/3, 等待 bit1 为 1
● 等待至少 74 个 400KHz 时钟周期 (SD 协议需求)
● 按图 36和图 37所示,发送各种 CMD 完成初始化,以下以 CMD0 为例说明发送 CMD 流程:
将 CMD 参数写入 CMD_ARG 寄存器 (offset 0x8),对于 CMD0,写 0;
根据不同 CMD,配置 CMD_XFER(寄存器 offset 0xC),对于 CMD0,写 0xC0;等待中断或者轮询中断
状态寄存器,得到 CMD 结果并清中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
410/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SD 控制器 SDXC
图 36: SD 初始化 1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
411/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SD 控制器 SDXC
图 37: SD 初始化 2
数据传输
29.3
sdxc 支持以下数据传输类型:
CPU/SDMA/ADMA2/ADMA3;
传输数据时基于 BLOCK,
也就是需要传输 BLOCK
的整数倍数据,BLOCK 的大小可配置
29.3.1
CPU 模式
此模式为通过 CPU 读写寄存器传输数据,效率极低,不建议实际使用,流程如下:
● 根据所需发送的数据大小,将 BLOCK 的大小及所需传输 BLOCK 数量写入 BLK_ATTR 寄存器 (offset
0x04);
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
412/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SD 控制器 SDXC
● 根据需求,配置 CMD_ARG 和 CMD_XFER 寄存器,发送相应 CMD,等待 CMD 结束中断并清中断
● 对于写,重复以下步骤:等待 INT_STAT 寄存器 bit4(BUF_WR_READY) 为 1,连续将一个 BLOCK 数
据写入 BUF_DAT 寄存器 (offset 0x20);
对于读,重复以下步骤:等待 INT_STAT 寄存器 bit5(BUF_RD_READY) 为 1,从 BUF_DAT 寄存器读
出一个 BLOCK 数据;
● 等待数据传输结束中断并清中断;
29.3.2
SDMA 模式
利用 sdxc 内置 DMA,从指定地址读出指定长度数据发送出去,或者接收数据存入指定地址,在大数据传输时,
内存中地址数据一般不是连续的物理地址,
而是由若干页组成,
DMA 会在页边界 (详见 BLK_ATTR.SDMA_BUF_BDARY)
停止传输并产生中断,需要 CPU 响应并提供下一段数据的起始物理地址,具体流程如下:
● 配置 DMA 模式为 SDMA, PORT_CTRL.DMA_SEL(offset 0x28, bit4:3);
● 根据 AC_HOST_CTRL.HOST_VER4_ENABLE(offset 0x3c, bit28), 将数据起始地址写入 SDMASA(offset
0x00) 或者 ADMA_SYS_ADDR(offset 0x58);
● 根据需求配置 BLK_ATTR 寄存器;
● 根据需求,配置 CMD_ARG 和 CMD_XFER 寄存器,发送相应 CMD,等待 CMD 结束中断并清中断;
● 等待 DMA 中断并清中断,将下一段数据地址写入 SDMASA 或者 ADMA_SYS_ADDR(对于数据没有跨
页边界的,可以略过此步);
● 等待数据传输结束中断并清中断;
29.3.3
ADMA2 模式
用传输描述符的方式,将离散地址的数据块连在一起,在边界时由 sdxc 解析描述符并继续传输下一段数据,
如图 38所示。
ADMA2 的传输描述符数据结构如图 39所示,每个描述符是一段连续的物理地址空间,每个分量占用 64bit,
可以传输一个数据块,也可以指向下一个描述符,硬件会执行到见到 End 位置位为止。
具体流程如下:
● 配置 DMA 模式为 ADMA2,PORT_CTRL.DMA_SEL(offset 0x28, bit4:3);
● 设置 AC_HOST_CTRL.HOST_VER4_ENABLE=1;
● 准备传输描述符;
● 将传输描述符起始地址写入 ADMA_SYS_ADDR;
● 根据需求配置 BLK_ATTR 寄存器;
● 根据需求,配置 CMD_ARG 和 CMD_XFER 寄存器,发送相应 CMD,等待 CMD 结束中断并清中断;
● 等待数据传输结束中断并清中断;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
413/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SD 控制器 SDXC
图 38: ADMA2 简介
图 39: ADMA2 传输描述符
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
414/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29.3.4
SD 控制器 SDXC
ADMA3 模式
ADMA3 可以认为是多个 ADMA2 的集合,使用 ADMA3 时不需要 CPU 发送 CMD,由硬件解析描述符自动
发送 CMD。
结构如所示, 每个 ADMA3 的描述符,由一个命令描述符加上一个 ADMA2 描述符组成, 命令描述符如图 40所
示。
ADMA3 描述符结构如图 41所示。
具体流程如下:
● 配置 DMA 模式为 ADMA3,PORT_CTRL.DMA_SEL(offset 0x28, bit4:3);
● 设置 AC_HOST_CTRL.HOST_VER4_ENABLE=1;
● 准备命令描述符和 ADMA2 传输描述符;
● 准备 ADMA3 描述符
● 将 ADMA3 描述符起始地址写入 ADMA_ID_ADDR(offset 0x78)
● 等待数据传输结束中断并清中断;
图 40: 命令描述符
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
415/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SD 控制器 SDXC
图 41: ADMA3 描述符
以下伪代码是 ADMA3 的一个简单例子,包含 3 个 ADMA3 描述符,每个包含一个命令描述符和一个 ADMA2
描述符,每个 ADMA2 描述符传输 512byte 数据,仅供参考。
sdxc 会在将 desc_list_addr 写入 ADMA_ID_ADDR 后开始 ADMA3 操作:
void reg32_write ( u i n t 3 2 _ t taddr , u i n t 3 2 _ t tdata ) {
*( v o l a t i l e uint32_t *) taddr = tdata ;
}
uint32_t startBlock ;
uint32_t blockSize ;
uint32_t databuffer ;
uint32_t
desc_list_addr ;
uint32_t
adma3_desc0 ;
uint32_t
adma3_desc1 ;
uint32_t
adma3_desc2 ;
/ / MAP_MEM_AREA i s soc memory address , can be i n DLM/XRAM/DRAM . . . .
d e s c _ l i s t _ a d d r = MAP_MEM_AREA+0x10000 ;
adma3_desc0 = MAP_MEM_AREA+0x11000 ;
adma3_desc1 = MAP_MEM_AREA+0x11080 ;
adma3_desc2 = MAP_MEM_AREA+0x11100 ;
databuffer
= MAP_MEM_AREA+0x18000 ;
/ / prepare ADMA3 d e s c r i p t o r t a b l e
r e g 3 2 _ w r i t e ( d e s c _ l i s t _ a d d r +0x00 , 0x39 ) ; / / i n t e g r a t e d d e s c r i p t o r
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
416/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
SD 控制器 SDXC
r e g 3 2 _ w r i t e ( d e s c _ l i s t _ a d d r +0x04 , adma3_desc0 ) ; / / adma3_desc0
r e g 3 2 _ w r i t e ( d e s c _ l i s t _ a d d r +0x08 , 0x39 ) ; / / i n t e g r a t e d d e s c r i p t o r
r e g 3 2 _ w r i t e ( d e s c _ l i s t _ a d d r +0x0c , adma3_desc1 ) ; / / adma3_desc1
r e g 3 2 _ w r i t e ( d e s c _ l i s t _ a d d r +0x10 , 0x3b ) ; / / i n t e g r a t e d d e s c r i p t o r , end
r e g 3 2 _ w r i t e ( d e s c _ l i s t _ a d d r +0x14 , adma3_desc2 ) ; / / adma3_desc2
/ / adma3_desc0
r e g 3 2 _ w r i t e ( adma3_desc0+0x00 , 0x09 ) ; / / cmd0_0
r e g 3 2 _ w r i t e ( adma3_desc0+0x04 , 1 ) ; / / b l k _ c n t
r e g 3 2 _ w r i t e ( adma3_desc0+0x08 , 0x09 ) ; / / cmd0_1
r e g 3 2 _ w r i t e ( adma3_desc0+0x0c , b l o c k S i z e ) ;
r e g 3 2 _ w r i t e ( adma3_desc0+0x10 , 0x09 ) ; / / cmd0_2
r e g 3 2 _ w r i t e ( adma3_desc0+0x14 , s t a r t B l o c k * b l o c k S i z e ) ; / / argu
r e g 3 2 _ w r i t e ( adma3_desc0+0x18 , 0x09 ) ; / / cmd0_3
r e g 3 2 _ w r i t e ( adma3_desc0+0x1c , 0x183a0081 ) ; / / cmd
r e g 3 2 _ w r i t e ( adma3_desc0+0x20 , 0x23 +( b l o c k S i z e < < 1 6 ) ) ; / / data0 , s i z e , end
r e g 3 2 _ w r i t e ( adma3_desc0+0x24 , d a t a b u f f e r ) ;
/ / adma3_desc1
r e g 3 2 _ w r i t e ( adma3_desc1+0x00 , 0x09 ) ; / / cmd1_0
r e g 3 2 _ w r i t e ( adma3_desc1+0x04 , 1 ) ; / / b l k _ c n t
r e g 3 2 _ w r i t e ( adma3_desc1+0x08 , 0x09 ) ; / / cmd1_1
r e g 3 2 _ w r i t e ( adma3_desc1+0x0c , b l o c k S i z e ) ;
r e g 3 2 _ w r i t e ( adma3_desc1+0x10 , 0x09 ) ; / / cmd1_2
r e g 3 2 _ w r i t e ( adma3_desc1+0x14 , ( s t a r t B l o c k +1) * b l o c k S i z e ) ; / / argu
r e g 3 2 _ w r i t e ( adma3_desc1+0x18 , 0x09 ) ; / / cmd1_3
r e g 3 2 _ w r i t e ( adma3_desc1+0x1c , 0x183a0081 ) ; / / cmd
r e g 3 2 _ w r i t e ( adma3_desc1+0x20 , 0x23 +( b l o c k S i z e < < 1 6 ) ) ; / / data1 , s i z e , end
r e g 3 2 _ w r i t e ( adma3_desc1+0x24 , d a t a b u f f e r + 5 1 2 ) ;
/ / adma3_desc2
r e g 3 2 _ w r i t e ( adma3_desc2+0x00 , 0x09 ) ; / / cmd2_0
r e g 3 2 _ w r i t e ( adma3_desc2+0x04 , 1 ) ; / / b l k _ c n t
r e g 3 2 _ w r i t e ( adma3_desc2+0x08 , 0x09 ) ; / / cmd2_1
r e g 3 2 _ w r i t e ( adma3_desc2+0x0c , b l o c k S i z e ) ;
r e g 3 2 _ w r i t e ( adma3_desc2+0x10 , 0x09 ) ; / / cmd2_2
r e g 3 2 _ w r i t e ( adma3_desc2+0x14 , ( s t a r t B l o c k +2) * b l o c k S i z e ) ; / / argu
r e g 3 2 _ w r i t e ( adma3_desc2+0x18 , 0x09 ) ; / / cmd2_3
r e g 3 2 _ w r i t e ( adma3_desc2+0x1c , 0x183a0081 ) ; / / cmd
r e g 3 2 _ w r i t e ( adma3_desc2+0x20 , 0x23 +( b l o c k S i z e < < 1 6 ) ) ; / / data2 , s i z e , end
r e g 3 2 _ w r i t e ( adma3_desc2+0x24 , d a t a b u f f e r +1024);
r e g 3 2 _ w r i t e (ADMA_ID_ADDR, d e s c _ l i s t _ a d d r ) ; / / s t a r t ADMA3 o p e r a t i o n
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
417/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29.4
SD 控制器 SDXC
SDXC 寄存器列表
SDXC0 base address: 0xF2030000
地址偏移
名称
描述
复位值
0x0000
SDMASA
0x00000000
0x0004
BLK_ATTR
0x00020210
0x0008
CMD_ARG
0x00000000
0x000C
CMD_XFER
0x00000000
0x0010
RESP[RESP01]
0x00000000
0x0014
RESP[RESP23]
0x00000000
0x0018
RESP[RESP45]
0x00000000
0x001C
RESP[RESP67]
0x00000000
0x0020
BUF_DATA
0x00000000
0x0024
PSTATE
0x00000000
0x0028
PROT_CTRL
0x00000000
0x002C
SYS_CTRL
0x00000000
0x0030
INT_STAT
0x00000000
0x0034
INT_STAT_EN
0x00000000
0x0038
INT_SIGNAL_EN
0x00000000
0x003C
AC_HOST_CTRL
0x00000000
0x0040
CAPABILITIES1
0x00000000
0x0044
CAPABILITIES2
0x00000000
0x0048
CURR_CAPABILITIES1
0x00000000
0x004C
CURR_CAPABILITIES2
0x00000000
0x0050
FORCE_EVENT
0x00000000
0x0054
ADMA_ERR_STAT
0x00000000
0x0058
ADMA_SYS_ADDR
0x00000000
0x0060
PRESET[INIT]
0x0000
0x0062
PRESET[DS]
0x0000
0x0064
PRESET[HS]
0x0001
0x0066
PRESET[SDR12]
0x0000
0x0068
PRESET[SDR25]
0x0000
0x006A
PRESET[SDR50]
0x0000
0x006C
PRESET[SDR104]
0x0000
0x006E
PRESET[DDR50]
0x0000
0x0074
PRESET[UHS2]
0x0000
0x0078
ADMA_ID_ADDR
0x00000000
0x00E6
P_EMBEDDED_CNTRL
0x0000
0x00E8
P_VENDOR_SPECIFIC_AREA
0x0000
0x00EA
P_VENDOR2_SPECIFIC_AREA
0x0000
0x00FC
SLOT_INTR_STATUS
0x0000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
418/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
SD 控制器 SDXC
名称
描述
复位值
0x0180
CQVER
0x00000000
0x0184
CQCAP
0x00000000
0x0188
CQCFG
0x00000000
0x018C
CQCTL
0x00000000
0x0190
CQIS
0x00000000
0x0194
CQISE
0x00000000
0x0198
CQISGE
0x00000000
0x019C
CQIC
0x00000000
0x01A0
CQTDLBA
0x00000000
0x01A8
CQTDBR
0x00000000
0x01AC
CQTCN
0x00000000
0x01B0
CQDQS
0x00000000
0x01B4
CQDPT
0x00000000
0x01B8
CQTCLR
0x00000000
0x01C0
CQSSC1
0x00000000
0x01C4
CQSSC2
0x00000000
0x01C8
CQCRDCT
0x00000000
0x01D0
CQRMEM
0x00000000
0x01D4
CQTERRI
0x00000000
0x01D8
CQCRI
0x00000000
0x01DC
CQCRA
0x00000000
0x0500
MSHC_VER_ID
0x00000000
0x0504
MSHC_VER_TYPE
0x00000000
0x052C
EMMC_BOOT_CTRL
0x00000000
0x0540
AUTO_TUNING_CTRL
0x00000000
0x0544
AUTO_TUNING_STAT
0x00000000
0x3000
MISC_CTRL0
0x00000000
0x3004
MISC_CTRL1
0x00000000
表 168: SDXC 寄存器列表
SDXC 寄存器描述
29.5.1
31
30
SDMASA (0x0)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
BLOCKCNT_SDMASA
29.5
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
419/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
SD 控制器 SDXC
0
SDMASA [31:0]
位域
名称
描述
32 位块计数(SDMA 系统地址)
-SDMA 系统地址(主机版本 4 Enable=0):此寄存器包含 32 位
寻址模式下 SDMA 传输的系统内存地址。
当主机控制器停止 SDMA 传输时,该寄存器指向下一个连续数据
位置的系统地址。
只有在没有事务执行的情况下才能访问它。在数据传输期间读取
此寄存器可能会导致返回无效值。
-32 位块计数(主机版本 4 Enable=1)
:根据主机控制器版本 4.10
规范,该寄存器被重新定义为 32 位块计数。
主机控制器为每个块传输递减该寄存器的块计数,当计数达到零
时,数据传输停止。当没有事务执行时,必须访问此寄存器。
在数据传输期间读取此寄存器可能返回无效值。
以下是 BLOCKCNT_SDMASA 的值:
31-0
BLOCKCNT_SDM
ASA
-0xFFFF_FFFF:4G-1 块
......
-0x0000_0002:2 块
-0x0000_0001:1 块
-0x0000_0000:停止计数
注:
-对于主机版本 4 Enable=0,在 ADMA 模式下运行时,主机驱动
程序不在此寄存器中编程系统地址。
系统地址必须在 ADMA 系统地址寄存器中编程。
-对于主机版本 4 Enable=0,当为非 DMA 和 ADMA 模式启用
Auto CMD23 时,主机驱动程序在此寄存器中编程一个非零 32 位
块计数值。
Auto CMD23 不能与 SDMA 一起使用。
-如果使用 32 位块计数寄存器而不是 16 位块计数寄存器,则必须
使用非零值对该寄存器进行编程,以便进行数据传输
SDMASA 位域
29.5.2
BLK_ATTR (0x4)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
420/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
14
RW
N/A
RSVD
15
0
x
13
12
11
10
9
8
7
6
0
0
0
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
0
XFER_BLOCK_SIZE
27
RW
28
SDMA_BUF_BDARY
29
RW
30
BLOCK_CNT
31
SD 控制器 SDXC
BLK_ATTR [31:0]
位域
名称
描述
16 位块计数
-如果主机版本 4 启用位设置为 0 或 16 位块计数寄存器设置为非
零,则选择 16 位块计数寄存器。
-如果主机版本 4 启用位设置为 1,且 16 位块计数寄存器设置为
零,则选择 32 位块计数寄存器。
以下是 BLOCK_CNT 的值:
31-16
BLOCK_CNT
-0x0:停止计数
-0x1:1 块
-0x2:2 块
-.
-0xFFFF:65535 块
注意:对于主机版本 4 Enable=0,在为非 DMA 和 ADMA 模式启
用 Auto CMD23 时,在编程 32 位块计数寄存器之前,必须将该
寄存器设置为 0000h。
SDMA 缓冲区边界
这些位指定系统内存中连续缓冲区的大小。SDMA 传输在这些字
段指定的每个边界处等待,主机控制器生成 DMA 中断,以请求主
机驱动程序更新 SDMA 系统地址寄存器。
-0x0(字节 _4K):4K 字节 SDMA 缓冲区边界
14-12
SDMA_BUF_BDA
RY
-0x1(字节 _8K)
:8K 字节 SDMA 缓冲区边界
-0x2(字节 _16K):16K 字节 SDMA 缓冲区边界
-0x3(字节 _32K):32K 字节 SDMA 缓冲区边界
-0x4(字节 _64K):64K 字节 SDMA 缓冲区边界
-0x5(字节 _128K):128K 字节 SDMA 缓冲区边界
-0x6(字节 _256K):256K 字节 SDMA 缓冲区边界
-0x7(字节 _512K):512K 字节 SDMA 缓冲区边界
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
421/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
传输块大小
这些位指定数据传输的块大小。对于内存,它被设置为 512 字节。
只有在没有事务执行的情况下才能访问它。
传输期间的读取操作可能返回无效值,写入操作将被忽略。以下
是 XFER_BLOCK_SIZE 的值:
-0x1:1 字节
11-0
XFER_BLOCK_SI
-0x2:2 字节
ZE
-0x3:3 字节
-.
-0x1FF:511 字节
-0x200:512 字节
-.
-0x800:2048 字节
注:必须使用非零值对该寄存器进行编程,以便进行数据传输。
BLK_ATTR 位域
29.5.3
CMD_ARG (0x8)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ARGUMNET
31
0
CMD_ARG [31:0]
位域
名称
描述
31-0
ARGUMNET
命令参数
这些位指定在命令格式的位 39-8 中指定的 SD/eMMC 命令参数。
CMD_ARG 位域
15
14
13
12
11
10
9
8
7
6
5
4
3
2
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
422/1016
1
0
DMA_ENABLE
16
BLOCK_COUNT_ENABLE
17
AUTO_CMD_ENABLE
18
MULTI_BLK_SEL
19
DATA_XFER_DIR
20
RESP_TYPE
21
RESP_INT_DISABLE
22
RESP_ERR_CHK_ENABLE
23
RSVD
24
RESP_TYPE_SELECT
25
SUB_CMD_FLAG
26
CMD_CRC_CHK_ENABLE
27
CMD_IDX_CHK_ENABLE
28
DATA_PRESENT_SEL
29
CMD_TYPE
30
RSVD
31
CMD_XFER (0xC)
CMD_INDEX
29.5.4
HPM6300 系列
0
0
0
16
15
14
13
x
x
x
12
0
11
10
9
0
x
x
x
x
8
7
6
5
4
0
0
0
0
0
3
2
0
0
1
0
RW
0
17
RW
0
18
RW
0
19
RW
0
20
RW
0
21
RW
0
RW
x
22
RW
0
23
N/A
0
24
RW
0
25
SD 控制器 SDXC
RW
x
26
RW
27
RW
28
RW
29
RW
30
N/A
31
RW
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
CMD_XFER [31:0]
位域
名称
29-24
CMD_INDEX
描述
命令索引
这些位设置为命令格式的位 45-40 中指定的命令号。
命令类型
这些位表示命令类型。
注意:当使用 CMD12/CMD52 发出中止指令或使用
23-22
CMD_TYPE
CMD0/CMD52 发出重置指令时,指令类型字段应设置为 0x3。
0x3 (ABORT_CMD) : 中止
0x2 (RESUME_CMD) : 恢复
0x1 (SUSPEND_CMD): 挂起
0x0 (NORMAL_CMD) : 正常
数据存在选择
该位设置为 1,表示存在数据,并且使用数据线传输数据。在以下
情况下,此位设置为 0:
21
DATA_PRESENT_
SEL
使用命令线的命令
没有数据传输但在数据线 0 上使用忙信号的命令
Resume 命令
0x0(NO_DATA)
:不存在数据
0x1(DATA):数据存在
命令索引检查启用
此位使主机控制器能够检查响应中的索引字段,以验证其值是否
与命令索引相同。如果值不相同,则报告为命令索引错误。
20
CMD_IDX_CHK_E
NABLE
注:
对于无响应、R2 响应、R3 响应和 R4 响应的命令,索引检查启
用必须设置为 0。
对于 tuning 命令,必须始终设置此位以启用索引检查。
0x1(ENABLED):启用
0x0(DISABLED):禁用
命令 CRC 校验启用
此位使主机控制器能够检查响应中的 CRC 字段。如果检测到错
误,则报告为命令 CRC 错误。
19
CMD_CRC_CHK_
ENABLE
注:
对于无响应、R3 响应和 R4 响应的命令,必须将 CRC Check
enable 设置为 0。
对于 tuning 命令,该位必须始终设置为 1 以启用 CRC 检查。
0x1(ENABLED)
:启用
0x0(DISABLED)
:禁用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
423/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
子命令标志
18
SUB_CMD_FLAG
此位区分主命令和子命令。
0x0(MAIN)
:主命令
0x1(SUB):子命令
响应类型选择
此位表示卡的预期响应类型。
17-16
RESP_TYPE_SEL
ECT
0x0(NO_RESP):无响应
0x1(RESP_LEN_136 :响应长度 136
0x2(RESP_LEN_48 :响应长度 48
0x3(RESP_LEN_48B :响应长度 48;响应后检查忙状态位
响应中断禁用
主机控制器支持响应检查功能,以避免主机驱动程序进行响应错
误检查的开销。控制器只能检查 R1 和 R5 的响应类型。
如果主机驱动程序检查响应错误,则将该位设置为 0,等待命令
完成中断,然后检查响应寄存器。
8
RESP_INT_DISAB
如果主机控制器检查响应错误,则将该位设置为 1,并将响应错
LE
误检查启用位设置为 1。无论命令完成信号启用与否,该位均禁
用命令完成中断。
注:在调整期间(当主机控制 2 寄存器中的执行调整位被设置
时),无论响应中断禁用设置如何,都不会生成命令完成中断。
-0x0(ENABLED):响应中断已启用
-0x1(DISABLED):响应中断已禁用
响应错误检查启用
主机控制器支持响应检查功能,以避免主机驱动程序进行响应错
误检查的开销。控制器只能检查 R1 和 R5 的响应类型。
如果主机控制器检查响应错误,则将该位设置为 1,并将响应中
7
RESP_ERR_CHK
_ENABLE
断禁用设置为 1。如果检测到错误,则在错误中断状态寄存器中
生成响应错误中断。
注:
-不得为 R1 和 R5 以外的任何响应类型启用响应错误检查。
-不得为调整命令启用响应检查。
-0x0(DISABLED):已禁用响应错误检查
-0x1(ENABLED):已启用响应错误检查
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
424/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
响应类型 R1/R5
当选择响应错误检查时,该位选择 R1 或 R5 作为响应类型。
在 R1 中检查的错误状态:
OUT_OF_RANGE
ADDRESS_ERROR
BLOCK_LEN_ERROR
WP_VIOLATION
CARD_IS_LOCKED
COM_CRC_ERROR
6
RESP_TYPE
CARD_ECC_FAILED
CC_ERROR
ERROR
Response Flags checked in R5:
COM_CRC_ERROR
ERROR
FUNCTION_NUMBER
OUT_OF_RANGE
Values:
0x0 (RESP_R1): R1 (Memory)
0x1 (RESP_R5): R5 (SDIO)
多块/单块选择
该位在使用数据线发出多个块传输命令时设置。如果该位设置为
5
MULTI_BLK_SEL
0,则无需设置块计数寄存器。
0x0(SINGLE):单块
0x1(MULTI)
:多块
数据传输方向选择
该位定义数据线数据传输的方向。主机驱动程序将该位设置为 1,
4
DATA_XFER_DIR
以将数据从 SD/eMMC 卡传输到主机控制器,所有其他命令将该
位设置为 0。
0x1(READ):读取(卡到主机)
0x0(WRITE):写入(主机到卡)
自动命令启用
此字段确定自动命令功能的使用。
3-2
AUTO_CMD_ENA
BLE
注意:在 SDIO 中,此字段必须设置为 00b(自动命令禁用)。
0x0(AUTO_CMD_DISABLED):自动命令禁用
0x1(AUTO_CMD12_ENABLED):自动 CMD12 启用
0x2(AUTO_CMD23_ENABLED):自动 CMD23 启用
0x3(AUTO_CMD_AUTO_SEL)
:自动命令自动选择
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
425/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
块计数启用
该位用于启用与多个块传输相关的块计数寄存器。如果该位设置
为 0,则块计数寄存器被禁用,这在执行无限传输时非常有用。
BLOCK_COUNT_
1
使用 ADMA 时,主机驱动程序必须将该位设置为 0。
ENABLE
0x1(ENABLED)
:启用
0x0(DISABLED)
:禁用
DMA 使能
此位启用 DMA 功能。如果该位设置为 1,则当主机驱动程序写入
命令寄存器时,DMA 操作开始。
0
您可以使用主机控制 1 寄存器中的 DMA select 选择一种 DMA 模
DMA_ENABLE
式。
0x1(ENABLED)
:DMA 数据传输
0x0(DISABLED):无数据传输或非 DMA 数据传输
CMD_XFER 位域
29.5.5
RESP (0x10 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
RESP01
31
0
RESP [31:0]
位域
名称
描述
命令响应
31-0
这些位反映了 SD/eMMC 响应字段的 39-8 位。
RESP01
注:对于 Auto CMD,32 位响应(响应字段的第 39-8 位)在
RESP67_R 寄存器中更新。
RESP 位域
29.5.6
BUF_DATA (0x20)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
BUF_DATA
31
0
BUF_DATA [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
426/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
BUF_DATA
SD 控制器 SDXC
描述
缓冲区数据
这些位允许访问主机控制器数据包缓冲区。
BUF_DATA 位域
0
0
CMD_INHIBIT
0
RO
0
0
DAT_INHIBIT
0
1
DAT_LINE_ACTIVE
0
2
RO
0
3
RO
0
4
DAT_7_4
0
5
RE_TUNE_REQ
x
6
RO
x
7
RO
8
WR_XFER_ACTIVE
9
RO
x
10
RD_XFER_ACTIVE
x
11
RO
0
12
RO
0
13
BUF_RD_ENABLE
0
14
BUF_WR_ENABLE
0
15
RSVD
16
RO
0
17
N/A
DAT_3_0
RO
0
18
CARD_INSERTED
0
19
RO
0
20
CARD_STABLE
0
RO
x
21
RO
22
WR_PROTECT_SW_LVL
23
CARD_DETECT_PIN_LEVEL
x
24
CMD_LINE_LVL
RSVD
0
N/A
0
25
RO
x
26
RO
x
27
CMD_ISSUE_ERR
N/A
x
28
RO
29
SUB_CMD_STAT
30
RSVD
31
PSTATE (0x24)
RO
29.5.7
0
0
0
PSTATE [31:0]
位域
名称
描述
子命令状态
28
SUB_CMD_STAT
该位用于区分主命令和子命令状态。
0x0(FALSE):主命令状态
0x1(TRUE):子命令状态
命令不是由错误发出的
如果在设置命令寄存器后由于除 Auto CMD12 错误以外的错误而
27
CMD_ISSUE_ERR
无法发出命令,则设置此位。
0x0(FALSE):发出命令时没有错误
0x1(TRUE):无法发出命令
命令行信号电平
24
CMD_LINE_LVL
此位用于检查命令线电平,以便从错误中恢复并进行调试。这些
位反映信号 sd_cmd_in 的值。
4 位数据线信号电平
23-20
DAT_3_0
此位用于检查数据线电平,以便从错误中恢复并进行调试。这些
位反映 sd_dat_in(低半字节)信号的值。
写保护开关引脚电平
19
WR_PROTECT_S
W_LVL
此位仅支持内存卡和组合卡。该位反映卡写入保护信号的同步值。
0x0(FALSE):写保护
0x1(TRUE):已启用写入
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
427/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
卡检测 Pin 电平
18
CARD_DETECT_
PIN_LEVEL
该位反映卡检测信号的反向同步值。
0x0(FALSE):没有卡存在
0x1(TRUE):存在卡
卡检测稳定
该位表示卡检测引脚电平的稳定性。如果此位设置为 1 且
17
CARD_STABLE
CARD_INSERTED 值为 0,则表示没有检测到卡。
0x0(FALSE):CARD_INSERTED 值复位或去抖动中,不可用
0x1(TRUE):CARD_INSERTED 值稳定
卡插入状态
此位指示是否已插入卡。主机控制器对该信号进行去抖动,以便
16
CARD_INSERTED
主机驱动器无需等待信号稳定。
0x0(FALSE):复位、去抖动或无卡
0x1(TRUE):有插入的卡
缓冲区读取启用
此位用于非 DMA 传输。如果主机缓冲区中存在有效数据,则设置
11
BUF_RD_ENABLE
此位。
0x0(DISABLED)
:读取禁用
0x1(ENABLED):读取启用
缓冲区写入启用
10
BUF_WR_ENABL
E
此位用于非 DMA 传输。如果空间可用于写入数据,则设置此位。
0x0(DISABLED)
:写入禁用
0x1(ENABLED):写入启用
读传输状态
9
RD_XFER_ACTIV
E
此位指示 SD/eMMC 模式下的读取传输是否处于活动状态。
0x0(INACTIVE):没有有效数据
0x1(ACTIVE):正在传输数据
写传输状态
8
WR_XFER_ACTIV
E
此位指示 SD/eMMC 模式下的写入传输是否处于活动状态。
0x0(INACTIVE):没有有效数据
0x1(ACTIVE):正在传输数据
数据线 [7:4] 信号电平
7-4
DAT_7_4
此位用于检查数据线路电平,以便从错误中恢复并进行调试。这
些位反映 sd_dat_in(上半字节)信号的值。
重新 tuning 请求
3
RE_TUNE_REQ
SDXC 不生成重新 tuning 请求。软件必须维护重新 tuning 计时
器。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
428/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
数据线状态
该位指示 SD/eMMC 总线上是否有数据线正在使用。
在读取传输的情况下,该位指示是否正在 SD/eMMC 数据线上执
行读传输。
DAT_LINE_ACTIV
2
在写入传输的情况下,该位指示是否正在 SD/eMMC 数据线上执
E
行写传输。
对于带数据传输的命令,此状态指示是否正在数据线上传输命令。
0x0(INACTIVE)
:数据线空闲
0x1(ACTIVE):数据线忙碌
禁止带数据的命令
此位在数据线忙碌或者正在进行读传输时设 1;
1
如果此位设置为 0,则表示主机控制器可以发出后续 SD/eMMC
DAT_INHIBIT
命令。
0x0(READY):可以发出使用数据线的命令
0x1(NOT_READY)
:无法发出使用数据线的命令
禁止命令
如果此位设置为 0,则表示未使用命令线,主机控制器可以使用
命令线发出 SD/eMMC 命令。
该位在写入命令寄存器时置 1。当接收到命令响应时,该位被清
0
除。
CMD_INHIBIT
该位不会被 auto CMD12/23 的响应清除,而是被读/写命令的响
应清除。
0x0(READY)
:主机控制器可以发出命令
0x1(NOT_READY)
:主机控制器不能发出命令
PSTATE 位域
0
0
0
1
0
RSVD
RW
DMA_SEL
EXT_DAT_XFER
x
2
N/A
x
3
HIGH_SPEED_EN
0
4
DAT_XFER_WIDTH
0
5
RW
0
6
RW
0
7
RW
x
8
RSVD
x
9
N/A
x
10
SD_BUS_PWR_VDD1
x
11
RW
0
12
SD_BUS_VOL_VDD1
0
13
RW
0
14
RSVD
0
15
N/A
STOP_BG_REQ
16
RW
x
17
CONTINUE_REQ
x
18
RW
x
19
INT_AT_BGAP
x
20
RD_WAIT_CTRL
0
21
RW
0
22
RW
0
23
RSVD
24
N/A
x
25
CARD_INT
x
N/A
x
26
RW
27
CARD_INSERT
x
28
RW
x
29
CARD_REMOVAL
30
RSVD
31
PROT_CTRL (0x28)
RW
29.5.8
0
0
x
PROT_CTRL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
429/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
移除 SD 卡时启用唤醒事件
此位通过正常中断状态寄存器中的卡移除断言启用唤醒事件。
26
CARD_REMOVAL
对于 SDIO 卡,卡信息结构(CIS)寄存器中的唤醒支持
(FN_WUS)不会影响该位。
0x0(DISABLED)
:禁用
0x1(ENABLED):启用
SD 卡插入时启用唤醒事件
此位通过正常中断状态寄存器中的卡插入断言启用唤醒事件。
25
CARD_INSERT
CIS 中的 FN_WUS(唤醒支持)不影响此位。
0x0(DISABLED)
:禁用
0x1(ENABLED):启用
卡中断启用唤醒事件
该位通过正常中断状态寄存器中的卡中断断言启用唤醒事件。如
24
CARD_INT
果 CIS 中的 FN_WUS(唤醒支持)设置为 1,则该位可设置为 1。
0x0(DISABLED):禁用
0x1(ENABLED)
:启用
块间隙中断
该位仅在 SDIO 卡的 4 位模式下有效,用于选择中断周期中的采
19
INT_AT_BGAP
样点。设置为 1 可在多块传输的块间隙处启用中断检测。
0x0(DISABLE):禁用
0x1(ENABLE)
:已启用
读等待控制
如果卡支持读取等待,则该位用于启用读取等待协议,以使用数
18
RD_WAIT_CTRL
据线 [2] 停止读取数据。
否则,主机控制器必须停止卡时钟以保存读取的数据。
0x0(DISABLE):禁用读取等待控制
0x1(ENABLE)
:启用读取等待控制
继续请求
此位用于重新启动,被块间隙停止请求停止的传输。当传输重新
17
CONTINUE_REQ
启动时,主机控制器自动清除该位。
如果 STOP_BG_REQ 位设置为 1,则忽略对此位的任何写入。
0x0(NO_AFFECT):无影响
0x1(RESTART):重新启动
块间隙停止
该位用于在非 DMA、SDMA 和 ADMA 传输的下一个块间隙停止
16
STOP_BG_REQ
执行读写传输。
0x0(XFER)
:传输
0x1(STOP):停止
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
430/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
SD/eMMC 总线电压选择
此位使主机驱动程序能够选择 SD/eMMC 卡的电压水平。在设置
此寄存器之前,主机驱动程序检查功能寄存器中的电压支持位。
11-9
SD_BUS_VOL_VD
D1
如果选择了不支持的电压,则主机系统不提供 SD 总线电压。
该字段中设置的值会反应到 SDXC 的输出信号 VSEL 上,用户可
以使用此信号切换外部供电。
0:3.3V
1:1.8V
SD 总线电源 VDD1
此位启用卡的 VDD1 电源。此设置在 SDXC 的 sd_vdd1_on 输出
上可用,因此可用于控制卡的 vdd1 电源。
8
SD_BUS_PWR_V
DD1
在设置该位之前,SD 主机驱动程序设置 SD 总线电压选择位。如
果主机控制器检测到无卡状态,则清除该位。
在 SD 模式下,如果该位被清除,主机控制器将通过清除
SYS_CTRL 寄存器中的 SD_CLK_EN 位来停止 SD 时钟。
0x0(OFF):电源关闭
0x1(ON)
:打开电源
扩展数据传输宽度
5
EXT_DAT_XFER
该位控制 8 位总线宽度模式。
0x1(EIGHT_BIT):8 位总线宽度
0x0(DEFAULT):总线宽度由数据传输宽度选择
DMA 选择
此字段用于选择 DMA 类型。
当主机控制 2 寄存器中的主机版本 4 启用为 1 时:
0x0(SDMA):已选择 SDMA
0x1(RSVD_ 位)
:保留
4-3
DMA_SEL
0x2(ADMA2)
:已选择 ADMA2
0x3(ADMA2_3):已选择 ADMA2 或 ADMA3
当主机控制 2 寄存器中的主机版本 4 启用为 0 时:
0x0: 已选择 SDMA
0x1:保留
0x2 : 已选择 32 位地址 ADMA2
0x3 : 已选择 64 位地址 ADMA2
高速启用
该位用于确定高速模式预设值的选择。在设置此位之前,主机驱
动程序检查功能寄存器中的高速支持。
2
HIGH_SPEED_EN
注:不管是否设置此位,SDXC 始终在 cclk_tx 时钟的上升沿输出
sd_cmd_out 和 sd_dat_out 线
0x1(HIGH_SPEED)
:高速模式
0x0(NORMAL_SPEED)
:正常速度模式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
431/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
数据传输宽度
此位选择主机控制器的数据传输宽度。主机驱动程序将其设置为
DAT_XFER_WIDT
1
与 SD/eMMC 卡的数据宽度相匹配。
H
0x1(FOUR_BIT):4 位模式
0x0(ONE_BIT):1 位模式
PROT_CTRL 位域
0
0
0
0
0
0
0
5
4
3
2
1
0
INTERNAL_CLK_EN
0
6
RW
0
7
SD_CLK_EN
0
8
INTERNAL_CLK_STABLE
0
9
RW
0
10
RW
x
11
PLL_ENABLE
12
RW
13
RSVD
14
CLK_GEN_SELECT
0
15
RW
0
16
N/A
x
17
UPPER_FREQ_SEL
18
RW
x
19
FREQ_SEL
x
20
RW
0
21
TOUT_CNT
0
22
RW
0
23
RSVD
24
N/A
x
25
SW_RST_ALL
x
N/A
x
26
RW
27
SW_RST_CMD
x
28
RW
x
29
SW_RST_DAT
30
RSVD
31
SYS_CTRL (0x2C)
RW
29.5.9
0
x
0
0
0
0
SYS_CTRL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
432/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
数据线的软件复位
该位用于 SD/eMMC 模式,它仅重置部分数据电路,DMA 电路也
会重置。
以下寄存器和位被该位清除:
Buffer Data Port 寄存器
-缓冲区被清除并初始化。
Present state 寄存器
-缓冲区读取启用
-缓冲区写入启用
-读传输激活
-写传输活动
26
SW_RST_DAT
-数据线激活
-命令禁止(DAT)
Block Gap Control 寄存器
-继续请求
-在块间隙请求时停止
Normal Interrupt status 寄存器
-缓冲区读取就绪
-缓冲区写就绪
-DMA 中断
-块间隙事件
-转移完成
0x0(FALSE):工作
0x1(TRUE):复位
命令线的软件复位
该位仅重置命令电路的一部分,以便能够发出命令。
此复位仅对命令发出电路有效(包括与命令禁止(CMD)控制相
关的响应错误状态),且不影响数据传输电路。
即使在处理子命令响应错误时执行此重置,主机控制器也可以继
25
SW_RST_CMD
续数据传输。
以下寄存器和位被该位清除:
当前状态寄存器:命令禁止(CMD)位
正常中断状态寄存器:命令完成位
错误中断状态:与命令禁止(CMD)位相关的响应错误状态
0x0(FALSE):工作
0x1(TRUE):复位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
433/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
全局软件复位
此重置影响除卡检测电路外的整个主机控制器。
在初始化期间,主机驱动程序将该位设置为 1 以重置主机控制器。
24
SW_RST_ALL
除功能寄存器外,所有寄存器均复位。如果此位设置为 1,主机驱
动程序必须发出重置命令并重新初始化卡。
0x0(FALSE):工作
0x1(TRUE):复位
数据超时计数器值。
该值确定检测数据线超时的间隔。通过将基准时钟 TMCLK 值除
以该值来生成超时时钟频率。
设置此寄存器时,通过清除数据超时错误状态启用(在错误中断
状态启用寄存器中),防止意外超时事件。这些位的值为:
19-16
TOUT_CNT
0xF:保留
0xE:TMCLK x 2^27
.........
0x1:TMCLK x 2^14
0x0:TMCLK x 2^13
注意:在 eMMC 模式下进行引导操作期间,应用程序必须在此位
中配置引导数据超时值(约 1 秒)。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
434/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
SDCLK/RCLK 频率选择
这些位用于选择 SDCLK 信号的频率。这些位取决于主机控制 2
寄存器中预设值启用的设置。
如果预设值启用 =0,则这些位由主机驱动程序设置。
如果预设值启用 =1,这些位将自动设置为预设值寄存器之一中指
定的值。
该值反映在卡时钟频率信号的下 8 位上。
10 位分频时钟模式:
0x3FF: 2046 分频时钟
..........
N: 2N 分频时钟
15-8
FREQ_SEL
..........
0x002: 4 分频时钟
0x001: 2 分频时钟
0x000:基准时钟(10MHz-255MHz)
可编程时钟模式:使主机系统能够选择细调 SD 时钟频率:
0x3FF:基准时钟 *M/1024
..........
N-1:基准时钟 *M/N
..........
0x002:基准时钟 *M/3
0x001:基准时钟 *M/2
0x000:基准时钟 *M
7-6
UPPER_FREQ_S
EL
这些位指定 10 位 SDCLK/RCLK 频率选择控制的上 2 位。该值反
映在卡时钟频率选择信号的上 2 位。
时钟发生器选择
该位用于在 SDCLK/RCLK 频率选择中选择时钟发生器模式。如
5
CLK_GEN_SELEC
T
果预设值 Enable=0,则该位由主机驱动程序设置。如果预设值启
用 =1,则该位自动设置为一个预设值寄存器中指定的值。
0x0(FALSE):分时钟模式
0x1(TRUE):可编程时钟模式
PLL 使能
该位用于激活 PLL(当主机版本 4 启用 =1 时适用)。当主机版本
4 Enable=0 时,内部时钟 EN 位可用于激活 PLL。
3
PLL_ENABLE
注:如果当主机版本 4 启用 =1 时,此位不用于激活 PLL,建议将
此位设置为“1”
。
0x0(FALSE):PLL 处于低功率模式
0x1(TRUE):PLL 已启用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
435/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
SD/eMMC 时钟启用
当设置为 0 时,该位停止 SDCLK 或 RCLK。当该位设置为 0 时,
2
可以更改 SDCLK/RCLK 频率选择位。
SD_CLK_EN
0x0(FALSE):禁用提供 SDCLK/RCLK
0x1(TRUE):启用提供 SDCLK/RCLK
内部时钟稳定
该位使主机驱动器能够在设置内部时钟启用位和 PLL 启用位后两
INTERNAL_CLK_
1
次检查时钟稳定性。
STABLE
0x0(FALSE):未准备好
0x1(TRUE):准备好了
内部时钟启用
当主机驱动程序未使用主机控制器或主机控制器等待唤醒中断时,
此位设置为 0。
主机控制器必须停止其内部时钟才能进入极低功耗状态。但是,
INTERNAL_CLK_
0
寄存器仍然可以读取和写入。
EN
注:如果该位不用于控制内部时钟(基本时钟和主时钟),建议将
该位设置为“1”
。
0x0(FALSE):停止
0x1(TRUE):振荡
SYS_CTRL 位域
CMD_COMPLETE
RW1C
0
BGAP_EVENT
0
XFER_COMPLETE
0
RW1C
0
RW1C
0
DMA_INTERRUPT
0
RW1C
0
BUF_RD_READY
x
1
BUF_WR_READY
x
2
RW1C
x
3
RW1C
0
4
CARD_INSERTION
0
5
RW1C
0
6
CARD_REMOVAL
0
7
RW1C
0
8
CARD_INTERRUPT
0
9
RO
0
10
RSVD
FX_EVENT
RE_TUNE_EVENT
RO
RO
0
11
N/A
CQE_EVENT
RW1C
0
CMD_TOUT_ERR
0
ERR_INTERRUPT
0
RO
0
RW1C
0
CMD_CRC_ERR
0
RW1C
0
CMD_IDX_ERR
0
CMD_END_BIT_ERR
0
RW1C
12
RW1C
13
DATA_TOUT_ERR
14
RW1C
15
DATA_CRC_ERR
16
RW1C
17
DATA_END_BIT_ERR
18
RW1C
19
CUR_LMT_ERR
20
RW1C
21
RW1C
22
ADMA_ERR
23
AUTO_CMD_ERR
24
RW1C
25
RESP_ERR
x
26
TUNING_ERR
x
27
RW1C
N/A
x
28
RW1C
29
BOOT_ACK_ERR
30
RSVD
31
INT_STAT (0x30)
RW1C
29.5.10
0
0
0
INT_STAT [31:0]
位域
名称
描述
启动确认错误
28
BOOT_ACK_ERR
当引导确认超时或检测到值不是 010 的引导确认状态时,设置此
位。这仅在 eMMC 模式下需要启动确认时适用。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
436/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
响应错误
主机控制器版本 4.00 支持响应错误检查功能,以避免在 DMA 执
行期间主机驱动程序进行响应错误检查的开销。
如果传输模式寄存器中的响应错误检查启用设置为 1,主机控制
27
RESP_ERR
器将检查 R1 或 R5 响应。
如果在响应中检测到错误,则该位设置为 1。这适用于 SD/eMMC
模式。
0x0(FALSE):无错误
0x1(TRUE):错误
Tuning 错误
当在 Tuning 电路中检测到不可恢复的错误(Tuning 过程中除外)
时,设置该位(在 Tuning 过程中出现的错误由主机控制 2 寄存器
中的采样时钟选择指示)。
通过检测到 Tuning 错误,主机驱动程序需要中止正在执行的命令
并执行 Tuning。要重置 Tuning 电路,在执行 Tuning 程序之前,
26
TUNING_ERR
采样时钟选择设置为 0。
Tuning 错误的优先级高于数据传输期间生成的其他错误中断。
通过检测到 Tuning 错误,主机驱动程序必须丢弃当前读/写命令
传输的数据,并在从 Tuning 电路错误中检索到主机控制器后重试
数据传输。
0x0(FALSE):无错误
0x1(TRUE):错误
DMA 错误
当主机控制器在基于 ADMA 的数据传输过程中检测到错误时,设
置此位。错误可能是由以下原因造成的:
从系统总线(主 I/F)接收到错误响应
ADMA3、ADMA2 描述符无效
CQE 任务或传输描述符无效
25
ADMA_ERR
发生错误时,ADMA 的状态保存在 ADMA 错误状态寄存器中。
在 eMMC CQE 模式下:
主机控制器在 ST_FDS 状态下检测到无效描述符数据(Valid=0)
时生成此中断。
ADMA 错误状态中的 ADMA 错误状态表示在 ST_FDS 状态中发
生了错误。主机驱动程序可能会发现错误描述符上未设置有效位。
0x0(FALSE):无错误
0x1(TRUE):错误
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
437/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
自动命令错误
此错误状态由 SD/eMMC 模式下的 Auto CMD12 和 Auto CMD23
使用。
当检测到自动 CMD 错误状态寄存器中的任何位 D00 到 D05 已从
24
AUTO_CMD_ERR
0 更改为 1 时,设置此位。
D07 在自动 CMD12 的情况下有效。当该位设置为 1 时,自动
CMD 错误状态寄存器有效,可通过清除该位进行清除。
0x0(FALSE):无错误
0x1(TRUE):错误
电流限制错误
通过在电源控制寄存器中设置 SD 总线电源位,主机控制器被请
求为 SD 总线供电。
如果主机控制器支持电流限制功能,则可以通过停止向卡供电来
保护其免受非法卡的侵害,在这种情况下,该位表示故障状态。
23
CUR_LMT_ERR
此位的读数为 1 表示主机控制器由于某些故障而未向 SD 卡供电。
此位的读数为 0 表示主机控制器正在供电,并且没有发生错误。
主机控制器可能需要一些采样时间来检测电流限制。SDXC 主机
控制器不支持此功能,此位始终设置为 0。
0x0(FALSE)无错误
0x1(TRUE):电源故障
数据结束位错误
22
DATA_END_BIT_
ERR
当在使用数据线的读取数据的结束位位置或 CRC 状态的结束位
位置检测到 0 时,会发生此错误。
0x0(FALSE):无错误
0x1(TRUE):错误
数据 CRC 错误
在 SD/eMMC 模式下,当传输使用 DAT 线的读取数据时检测到
21
DATA_CRC_ERR
CRC 错误,当检测到值不是 010 的写入 CRC 状态,或当写入
CRC 状态超时时,会发生此错误。
0x0(FALSE):无错误
0x1(TRUE):错误
数据超时错误
当检测到以下超时条件之一时,此位在 SD/eMMC 模式下设置:
R1b、R5b 类型的忙超时
20
DATA_TOUT_ER
R
写入 CRC 状态后的忙超时
写入 CRC 状态超时
读取数据超时
0x0(FALSE):无错误
0x1(TRUE):超时
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
438/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
命令索引错误
如果 SD/eMMC 模式下的命令响应中出现命令索引错误,则设置
19
CMD_IDX_ERR
此位。
0x0(FALSE):无错误
0x1(TRUE):错误
命令结束位错误
18
CMD_END_BIT_E
RR
在 SD/eMMC 模式下检测到命令响应的结束位为 0 时设置此位。
0x0(FALSE):无错误
0x1(TRUE):结束位错误
命令 CRC 错误
在以下两种情况下,在 SD/eMMC 模式下生成命令 CRC 错误。
如果返回响应且命令超时错误设置为 0(表示没有超时)
,则在命
令响应中检测到 CRC 错误时,此位设置为 1。
当发出命令时,主机控制器通过监视命令行来检测命令行冲突。
17
CMD_CRC_ERR
如果主机控制器将命令行驱动至 1 级,但在下一个 SD 时钟边缘
检测到命令行上的 0 级,则主机控制器中止命令(停止驱动命令
行)并将该位设置为 1。
命令超时错误也设置为 1,以区分命令行冲突。
0x0(FALSE):无错误
0x1(TRUE):生成 CRC 错误
命令超时错误
在 SD/eMMC 模式下,仅当在命令结束位的 64 个 SD 时钟周期
内未返回响应时,才设置此位。
16
CMD_TOUT_ERR
如果主机控制器检测到 CMD 行冲突以及命令 CRC 错误位,则该
位设置为 1,而不等待 64 个 SD/eMMC 卡时钟周期。
0x0(FALSE):无错误
0x1(TRUE):超时
错误中断
15
ERR_INTERRUPT
如果错误中断状态寄存器中的任何位置位,则该位置位。
0x0(FALSE):无错误
0x1(TRUE):错误
命令队列事件
如果在 eMMC/SD 模式下发生命令队列/加密相关事件,则会设置
14
CQE_EVENT
此状态。
0x0(FALSE):无事件
0x1(TRUE):检测到命令队列事件
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
439/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
FX 事件
在传输模式寄存器中,当响应寄存器的 R[14] 设置为 1 且响应类
13
FX_EVENT
型 R1/R5 设置为 0 时,设置此状态。该中断与响应检查功能一起
使用。
0x0(FALSE):无事件
0x1(TRUE):检测到 FX 事件
12
RE_TUNE_EVENT
重新 tuning 事件
如果重新 tuning 请求从 0 更改为 1,则设置此位
卡中断
8
CARD_INTERRUP
T
此位反映 SD 模式下数据线 [1] 的同步值
0x0(FALSE):无卡中断
0x1(TRUE):生成卡中断
卡移除
7
CARD_REMOVAL
如果卡插入状态寄存器从 1 变为 0,则设置此位。
0x0(FALSE):卡状态稳定或正在去抖动
0x1(TRUE):卡已移除
卡插入
6
CARD_INSERTIO
N
如果卡插入状态寄存器从 0 变为 0,则设置此位。
0x0(FALSE):卡状态稳定或正在去抖动
0x1(TRUE):卡已插入
缓冲区读取就绪
5
BUF_RD_READY
如果缓冲区读取启用从 0 更改为 1,则设置此位。
0x0(FALSE):未准备好读取缓冲区
0x1(TRUE):已准备好读取缓冲区
缓冲区写入就绪
4
BUF_WR_READY
如果缓冲区写入启用从 0 更改为 1,则设置此位。
0x0(FALSE):未准备写入缓冲区
0x1(TRUE):已准备好写入缓冲区
DMA 中断
如果主机控制器在传输期间检测到 SDMA 缓冲区边界,则设置此
位。
3
DMA_INTERRUPT
对于 ADMA,通过在描述符表中设置 Int 字段,主机控制器生成
该中断。传输完成后不会生成此中断。
0x0(FALSE):没有 DMA 中断
0x1(TRUE):生成 DMA 中断
块间隙事件
当读/写传输由于 STOP_BG_REQ,而在块间隙停止时,设置此
2
BGAP_EVENT
位。
0x0(FALSE):无块间隙事件
0x1(TRUE):传输在块间隙处停止
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
440/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
传输完成
该位在读/写传输和状态为 busy 的命令完成时设置。
XFER_COMPLET
1
0x0(FALSE):未完成
E
0x1(TRUE):命令执行已完成
命令完成
在 SD/eMMC 模式下,此位在响应的结束位(Auto CMD12 和
Auto CMD23 除外)时设置。
0
当传输模式寄存器中的响应中断禁用设置为 1 时,不会生成该中
CMD_COMPLETE
断。
0x0(FALSE):没有命令完成
0x1(TRUE):命令完成
INT_STAT 位域
DMA_INTERRUPT_STAT_EN
BGAP_EVENT_STAT_EN
XFER_COMPLETE_STAT_EN
CMD_COMPLETE_STAT_EN
RW
RW
RW
RW
0
BUF_RD_READY_STAT_EN
1
BUF_WR_READY_STAT_EN
2
RW
3
RW
x
4
CARD_INSERTION_STAT_EN
x
5
RW
x
6
CARD_REMOVAL_STAT_EN
0
7
RW
0
8
CARD_INTERRUPT_STAT_EN
0
9
RW
x
10
RSVD
0
11
N/A
FX_EVENT_STAT_EN
RE_TUNE_EVENT_STAT_EN
RW
0
RW
0
CQE_EVENT_STAT_EN
0
RW
0
RSVD
0
CMD_TOUT_ERR_STAT_EN
0
RW
0
N/A
0
CMD_CRC_ERR_STAT_EN
0
RW
0
CMD_IDX_ERR_STAT_EN
0
CMD_END_BIT_ERR_STAT_EN
0
RW
12
RW
13
DATA_TOUT_ERR_STAT_EN
14
RW
15
DATA_CRC_ERR_STAT_EN
16
RW
17
DATA_END_BIT_ERR_STAT_EN
18
RW
19
CUR_LMT_ERR_STAT_EN
20
RW
21
RW
22
ADMA_ERR_STAT_EN
23
AUTO_CMD_ERR_STAT_EN
24
RW
25
RESP_ERR_STAT_EN
x
26
TUNING_ERR_STAT_EN
x
27
RW
N/A
x
28
RW
29
BOOT_ACK_ERR_STAT_EN
30
RSVD
31
INT_STAT_EN (0x34)
RW
29.5.11
0
0
0
0
0
0
0
0
0
INT_STAT_EN [31:0]
位域
名称
描述
引导确认错误(仅限 eMMC 模式)
28
BOOT_ACK_ERR
_STAT_EN
将该位设置为 1 可在错误中断状态寄存器(INT_STAT)中设置引
导确认错误。
0x0(FALSE):屏蔽
0x1(TRUE):已启用
27
26
RESP_ERR_STAT
_EN
TUNING_ERR_ST
AT_EN
响应错误状态启用(仅 SD 模式)
0x0(FALSE):屏蔽
0x1(TRUE):已启用
tuning 错误状态启用(仅限 UHS-I 模式)
0x0(FALSE):屏蔽
0x1(TRUE):已启用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
441/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
25
24
23
22
21
20
19
18
17
16
14
13
12
名称
ADMA_ERR_STA
T_EN
AUTO_CMD_ERR
_STAT_EN
CUR_LMT_ERR_
STAT_EN
DATA_END_BIT_
ERR_STAT_EN
DATA_CRC_ERR
_STAT_EN
DATA_TOUT_ER
R_STAT_EN
CMD_IDX_ERR_S
TAT_EN
CMD_END_BIT_E
RR_STAT_EN
CMD_CRC_ERR_
STAT_EN
CMD_TOUT_ERR
_STAT_EN
CQE_EVENT_STA
T_EN
FX_EVENT_STAT
_EN
RE_TUNE_EVENT
_STAT_EN
SD 控制器 SDXC
描述
ADMA 错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
自动命令错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
电流限制错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
数据结束位错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
数据 CRC 错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
数据超时错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令索引错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令结束位错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令 CRC 错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令超时错误状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
CQE 事件状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
FX 事件状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
重 tuning 事件状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
442/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
卡中断状态启用
如果该位设置为 0,主机控制器将清除对系统的中断请求。
当该位被清除时,卡中断检测停止,当该位设置为 1 时,卡中断
检测重新启动。
8
CARD_INTERRUP
T_STAT_EN
主机驱动程序可在维修卡中断之前清除卡中断状态启用,并可在
清除卡的所有中断请求后再次设置该位,以防止意外中断。
通过将该位设置为 0,中断输入必须被实现屏蔽,以便中断输入
在任何状态下都不受外部信号的影响(例如,浮动状态)。
0x0(FALSE):屏蔽
0x1(TRUE):已启用
7
6
5
4
3
2
1
0
CARD_REMOVAL
_STAT_EN
CARD_INSERTIO
N_STAT_EN
BUF_RD_READY_
STAT_EN
BUF_WR_READY
_STAT_EN
DMA_INTERRUPT
_STAT_EN
BGAP_EVENT_ST
AT_EN
XFER_COMPLET
E_STAT_EN
CMD_COMPLETE
_STAT_EN
卡移除状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
卡插入状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
读取缓冲区就绪状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
写入缓冲区就绪状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
DMA 中断状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
块间隙事件状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
传输完成状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令完成状态启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
INT_STAT_EN 位域
29.5.12
INT_SIGNAL_EN (0x38)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
443/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMA_INTERRUPT_SIGNAL_EN
BGAP_EVENT_SIGNAL_EN
XFER_COMPLETE_SIGNAL_EN
CMD_COMPLETE_SIGNAL_EN
RW
RW
RW
RW
0
BUF_RD_READY_SIGNAL_EN
1
BUF_WR_READY_SIGNAL_EN
x
2
RW
x
3
RW
x
4
CARD_INSERTION_SIGNAL_EN
0
5
RW
0
6
CARD_REMOVAL_SIGNAL_EN
0
7
RW
x
8
CARD_INTERRUPT_SIGNAL_EN
0
9
RW
0
10
RSVD
0
11
N/A
0
FX_EVENT_SIGNAL_EN
0
RE_TUNE_EVENT_SIGNAL_EN
0
RW
0
RW
0
CQE_EVENT_SIGNAL_EN
0
RW
RW
0
12
RSVD
CMD_CRC_ERR_SIGNAL_EN
RW
0
13
CMD_TOUT_ERR_SIGNAL_EN
CMD_IDX_ERR_SIGNAL_EN
CMD_END_BIT_ERR_SIGNAL_EN
RW
0
14
RW
DATA_TOUT_ERR_SIGNAL_EN
RW
0
15
N/A
DATA_CRC_ERR_SIGNAL_EN
RW
16
DATA_END_BIT_ERR_SIGNAL_EN
17
RW
18
CUR_LMT_ERR_SIGNAL_EN
19
RW
20
RW
21
ADMA_ERR_SIGNAL_EN
22
AUTO_CMD_ERR_SIGNAL_EN
23
RW
24
RESP_ERR_SIGNAL_EN
25
TUNING_ERR_SIGNAL_EN
x
26
RW
x
27
RW
N/A
x
28
BOOT_ACK_ERR_SIGNAL_EN
29
RW
30
RSVD
31
SD 控制器 SDXC
0
0
0
0
0
0
0
0
0
INT_SIGNAL_EN [31:0]
位域
名称
描述
引导确认错误(仅限 eMMC 模式)。
28
BOOT_ACK_ERR
_SIGNAL_EN
当设置错误中断状态寄存器中的引导确认错误时,将该位设置为
1 可生成中断信号。
0x0(FALSE):屏蔽
0x1(TRUE):已启用
27
26
25
24
23
22
21
RESP_ERR_SIGN
AL_EN
TUNING_ERR_SI
GNAL_EN
ADMA_ERR_SIGN
AL_EN
AUTO_CMD_ERR
_SIGNAL_EN
CUR_LMT_ERR_
SIGNAL_EN
DATA_END_BIT_
ERR_SIGNAL_EN
DATA_CRC_ERR
_SIGNAL_EN
响应错误信号启用(仅 SD 模式)
0x0(FALSE):屏蔽
0x1(TRUE):已启用
tuning 错误信号启用(仅限 UHS-I 模式)
0x0(FALSE):屏蔽
0x1(TRUE):已启用
ADMA 错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
自动命令错误信号启动
0x0(FALSE):屏蔽
0x1(TRUE):已启用
电流限制错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
数据结束位错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
数据 CRC 错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
444/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
20
19
18
17
16
14
13
12
8
7
6
5
4
名称
DATA_TOUT_ER
R_SIGNAL_EN
CMD_IDX_ERR_S
IGNAL_EN
CMD_END_BIT_E
RR_SIGNAL_EN
CMD_CRC_ERR_
SIGNAL_EN
CMD_TOUT_ERR
_SIGNAL_EN
CQE_EVENT_SIG
NAL_EN
FX_EVENT_SIGN
AL_EN
RE_TUNE_EVENT
_SIGNAL_EN
CARD_INTERRUP
T_SIGNAL_EN
CARD_REMOVAL
_SIGNAL_EN
CARD_INSERTIO
N_SIGNAL_EN
BUF_RD_READY_
SIGNAL_EN
BUF_WR_READY
_SIGNAL_EN
SD 控制器 SDXC
描述
数据超时错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令索引错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令结束位错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令 CRC 错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令超时错误信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
命令队列引擎事件信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
FX 事件信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
重 tuning 事件信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
卡中断信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
卡移除信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
卡插入信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
缓冲区读取准备好信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
缓冲区写入准备好信号启用
0x0(FALSE):屏蔽
0x1(TRUE):已启用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
445/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
描述
DMA 中断信号启用
DMA_INTERRUPT
3
0x0(FALSE):屏蔽
_SIGNAL_EN
0x1(TRUE):已启用
块间隙事件信号启动
BGAP_EVENT_SI
2
0x0(FALSE):屏蔽
GNAL_EN
0x1(TRUE):已启用
传输完成信号启动
XFER_COMPLET
1
0x0(FALSE):屏蔽
E_SIGNAL_EN
0x1(TRUE):已启用
命令完成信号启动
CMD_COMPLETE
0
SD 控制器 SDXC
0x0(FALSE):屏蔽
_SIGNAL_EN
0x1(TRUE):已启用
INT_SIGNAL_EN 位域
AC_HOST_CTRL (0x3C)
2
1
0
AUTO_CMD12_NOT_EXEC
x
3
RO
x
RSVD
x
N/A
x
4
AUTO_CMD_CRC_ERR
x
5
AUTO_CMD_TOUT_ERR
x
6
RO
x
7
RO
x
8
AUTO_CMD_EBIT_ERR
0
9
RO
0
10
AUTO_CMD_IDX_ERR
0
11
AUTO_CMD_RESP_ERR
12
RO
13
RO
14
UHS_MODE_SEL
15
RSVD
0
16
RW
SIGNALING_EN
x
17
N/A
x
18
RW
0
RSVD
0
19
CMD_NOT_ISSUED_AUTO_CMD12
x
20
RO
x
21
N/A
0
EXEC_TUNING
0
22
RW
0
23
SAMPLE_CLK_SEL
RW
x
24
RW
CMD23_ENABLE
ADMA2_LEN_MODE
RW
0
25
RSVD
HOST_VER4_ENABLE
RW
0
RSVD
26
ASYNC_INT_ENABLE
27
RW
28
N/A
29
PRESET_VAL_ENABLE
30
RW
31
N/A
29.5.13
0
x
0
0
0
0
0
0
AC_HOST_CTRL [31:0]
位域
名称
描述
预设值启用
此位启用 SDCLK 频率和驱动器强度预设值寄存器的自动选择。
31
PRESET_VAL_EN
ABLE
设置预设值启用时,SDCLK 频率生成(频率选择和时钟发生器选
择)和驱动器强度选择由控制器执行。
这些值是根据所选速度模式从一组预设值寄存器中选择的。
0x0(FALSE):SDCLK 和驱动程序强度由主机驱动程序控制
0x1(TRUE):启用按预设值自动选择
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
446/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
异步中断启用
30
ASYNC_INT_ENA
BLE
如果卡支持异步中断,并且在功能寄存器中将异步中断支持设置
为 1,则可以设置此位。
0x0(FALSE):已禁用
0x1(TRUE):已启用
主机版本 4 启用
此位选择版本 3.00 兼容模式或版本 4 模式。
针对主机版本 4 模式修改了以下字段的功能:
SDMA 地址:SDMA 使用 ADMA 系统地址(05Fh-058h)代替
SDMA 系统地址寄存器(003h-000h)
ADMA2/ADMA3 选择:ADMA3 由主机控制 1 寄存器中的 DMA
选择选择
28
HOST_VER4_ENA
BLE
64 位 ADMA 描述符大小:当 64 位寻址设置为 1 时,使用 128 位
描述符而不是 96 位描述符
32 位/64 位系统寻址选择:32 位或 64 位系统寻址由该寄存器中
的 64 位寻址位选择
32 位块计数:SDMA 系统地址寄存器(003h-000h)修改为 32
位块计数寄存器
注意:在主机版本小于 4 模式(主机版本 4 启用 =0)下运行时,
建议不要对 ADMA3 集成描述符地址寄存器进行编程。
0x0(FALSE):版本 3.00 兼容模式
0x1(TRUE):版本 4 模式
CMD23 启用
如果卡支持 CMD23,则此位设置为 1。此位用于为 ADMA3 数据
27
CMD23_ENABLE
传输选择 Auto CMD23 或 Auto CMD12。
0x0(FALSE):禁用自动 CMD23
0x1(TRUE):已启用自动 CMD23
ADMA2 长度模式
26
ADMA2_LEN_MO
DE
该位选择 ADMA2 长度模式为 16 位或 26 位。
0x0(FALSE):16 位数据长度模式
0x1(TRUE):26 位数据长度模式
采样时钟选择
主机控制器使用该位选择 SD/eMMC 模式下的采样时钟,以接收
CMD 和 DAT。
23
SAMPLE_CLK_SE
L
此位由 tuning 程序设置,并在 tuning 完成后(清除“执行
tuning”时)有效。
将该位设置为 1 表示 tuning 成功完成,将该位设置为 0 表示
tuning 失败。
0x0(FALSE):使用固定时钟对数据进行采样
0x1(TRUE):tuning 时钟用于采样数据
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
447/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
执行 tuning
该位设置为 1,以在 UHS-I/eMMC 速度模式下启动 tuning 程序,
22
EXEC_TUNING
tuning 程序完成时,该位自动清除
0x0(FALSE):未 tuning 或 tuning 已完成
0x1(TRUE):执行 tuning
1.8V 信号使能
该位控制 UHS-I/eMMC 速度模式下 I/O 单元的电压调节器。
将该位从 0 设置为 1 开始将信号电压从 3.3V 更改为 1.8V。
如果切换到 1.8 信令失败,主机控制器将清除该位。该值反映在
19
SIGNALING_EN
uhs1_SWV_en 引脚上。
注:必须为所有 UHS-I 速度模式
(SDR12/SDR25/SDR50/SDR104/DDR50)设置该位。
0x0(V_3_3):3.3V 信号
0x1(V_1_8):1.8V 信号
UHS 模式/eMMC 速度模式选择
这些位用于在 SD 操作模式下选择 UHS 模式。在 eMMC 模式下,
这些位用于选择 eMMC 速度模式。
UHS 模式(仅限 SD/UHS-II 模式)
:
0x0(SDR12):SDR12/Legacy
0x1(SDR25):SDR25/高速 SDR
0x2(SDR50):SDR50
0x3(SDR104):SDR104/HS200
0x4(DDR50):DDR50/高速 DDR
0x5(RSVD5):保留
18-16
UHS_MODE_SEL
0x6(RSVD6):保留
0x7(UHS2):UHS-II/HS400
eMMC 速度模式(仅限 eMMC 模式)
:
0x0:遗留
0x1:高速 SDR
0x2:保留
0x3:HS200
0x4:高速 DDR
0x5:保留
0x6:保留
0x7:HS400
命令不是由自动 CMD12 发出的错误
如果此位设置为 1,则由于此寄存器中的自动 CMD12 错误
7
CMD_NOT_ISSUE (D04-D01),不会执行 CMD_wo_DAT。
D_AUTO_CMD12
当 Auto CMD23 生成 Auto CMD 错误时,此位设置为 0。
0x1(TRUE):未发布
0x0(FALSE):无错误
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
448/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
自动命令响应错误
当传输模式寄存器中的响应错误检查启用设置为 1 且在自动
5
AUTO_CMD_RES
P_ERR
CMD12 或 CMD13 的 R1 响应中检测到错误时,设置此位。
如果 D00 到 D04 之间的任何位设置为 1,则忽略此状态。
0x1(TRUE):错误
0x0(FALSE):无错误
自动命令索引错误
4
AUTO_CMD_IDX_
ERR
如果响应命令时出现命令索引错误,则设置此位。
0x1(TRUE):错误
0x0(FALSE):无错误
自动指令结束位错误
3
AUTO_CMD_EBIT
_ERR
该位在检测到命令响应的结束位为 0 时设置。
0x1(TRUE):生成结束位错误
0x0(FALSE):无错误
自动指令 CRC 错误
2
AUTO_CMD_CRC
_ERR
在命令响应中检测 CRC 错误时设置此位。
0x1(TRUE):生成 CRC 错误
0x0(FALSE):无错误
自动命令超时错误
如果从命令的结束位返回 64 个 SDCLK 周期没有响应,则设置此
1
AUTO_CMD_TOU
T_ERR
位。
如果该位设置为 1,则错误状态位(D04-D01)无意义。
0x1(TRUE):超时
0x0(FALSE):无错误
未执行自动 CMD12
如果由于命令错误而未启动多个内存块数据传输,则不会设置此
位,因为无需发出自动 CMD12。
0
AUTO_CMD12_N
OT_EXEC
将此位设置为 1 意味着主机控制器由于某些错误而无法发出 Auto
CMD12 以停止多个内存块数据传输。
如果该位设置为 1,则错误状态位(D04-D01)无意义。
当 Auto CMD23 生成 Auto CMD 错误时,此位设置为 0。
0x1(TRUE):未执行
0x0(FALSE):已执行
AC_HOST_CTRL 位域
29.5.14
CAPABILITIES1 (0x40)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
449/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
0
0
0
8
0
0
0
0
0
7
6
0
x
5
4
3
0
0
0
2
1
0
0
0
0
TOUT_CLK_FREQ
0
9
RO
0
10
RSVD
x
11
N/A
0
12
TOUT_CLK_UNIT
0
13
RO
0
14
BASE_CLK_FREQ
RO
0
15
RO
ADMA2_SUPPORT
EMBEDDED_8_BIT
RO
0
16
MAX_BLK_LEN
RSVD
RO
N/A
0
17
RO
SDMA_SUPPORT
18
HIGH_SPEED_SUPPORT
19
RO
20
SUS_RES_SUPPORT
21
RO
22
RO
23
VOLT_30
x
24
VOLT_33
RSVD
N/A
x
25
RO
0
26
VOLT_18
0
27
RO
28
RO
RO
0
29
ASYNC_INT_SUPPORT
30
SLOT_TYPE_R
31
SD 控制器 SDXC
CAPABILITIES1 [31:0]
位域
名称
描述
插槽类型
这些位表示特定主机系统对插槽的使用。
31-30
SLOT_TYPE_R
0x0(REMOVABLE_SLOT):可移动卡插槽
0x1(EMBEDDED_SLOT):一个设备的嵌入式插槽
0x2(SHARED_SLOT)
:共享总线插槽(SD 模式)
0x3(UHS2_EMBEDDED_SLOT)
:UHS-II 多个嵌入式设备
29
ASYNC_INT_SUP
PORT
异步中断支持(仅限 SD 模式)
0x0(FALSE):不支持异步中断
0x1(TRUE):支持异步中断
1.8V 电压支持
26
VOLT_18
0x0 (FALSE): 不支持 1.8V
0x1 (TRUE): 支持 1.8V
SD 3.0V 或嵌入式 1.2V 的电压支持
25
VOLT_30
0x0(FALSE):不支持 SD 3.0V 或嵌入式 1.2V
0x1(TRUE:支持 SD 3.0V 或嵌入式
3.3V 电压支持
24
VOLT_33
0x0 (FALSE): 不支持 3.3V
0x1 (TRUE): 支持 3.3V
暂停/恢复支持
此位指示主机控制器是否支持挂起/恢复功能。
23
SUS_RES_SUPP
ORT
如果该位为 0,则主机驱动程序不会发出 Suspend 或 Resume 命
令,因为不支持 Suspend 和 Resume 机制。
0x0(FALSE):不支持
0x1(TRUE):支持
SDMA 支持
此位指示主机控制器是否能够使用 SDMA 在系统内存和主机控制
22
SDMA_SUPPORT
器之间直接传输数据。
0x0(FALSE):不支持 SDMA
0x1(TRUE):支持 SDMA
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
450/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
高速支持
21
HIGH_SPEED_SU
PPORT
此位指示主机控制器和主机系统是否支持高速模式,以及它们是
否可以提供 25 MHz 到 50 MHz 的 SD 时钟频率。
0x0(FALSE):不支持高速
0x1(TRUE):支持高速
ADMA2 支持
19
ADMA2_SUPPOR
T
此位指示主机控制器是否能够使用 ADMA2。
0x0(FALSE):不支持 ADMA2
0x1(TRUE):支持 ADMA2
嵌入式设备的 8 位支持
18
EMBEDDED_8_BI
T
此位指示主机控制器是否能够使用 8 位总线宽度模式。当插槽类
型设置为 10b 时,此位无效。
0x0(FALSE):不支持 8 位总线宽度
0x1(TRUE):支持 8 位总线宽度
最大块长度
此位表示主机驱动程序可以读取和写入主机控制器中缓冲区的最
大块大小。
缓冲区在无等待周期的情况下传输此块大小。SD 内存的传输块长
17-16
MAX_BLK_LEN
度始终为 512 字节,与此位无关
0x0:512 字节
0x1:1024 字节
0x2:2048 字节
0x3:保留
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
451/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
SD 时钟的基准时钟频率
这些位表示 SD 时钟的基本(最大)时钟频率。这些位的定义取
决于主机控制器版本。
6 位基本时钟频率:主机控制器版本 1.00 和 2.00 支持此模式。
上 2 位无效,始终为 0。单位值为 1 MHz。支持的时钟范围为 10
MHz 至 63 MHz。
-0x00:通过其他方法获取信息
-0x01:1 兆赫
-0x02:2 兆赫
-.............
-0x3F:63 兆赫
15-8
BASE_CLK_FREQ
-0x40-0xFF: 不支持
8 位基本时钟频率:主机控制器版本 3.00 支持此模式。单位值为
1 MHz。支持的时钟范围为 10 MHz 至 255 MHz。
-0x00:通过其他方法获取信息
-0x01:1 兆赫
-0x02:2 兆赫
-............
-0xFF:255 兆赫
如果频率为 16.5 MHz,则较大的值设置为 0001001b(17 MHz),
因为主机驱动程序使用此值来计算时钟分频器值,并且它不超过
SD 时钟频率的上限。
如果这些位都为 0,则主机系统必须使用不同的方法获取信息。
超时时钟单位
7
TOUT_CLK_UNIT
此位显示用于检测数据超时错误的基本时钟频率单位。
0x0:KHz
0x1:MHz
超时时钟频率
此位显示用于检测数据超时错误的基本时钟频率。超时时钟单元
定义超时时钟频率的单位。它可以是 KHz 或 MHz。
0x00:通过其他方法获取信息
5-0
TOUT_CLK_FREQ
0x01:1KHz/1MHz
0x02:2KHz/2MHz
0x03:3KHz/3MHz
...........
0x3F:63KHz/63MHz
CAPABILITIES1 位域
29.5.15
CAPABILITIES2 (0x44)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
452/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
1
0
SDR50_SUPPORT
0
2
RO
0
3
DDR50_SUPPORT
0
4
SDR104_SUPPORT
0
5
RO
x
6
RO
0
7
UHS2_SUPPORT
RO
RO
0
8
RO
0
9
DRV_TYPEA
0
10
DRV_TYPEC
0
11
RO
0
0
12
RO
0
13
RSVD
0
14
DRV_TYPED
0
15
RETUNE_CNT
0
16
RO
x
17
RO
x
18
N/A
x
19
RSVD
20
USE_TUNING_SDR50
21
RO
22
RE_TUNING_MODES
23
CLK_MUL
24
RSVD
0
25
N/A
0
26
N/A
x
ADMA3_SUPPORT
x
27
RO
N/A
x
28
VDD2_18V_SUPPORT
29
RO
30
RSVD
31
SD 控制器 SDXC
x
0
0
0
0
0
0
0
CAPABILITIES2 [31:0]
位域
名称
描述
1.8V VDD2 支持
28
VDD2_18V_SUPP
ORT
此位表示主机系统支持 VDD2。
0x0(FALSE):不支持 1.8V VDD2
0x1(TRUE):支持 1.8V VDD2
ADMA3 支持
27
ADMA3_SUPPOR
T
此位表示主机系统是否支持 ADMA3
0x0(FALSE):不支持 ADMA3
0x1(TRUE):支持 ADMA3
时钟倍增器
这些位表示可编程时钟发生器的时钟乘法器。将这些位设置为 0
意味着主机控制器不支持可编程时钟发生器。
23-16
CLK_MUL
0x0: 不支持时钟乘法器
0x1:时钟乘法器 M=2
0x2:时钟乘法器 M=3
.........
0xFF:时钟乘法器 M=256
重新 tuning 模式(仅限 UHS-I)
这些位选择重新 tuning 方法并限制最大数据长度。
15-14
RE_TUNING_MO
DES
0x0(模式 1):计时器
0x1(模式 2):计时器和重新 tuning 请求(不支持)
0x2(模式 3):自动重新 tuning(用于传输)
0x3(RSVD_ 模式):保留
13
USE_TUNING_SD
R50
使用 SDR50 tuning(仅限 UHS-I)
0x0:SDR50 不需要 tuning
0x1:SDR50 需要 tuning
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
453/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
重新 tuning 的计时器计数(仅限 UHS-I)
0x0: 已禁用重新 tuning 计时器
0x1:1 秒
0x2:2 秒
0x3:4 秒
11-8
RETUNE_CNT
........
0xB:1024 秒
0xC:保留
0xD:保留
0xE:保留
0xF:从其他源获取信息
D 类驱动器支架(仅限 UHS-I)
6
DRV_TYPED
该位表示支持 1.8 信令的驱动器类型 D。
0x0(FALSE):不支持驱动程序类型 D
0x1(TRUE):支持驱动程序类型 D
C 类驱动器支架(仅限 UHS-I)
5
DRV_TYPEC
该位表示支持 1.8 信令的驱动器类型 C。
0x0(FALSE):不支持驱动程序类型 C
0x1(TRUE):支持驱动程序类型 C
A 类驱动器支架(仅限 UHS-I)
4
DRV_TYPEA
该位表示支持 1.8 信令的驱动器类型 A。
0x0(FALSE):不支持驱动程序类型 A
0x1(TRUE):支持驱动程序类型 A
UHS-II 支持(仅限 UHS-I)
3
UHS2_SUPPORT
此位表示主机系统是否支持 UHS-II
0x0(FALSE):不支持 UHS-II
0x1(TRUE):支持 UHS-II
DDR50 支持(仅限 UHS-I)
2
DDR50_SUPPOR
T
此位表示主机系统是否支持 DDR50
0x0(FALSE):不支持 DDR50
0x1(TRUE):支持 DDR50
SDR104 支持
1
SDR104_SUPPOR
T
此位表示主机系统是否支持 SDR104
0x0(FALSE):不支持 SDR104
0x1(TRUE):支持 SDR104
SDR50 支持(仅限 UHS-I)
0
SDR50_SUPPOR
T
此位表示支持 SDR50。位 13(USE_TUNING_SDR50)指示
SDR50 是否需要 tuning。
0x0(FALSE):不支持 SDR50
0x1(TRUE):支持 SDR50
CAPABILITIES2 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
454/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
CURR_CAPABILITIES1 (0x48)
x
x
x
26
25
24
23
22
21
20
x
x
x
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RO
N/A
x
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
0
MAX_CUR_33V
x
27
RO
28
MAX_CUR_30V
29
RO
30
RSVD
31
MAX_CUR_18V
29.5.16
SD 控制器 SDXC
0
CURR_CAPABILITIES1 [31:0]
位域
名称
描述
1.8V 的最大电流
此位指定卡的 1.8V VDD1 电源的最大电流。
0: 通过其他方法获取信息
23-16
MAX_CUR_18V
1:4mA
2:8mA
3:13mA
.......
255:1020mA
3.0V 的最大电流
此位指定卡的 3.0V VDD1 电源的最大电流。
0: 通过其他方法获取信息
15-8
MAX_CUR_30V
1:4mA
2:8mA
3:13mA
.......
255:1020mA
3.3V 的最大电流
此位指定卡的 3.3V VDD1 电源的最大电流。
0: 通过其他方法获取信息
7-0
MAX_CUR_33V
1:4mA
2:8mA
3:13mA
.......
255:1020mA
CURR_CAPABILITIES1 位域
29.5.17
CURR_CAPABILITIES2 (0x4C)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
455/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
3
2
1
0
x
x
x
MAX_CUR_VDD2_18V
30
RO
N/A
RSVD
31
SD 控制器 SDXC
x
CURR_CAPABILITIES2 [31:0]
位域
名称
描述
MAX_CUR_VDD2
7-0
本产品不支持,读出值为 0
_18V
CURR_CAPABILITIES2 位域
x
0
x
0
0
0
FORCE_AUTO_CMD12_NOT_EXEC
x
WO
x
FORCE_AUTO_CMD_CRC_ERR
x
FORCE_AUTO_CMD_TOUT_ERR
x
WO
0
WO
0
FORCE_AUTO_CMD_EBIT_ERR
0
WO
0
FORCE_AUTO_CMD_IDX_ERR
0
FORCE_AUTO_CMD_RESP_ERR
0
WO
0
WO
0
RSVD
FORCE_CMD_TOUT_ERR
WO
0
11
N/A
FORCE_CMD_CRC_ERR
WO
0
12
FORCE_CMD_NOT_ISSUED_AUTO_CMD12
FORCE_CMD_END_BIT_ERR
WO
0
13
WO
FORCE_CMD_IDX_ERR
WO
0
14
RSVD
FORCE_DATA_TOUT_ERR
WO
0
15
N/A
FORCE_DATA_CRC_ERR
16
WO
17
FORCE_DATA_END_BIT_ERR
18
WO
19
FORCE_CUR_LMT_ERR
20
WO
21
WO
22
FORCE_ADMA_ERR
23
FORCE_AUTO_CMD_ERR
24
WO
25
FORCE_RESP_ERR
x
26
FORCE_TUNING_ERR
x
27
WO
N/A
x
28
WO
29
FORCE_BOOT_ACK_ERR
30
RSVD
31
FORCE_EVENT (0x50)
WO
29.5.18
0
0
0
FORCE_EVENT [31:0]
位域
28
27
26
名称
FORCE_BOOT_A
CK_ERR
FORCE_RESP_E
RR
FORCE_TUNING_
ERR
描述
写 1 设置 BOOT_ACK_ERR
写 1 设置 RESP_ERR
写 1 设置 TUNING_ERR
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
456/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
25
24
23
22
21
20
19
18
17
16
名称
FORCE_ADMA_E
RR
FORCE_AUTO_C
MD_ERR
FORCE_CUR_LM
T_ERR
FORCE_DATA_E
ND_BIT_ERR
FORCE_DATA_C
RC_ERR
FORCE_DATA_T
OUT_ERR
FORCE_CMD_IDX
_ERR
FORCE_CMD_EN
D_BIT_ERR
FORCE_CMD_CR
C_ERR
FORCE_CMD_TO
UT_ERR
SD 控制器 SDXC
描述
写 1 设置 ADMA_ERR
写 1 设置 AUTO_CMD_ERR
写 1 设置 CUR_LMT_ERR
写 1 设置 DATA_END_BIT_ERR
写 1 设置 DATA_CRC_ERR
写 1 设置 DATA_TOUT_ERR
写 1 设置 CMD_IDX_ERR
写 1 设置 CMD_END_BIT_ERR
写 1 设置 CMD_CRC_ERR
写 1 设置 CMD_TOUT_ERR
FORCE_CMD_NO
7
T_ISSUED_AUTO
写 1 设置 CMD_NOT_ISSUED_AUTO_CMD12
_CMD12
5
4
3
2
1
FORCE_AUTO_C
MD_RESP_ERR
FORCE_AUTO_C
MD_IDX_ERR
FORCE_AUTO_C
MD_EBIT_ERR
FORCE_AUTO_C
MD_CRC_ERR
FORCE_AUTO_C
MD_TOUT_ERR
写 1 设置 AUTO_CMD_RESP_ERR
写 1 设置 AUTO_CMD_IDX_ERR
写 1 设置 AUTO_CMD_EBIT_ERR
写 1 设置 AUTO_CMD_CRC_ERR
写 1 设置 AUTO_CMD_TOUT_ERR
FORCE_AUTO_C
0
MD12_NOT_EXE
写 1 设置 AUTO_CMD12_NOT_EXEC
C
FORCE_EVENT 位域
29.5.19
ADMA_ERR_STAT (0x54)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
457/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
x
x
x
x
x
x
x
x
x
x
x
x
x
x
1
RO
N/A
x
2
0
0
ADMA_ERR_STATES
28
RO
29
ADMA_LEN_ERR
30
RSVD
31
SD 控制器 SDXC
0
0
ADMA_ERR_STAT [31:0]
位域
名称
描述
ADMA 长度不匹配错误状态
以下情况下会发生此错误:
设置块计数启用时,描述符表指定的总数据长度与块计数和块长
2
度指定的总数据长度不同
ADMA_LEN_ERR
当总数据长度不能除以块长度时
0x0(NO_ERR):无错误
0x1(ERROR):错误
ADMA 错误状态
这些位表示在 ADMA 数据传输过程中发生错误时 ADMA 的状态。
0x0(ST_STOP):STOP DMA-SYS_ADR 寄存器指向错误描述
符旁边的位置
ADMA_ERR_STA
1-0
0x1(ST_FDS)
:获取描述符-SYS_ADR 寄存器指向错误描述符
TES
0x2(UNUSED):从不设置此状态
0x3(ST_TFR):传输数据-SYS_ADR 寄存器指向错误描述符旁
边的位置
ADMA_ERR_STAT 位域
29.5.20
ADMA_SYS_ADDR (0x58)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ADMA_SA
31
0
ADMA_SYS_ADDR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
458/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
ADMA 系统地址
这些位表示 ADMA 系统地址的较低 32 位。
SDMA:如果主机版本 4 启用设置为 1,则此寄存器存储数据位
31-0
置的系统地址
ADMA_SA
ADMA2:该寄存器存储描述符表执行命令的字节地址
ADMA3:该寄存器由 ADMA3 设置。每次提取描述符行时,
ADMA2 递增指向下一行的寄存器地址。
ADMA_SYS_ADDR 位域
PRESET (0x60 + 0x2 * n)
x
12
11
x
x
10
8
7
6
5
0
0
0
0
0
RO
N/A
x
9
0
4
3
2
1
0
0
0
0
0
0
FREQ_SEL_VAL
x
13
RO
14
CLK_GEN_SEL_VAL
15
RSVD
29.5.21
PRESET [15:0]
位域
名称
描述
时钟发生器选择值
当主机控制器支持可编程时钟发生器时,此位有效。
CLK_GEN_SEL_V
10
0x0(FALSE):主机控制器版本 2。0 兼容时钟发生器
AL
0x1(PROG)
:可编程时钟发生器
SDCLK/RCLK 频率选择值
9-0
主机系统描述的时钟控制寄存器的 SDCLK/RCLK 频率选择字段
FREQ_SEL_VAL
中设置的 10 位预设值。
PRESET 位域
29.5.22
ADMA_ID_ADDR (0x78)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ADMA_ID_ADDR
31
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
459/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
SD 控制器 SDXC
14
13
12
11
10
9
8
7
6
5
4
3
2
1
ADMA_ID_ADDR [31:0]
位域
名称
描述
ADMA 集成描述符地址
这些位表示 ADMA 集成描述符地址的较低 32 位。集成描述符的
31-0
起始地址设置为这些寄存器位。
ADMA_ID_ADDR
ADMA3 获取一个描述符地址并递增这些位以指示下一个描述符
地址。
ADMA_ID_ADDR 位域
P_EMBEDDED_CNTRL (0xE6)
14
x
x
13
12
11
10
9
8
7
6
x
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
0
REG_OFFSET_ADDR
15
RO
N/A
RSVD
29.5.23
x
P_EMBEDDED_CNTRL [15:0]
位域
11-0
名称
描述
REG_OFFSET_A
嵌入式控制寄存器的偏移地址。
DDR
P_EMBEDDED_CNTRL 位域
P_VENDOR_SPECIFIC_AREA (0xE8)
x
x
13
12
11
10
9
8
7
6
x
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
0
REG_OFFSET_ADDR
14
RSVD
15
RO
N/A
29.5.24
x
P_VENDOR_SPECIFIC_AREA [15:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
460/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
11-0
名称
SD 控制器 SDXC
描述
REG_OFFSET_A
供应商特定寄存器的基址偏移地址。
DDR
P_VENDOR_SPECIFIC_AREA 位域
P_VENDOR2_SPECIFIC_AREA (0xEA)
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RO
REG_OFFSET_ADDR
29.5.25
P_VENDOR2_SPECIFIC_AREA [15:0]
位域
15-0
名称
描述
REG_OFFSET_A
命令队列寄存器的基址偏移地址。
DDR
P_VENDOR2_SPECIFIC_AREA 位域
SLOT_INTR_STATUS (0xFC)
13
12
x
x
x
x
11
10
9
8
7
6
5
4
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
INTR_SLOT
14
RSVD
15
RO
N/A
29.5.26
SLOT_INTR_STATUS [15:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
461/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
每个插槽的中断信号
这些状态位表示每个插槽的中断信号和唤醒信号的逻辑 OR。最
多可定义 8 个插槽。
如果一个中断信号与多个插槽关联,主机驱动程序可以识别通过
读取这些位生成的中断。
7-0
通过通电复位或为所有位设置软件复位,中断信号被解除断言,
INTR_SLOT
该状态读数为 00h。
位 00:插槽 1
位 01:插槽 2
位 02:插槽 3
.........
位 07:插槽 8
SLOT_INTR_STATUS 位域
CQVER (0x180)
26
25
24
23
22
x
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
11
10
x
x
x
x
x
x
x
x
x
0
0
9
8
7
6
0
0
0
0
RO
N/A
x
5
4
3
2
0
0
0
0
1
0
0
0
EMMC_VER_SUFFIX
27
RO
28
EMMC_VER_MINOR
29
RO
30
RSVD
31
EMMC_VER_MAHOR
29.5.27
CQVER [31:0]
位域
11-8
7-4
3-0
名称
EMMC_VER_MAH
OR
EMMC_VER_MIN
OR
EMMC_VER_SUF
FIX
描述
此位表示 BCD 格式的 eMMC 主版本(小数点左侧第 1 位)
。
该位表示 BCD 格式的 eMMC 次要版本(小数点右侧第 1 位)
。
此位表示 eMMC 版本后缀(右侧第二位小数点)BCD 格式。
CQVER 位域
29.5.28
CQCAP (0x184)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
462/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
22
x
x
0
x
x
x
x
x
x
21
20
19
18
17
16
15
14
x
x
x
x
x
0
0
13
12
11
RSVD
N/A
x
0
x
10
9
8
7
6
5
0
0
0
0
0
0
4
3
2
1
0
0
0
0
0
0
ITCFVAL
23
RO
24
RSVD
25
N/A
26
RO
N/A
x
27
ITCFMUL
28
RO
29
CRYPTO_SUPPORT
30
RSVD
31
SD 控制器 SDXC
x
CQCAP [31:0]
位域
名称
描述
加密支持
此位指示主机控制器是否支持加密操作。
CRYPTO_SUPPO
28
0x0(FALSE):不支持加密
RT
0x1(TRUE):支持加密
内部定时器时钟倍频器(ITCFMUL)
此字段指示用于此操作的时钟频率中断合并计时器,用于确定
SQS 轮询周期。有关详细信息,请参见 ITCFVAL 定义。
0x0(时钟 1KHz):1KHz 时钟
15-12
0x1(时钟 10KHz):10KHz 时钟
ITCFMUL
0x2(时钟 100KHz):100KHz 时钟
0x3(时钟频率 1MHz):1MHz 时钟
0x4(时钟频率 10MHz)
:10MHz 时钟
其他:保留
内部定时器时钟频率值(ITCFVAL)
9-0
此字段缩放由提供的计时器时钟的频率 ITCFMUL。实际计时器时
ITCFVAL
钟的最终时钟频率为计算为 ITCFVAL*ITCFMUL。
CQCAP 位域
CQCFG (0x188)
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
x
x
x
x
x
x
x
x
x
11
RW
N/A
x
12
0
10
9
x
x
8
7
6
5
x
0
x
x
x
4
3
2
1
x
x
x
x
CQCFG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
463/1016
0
CQ_EN
23
RW
24
RSVD
25
N/A
26
TASK_DESC_SIZE
27
RW
28
RSVD
29
N/A
30
RSVD
31
DCMD_EN
29.5.29
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
此位向硬件指示任务是否已完成
TDL 插槽 #31 中的描述符是数据传输描述符或直接命令描述符。
当在插槽 #31 中发出任务时,CQE 使用该位来确定如何解码任务
12
描述符。
DCMD_EN
0x1(SLOT31_DCMD_ENABLE):插槽 31 中的任务描述符是
DCMD 任务描述符
0x0(SLOT31_DCMD_DISABLE):插槽 #31 中的任务描述符是
数据传输任务描述符
位值描述
此位表示主机内存中使用的任务描述符的大小。仅当命令队列启
TASK_DESC_SIZ
8
用位为 0(命令队列已禁用)时,才能配置此位。
E
0x1(TASK_DESC_128b)
:任务描述符大小为 128 位
0x0(任 TASK_DESC_64b):任务描述符大小为 64 位
0
CQ_EN
CQCFG 位域
CQCTL (0x18C)
26
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
x
7
6
5
x
x
x
RW
N/A
x
8
0
4
3
2
1
x
x
x
x
CQCTL [31:0]
位域
名称
描述
清除所有任务
此位只能在控制器停止时写入。此位不清除设备中的任务。软件
8
CLR_ALL_TASKS
必须使用 CMDQ_TASK_MGMT 命令清除设备的队列。
0x1(CLEAR_ALL_TASKS):清除控制器中的所有任务
0x0(NO_EFFECT)
:编程 0 没有影响
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
464/1016
0
HALT
27
RW
28
RSVD
29
N/A
30
RSVD
31
CLR_ALL_TASKS
29.5.30
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
停止请求并继续
0x1(HALT_CQE)
:当软件希望通过 eMMC 总线获得软件控制
并禁止 CQE 在总线上发出命令时,软件将 1 写入该位。
例如,发出放弃任务命令(CMDQ_Task_MGMT)
。当软件写入 1
时,CQE 完成正在进行的任务(如果有正在进行的任务)。
0
任务完成且 CQE 处于空闲状态后,CQE 不会发出新命令,并通
HALT
过将该位设置为 1 来指示软件。
软件可以对此位进行轮询,直到将其设置为 1,然后才在 eMMC
总线上发送命令。
0x0(RESUME_CQE)
:软件将 0 写入该位以退出暂停状态并恢
复 CQE 活动
CQCTL 位域
CQIS (0x190)
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
3
2
1
0
0
0
0
CQIS [31:0]
位域
名称
描述
任务清除中断
当 CQE 完成任务清除操作时,该状态位被置位(如果
CQISE.TCL_STE=1)
。
3
TCL
完成的任务清除操作是单个任务清除(通过写入 CQCLR)或所
有任务清除(通过写入 CQCTL)。
写 1 将清除此状态位。
0x1(设置):设置 TCL 中断
0x0(未设置)
:未设置 TCL 中断
检测到响应错误中断
当接收到在设备状态中设置了错误位的响应时,该状态位被断言
(如果 CQISE.RED_STE=1)
2
RED
领域配置 CQRMEM 寄存器,以识别可能触发中断且被屏蔽的设
备状态位字段。
写 1 将清除此状态位。
0x1(设置):设置红色中断
0x0(未设置)
:未设置红色中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
465/1016
0
HAC
24
RW
25
TCC
26
RED
27
RW
28
RW
29
TCL
30
RSVD
31
RW
29.5.31
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
任务完成中断
当至少满足以下条件之一时,该状态位被置位(如果
CQISE.TCC_STE=1):
1
任务完成后,在其任务描述符中设置 INT 位
TCC
由于超时而由中断合并逻辑引起的中断
中断合并逻辑已达到配置的阈值
写 1 将清除此状态位。
停止完全中断
当 CQCTL 寄存器中的 halt 位从 0 变为 1 时,表示主机控制器已
完成其当前正在进行的任务并已进入 halt 状态,则置位此状态位
0
(仅当 CQISE.HAC_STE=1 时)。
HAC
写 1 将清除此状态位。
0x1:已设置 HAC 中断
0x0:未设置 HAC 中断
CQIS 位域
CQISE (0x194)
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
3
2
1
0
HAC_STE
24
RW
25
TCC_STE
26
RED_STE
27
RW
28
RW
29
TCL_STE
30
RSVD
31
RW
29.5.32
0
0
0
0
CQISE [31:0]
位域
名称
3
TCL_STE
描述
任务清除中断使能
0x1(INT_STS_ENABLE)
:CQIS.TCL 在其中断条件满足时置位
0x0(INT_STS_DISABLE):CQIS.TCL 中断被禁止
检测到响应错误中断使能
2
RED_STE
0x1(INT_STS_ENABLE)
:CQIS.RED 在其中断条件满足时置位
0x0(INT_STS_DISABLE):CQIS.RED 中断被禁止
任务完成中断使能
1
TCC_STE
0x1(INT_STS_ENABLE)
:CQIS.TCC 在其中断条件满足时置位
0x0(INT_STS_DISABLE):CQIS.TCC 中断被禁止
停止完全中断使能
0
HAC_STE
0x1(INT_STS_ENABLE)
:CQIS.HAC 在其中断条件满足时置位
0x0(INT_STS_DISABLE):CQIS.HAC 中断被禁止
CQISE 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
466/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
CQISGE (0x198)
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
3
2
1
0
HAC_SGE
24
RW
25
TCC_SGE
26
RED_SGE
27
RW
28
RW
29
TCL_SGE
30
RSVD
31
RW
29.5.33
SD 控制器 SDXC
0
0
0
0
CQISGE [31:0]
位域
名称
描述
任务清除中断信号使能
3
0x1(INT_SIG_ENABLE)
:CQIS.TCL 中断信号生成激活
TCL_SGE
0x0(INT_SIG_DISABLE)
:CQIS.TCL 中断信号生成被禁用
检测到响应错误中断信号使能
2
0x1(INT_SIG_ENABLE)
:CQIS.RED 中断信号生成激活
RED_SGE
0x0(INT_SIG_DISABLE)
:CQIS.RED 中断信号生成被禁用
任务完成中断信号使能
1
0x1(INT_SIG_ENABLE)
:CQIS.TCC 中断信号生成激活
TCC_SGE
0x0(INT_SIG_DISABLE)
:CQIS.TCC 中断信号生成被禁用
停止完全中断信号使能
0
0x1(INT_SIG_ENABLE)
:CQIS.HAC 中断信号生成激活
HAC_SGE
0x0(INT_SIG_DISABLE)
:CQIS.HAC 中断信号生成被禁用
CQISGE 位域
RSVD
RO
0
x
x
x
16
15
0
0
14
13
12
11
x
0
0
10
9
8
x
0
0
0
7
6
5
4
0
0
0
0
3
2
1
0
0
0
0
TOUT_VAL
x
N/A
x
17
RW
x
18
TOUT_VAL_WEN
x
19
WO
x
20
INTC_TH
x
21
WO
x
22
RSVD
x
23
N/A
x
24
INTC_RST
x
RW
0
25
INTC_TH_WEN
26
WO
27
WO
28
RSVD
29
N/A
30
INTC_EN
31
CQIC (0x19C)
INTC_STAT
29.5.34
0
CQIC [31:0]
位域
名称
描述
中断合并使能位
31
INTC_EN
0x1(ENABLE_INT_COALESCING):中断整合机制处于活动状
态。对中断进行计数和计时,并生成合并中断
0x0(DISABLE_INT_COALESCING)
:禁用中断整合机制(默认)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
467/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
中断合并状态位
该位向软件指示是否有任何任务(INT=0)已完成并计入中断
合并(即,当且仅当 INTC 计数器 >0 时才设置此项)
。
20
INTC_STAT
0x1(INTC_ATLEAST1_COMP):至少有一个 INT0 任务完成
(INTC 计数器 >0)
0x0(INTC_NO_TASK_COMP)
:自上次计数器重置(INTC 计数
器 ==0)以来,未发生 INT0 任务完成
计数器和定时器复位
16
INTC_RST
当主机驱动程序写入 1 时,中断合并计时器和计数器复位。
0x1(ASSERT_INTC_RESET)
:中断合并计时器和计数器重置
0x0(NO_EFFECT)
:无效果
中断合并计数器阈值写入启用
当软件向该位写入 1 时,值 INTCTH 将用同一周期写入的内容更
15
INTC_TH_WEN
新。
0x1 (WEN_SET): 设置 INTC_TH_WEN
0x0 (WEN_CLR): 清除 INTC_TH_WEN
中断合并计数器阈值字段
软件使用此字段配置生成中断所需的任务完成次数(仅任务描述
符中 INT=0 的任务)。
计数器操作:当 INT=0 的数据传输任务完成时,它们由 CQE 计
数。
在中断服务程序期间,计数器由软件复位。计数器在达到
12-8
INTC_TH
INTC_TH 中配置的值时停止计数,并生成中断。
0x0:中断合并功能已禁用
0x1:INT=0 完成时在 1 个任务后生成的中断合并中断
0x2:INT=0 完成时在 2 个任务后生成的中断合并中断
........
0x1f:INT=0 完成 31 个任务后生成的中断合并中断
要写入此字段,必须在同一写入操作期间设置 INTC_TH 位
当软件向该位写入 1 时,值 TOUT_VAL 将用同一周期写入的内
7
TOUT_VAL_WEN
容更新。
0x1(WEN_SET):设置 TOUT_VAL_WEN
0x0(WEN_CLR):清除 TOUT\u VAL\u WEN
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
468/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
中断合并超时值
软件使用此字段来配置在总线上完成任务和生成中断之间允许的
最长时间。
定时器操作:定时器在中断服务程序期间由软件复位。
定时器复位后,当 INT=0 的第一个数据传输任务完成时,它开始
运行。
当计时器达到 ICTOVAL 字段中配置的值时,它生成一个中断并
停止。
6-0
计时器的单位等于内部计时器时钟频率字段 CQCAP 寄存器中指
TOUT_VAL
定频率的时钟的 1024 个时钟周期。
0x0: 计时器已禁用。不生成基于超时的中断
0x1:计时器时钟频率为 01x1024 个周期时超时
0x2:计时器时钟频率为 02x1024 个周期时超时
........
0x7f:定时器时钟频率为 127x1024 个周期时超时
为了写入此字段,必须在同一写入操作中设置 TOUT_VAL_WEN
位。
CQIC 位域
29.5.35
CQTDLBA (0x1A0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TDLBA
31
0
CQTDLBA [31:0]
位域
名称
描述
该寄存器将任务描述符列表头的字节地址的 LSB 位(31:0)存储
在系统内存中。
31-0
TDLBA
根据主机驱动程序的配置,任务描述符列表的大小为 32*(任务
描述符大小 + 传输描述符大小)
。
此地址设置在 1 KB 边界上。该寄存器的低 10 位由软件设置为 0,
并被 CQE 忽略
CQTDLBA 位域
29.5.36
CQTDBR (0x1A8)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
469/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DBR
31
SD 控制器 SDXC
0
CQTDBR [31:0]
位域
名称
描述
软件需在使用此寄存器前配置 TDLBA,并启用 CQE。
将 1 写入该寄存器的位 n 将触发 CQE,以开始处理编码在 TDL
的插槽 n 中的任务。
软件写入 0 不会对硬件产生任何影响,也不会更改寄存器位的值。
CQE 始终根据 CQTDBR 写入事务提交到列表的顺序处理任务。
CQE 通过读取任务描述符并向设备发送队列任务参数(CMD44)
和队列任务地址(CMD45)命令来处理数据传输任务。
CQE 通过读取任务描述符并生成由其索引和参数编码的命令来处
理 DCMD 任务(在插槽 #31 中,如果启用)
。
31-0
在以下事件之一中,CQE 将相应位清除为 0:
DBR
任务执行完成(成功或错误)。
使用 CQCLR 寄存器清除任务。
使用 CQCTL 寄存器清除所有任务。
使用 CQCFG 寄存器禁用 CQE。
软件可以通过在同一事务中将该寄存器的 1 位写入多个位来同时
启动多个任务(批量提交)。
在批量提交的情况下,CQE 按照任务索引的顺序处理任务,从最
低索引开始。
如果批次中的一个或多个任务标记为 QBR,则执行顺序基于所述
处理顺序。
CQTDBR 位域
29.5.37
CQTCN (0x1AC)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TCN
31
0
CQTCN [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
470/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
任务完成通知
32 位中的每一位都映射到 32 个任务。
位 N(1):任务 N 已完成执行(有成功或错误)
31-0
位 N(0):任务 N 尚未完成,可能挂起或未提交。
TCN
任务完成时,软件可能会读取此注册表以了解已完成的任务。
读了这个寄存器之后,软件可通过将 1 写入相应位来清除相关位
字段。
CQTCN 位域
29.5.38
CQDQS (0x1B0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DQS
31
0
CQDQS [31:0]
位域
名称
描述
设备队列状态
32 位中的每一位都映射到 32 个任务。
31-0
位 N(1):设备已将任务 N 标记为准备执行
DQS
位 N(0):任务 N 未准备好执行。此任务可能在设备中挂起或未
提交。
主机控制器使用设备队列状态命令的响应更新此寄存器。
CQDQS 位域
29.5.39
CQDPT (0x1B4)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DPT
31
0
CQDPT [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
471/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
设备挂起任务
32 位中的每一位都映射到 32 个任务。
位 N(1):任务 N 已成功排入设备队列,正在等待执行
位 N(0):任务 N 尚未排队。
当且仅当已为此特定任务发送了队列任务参数(CMD44)和队列
31-0
任务地址(CMD45)且未执行此任务时,才会设置此寄存器的位
DPT
n。
控制器在收到 CMD45 的成功响应后设置此位。CQE 在任务完成
执行后清除该位。
软件在任务丢弃过程中读取此寄存器,以确定是否有任务在设备
中排队
CQDPT 位域
29.5.40
CQTCLR (0x1B8)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TCLR
31
0
CQTCLR [31:0]
位域
名称
描述
将 1 写入该寄存器的第 n 位命令 CQE 清除软件先前发出的任务。
该位只能在 CQE 处于暂停状态时写入,如 CQCFG 寄存器暂停
位所示。
31-0
TCLR
当软件将 1 写入该寄存器中的某个位时,CQE 将该值更新为 1,
并开始清除与任务相关的数据结构。
一旦清除操作完成,CQE 清除 CQCLR 和 CQTDBR 中的位字段
(设置值为 0)。
软件必须轮询 CQCLR,直到完成了清除操作。
CQTCLR 位域
29.5.41
CQSSC1 (0x1C0)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
472/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
27
26
x
x
x
x
x
x
25
24
23
22
21
20
19
18
x
x
x
x
x
0
0
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
RW
N/A
x
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
SQSCMD_IDLE_TMR
28
RW
29
SQSCMD_BLK_CNT
30
RSVD
31
SD 控制器 SDXC
0
CQSSC1 [31:0]
位域
名称
描述
此字段指示在数据传输过程中何时发送 SQS CMD。
值“n”表示在数据行上传输数据块 block_CNTn 期间,CQE 在
CMD 行上发送状态命令,其中 block_CNT 是当前事务中的块数。
0x0: 在传输期间未发送发送队列状态(CMD13)命令。相反,它
19-16
SQSCMD_BLK_C
NT
仅在数据线空闲时发送。
0x1: 发送队列状态命令将在传输的最后一个块期间发送。
0x2:当最后 2 个块挂起时发送队列状态命令。
0x3:在最后 3 个块挂起时发送队列状态命令。
........
0xf:当最后 15 个块挂起时发送队列状态命令。
应仅在 CQCFG.CQ_EN 为 0 时编程
此字段配置使用定期发送队列状态(CMD13)轮询时要使用的轮
询周期。
当设备中的任务处于挂起状态,但没有进行数据传输时,使用定
期轮询。
当发送队列状态响应指示没有任务准备好执行时,CQE 统计配置
15-0
SQSCMD_IDLE_T
MR
的时间,直到发出下一个发送队列状态。
定时器单元是时钟的时钟周期,其频率在内部定时器时钟频率字
段 CQCAP 寄存器中指定。最小值为 0001h(1 个时钟周期)
,最
大值为 FFFFh(65535 个时钟周期)
。
例如,CQCAP 字段值为 0 表示 19.2 MHz 时钟频率(周期
=52.08 ns)。如果 CQSC1.CIT 设置为 0x1000,计算的轮询周期
为 4096*52.08 纳秒 =213.33 微秒。
应仅在 CQCFG.CQ_EN 为 0 时编程
CQSSC1 位域
29.5.42
CQSSC2 (0x1C4)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
473/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
SQSCMD_RCA
30
RW
N/A
RSVD
31
SD 控制器 SDXC
x
CQSSC2 [31:0]
位域
名称
描述
此字段为 CQE 提供发送队列状态(CMD13)命令参数中 16 位
15-0
RCA 字段的内容。
SQSCMD_RCA
在传输发送队列状态(CMD13)命令时,CQE 将此字段复制到
参数的第 31:16 位。
CQSSC2 位域
29.5.43
CQCRDCT (0x1C8)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
DCMD_RESP
31
0
CQCRDCT [31:0]
位域
名称
描述
此寄存器包含上次发送的直接命令(DCMD)任务生成的命令的
31-0
响应。
DCMD_RESP
只有在控制器清除 CQTDBR 寄存器的第 31 位后,该寄存器的内
容才有效。
CQCRDCT 位域
31
30
CQRMEM (0x1D0)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
RESP_ERR_MASK
29.5.44
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
474/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
SD 控制器 SDXC
0
CQRMEM [31:0]
位域
名称
描述
此字段的位映射到设备响应。
该位用作 R1/R1b 响应中接收的设备状态字段上的中断掩码。
1:当接收到 R1/R1b 响应时,设备状态设置为位 i,将生成 RED
中断。
RESP_ERR_MAS
31-0
0:当接收到 R1/R1b 响应时,忽略设备状态中的位 i。
K
该寄存器的重置值设置为触发设备状态中所有“错误”类型位的
中断。
注意:对 CMD13(SQS)的响应对 QSR 进行编码,以便该逻辑
忽略它们。
CQRMEM 位域
x
0
0
0
18
17
16
RSVD
N/A
x
0
0
15
14
0
0
13
12
11
x
0
0
10
9
8
7
x
0
0
0
x
6
5
4
3
x
0
0
0
2
1
0
0
0
0
RESP_ERR_CMD_INDX
19
RO
x
20
RSVD
0
21
N/A
0
RO
0
22
RESP_ERR_TASKID
23
RO
0
24
RSVD
0
25
N/A
x
N/A
x
26
RESP_ERR_FIELDS_VALID
27
RO
28
TRANS_ERR_CMD_INDX
29
TRANS_ERR_TASKID
30
RSVD
31
CQTERRI (0x1D4)
RO
29.5.45
CQTERRI [31:0]
位域
28-24
21-16
名称
TRANS_ERR_TAS
KID
TRANS_ERR_CM
D_INDX
描述
此字段捕获已执行且其数据传输有错误的任务的 ID。
此字段捕获已执行且其数据传输有错误的命令的索引。
当在执行命令事务时检测到错误时,此位将更新。
15
RESP_ERR_FIEL
DS_VALID
0x1(SET)
:检测到响应相关错误。检查 RESP_ERR_TASKID
和 RESP_ERR_CMD_INDX 字段
0x0(NOT_SET):忽略 RESP_ERR_TASKID 和
RESP_ERR_CMD_INDX 的内容
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
475/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
描述
RESP_ERR_TASK
12-8
此字段捕获发生错误时在命令行上执行的任务的 ID。
ID
RESP_ERR_CMD
5-0
SD 控制器 SDXC
此字段捕获错误发生时在命令行上执行的命令的索引
_INDX
CQTERRI 位域
CQCRI (0x1D8)
30
29
28
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
2
1
0
0
0
0
RO
N/A
RSVD
31
CMD_RESP_INDX
29.5.46
x
CQCRI [31:0]
位域
名称
描述
最后命令响应索引
5-0
此字段存储上次收到的命令响应的索引。控制器在每次收到命令
CMD_RESP_INDX
响应时更新该值
CQCRI 位域
29.5.47
CQCRA (0x1DC)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
CMD_RESP_ARG
31
0
CQCRA [31:0]
位域
名称
描述
最后一个命令响应参数
31-0
CMD_RESP_ARG
此字段存储上次收到的命令响应的参数。控制器在每次收到命令
响应时更新该值。
CQCRA 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
476/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29.5.48
SD 控制器 SDXC
MSHC_VER_ID (0x500)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
VER_ID
31
0
MSHC_VER_ID [31:0]
位域
名称
描述
31-0
VER_ID
版本号
MSHC_VER_ID 位域
29.5.49
MSHC_VER_TYPE (0x504)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
RO
VER_TYPE
31
0
MSHC_VER_TYPE [31:0]
位域
名称
描述
31-0
VER_TYPE
版本类型
MSHC_VER_TYPE 位域
CARD_IS_EMMC
0
RW
0
EMMC_RST_N
0
DISABLE_DATA_CRC_CHK
x
RW
x
RW
x
EMMC_RST_N_OE
0
RW
x
13
RSVD
14
N/A
x
15
ENH_STROBE_ENABLE
x
16
RW
x
17
CQE_ALGO_SEL
x
18
RW
x
19
RSVD
0
20
N/A
0
21
CQE_PREFETCH_DISABLE
x
22
RW
x
23
MAN_BOOT_EN
RSVD
N/A
RW
0
24
RW
x
25
RSVD
0
26
N/A
27
VALIDATE_BOOT
0
28
WO
0
29
BOOT_ACK_ENABLE
30
BOOT_TOUT_CNT
31
EMMC_BOOT_CTRL (0x52C)
RW
29.5.50
0
0
0
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
477/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
SD 控制器 SDXC
14
13
12
11
10
9
8
7
6
5
4
3
2
1
EMMC_BOOT_CTRL [31:0]
位域
名称
描述
启动确认超时计数器值。
此值确定在引导操作期间预期引导确认时检测到引导确认超时
(50 毫秒)的间隔。
31-28
BOOT_TOUT_CN
T
0xF:保留
0xE:TMCLK x 2^27
............
0x1:TMCLK x 2^14
0x0:TMCLK x 2^13
启动确认启用
24
BOOT_ACK_ENA
BLE
设置此位时,SDXC 在引导操作期间检查 0-1-0 的引导确认启动
模式。此位适用于强制和备用引导模式。
0x1(TRUE):启动确认启用
0x0(FALSE):启动确认禁用
验证强制启动启用位
23
VALIDATE_BOOT
此位用于验证 MAN_BOOT_EN 位。
0x1(TRUE):验证强制启动启用位
0x0(FALSE):忽略强制启动启用位
强制启动启用
此位用于启动强制引导操作。应用程序将此位与
16
MAN_BOOT_EN
VALIDATE_BOOT 位一起设置。
写入 0 被忽略。引导传输完成或终止后,SDXC 清除该位。
0x1(MAN_BOOT_EN)
:强制启动启用
0x0(MAN_BOOT_DIS):强制启动禁用
启用或禁用 CQE 的预取功能
10
CQE_PREFETCH
_DISABLE
此字段允许软件在设置为 1 时禁用 CQE 的数据预取功能。
0x0(PREFETCH_ENABLE):CQE 可以预取成功写入传输和管
道成功读取传输的数据
0x1(PREFETCH_DISABLE)
:禁用写入的预取和读取的管道
选择要执行的调度程序算法
此位选择用于从许多准备执行的任务中选择一个任务的算法。
9
CQE_ALGO_SEL
0x0(PRI_REORDER_PLUS_FCFS)
:使用 FCFS 基于优先级
的重新排序,以解决同等优先级的任务
0x1(FCFS_ONLY)
:先到先得,顺序为 DBR 环
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
478/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
增强选通启用
该位指示 SDXC 使用 HS400 模式的数据选通对 CMD 行进行采
样。
ENH_STROBE_E
8
0x1(ENH_STB_FOR_CMD)
:使用 HS400 模式的数据选通对
NABLE
CMD 行进行采样
0x0(NO_STB_FOR_CMD)
:命令行使用用于 HS400 模式的
cclk 命令进行采样
EMMC 设备复位信号的输出使能
该字段驱动 SDXC 的 sd_rst_n_oe 输出
EMMC_RST_N_O
3
0x1(ENABLE)
:sd_rst_n_oe 为 1
E
0x0(DISABLE):sd_rst_n_oe 为 0
EMMC 设备复位信号控制。
该寄存器字段控制 SDXC 的 sd_rst_n 输出
2
0x1(RST_DEASSERT)
:解除输出到 eMMC 设备的复位
EMMC_RST_N
0x0(RST_ASSERT):设置输出到 eMMC 设备的复位(低电平
有效)
禁用数据 CRC 检查
此位控制在 eMMC 模式下卡写入 CRC16 错误的掩蔽。这在
eMMC 设备的总线测试(CMD19)中非常有用。
DISABLE_DATA_
1
在总线测试中,eMMC 卡不发送块的 CRC 状态,这可能会产生
CRC_CHK
CRC 错误。在总线测试期间,可以使用该位屏蔽该 CRC 错误。
0x1(DISABLE)
:禁用数据 CRC 检查
0x0(ENABLE)
:数据 CRC 检查已启用
eMMC 卡是否存在
此位表示连接的卡的类型。基于连接到 SDXC 的卡的该位的应用
0
程序。
CARD_IS_EMMC
0x1(EMMC_CARD):连接到 SDXC 的卡是一个 EMMC 卡
0x0(NON_EMMC_CARD):连接到 SDXC 的卡是非 EMMC 卡
EMMC_BOOT_CTRL 位域
0
0
8
7
x
0
0
x
6
5
x
x
4
3
2
1
0
AT_EN
x
9
RW
x
10
CI_SEL
x
11
SWIN_TH_EN
0
12
RW
0
13
RW
RSVD
14
RPT_TUNE_ERR
0
15
RW
0
16
SW_TUNE_EN
0
17
RW
x
N/A
x
18
RSVD
x
19
N/A
0
20
WIN_EDGE_SEL
0
21
RW
0
RW
0
22
RSVD
23
N/A
24
TUNE_CLK_STOP_EN
0
25
RW
0
26
PRE_CHANGE_DLY
0
N/A
x
27
RW
28
POST_CHANGE_DLY
29
SWIN_TH_VAL
30
RSVD
31
AUTO_TUNING_CTRL (0x540)
RW
29.5.51
0
0
0
0
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
479/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
SD 控制器 SDXC
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
AUTO_TUNING_CTRL [31:0]
位域
名称
描述
采样窗口阈值设置
此处可设置的最大值取决于用于 tuning 的延迟线的长度。有 32
个抽头的延迟线可以使用从 0x0 到 0x1F 的值。
此字段仅在 SWIN_TH_EN 为“1”时有效。应仅在
SAMPLE_CLK_SEL 为“0”时编程
0x0:阈值为 0x1,可选择长度为 1 抽头及以上的窗口作为采样窗
30-24
SWIN_TH_VAL
口。
0x1:阈值为 0x2,可选择长度为 2 个抽头及以上的窗口作为采样
窗口。
0x2:阈值为 0x1,可选择长度为 3 个抽头及以上的窗口作为采样
窗口。
........
0x1F:阈值为 0x1,可选择长度为 32 次的窗口作为采样窗口。
相位切换和稳定时钟输出所需的时间。
指定 tuning 或自动 tuning 后延迟线切换其输出相位所需的最长时
20-19
POST_CHANGE_
DLY
间(以 cclk 周期为单位)。
0x0(LATENCY_LT_1):小于 1 个周期的延迟
0x1(LATENCY_LT_2):小于 2 个周期的延迟
0x2(LATENCY_LT_3):小于 3 个周期的延迟
0x3(LATENCY_LT_4):小于 4 个周期的延迟
cclk_tx 和 cclk_rx 之间的最大延迟规格。
18-17
PRE_CHANGE_D
LY
0x0(LATENCY_LT_1):小于 1 个周期的延迟
0x1(LATENCY_LT_2):小于 2 个周期的延迟
0x2(LATENCY_LT_3):小于 3 个周期的延迟
0x3(LATENCY_LT_4):小于 4 个周期的延迟
用于 tuning 和自动 tuning 电路的时钟停止控制。
启用时,SDXC(clk2card_on)的时钟门控制输出被拉低,然后
更改 tuning_cclk_sel 和 autotuning_cclk_sel 上的相位选择代码。
这将有效地停止设备/卡时钟、cclk_rx 和漂移 cclk_rx。时钟停止
16
TUNE_CLK_STOP
_EN
时更改相位代码可确保无故障相位切换。
如果 PHY 或 delayline 可以保证无故障切换,则将该位设置为 0。
0x1(ENABLE_CLK_STOPPING)
:时钟在相位代码更改期间停
止
0x0(DISABLE_CLK_STOPPING)
:时钟不停止,PHY 确保无
故障相位切换
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
480/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
该字段设置漂移监测的左边缘和右边缘的相位。[左边缘偏移 + 右
边缘偏移] 不得小于 delayLine 的总抽头数。
0x0: 已禁用用户选择。使用 tuning 计算的结果
11-8
WIN_EDGE_SEL
0x1:右边缘阶段为中心 +2 阶段,左边缘阶段为中心-2 阶段。
0x2:右边缘相位为中心 +3 级,左边缘相位为中心-3 级
...
0xF:右边缘相位为中心 +16 级,左边缘相位为中心-16 级。
此字段启用软件管理的 tuning 流程。
4
SW_TUNE_EN
0x1(软件 tuning 启用)
:软件管理 tuning 启用。
AUTO_TUNING_STAT.CENTER_PH_CODE 字段现在可写。
0x0(软件 tuning 禁用)
:软件管理 tuning 禁用
执行 tuning 时不会生成帧错误。
此调试位允许用户报告这些错误。
3
RPT_TUNE_ERR
0x1(DEBUG_ERRORS):用于报告帧错误的调试模式
0x0(ERRORS_DISABLED)
:默认模式,根据 SDXC,不会报告
错误。
采样窗口阈值启用
选择 tuning 模式
仅当 SAMPLE_CLK_SEL 为“0”时,才应对字段进行编程
2
SWIN_TH_EN
0x1(THRESHOLD_MODE):tuning 引擎选择满足阈值的第一
个完整采样窗口
由 SWIN_TH_VAL 字段设置
0x0(LARGEST_WIN_MODE)
:tuning 引擎扫描所有窗口,并在
最大窗口停留
选择在什么时间输出 tuning_cclk_sel 输出上驱动校正中心相位选
1
CI_SEL
择代码的时间间隔。
0x0(WHEN_IN_BLK_GAP)
:在块间隙间隔中驱动
0x1(WHEN_IN_IDLE):在传输结束时驱动
设置此位可启用自动 tuning 引擎。
0
AT_EN
仅当 SYS_CTRL.SD_CLK_EN 为 0 时,才能改变此字段。
0x1(AT_ENABLE):自动 tuning 已启用
0x0(AT_DISABLE)
:自动 tuning 被禁用
AUTO_TUNING_CTRL 位域
29.5.52
AUTO_TUNING_STAT (0x544)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
481/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
25
24
23
22
21
20
x
x
x
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RO
N/A
x
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
0
CENTER_PH_CODE
x
26
RW
x
27
R_EDGE_PH_CODE
28
RO
29
L_EDGE_PH_CODE
30
RSVD
31
SD 控制器 SDXC
0
AUTO_TUNING_STAT [31:0]
位域
名称
描述
左边缘相位码。读取此字段将返回自动 tuning 引擎用于在采样窗
L_EDGE_PH_CO
23-16
口左边缘采样数据的相位代码值。
DE
右边缘相位码。读取此字段将返回自动 tuning 引擎用于在采样窗
R_EDGE_PH_CO
15-8
口右边缘采样数据的相位代码值。
DE
居中相位码。读取此字段将返回 tuning_cclk_sel 输出的当前值。
CENTER_PH_CO
7-0
设置 AUTO_TUNING_CTRL.SW_TUNE_EN 允许软件写入此字
DE
段,其内容反映在 tuning_cclk_sel 上
AUTO_TUNING_STAT 位域
0
x
x
x
19
18
x
x
x
x
17
16
15
RSVD
N/A
x
0
x
x
14
13
12
x
x
x
11
10
0
0
9
8
7
6
5
0
0
0
0
0
4
3
2
1
0
0
0
0
0
0
FREQ_SEL_SW
x
20
RW
x
21
TMCLK_EN
x
22
RW
23
FREQ_SEL_SW_EN
24
RSVD
25
N/A
26
RW
x
27
RW
N/A
x
28
PAD_CLK_SEL_B
29
CARDCLK_INV_EN
30
RSVD
31
MISC_CTRL0 (0x3000)
RW
29.5.53
MISC_CTRL0 [31:0]
位域
28
17
11
名称
CARDCLK_INV_E
N
PAD_CLK_SEL_B
FREQ_SEL_SW_
EN
10
TMCLK_EN
9-0
FREQ_SEL_SW
描述
设置此位反转卡时钟,用于满足慢速设备的时序要求
1:直接使用内部时钟(可能会存在时序问题)
。
0:使用从 pad 上 loopback 的时钟。
1:使用 FREQ_SEL_SW 作为卡时钟的分频数。
0:使用内部逻辑作为卡时钟的分频数。
1:使能 tmclk。
0:通过 intclk_en 控制。
卡时钟的软件分频,仅当 FREQ_SEL_SW_EN 位置 1 时生效。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
482/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
SD 控制器 SDXC
描述
MISC_CTRL0 位域
29.5.54
27
26
25
24
23
22
21
20
19
18
17
16
15
14
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
RSVD
13
N/A
x
28
CARD_ACTIVE_PERIOD_SEL
RSVD
N/A
0
29
RW
CARD_ACTIVE
30
RW
31
MISC_CTRL1 (0x3004)
0
x
MISC_CTRL1 [31:0]
位域
名称
描述
软件设置此位可以开始一个等待计时器,计时器时长由寄存器
31
CARD_ACTIVE
CARD_ACTIVE_PERIOD_SEL 决定。
硬件会在计时结束清零此位
SD 要求初始化时等待 74 个以上的 400KHz 时钟,此位用来选择
等待时长
29-28
CARD_ACTIVE_P
00:100 时钟周期
ERIOD_SEL
01:74 时钟周期
10:128 时钟周期
11:256 时钟周期
MISC_CTRL1 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
483/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
FFA、DMA 和信箱概述
FFA、DMA 和信箱概述
30
本章节介绍了快速傅里叶变换和数字滤波器加速模块 FFA,DMA 控制器,DMAMUX 和通讯信箱 MBX。
30.1
快速傅里叶变换和数字滤波器加速模块 FFA
本产品包括 1 个快速傅里叶变换和数字滤波器加速模块(FFA),FFA 可以实现对快速傅里叶变换和数字滤
波器运算的加速,FFA 支持通过内置 DMA 读取运算输入数据并写回运算结果。可以大幅度增强系统的数字信号
处理能力并减轻 CPU 的运算负担。
30.2
DMA 控制器
本产品包括 2 个 DMA 控制器。
● XDMA,作为主设备连接到 AXI 系统总线。它可以实现高效的内存之间,内存与外部存储器之间的数据
搬移。也可以用于外设寄存器与存储器,或者外设寄存器之间的数据搬移。
● HDMA,作为主设备连接到 AHB 外设总线。它可以实现实时的外设寄存器与内存,内存之间的数据搬移。
注意,当 XDMA 的 destination 为 DRAM 时,如果 burst 大于等于 16,那 destsize 必须为 64bit。
XDMA 和 HDMA 的编程模型相同。XDMA 和 HDMA 分别有 8 个 DMA 请求输入信号,这些 16 个 DMA 的请
求源来自 DMA 请求路由器(DMAMUX)。
30.3
DMA 请求路由器
DMA 请求路由器 (DMAMUX)。将来自各个外设模块的 DMA 请求分配到 16 输出信号,作为 XDMA 和 HDMA
的 DMA 传输请求源。
DMAMUX 的输出 0∼7 连接到外设总线 DMA 控制器 HDMA,DMAMUX 的输出 8∼15 连接到系统总线 DMA
控制器 XDMA。
用户可以通过配置 DMAMUX 寄存器,把来自特定外设的 DMA 请求,连接到 XDMA 或者 HDMA 的各个通
道。
DMAMUX 的输入具体分配如下:
DMA MUX 编号
DMA MUX SOURCE 名称
描述
0
SPI0_RX
SPI0 接收
1
SPI0_TX
SPI0 发送
2
SPI1_RX
SPI1 接收
3
SPI1_TX
SPI1 发送
4
SPI2_RX
SPI2 接收
5
SPI2_TX
SPI2 发送
6
SPI3_RX
SPI3 接收
7
SPI3_TX
SPI3 发送
8
UART0_RX
UART0 接收
9
UART0_TX
UART0 发送
10
UART1_RX
UART1 接收
11
UART1_TX
UART1 发送
12
UART2_RX
UART2 接收
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
484/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMA MUX 编号
FFA、DMA 和信箱概述
DMA MUX SOURCE 名称
描述
13
UART2_TX
UART2 发送
14
UART3_RX
UART3 接收
15
UART3_TX
UART3 发送
16
UART4_RX
UART4 接收
17
UART4_TX
UART4 发送
18
UART5_RX
UART5 接收
19
UART5_TX
UART5 发送
20
UART6_RX
UART6 接收
21
UART6_TX
UART6 发送
22
UART7_RX
UART7 接收
23
UART7_TX
UART7 发送
24
I2S0_RX
I2S0 接收
25
I2S0_TX
I2S0 发送
26
I2S1_RX
I2S1 接收
27
I2S1_TX
I2S1 发送
28
MOT0_0
29
MOT0_1
30
MOT0_2
31
MOT0_3
32
MOT1_0
33
MOT1_1
34
MOT1_2
35
MOT1_3
36
NTMR0_0
NTMR0 通道 0
37
NTMR0_1
NTMR0 通道 1
38
NTMR0_2
NTMR0 通道 2
39
NTMR0_3
NTMR0 通道 3
40
GPTMR0_0
GPTMR0 通道 0
41
GPTMR0_1
GPTMR0 通道 1
42
GPTMR0_2
GPTMR0 通道 2
43
GPTMR0_3
GPTMR0 通道 3
44
GPTMR1_0
GPTMR1 通道 0
TRGM0 DMA 请求 0 (包含 PWMT0,
QEI0, HALL0 的 DMA 请求)
TRGM0 DMA 请求 1 (包含 PWMT0,
QEI0, HALL0 的 DMA 请求)
TRGM0 DMA 请求 2 (包含 PWMT0,
QEI0, HALL0 的 DMA 请求)
TRGM0 DMA 请求 3 (包含 PWMT0,
QEI0, HALL0 的 DMA 请求)
TRGM1 DMA 请求 0 (包含 PWMT1,
QEI1, HALL1 的 DMA 请求)
TRGM1 DMA 请求 1 (包含 PWMT1,
QEI1, HALL1 的 DMA 请求)
TRGM1 DMA 请求 2 (包含 PWMT1,
QEI1, HALL1 的 DMA 请求)
TRGM1 DMA 请求 3 (包含 PWMT1,
QEI1, HALL1 的 DMA 请求)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
485/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMA MUX 编号
FFA、DMA 和信箱概述
DMA MUX SOURCE 名称
描述
45
GPTMR1_1
GPTMR1 通道 1
46
GPTMR1_2
GPTMR1 通道 2
47
GPTMR1_3
GPTMR1 通道 3
48
GPTMR2_0
GPTMR2 通道 0
49
GPTMR2_1
GPTMR2 通道 1
50
GPTMR2_2
GPTMR2 通道 2
51
GPTMR2_3
GPTMR2 通道 3
52
GPTMR3_0
GPTMR3 通道 0
53
GPTMR3_1
GPTMR3 通道 1
54
GPTMR3_2
GPTMR3 通道 2
55
GPTMR3_3
GPTMR3 通道 3
56
I2C0
I2C0
57
I2C1
I2C1
58
I2C2
I2C2
59
I2C3
I2C3
60
XPI0_RX
XPI0 接收
61
XPI0_TX
XPI0 发送
62
XPI1_RX
XPI1 接收
63
XPI1_TX
XPI1 发送
64
DAC
数模转换器 DAC
65
ACMP_0
ACMP0
66
ACMP_1
ACMP1
表 169: DMA MUX 列表
30.4
通讯信箱 MBX
本产品支持 1 个通讯信箱 MBX,用于进程间通信。处理器可以利用 MBX 互相发送数据,MBX 支持生成中
断。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
486/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
快速傅里叶变换和数字滤波器加速模块 FFA
快速傅里叶变换和数字滤波器加速模块 FFA
31
本章节介绍快速傅里叶变换和数字滤波器加速模块 FFA 的功能和特性。
31.1
特性总结和功能描述
这个模块主要完成傅里叶变换和数字滤波器运算加速。主要支持的功能为:
1. FFT 运算支持 8/16/32/64/128/256/512 点的复数或实数的 FFT、IFFT。支持数字精度为 16 位或 32 位
定点小数。
2. FIR 运算支持复数或实数的一维滤波器运算,数据长度必须大于或等于滤波器系数长度。支持数字精度
为 16 位或 32 位定点小数。支持将系数取共轭后再做运算。
3. 模块内自带 DMA 功能,可以用 DMA 执行数据输入和和数据输出。
FFA 的框图如图 42。
FFT FSM
APB
Slave
AXI
Master
FIR FSM
Regs
Ctrl.
Internal
Mem.
图 42: FFA 框图
31.2
FFA 寄存器列表
FFA base address: 0xF3058000
地址偏移
名称
描述
复位值
0x0000
CTRL
控制寄存器
0x00000000
0x0004
STATUS
状态寄存器
0x00000000
0x0008
INT_EN
中断允许寄存器
0x00000000
0x0020
OP_CTRL
操作控制寄存器
0x00000000
0x0024
OP_CMD
操作命令寄存器
0x00000000
0x0028
OP_REG0
操作辅助 0 号寄存器
0x00000000
0x0028
OP_FIR_MISC
FIR 操作杂项寄存器
0x00000000
0x0028
OP_FFT_MISC
FFT 操作杂项寄存器
0x00000000
0x002C
OP_REG1
操作辅助 1 号寄存器
0x00000000
0x002C
OP_FIR_MISC1
FIR 操作杂项 1 号寄存器
0x00000000
0x0030
OP_REG2
操作辅助 2 号寄存器
0x00000000
0x0030
OP_FFT_INRBUF
FFT 输入缓冲区指针
0x00000000
0x0034
OP_REG3
操作辅助 3 号寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
487/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
快速傅里叶变换和数字滤波器加速模块 FFA
名称
描述
复位值
0x0034
OP_FIR_INBUF
FIR 输入缓冲区指针
0x00000000
0x0038
OP_REG4
操作辅助 4 号寄存器
0x00000000
0x0038
OP_FIR_COEFBUF
FIR 系数缓冲区指针
0x00000000
0x0038
OP_FFT_OUTRBUF
FFT 输出缓冲区指针
0x00000000
0x003C
OP_REG5
操作辅助 5 号寄存器
0x00000000
0x003C
OP_FIR_OUTBUF
FIR 输出缓冲区指针
0x00000000
0x0040
OP_REG6
操作辅助 6 号寄存器
0x00000000
0x0044
OP_REG7
操作辅助 7 号寄存器
0x00000000
表 170: FFA 寄存器列表
这里地址 0x28–0x44 是所有模式共同使用的,在不同的模式下有着不同的含义。具体看 FIR 起头或者 FFT
起头的同样地址的寄存器说明。
FFA 寄存器描述
31.3
31.3.1
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
7
6
5
4
3
2
1
0
EN
0
RW
N/A
RW
0
15
RSVD
SFTRST
31
CTRL (0x0)
x
CTRL [31:0]
位域
名称
描述
31
SFTRST
0
EN
置为 1 时软件复位本模块。
只有将该位置为 0 后才能使能本模块。
模块使能
CTRL 位域
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
x
x
x
x
N/A
x
0
0
0
0
0
OP_CMD_DONE
x
17
W1C
x
18
RSVD
x
19
NXT_CMD_RD_DONE
20
N/A
21
W1C
22
RD_ERR
23
W1C
24
WR_ERR
25
RD_NXT_ERR
26
W1C
27
W1C
28
FFT_OV
29
W1C
30
RSVD
31
FIR_OV
STATUS (0x4)
W1C
31.3.2
0
0
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
488/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
快速傅里叶变换和数字滤波器加速模块 FFA
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
2
1
0
STATUS [31:0]
位域
名称
描述
7
FIR_OV
FIR 过载错误
6
FFT_OV
FFT 过载错误
5
WR_ERR
AXI 总线写错误
4
RD_NXT_ERR
3
RD_ERR
继发命令的 AXI 总线读错误
AXI 总线读错误
NXT_CMD_RD_D
1
为 1 时表明继发命令的数据已全部读入
ONE
0
为 1 时表明当前命令已执行完,结果已存入系统内存
OP_CMD_DONE
STATUS 位域
INT_EN (0x8)
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
RW
0
7
6
5
4
3
OP_CMD_DONE
0
16
RW
0
17
RSVD
0
18
NXT_CMD_RD_DONE
0
19
RW
20
N/A
21
RD_ERR
22
RW
23
WR_ERR
24
RD_NXT_ERR
25
RW
26
RW
27
FFT_OV
28
RW
29
FIR_OV
30
WRSV1
31
RW
31.3.3
0
0
0
0
0
0
0
0
INT_EN [31:0]
位域
名称
描述
31-8
WRSV1
保留
7
FIR_OV
FIR 过载错误中断使能
6
FFT_OV
FFT 过载错误中断使能
5
WR_ERR
AXI 总线写错误中断使能
4
RD_NXT_ERR
3
RD_ERR
1
0
NXT_CMD_RD_D
ONE
OP_CMD_DONE
继发命令的 AXI 总线读错误中断使能
AXI 总线读错误中断使能
继发命令数据已读入中断使能
当前命令执行完中断使能
INT_EN 位域
31.3.4
OP_CTRL (0x20)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
489/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
0
1
0
EN
27
RW
28
NXT_EN
29
RW
30
NXT_ADDR
31
快速傅里叶变换和数字滤波器加速模块 FFA
OP_CTRL [31:0]
位域
名称
描述
31-2
NXT_ADDR
1
NXT_EN
继发命令使能
0
EN
当前命令使能
继发命令指针,(当前命令执行完后读取)
OP_CTRL 位域
0
0
19
18
17
0
0
0
16
15
14
0
0
13
0
0
12
11
0
0
0
10
9
0
8
0
x
RW
0
RW
0
20
RSVD
21
N/A
x
22
IND_TYPE
x
23
RW
x
N/A
x
24
COEF_TYPE
25
RW
x
26
OUTD_TYPE
x
27
RW
x
28
CMD
29
RW
30
RSVD
31
NXT_CMD_LEN
OP_CMD (0x24)
CONJ_C
31.3.5
OP_CMD [31:0]
位域
名称
24
CONJ_C
描述
当前命令执行时,对系数取共轭
当前命令
23-18
CMD
0: FIR
2: FFT
其他: 保留
输出数据格式:
0: 实数 Q31,
17-15
OUTD_TYPE
1: 实数 Q15,
2: 复数 Q31,
3: 复数 Q15
系数数据格式 (FIR 模式):
0: 实数 Q31,
14-12
COEF_TYPE
1: 实数 Q15,
2: 复数 Q31,
3: 复数 Q15
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
490/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
快速傅里叶变换和数字滤波器加速模块 FFA
描述
输入数据格式:
0: 实数 Q31,
11-9
1: 实数 Q15,
IND_TYPE
2: 复数 Q31,
3: 复数 Q15
7-0
继发命令长度(32 比特数值的个数)
NXT_CMD_LEN
OP_CMD 位域
31.3.6
OP_REG0 (0x28)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
0
0
0
RW
CT
31
0
OP_REG0 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG0 位域
OP_FIR_MISC (0x28)
30
29
28
27
26
25
24
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
RW
N/A
RSVD
31
FIR_COEF_TAPS
31.3.7
x
OP_FIR_MISC [31:0]
位域
名称
13-0
FIR_COEF_TAPS
描述
为 FIR 系数个数 (最大为 256)
OP_FIR_MISC 位域
31.3.8
OP_FFT_MISC (0x28)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
491/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
RW
N/A
x
6
5
4
3
2
1
0
0
0
0
0
0
0
IND_BLK
22
RW
23
TMP_BLK
24
RW
25
RSVD
26
N/A
27
IFFT
28
RW
29
FFT_LEN
30
RSVD
31
快速傅里叶变换和数字滤波器加速模块 FFA
OP_FFT_MISC [31:0]
位域
名称
描述
FFT 长度
10-7
0:8,
FFT_LEN
...,
n:2^(3+n)
1: IFFT
6
IFFT
3-2
TMP_BLK
赋值为 1
1-0
IND_BLK
赋值为 0
0: FFT
OP_FFT_MISC 位域
31.3.9
OP_REG1 (0x2C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
RW
CT
31
0
OP_REG1 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG1 位域
22
21
20
19
18
17
16
15
14
13
FIR_DATA_TAPS
23
RW
24
IND_MEM_BLK
25
RW
26
COEF_MEM_BLK
27
RW
28
OUTD_MEM_BLK
29
RW
30
RSVD
31
OP_FIR_MISC1 (0x2C)
N/A
31.3.10
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
492/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
快速傅里叶变换和数字滤波器加速模块 FFA
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
OP_FIR_MISC1 [31:0]
位域
名称
描述
21-20
OUTD_MEM_BLK
赋值为 0
19-18
COEF_MEM_BLK
赋值为 1
17-16
IND_MEM_BLK
赋值为 2
15-0
FIR_DATA_TAPS
为 FIR 输入数据个数
OP_FIR_MISC1 位域
31.3.11
OP_REG2 (0x30)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CT
31
0
OP_REG2 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG2 位域
31.3.12
OP_FFT_INRBUF (0x30)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
LOC
31
0
OP_FFT_INRBUF [31:0]
位域
名称
描述
31-0
LOC
输入数据缓冲区指针
OP_FFT_INRBUF 位域
31.3.13
OP_REG3 (0x34)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
493/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CT
31
快速傅里叶变换和数字滤波器加速模块 FFA
0
OP_REG3 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG3 位域
31.3.14
OP_FIR_INBUF (0x34)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
LOC
31
0
OP_FIR_INBUF [31:0]
位域
名称
描述
31-0
LOC
输入数据缓冲区指针
OP_FIR_INBUF 位域
31.3.15
OP_REG4 (0x38)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CT
31
0
OP_REG4 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG4 位域
31.3.16
OP_FIR_COEFBUF (0x38)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
494/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
LOC
31
快速傅里叶变换和数字滤波器加速模块 FFA
0
OP_FIR_COEFBUF [31:0]
位域
名称
描述
31-0
LOC
系数缓冲区指针
OP_FIR_COEFBUF 位域
31.3.17
OP_FFT_OUTRBUF (0x38)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
LOC
31
0
OP_FFT_OUTRBUF [31:0]
位域
名称
描述
31-0
LOC
输出数据缓冲区指针
OP_FFT_OUTRBUF 位域
31.3.18
OP_REG5 (0x3C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CT
31
0
OP_REG5 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG5 位域
31.3.19
OP_FIR_OUTBUF (0x3C)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
495/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
LOC
31
快速傅里叶变换和数字滤波器加速模块 FFA
0
OP_FIR_OUTBUF [31:0]
位域
名称
31-0
LOC
描述
输出数据缓冲区指针,输出数据个数为(FIR_DATA_TAPS FIR_COEF_TAPS + 1)
OP_FIR_OUTBUF 位域
31.3.20
OP_REG6 (0x40)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CT
31
0
OP_REG6 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG6 位域
31.3.21
OP_REG7 (0x44)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CT
31
0
OP_REG7 [31:0]
位域
名称
31-0
CT
描述
寄存器内容
OP_REG7 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
496/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
快速傅里叶变换和数字滤波器加速模块 FFA
FFA 配置使用简单说明
31.4
31.4.1
软件复位
将 CTRL[SFTRST] 置为 1 后复位本模块,再将 CTRL[SFTRST] 置为 0 后解除本模块的软件复位。
31.4.2
FFT(IFFT)模式
各步骤如下:
1. 将 OP_ FFT_ INRBUF 置为 FFT 的输入数据在系统里的起始位置的指针。
2. 将 OP_ FFT_ OUTRBUF 置为 FFT 的输出数据在系统里的起始位置的指针。
3. 根据要求的 FFT 点数将 OP_ FFT_ MISC [FFT_ LEN] 置为需要值。将 OP_ FFT_ MISC [TMP_ BLK]
置为 1。将 OP_ FFT_ MISC [IND_ BLK] 置为 0。
4. 如果做 IFFT,需要把 OP_ FFT_ MISC [FFT_ LEN] 置为 1,否则该位为 0。
5. 将 OP_ REG1 清为 0。
6. 将 OP_CMD[CMD] 置为 2,
根据实际情况将 OP_CMD [IND_ TYPE] 置为合适的值,
根据需要将 OP_CMD
[OUTD_ TYPE] 置为合适的值。
7. 将 INT_EN 相应控制位配置成合适的值。
8. 将 OP_CTRL[EN] 置为 1,使能当前功能。这样本模块就开始工作了。
9. 计算和相应的数据传送都完成后,会自动将 STATUS [OP_ CMD_ DONE] 置 1。如果相应的中断使能
被置 1,则会提起中断。
31.4.3
FIR 模式
设 FIR 的系数个数是 N,FIR 的输入数据个数是 M,则 FIR 的输出数据个数是 M+N-1。
相关配置各步骤如下:
1. 将 OP_ FIR_ INBUF 置为 FIR 的输入数据在系统里的起始位置的指针。
2. 将 OP_ FIR_ COEFBUF 置为 FIR 的系数数据在系统里的起始位置的指针。
3. 将 OP_ FIR_ OUTBUF 置为 FIR 的输出数据在系统里的起始位置的指针。
4. 将 OP_ FIR_ MISC [FIR_ COEF_ TAPS] 置为 FIR 的系数个数 N。
5. 将 OP_ FIR_ MISC1 [FIR_ DATA_ TAPS] 置为 FIR 的输入数据个数 M。将 OP_ FIR_ MISC1 [OUTD_
MEM_ BLK] 置为 0,将 OP_ FIR_ MISC1 [COEF_ MEM_ BLK] 置为 1,将 OP_ FIR_ MISC1 [IND_
MEM_ BLK] 置为 2。
6. 将 OP_ REG2 置为 0xFFFF_FFFF。
7. 将 OP_CMD[CMD] 置为 0,根据实际情况将 OP_CMD [IND_ TYPE] 置为合适的值,将 OP_CMD
[COEF_ TYPE] 置为合适的值,根据需要将 OP_CMD [OUTD_ TYPE] 置为合适的值。
8. 将 INT_EN 相应控制位配置成合适的值。
9. 将 OP_CTRL[EN] 置为 1,使能当前功能。这样本模块就开始工作了。
10. 计算和相应的数据传送都完成后,会自动将 STATUS [OP_ CMD_ DONE] 置 1。如果相应的中断使能
被置 1,则会提起中断。
31.4.4
继发命令的使用
继发命令模式,是指通过预先建立的描述符链表的方式将一系列的操作链接在一起。这个链表里可以全部是
FFT(IFFT)操作, 或者全部是 FIR 操作,或者 FFT(IFFT)操作和 FIR 操作的混合。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
497/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
快速傅里叶变换和数字滤波器加速模块 FFA
描述符实际上就是对从地址 OP_CTRL 至 OP_REG7 这些接口寄存器的配置值。在旧的操作命令执行结束
后,本模块会自动检查是否有继发命令存在。如果 OP_ CTRL [NXT_ EN] 为 1,则继发命令存在于;从 OP_ CTRL
[NXT_ ADDR] 开始、并且长度为 OP_ CMD [NXT_ CMD_ LEN] 个 32 比特数值的位置。每个 NXT_ ADDR 的最
低 2 比特必须为 0,所以在配置时,这最低 2 位是忽略的。OP_ CMD [NXT_ CMD_ LEN] 取为 10。
如果存在继发命令,则从这个继发命令的地址指针开始的位置,依次读入数据,并依次配置 OP_CTRL 至
OP_REG7 这些接口寄存器。然后根据这些配置寄存器的新的数值执行相应操作。
31.4.5
中断
FFA 的中断源主要是计算饱和截止、总线错误、执行结束。需要相应的中断使能被允许,且相应的状态位置
1 时才会提起中断。
这些中断共用一根中断线,所以需要读取相应状态位和中断允许位来决定中断原因。
FFA 中断源的具体说明如171所示。
表 171: FFA 中断请求
中断事件
事件标志
使能控制位
FIR 计算过程中出现饱和截止
STATUS [FIR_OV]
INT_EN [FIR_OV]
FFT 计算过程中出现饱和截止
STATUS [FFT_OV]
INT_EN [FFT_OV]
总线写错误
STATUS [WR_ERR]
INT_EN [WR_ERR]
总线读错误
STATUS [RD_ERR]
INT_EN [RD_ERR]
当前操作执行结束
STATUS
INT_EN
[OP_
CMD_
DONE]
继发命令描述符总线读错误
[OP_
CMD_
DONE]
STATUS
[RD_
NXT_
INT_EN [RD_ NXT_ ERR]
ERR]
当前继发命令描述符读取结束
STATUS [NXT_ CMD_
INT_EN
[NXT_
RD_ DONE]
RD_ DONE]
CMD_
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
498/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMA 控制器
DMA 控制器
32
本章节介绍 DMA 控制器的功能和特性。
特性总结
32.1
DMA 控制器的主要特性有:
● 支持 8 个可配置的通道
● 通道支持 2 级优先级配置
● 相同优先级通道使用 Round-Robin 仲裁
● 支持链式连接多个 DMA 任务
功能描述
32.2
DMA 控制器支持 8 个通道,每个通道都可独立配置数据传输的参数。用户可以同时使用多个 DMA 通道,DMA
控制器会交替执行不同通道的数据传输任务。DMA 控制器可能分多次完成单个通道的数据传输,再这个通道全部
任务完成后,将状态寄存器内的相应标志位置位。
某个 DMA 通道的数据传输可能因为数据传输错误而中断,也可以由软件中止。此种情况下,DMA 控制器会
停止传输数据,并将状态寄存器内的相应标志位置位。
32.2.1
DMA 硬件握手
DMA 控制器支持 8 对请求-响应的握手信号,请求信号来自功能模块并经由 DMAMUX 路由至 DMA 控制
器,DMA 控制器根据配置使用某个通道执行将该请求,完成长度为 SrcBurstSize 的数据传输后发送响应信号给
DMAMUX,完成硬件握手。
32.2.2
DMA 链式传输
DMA 支持链式传输,可以在处理器不介入的情况下,连续完成多个不同配置的传输任务。
要想使用 DMA 的链式传输功能,
用户需要预先在内存中构建一系列相互链接的 DMA 任务描述符列表。列表的
第一个元素就是 DMA 通道的控制寄存器,其余的任务描述符存放在内存中。DMA 任务描述符中的 ChnLLPointer
控制字就是 DMA 通道 n 下一个任务描述符的指针。如果 ChnLLPointer 值非零,DMA 控制器会在完成当前任务
描述符的相应任务后,从 ChnLLPointer 指向地址取下一个任务描述符。如果 ChnLLPointer 的值为 0,表示此任
务描述符为列表中最后一个,链条中止。
表 172列举了任务描述符的格式,描述符的存储地址需要 8 字节对齐,并且描述符本身不要跨越 4K 的边界。
32.2.3
数据顺序
DMA 控制器支持 3 种地址模式:递增模式,递减模式和不变模式。
● 递增模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问此次源或者目标之后的地址
● 递减模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问此次源或者目标之前的地址
● 不变模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问的源或者目标地址固定不变
在源和目标地址的模式配置相同时,DMA 会保持源与目标区数据的字节顺序不变。但是如果源与目标的地址
配置相反,那么源与目标地址间数据的字节顺序也会相反。其中不变模式字节顺序于递增模式相同。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
499/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMA 控制器
名称
地址偏移
描述
Ctrl
0x00
通道控制,格式同 CTRL 寄存器
TranSize
0x04
总传输长度,格式同 TRANSIZE 寄存器
SrcAddrL
0x08
源地址 L,格式同 SRCADDRL 寄存器
SrcAddrH
0x0C
源地址 H,格式同 SRCADDRH 寄存器
DstAddrL
0x10
目标地址 L,格式同 DSTADDRL 寄存器
DstAddrH
0x14
目标地址 H,格式同 DSTADDRH 寄存器
LLPointerL
0x18
链表指针 L,格式同 LLPOINTERL 寄存器
LLPointerH
0x1C
链表指针 H,格式同 LLPOINTERH 寄存器
表 172: DMA 链式任务描述符
32.3
DMA 寄存器
DMA 的寄存器列表如下:
HDMA base address: 0xF00C4000
XDMA base address: 0xF3048000
地址偏移
名称
描述
复位值
0x0010
DMACFG
配置查询寄存器
0x00000000
0x0020
DMACTRL
软件复位寄存器
0x00000000
0x0024
CHABORT
通道中止寄存器
0x00000000
0x0030
INTSTATUS
中断状态寄存器
0x00000000
0x0034
CHEN
通道使能状态寄存器
0x00000000
0x0040
CHCTRL[CH0][CTRL]
通道 0 控制寄存器
0x00000000
0x0044
CHCTRL[CH0][TRANSIZE]
通道 0 传输数据量
0x00000000
0x0048
CHCTRL[CH0][SRCADDR]
通道 0 源数据低位地址
0x00000001
0x004C
CHCTRL[CH0][SRCADDRH]
通道 0 源数据高位地址
0x00000001
0x0050
CHCTRL[CH0][DSTADDR]
通道 0 目标数据低位地址
0x00000001
0x0054
CHCTRL[CH0][DSTADDRH]
通道 0 目标数据高位地址
0x00000001
0x0058
CHCTRL[CH0][LLPOINTER]
通道 0 链式传输指针低位地址
0x00000000
0x005C
CHCTRL[CH0][LLPOINTERH]
通道 0 链式传输指针高位地址
0x00000000
0x0060
CHCTRL[CH1][CTRL]
通道 1 控制寄存器
0x00000000
0x0064
CHCTRL[CH1][TRANSIZE]
通道 1 传输数据量
0x00000000
0x0068
CHCTRL[CH1][SRCADDR]
通道 1 源数据低位地址
0x00000001
0x006C
CHCTRL[CH1][SRCADDRH]
通道 1 源数据高位地址
0x00000001
0x0070
CHCTRL[CH1][DSTADDR]
通道 1 目标数据低位地址
0x00000001
0x0074
CHCTRL[CH1][DSTADDRH]
通道 1 目标数据高位地址
0x00000001
0x0078
CHCTRL[CH1][LLPOINTER]
通道 1 链式传输指针低位地址
0x00000000
0x007C
CHCTRL[CH1][LLPOINTERH]
通道 1 链式传输指针高位地址
0x00000000
0x0080
CHCTRL[CH2][CTRL]
通道 2 控制寄存器
0x00000000
0x0084
CHCTRL[CH2][TRANSIZE]
通道 2 传输数据量
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
500/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
DMA 控制器
名称
描述
复位值
0x0088
CHCTRL[CH2][SRCADDR]
通道 2 源数据低位地址
0x00000001
0x008C
CHCTRL[CH2][SRCADDRH]
通道 2 源数据高位地址
0x00000001
0x0090
CHCTRL[CH2][DSTADDR]
通道 2 目标数据低位地址
0x00000001
0x0094
CHCTRL[CH2][DSTADDRH]
通道 2 目标数据高位地址
0x00000001
0x0098
CHCTRL[CH2][LLPOINTER]
通道 2 链式传输指针低位地址
0x00000000
0x009C
CHCTRL[CH2][LLPOINTERH]
通道 2 链式传输指针高位地址
0x00000000
0x00A0
CHCTRL[CH3][CTRL]
通道 3 控制寄存器
0x00000000
0x00A4
CHCTRL[CH3][TRANSIZE]
通道 3 传输数据量
0x00000000
0x00A8
CHCTRL[CH3][SRCADDR]
通道 3 源数据低位地址
0x00000001
0x00AC
CHCTRL[CH3][SRCADDRH]
通道 3 源数据高位地址
0x00000001
0x00B0
CHCTRL[CH3][DSTADDR]
通道 3 目标数据低位地址
0x00000001
0x00B4
CHCTRL[CH3][DSTADDRH]
通道 3 目标数据高位地址
0x00000001
0x00B8
CHCTRL[CH3][LLPOINTER]
通道 3 链式传输指针低位地址
0x00000000
0x00BC
CHCTRL[CH3][LLPOINTERH]
通道 3 链式传输指针高位地址
0x00000000
0x00C0
CHCTRL[CH4][CTRL]
通道 4 控制寄存器
0x00000000
0x00C4
CHCTRL[CH4][TRANSIZE]
通道 4 传输数据量
0x00000000
0x00C8
CHCTRL[CH4][SRCADDR]
通道 4 源数据低位地址
0x00000001
0x00CC
CHCTRL[CH4][SRCADDRH]
通道 4 源数据高位地址
0x00000001
0x00D0
CHCTRL[CH4][DSTADDR]
通道 4 目标数据低位地址
0x00000001
0x00D4
CHCTRL[CH4][DSTADDRH]
通道 4 目标数据高位地址
0x00000001
0x00D8
CHCTRL[CH4][LLPOINTER]
通道 4 链式传输指针低位地址
0x00000000
0x00DC
CHCTRL[CH4][LLPOINTERH]
通道 4 链式传输指针高位地址
0x00000000
0x00E0
CHCTRL[CH5][CTRL]
通道 5 控制寄存器
0x00000000
0x00E4
CHCTRL[CH5][TRANSIZE]
通道 5 传输数据量
0x00000000
0x00E8
CHCTRL[CH5][SRCADDR]
通道 5 源数据低位地址
0x00000001
0x00EC
CHCTRL[CH5][SRCADDRH]
通道 5 源数据高位地址
0x00000001
0x00F0
CHCTRL[CH5][DSTADDR]
通道 5 目标数据低位地址
0x00000001
0x00F4
CHCTRL[CH5][DSTADDRH]
通道 5 目标数据高位地址
0x00000001
0x00F8
CHCTRL[CH5][LLPOINTER]
通道 5 链式传输指针低位地址
0x00000000
0x00FC
CHCTRL[CH5][LLPOINTERH]
通道 5 链式传输指针高位地址
0x00000000
0x0100
CHCTRL[CH6][CTRL]
通道 6 控制寄存器
0x00000000
0x0104
CHCTRL[CH6][TRANSIZE]
通道 6 传输数据量
0x00000000
0x0108
CHCTRL[CH6][SRCADDR]
通道 6 源数据低位地址
0x00000001
0x010C
CHCTRL[CH6][SRCADDRH]
通道 6 源数据高位地址
0x00000001
0x0110
CHCTRL[CH6][DSTADDR]
通道 6 目标数据低位地址
0x00000001
0x0114
CHCTRL[CH6][DSTADDRH]
通道 6 目标数据高位地址
0x00000001
0x0118
CHCTRL[CH6][LLPOINTER]
通道 6 链式传输指针低位地址
0x00000000
0x011C
CHCTRL[CH6][LLPOINTERH]
通道 6 链式传输指针高位地址
0x00000000
0x0120
CHCTRL[CH7][CTRL]
通道 7 控制寄存器
0x00000000
0x0124
CHCTRL[CH7][TRANSIZE]
通道 7 传输数据量
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
501/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
DMA 控制器
名称
描述
复位值
0x0128
CHCTRL[CH7][SRCADDR]
通道 7 源数据低位地址
0x00000001
0x012C
CHCTRL[CH7][SRCADDRH]
通道 7 源数据高位地址
0x00000001
0x0130
CHCTRL[CH7][DSTADDR]
通道 7 目标数据低位地址
0x00000001
0x0134
CHCTRL[CH7][DSTADDRH]
通道 7 目标数据高位地址
0x00000001
0x0138
CHCTRL[CH7][LLPOINTER]
通道 7 链式传输指针低位地址
0x00000000
0x013C
CHCTRL[CH7][LLPOINTERH]
通道 7 链式传输指针高位地址
0x00000000
表 173: DMA 寄存器列表
DMA 寄存器详细信息
32.4
DMA 的寄存器详细说明如下:
DMACFG (0x10)
x
0
0
0
0
15
0
0
14
13
0
0
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
12
11
10
9
8
1
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
CHANNELNUM
0
16
RO
17
FIFODEPTH
0
18
RO
0
19
REQNUM
0
20
RO
21
BUSNUM
22
CORENUM
0
23
RO
x
24
RO
25
ADDRWIDTH
x
26
RO
x
27
DATAWIDTH
0
28
RO
REQSYNC
RO
0
29
RSVD
CHAINXFR
30
RO
31
N/A
32.4.1
DMACFG [31:0]
位域
名称
描述
31
CHAINXFR
30
REQSYNC
25-24
DATAWIDTH
AXI 总线位宽
23-17
ADDRWIDTH
AXI 地址位宽
16
CORENUM
15
BUSNUM
AXI 总线数量
14-10
REQNUM
请求/响应支持数量
9-4
FIFODEPTH
FIFO 深度
3-0
CHANNELNUM
通道数量
0:不支持链式传输
1:支持链式传输
DMA 请求是否被同步
DMA 核心数量
DMACFG 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
502/1016
RESET
31
DMACTRL (0x20)
RSVD
32.4.2
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
WO
30
N/A
31
DMA 控制器
x
DMACTRL [31:0]
位域
名称
描述
0
RESET
软件复位,将该位置 1 则复位 DMA 控制器并禁止所有通道
DMACTRL 位域
32.4.3
CHABORT (0x24)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
WO
CHABORT
31
0
CHABORT [31:0]
位域
名称
描述
31-0
CHABORT
每个通道对应一位,写 1 表示将该通道的传输中止,仅对已使能
的通道有效。
CHABORT 位域
INTSTATUS (0x30)
x
x
x
x
27
26
25
24
23
22
21
20
x
x
x
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
TC
W1C
N/A
x
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
0
ERROR
28
W1C
29
ABORT
30
RSVD
31
W1C
32.4.4
0
INTSTATUS [31:0]
位域
名称
描述
23-16
TC
通道传输结束标志,每一位对应一个通道。
15-8
ABORT
通道传输中止标志,每一位对应一个通道。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
503/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
DMA 控制器
描述
通道传输错误标志,每一位对应一个通道。
错误事件包括:
7-0
- 总线错误
ERROR
- 非对齐地址
- 非对齐位宽
INTSTATUS 位域
32.4.5
CHEN (0x34)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RO
CHEN
31
0
CHEN [31:0]
位域
名称
31-0
CHEN
描述
通道使能状态查询
CHEN 位域
0
ENABLE
DSTREQSEL
RW
RW
0
RW
0
INTTCMASK
0
INTERRMASK
0
SRCREQSEL
DSTADDRCTRL
0
RW
0
RW
0
14
RW
0
15
SRCADDRCTRL
0
16
RW
0
17
INTABTMASK
0
18
RW
0
19
DSTMODE
0
20
RW
0
21
SRCMODE
0
22
RW
0
23
DSTWIDTH
x
24
RW
0
25
SRCWIDTH
RSVD
N/A
0
26
RW
PRIORITY
0
27
SRCBURSTSIZE
DSTBUSINFIDX
RW
28
RW
29
SRCBUSINFIDX
30
RW
31
CHCTRL[CTRL] (0x40 + 0x20 * n)
RW
32.4.6
0
0
0
CHCTRL[CTRL] [31:0]
位域
名称
31
SRCBUSINFIDX
30
DSTBUSINFIDX
描述
源数据总线接口选择,对于单总线配置的 DMA 控制器,该位必须
是0
目标数据总线接口选择,对于单总线配置的 DMA 控制器,该位必
须是 0
通道优先级:
29
PRIORITY
0:低优先级
1:高优先级
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
504/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
DMA 控制器
描述
源数据 burst 数量,burst 传输的字节数等于(
SrcBurstSize * SrcWidth)
。
0x0: 1 transfer
0x1: 2 transfers
0x2: 4 transfers
0x3: 8 transfers
0x4: 16 transfers
27-24
SRCBURSTSIZE
0x5: 32 transfers
0x6: 64 transfers
0x7: 128 transfers
0x8: 256 transfers
0x9:512 transfers
0xa: 1024 transfers
0xb - 0xf: 非法值
对于 XDMA,允许设置的最大值为 0xa,对于 HDMA,允许设置
的最大值为 0x7
源数据传输位宽:
0x0: 8 位
0x1: 16 位
23-21
SRCWIDTH
0x2: 32 位
0x3: 64 位
0x4 - 0x7: 非法值
对于 XDMA,允许设置的最大值为 0x3,对于 HDMA,允许设置
的最大值为 0x2
目标数据传输位宽:
0x0: 8 位
0x1: 16 位
20-18
DSTWIDTH
0x2: 32 位
0x3: 64 位
0x4 - 0x7: 非法值
对于 XDMA,允许设置的最大值为 0x3,对于 HDMA,允许设置
的最大值为 0x2
源数据 DMA 握手模式:
17
SRCMODE
0:普通模式
1:握手模式
目标数据 DMA 握手模式:
16
DSTMODE
0:普通模式
1:握手模式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
505/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
DMA 控制器
描述
源数据地址访问控制:
0x0:地址递增
15-14
SRCADDRCTRL
0x1:地址递减
0x2:固定地址
0x3:非法设置
目标数据地址访问控制:
0x0:地址递增
13-12
DSTADDRCTRL
0x1:地址递减
0x2:固定地址
0x3:非法设置
11-8
SRCREQSEL
源数据 DMA 请求选择
7-4
DSTREQSEL
目标数据 DMA 请求选择
数据中止中断屏蔽:
3
INTABTMASK
0:允许数据中止时发出中断
1:禁止数据中止时发出中断
数据错误中断屏蔽:
2
INTERRMASK
0:允许数据错误时发出中断
1:禁止数据错误时发出中断
数据传输完成中断屏蔽:
1
INTTCMASK
0:允许数据传输完成时发出中断
1:禁止数据传输完成时发出中断
0
通道使能
ENABLE
CHCTRL[CTRL] 位域
32.4.7
CHCTRL[TRANSIZE] (0x44 + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TRANSIZE
31
0
CHCTRL[TRANSIZE] [31:0]
位域
名称
31-0
TRANSIZE
描述
源数据的数据量,总传输数据量为(TranSize * SrcWidth)
CHCTRL[TRANSIZE] 位域
32.4.8
CHCTRL[SRCADDR] (0x48 + 0x20 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
506/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SRCADDRL
31
DMA 控制器
0
CHCTRL[SRCADDR] [31:0]
位域
名称
描述
31-0
SRCADDRL
源数据地址的低 32 位
CHCTRL[SRCADDR] 位域
32.4.9
CHCTRL[SRCADDRH] (0x4C + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SRCADDRH
31
0
CHCTRL[SRCADDRH] [31:0]
位域
名称
描述
31-0
SRCADDRH
源数据地址的高 32 位,该寄存器仅在总线地址位宽高于 32 位时
有效
CHCTRL[SRCADDRH] 位域
32.4.10
CHCTRL[DSTADDR] (0x50 + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DSTADDRL
31
0
CHCTRL[DSTADDR] [31:0]
位域
名称
31-0
DSTADDRL
描述
目标数据地址的低 32 位
CHCTRL[DSTADDR] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
507/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
32.4.11
DMA 控制器
CHCTRL[DSTADDRH] (0x54 + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DSTADDRH
31
0
CHCTRL[DSTADDRH] [31:0]
位域
名称
描述
31-0
DSTADDRH
目标数据地址的高 32 位,该寄存器仅在总线地址位宽高于 32 位
时有效
CHCTRL[DSTADDRH] 位域
CHCTRL[LLPOINTER] (0x58 + 0x20 * n)
29
28
27
26
25
24
23
22
21
20
19
18
0
0
0
0
0
0
0
0
0
0
0
0
0
0
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
RSVD
N/A
RW
0
1
0
LLDBUSINFIDX
30
LLPOINTERL
31
RW
32.4.12
x
0
CHCTRL[LLPOINTER] [31:0]
位域
名称
描述
31-3
LLPOINTERL
0
LLDBUSINFIDX
链式传输的描述符低位地址,地址为 64 位对齐。
获取描述符使用的总线端口选择,对于单总线配置的 DMA 控制
器,该位必须是 0
CHCTRL[LLPOINTER] 位域
31
30
CHCTRL[LLPOINTERH] (0x5C + 0x20 * n)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
LLPOINTERH
32.4.13
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
508/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
DMA 控制器
0
CHCTRL[LLPOINTERH] [31:0]
位域
名称
31-0
LLPOINTERH
描述
链式传输的描述符高位地址,该寄存器仅在总线地址位宽高于 32
位时有效
CHCTRL[LLPOINTERH] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
509/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMA 请求路由器 DMAMUX
DMA 请求路由器 DMAMUX
33
本章节介绍 DMA 请求路由器 DMAMUX 的功能和特性。
本产品所有支持生成 DMA 请求的外设,及其在 DMA 请求路由器 DMAMUX 上的分配详情,请查阅节 30.3。
33.1
特性总结
本章节介绍 DMA 请求路由器 DMAMUX 的主要特性:
● 支持多达 128 个外设 DMA 请求
● 支持 16 个输出通道
33.2
功能描述
DMA 请求路由器的功能是实现外设 DMA 请求对 DMA 控制器各个通道的灵活动态映射,使得任意外设可以
发送 DMA 请求给任意 DMA 控制器的任意通道。
通过 DMAMUX 的各个通道的配置寄存器 CHCFGx 配置 DMAMUX 的步骤如下:
● 通过MUXCFGx的SOURCE位选择外设的 DMA 请求
● MUXCFGx的ENABLE位置 1,打开 DMAMUX 的通道 x
33.3
DMAMUX 寄存器
DMAMUX 的寄存器列表如下:
DMAMUX base address: 0xF00C0000
地址偏移
名称
描述
复位值
0x0000
MUXCFG[HDMA_MUX0]
HDMA 端口 0 配置寄存器
0x00000000
0x0004
MUXCFG[HDMA_MUX1]
HDMA 端口 1 配置寄存器
0x00000000
0x0008
MUXCFG[HDMA_MUX2]
HDMA 端口 2 配置寄存器
0x00000000
0x000C
MUXCFG[HDMA_MUX3]
HDMA 端口 3 配置寄存器
0x00000000
0x0010
MUXCFG[HDMA_MUX4]
HDMA 端口 4 配置寄存器
0x00000000
0x0014
MUXCFG[HDMA_MUX5]
HDMA 端口 5 配置寄存器
0x00000000
0x0018
MUXCFG[HDMA_MUX6]
HDMA 端口 6 配置寄存器
0x00000000
0x001C
MUXCFG[HDMA_MUX7]
HDMA 端口 7 配置寄存器
0x00000000
0x0020
MUXCFG[XDMA_MUX0]
XDMA 端口 0 配置寄存器
0x00000000
0x0024
MUXCFG[XDMA_MUX1]
XDMA 端口 1 配置寄存器
0x00000000
0x0028
MUXCFG[XDMA_MUX2]
XDMA 端口 2 配置寄存器
0x00000000
0x002C
MUXCFG[XDMA_MUX3]
XDMA 端口 3 配置寄存器
0x00000000
0x0030
MUXCFG[XDMA_MUX4]
XDMA 端口 4 配置寄存器
0x00000000
0x0034
MUXCFG[XDMA_MUX5]
XDMA 端口 5 配置寄存器
0x00000000
0x0038
MUXCFG[XDMA_MUX6]
XDMA 端口 6 配置寄存器
0x00000000
0x003C
MUXCFG[XDMA_MUX7]
XDMA 端口 7 配置寄存器
0x00000000
表 174: DMAMUX 寄存器列表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
510/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMA 请求路由器 DMAMUX
DMAMUX 寄存器详细信息
33.4
DMAMUX 的寄存器详细说明如下:
30
29
28
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
3
2
1
0
0
0
0
RW
N/A
RW
0
18
RSVD
ENABLE
31
MUXCFG (0x0 + 0x4 * n)
SOURCE
33.4.1
x
0
MUXCFG [31:0]
位域
名称
描述
31
ENABLE
使能 DMA 端口
6-0
SOURCE
将选定的 DMA 请求路由到 DMA 端口
MUXCFG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
511/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通信信箱 MBX
通信信箱 MBX
34
本章节介绍通信信箱 MBX 的功能和特性。
特性总结
34.1
通信信箱 MBX 支持进行处理器核间通信,以及处理器的进程间通信。主要特性如下:
● 支持 2 个寄存器访问接口
● 每个接口支持 TX FIFO 和 RX FIFO
● 支持标志位反映 TX FIFO 和 RX FIFO 状态
● 支持生成中断
MBX 可以产生两个中断,分别对应 A 端口和 B 端口。可以在多核系统中分配给不同的核或者单核系统中分配给
不同的进程。
功能描述
34.2
本章节描述通信信箱 MBX 的功能。
34.2.1
MBX 寄存器访问接口
通信信箱 MBX 有 2 套寄存器访问接口,接口 A 和接口 B。A 和 B 接口都具有一套 TX FIFO 寄存器、RX FIFO
寄存器、控制寄存器和状态寄存器。
用户从 A 接口的发送端 TX 发送的数据,可以在 B 接口的接收端 RX 接收到。同理,A 接口的接收端 RX 可
以接收到 B 接口发送端 TX 发送的数据。
34.2.2
FIFO 管理
MBX 的发送端 TX FIFO 深度为 4 个字 (4×32 位),TX FIFO 的写入接口为 TXREG 寄存器。MBX 支持提示
TX FIFO 的各类状态,即 TX FIFO 是否为空,TX FIFO 是否已满,以及 TX FIFO 中空的字数目。
MBX 的接收端 RX FIFO 深度为 4 个字 (4×32 位)。RX FIFO 的读取接口为 RXREG 寄存器。MBX 支持提示
RX FIFO 的各类状态,即 RX FIFO 是否为空,RX FIFO 是否已满,以及 RX FIFO 中有效的字数目。
34.2.3
中断
MBX 支持生成以下中断:
● TX FIFO 为空时,可以触发中断。
● TX FIFO 为非满时,可以触发中断。
● RX FIFO 非空时,可以触发中断
● RX FIFO 已满时,可以触发中断
● 发送消息字内容为空,即已被读取时,可以触发中断
● 接收消息字内容有效时,可以触发中断
34.3
MBX 寄存器
MBX 的寄存器列表如下:
MBX0A base address: 0xF00A0000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
512/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通信信箱 MBX
MBX0B base address: 0xF00A4000
地址偏移
名称
描述
复位值
0x0000
CR
控制寄存器
0x00000000
0x0004
SR
状态寄存器
0x000000E2
0x0008
TXREG
消息字发送寄存器
0x00000000
0x000C
RXREG
消息字接收寄存器
0x00000000
0x0010
TXWRD[TXFIFO0]
消息队列发送 FIFO
0x00000000
0x0020
RXWRD[RXFIFO0]
消息队列接收 FIFO
0x00000000
表 175: MBX 寄存器列表
MBX 寄存器详细信息
34.4
MBX 的寄存器详细说明如下:
0
0
0
0
0
0
12
0
0
RSVD
11
10
9
RW
0
0
0
0
8
0
7
6
5
4
0
0
0
0
3
2
0
0
1
0
RWMVIE
0
13
RW
0
N/A
0
14
TWMEIE
15
RW
16
RSVD
0
17
N/A
0
18
RFMFIE
0
19
RFMAIE
0
20
RW
0
21
RW
0
22
TFMEIE
0
RW
0
23
TFMAIE
24
RW
25
RW
26
BEIE
27
RW
28
RSVD
29
N/A
30
TXRESET
31
CR (0x0)
BARCTL
34.4.1
0
0
CR [31:0]
位域
名称
31
TXRESET
描述
复位发送消息字和发送消息队列。
写 1 复位。
总线访问响应控制:
0x0:不产生任何错误响应
0x1:以下情况会产生总线访问错误响应 - (1) 访问无效地址,(2)
向只读寄存器发出写操作,(3) 当发送消息队列 FIFO 已满或发送
消息字未被读取时对其进行写操作,(4) 当接收消息队列 FIFO 为
15-14
BARCTL
空或接收消息字无效时对其进行读操作。
0x2:保留值
0x3:保留值
本寄存器配置不影响以下结果:对已满的发送消息队列的写操作
不会生效,对未被读取的发送消息字的写操作会覆盖之前的消息
字,对空的接收消息队列或无效的接收消息字的读操作,会返回
上次读取的数据或复位值。
8
BEIE
7
TFMAIE
总线访问错误中断使能,其对应的错误状态包括 SR[13:8] 的各个
位域。
发送消息队列非满中断使能
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
513/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通信信箱 MBX
位域
名称
描述
6
TFMEIE
发送消息队列空中断使能
5
RFMAIE
接收消息队列非空中断使能
4
RFMFIE
接收消息队列满中断使能
1
TWMEIE
发送消息字已被读取中断使能
0
RWMVIE
接收消息字有效中断使能
CR 位域
SR (0x4)
0
1
1
1
0
0
0
1
0
RWMV
0
2
RO
0
3
TWME
4
RO
5
RSVD
0
6
N/A
0
7
RFMF
0
8
RFMA
9
RO
x
10
RO
x
11
TFMA
0
12
TFME
0
13
RW
RO
0
14
RW
0
15
EW2RO
0
RFVC
0
16
W1C
0
N/A
0
17
EAIVA
0
18
EWTFF
0
19
W1C
0
20
W1C
0
21
ERRFE
22
W1C
23
ERRRE
0
24
EWTRF
0
25
W1C
0
26
W1C
0
27
RSVD
28
N/A
29
TFEC
30
RSVD
31
RO
34.4.2
1
0
SR [31:0]
位域
名称
描述
23-20
RFVC
接收消息队列中的有效消息数量
19-16
TFEC
发送消息队列中的剩余空间数量
13
ERRRE
访问错误状态标志:在接收消息字无效时对其进行读取
12
EWTRF
访问错误状态标志:在发送消息字未被读取时对其进行写入
11
ERRFE
访问错误状态标志:在接收消息队列为空时对其进行读取
10
EWTFF
访问错误状态标志:在发送消息队列满时对其进行写入
9
EAIVA
访问错误状态标志:访问了不存在的寄存器地址
8
EW2RO
7
TFMA
状态标志:发送消息队列未满
6
TFME
状态标志:发送消息队列空
5
RFMA
4
RFMF
1
TWME
0
RWMV
访问错误状态标志:对接收消息字和接收消息队列进行了写操作
状态标志:接收消息队列非空
在相关寄存器使能时能够触发中断
状态标志:接收消息队列为满
在相关寄存器使能时能够触发中断
状态标志:发送消息字为空(已被读取)
在相关寄存器使能时能够触发中断
状态标志:接收消息字有效
在相关寄存器使能时能够触发中断
SR 位域
34.4.3
TXREG (0x8)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
514/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
WO
TXREG
31
通信信箱 MBX
0
TXREG [31:0]
位域
名称
描述
31-0
TXREG
发送消息字
TXREG 位域
34.4.4
RXREG (0xC)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RO
RXREG
31
0
RXREG [31:0]
位域
名称
描述
31-0
RXREG
接收消息字
RXREG 位域
34.4.5
TXWRD (0x10 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
WO
TXFIFO
31
0
TXWRD [31:0]
位域
名称
31-0
TXFIFO
描述
发送消息队列 FIFO 写入寄存器,FIFO 深度为 4,FIFO 位宽为
32bit,向该寄存器的写操作会向 FIFO 中 push 一个 word。
TXWRD 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
515/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
34.4.6
通信信箱 MBX
RXWRD (0x20 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
RXFIFO
31
0
RXWRD [31:0]
位域
名称
31-0
RXFIFO
描述
接收消息队列 FIFO 读出寄存器,FIFO 深度为 4,FIFO 位宽为
32bit,向该寄存器的读操作会从 FIFO 中 pop 一个 word。
RXWRD 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
516/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
音频外设概述
音频外设概述
35
本章节介绍了本产品的音频接口。本产品的音频接口包括 2 个 I2S 接口,一个 PDM 数字麦克风接口和,一
个数字音频输出 DAO。
35.1
集成电路内置音频总线 I2S
本产品支持 2 个集成电路内置音频总线 I2S。I2S 支持多种音频标准如 I2S,LSB 对齐,MSB 对齐,PCM,
TDM 等,能满足多种单声道和立体声应用。单个 I2S 支持 4 路发送数据信号和 4 路接收数据信号,支持工作在主
模式和从模式。单个 I2S 支持独立的时钟配置,可以支持多种码率的音频。
35.2
数字音频输出 DAO
本产品支持 1 个数字音频输出 DAO,DAO 支持 2 通道输出,每个通道支持一对差分 PWM 输出引脚,可以
驱动小功率的高阻抗耳机,或者通过滤波电路后驱动高功率的 CLASSD 功放。
本产品上,DAO 和 I2S1 紧密耦合,DAO 与 I2S1 共享时钟,通过 I2S1 的 TX0 FIFO 发送音频数据给 DAO。
DAO 只能工作于 I2S1 为 Clock 主模式,且帧率为 48kHz 的情况下。
35.3
数字麦克风 PDM
本产品支持 1 个数字麦克风 PDM。PDM 可以连接脉冲密度调制 (Pulse Density Modulation PDM) 的麦克风,
把麦克风输出的 PDM 比特流,转换为 24 位的 PCM 音频数据。PDM 支持一路时钟信号和 8 路数据信号,可以
连接 4 路双声道,共 8 个外部 PDM 麦克风。
同时(可选地)支持把来自 DAO 的 2 路 48kHz 的参考信号下采样输出。在同时回采参考信号时仅支持 16kHz
为最终输出的麦克风和参考信号码流的共同采样频率。并且回采应用时,I2S0 和 I2S1 的 bclk 信号必须同源。
本产品上,PDM 和 I2S0 紧密耦合,PDM 与 I2S0 共享时钟,PDM 通过 I2S0 的 RX0 FIFO 接收音频数据。
仅能工作在 I2S0 是 clock 主模式的情况下。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
517/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路内置音频总线 I2S
集成电路内置音频总线 I2S
36
36.1
概述
I2S 模块可以用来接收和发送语音码流信号。目前支持的特性如下:
功能
通信方式
主要特性
ꞏ 支持全双工模式
ꞏ 支持主模式或者从模式
ꞏ 数据移位顺序:MSB 开始
数据格式
ꞏ 可选择数据宽度:16/24/32 位
ꞏ 可选通道长度:16/32 位
ꞏ 9 位可编程线性分频器,可实现精确的音频采样频率
波特率
ꞏ 依据系统音频主时钟编程,可支持采样频率 192k,96k,48k,44.1k,32k,
22.05k,16k,8k
ꞏ 可将系统音频主时钟输出以作为驱动时钟来驱动外部音频元件
ꞏ I2S Philips 标准
支持 I2S 协
ꞏ MSB 对齐标准
议
ꞏ LSB 对齐标准
ꞏ PCM 标准
ꞏ 基于 I2S Philips 标准
支持 TDM 模
ꞏ 基于 MSB 对齐标准
式
ꞏ 基于 LSB 对齐标准
ꞏ 基于 PCM 标准
数据缓冲
时钟源
ꞏ TX 带有 8 字深,32 位宽的输入输出 FIFO 缓冲区域
ꞏ RX 带有 64 字深,32 位宽的输入输出 FIFO 缓冲区域
ꞏ 可使用系统音频主时钟;也可由 I2Sn_MCLK 引脚上的外部时钟提供
ꞏ 发送缓冲区有效空间达到报警阈值时产生中断
中断
ꞏ 接收缓冲区有效空间达到报警阈值时产生中断
ꞏ 接收数据区域已满仍有写入数据请求,接收上溢
ꞏ 发送数据区域已空仍有发送请求,发送下溢
表 176: I2S 主要特性
36.2
I2S 架构图
本模块的结构图如图 43。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
518/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路内置音频总线 I2S
系统音频主时钟
接口寄存器
接口控制
接口控制总线
时钟发生器
MCLK
BCLK
FCLK
接收缓冲区
串并转换、
协议控制
RXD[3:0]
发送缓冲区
串并转换、
协议控制
TXD[3:0]
图 43: I2S 结构框图
管脚说明
36.3
表 177: I2S 管脚说明
管脚
方向
功能描述
I2Sn_MCLK
输入输出
驱动时钟
I2Sn_BCLK
输入输出
通讯时钟
I2Sn_FCLK
输入输出
帧控制
I2Sn_TXD[3:0]
输出
4 根串行输出数据线
I2Sn_RXD[3:0]
输入
4 根串行输入数据线
1
1
n=0,..,3
功能说明
36.4
36.4.1
I2S 一般说明
I2S 引脚功能
● I2Sn_TXD:串行输出数据, 全双工模式数据输出。
● I2Sn_RXD:串行输出数据, 全双工模式数据输入。
● I2Sn_FCLK:帧控制,表明一帧的开始。是主模式下的数据控制信号输出以及从模式下的数据控制信号
输入。
● I2Sn_BCLK:串行时钟,是主模式下的串行时钟输出以及从模式下的串行时钟输入。
● I2Sn_MCLK:
– 当 I2S 配置为主模式(并且 MISC_CFGR[MCLKOE] 位置 1)时,输出此附加时钟,此时该时钟
为系统音频主时钟。I2S 在主模式下使用本模块内含的时钟发生器生成通信时钟 I2Sn_BCLK、
I2Sn_FCLK。此时钟发生器也是驱动时钟输出的源。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
519/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路内置音频总线 I2S
– 当 I2S 配置为从模式下, 也可把该管脚的输入,使用本模块内含的时钟发生器生成通信时钟
I2Sn_BCLK、I2Sn_FCLK。
36.4.2
设置分频
I2S 比特率用来确定 I2S 数据线上的数据流和 I2S 时钟信号频率。
I2S 比特率 = 每个通道的位数 × 通道数 × 音频采样频率
对于为槽通道长度为 16 位 (CFGR[CHSIZ=0]) 的双通道音频 (CFGR[CH_MAX]=2),I2S 比特率的计算公式如
下:I2S 比特率 = 16× 2× Fs。如果为槽通道长度为 32 位 (CFGR[CHSIZ=1]) 的双通道音频 (CFGR[CH_MAX]=2),
则 I2S 比特率 = 32× 2× Fs。如果为槽通道长度为 32 位 (CFGR[CHSIZ=1]) 的 8 通道音频 (CFGR[CH_MAX】=8),
则 I2S 比特率 = 32× 8× Fs。
a
16位或者32位左通道
16位或者32位右通道
采样频率Fs
c
b
d
e
f
采样点1
Fs:语音采样频率
采样点2
图 44: 音频采样率 Fs 定义
配置主模式时,需要正确地对线性分频器进行设置,以便采用所需的音频频率进行通信。本模块的时钟分频
路径如图 45。
I2Sn_MCLK (ext.)
I2Sn_MCLK
I2Sn_BCLK (ext.)
I2Sn_BCLK
I2Sn_FCLK (ext.)
1
1
AUDIO_CLK
CLK DIV
0
CFGR[BCLK_DIV]
CFGR[MCK_SEL_OP]
1
CLK DIV
0
I2Sn_FCLK
0
CFGR[CH_MAX, CHSIZ]
CFGR[BCLK_SEL_OP]
CFGR[FCLK_SEL_OP]
图 45: I2S 的时钟分频路径
从图中可见,CFGR [CH_MAX] 和 CFGR [CHSIZ] 决定了从 I2Sn_BCLK 如何分频至 I2Sn_FCLK,但从
I2Sn_MCLK 分频至 I2Sn_BCLK 是可以由 CFGR[BCLK_DIV] 来确定的。如果想依确定的 Fs 来输出信号,则
CFGR[BCLK_DIV] 由下式决定:
CFGR[BCLK_DIV] =
FI2Sn_MCLK
Fs ∗ CFGR[CH_MAX] ∗ ( (CFGR[CHSIZ] == 1) ? 32 : 16 )
式中 FI2Sn_MCLK 指的是 CFGR[MCK_SEL_OP] 选择出的 I2Sn_MCLK 的频率。
为了有足够精确的音频采样率 Fs,在主模式下,必须谨慎选择 AUDIO_CLK 的频率。
36.4.2.1
主模式和从模式
主模式是指,BCLK 和 FCLK 都由本模块产生,用以驱动外界的芯片的相关逻辑。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
520/1016
(1)
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路内置音频总线 I2S
从模式是指,BCLK 和 FCLK 都由外界的芯片产生,用以驱动本模块的相关逻辑。
通过将 CFGR [BCLK_SEL_OP] 和 CFGR [FCLK_SEL_OP] 置为 1 选择从模式;
反之,
通过将 CFGR [BCLK_SEL_OP]
和 CFGR [FCLK_SEL_OP] 置为 0 选择主模式。
36.4.3
发送缓冲区和接收缓冲区
I2S 的数据往来通过缓冲区进行。
I2S 有 4 根发送(输出)数据线,4 根接收(输入)数据线。每根线都联有各自的数据缓冲区,所以本模块里
共有 4 个发送缓冲区和 4 个接收缓冲区,分别通过 TXD[DATA3..0]、RXD[DATA3..0] 来访问。其中,每个发送缓
冲区为 8 字深、32 位比特宽;每个接收缓冲区为 64 字深、32 位比特宽。
I2S 数据缓冲区的具体说明如178所示。
表 178: I2S 数据缓冲区
缓冲区名称
内含存数个数
报警阈值
发送缓冲区 3 至 0:TXD[DATA3..0]
TFIFO_FILLINGS[TX3..0]
FIFO_THRESH[TX]
(其内容 = 门限时报警)
36.4.4
中断
I2S 的中断源有发送缓冲区有效空间小于等于报警阈值、接收缓冲区有效空间大于等于报警阈值、接收上溢、
和发送下溢。这些中断状态反映在状态寄存器 STA 的相应标志位里。
这些中断共用一根中断线,所以需要读取相应状态位和中断允许位来决定中断原因。
I2S 中断源的具体说明如179所示。
表 179: I2S 中断请求
中断事件
事件标志
使能控制位
发送缓冲区有效空间小于等于报警阈值
STA[TX_DN[3:0]]
CTRL[TXDNIE]
接收缓冲区有效空间大于等于报警阈值
STA[RX_DA[3:0]]
CTRL[RXDAIE]
接收上溢
STA[RX_OV[3:0]]
CTRL[ERRIE]
发送下溢
STA[TX_UD[3:0]]
CTRL[ERRIE]
36.4.5
DMA 传输
对于发送缓冲区有效空间小于等于报警阈值、接收缓冲区有效空间大于等于报警阈值,I2S 也支持 DMA 传
输。
4 个发送信号线共用一根 DMA 申请线,4 个接收信号线共用一根 DMA 申请线。
I2S 的 DMA 源的具体说明如180所示。
36.4.6
支持的传输格式
有四种数据和槽通道格式组合,可采用下列格式发送每个槽通道数据:
● 将 16 位数据封装在 16 位槽通道中
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
521/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路内置音频总线 I2S
表 180: I2S 的 DMA 请求
DMA 事件
事件标志
使能控制位
发送缓冲区有效空间小于等于报警阈值
STA[TX_DN[3:0]]
CTRL[TX_DMA_EN]
接收缓冲区有效空间大于等于报警阈值
STA[RX_DA[3:0]]
CTRL[TX_DMA_EN]
● 将 16 位数据封装在 32 位槽通道中
● 将 24 位数据封装在 32 位槽通道中
● 将 32 位数据封装在 32 位槽通道中
最多可达 16 个的偶数个槽通道组成一帧。一帧里的所有数据,在采样的含义上对应同一个采样点时刻,共用
FCLK 的同一个有效边沿。槽通道的个数 M 为 CFGR[CH_MAX] 所配置,最多为 16。
一帧里的各个槽通道可以分别被单独使能。发送单元的槽通道使能在 TXDSLT 寄存器里,从比特位置 0 开始
使能第 0 个槽通道的,以后的依次类推。接收单元的槽通道使能在 RXDSLT 寄存器里。
当采用将“将 16 位数据封装在 16 位槽通道中”这种模式时,缓冲区里的一个 32 比特其实含有 2 个槽通道
的数据;因此应用时要求一帧里必须含有有效的偶数个槽通道,且高 16 比特对应的是槽通道号较低的槽通道。
在发送模块里,当使用 32 位槽通道时,对于发送缓冲区里的数据,有效字长从 MSB 算起,超出字长的低位
比特在发送时被强制清 0,即:
● 当使用 32 位数据包中的 16 位数据时,前 16 位 (MSB) 为有效位,16 位 LSB 被强制清零,无需任何软
件操作(只需一个读/写操作)。
● 当使用 32 位数据包中的 24 位数据时,前 24 位 (MSB) 为有效位,8 位 LSB 被强制清零,无需任何软件
操作(只需一个读/写操作)。
在接收模块里,当使用 32 位槽通道时,对于接收缓冲区里的数据,有效字长也是从 MSB 算起,超出字长的
低位比特被强制清 0,即:
● 当使用 32 位数据包中的 16 位数据时,前 16 位 (MSB) 为有效位,16 位 LSB 为零。这个 16 位 MSB 有
效数据为
– 当传输的数据格式为 LSB 对齐模式时,为传输位线上的当前槽通道波形的低 16 位。
– 对于其余的传输数据格式,为传输位线上的当前槽通道波形的高 16 位。
● 当使用 32 位数据包中的 24 位数据时,前 24 位 (MSB) 为有效位,8 位 LSB 为零。这个 24 位 MSB 有
效数据为
– 当传输的数据格式为 LSB 对齐模式时,为传输位线上的当前槽通道波形的低 24 位。
– 对于其余的传输数据格式,为传输位线上的当前槽通道波形的高 24 位。
对于所有数据格式和通信标准而言,始终会先发送最高有效位(MSB 优先)。
I2S 接口支持四种音频协议及其对应的 TDM 模式,可使用 CFGR [STD] 和 CFGR [TDM_EN] 及 CFGR
[CH_MAX] 位对其进行配置。
下面的各图分别展示了不同传输协议及 TDM 模式时,在传输位线上的波形,其中 N 是 15 或 23 或 31,代表
有效数据的 MSB;0 代表有效数据的 LSB。相邻从 N 到 0 的数据才是有效的目标数据。
为通用起见,图中标记了非有效数据比特。其实,对于顶格传输的情况,例如 16 位槽通道传输 16 比特数据,
或者 32 位槽通道传输 32 比特数据的情况,非有效数据比特的节拍数长度为 0。
图中假设 CFGR[FRAME_EDGE]=0,即 FCLK 的下降沿表示一帧的开始。如果要用 FCLK 的上升沿表示一
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
522/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路内置音频总线 I2S
帧的开始,则要将 CFGR[FRAME_EDGE]=1。
同时,图中假设发送端在 BCLK 的下降沿打出数据,接收端要在 BCLK 的上升沿采集数据(也即:主模式
下 CFGA[INV_BCLK_OUT]=0,或者从模式下 CFGA[INV_BCLK_IN]=0)。如果发送端在 BCLK 的上升沿打出数
据,接收端要在 BCLK 的下降沿采集数据,则要如此配置:主模式下 CFGA[INV_BCLK_OUT]=1,或者从模式下
CFGA[INV_BCLK_IN]=1。
TDM 相关模式图中的 M=CFGR[CH_MAX]。
36.4.6.1
I2S Philips 标准
j
1拍
d
e
f
BCLK
FCLK
k
32位
16
a
16或32位
b
c
p
TXD
N
...
N-1
0
q
...
...
左通道数据
g
...
N-1
m
0
...
...
右通道数据
h
左通道有效数据
l
N
i
右通道有效数据
n
o
图 46: I2S Philips 模式
此模式下传输位线上的波形如图46。
使用 FCLK 信号来指示当前正在发送的数据所属的通道。该信号从当前通道数据的名义上的第一个位 (MSB)
之前的一个时钟周期开始有效。有效数据从当前通道数据的名义上的第一个时钟周期开始传输。非有效数据位在
传输时为 0。
36.4.6.2
MSB 对齐模式
d
e
f
BCLK
FCLK
32位
16
a
16或32位
b
c
p
TXD
N
g
l
N-1
...
0
...
左通道数据
左通道有效数据
q
...
N
...
N-1
n
...
右通道数据
h
m
0
右通道有效数据
...
i
o
图 47: I2S MSB 对齐模式
此模式下传输位线上的波形如图47。
使用 FCLK 信号来指示当前正在发送的数据所属的通道。该信号和当前通道数据的名义上的第一个位 (MSB)
同一个时钟周期开始有效。有效数据从当前通道数据的名义上的第一个时钟周期开始传输。非有效数据位在传输
时为 0。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
523/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
36.4.6.3
集成电路内置音频总线 I2S
LSB 对齐模式
d
e
f
BCLK
FCLK
16/32位
a
16/32位
b
p
...
TXD
c
q
N
...
N-1
1
0
左通道数据
g
N
...
N-1
1
0
右通道数据
h
左通道有效数据
l
...
m
i
右通道有效数据
n
o
图 48: I2S LSB 对齐模式
此模式下传输位线上的波形如图48。
使用 FCLK 信号来指示当前正在发送的数据所属的通道。该信号和当前通道数据的名义上的第一个位 (MSB)
同一个时钟周期开始有效。有效数据不一定从当前通道数据的名义上的第一个时钟周期开始传输,但最低有效数
据比特一定是在当前通道数据的名义上的最后一个时钟周期开始传输。非有效数据位在传输时为 0。
36.4.6.4
PCM 模式
j
1拍
d
e
f
BCLK
FCLK
k
32位
16
a
16或32位
b
c
p
TXD
N
...
N-1
0
...
...
左通道数据
g
l
q
左通道有效数据
N
h
m
n
N-1
...
0
...
...
右通道数据
右通道有效数据
i
o
图 49: I2S PCM 模式
此模式下传输位线上的波形如图49。
使用 FCLK 信号来指示当前正在发送的数据所属的通道。该信号从当前通道数据的名义上的第一个位 (MSB)
之前的一个时钟周期里有效,且只维持一拍。有效数据从当前通道数据的名义上的第一个时钟周期开始传输。非
有效数据位在传输时为 0。
36.4.6.5
TDM I2S Philips 标准
此模式下传输位线上的波形如图50。其中 M=CFGR[CH_MAX]。
基本和非 TDM 模式 I2S Philips 标准相同,区别仅在于 FCLK 高电平或者低电平时,有 M/2 个槽通道的信号
传输。槽通道号依时间顺序分别为 0,1,...,M-1。
36.4.6.6
TDM MSB 对齐模式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
524/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
(16或32)*(M/2)位
t
j
1拍
d
集成电路内置音频总线 I2S
(16或32)*(M/2)位
x
e
f
p
y
q
r
BCLK
FCLK
k
32
16
a
TXD
...
N
...
0槽通道数据
g
32
16
b
0
c
...
N
0
...
第1槽通道数据
h
16或32位
u
...
...
i
...
N
...
第(M/2)+0槽通道数据
l
16或32位
v
0
...
N
w
0
...
第(M/2)+1槽通道数据
m
o
...
...
N
n
图 50: I2S TDM Philips 模式
(16或32)*(M/2)位
t
d
(16或32)*(M/2)位
x
e
f
p
y
q
r
BCLK
FCLK
32
16
a
TXD
...
N
...
0槽通道数据
g
32
16
b
0
c
...
N
0
...
第1槽通道数据
h
16或32位
u
...
...
i
...
N
...
第(M/2)+0槽通道数据
l
16或32位
v
0
...
N
w
0
...
第(M/2)+1槽通道数据
m
o
...
...
N
n
图 51: I2S TDM MSB 对齐模式
此模式下传输位线上的波形如图51。其中 M=CFGR[CH_MAX]。
基本和非 TDM MSB 对齐模式相同,区别仅在于 FCLK 高电平或者低电平时,有 M/2 个槽通道的信号传输。
槽通道号依时间顺序分别为 0,1,...,M-1。
36.4.6.7
TDM LSB 对齐模式
(16或32)*(M/2)位
t
d
(16或32)*(M/2)位
x
e
f
p
y
q
r
BCLK
FCLK
32
16
a
...
TXD
0
0槽通道数据
g
32
16
b
...
N
...
c
...
N
0
第1槽通道数据
h
16或32位
u
...
...
i
...
0
第(M/2)+0槽通道数据
l
16或32位
v
...
N
...
w
...
N
0
第(M/2)+1槽通道数据
m
o
...
...
...
n
图 52: I2S TDM LSB 对齐模式
此模式下传输位线上的波形如图52。其中 M=CFGR[CH_MAX]。
基本和非 TDM LSB 对齐模式相同,区别仅在于 FCLK 高电平或者低电平时,有 M/2 个槽通道的信号传输。
槽通道号依时间顺序分别为 0,1,...,M-1。
36.4.6.8
TDM PCM 模式
(16或32)*(M/2)位
t
j
1拍
d
(16或32)*(M/2)位
x
e
f
p
y
q
r
BCLK
FCLK
k
32
16
a
TXD
N
g
...
0槽通道数据
32
16
b
0
...
N
h
c
...
0
第1槽通道数据
...
i
16或32位
u
...
...
N
l
...
16或32位
v
0
第(M/2)+0槽通道数据
...
N
m
...
w
0
第(M/2)+1槽通道数据
...
o
...
...
N
n
图 53: I2S TDM PCM 模式
此模式下传输位线上的波形如图53。其中 M=CFGR[CH_MAX]。
基本和非 TDM PCM 模式相同,区别仅在于 M 个槽通道的信号依次传输。槽通道号依时间顺序分别为 0,1,
...,M-1。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
525/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
36.5
集成电路内置音频总线 I2S
寄存器列表
I2S 相关寄存器占用地址如下:
I2S0 base address: 0xF0100000
I2S1 base address: 0xF0104000
地址偏移
名称
描述
复位值
0x0000
CTRL
控制寄存器
0x00000000
0x0004
RFIFO_FILLINGS
0x0008
TFIFO_FILLINGS
0x000C
FIFO_THRESH
0x0010
STA
状态寄存器
0x00000000
0x0020
RXD[DATA0]
0 号接收模块接收数据寄存器
0x00000000
0x0024
RXD[DATA1]
1 号接收模块接收数据寄存器
0x00000000
0x0028
RXD[DATA2]
2 号接收模块接收数据寄存器
0x00000000
0x002C
RXD[DATA3]
3 号接收模块接收数据寄存器
0x00000000
0x0030
TXD[DATA0]
0 号发射模块接收数据寄存器
0x00000000
0x0034
TXD[DATA1]
1 号发射模块接收数据寄存器
0x00000000
0x0038
TXD[DATA2]
2 号发射模块接收数据寄存器
0x00000000
0x003C
TXD[DATA3]
3 号发射模块接收数据寄存器
0x00000000
0x0050
CFGR
配置寄存器
0x40000000
0x0058
MISC_CFGR
杂类配置寄存器
0x00042000
0x0060
RXDSLOT[DATA0]
接收模块 0 的槽控制寄存器
0x0064
RXDSLOT[DATA1]
接收模块 1 的槽控制寄存器
0x0068
RXDSLOT[DATA2]
接收模块 2 的槽控制寄存器
0x006C
RXDSLOT[DATA3]
接收模块 3 的槽控制寄存器
0x0070
TXDSLOT[DATA0]
发射模块 0 的槽控制寄存器
0x0074
TXDSLOT[DATA1]
发射模块 1 的槽控制寄存器
0x0078
TXDSLOT[DATA2]
发射模块 2 的槽控制寄存器
0x007C
TXDSLOT[DATA3]
发射模块 3 的槽控制寄存器
接收模块的先入先出缓冲区中存
数个数寄存器
发射模块的先入先出缓冲区中存
数个数寄存器
发射/接收模块的先入先出缓冲区
门限寄存器
0x00000000
0x00000000
0x00000000
0x0000FFFF
0x0000FFFF
0x0000FFFF
0x0000FFFF
0x0000FFFF
0x0000FFFF
0x0000FFFF
0x0000FFFF
表 181: I2S 寄存器列表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
526/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路内置音频总线 I2S
寄存器描述
36.6
I2S 相关寄存器具体描述如下:
CTRL (0x0)
0
0
0
0
0
0
0
0
0
5
4
3
0
0
0
0
2
1
0
0
CTRL [31:0]
位域
名称
18
SFTRST_RX
17
SFTRST_TX
16
SFTRST_CLKGEN
描述
置为 1 时,软件重置接收模块。
自动清零。
置为 1 时,软件重置发射模块。
自动清零。
置为 1 时,软件重置时钟产生模块。
自动清零。
发射模块数据缓冲区的数据需求中断使能位
15
TXDNIE
0: 不使能该中断
1: 使能该中断。当相应标志置位时,产生中断请求。
接收模块数据缓冲区的数据可用中断使能位
14
RXDAIE
0: 不使能该中断
1: 使能该中断。当相应标志置位时,产生中断请求。
错误中断使能
13
ERRIE
该位控制发生错误条件(UD,OV)时中断的生成。
0:不使能该中断。
1:使能该中断。
12
TX_DMA_EN
置为 1 时使用 DMA,否则使用中断来传输发射模块的数据
11
RX_DMA_EN
置为 1 时使用 DMA,否则使用中断来传输接收模块的数据
10
TXFIFOCLR
9
RXFIFOCLR
8-5
TX_EN
置为 1 时初始化接收模块的先入先出缓冲区
自动清零。
置为 1 时初始化发射模块的先入先出缓冲区
自动清零。
每个发射模块的单独的使能控制。置为 1 时,且整个模块总使能
也为 1 时。使能该发射模块。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
527/1016
0
I2S_EN
0
6
RW
0
7
RX_EN
0
8
RW
9
TX_EN
10
RW
11
TXFIFOCLR
12
RXFIFOCLR
0
13
RW
0
14
RW
0
N/A
0
15
RX_DMA_EN
0
16
RW
0
17
ERRIE
0
18
TX_DMA_EN
19
RW
0
20
RW
0
21
RXDAIE
0
22
RW
0
23
TXDNIE
0
24
SFTRST_CLKGEN
0
25
RW
26
RW
27
SFTRST_TX
28
RW
29
SFTRST_RX
30
RSVD
31
RW
36.6.1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
4-1
RX_EN
0
I2S_EN
集成电路内置音频总线 I2S
描述
每个接收模块的单独的使能控制。置为 1 时,且整个模块总使能
也为 1 时。使能该接收模块。
整个 I2S 模块的总使能控制。置为 1 时使能。
CTRL 位域
RFIFO_FILLINGS (0x4)
0
0
0
26
25
24
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RO
RO
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
0
RX0
0
27
RO
28
RX1
29
RO
30
RX3
31
RX2
36.6.2
0
0
RFIFO_FILLINGS [31:0]
位域
名称
描述
31-24
RX3
3 号接收模块的先入先出缓冲区中存数个数
23-16
RX2
2 号接收模块的先入先出缓冲区中存数个数
15-8
RX1
1 号接收模块的先入先出缓冲区中存数个数
7-0
RX0
0 号接收模块的先入先出缓冲区中存数个数
RFIFO_FILLINGS 位域
TFIFO_FILLINGS (0x8)
0
0
0
0
27
26
25
24
23
22
21
20
0
0
0
0
0
0
0
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RO
RO
TX2
19
0
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
TX0
28
0
RO
29
TX1
30
TX3
31
RO
36.6.3
0
TFIFO_FILLINGS [31:0]
位域
名称
描述
31-24
TX3
3 号发射模块的先入先出缓冲区中存数个数
23-16
TX2
2 号发射模块的先入先出缓冲区中存数个数
15-8
TX1
1 号发射模块的先入先出缓冲区中存数个数
7-0
TX0
0 号发射模块的先入先出缓冲区中存数个数
TFIFO_FILLINGS 位域
36.6.4
FIFO_THRESH (0xC)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
528/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
TX
RW
N/A
0
3
2
1
0
0
0
0
0
RX
29
RW
30
RSVD
31
集成电路内置音频总线 I2S
0
FIFO_THRESH [31:0]
位域
名称
描述
发射模块的先入先出缓冲区阈值:
15-8
当发射模块的先入先出缓冲区中的存数小于或等于阈值时,将状
TX
态寄存器中的相应 tx_dn 标志置位。
接收模块的先入先出缓冲区阈值:
7-0
当接收模块的先入先出缓冲区中的存数大于或等于阈值时,将状
RX
态寄存器中的相应 rx_da 标志置位。
FIFO_THRESH 位域
STA (0x10)
0
0
0
0
0
22
21
20
19
18
17
16
15
0
0
0
0
0
0
0
0
0
13
12
11
0
0
0
W1C
N/A
0
14
10
9
8
7
0
0
0
0
6
5
4
3
0
0
0
0
0
2
1
0
0
STA [31:0]
位域
名称
16-13
TX_UD
12-9
RX_OV
8-5
TX_DN
4-1
RX_DA
描述
发射模块的先入先出缓冲区里的数据出现下溢时置为 1。要和
CTRL[tx_en] 相与才能给出正确的状态数值。写 1 清 0。
接收模块的先入先出缓冲区里的数据出现上溢时置为 1。写 1 清
0。
发射模块的先入先出缓冲区里的数据个数小于或等于阙值时置为
1。
接收模块的先入先出缓冲区里的数据个数大于或等于阙值时置为
1。
STA 位域
36.6.6
RXD (0x20 + 0x4 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
529/1016
0
RSVD
0
23
N/A
0
24
RX_DA
25
RO
26
TX_DN
27
RO
28
RX_OV
29
W1C
30
RSVD
31
TX_UD
36.6.5
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
RO
D
31
集成电路内置音频总线 I2S
0
RXD [31:0]
位域
名称
31-0
D
描述
RXD 位域
36.6.7
TXD (0x30 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
WO
D
31
0
TXD [31:0]
位域
名称
31-0
D
描述
TXD 位域
0
0
0
0
CFGR [31:0]
位域
名称
30
BCLK_GATEOFF
描述
关闭 BCLK 控制。置为 1 时关闭 BCLK。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
530/1016
CHSIZ
0
RW
0
DATSIZ
0
RW
0
STD
0
RW
0
TDM_EN
0
RW
0
CH_MAX
0
RW
FRAME_EDGE
RW
11
MCK_SEL_OP
12
FCLK_SEL_OP
13
RW
14
RW
15
BCLK_SEL_OP
0
16
RW
0
17
INV_MCLK_IN
0
18
INV_MCLK_OUT
0
19
RW
0
20
RW
21
INV_FCLK_IN
0
22
RW
0
23
INV_BCLK_IN
0
24
INV_FCLK_OUT
0
25
RW
26
RW
27
INV_BCLK_OUT
1
28
RW
BCLK_GATEOFF
RW
0
29
BCLK_DIV
RSVD
30
N/A
31
CFGR (0x50)
RW
36.6.8
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
集成电路内置音频总线 I2S
描述
从 MCLK 生成 BCLK 的线性预分频器控制。
BCLK_DIV[8:0]=0:BCLK= 无时钟。
29-21
BCLK_DIV
BCLK_DIV[8:0]=1:BCLK=MCLK/1
BCLK_DIV[8:0]=n:BCLK=MCLK/(n)
。
注:这些位应在 I2S 未使能时配置。仅当 I2S 处于主模式时使用。
BCLK 输出反转控制位
20
INV_BCLK_OUT
置为 1 时在将 BCLK 发送到芯片管脚之前,将其反转。
仅在 BCLK 主模式下有效
BCLK 输入反转控制位
19
INV_BCLK_IN
置为 1 时在将芯片管脚得到的 BCLK 反转再使用。
仅在 BCLK 从模式下有效
FCLK 输出反转控制位
18
INV_FCLK_OUT
置为 1 时在将 FCLK 发送到芯片管脚之前,将其反转。
仅在 FCLK 主模式下有效
FCLK 输入反转控制位
17
INV_FCLK_IN
置为 1 时在将芯片管脚得到的 FCLK 反转再使用。
仅在 FCLK 从模式下有效
MCLK 输出反转控制位
16
INV_MCLK_OUT
置为 1 时在将 MCLK 发送到芯片管脚之前,将其反转。
仅在 MCLK 主模式下有效
MCLK 输入反转控制位
15
INV_MCLK_IN
置为 1 时在将芯片管脚得到的 MCLK 反转再使用。
仅在 MCLK 从模式下有效
BCLK 源选择
14
BCLK_SEL_OP
1:使用来自芯片管脚得到的 BCLK。
0:使用来自芯片内部分频得到的 BCLK。
FCLK 源选择
13
FCLK_SEL_OP
1:使用来自芯片管脚得到的 FCLK。
0:使用来自芯片内部分频得到的 FCLK。
MCLK 源选择
12
MCK_SEL_OP
1:使用来自芯片管脚得到的 MCLK。
0:使用来自芯片内部分频得到的 MCLK。
帧的起始边沿选择
11
FRAME_EDGE
0:下降沿表示新帧(与飞利浦标准 I2S 相同)
1:上升沿表示新帧
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
531/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
集成电路内置音频总线 I2S
描述
CH_MAX[4:0] 是 TDM 模式下支持的槽通道数。当不处于 TDM
模式时,必须将其设置为 2。
它必须是偶数,因此 CH_MAX[0] 始终为 0。
10-6
5’h2:2 通道
CH_MAX
5’h4:4 通道
...
5’h10:16 通道(最大支持通道数)
TDM 模式选择
5
0:非 TDM 模式
TDM_EN
1:TDM 模式
I2S 标准选择
00: 飞利浦标准 I2S。
4-3
01:MSB 对齐标准(左对齐)
STD
10:LSB 对齐标准(右对齐)
11:PCM 标准
注意:为了正确操作,应在未使能 I2S 时配置这些位。
传输数据的比特长度选择
00:16 位数据长度
2-1
01:24 位数据长度
DATSIZ
10:32 位数据长度
11: 不可用
注意:为了正确操作,应在未使能 I2S 时配置这些位。
槽通道长度(每个音频槽通道的比特位数)
0:16 位宽
0
1:32 位宽
CHSIZ
该位的写入操作只有在 DATLEN=00 时才有意义。否则,槽通道
的长度将由硬件固定为 32 位,无论软件赋的是什么值。
注意:为了正确操作,应在未使能 I2S 时配置此位。
CFGR 位域
MISC_CFGR (0x58)
0
0
0
0
0
0
0
0
0
22
21
20
19
18
17
16
15
14
0
0
0
1
0
0
0
0
13
12
RW
N/A
0
1
11
0
10
9
8
7
6
0
x
x
x
x
x
5
4
3
2
1
x
x
x
x
0
MISC_CFGR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
532/1016
0
MCLKOE
23
RW
24
RSVD
25
N/A
26
RSVD
27
N/A
28
RSVD
29
N/A
30
RSVD
31
MCLK_GATEOFF
36.6.9
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
集成电路内置音频总线 I2S
描述
关闭 mclk 控制位。
13
因为 mcl 来自于一个易发生毛刺的的 mux 的输出,因此每次切换
MCLK_GATEOFF
mclk 时,应首先将该位置 1 来关闭时钟。时钟切换后,再将该位
置为 0 来让新的 mclk 通过。
MCLK 输出至管脚使能
0:MCLK 被禁止输出至管脚
0
1:MCLK 被输出至管脚
MCLKOE
注意:只有当未使能 I2S 时,才能配置此位。
仅当 I2S 处于时钟主模式时生效。
MISC_CFGR 位域
36.6.10
RXDSLOT (0x60 + 0x4 * n)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
7
6
5
4
3
2
1
0
1
1
1
1
1
1
1
1
RW
N/A
EN
RSVD
31
x
RXDSLOT [31:0]
位域
名称
15-0
EN
描述
RXDSLOT 位域
36.6.11
TXDSLOT (0x70 + 0x4 * n)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
1
1
1
1
1
1
1
1
RW
N/A
EN
RSVD
31
x
TXDSLOT [31:0]
位域
名称
15-0
EN
描述
TXDSLOT 位域
36.7
I2S 配置使用简单说明
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
533/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
36.7.1
集成电路内置音频总线 I2S
软件复位
● 将 CTRL[SFTRST_RX] 置为 1 后复位 RX 部分,再将 CTRL[SFTRST_RX] 置为 0 后解除 RX 部分复位。
另,本复位也可自动解除。
● 将 CTRL[SFTRST_TX] 置为 1 后复位 TX 部分,再将 CTRL[SFTRST_TX] 置为 0 后解除 TX 部分复位。
另,本复位也可自动解除。
● 将 CTRL[SFTRST_CLKGEN] 置为 1 后复位时钟生成模块部分,再将 CTRL[SFTRST_CLKGEN] 置为 0
后解除时钟生成模块部分复位。另,本复位也可自动解除。
● 软件复位的结束时间,取决于所采用的 BCLK 是否 toggle。一般至少需要 BCLK 跳变达 3 个周期。
● 如果最终使用的是外部的 BCLK,但复位时不能确定外部的 BCLK 是否 toggle,那最好是先切换成可确
信 toggle 的内部产生的 BCLK 来完成复位,等 3 个多的 BCLK 周期时间后,然后再切换到最终使用的
外部的 BCLK。
36.7.2
使能 TX 流程
各步骤如下:
1. 按照帧格式和采样率来确定 MCLK 到 BCLK 的分频比,并选取相关的 CLK 来源。
2. 按需配置各寄存器及分频比 CFGR[BCLK_DIV]。
3. 软件复位 TX 部分。
4. 等 3-4 个 BCLK 的周期时间后,往 TXFIFO 里填上一定量的数。这是为了防止出现一使能就出现 TX 缓
冲区 underflow 的问题。
5. 置 CTRL[TX_EN] 相关位和 CTRL[I2S_EN]=1,这样 TX 部分就开始工作了。
36.7.3
使能 RX 流程
各步骤如下:
1. 按照帧格式和采样率来确定 MCLK 到 BCLK 的分频比,并选取相关的 CLK 来源。
2. 按需配置各寄存器及分频比 CFGR[BCLK_DIV]。
3. 软件复位 RX 部分。
4. 置 CTRL[RX_EN] 相关位和 CTRL[I2S_EN]=1,这样 RX 部分就开始工作了。
36.7.4
注意事项
因为只有一个 CFGR,所以 RX 和 TX 同时工作时,必须帧格式一致。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
534/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
数字麦克风 PDM
37
37.1
概述
PDM 模块主要用来采集多达 8 路 PDM 麦克风的信号并下采样,同时可以对来自 DAO 的多达 2 路参考信号
进行下采样。目前支持的特性如下表 182:
功能
通信方式
主要特性
ꞏ 支持 4 根信号线上多达 8 个 PDM(Pulse-Density Modulation)信号输入(信
号 ID 分别为 0–7)
ꞏ 支持从 DAO 模块来的多达 2 个参考信号输入(信号 ID 分别为 8–9)
下采样率
ꞏ 可以软件灵活配置
数据缓冲
ꞏ 本模块输出至 I2S0[RXD0],所以共享 I2S0[RXD0] 的 FIFO 深度 (见小
节 36.4.3)
DMA 支持
ꞏ 本模块输出至 I2S0[RXD0],所以共享 I2S0[RXD0] 的 DMA 设置
数据格式
ꞏ 从 MSB 开始,共计 24 位。紧接其下 4 位为信号 ID。
时钟源
ꞏ 为系统音频主时钟;此时 I2S0 必须工作在主模式下
ꞏ 除了 I2S0 共享的中断外,还包含一些错误中断,主要本模块不同形式的过载
相关
中断
− 计算缓冲区指针过载
− 输出 FIFO 过载
− CIC 采样率过载
− CIC 计算饱和
表 182: PDM 主要特性
37.2
PDM 架构图
本模块的结构图如图 54。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
535/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
PDM
时钟
发生器
系统音频主时钟
接口控制总线
接口控制
接口寄存器
PDM_CLK
信号同步
CIC
下采样
至 I2S0
PDM
信号
捕获
8
PDM_D
2
从DAO模块来的参考信号
图 54: PDM 结构框图
管脚说明
37.3
表 183: PDM 管脚说明
管脚
方向
功能描述
PDM_CLK
输出
驱动时钟
PDM_D[3:0]
输入
4 根串行输入数据线,可通 8 路信号
管脚与外部的器件联接方式如图 55。
功能说明
37.4
37.4.1
PDM 一般说明
PDM 引脚功能
● PDM_CLK:串行时钟输出,用以驱动外面的数字麦克风。该时钟为系统音频主时钟分频所得。一般在
1Mhz–3.072MHz 之间。
● PDM_D:串行输入数据,为 4 根信号线,但在 PDM_CLK 为高低电平时分别代表左右声道。
37.4.2
PDM_CLK 的产生
PDM_CLK 用于驱动外部的数字麦克风产生高采样率的 PDM 信号;它来自于系统音频主时钟的分频。其分
频比为 CTRL [ PDM_CLK_HFDIV ] 和 CTRL [ PDM_CLK_DIV_BYPASS ] 所控制。如图 56所示。
PDM_CLK 是否输出到管脚上由 CTRL [ PDM_CLK_OE ] 控制。
37.4.3
信号流图
37.4.3.1
PDM 信号
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
536/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
VCC
PDM_CLK
VCC
CLK
L/R
DO
CLK
L/R
DO
CLK
L/R
DO
CLK
L/R
DO
PDM_D[0]
PDM_D[3]
图 55: PDM 与麦克风的联接图示
CTRL[PDM_CLK_HFDIV]
nxt_cnt
1
D
D
Q
Q
CNT
CK
CNT==HFDIV
0
PDM_CLK
CNT
1
CK
R
CTRL[PDM_CLK_DIV_BYPASS]
图 56: PDM_CLK 的时钟分频路径
PDM
PDM捕获
CIC
M
0--7
HPF
BYPS_EN
8--9
FIR
N↓
I2S0
RXD[0]
DAO
CH_CNT
图 57: PDM 的信号流图
本模块可以接收最多从 8 个数字麦克风接收的高采样率的 PDM 信号,然后将其转变为 8 路 24 位的低采样
率的 PCM 信号。这 8 路信号以左右两路共用一根信号线,并分别在 PDM_CLK 的高低电平传输的方式,联入本
模块;所以需要 4 根信号线。
其信号流图如图 57所示。各路 PDM 信号在被各自的 PDM 捕获模块捕获后,生成一比特的 +1, 或 −1 的数
字信号。该一比特的信号流,被各自的 CIC 降 M 倍采样率滤波器滤波后,经过一个可以旁路掉的一阶的高通滤波
器 HPF,再经过多路选择器分别送入内部缓存中;这些内部缓存里的数据,在被降 N 倍的 FIR 低通滤波器处理
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
537/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
后,生成 24 比特的信号。因为传输到模块外部时,每个通道都有 32 比特位宽,所以,在紧跟 24 比特 MSB 的有
效数据后,用 4 比特(即比特位置 [7:4])来标志相应通道号。
为了使各路 PDM 信号经过相同的延时和滤波放大,所有 PDM 通道采用同样的 CIC 配置参数。
这些 CIC 相关配置参数中,CIC 的下采样率 M 为 CIC_CFG [ CIC_DEC_RATIO ],CIC 滤波器的阶数为
CIC_CFG [ SGD ]。为了防止 CIC 的结果引起饱和失真,或者过小,可以对 CIC 的结果施加额外的移位。移位控
制在 CIC_CFG [ POST_SCALE ]。如果移位配置不够好,产生了饱和截止失真,可以通过 ST [ CIC_SAT_ERR ]
及相应中断观察到。一般来说,会依据具体情况调整这个移位配置,使得饱和截止尽量少,同时音量尽可能大。
各个 PDM 通道的使能可以由 CH_CTRL [ CH_EN [7:0] ] 单独控制。究竟是在 PDM_CLK 高电平时先捕获,
还是在 PDM_CLK 低电平时先捕获各 PDM 信号,由 CH_CTRL [ CH_POL [7:0] ] 来控制。
HPF 的参数配置在寄存器 HPF_MA 和 HPF_B 里,是否旁路由 CTRL[HPF_EN] 来控制。这个 HPF 的公式
是
Y(z) =
b ∗ (1 − z−1 ) ∗ X(z)
1 − a ∗ z−1
(2)
寄存器 HPF_MA 中储存的是式中的 −a 值,寄存器 HPF_B 中储存的是式中的 b 值。
比方说,打算设计一个截止频率在 100Hz,采样率为 48kHz 的高通,此时,设计指令类似于
[ba, aa] = butter(1, 100/(48000/2),′ high′ )
(3)
可得:
aa
=
[1.000000000000000 − 0.986994962681551],
ba
=
[0.993497481340776 − 0.993497481340776]
所以,HPF_MA 的值为 ROUND ( 0.986994962681551 * POWER(2,23) , 24 ), 即 0x7e55d9; HPF_B 的值为
ROUND ( 0.993497481340776 * POWER(2,23) , 24 ), 即 0x7f2aec。
各个 PDM 通道的 FIR 低通滤波器选择由 CH_CFG [CHn_TYPE] 单独控制,这里 n=0,..,7。一般将 CH_CFG
[CHn_TYPE] 配为 0。降 N 倍的 FIR 低通滤波器是所有信号通道以时分复用的方式来共享一个 ALU 单元的。
37.4.3.2
参考信号
本模块可以接收从 DAO 传来的 2 路 PCM 信号,用来做回声抵消的参考信号。
因为 DAO 一般要求采样率是 48kHz,所以在应用参考信号用来做回声抵消时,会要求相应的 PDM 生成的
PCM 信号也是 48kHz 采样率。然后参考信号和 PDM 转成的 PCM 信号一起经过降 N 倍的 FIR 低通滤波器(这
里一般 N=3), 然后一起送到 I2S0 的 RXD0 的缓冲区里。此时,相应的,I2S0 就被配置成采样率为 16kHz 的语
音信号发送和接收。
各个参考信号通道的使能可以由 CH_CTRL[CH_EN[9:8]] 单独控制。
37.4.4
发送缓冲区和接收缓冲区
本模块的输出数据往来通过 I2S0 的 RXD0 缓冲区进行。所以请参考小节 36.4.3。
37.4.5
中断
因为本模块的输出数据往来通过 I2S0 的 RXD0 缓冲区进行,所以中断主要是异常错误中断。所以请参考小
节 36.4.3。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
538/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
错误 ST[CIC_SAT_ERR] 已经在小节 37.4.3.1被提及。
同时,因为系统中共享了一些资源,所以,可能会在一些情况下,系统来不及处理所有的通道,这时,ST [
FILT_CRX_ERR ]、ST [ OFIFO_OVFL_ERR ]、或者 ST [ CIC_OVLD_ERR ] 会发生置位为 1 的情况,这时只
能通过设法降低通道数,或者提高 CIC 的降采样率来减少系统的算力要求,直至 ST [ FILT_CRX_ERR ]、ST [
OFIFO_OVFL_ERR ]、和 ST [ CIC_OVLD_ERR ] 都不会再出现。
另外,如果 I2S0 的采样率配置和 PDM 模块的采样率配置不一致,也会导致 ST [ OFIFO_OVFL_ERR ] 被置
位,此时需要检查相关配置,以确保这两个模块的采样率一致。
PDM 中断源的具体说明如表 184所示。
表 184: PDM 中断请求
中断事件
事件标志
使能控制位
CIC 计算饱和
ST[CIC_SAT_ERR]
CTRL[CIC_SAT_ERR_IE]
CIC 采样率过载
ST[CIC_OVLD_ERR]
CTRL[CIC_OVLD_ERR_IE]
输出 FIFO 过载
ST[OFIFO_OVFL_ERR]
CTRL[OFIFO_OVFL_ERR_IE]
计算缓冲区指针过载
ST[FILT_CRX_ERR]
CTRL[FILT_CRX_ERR_IE]
37.4.6
DMA 传输
本模块的输出数据往来通过 I2S0 的 RXD0 缓冲区进行。所以请参考小节 36.4.3。
37.4.7
SNR 的估算
SNR(dB) = 20 ∗ log10(2ENOB ) + 1.76 = 20 ∗ ENOB ∗ log10(2) + 1.76 = ENOB ∗ (20 ∗ log10(2)) + 1.76 = ENOB ∗ 6.02 + 1.76
对于 CIC 滤波器,ENOB 上界约为
ENOB = ⌈log2(OSROrder )⌉ + Binput = ⌈Order ∗ log2(OSR)⌉ + Binput
,其中 Binput 是 CIC 级的输入比特位宽度。CIC 之后的滤波器,通过改变噪声的带宽,有可能会进一步改变这个
SNR 的数值。
37.5
寄存器列表
PDM 相关寄存器占用地址如下:PDM base address: 0xF0114000
地址偏移
名称
描述
复位值
0x0000
CTRL
控制寄存器
0x00000000
0x0004
CH_CTRL
通道控制寄存器
0x00000000
0x0008
ST
状态寄存器
0x00000000
0x000C
CH_CFG
通道配置寄存器
0x00000000
0x0010
CIC_CFG
CIC 配置寄存器
0x00000000
0x0014
CTRL_INBUF
内部缓冲区控制寄存器
0x00000000
0x0018
CTRL_FILT0
滤波器 0 号寄存器
0x00000000
0x001C
CTRL_FILT1
滤波器 1 号寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
539/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
地址偏移
名称
描述
复位值
0x0020
RUN
执行寄存器
0x00000000
0x0024
MEMADDR
内部存储器访问地址寄存器
0x00000000
0x0028
MEMDATA
内部存储器访问数据寄存器
0x00000000
0x002C
HPF_MA
高通滤波器 A 系数寄存器
0x00000000
0x0030
HPF_B
高通滤波器 B 系数寄存器
0x00000000
表 185: PDM 寄存器列表
寄存器描述
37.6
PDM 相关寄存器具体描述如下:
0
0
0
0
0
4
3
0
0
2
1
0
HPF_EN
0
5
RW
x
6
PDM_CLK_OE
0
7
PDM_CLK_DIV_BYPASS
0
8
RW
0
9
PDM_CLK_HFDIV
0
10
RW
0
11
CAPT_DLY
0
12
RW
0
13
RSVD
0
14
N/A
0
15
DEC_AFT_CIC
16
RW
17
RW
x
18
CIC_SAT_ERR_IE
x
19
RW
RSVD
RW
0
20
CIC_OVLD_ERR_IE
x
21
RW
x
22
FILT_CRX_ERR_IE
x
N/A
x
23
OFIFO_OVFL_ERR_IE
24
RW
x
25
RW
x
26
USE_COEF_RAM
x
RW
0
27
RW
28
RSVD
29
N/A
30
SFTRST
31
CTRL (0x0)
SOF_FEDGE
37.6.1
0
0
0
CTRL [31:0]
位域
名称
31
SFTRST
23
SOF_FEDGE
20
USE_COEF_RAM
置为 1 时,系数来自于 RAM;否则来自 ROM。
FILT_CRX_ERR_I
访问的数据超出边界错误中断使能。
19
18
17
E
OFIFO_OVFL_ER
R_IE
CIC_OVLD_ERR_I
E
描述
置为 1 时,软件重置本模块。
自动清零。
置为 1 时,选择来自 DAO 的 ref fclk 的下降沿为新帧的开始。
这用于对齐 DAO 反馈信号。
当模块无法及时计算足够数量的数据时,会发生此错误。
输出 FIFO 过载错误中断使能
CIC 过载错误中断使能
CIC 饱和错误中断使能
16
CIC_SAT_ERR_IE
该位控制发生错误条件(CIC 饱和)时中断的生成。
0:错误中断被屏蔽
1:使能错误中断
15-12
DEC_AFT_CIC
CIC 阶段之后的下采样比率。现在要求为 3。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
540/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
10-7
CAPT_DLY
数字麦克风 PDM
描述
捕获周期延迟 >=0,应小于 PDM_CLK_HFDIV
生成 PDM_CLK 的时钟分频比。
时钟分频器将至少为 4。
6-3
0: 分频比为 2,
PDM_CLK_HFDIV
1: 分频比为 4
...
n: 分频比为 2*(n+1)
PDM_CLK_DIV_B
2
置为 1 时不做 PDM_CLK 的时钟分频
YPASS
1
PDM_CLK_OE
0
HPF_EN
置为 1 时输出分频产生的 PDM_CLK
PDM 高通滤波器使能。
这个 1 阶 HPF 仅适用于 PDM 麦克风数据。
CTRL 位域
CH_CTRL (0x4)
x
x
x
26
25
24
23
22
21
20
x
x
x
0
0
0
0
19
18
17
16
15
14
13
0
0
0
x
x
x
RW
N/A
x
12
11
10
9
8
7
6
5
0
x
x
0
0
0
0
0
4
3
2
1
0
0
0
0
0
0
CH_EN
x
27
RW
28
RSVD
29
N/A
30
RSVD
31
CH_POL
37.6.2
x
CH_CTRL [31:0]
位域
名称
描述
23-16
CH_POL
置为 1 时选择在 PDM_CLK 高电平时捕获,否则选择 PDM_CLK
低电平时捕获。
置为 1 时使能相关通道。
9-0
Ch8 和 CH9 为参考信号通道。
CH_EN
Ch0-7 为麦克风信号通道。
CH_CTRL 位域
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
CIC_SAT_ERR
23
W1C
24
CIC_OVLD_ERR
25
OFIFO_OVFL_ERR
26
W1C
27
W1C
28
FILT_CRX_ERR
29
W1C
30
RSVD
31
ST (0x8)
N/A
37.6.3
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
541/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
ST [31:0]
位域
名称
3
FILT_CRX_ERR
数据访问超出边界错误
OFIFO_OVFL_ER
输出 FIFO 过载错误。
2
描述
原因可能是采样频率不匹配,或快或慢。
R
1
CIC_OVLD_ERR
CIC 过载错误
0
CIC_SAT_ERR
CIC 饱和错误
ST 位域
0
RW
0
0
13
0
0
12
11
0
0
10
9
0
0
0
0
CH0_TYPE
x
14
RW
x
15
CH1_TYPE
x
N/A
x
16
RW
x
17
CH2_TYPE
x
18
RW
19
RW
x
20
CH4_TYPE
x
21
RW
x
22
CH5_TYPE
x
23
RW
x
24
CH6_TYPE
x
25
RW
26
CH7_TYPE
27
RW
28
CH8_TYPE
29
RW
30
RSVD
31
CH3_TYPE
CH_CFG (0xC)
CH9_TYPE
37.6.4
CH_CFG [31:0]
位域
名称
19-18
CH9_TYPE
17-16
CH8_TYPE
15-14
CH7_TYPE
13-12
CH6_TYPE
11-10
CH5_TYPE
9-8
CH4_TYPE
7-6
CH3_TYPE
5-4
CH2_TYPE
3-2
CH1_TYPE
描述
通道的滤波器类型
2’b00: 下采样比率为 3,滤波器类型 0(CIC 补偿站 + 标准滤波
1-0
CH0_TYPE
器)
2’b01: 下采样比率为 3,过滤器类型 1(无 CIC 补偿,仅标准滤
波器)
CH_CFG 位域
37.6.5
CIC_CFG (0x10)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
542/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
x
x
x
x
x
x
x
0
0
0
12
11
10
9
0
0
0
RW
N/A
x
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
CIC_DEC_RATIO
26
RW
27
SGD
28
RW
29
POST_SCALE
30
RSVD
31
数字麦克风 PDM
0
CIC_CFG [31:0]
位域
名称
描述
15-10
POST_SCALE
对 CIC 输出的结果进行的移位值。
sigma-delta 滤波器阶数
2’b00:7
9-8
SGD
2’b01:6
2’b10:5
其他:未使用
7-0
CIC 下采样的比率
CIC_DEC_RATIO
CIC_CFG 位域
28
27
26
0
0
0
0
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
x
15
14
13
12
11
10
9
8
7
6
0
0
0
0
0
0
0
0
0
0
PITCH
16
RW
RW
N/A
x
25
START_ADDR
29
MAX_PTR
30
RSVD
31
CTRL_INBUF (0x14)
0
0
RW
37.6.6
0
CTRL_INBUF [31:0]
位域
名称
29-22
MAX_PTR
21-11
PITCH
10-0
START_ADDR
描述
每个通道的缓冲区大小减 1
相邻通道的起始地址之间的间距
滤波器通道 0 的输入数据缓冲区的起始地址
CTRL_INBUF 位域
37.6.7
CTRL_FILT0 (0x18)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
543/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
x
x
x
x
x
x
x
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
3
2
1
0
COEF_START_ADDR
28
RW
N/A
x
RW
29
COEF_LEN_M0
30
RSVD
31
数字麦克风 PDM
0
CTRL_FILT0 [31:0]
位域
名称
描述
15-8
COEF_LEN_M0
滤波器类型 2’b00 的系数的长度(阶数)
COEF_START_AD
7-0
滤波器类型 2’b00 的系数在系数内存里的起始地址
DR
CTRL_FILT0 位域
CTRL_FILT1 (0x1C)
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
x
x
x
x
x
x
x
0
0
0
0
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
0
0
0
4
3
2
1
0
COEF_START_ADDR
29
RW
N/A
RW
30
RSVD
31
COEF_LEN_M1
37.6.8
x
0
CTRL_FILT1 [31:0]
位域
名称
描述
15-8
COEF_LEN_M1
滤波器类型 2’b01 的系数的长度(阶数)
COEF_START_AD
7-0
滤波器类型 2’b01 的系数在系数内存里的起始地址
DR
CTRL_FILT1 位域
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
PDM_EN
29
RW
30
RSVD
31
RUN (0x20)
N/A
37.6.9
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
544/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字麦克风 PDM
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RUN [31:0]
位域
名称
描述
0
PDM_EN
置为 1 时使能本模块
RUN 位域
37.6.10
MEMADDR (0x24)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RW
ADDR
31
0
MEMADDR [31:0]
位域
名称
31-0
ADDR
描述
0–0x0FFFFFFF: 模块内部的滤波器系数空间
0x10000000–0x1FFFFFF:模块内部的滤波器数据空间
MEMADDR 位域
37.6.11
MEMDATA (0x28)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
RW
DATA
31
0
MEMDATA [31:0]
位域
名称
31-0
DATA
描述
写入缓冲区的数据/从缓冲区读取的数据
MEMDATA 位域
31
30
HPF_MA (0x2C)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
COEF
37.6.12
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
545/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
数字麦克风 PDM
0
HPF_MA [31:0]
位域
名称
31-0
COEF
描述
1 阶 HPF 系数 A 的补码,S24:23。仅有低 24 位有用。仅能表示
[-1,1) 之间的数。
HPF_MA 位域
37.6.13
HPF_B (0x30)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
COEF
31
0
HPF_B [31:0]
位域
名称
31-0
COEF
描述
1 阶 HPF 系数 B,S24:23。仅有低 24 位有用。仅能表示 [-1,1)
之间的数。
HPF_B 位域
PDM 配置使用简单说明
37.7
37.7.1
软件复位
将 CTRL[SFTRST] 置为 1 后复位,再将 CTRL[SFTRST] 置为 0 后解除复位。另,本复位也可自动解除。
37.7.2
使能流程
各步骤如下:
1. 检查 RUN[PDM_EN] 确定本模块是否在运行。如在运行,置 RUN[PDM_EN]=0
2. 配置 CTRL[PDM_CLK_HFDIV] 为所需数值,保证 PDM_CLK 小于或等于 3.072MHz。
3. 其余寄存器按需求配置。
4. 按需求配置 I2S0 RX0 的相关寄存器。
5. 置 RUN[PDM_EN]=1, 使能 I2S 模块,然后 PDM 模块开始工作, 接收到的数据通过 I2S0 RX 的 FIFO
送到芯片内部做进一步处理。。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
546/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字音频输出 DAO
数字音频输出 DAO
38
38.1
概述
DAO 模块主要用来产生较高质量的类似差分输出的 PWM,在音频带宽 [200Hz,20kHz) 内可以达到约 55dB
的信噪比。目前支持的特性如下表 186:
功能
主要特性
通信方式
ꞏ 支持从 I2S1[TXD0] 来的 2 路 PCM 槽通道信号输入。软件可选配 2 路槽通
道的具体位置。
ꞏ 支持向 PDM 模块输出 2 个参考信号(可用于 AEC)
。
数据缓冲
ꞏ 本模块输入来自 I2S1[TXD0],所以共享 I2S1[TXD0] 的 FIFO 深度 (见小
节 36.4.3)
DMA 支持
ꞏ 本模块输入来自 I2S1[TXD0],所以共享 I2S1[TXD0] 的 DMA 设置
数据格式
ꞏ 同 I2S1
时钟源
ꞏ 为系统音频主时钟;此时 I2S1 必须工作在主模式下
表 186: DAO 主要特性
38.2
DAO 架构图
本模块的结构图如图 58。从 I2S1 的 TXD0 来的信号,提取相关槽通道后,经过可以旁路掉的高通滤波器 (
HPF ) 后,进行上采样,然后变成 PWM 信号输出。
接口控制总线
接口控制
接口寄存器
系统音频主时钟
从I2S1 TXD0
来的数据
信道
提取
HPF
上采样
PWM
信号
生成
DAOL_P
DAOL_N
DAOR_P
DAOR_N
}
}
送至PDM的参考信号
图 58: DAO 结构框图
38.3
管脚说明
本模块使用的管脚说明见表 187。
38.4
38.4.1
功能说明
DAO 一般说明
DAO 引脚上会输出 PWM 信号。以左声道为例,这个二值化 PWM 信号经过如下图 59中的阻容滤波器电路
可以变成模拟信号,然后去驱动语音信号的功放,再由这个功放输出去驱动高功率喇叭。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
547/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字音频输出 DAO
表 187: DAO 管脚说明
管脚
方向
功能描述
DAOL_P
输出
左声道输出的 P 路信号
DAOL_N
输出
左声道输出的 N 路信号
DAOR_P
输出
右声道输出的 P 路信号
DAOR_N
输出
右声道输出的 N 路信号
1
注意:这里相应的 P 路和 N 路信号管脚必须联合起来使用。
如果只要驱动 100mW-200mW 左右的高阻抗耳机,则可以省略掉图中的蓝色框里的阻容滤波器和语音信号
的功放。但要注意,芯片的管脚一般只能输出约 50mA-100mA 的电流,太大的电流会烧毁芯片里的管脚部分的电
路。
IN_P
DAOL_P
OUT_P
GND
SPK
IN_N
GND
DAOL_N
OUT_N
GND
图 59: DAO 输出去驱动喇叭
38.4.2
DAO 输出波形
DAO 引脚上输出的 PWM 信号,反映了当前 PCM 的值的大小。在忽略掉滤波和 PWM 转换带来的延时的情
况下,若输入的 PCM 为正,则 DAOx_P 管脚上会在更多时间里输出为高电平;若输入的 PCM 为负,则 DAOx_N
管脚上会在更多时间里输出为高电平。这样经过低通滤波后,就可以恢复出原始的 PCM 语音信号。相对应的图
形有 2 种,介绍如下:
● 在 CTRL[REMAP] 为 0 时,P 管脚和 N 管脚上输出的波形如图 60。
● 在 CTRL[REMAP] 为 1 时,同样输入下,P 管脚和 N 管脚上输出的波形如图 61。
可见,当 CTRL[REMAP] 为 1 时,P 管脚和 N 管脚上的跳变更少,EMC 性能以及驱动电路开关带来的非线
性影响更小。所以,推荐将 CTRL[REMAP] 配置为 1。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
548/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数字音频输出 DAO
音频主时钟
I2S来的PCM
PCM为正值
PCM为负值
...
...
DAOx_P
DAOx_N
图 60: DAO 输出波形,当 CTRL[REMAP]=0 时
音频主时钟
I2S来的PCM
PCM为正值
PCM为负值
...
...
DAOx_P
DAOx_N
图 61: DAO 输出波形,当 CTRL[REMAP]=1 时
38.4.3
相应的 I2S 的配置,以及槽通道的选择
对于和 I2S1 相同名字的寄存器配置字段,一般需要和 I2S1 的配置匹配成一样的。目前,DAO 要求相应的
I2S1_CFGR[CHSIZ]=1。
因为 I2S 支持 TDM 模式,所以需要从这些槽通道里选出 2 个槽通道。可以通过配置 RXSLT 来选择出 2 个
槽通道。
38.4.4
信号流图
本模块的信号流图见图 62.
从I2S1来
的信号
2
通道提取
8↑
BYPS_EN
PWM
GEN
DAOL_P
DAOL_N
}
PWM
GEN
DAOR_P
DAOR_N
}
HPF
8↑
2
去P 的参
考信号
图 62: DAO 信号流图
38.4.4.1
PCM 信号的滤波和采样变换
从 I2S 的输出信号里取出 2 个槽通道的信号后,先通过可旁路的高通滤波器滤除直流,然后 8 倍上采样,再
通过 PWM 信号生成逻辑,最终在管脚上输出成对的 PWM 信号。
38.4.4.2
高通滤波器 HPF 的配置
HPF 目的是为了减少 PCM 里面的 DC 信号的影响。缺省状态下,HPF 未使能。目前如果要使能 HPF 的话,
必须使能 2 个槽通道。
HPF 的参数配置在寄存器 HPF_MA 和 HPF_B 里,是否旁路由 CTRL[HPF_EN] 来控制。这个 HPF 的公式
是
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
549/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
Y(z) =
数字音频输出 DAO
b ∗ (1 − z−1 ) ∗ X(z)
1 − a ∗ z−1
(4)
寄存器 HPF_MA 中储存的是式中的 −a 值,寄存器 HPF_B 中储存的是式中的 b 值。
比方说,打算设计一个截止频率在 100Hz,采样率为 48kHz 的高通,此时,设计指令类似于
[ba, aa] = butter(1, 100/(48000/2),′ high′ )
(5)
可得:
aa
=
[1.000000000000000 − 0.986994962681551],
ba
=
[0.993497481340776 − 0.993497481340776]
所以,HPF_MA 的值为 ROUND ( 0.986994962681551 * POWER(2,23) , 24 ), 即 0x7e55d9; HPF_B 的值为
ROUND ( 0.993497481340776 * POWER(2,23) , 24 ), 即 0x7f2aec。
38.4.4.3
参考信号
HPF 阶段之后的信号被作为参考信号,
送给 PDM 模块作为自动回声消除(AEC)用的参考信号。
参小节 37.4.3.2。
本模块和 PDM 联合工作时,最好把 DAO 信号的采样率配置为 48kHz,因为这是联合工作时最佳的设置。
38.4.5
发送缓冲区和接收缓冲区
本模块的输出数据往来通过 I2S1 的 TXD0 缓冲区进行。所以请参考小节 36.4.3。
38.4.6
中断
目前本模块没有中断输出。
38.4.7
DMA 传输
本模块的输出数据往来通过 I2S1 的 TXD0 缓冲区进行。所以请参考小节 36.4.3。
38.5
寄存器列表
DAO 相关寄存器占用地址如下:DAO base address: 0xF0110000
地址偏移
名称
描述
复位值
0x0000
CTRL
控制寄存器
0x00000000
0x0008
CMD
命令寄存器
0x00000000
0x000C
RX_CFGR
配置寄存器
0x00000000
0x0010
RXSLT
接收槽控制寄存器
0x00000000
0x0014
HPF_MA
高通滤波器 A 系数寄存器
0x00000000
0x0018
HPF_B
高通滤波器 B 系数寄存器
0x00000000
表 188: DAO 寄存器列表
38.6
寄存器描述
DAO 相关寄存器具体描述如下:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
550/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
CTRL (0x0)
x
x
x
14
13
x
x
x
x
RW
N/A
x
12
11
10
9
8
0
x
x
x
x
x
7
6
5
4
3
0
0
0
0
0
2
1
0
0
FALSE_RUN
x
15
RW
x
16
FALSE_LEVEL
x
17
RW
x
18
INVERT
x
19
RW
x
20
REMAP
x
21
LEFT_EN
x
22
RW
x
23
RW
x
24
MONO
25
RIGHT_EN
26
RW
27
RW
28
RSVD
29
N/A
30
RSVD
31
HPF_EN
38.6.1
数字音频输出 DAO
0
0
CTRL [31:0]
位域
名称
描述
HPF(高通滤波器)使能。该 HPF 用于过滤掉直流部分。
17
HPF_EN
1–使能 HPF
0–不使能 HPF
置为 1 时,左侧和右侧通道将输出相同的值。
7
MONO
6
RIGHT_EN
置为 1 时,使能右声道
5
LEFT_EN
置为 1 时,使能左声道
1:使用重新映射的 pwm 信号。重新映射版本是指当输入 pcm 信
4
号为正或负时,一个 pwm 输出被强制为零的版本
REMAP
0: 不使用重新映射 pwm 信号。
3
置为 1 时,在发送到 pad 之前,所有输出都需反转
INVERT
在虚假运行模式或模块被禁用时时,管脚的输出模式:
0: 全低
2-1
1: 都很高
FALSE_LEVEL
2:P-高,N-低
3. 输出未启用
设置为 1 时,为虚假运行模式。
0
此时,本模块继续消耗输入数据,但所有的输出管脚上的都是恒
FALSE_RUN
定的,没有音频输出
CTRL 位域
CMD (0x8)
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
CMD [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
551/1016
1
0
RUN
28
RW
29
SFTRST
30
RSVD
31
RW
38.6.2
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
1
SFTRST
0
RUN
数字音频输出 DAO
描述
写一软件复位。自动清零。
置为 1 时,运行本模块
CMD 位域
RX_CFGR (0xC)
28
27
26
25
24
23
22
x
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
0
0
7
6
5
4
3
0
0
x
x
x
RW
N/A
x
8
0
2
1
0
x
x
x
RSVD
29
N/A
30
RSVD
31
CH_MAX
38.6.3
RX_CFGR [31:0]
位域
名称
描述
Ch_MAX[3:0] 为对接的 I2S 配置中在 TDM 模式下支持的槽的通
道数。
当不处于 TDM 模式时,必须将其设置为 2。
10-6
它必须是偶数,因此 Chu MAX[0] 始终为 0。
CH_MAX
4’h2:2 通道
4’h4:4 频道
等
RX_CFGR 位域
38.6.4
RXSLT (0x10)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
EN
31
0
RXSLT [31:0]
位域
名称
31-0
EN
描述
接收槽使能控制位。置为 1 时表明该槽含有效数据。
RXSLT 位域
38.6.5
HPF_MA (0x14)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
552/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
COEF
31
数字音频输出 DAO
0
HPF_MA [31:0]
位域
名称
31-0
COEF
描述
1 阶 HPF 系数 A 的补码
HPF_MA 位域
38.6.6
HPF_B (0x18)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
COEF
31
0
HPF_B [31:0]
位域
名称
31-0
COEF
描述
1 阶 HPF 系数 B
HPF_B 位域
DAO 配置使用简单说明
38.7
38.7.1
软件复位
将 CMD[SFTRST] 置为 1 后复位,再将 CMD[SFTRST] 置为 0 后解除复位。另,本复位也可自动解除。
38.7.2
使能流程
各步骤如下:
1. 检查 CMD[RUN] 确定本模块是否在运行。如在运行,置 CMD[RUN]=0
2. 软件复位本模块。
3. 配置 RX_CFGR[CH_MAX] 如所连接的 I2S1 TX0 的行为;配 RXSLT 寄存器为所需截取的 I2S1 TX0 中
的 slot。
4. 其余寄存器按需求配置。
5. 按需求配置 I2S1 TX0 的相关寄存器。
6. 置 CMD[RUN]=1, 然后模块开始工作。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
553/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电机系统概述
电机系统概述
39
本章节介绍了本产品的电机控制系统。本产品支持 2 套电机控制单元,每个单元包括 1 个 PWM 定时器,1
个正交编码器接口,1 个霍尔传感器接口和 1 个互联管理器。配合片上的模拟外设如模数转换器 ADC,比较器
ACMP 等外设。本产品包括一个同步定时器,用于电机控制单元间同步。
所有电机控制单元和同步定时器均工作在外部总线时钟 (CLK_TOP_AHB), 以实现最小 cpu 访问延时。
本产品的电机控制系统如图 63。
同步定时器
0
电机控制单元
1
电机控制单元
0
PWM定时器
0
正交编码器接口
0
霍尔传感器接口
0
互联管理器
0
信号互联
数字滤波器
DMA管理
图 63: 电机系统框图
39.1
PWM 定时器 PWM
本产品支持 2 个 PWM 定时器。单个 PWM 支持高达 28 位计数器,支持 24 个通道,其中通道 0∼7 用于生
成 8 路独立或者 4 对互补 PWM 输出,支持死区控制和故障保护。其余 16 路通道支持输出比较,可以通过互联
管理器输出到 IO,或者其他片上模块。PWM 定时器支持输入捕获。
本产品上,单个 PWM 定时器信号连接如下:
● 通道 0∼7 输出经过 PWM 控制逻辑,连接到 IO 上
● 通道 8∼23 输出连接到电机控制单元内的互联管理器
● 输入捕获 0∼7 来自 IO
● 输入捕获 8∼23 来自电机控制单元内的互联管理器
● 计数器同步触发输入 SYNCI 来自电机控制单元内的互联管理器
● 强制输出的使能输入 FRCI 来自电机控制单元内的互联管理器
● 强制输出影子寄存器的生效的触发输入 SHSYNCI 来自电机控制单元内的互联管理器
● 外部故障保护输入 FAULTE0∼1 来自 IO,可在无时钟状态实现故障保护
● 内部故障保护输入 FAULTI0∼3 来自电机控制单元内的互联管理器,需在电机系统时钟正常工作时实现
故障保护
各个 PWM 模块信号与电机控制单元内的互联管理器内信号连接请查阅节 39.4。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
554/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
39.2
电机系统概述
正交编码器接口 QEI
本产品支持 2 个正交编码器接口 QEI。QEI 支持外部的各种类型的正交编码器,用以感应电机的位置信息,并
提供电机的转向,转速信息。
本产品上,单个正交编码器接口 QEI 的信号连接如下:
● A 相输入 APH,来自电机控制单元内的互联管理器
● B 相输入 BPH,来自电机控制单元内的互联管理器
● Z 相输入 ZPH,来自电机控制单元内的互联管理器
● H 相输入 HPH,也称位 HOME,来自电机控制单元内的互联管理器
● 快照输入 SNAPI,来自电机控制单元内的互联管理器
● 触发输出 TRGO,连接到电机控制单元内的互联管理器
正交编码器接口 QEI 的各个信号支持通过电机控制单元内互联管理器灵活地分配,可以连接到 TRGM 的各个 IO,
也可以连接到片上的其他外设。具体信号连接请查阅节 39.4。
39.3
霍尔传感器接口 HALL
本产品支持 2 个霍尔传感器接口 HALL。HALL 支持外部的霍尔传感器。
本产品上,单个霍尔传感器接口 HALL 的信号连接如下:
● A 相输入 U,来自电机控制单元内的互联管理器
● B 相输入 V,来自电机控制单元内的互联管理器
● Z 相输入 W,来自电机控制单元内的互联管理器
● 快照输入 SNAPI,来自电机控制单元内的互联管理器
● 触发输出 TRGO,连接到电机控制单元内的互联管理器
霍尔传感器接口 HALL 的各个信号支持通过电机控制单元内互联管理器灵活地分配,可以连接到 TRGM 的各个
IO,也可以连接到片上的其他外设。具体信号连接请查阅节 39.4。
39.4
互联管理器 TRGM
本产品支持 2 个互联管理器 TRGM,TRGM 支持电机控制单元内外各个设备的信号间互通互联,可以把片上
各个外设整合起来,实现外设间相互同步,相互配合。
互联管理器支持多个输入,输入来自于 IO,电机控制单元内外的各个外设,以及其他电机控制单元的互联管
理器。各个互联管理器的输入信号,请查阅小节 39.4.1。
互联管理器支持多个输出,用户可以从互联管理器的众多输入信号中选择一个,连接到任意输出。各个互联
管理器的输出信号分配,请查阅小节 39.4.2。
注意:将电机系统内部信号连接到电机系统外时,需要考虑时钟频率和信号有效长度。
以下几个信号只有一个电机系统时钟周期,这些信号可以在电机系统内部任意连接,不建议出电机系统:
正交解码器 n 触发输出;霍尔传感器 n 接口触发输出;同步定时器通道 n。
互联管理器支持管理电机控制单元内外设的 DMA 请求,本产品上,电机控制单元内设备的 DMA 请求不直接
连接到 DMAMUX,而是通过 TRGM 转接。各个 TRGM 管理的 DMA 请求,请查阅小节 39.4.3。
互联管理器支持多个数字滤波器,可以对 TRGM 的特定输入信号进行滤波。各个 TRGM 中配置有数字滤波
器的输入信号,请查阅小节 39.4.4。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
555/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
39.4.1
电机系统概述
互联管理器输入分配
本章节介绍互联管理器输入信号分配。
互联管理器 0 的输入信号分配:
TRGM0_INPUT
MUX 编号
TRGM0_INPUT MUX
描述
SOURCE 名称
0
VSS
低电平
1
VDD
高电平
2
TRGM0_P0
互联管理器 0 输入 0(来自 IO)
3
TRGM0_P1
互联管理器 0 输入 1(来自 IO)
4
TRGM0_P2
互联管理器 0 输入 2(来自 IO)
5
TRGM0_P3
互联管理器 0 输入 3(来自 IO)
6
TRGM0_P4
互联管理器 0 输入 4(来自 IO)
7
TRGM0_P5
互联管理器 0 输入 5(来自 IO)
8
TRGM0_P6
互联管理器 0 输入 6(来自 IO)
9
TRGM0_P7
互联管理器 0 输入 7(来自 IO)
10
TRGM0_P8
互联管理器 0 输入 8(来自 IO)
11
TRGM0_P9
互联管理器 0 输入 9(来自 IO)
12
TRGM0_P10
互联管理器 0 输入 10(来自 IO)
13
TRGM0_P11
互联管理器 0 输入 11(来自 IO)
18
TRGM1_OUTX0
互联管理器 1 输出 X0
19
TRGM1_OUTX1
互联管理器 1 输出 X1
20
PWM0_CH8REF
PWM 定时器 0 通道 8 参考输出
21
PWM0_CH9REF
PWM 定时器 0 通道 9 参考输出
22
PWM0_CH10REF
PWM 定时器 0 通道 10 参考输出
23
PWM0_CH11REF
PWM 定时器 0 通道 11 参考输出
24
PWM0_CH12REF
PWM 定时器 0 通道 12 参考输出
25
PWM0_CH13REF
PWM 定时器 0 通道 13 参考输出
26
PWM0_CH14REF
PWM 定时器 0 通道 14 参考输出
27
PWM0_CH15REF
PWM 定时器 0 通道 15 参考输出
28
PWM0_CH16REF
PWM 定时器 0 通道 16 参考输出
29
PWM0_CH17REF
PWM 定时器 0 通道 17 参考输出
30
PWM0_CH18REF
PWM 定时器 0 通道 18 参考输出
31
PWM0_CH19REF
PWM 定时器 0 通道 19 参考输出
32
PWM0_CH20REF
PWM 定时器 0 通道 20 参考输出
33
PWM0_CH21REF
PWM 定时器 0 通道 21 参考输出
34
PWM0_CH22REF
PWM 定时器 0 通道 22 参考输出
35
PWM0_CH23REF
PWM 定时器 0 通道 23 参考输出
36
QEI0_TRGO
正交解码器 0 触发输出
37
HALL0_TRGO
霍尔传感器接口触发输出
38
USB0_SOF
USB0 桢起始
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
556/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM0_INPUT
MUX 编号
TRGM0_INPUT MUX
电机系统概述
描述
SOURCE 名称
39
NTMR0_CH1_OUT
NTMR 通道 1 比较输出
40
ENET0_PTP_OUT3
以太网控制器 0 PTP 输出 3
41
NTMR0_CH0_OUT
NTMR 通道 0 比较输出
42
PTPC_CMP0
精确时间协议模块 PTPC 输出比较 0
43
PTPC_CMP1
精确时间协议模块 PTPC 输出比较 1
44
SYNT0_CH0
同步定时器通道 0
45
SYNT0_CH1
同步定时器通道 1
46
SYNT0_CH2
同步定时器通道 2
47
SYNT0_CH3
同步定时器通道 3
48
GPTMR0_OUT2
通用定时器 0 通道 2
49
GPTMR0_OUT3
通用定时器 0 通道 3
50
GPTMR1_OUT2
通用定时器 1 通道 2
51
GPTMR1_OUT3
通用定时器 1 通道 3
52
CMP0_OUT
比较器 0 输出
53
CMP1_OUT
比较器 1 输出
56
DEBUG_FLAG
调试模式进入标志位
表 189: TRGM0_INPUT MUX 列表
互联管理器 1 的输入信号分配:
TRGM1_INPUT
MUX 编号
TRGM1_INPUT MUX
描述
SOURCE 名称
0
VSS
低电平
1
VDD
高电平
2
TRGM1_P0
互联管理器 1 输入 0(来自 IO)
3
TRGM1_P1
互联管理器 1 输入 1(来自 IO)
4
TRGM1_P2
互联管理器 1 输入 2(来自 IO)
5
TRGM1_P3
互联管理器 1 输入 3(来自 IO)
6
TRGM1_P4
互联管理器 1 输入 4(来自 IO)
7
TRGM1_P5
互联管理器 1 输入 5(来自 IO)
8
TRGM1_P6
互联管理器 1 输入 6(来自 IO)
9
TRGM1_P7
互联管理器 1 输入 7(来自 IO)
10
TRGM1_P8
互联管理器 1 输入 8(来自 IO)
11
TRGM1_P9
互联管理器 1 输入 9(来自 IO)
12
TRGM1_P10
互联管理器 1 输入 10(来自 IO)
13
TRGM1_P11
互联管理器 1 输入 11(来自 IO)
18
TRGM0_OUTX0
互联管理器 0 输出 X0
19
TRGM0_OUTX1
互联管理器 0 输出 X1
20
PWM1_CH8REF
PWM 定时器 1 通道 8 参考输出
21
PWM1_CH9REF
PWM 定时器 1 通道 9 参考输出
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
557/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM1_INPUT
MUX 编号
TRGM1_INPUT MUX
电机系统概述
描述
SOURCE 名称
22
PWM1_CH10REF
PWM 定时器 1 通道 10 参考输出
23
PWM1_CH11REF
PWM 定时器 1 通道 11 参考输出
24
PWM1_CH12REF
PWM 定时器 1 通道 12 参考输出
25
PWM1_CH13REF
PWM 定时器 1 通道 13 参考输出
26
PWM1_CH14REF
PWM 定时器 1 通道 14 参考输出
27
PWM1_CH15REF
PWM 定时器 1 通道 15 参考输出
28
PWM1_CH16REF
PWM 定时器 1 通道 16 参考输出
29
PWM1_CH17REF
PWM 定时器 1 通道 17 参考输出
30
PWM1_CH18REF
PWM 定时器 1 通道 18 参考输出
31
PWM1_CH19REF
PWM 定时器 1 通道 19 参考输出
32
PWM1_CH20REF
PWM 定时器 1 通道 20 参考输出
33
PWM1_CH21REF
PWM 定时器 1 通道 21 参考输出
34
PWM1_CH22REF
PWM 定时器 1 通道 22 参考输出
35
PWM1_CH23REF
PWM 定时器 1 通道 23 参考输出
36
QEI1_TRGO
正交编码器接口 1 触发输出
37
HALL1_TRGO
霍尔传感器接口 1 触发输出
38
USB0_SOF
USB0 桢起始
39
NTMR0_CH1_OUT
NTMR 通道 1 比较输出
40
ENET0_PTP_OUT3
以太网控制器 0 PTP 输出 3
41
NTMR0_CH0_OUT
NTMR 通道 0 比较输出
42
PTPC_CMP0
精确时间协议模块 PTPC 输出比较 0
43
PTPC_CMP1
精确时间协议模块 PTPC 输出比较 1
44
SYNT0_CH0
同步定时器通道 0
45
SYNT0_CH1
同步定时器通道 1
46
SYNT0_CH2
同步定时器通道 2
47
SYNT0_CH3
同步定时器通道 3
48
GPTMR2_OUT2
通用定时器 2 通道 2 输出比较
49
GPTMR2_OUT3
通用定时器 2 通道 3 输出比较
50
GPTMR3_OUT2
通用定时器 3 通道 2 输出比较
51
GPTMR3_OUT3
通用定时器 3 通道 3 输出比较
52
CMP0_OUT
比较器 0 输出
53
CMP1_OUT
比较器 1 输出
56
DEBUG_FLAG
调试模式进入标志位
表 190: TRGM1_INPUT MUX 列表
39.4.2
互联管理器输出分配
本章节介绍互联管理器输出信号分配。
互联管理器 0 的输出信号分配:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
558/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM0_OUTPUT
MUX 编号
TRGM0_OUTPUT MUX
SOURCE 名称
电机系统概述
描述
0
TRGM0_P0
互联管理器 0 输出 0(输出至 IO)
1
TRGM0_P1
互联管理器 0 输出 1(输出至 IO)
2
TRGM0_P2
互联管理器 0 输出 2(输出至 IO)
3
TRGM0_P3
互联管理器 0 输出 3(输出至 IO)
4
TRGM0_P4
互联管理器 0 输出 4(输出至 IO)
5
TRGM0_P5
互联管理器 0 输出 5(输出至 IO)
6
TRGM0_P6
互联管理器 0 输出 6(输出至 IO)
7
TRGM0_P7
互联管理器 0 输出 7(输出至 IO)
8
TRGM0_P8
互联管理器 0 输出 8(输出至 IO)
9
TRGM0_P9
互联管理器 0 输出 9(输出至 IO)
10
TRGM0_P10
互联管理器 0 输出 10(输出至 IO)
11
TRGM0_P11
互联管理器 0 输出 11(输出至 IO)
12
TRGM0_OUTX0
13
TRGM0_OUTX1
14
PWM0_SYNCI
PWM 定时器 0 计数器同步触发输入
15
PWM0_FRCI
PWM 定时器 0 强制输出控制输入
16
PWM0_FRCSYNCI
17
PWM0_SHRLDSYNCI
18
PWM0_FAULTI0
PWM 定时器 0 故障保护输入 0
19
PWM0_FAULTI1
PWM 定时器 0 故障保护输入 1
20
PWM0_FAULTI2
PWM 定时器 0 故障保护输入 2
21
PWM0_FAULTI3
PWM 定时器 0 故障保护输入 3
22
PWM0_IN8
PWM 定时器 0 输入捕获 8
23
PWM0_IN9
PWM 定时器 0 输入捕获 9
24
PWM0_IN10
PWM 定时器 0 输入捕获 10
25
PWM0_IN11
PWM 定时器 0 输入捕获 11
26
PWM0_IN12
PWM 定时器 0 输入捕获 12
27
PWM0_IN13
PWM 定时器 0 输入捕获 13
28
PWM0_IN14
PWM 定时器 0 输入捕获 14
29
PWM0_IN15
PWM 定时器 0 输入捕获 15
30
PWM0_IN16
PWM 定时器 0 输入捕获 16
31
PWM0_IN17
PWM 定时器 0 输入捕获 17
32
PWM0_IN18
PWM 定时器 0 输入捕获 18
33
PWM0_IN19
PWM 定时器 0 输入捕获 19
34
PWM0_IN20
PWM 定时器 0 输入捕获 20
互联管理器 0 输出 X0(输出至其他
TRGM)
互联管理器 0 输出 X1(输出至其他
TRGM)
PWM 定时器 0 强制输出控制同步生效
输入
PWM 定时器 0 影子寄存器生效的触发
输入
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
559/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM0_OUTPUT
MUX 编号
TRGM0_OUTPUT MUX
SOURCE 名称
电机系统概述
描述
35
PWM0_IN21
PWM 定时器 0 输入捕获 21
36
PWM0_IN22
PWM 定时器 0 输入捕获 22
37
PWM0_IN23
PWM 定时器 0 输入捕获 23
38
QEI0_A
正交编码器接口 0 A 相输入
39
QEI0_B
正交编码器接口 0 B 相输入
40
QEI0_Z
正交编码器接口 0 Z 相输入
41
QEI0_H
正交编码器接口 0 H 相输入
42
QEI0_PAUSE
正交编码器接口 0 计数器暂停
43
QEI0_SNAPI
正交编码器接口 0 快照触发输入
44
HALL0_U
霍尔传感器接口 0 U 相输入
45
HALL0_V
霍尔传感器接口 0 V 相输入
46
HALL0_W
霍尔传感器接口 0 W 相输入
47
HALL0_SNAPI
霍尔传感器接口 0 快照触发输入
48
49
50
ADC0 的序列转换触发输入以及 ADC0,
ADC0_STRGI_ADCX_PTRGI2A1, 2 的抢占转换触发输入 2A
ADC1 的序列转换触发输入以及 ADC0,
ADC1_STRGI_ADCX_PTRGI2B1, 2 的抢占转换触发输入 2B
ADC2 的序列转换触发输入以及 ADC0,
ADC2_STRGI_ADCX_PTRGI2C1, 2 的抢占转换触发输入 2C
51
DAC_BUFF_TRIGGER
DAC 的 BUFFER 模式触发输入
52
ADCX_PTRGI0A
ADC0, 1, 2 的抢占转换触发输入 0A
53
ADCX_PTRGI0B
ADC0, 1, 2 的抢占转换触发输入 0B
54
ADCX_PTRGI0C
ADC0, 1, 2 的抢占转换触发输入 0C
55
GPTMR0_SYNCI
通用定时器 0 计数器同步输入
56
GPTMR0_IN2
通用定时器 0 通道 2 输入
57
GPTMR0_IN3
通用定时器 0 通道 3 输入
58
GPTMR1_SYNCI
通用定时器 1 计数器同步输入
59
GPTMR1_IN2
通用定时器 1 通道 2 输入
60
GPTMR1_IN3
通用定时器 1 通道 3 输入
61
ACMP0_WIN
比较器 0 窗口模式输入
62
PTPC_CAP0
精确时间协议模块 PTPC 输入捕获 0
63
PTPC_CAP1
精确时间协议模块 PTPC 输入捕获 1
64
DAC_STEP_TRIGGER_IN0
DAC STEP 模式触发输入 0
65
DAC_STEP_TRIGGER_IN1
DAC STEP 模式触发输入 1
66
DAC_STEP_TRIGGER_IN2
DAC STEP 模式触发输入 2
67
DAC_STEP_TRIGGER_IN3
DAC STEP 模式触发输入 3
表 191: TRGM0_OUTPUT MUX 列表
互联管理器 1 的输出信号分配:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
560/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM1_OUTPUT
MUX 编号
TRGM1_OUTPUT MUX
SOURCE 名称
电机系统概述
描述
0
TRGM1_P0
互联管理器 1 输出 0(输出至 IO)
1
TRGM1_P1
互联管理器 1 输出 1(输出至 IO)
2
TRGM1_P2
互联管理器 1 输出 2(输出至 IO)
3
TRGM1_P3
互联管理器 1 输出 3(输出至 IO)
4
TRGM1_P4
互联管理器 1 输出 4(输出至 IO)
5
TRGM1_P5
互联管理器 1 输出 5(输出至 IO)
6
TRGM1_P6
互联管理器 1 输出 6(输出至 IO)
7
TRGM1_P7
互联管理器 1 输出 7(输出至 IO)
8
TRGM1_P8
互联管理器 1 输出 8(输出至 IO)
9
TRGM1_P9
互联管理器 1 输出 9(输出至 IO)
10
TRGM1_P10
互联管理器 1 输出 10(输出至 IO)
11
TRGM1_P11
互联管理器 1 输出 11(输出至 IO)
12
TRGM1_OUTX0
13
TRGM1_OUTX1
14
PWM1_SYNCI
PWM 定时器 1 计数器同步触发输入
15
PWM1_FRCI
PWM 定时器 1 强制输出控制输入
16
PWM1_FRCSYNCI
17
PWM1_SHRLDSYNCI
18
PWM1_FAULTI0
PWM 定时器 1 故障保护输入 0
19
PWM1_FAULTI1
PWM 定时器 1 故障保护输入 1
20
PWM1_FAULTI2
PWM 定时器 1 故障保护输入 2
21
PWM1_FAULTI3
PWM 定时器 1 故障保护输入 3
22
PWM1_IN8
PWM 定时器 1 输入捕获 8
23
PWM1_IN9
PWM 定时器 1 输入捕获 9
24
PWM1_IN10
PWM 定时器 1 输入捕获 10
25
PWM1_IN11
PWM 定时器 1 输入捕获 11
26
PWM1_IN12
PWM 定时器 1 输入捕获 12
27
PWM1_IN13
PWM 定时器 1 输入捕获 13
28
PWM1_IN14
PWM 定时器 1 输入捕获 14
29
PWM1_IN15
PWM 定时器 1 输入捕获 15
30
PWM1_IN16
PWM 定时器 1 输入捕获 16
31
PWM1_IN17
PWM 定时器 1 输入捕获 17
32
PWM1_IN18
PWM 定时器 1 输入捕获 18
33
PWM1_IN19
PWM 定时器 1 输入捕获 19
34
PWM1_IN20
PWM 定时器 1 输入捕获 20
互联管理器 1 输出 X0(输出至其他
TRGM)
互联管理器 1 输出 X1(输出至其他
TRGM)
PWM 定时器 1 强制输出控制同步生效
输入
PWM 定时器 1 影子寄存器生效的触发
输入
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
561/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM1_OUTPUT
MUX 编号
TRGM1_OUTPUT MUX
SOURCE 名称
电机系统概述
描述
35
PWM1_IN21
PWM 定时器 1 输入捕获 21
36
PWM1_IN22
PWM 定时器 1 输入捕获 22
37
PWM1_IN23
PWM 定时器 1 输入捕获 23
38
QEI1_A
正交编码器接口 1 A 相输入
39
QEI1_B
正交编码器接口 1 B 相输入
40
QEI1_Z
正交编码器接口 1 Z 相输入
41
QEI1_H
正交编码器接口 1 H 相输入
42
QEI1_PAUSE
正交编码器接口 1 计数器暂停
43
QEI1_SNAPI
正交编码器接口 1 快照触发输入
44
HALL1_U
霍尔传感器接口 1 U 相输入
45
HALL1_V
霍尔传感器接口 1 V 相输入
46
HALL1_W
霍尔传感器接口 1 W 相输入
47
HALL1_SNAPI
霍尔传感器接口 1 快照触发输入
48
49
50
ADC0 的序列转换触发输入以及 ADC0,
ADC0_STRGI_ADCX_PTRGI3A1, 2 的抢占转换触发输入 3A
ADC1 的序列转换触发输入以及 ADC0,
ADC1_STRGI_ADCX_PTRGI3B1, 2 的抢占转换触发输入 3B
ADC2 的序列转换触发输入以及 ADC0,
ADC2_STRGI_ADCX_PTRGI3C1, 2 的抢占转换触发输入 3C
51
DAC_BUFF_TRIGGER
DAC 的 BUFFER 模式触发输入
52
ADCX_PTRGI1A
ADC0, 1, 2 的抢占转换触发输入 1A
53
ADCX_PTRGI1B
ADC0, 1, 2 的抢占转换触发输入 1B
54
ADCX_PTRGI1C
ADC0, 1, 2 的抢占转换触发输入 1C
55
GPTMR2_SYNCI
通用定时器 2 计数器同步输入
56
GPTMR2_IN2
通用定时器 2 通道 2 输入
57
GPTMR2_IN3
通用定时器 2 通道 3 输入
58
GPTMR3_SYNCI
通用定时器 3 计数器同步输入
59
GPTMR3_IN2
通用定时器 3 通道 2 输入
60
GPTMR3_IN3
通用定时器 3 通道 3 输入
61
ACMP1_WIN
比较器 1 窗口模式输入
62
PTPC_CAP0
精确时间协议模块 PTPC 输入捕获 0
63
PTPC_CAP1
精确时间协议模块 PTPC 输入捕获 1
64
DAC_STEP_TRIGGER_IN0
DAC STEP 模式触发输入 0
65
DAC_STEP_TRIGGER_IN1
DAC STEP 模式触发输入 1
66
DAC_STEP_TRIGGER_IN2
DAC STEP 模式触发输入 2
67
DAC_STEP_TRIGGER_IN3
DAC STEP 模式触发输入 3
表 192: TRGM1_OUTPUT MUX 列表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
562/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
39.4.3
电机系统概述
互联管理器 DMA 请求
本章节介绍互联管理器 DMA 请求分配。TRGM 支持 4 个 DMA 请求输出,用户可以配置 TRGM,从多个 DMA
请求输入中,选择 4 个连接到 DMAMUX。
互联管理器 0 的 DMA 请求分配:
TRGM0_DMA
TRGM0_DMA MUX
MUX 编号
SOURCE 名称
0
PWM0_CMP0
1
PWM0_CMP1
2
PWM0_CMP2
3
PWM0_CMP3
4
PWM0_CMP4
5
PWM0_CMP5
6
PWM0_CMP6
7
PWM0_CMP7
8
PWM0_CMP8
9
PWM0_CMP9
10
PWM0_CMP10
11
PWM0_CMP11
12
PWM0_CMP12
13
PWM0_CMP13
14
PWM0_CMP14
15
PWM0_CMP15
16
PWM0_CMP16
描述
PWM 定时器 0 比较器 0 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 1 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 2 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 3 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 4 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 5 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 6 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 7 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 8 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 9 的输入捕获或
者输出比较匹配
PWM 定时器 0 比较器 10 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 11 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 12 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 13 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 14 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 15 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 16 的输入捕获
或者输出比较匹配
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
563/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM0_DMA
TRGM0_DMA MUX
电机系统概述
描述
MUX 编号
SOURCE 名称
17
PWM0_CMP17
18
PWM0_CMP18
19
PWM0_CMP19
20
PWM0_CMP20
21
PWM0_CMP21
22
PWM0_CMP22
23
PWM0_CMP23
24
PWM0_RLD
PWM 定时器 0 计数器重载
25
PWM0_HALFRLD
PWM 定时器 0 半周期器重载
26
PWM0_XRLD
PWM 定时器 0 扩展计数器重载
27
QEI0
正交解码器 0 的 DMA 请求
28
HALL0
霍尔传感器 0 的 DMA 请求
PWM 定时器 0 比较器 17 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 18 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 19 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 20 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 21 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 22 的输入捕获
或者输出比较匹配
PWM 定时器 0 比较器 23 的输入捕获
或者输出比较匹配
表 193: TRGM0_DMA MUX 列表
互联管理器 1 的 DMA 请求分配:
TRGM1_DMA
TRGM1_DMA MUX
MUX 编号
SOURCE 名称
0
PWM1_CMP0
1
PWM1_CMP1
2
PWM1_CMP2
3
PWM1_CMP3
4
PWM1_CMP4
5
PWM1_CMP5
6
PWM1_CMP6
描述
PWM 定时器 1 比较器 0 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 1 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 2 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 3 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 4 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 5 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 6 的输入捕获或
者输出比较匹配
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
564/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM1_DMA
TRGM1_DMA MUX
电机系统概述
描述
MUX 编号
SOURCE 名称
7
PWM1_CMP7
8
PWM1_CMP8
9
PWM1_CMP9
10
PWM1_CMP10
11
PWM1_CMP11
12
PWM1_CMP12
13
PWM1_CMP13
14
PWM1_CMP14
15
PWM1_CMP15
16
PWM1_CMP16
17
PWM1_CMP17
18
PWM1_CMP18
19
PWM1_CMP19
20
PWM1_CMP20
21
PWM1_CMP21
22
PWM1_CMP22
23
PWM1_CMP23
24
PWM1_RLD
PWM 定时器 1 计数器重载
25
PWM1_HALFRLD
PWM 定时器 1 半周期器重载
26
PWM1_XRLD
PWM 定时器 1 扩展计数器重载
27
QEI1
正交解码器 1 的 DMA 请求
28
HALL1
霍尔传感器 1 的 DMA 请求
PWM 定时器 1 比较器 7 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 8 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 9 的输入捕获或
者输出比较匹配
PWM 定时器 1 比较器 10 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 11 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 12 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 13 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 14 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 15 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 16 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 17 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 18 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 19 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 20 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 21 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 22 的输入捕获
或者输出比较匹配
PWM 定时器 1 比较器 23 的输入捕获
或者输出比较匹配
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
565/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM1_DMA
MUX 编号
TRGM1_DMA MUX
电机系统概述
描述
SOURCE 名称
表 194: TRGM1_DMA MUX 列表
39.4.4
互联管理器数字滤波器
本章节介绍互联管理器数字滤波器和输入信号对应情况。
互联管理器 0 的数字滤波器分配:
TRGM0_FILTER
MUX 编号
TRGM0_FILTER MUX
描述
SOURCE 名称
0
PWM0_IN0
PWM 定时器 0 输入捕获 0
1
PWM0_IN1
PWM 定时器 0 输入捕获 1
2
PWM0_IN2
PWM 定时器 0 输入捕获 2
3
PWM0_IN3
PWM 定时器 0 输入捕获 3
4
PWM0_IN4
PWM 定时器 0 输入捕获 4
5
PWM0_IN5
PWM 定时器 0 输入捕获 5
6
PWM0_IN6
PWM 定时器 0 输入捕获 6
7
PWM0_IN7
PWM 定时器 0 输入捕获 7
8
TRGM0_IN0
互联管理器 0 输入 0
9
TRGM0_IN1
互联管理器 0 输入 1
10
TRGM0_IN2
互联管理器 0 输入 2
11
TRGM0_IN3
互联管理器 0 输入 3
12
TRGM0_IN4
互联管理器 0 输入 4
13
TRGM0_IN5
互联管理器 0 输入 5
14
TRGM0_IN6
互联管理器 0 输入 6
15
TRGM0_IN7
互联管理器 0 输入 7
16
TRGM0_IN8
互联管理器 0 输入 8
17
TRGM0_IN9
互联管理器 0 输入 9
18
TRGM0_IN10
互联管理器 0 输入 10
19
TRGM0_IN11
互联管理器 0 输入 11
表 195: TRGM0_FILTER MUX 列表
互联管理器 1 的数字滤波器分配:
TRGM1_FILTER
MUX 编号
TRGM1_FILTER MUX
描述
SOURCE 名称
0
PWM1_IN0
PWM 定时器 1 输入捕获 0
1
PWM1_IN1
PWM 定时器 1 输入捕获 1
2
PWM1_IN2
PWM 定时器 1 输入捕获 2
3
PWM1_IN3
PWM 定时器 1 输入捕获 3
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
566/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRGM1_FILTER
MUX 编号
TRGM1_FILTER MUX
电机系统概述
描述
SOURCE 名称
4
PWM1_IN4
PWM 定时器 1 输入捕获 4
5
PWM1_IN5
PWM 定时器 1 输入捕获 5
6
PWM1_IN6
PWM 定时器 1 输入捕获 6
7
PWM1_IN7
PWM 定时器 1 输入捕获 7
8
TRGM1_IN0
互联管理器 1 输入 0
9
TRGM1_IN1
互联管理器 1 输入 1
10
TRGM1_IN2
互联管理器 1 输入 2
11
TRGM1_IN3
互联管理器 1 输入 3
12
TRGM1_IN4
互联管理器 1 输入 4
13
TRGM1_IN5
互联管理器 1 输入 5
14
TRGM1_IN6
互联管理器 1 输入 6
15
TRGM1_IN7
互联管理器 1 输入 7
16
TRGM1_IN8
互联管理器 1 输入 8
17
TRGM1_IN9
互联管理器 1 输入 9
18
TRGM1_IN10
互联管理器 1 输入 10
19
TRGM1_IN11
互联管理器 1 输入 11
表 196: TRGM1_FILTER MUX 列表
39.5
同步定时器 SYNT
本产品支持 1 个同步定时器 SYNT,SYNT 支持 32 位计数器,和 4 个输出比较通道,输出信号连接到本产
品上的 2 个电机控制单元 TRGM 的输入。用作各个电机控制单元内外设的同步。
同步定时器 SYNCT 的输出信号连接,请查阅小节 39.4.1。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
567/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
PWM 定时器 PWM
40
本章节介绍本产品 PWM 定时器的主要功能和特性。
特性总结
40.1
本章节介绍 PWM 控制器的主要特性:
● 28 (24 +4) 位分辨率计数器,支持向上计数模式
● 支持计数器同步
● 多达 24 个比较器,支持用作输出比较,或者输入捕获
● 多达 24 个通道,其中通道 0∼7 可用于 PWM 输出
– 支持 8 路独立或者 4 对互补 PWM 输出
– 互补 PWM 支持死区插入,支持独立配置双侧死区宽度
– 支持把 PWM 输出强制设置为指定状态
– 支持故障保护输入,在出错时(如故障保护输入时)
,单独配置每个 PWM 输出通道的状态
● 支持为每个输出通道灵活地分配数目不等的比较器,灵活控制输出信号,生成例如边沿对齐 PWM、左右
不对称的中央对齐 PWM 以及更复杂的输出信号
● 支持生成各类 DMA 请求和中断请求
● 部分寄存器配有影子寄存器,支持灵活的寄存器新值更新/生效时机
PWM 的框图如图 64。
SYNCI
SHSYNCI
定时器时间基准
.......
PWM输出控制
CH7REF
CH8REF
输出通道
FAULTE0~1
.......
比较器
.......
.......
匹
配
M
U
X
FAULTI0~3
IN8
OUT7
FRCSYNCI
FRCI
IN7
IN23
OUT0
CH0REF
.......
OC0
OC1
.......
IN0
OC23
CH23REF
图 64: PWM 定时器框图
40.2
功能描述
本章节描述 PWM 定时器各个子模块的功能。
40.2.1
定时器时间基准
定时器时间基准模块的作用是决定 PWM 定时器运行的时间和周期。
它包含以下几部分:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
568/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
● 计数器,计数器包括计数器和扩展计数两部分,计数器 24 位,扩展 4 位。可以合并成 28 位计数器使用
● 起始寄存器,可以设置计数器起始值和扩展起始值
● 重载寄存器,可以设置计数器重载值和扩展重载值
31
28 27
43
XCNT
31
CNT
4‘b0000
28 27
43
XSTA
31
0
0
STA
4‘b0000
28 27
43
XRLD
0
RLD
4‘b0000
图 65: PWM 的时间基准模块
计数器是一个由 24 位计数器(CNT)和 4 位扩展计数器(XCNT)组成,可以扩展为 28 位计数器。
起始寄存器STA可以设置 24 位计数器的起始值(STA),以及 4 位扩展计数器的起始值(XSTA)。
重载寄存器RLD可以设置 24 位计数器的重载值(RLD),以及 4 位扩展计数器的重载值(XRLD)。
计数器,起始寄存器和重载寄存器分别占用 32 位的寄存器空间,其中低 4 位为 0。
计时器支持向上计数。
计数器使能 (GCR[CEN] 位置 1) 以后,总是从起始值开始计数,当计时器的值(CNT)计数至重载值(RLD)
后,重载标志RLDF位置 1,此时,扩展计数器值 +1,计数器的值恢复到起始值(STA)
。当扩展计数器值(XCNT)
也计数到扩展重载值(XRLD)后,重载标志XRLDF位置 1,扩展计数器恢复到起始值。
如果把计数器起始值设置为 0,重载值设置为 x,实际定时器的计时周期为 x+1 个时钟周期。如果把计数器
起始值 STA 设置为 24’h000000,重载值 RLD 设置为 24’hFFFFFF, 扩展起始值 XSTA 设置为 4’h0,扩展重载值
XRLD 设置为 4’hF。效果等同于把计数器由 24 位扩展为 28 位。
Clock
CNT
XCNT
0
1
2
3
4
5
0
0
1
2
3
4
5
0
1
RLD flag clear
RLD flag
RLD = 5
XRLD flag
XRLD = 1
图 66: PWM 计数器计数与重载、扩展重载标志位置位示意图
用户配置完成STA和RLD寄存器后,将GCR[CEN] 位置 1,计数器 CNT 开始计数。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
569/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
用户也可以利用 PWM 定时器的同步触发输入(SYNCI)来同步计数器开始计数的时机。用户可以配置GCR
[RLDSYNCEN] 和 GCR [XRLDSYNCEN] 位来选择是否打开外部同步。GCR [RLDSYNCEN] 位置 1 时,同步触
发输入(SYNCI)可以重置计数器到起始值(CNT = STA)
,重载标志位RLDF置 1。如果GCR [RLDSYNCEN] 位置
1,计数器的扩展位会重置到起始值的扩展位(XCNT = XSTA)
,扩展重载标志位 XRLDF 也会置 1。需要注意的是,
PWM 定时器的同步触发输入(SYNCI)在捕获到高电平时生效,但用户在配置 TRGM 的 TRGOCFG[PWMS Y NCI]
多电机协同工作时,可以使用同步定时器 SYNT,产生同步脉冲,让多个 PWM 同时开始计数,或者间隔指
定的时间开始计数。
计数器模块还支持一个半重载标志位HALFRLDF,当计数器计数达到(RLD - STA)一半时(注意,不包括
XRLD 和 XSTA),该位置 1。
控制模块管理如下标志位
● RLDF:当计数器(不包括扩展计数位)计数至重载寄存器的值时该位置 1,或者由 SYNCI 将计数器重
置时,该位也置 1
● XRLDF:当扩展计数器扩展计数位计数至扩展重载计数位时,该位置 1,或者由 SYNCI 将计数器重置
时,该位也置 1
● HALFRLDF:当计数器计数至起始值和重载值中间时,该位置 1
40.2.2
PWM 生成
PWM 生成需要配合使用比较器和通道,主要功能是以通道为单位,利用比较器组合生成输出参考信号。
如下图所示,PWM 生成模块包括 24 个比较器和 24 个输出通道。
其中通道 0 到通道 7 是 PWM 输出通道,通道输出 CH0REF ∼ CH7REF 连接到 PWM 控制逻辑,如互补控
制,死区生成,故障保护等模块。最终输出信号 OUT0∼OUT7 到芯片的管脚上。
通道 8 及之后的通道是通用输出通道,这些通道的输出参考信号不经过 PWM 控制逻辑,也可以输出信号供
内外部使用。
比较器0 OC0
通道0
CH0REF
比较器1
OC1
通道1
CH1REF
比较器2
通道2
CH2REF
OC2
通道3
CH3REF
通道4
CH4REF
通道5
CH5REF
通道6
CH6REF
通道7
CH7REF
比较器3
OC3
比较器4
OC4
比较器5
OC5
比较器6
OC6
比较器7
OC7
匹
配
OC22
比较器23
OC23
匹
配
PWM2/3
控制
PWM4/5
控制
PWM6/7
控制
......
......
......
比较器22
PWM0/1
控制
通道22
CH22REF
通道23
CH23REF
图 67: PWM 定时器的 PWM 生成模块
PWM 定时器的 24 个比较器,
当它们用于 PWM 生成时,
需要配置为输出比较模式(把 CMPCFGx[CMPMODE]
位置 0)。此时,当计数器的值等于比较寄存器的值时,产生匹配事件。注意比较器和计时器一样,包含 24 位比
较位(CMP)和 4 位扩展比较位(XCMP)。可以设置CMPCFGx[XCNTCMPEN] 位,选择 4 位扩展位是否参与
比较。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
570/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
● 当XCNTCMPEN[3:0] 位都置 0 时,4 位扩展比较位不参与比较。24 位计数器计数达到 24 位比较位,即
CNT == CMPx,产生匹配事件
● 当XCNTCMPEN[3:0] 位中某一位或者某几位置 1 时,对应的扩展比较位会和计时器的对应扩展计数位
比较。比如XCNTCMPEN[3:0] = 4’b1111 时,4 位扩展计数位达到 4 位扩展比较位,并且 24 位计数器计
数达到 24 位比较位,即 XCNT == XCMP && CNT == CMP,产生匹配事件。
比较器寄存器还包含 4 位为小数比较位(CMPHLF和CMPJIT)
,设置这些位可以使得比较寄存器生成匹配事
件的精度小于一个 PWM 定时器时钟周期。CMPHLF是半周期比较位,由 PWM 定时器时钟的下边沿实现,该位
置 1,可以使匹配事件的生成时间延后 1/2 时钟周期。CMPJIT是抖动比较位,由 4,8,16 个周期边沿抖动,平
均后实现精度达 1/4,1/8 和 1/16 时钟周期的延时效果。
28 27
XCNT
31
43
0
CNT
28 27
XCMPx
4‘b0000
4
CMPx
3
CMPHLF
31
2
0
CMPJIT
图 68: PWM 比较器对应计数器位域图
用户可以把一个或者多个连续的比较器分配给某个通道,
实现灵活复杂的输出。
用户通过设置 CHCFGx [CMPSELBEG] 位,选择分配给通道 x 的比较寄存器起始序号。通过设置 CHCFGx [CMPSELEND] 位,选择分配给通道 x
的比较寄存器末尾序号。
一个比较器可以同时分配给多个通道。
例如,以下是某个应用的配置,有 3 个 pwm 输出和两个控制信号输出:
设置 CHCFG[0][CMPSELBEG] = 5’b00000,CHCFG[0][CMPSELEND] = 5’b00010,表示把比较寄存器 0∼2
分配给通道 0。
设置 CHCFG[1][CMPSELBEG] = 5’b00011,CHCFG[1][CMPSELEND] = 5’b00011,表示把比较寄存器 3 分
配给通道 1。
设置 CHCFG[5][CMPSELBEG] = 5’b00100,CHCFG[5][CMPSELEND] = 5’b00111,表示把比较寄存器 4∼7
分配给通道 5。
设置 CHCFG[8][CMPSELBEG] = 5’b00100,CHCFG[8][CMPSELEND] = 5’b00101,表示把比较寄存器 4∼5
分配给通道 8。
设置 CHCFG[9][CMPSELBEG] = 5’b00111,CHCFG[9][CMPSELEND] = 5’b00111,表示把比较寄存器 7 分
配给通道 9。
当计数器 CNT 计数达到比较器 CMPx 配置的CMP或者XCMP时,产生匹配事件,此时 OCx 输出置逻辑 1。
当计数器 CNT 值到达重载寄存器,发生重载事件,输出重置逻辑 0。
如果比较器值 CMPx 等于重载值 RLD,OCx 会保持输出逻辑 1。因此设置 CMPx = RLD 可用来生成 100%
占空比的 PWM 输出。
当比较器值大于重载值,即 CMPx > RLD,由于计数器值 CNT 始终达不到 CMPx,比较器输出 OCx 会保持
逻辑 0。
注意: 比较器的输出 OCx 为 PWM 信号,PWM 的占空比由 CMPx 和 RLD 共同决定,设置 CMPx == RLD 可以得到占空比
100% 的 PWM,设置 CMPx > RLD 可以得到占空比 0% 的 PWM。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
571/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
Clock
CNT
0
1
2
3
4
5
0
1
OC0, CMP0 = 0
OC1, CMP1 = 2
OC2, CMP2 = 5
OC3, CMP3 > 5
RLD, RLD =5
XRLD = 0
图 69: PWM 计数器计数与重载、扩展重载标志位置位示意图
通道 x 的输出参考信号 CHxREF,由分配给它的全部比较器输出 OCBEG ∼OCEND 异或后得到。即
CHxREF = OC BEG ⊕ OC BEG+1 ⊕ OC BEG+2 ⊕ · · · ⊕ OC END
40.2.3
PWM 生成举例
本章节给出几个通过配置比较器,结合输出通道生成特定 PWM 输出的例子。
以下是在通道 0(CH0REF)和通道 1(CH1REF)输出上生成边沿对齐 PWM 的例子。
分配比较器 0 到通道 0,即 CHCFG0[CMPSELBEG] = 0,CHCFG0[CMPSELEND] = 0
分配比较器 1 到通道 1,即 CHCFG1[CMPSELBEG] = 1,CHCFG1[CMPSELEND] = 1
设置比较器 0∼1 为电平输出模式。设置比较器 0∼1 的值 S T A < CMP0 < CMP1 < RLD。以此可以得到
CH0REF,CH1REF 输出如图 70:
CMP0 CMP1
RLD
CMP0
CMP1
RLD
STA
CH0REF
CH1REF
OC0
OC1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
572/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
图 70: 边沿对齐 PWM 生成示例图
以下是在通道 0(CH0REF)和通道 1(CH1REF)输出上生成中心对齐相移 PWM 的例子。
分配比较器 0,1 到通道 0,即 CHCFG0[CMPSELBEG] = 0,CHCFG0[CMPSELEND] = 1
分配比较器 2,3 到通道 1,即 CHCFG1[CMPSELBEG] = 2,CHCFG1[CMPSELEND] = 3
设置比较器 0∼3 为电平输出模式。
设置比较器 0∼3 的值 S T A < CMP2 < CMP0 < CMP3 < CMP1 < RLD。以此可以得到 CH0REF,CH1REF
输出如图 71:
CMP2 CMP0 CMP3 CMP1 RLD CMP2 CMP0 CMP3 CMP1 RLD
STA
CH0REF
CH1REF
OC0
OC1
OC2
OC3
图 71: 中心对齐相移 PWM 生成示例图
以下是在通道 0(CH0REF)输出上生成双翻转 PWM 的例子。
分配比较器 0 ∼ 比较器 3 到通道 0,即 CHCFG0[CMPSELBEG] = 0,CHCFG0[CMPSELEND] = 3。
设置比较器 0∼3 为电平输出模式。
设置比较器 0∼3 的值 S T A < CMP0 < CMP1 < CMP2 < CMP3 < RLD。
以此可以得到 CH0REF 输出如图 72:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
573/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
CMP0 CMP1 CMP2 CMP3 RLD CMP0 CMP1 CMP2 CMP3 RLD
STA
CH0REF
OC0
OC1
OC2
OC3
图 72: 双翻转 PWM 生成示例图
40.2.4
PWM 输出控制概述
PWM 输出通道(通道 0∼7)的参考信号(CH0REF∼CH7REF)经过后续的互补控制,死区插入,取反控制,
强制输出,故障保护后,形成输出信号(OUT0∼OUT7)到 IO。这些 PWM 控制逻辑可以通过 PWMCFG[x] 和
CHCFG[x] 寄存器内的控制位配置。
PWM 控制逻辑,以相邻的一对 PWM 输出为例,如图 73所示。
CHCFG[x][OUTPOL]
CHCFG[x+1][OUTPOL]
PWMCFG[x][PAIR]
PWMCFG[x+1][PAIR]
通道x
CHxREF
通道x+1
CHx+1REF
互补控制
死区插入
取反控制
强制输出
故障保护
PWMx/x+1
PWMCFG[x][DEADAREA]
PWMCFG[x+1][DEADAREA]
图 73: PWM 输出控制示例图
40.2.5
PWM 互补控制
PWM 定时器支持生成成对的互补 PWM 输出。当把寄存器 PWMCFGx[PAIR] 位置 1 时,可以把 PWM0 和
PWM1,PWM2 和 PWM3,PWM4 和 PWM5,PWM6 和 PWM7 设置为互补的 PWM 输出。注意,一定把成对
的 PWMCFGx[PAIR] 寄存器位都置 1,互补输出才会生效。一旦设置成 PWM 互补输出,偶数序号的 PWM 通道
配置会生效,奇数序号的 PWM 通道输出为偶数通道的输出取反。
比如,当 PWM0 和 PWM1 配置为互补输出时,PWM0 输出(OUT0)为通道 0 的输出参考信号(CH0REF)
,
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
574/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
PWM1(OUT1)则是 PWM0 取反。
40.2.6
死区控制
PWM 定时器配置成输出一对互补的 PWM 输出时,用户可以通过死区控制模块,在成对的输出参考信号的
翻转之间插入一定的延时,避免受 PWM 输出控制的外部开关同时导通。
PWM 定时器允许用户在 2 路互补的参考信号上插入的不同的延时。这样用户可以根据片外开关器件的特性,
优化死区时间。
用户可以通过配置 PWMCFGx[DEADAREA] 位来配置死区的长度,必须同时配置成对的通道 x 和通道 x+1
寄存器才能正确地生成死区。
例如,当把 PWM 输出 0 和输出 1 配置成互补的 PWM 输出时,需要配置:PWMCFG0[DEADAREA] 可以把
通道 0 参考信号的每一个上升沿推迟若干个时钟周期。PWMCFG1[DEADAREA] 可以把通道 1 参考信号的每一
个上升沿推迟若干个时钟周期。
注意,PWMCFGx[DEADAREA] 配置死区长度的单位是 0.5 个 PWM 定时器时钟周期。死区支持的最小长度是 1 个时
钟周期。
即:PWMCFGx[DEADAREA] = 20’h00003,表示死区长度为 1.5 个时钟周期
PWMCFGx[DEADAREA] = 20’h000A0,表示死区长度为 80 个时钟周期
PWM0
PWM1
PWM0+死区
PWM1+死区
PWMCFG0[DEADAREA]
PWMCFG1[DEADAREA]
图 74: PWM 死区控制示意图
40.2.7
输出取反
外部器件打开以及关断所需要的可以是高电平也可以是低电平。为了适应各种外部器件,PWM 定时器的全
部通道输出可以通过设置 CHCFGx[OP] 位,来配置输出极性:
● 置 0 时,输出为 CHxREF 不变
● 置 1 时,输出为 CHxREF 取反
40.2.8
强制输出控制
强制输出控制模块可以作用于通道 0∼7 的参考信号,允许用户把参考信号配置成指定的状态。此模块可以方
便生成驱动 BLDC 电机需要的 6 步换相 PWM 输出。
通过配置 PWMCFGx[FRCSRCSEL] 位,可以自由选择 PWM 输出 0∼7 强制调试是由硬件触发还是由软件触
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
575/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
发
● 该位置 0 时,表示 PWM 输出 x 强制输出由外部输入 FRCI 控制,可以通过 GCR[FRCPOL] 位选择 FRCI
的有效极性,GCR[FRCPOL] = 1’b0,表示 FRCI 逻辑 1 有效,否则逻辑 0 有效。
● 该位置 1 时,并且软件将 GCR[SWFRC] 位置 1 时,强制输出有效。
通过配置寄存器 GCR[FRCTIME],用户可以选择输出生效的时机。
● 2’b00,即时生效
● 2’b01,强制输出在使能后,计数器重载标志位 RLD 置 1 时生效
● 2’b10,强制输出在使能后,同步输入触发(FRCSYNCI)上捕获到上升沿时生效
● 2’b11,强制输出不生效
注意,GCR[FRCTIME] 同样控制强制输出失效的时机。即强制输出关闭后,输出失效的时机也由其控制。
通过配置寄存器 FRCMD[MODEx],可以配置强制输出生效时,通道 0∼7 输出的状态:
● 2’b00,强制输出逻辑 0
● 2’b01,强制输出逻辑 1
● 2’b10,关闭输出,引脚变为高阻 HiZ
● 2’b11,不进行强制输出,即输出保持通道 x 的参考信号 CHxREF 不变
注意,FRCMD 寄存器配备有影子寄存器,直接写 FRCMD 寄存器并不一定会立即生效。如果用户希望改变某个 PWM
输出的强制输出状态,比如从强制输出逻辑 0 改为输出逻辑 1,其生效时间由PWMCFG[x] [FRCSHDWUPT] 决定,具
体请参考小节 40.2.12。
故障保护
40.2.9
PWM 定时器允许用户在紧急情况下实时快速地切断 PWN 输出信号。
PWM 定时器支持内外部共 6 个故障保护输入信号,其中 4 个内部故障输入信号(FAULTI0∼FAULTI3),和
2 个外部故障输入信号(FAULTE0,FAULTE1)。
PWM 定时器外部故障输入信号(FAULTE0,FAULTE1),在 PWM 定时器时钟丢失的情况下,也可以发挥
作用。用户可以设置 GCR[FAULTExPOL] 位来选择外部故障输入信号是逻辑 1 生效,还是逻辑 0 生效。
● 1’b0,FAULTEx 逻辑 1 时生效
● 1’b1,FAULTEx 逻辑 0 时生效
用户可以通过配置 GCR[FAULTExEN] 位,打开或者关闭 PWM 定时器的外部故障输入:
● 1’b0,关闭故障保护,PWM 输出不响应外部故障输入信号 x(FAULTEx)
● 1’b1,使能故障保护,按照 GCR[FAULTExPOL] 位的设置,在故障输入信号(FAULTIx)为逻辑 1 或者
逻辑 0 时生效
用户可以通过配置 GCR[FAULTIxEN] 位,打开或者关闭 PWM 定时器的内部故障输入。
● 1’b0,关闭故障保护,PWM 输出不响应内部故障输入信号 x(FAULTIx)
● 1’b1,使能故障保护,内部故障输入在逻辑 1 时生效
在故障输入生效时,PWM 定时器可以把通道 0∼ 通道 7 的输出(OUT0 ∼ OUT7)强制到某个安全的既定状
态。
用户可以选择打开一个或者多个乃至全部故障输入信号。在打开的故障输入中,任意一个生效时,故障保护
即有效。
通过配置 PWMCFGx[FAULTMODE],PWM0∼7 输出都可以独立配置为:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
576/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
● 2’b0x,当故障发生时,关闭输出,引脚变为高阻 HiZ
● 2’b10,当故障发生时,输出变为逻辑 0
● 2’b11,当故障发生时,输出变为逻辑 1
一旦故障发生,那么在系统状态变化之前,PWM 输出都不会恢复。
用户可以通过设置 PWMCFGx[FAULTRECTIME],选择 PWM 恢复的时机:
● 2’b00,故障恢复后,立即输出恢复。
● 2’b01,故障恢复后,计数器重载标志位 RLD 置 1 时输出恢复。
● 2’b10,故障恢复后,计数器与某一个 CMP 发生匹配后输出恢复,可以通过 GCR [FAULTRECHWSEL]
位从 24 个比较器选择其一,作为故障恢复时机。
● 2’b11,故障恢复后,软件将 GCR[FAULTCLR] 位置 1 后输出恢复注意,故障消除后建议将 FAULTCLR
再清 0,否则下次故障发生并恢复后,PWM 会由于 FAULTCLR 位置 1 而自动恢复。
40.2.10
Debug 模式支持
PWM 定时器允许用户进入调试模式时,断开 PWM 输出,以此来保护外部功率器件。
可以设置 GCR[DEBUGFAULT] 位,该位置 1 时,一旦芯片进入调试模式(Debug 模式)
,PWM 输出状态会
如同故障保护一样,强制到指定的状态。管脚的具体状态如同故障保护,由 PWMCFGx[FAULTMODE] 位的设置
决定。
输入捕获模块
40.2.11
PWM 定时器的各个比较器,也可以用作输入捕获模式。
注意,一旦某个比较器配置为输入捕获模式,它就不能再被分配给通道,用作输出。
用户可以配置 CMPCFGx[CMPMODE] 位来选择比较器的工作模式:
● 1’b0,输出比较模式,比较器可以被分配给通道,用作输出
● 1’b1,输入捕获模式,此时,比较器用来捕获输入信号的翻转,并在翻转时保存计数器的值(CNT 和
XCNT)。
把比较器配置成输入捕获模式后,用户可以从寄存器 CAPPOSx 寄存器读取到 CMPx 在信号(INx)上升沿
捕获到的计数器值;在 CAPNEGx 寄存器读取到 CMPx 在下降沿捕获到的计数器值。CAPPOSx 和 CAPNEGx 寄
存器即会保存计数器寄存器的 24 位计数器(CNT)值,也会保存 4 位扩展计数器(XCNT)值。
注意,CAPPOSx 寄存器和 CAPNEGx 寄存器的值在捕获到新的边沿时会刷新,之前捕获的值会丢失。
40.2.12
影子寄存器
PWM 定时器的部分寄存器支持影子寄存器(shadow register)
。影子寄存器的作用是为定时器的部分关键寄
存器提供读写接口。在处理器访问寄存器的时候,实质上改变的是它的影子寄存器,新值并不马上生效。只有在
用户指定的时刻,才把影子寄存器的值更新到寄存器,并以此改变 PWM 定时器的工作状态。
PWM 定时器的以下三组寄存器支持影子寄存器:
● 计数器的起始寄存器 STA(包括 STA/XSTA)和重载寄存器 RLD(包括 RLD/XRLD)
● 比较器 CMPx,当其在用作输出比较时
● 控制寄存器中的 FRCMD[FRCMD] 位,即通道 0∼7(PWM 通道)的强制输出控制模式位
以上这些寄存器和寄存器位,用户对它们进行写操作的时候,是不会即刻生效的。需要等到某个指定的时刻,
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
577/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
统一生效。
对于计数器的起始寄存器 STA 和计数器的重载寄存器 RLD,它们的影子寄存器值(包括 STA,XSTA,RLD,
XRLD)生效时间可以通过 SHCR[CNTSHDWUPT] 位设置:
● 2’b00,由软件把 SHLK [SHLK] 位置 1 后生效
● 2’b01,实时生效,在寄存器写之后,一个周期内生效
● 2’b10,定时器的某一个 CMP 发生匹配后生效,用户可以通过 SHCR [CNTSHDWSEL] 从比较器 0∼23
中选择一个,匹配可以是该比较器的输出比较,也可以是输入捕获。用户可以选择把选中的比较器 CMPx
的值设为与 RLD 或 xRLD 相等,达到一个完整的 PWM 周期后更新影子寄存器的目的。
● 2’b11,
影子寄存器重载触发输入 SHRLDSYNCI 上捕获到高电平时生效。
用户在配置 TRGM 的 TRGOCFG[PWMS HRLDS Y NCI
PWM 定时器的比较器 CMPx,它们的影子寄存器值生效时刻可以通过 CMPCFGx[CMPSHDWUPT] 位设置:
● 2’b00,由软件把 SHLK [SHLK] 位置 1 后生效
● 2’b01,实时生效,在寄存器写之后,一个周期内生效
● 2’b10,定时器的某一个 CMP 发生匹配后生效,用户可以通过 GCR [CMPSHDWSEL] 从比较器 0∼23 中
选择一个,匹配可以是该比较器的输出比较,也可以是输入捕获。用户可以选择把选中的比较器 CMPx
的值设为与 RLD 或 xRLD 相等,达到一个完整的 PWM 周期后更新影子寄存器的目的。
● 2’b11,
影子寄存器重载触发输入 SHRLDSYNCI 上捕获到高电平时生效。
用户在配置 TRGM 的 TRGOCFG[PWMS HRLDS Y NCI
注意,在 PWM 定时器工作过程中,如果通过更新比较器 CMPx 来实时改变 PWM 输出波形占空比,推荐用户将 CMPx
的 CMPCFGx[CMPSHDWUPT] 位配置为 2’b10 或者 2’b11,即由硬件指定 CMPx 的影子寄存器的生效时刻。避免软
件在不恰当的时机更改配置,导致输出波形异常。
通道 0∼7(PWM 通道)的强制输出模式位的影子寄存器位生效时间,可以通过 PWMCFGx[FRCSHUPT] 位
设置:
● 2’b00,由软件把 SHLK[SHLK] 位置 1 后生效
● 2’b01,实时生效,在寄存器写之后,一个周期内生效
● 2’b10,定时器的某一个 CMP 发生匹配后生效,用户可以通过 SHCR [FRCSHDWSEL] 从比较器 0∼23
中选择一个,匹配可以是该比较器的输出比较,也可以是输入捕获。用户可以选择把选中的比较器 CMPx
的值设为与 RLD 或 xRLD 相等,达到一个完整的 PWM 周期后更新影子寄存器的目的。
● 2’b11,
影子寄存器重载触发输入 SHRLDSYNCI 上捕获到高电平时生效。
用户在配置 TRGM 的 TRGOCFG[PWMS HRLDS Y NCI
此外,影子寄存器支持写保护,用户可以把 SHCR[SHLKEN] 位置 1,之后把 SHclk[SHLK] 位也置 1。这样,
软件对任意影子寄存器的写操作都无效。
用户可以通过对 UNLK 寄存器写入神奇代码 0xB0382607 来解锁影子寄存器。解锁之后,可以恢复对所有影
子寄存器的写操作。
用户在更新多个影子寄存器的过程中,有可能软件或 DMA 只更新了部分影子寄存器,影子寄存器的生效时
刻已到,导致出错。用户可以通过以下操作步骤避免这种情况:
● 把 SHCR[SHLKEN] 位置 1,之后把 SHLK[SHLK] 位也置 1,打开影子寄存器写保护
● 对 UNLK 寄存器写入神奇代码 0xB0382607 来解锁影子寄存器的写保护
● 更新所有需要更新的影子寄存器
● 再把 SHCR[SHLK] 位置 1,此时,重新锁定影子寄存器写保护。
● 之后在下一个影子寄存器生效事件发生时,新的寄存器值生效。注意,如果把生效时机控制位设为 2’b00,
即由软件把 SHLK[SHLK] 位置 1 后生效,那么用户要再把 SHLK[SHLK] 位置 1 一次,使影子寄存器新
值生效。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
578/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
中断和 DMA
40.2.13
PWM 定时器支持生成以下中断:
● RLD 当重载事件产生时,即计数器计数达到重载寄存器值,或者由同步触发输入 SYNCI 引发计数器重
载
● XRLD:当扩展计数器扩展计数位计数至扩展重载计数位时,该位置 1,或者由 SYNCI 将计数器重置时
● HALFRLD:当计数器计数至起始寄存器到重载寄存器的中间时
● 当比较器设置为输出比较,发生匹配事件时
● 当比较器设置为输入捕获,并在输入通道捕获到指定边沿跳变时
● 故障保护生效时
PWM 定时器支持生成以下 DMA 请求:
● RLD 当重载事件产生时,即计数器计数达到重载寄存器值,或者由同步触发输入 SYNCI 引发计数器重
载
● XRLD:当扩展计数器扩展计数位计数至扩展重载计数位时,该位置 1,或者由 SYNCI 将计数器重置时
● HALFRLD:当计数器计数至起始寄存器到重载寄存器的中间时
● 当比较器设置为输出比较,发生匹配事件时
● 当比较器设置为输入捕获,并在输入通道捕获到指定边沿跳变时
40.3
PWM 寄存器
PWM 的寄存器列表如下:
PWM0 base address: 0xF0200000
PWM1 base address: 0xF0210000
地址偏移
名称
描述
复位值
0x0000
UNLK
影子寄存器解锁寄存器
0x00000000
0x0004
STA
计数器起始值寄存器
0x00000000
0x0008
RLD
计数器重载值寄存器
0x00000000
0x000C
CMP[0]
比较器寄存器
0x00000000
0x0010
CMP[1]
比较器寄存器
0x00000000
0x0014
CMP[2]
比较器寄存器
0x00000000
0x0018
CMP[3]
比较器寄存器
0x00000000
0x001C
CMP[4]
比较器寄存器
0x00000000
0x0020
CMP[5]
比较器寄存器
0x00000000
0x0024
CMP[6]
比较器寄存器
0x00000000
0x0028
CMP[7]
比较器寄存器
0x00000000
0x002C
CMP[8]
比较器寄存器
0x00000000
0x0030
CMP[9]
比较器寄存器
0x00000000
0x0034
CMP[10]
比较器寄存器
0x00000000
0x0038
CMP[11]
比较器寄存器
0x00000000
0x003C
CMP[12]
比较器寄存器
0x00000000
0x0040
CMP[13]
比较器寄存器
0x00000000
0x0044
CMP[14]
比较器寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
579/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
PWM 定时器 PWM
名称
描述
复位值
0x0048
CMP[15]
比较器寄存器
0x00000000
0x004C
CMP[16]
比较器寄存器
0x00000000
0x0050
CMP[17]
比较器寄存器
0x00000000
0x0054
CMP[18]
比较器寄存器
0x00000000
0x0058
CMP[19]
比较器寄存器
0x00000000
0x005C
CMP[20]
比较器寄存器
0x00000000
0x0060
CMP[21]
比较器寄存器
0x00000000
0x0064
CMP[22]
比较器寄存器
0x00000000
0x0068
CMP[23]
比较器寄存器
0x00000000
0x0078
FRCMD
强制输出模式寄存器
0x00000000
0x007C
SHLK
影子寄存器锁定寄存器
0x00000000
0x0080
CHCFG[0]
输出通道配置寄存器
0x00000000
0x0084
CHCFG[1]
输出通道配置寄存器
0x00000000
0x0088
CHCFG[2]
输出通道配置寄存器
0x00000000
0x008C
CHCFG[3]
输出通道配置寄存器
0x00000000
0x0090
CHCFG[4]
输出通道配置寄存器
0x00000000
0x0094
CHCFG[5]
输出通道配置寄存器
0x00000000
0x0098
CHCFG[6]
输出通道配置寄存器
0x00000000
0x009C
CHCFG[7]
输出通道配置寄存器
0x00000000
0x00A0
CHCFG[8]
输出通道配置寄存器
0x00000000
0x00A4
CHCFG[9]
输出通道配置寄存器
0x00000000
0x00A8
CHCFG[10]
输出通道配置寄存器
0x00000000
0x00AC
CHCFG[11]
输出通道配置寄存器
0x00000000
0x00B0
CHCFG[12]
输出通道配置寄存器
0x00000000
0x00B4
CHCFG[13]
输出通道配置寄存器
0x00000000
0x00B8
CHCFG[14]
输出通道配置寄存器
0x00000000
0x00BC
CHCFG[15]
输出通道配置寄存器
0x00000000
0x00C0
CHCFG[16]
输出通道配置寄存器
0x00000000
0x00C4
CHCFG[17]
输出通道配置寄存器
0x00000000
0x00C8
CHCFG[18]
输出通道配置寄存器
0x00000000
0x00CC
CHCFG[19]
输出通道配置寄存器
0x00000000
0x00D0
CHCFG[20]
输出通道配置寄存器
0x00000000
0x00D4
CHCFG[21]
输出通道配置寄存器
0x00000000
0x00D8
CHCFG[22]
输出通道配置寄存器
0x00000000
0x00DC
CHCFG[23]
输出通道配置寄存器
0x00000000
0x00F0
GCR
全局控制寄存器
0x00000000
0x00F4
SHCR
影子寄存器控制寄存器
0x00000000
0x0100
CAPPOS[0]
上升沿捕获寄存器
0x00000000
0x0104
CAPPOS[1]
上升沿捕获寄存器
0x00000000
0x0108
CAPPOS[2]
上升沿捕获寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
580/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
地址偏移
名称
描述
复位值
0x010C
CAPPOS[3]
上升沿捕获寄存器
0x00000000
0x0110
CAPPOS[4]
上升沿捕获寄存器
0x00000000
0x0114
CAPPOS[5]
上升沿捕获寄存器
0x00000000
0x0118
CAPPOS[6]
上升沿捕获寄存器
0x00000000
0x011C
CAPPOS[7]
上升沿捕获寄存器
0x00000000
0x0120
CAPPOS[8]
上升沿捕获寄存器
0x00000000
0x0124
CAPPOS[9]
上升沿捕获寄存器
0x00000000
0x0128
CAPPOS[10]
上升沿捕获寄存器
0x00000000
0x012C
CAPPOS[11]
上升沿捕获寄存器
0x00000000
0x0130
CAPPOS[12]
上升沿捕获寄存器
0x00000000
0x0134
CAPPOS[13]
上升沿捕获寄存器
0x00000000
0x0138
CAPPOS[14]
上升沿捕获寄存器
0x00000000
0x013C
CAPPOS[15]
上升沿捕获寄存器
0x00000000
0x0140
CAPPOS[16]
上升沿捕获寄存器
0x00000000
0x0144
CAPPOS[17]
上升沿捕获寄存器
0x00000000
0x0148
CAPPOS[18]
上升沿捕获寄存器
0x00000000
0x014C
CAPPOS[19]
上升沿捕获寄存器
0x00000000
0x0150
CAPPOS[20]
上升沿捕获寄存器
0x00000000
0x0154
CAPPOS[21]
上升沿捕获寄存器
0x00000000
0x0158
CAPPOS[22]
上升沿捕获寄存器
0x00000000
0x015C
CAPPOS[23]
上升沿捕获寄存器
0x00000000
0x0170
CNT
计数器
0x00000000
0x0180
CAPNEG[0]
下降沿捕获寄存器
0x00000000
0x0184
CAPNEG[1]
下降沿捕获寄存器
0x00000000
0x0188
CAPNEG[2]
下降沿捕获寄存器
0x00000000
0x018C
CAPNEG[3]
下降沿捕获寄存器
0x00000000
0x0190
CAPNEG[4]
下降沿捕获寄存器
0x00000000
0x0194
CAPNEG[5]
下降沿捕获寄存器
0x00000000
0x0198
CAPNEG[6]
下降沿捕获寄存器
0x00000000
0x019C
CAPNEG[7]
下降沿捕获寄存器
0x00000000
0x01A0
CAPNEG[8]
下降沿捕获寄存器
0x00000000
0x01A4
CAPNEG[9]
下降沿捕获寄存器
0x00000000
0x01A8
CAPNEG[10]
下降沿捕获寄存器
0x00000000
0x01AC
CAPNEG[11]
下降沿捕获寄存器
0x00000000
0x01B0
CAPNEG[12]
下降沿捕获寄存器
0x00000000
0x01B4
CAPNEG[13]
下降沿捕获寄存器
0x00000000
0x01B8
CAPNEG[14]
下降沿捕获寄存器
0x00000000
0x01BC
CAPNEG[15]
下降沿捕获寄存器
0x00000000
0x01C0
CAPNEG[16]
下降沿捕获寄存器
0x00000000
0x01C4
CAPNEG[17]
下降沿捕获寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
581/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PWM 定时器 PWM
地址偏移
名称
描述
复位值
0x01C8
CAPNEG[18]
下降沿捕获寄存器
0x00000000
0x01CC
CAPNEG[19]
下降沿捕获寄存器
0x00000000
0x01D0
CAPNEG[20]
下降沿捕获寄存器
0x00000000
0x01D4
CAPNEG[21]
下降沿捕获寄存器
0x00000000
0x01D8
CAPNEG[22]
下降沿捕获寄存器
0x00000000
0x01DC
CAPNEG[23]
下降沿捕获寄存器
0x00000000
0x01F0
CNTCOPY
计数器拷贝
0x00000000
0x0200
PWMCFG[0]
PWM 通道配置寄存器
0x00000000
0x0204
PWMCFG[1]
PWM 通道配置寄存器
0x00000000
0x0208
PWMCFG[2]
PWM 通道配置寄存器
0x00000000
0x020C
PWMCFG[3]
PWM 通道配置寄存器
0x00000000
0x0210
PWMCFG[4]
PWM 通道配置寄存器
0x00000000
0x0214
PWMCFG[5]
PWM 通道配置寄存器
0x00000000
0x0218
PWMCFG[6]
PWM 通道配置寄存器
0x00000000
0x021C
PWMCFG[7]
PWM 通道配置寄存器
0x00000000
0x0220
SR
状态寄存器
0x00000000
0x0224
IRQEN
中断请求使能寄存器
0x00000000
0x022C
DMAEN
DMA 请求使能寄存器
0x00000000
0x0230
CMPCFG[CMPCFG0]
比较器配置寄存器
0x00000000
0x0234
CMPCFG[1]
比较器配置寄存器
0x00000000
0x0238
CMPCFG[2]
比较器配置寄存器
0x00000000
0x023C
CMPCFG[3]
比较器配置寄存器
0x00000000
0x0240
CMPCFG[4]
比较器配置寄存器
0x00000000
0x0244
CMPCFG[5]
比较器配置寄存器
0x00000000
0x0248
CMPCFG[6]
比较器配置寄存器
0x00000000
0x024C
CMPCFG[7]
比较器配置寄存器
0x00000000
0x0250
CMPCFG[8]
比较器配置寄存器
0x00000000
0x0254
CMPCFG[9]
比较器配置寄存器
0x00000000
0x0258
CMPCFG[10]
比较器配置寄存器
0x00000000
0x025C
CMPCFG[11]
比较器配置寄存器
0x00000000
0x0260
CMPCFG[12]
比较器配置寄存器
0x00000000
0x0264
CMPCFG[13]
比较器配置寄存器
0x00000000
0x0268
CMPCFG[14]
比较器配置寄存器
0x00000000
0x026C
CMPCFG[15]
比较器配置寄存器
0x00000000
0x0270
CMPCFG[16]
比较器配置寄存器
0x00000000
0x0274
CMPCFG[17]
比较器配置寄存器
0x00000000
0x0278
CMPCFG[18]
比较器配置寄存器
0x00000000
0x027C
CMPCFG[19]
比较器配置寄存器
0x00000000
0x0280
CMPCFG[20]
比较器配置寄存器
0x00000000
0x0284
CMPCFG[21]
比较器配置寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
582/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
PWM 定时器 PWM
名称
描述
复位值
0x0288
CMPCFG[22]
比较器配置寄存器
0x00000000
0x028C
CMPCFG[23]
比较器配置寄存器
0x00000000
表 197: PWM 寄存器列表
PWM 寄存器详细信息
40.4
PWM 的寄存器详细说明如下:
40.4.1
UNLK (0x0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SHUNLK
31
0
UNLK [31:0]
位域
名称
描述
对此位域写入 0xB0382607 可以解锁地址偏移从 0x04 到 0x78 的
31-0
寄存器的影子寄存器。
SHUNLK
解锁后,允许写入这些寄存器的影子寄存器。
UNLK 位域
STA (0x4)
0
0
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
0
0
0
0
0
0
0
0
STA
RW
RW
0
0
STA [31:0]
位域
名称
描述
PWM 定时器的计数器起始位扩展值
31-28
XSTA
1
0
0
0
RSVD
30
XSTA
31
N/A
40.4.2
当计数器计数至 XRLD 时,计数器值扩展值 XCNT 会重载到
XSTA
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
583/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
PWM 定时器 PWM
描述
PWM 定时器的计数器起始位
27-4
当计数器计数至 RLD 时,计数器值 CNT 会重载到 STA
STA
当计数器重载或者软件写入 SHUNLK 位时,STA 的影子寄存器
值会生效
STA 位域
RLD (0x8)
0
0
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
0
0
0
0
0
0
0
0
RLD
RW
RW
0
1
0
0
0
RSVD
30
XRLD
31
N/A
40.4.3
0
RLD [31:0]
位域
名称
描述
PWM 定时器的计数器重载位扩展值
31-28
当计数器计数至 XRLD 时,计数器值扩展值 XCNT 会重载到
XRLD
XSTA
PWM 定时器的计数器重载值
27-4
当计数器计数至 RLD 时,计数器值 CNT 会重载到 STA
RLD
当计数器重载或者软件写入 SHUNLK 位时,RLD 的影子寄存器
值会生效
RLD 位域
CMP (0xC + 0x4 * m)
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
0
0
0
CMP
RW
RW
0
3
2
0
0
0
CMP [31:0]
位域
名称
31-28
XCMP
描述
比较器值扩展位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
584/1016
1
0
CMPJIT
0
28
RW
0
29
CMPHLF
30
XCMP
31
RW
40.4.4
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
PWM 定时器 PWM
描述
比较器值
27-4
比较器的输出 OCx 默认为 0,在计数器计数到 CMP 时置 1,计
CMP
数器重载时再清 0
3
CMPHLF
2-0
CMPJIT
比较器半周期比较位,此位置 1 可以使比较器的精度达到 1/2 时
钟周期
比较器值抖动位
CMP 位域
FRCMD (0x78)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
N/A
RSVD
31
FRCMD
40.4.5
x
FRCMD [31:0]
位域
名称
描述
PWM 输出通道的强制输出模式控制位
00:强制输出 0
15-0
FRCMD
01:强制输出 1
10:强制输出高阻
11:不强制输出
FRCMD 位域
40.4.6
29
28
27
26
25
24
23
22
21
20
19
18
17
16
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
RW
0
15
RSVD
30
SHLK
31
SHLK (0x7C)
x
SHLK [31:0]
位域
名称
31
SHLK
描述
影子寄存器锁定位
写入 1 锁定所有的影子寄存器,锁定后不允许写入影子寄存器
SHLK 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
585/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
21
20
19
0
0
0
18
17
16
15
14
13
12
11
10
9
RSVD
0
0
0
0
x
x
x
x
x
x
x
8
7
6
5
4
3
2
RSVD
0
RW
0
22
N/A
0
23
OUTPOL
0
24
RW
0
25
1
x
x
x
x
x
x
x
0
0
5
4
3
2
1
0
RSVD
0
N/A
0
26
N/A
27
CMPSELBEG
28
RW
29
N/A
30
RSVD
31
CHCFG (0x80 + 0x4 * n)
CMPSELEND
40.4.7
PWM 定时器 PWM
0
CHCFG [31:0]
位域
名称
描述
28-24
CMPSELEND
20-16
CMPSELBEG
1
OUTPOL
比较器选择结尾位
指定分配给输出通道的若干个比较器的结尾序号
比较器选择起始位
指定分配给输出通道的若干个比较器的起始序号
输出极性
置 1 可以使通道输出取反
CHCFG 位域
0
0
x
0
0
GCR [31:0]
位域
名称
31
FAULTI3EN
1:使能内部故障输入信号 3(FAULTI3)
30
FAULTI2EN
1:使能内部故障输入信号 2(FAULTI2)
29
FAULTI1EN
1:使能内部故障输入信号 1(FAULTI1)
28
FAULTI0EN
1:使能内部故障输入信号 0(FAULTI0)
27
DEBUGFAULT
描述
1:使能调试模式保护
强制输出硬件控制信号 FRCI 的极性
26
FRCPOL
1:FRCI 高有效
0:FRCI 低有效
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
586/1016
SWFRC
0
RW
0
FRCTIME
0
WO
0
TIMERRESET
0
RW
0
RSVD
0
XRLDSYNCEN
0
6
RW
0
7
CEN
0
8
FAULTCLR
0
9
RW
0
10
RW
0
11
RLDSYNCEN
0
12
RW
0
13
FAULTEXPOL
0
14
RW
0
15
FAULTE0EN
0
16
RW
x
17
FAULTE1EN
0
18
RW
0
19
FAULTRECHWSEL
HWSHDWEDG
RW
0
20
RW
RSVD
N/A
0
21
FAULTRECEDG
FRCPOL
RW
0
22
RW
DEBUGFAULT
RW
0
23
CMPSHDWSEL
FAULTI0EN
24
RW
25
FAULTI1EN
26
FAULTI2EN
27
RW
28
RW
29
FAULTI3EN
30
RW
31
N/A
GCR (0xF0)
RW
40.4.8
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
PWM 定时器 PWM
描述
比较器影子寄存器比较器生效时机边沿选择
当影子寄存器生效的时机设置为硬件事件(某一个比较器)时,
24
HWSHDWEDG
并且该比较器配置为输入捕获模式时,此位控制比较器输入信号
的有效边沿:
1:下降沿
0:上升沿
比较器影子寄存器硬件事件生效比较器选择:当 CMPSHDUPDT
23-19
CMPSHDWSEL
设置为 10 时,
此位选择比较器之一,以选中的比较器匹配事件,作为比较器影
子寄存器生效的时机。
故障恢复比较器生效时机边沿选择
当故障恢复的时机设置为硬件事件(某一个比较器)时,
18
FAULTRECEDG
并且该比较器配置为输入捕获模式时,此位控制比较器输入信号
的有效边沿:
1:下降沿
0:上升沿
故障恢复比较器选择位
17-13
FAULTRECHWSE
L
选择比较器之一作为故障恢复的时机。当选中的比较器发生匹配
事件时,恢复 PWM 输出。
匹配事件可以是比较器的输出比较或者输入捕获。
12
FAULTE1EN
1:使能外部故障输入信号 1(FAULTE1)
11
FAULTE0EN
1:使能外部故障输入信号 0(FAULTE0)
外部故障输入有效极性
10-9
FAULTEXPOL
1:低电平有效
0:高电平有效
8
RLDSYNCEN
7
CEN
1:使能通过 SYNCI 信号触发 PWM 定时器计数器重载
1:使能 PWM 定时器的计数器
0:关闭 PWM 定时器的计数器
故障清除位
如果 FAULTRECTIME 设置为 11,对该位写 1,PWM 输出会恢
6
FAULTCLR
复。
注意,用户只能在故障条件清除之后,新的故障条件发生前对该
位写 1
5
XRLDSYNCEN
3
TIMERRESET
1:使能通过 SYNCI 信号触发 PWM 定时器计数器和扩展值一同
重载
1:复位计数器(包括 24 位主计时器和 4 位扩展计时器)
硬件自动清零
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
587/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
PWM 定时器 PWM
描述
强制输出时机控制位
00:强制输出立即生效
2-1
FRCTIME
01:强制输出在计数器下一次重载时生效
10:强制输出在 FRCSYNCI 上捕捉到上升沿时生效
11:不生效
软件强制输出位,当 FRCSRCSEL 置 0 时
0
SWFRC
1:使能强制输出
0:关闭强制输出
GCR 位域
SHCR (0xF4)
24
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
0
0
9
8
7
6
0
0
0
0
RW
N/A
x
10
0
5
4
3
2
0
0
0
0
1
0
SHCR [31:0]
位域
名称
描述
FRCMD 影子寄存器硬件事件生效比较器选择:
12-8
FRCSHDWSEL
当 FRCSHDUPDT 设置为 10 时,此位选择比较器之一,以选中
的比较器匹配事件,作为 FRCMD 影子寄存器生效的时机。
RLD,STA 影子寄存器硬件事件生效比较器选择:
7-3
CNTSHDWSEL
当 CNTSHDUPDT 设置为 10 时,此位选择比较器之一,以选中
的比较器匹配事件,作为 RLD,STA 影子寄存器生效的时机。
RLD,STA 影子寄存器生效时机选择:
00:由软件把 SHLK [SHLK] 位置 1 后生效
01:实时生效,在寄存器写之后,一个周期内生效
2-1
CNTSHDWUPT
10:定时器的某一个 CMP 发生匹配后生效,用户可以通过
SHCR [CNTSHDWSEL] 从比较器 0 到 23 中选择一个,
匹配可以是该比较器的输出比较,也可以是输入捕获。
11:影子寄存器重载触发输入 SHRLDSYNCI 上捕获到上升沿时
生效
0
SHLKEN
1:使能影子寄存器锁定,允许锁定影子寄存器
0:关闭影子寄存器锁定,不能锁定影子寄存器
SHCR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
588/1016
0
SHLKEN
25
RW
26
CNTSHDWUPT
27
RW
28
CNTSHDWSEL
29
RW
30
RSVD
31
FRCSHDWSEL
40.4.9
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
40.4.10
PWM 定时器 PWM
CAPPOS (0x100 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
0
0
0
0
0
0
0
0
0
0
0
0
0
0
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
x
x
x
1
0
RO
N/A
RSVD
CAPPOS
31
0
CAPPOS [31:0]
位域
名称
描述
31-4
CAPPOS
在输入信号上升沿时,捕获到的计数器值
CAPPOS 位域
0
0
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CNT
RO
RO
N/A
30
XCNT
31
CNT (0x170)
RSVD
40.4.11
0
0
CNT [31:0]
位域
名称
31-28
XCNT
27-4
CNT
描述
计数器扩展位
计数器
CNT 位域
40.4.12
CAPNEG (0x180 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RO
CAPNEG
31
0
CAPNEG [31:0]
位域
名称
31-0
CAPNEG
描述
在输入信号下降沿时,捕获到的计数器值;
CAPNEG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
589/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
CNT
RO
RO
N/A
30
XCNT
31
CNTCOPY (0x1F0)
RSVD
40.4.13
PWM 定时器 PWM
0
0
CNTCOPY [31:0]
位域
名称
31-28
XCNT
27-4
CNT
描述
计数器扩展位
计数器
CNTCOPY 位域
0
0
0
0
0
19
18
17
16
15
14
13
12
11
10
0
0
0
0
0
0
0
0
0
0
DEADAREA
20
RW
RW
0
21
PAIR
0
22
FAULTRECTIME
23
FRCSRCSEL
0
24
RW
0
25
FAULTMODE
OEN
x
26
RW
x
27
RW
N/A
x
28
RW
29
RW
30
RSVD
31
PWMCFG (0x200 + 0x4 * n)
FRCSHDWUPT
40.4.14
PWMCFG [31:0]
位域
名称
描述
PWM 输出使能
28
OEN
1:打开 PWM 输出
0:关闭 PWM 输出
FRCMD 影子寄存器生效时机选择:
00:由软件把 SHLK [SHLK] 位置 1 后生效
01:实时生效,在寄存器写之后,一个周期内生效
27-26
FRCSHDWUPT
10:定时器的某一个 CMP 发生匹配后生效,用户可以通过
SHCR [FRCSHDWSEL] 从比较器 0�23 中选择一个,
匹配可以是该比较器的输出比较,也可以是输入捕获。
11:影子寄存器重载触发输入 SHRLDSYNCI 上捕获到上升沿时
生效
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
590/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
PWM 定时器 PWM
描述
故障保护模式
25-24
00:发生故障时,PWM 输出强制为低电平
FAULTMODE
01:发生故障时,PWM 输出强制为高电平
1x:发生故障时,PWM 输出强制为高阻
故障恢复输出时机选择:
00:故障条件消除后立即恢复输出
01:故障条件消除后,在计数器重载 RLD 后恢复输出
23-22
10:定时器的某一个 CMP 发生匹配后生效,用户可以通过
FAULTRECTIME
FAULTRECHWSEL 从比较器 0�23 中选择一个,
匹配可以是该比较器的输出比较,也可以是输入捕获。
11:故障条件消除后,软件将 FAULTCLR 位置 1 后,恢复输出
强制输出选择位
21
0:硬件强制输出,由 FRCI 控制强制输出开关
FRCSRCSEL
1:软件强制输出,SWFRC 位控制强制输出开关
PWM 互补输出位
20
0:PWM 输出位独立模式
PAIR
1:PWM 输出位互补模式
死区长度位,设置死区长度,单位为 0.5 时钟周期。死区长度最
19-0
小为 1 个时钟周期。
DEADAREA
用户配置此位域前,必须将 PAIR 位置 1
PWMCFG 位域
0
0
0
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
CMPFX
0
23
W1C
RLDF
24
W1C
25
HALFRLDF
x
26
W1C
N/A
x
27
XRLDF
x
28
FAULTF
x
29
W1C
30
RSVD
31
SR (0x220)
W1C
40.4.15
SR [31:0]
位域
名称
描述
27
FAULTF
故障标志位
26
XRLDF
扩展重载标志位
25
HALFRLDF
24
RLDF
23-0
CMPFX
半重载标志位
重载标志位
比较器匹配事件标志位
SR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
591/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
0
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
CMPIRQEX
0
23
RW
RLDIRQE
24
RW
25
HALFRLDIRQE
x
26
RW
N/A
x
27
XRLDIRQE
x
28
FAULTIRQE
x
29
RW
30
RSVD
31
IRQEN (0x224)
RW
40.4.16
PWM 定时器 PWM
IRQEN [31:0]
位域
名称
描述
27
FAULTIRQE
故障中断请求使能位
26
XRLDIRQE
扩展重载中断请求使能位
25
HALFRLDIRQE
24
RLDIRQE
23-0
CMPIRQEX
半重载中断请求使能位
重载中断请求使能位
比较器匹配事件中断请求使能位
IRQEN 位域
0
0
0
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
CMPENX
0
23
RW
RLDEN
24
RW
25
HALFRLDEN
x
26
RW
N/A
x
27
XRLDEN
x
28
FAULTEN
x
29
RW
30
RSVD
31
DMAEN (0x22C)
RW
40.4.17
DMAEN [31:0]
位域
名称
描述
27
FAULTEN
故障 DMA 请求使能位
26
XRLDEN
扩展重载 DMA 请求使能位
25
HALFRLDEN
24
RLDEN
23-0
CMPENX
半重载 DMA 请求使能位
重载 DMA 请求使能位
比较器匹配事件 DMA 请求使能位
DMAEN 位域
40.4.18
CMPCFG (0x230 + 0x4 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
592/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
x
x
0
0
5
4
3
0
0
0
RW
N/A
x
2
0
1
0
0
CMPCFG [31:0]
位域
名称
7-4
XCNTCMPEN
描述
比较器扩展比较值使能位
比较器影子寄存器生效时机选择:
00:由软件把 SHLK [SHLK] 位置 1 后生效
01:实时生效,在寄存器写之后,一个周期内生效
3-2
CMPSHDWUPT
10:定时器的某一个 CMP 发生匹配后生效,用户可以通过
CMPSHDWSEL 从比较器 0�23 中选择一个,
匹配可以是该比较器的输出比较,也可以是输入捕获。
11:影子寄存器重载触发输入 SHRLDSYNCI 上捕获到上升沿时
生效
比较器模式选择
1
CMPMODE
0:输出比较模式
1:输入捕获模式
CMPCFG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
593/1016
0
RSVD
24
N/A
25
CMPMODE
26
RW
27
CMPSHDWUPT
28
RW
29
XCNTCMPEN
30
RSVD
31
PWM 定时器 PWM
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
正交解码器接口 QEI
41
本章节介绍本产品正交解码器接口 QEI 的主要功能和特性。
特性总结
41.1
本章节介绍正交解码器接口 QEI 的主要特性:
● 正交信号解码逻辑
● 相位计数器,即位置计数器
● Z 相计数器,即周数计数器
● 测速计数器
● 测速计数器日志功能
● 支持电机位置匹配检测
● 支持同一时刻读取多个计数器
● 支持计数器快照功能,由硬件信号触发
● 32 位定时器用作计时
● 支持看门狗计数器
● 支持方向模式和上下模式
PWM 的框图如图 75。
测速日志寄存器组
SPDHIS0~5
PAUSE
定时器
TMRCNT
脉冲
A相
正交解码
逻辑
方向
B相
Z相
Z相,H相
捕获
Z相
H相
H相
定时器读取
TMRREAD
测速计数器
SPDCNT
测速计数器读取
SPDREAD
相位计数器
PHCNT
相位计数器读取
PHREAD
Z相计数器
ZCNT
Z相计数器读取
ZREAD
Z相计数器校正
ZCALI
定时器快照
TMRSNAP0/1
测速计数器快照
SPDSNAP0/1
相位计数器快照
PHSNAP0/1
SNAPI
Z相计数器快照
ZSNAP0/1
图 75: 正交编码器接口 QEI 框图
41.2
功能描述
本章节描述正交编码器接口 QEI 的功能。
41.2.1
正交信号解码逻辑
用户可以通过 CR [ENCTYP] 位来设置正交解码器的解码模式。
当 CR [ENCTYP] = 2’b00 时,解码器工作在正交解码模式。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
594/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
正交信号解码逻辑根据 A 相和 B 相输入信号解码出电机的转动信息。当 A 相信号相位领先 B 相信号时,表
示电机在正向旋转。当 A 相信号相位滞后 B 相信号时,表示电机在反向旋转。
当 CR [ENCTYP] = 2’b01 或者 2’b10 时,正交解码器工作在方向(PD)模式或者上下(UD)模式,此时,解
码器按照其他方式解读电机旋转方向,具体请参阅后文。
41.2.2
相位计数器
相位计数器 PHCNT(COUNTER[PH])是一个 21 位的计数器,它根据正交信号解码逻辑输出的电机旋转方
向计数。这个计数器可以反映电机在当前时刻所处的位置,因此可以把它视作位置计数器。
当电机正向旋转时,每当 A 相或者 B 相信号翻转时,相位计数器 +1。
APH
BPH
PHCNT
+1
+1
+1
+1
+1
+1
+1
图 76: 正向旋转相位计数示意图
当电机反向旋转时,每当 A 相或者 B 相信号翻转时,相位计数器-1。
APH
BPH
PHCNT
-1
-1
-1
-1
-1
-1
-1
图 77: 反向旋转相位计数示意图
用户也可以从相位计数器的寄存器里读取到电机的旋转方向,和 A 相 / B 相输入信号的状态信息。
PHCNT[DIR] 位为旋转方向位,1’b0 表示正向旋转,1’b1 表示反向旋转
PHCNT[PHSTAT] 位为 A 相/B 相状态位,PHCNT [PHSTAT] = 2’b10 表示 A 相输入为逻辑 1,B 相输入为逻
辑 0。
PHCNT[20:0] 为 AB 相计数器(PHCNT)当前值。
注意,在方向(PD)解码模式,和上下(UD)解码模式下,相位计数器 PHCNT 的行为会有所不同,具体请参考后文。
用户可以根据电机和正交编码器的具体配置,去设置相位溢出寄存器 PHMAX,这个值可以用来表示电机旋
转一周的位置计数总数。
每当 AB 相计数器正向计数达到 PHMAX 后,PHCNT 会重置为 0。
每当 AB 相计数器反向计数达到 0 后,PHCNT 会重置为 PHMAX。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
595/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
注意,相位计数器 PHCNT 从 0 开始计数,从 PHCNT 读取到 x,表示实际相位数为 x+1。
APH
APH
BPH
BPH
PHCNT
PHMAX-1 PHMAX
0
1
PHCNT
1
0
PHMAX
PHMAX-1
图 78: 相位计数溢出示意图
41.2.3
Z 相计数器
Z 相计数器(ZCNT,COUNTER[Z])是一个 32 位的计数器。它会根据 Z 相输入信号以及电机的转向信息计
数。
Z 相信号通常也称为 Index 信号,电机每旋转一周会输出一个脉冲,该信号可以用来在定位电机每一圈的零
点。
正交解码器提供了 2 种 Z 相计数器的计数模式。用户可以通过 PHCFG[ZCNTCFG] 位来配置。
PHCFG[ZCNTCFG] 置 0 时,表示仅按照 Z 相输入信号计数:
● 当电机正向旋转时,Z 相信号输入捕捉到上升沿,Z 相计数器 +1。
● 当电机反向旋转时,Z 相信号输入捕捉到下降沿,Z 相计数器-1。
PHCFG[ZPHCNTCFG] 置 1 时,表示按照位置溢出计数,用户需要预设一周最大计数值(PHMAX 寄存器)
,
这时
● 当电机正向旋转时,每当 PHCNT 计数达到 PHMAX 后,Z 相计数器 +1。
● 当电机反向旋转时,每当 PHCNT 计数达到 0 后,Z 相计数器-1。
● 注意,如果此时 Z 相输入上有信号,计数逻辑会自动判断,如果此时 PHCNT 与 Z 相校正值 PHIDX 差
值大于 PHMAX 的一半,Z 相计数器仍会 +1,但如果差值小于 PHMAX 的一半,则 Z 相计数器不变,避
免重复计数。用户可以切断 Z 相输入引脚来屏蔽此信号的影响。
为了保证电机无论正向还是反向旋转,总是定位到 Z 相信号的同一边沿,正交解码器内部逻辑会将 Z 相信号
与 A/B 相信号同步,具体做法为
● 当电机正向旋转时,Z 相信号捕捉总是同步于 A 相的上升沿
● 当电机反向旋转时,Z 相信号捕捉总是同步于 A 相的下降沿
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
596/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
APH
BPH
ZPH
PHCNT
+1
ZPHCNT
+1
+1
+1
+1
+1
+1
N -1
+1
-1
-1
-1
-1
N
-1
-1
N -1
图 79: Z 相输入同步示意图
正交解码器会根据电机的选择方向,在捕获到 Z 相输入信号时将 SR[ZPHF] 标志位置 1
● 当电机正向旋转时,捕获到 Z 相上升沿,SR[ZPH] 标志位置 1
● 当电机反向旋转时,捕获到 Z 相下降沿,SR[ZPH] 标志位置 1
注意,如果 Z 相信号的宽度大于 1 个 A/B 相信号的脉冲宽度,ZPH 标志位可能多次置 1。
41.2.4
相位计数器校正
此外,Z 相输入可以用来校正相位计数器,用户需要设置 PHCFG[PHCALIZ] 位为 1,还要通过 PHIDX 寄存
器设置相位计数器的校正值,PHIDX 寄存器可以设置为 0,表示 Z 相信号是电机旋转的 0 点。也可以设置为任意
非零值,表示 Z 相信号相对 0 位置有偏移。
● 当电机正向旋转时,捕获到 Z 相上升沿,重置 PHCNT = PHIDX。
● 当电机反向旋转时,捕获到 Z 相下降沿,重置 PHCNT = PHIDX - 1。注意,如果 PHIDX 设置为 0,此
时会把 PHCNT 重置为相位溢出值 PHMAX。
41.2.5
H 相输入
H 相输入,也被称为 HOME 输入,在某些电机上代表零点位置。正交解码器支持在以下情况,将 SR[HOME]
标志位置 1:
● 电机正相旋转检测到 H 上升沿,并且 CR[HRDIR0] 位置 1
● 电机正相旋转检测到 H 下降沿,并且 CR[HFDIR0] 位置 1
● 电机反相旋转检测到 H 上升沿,并且 CR[HRDIR1] 位置 1
● 电机反相旋转检测到 H 下降沿,并且 CR[HFDIR1] 位置 1
当 SR[HOMEF] 标志位置 1 时,可以产生中断。
用户也可以选择利用该标志位复位解码器的各个计数器,即当 SR[HOME] 标志位置 1 时,复位正交解码器
的:
● 当 CR[HRSTPH] 位为 1 时,PHCNT 复位至相位校正值 PHIDX
● 当 CR[HRSTZ] 位为 1 时,ZPHCNT 复位至 0
● 当 CR[HRSTSPD] 位为 1 时,SPDCNT 复位至 0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
597/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
41.2.6
正交解码器接口 QEI
测速计数器
测速计数器 SPDCNT(COUNTER[SPD])是个 28 位的计数器,以正交解码器的时钟运行,在每个时钟周期
累加。测速计数器的作用是提供电机的转速信息。它除了在模块复位时清 0,还会在 A 相和 B 相输入信号翻转时,
把当前计数器值保存到对应的测速日志寄存器里,再把计数器清 0,重新开始计数。因此,测速计数器实际上记
录的是 A 相和 B 相输入信号保持当前状态的时长,一旦输入变化就会清 0,重新计数。
用户也可以从测速计数器的寄存器里读取到电机的旋转方向,和 A 相 / B 相输入信号的状态信息。
SPDCNT[DIR] 位为旋转方向位,1’b0 表示正向旋转,1’b1 表示反向旋转
SPDCNT[ABSTAT] 位为 A 相/B 相状态位,SPDCNT[ABSTAT] = 2’b10 表示 A 相输入为逻辑 1,B 相输入为
逻辑 0。
SPDCNT[27:0] 为测速计数器当前值。
按照 A 相,B 相输入信号的不同状态,测速计数器值保存到的目标日志寄存器为:
● 在测速日志寄存器 0(SPDHIS0)里,
保存 A 相输入为逻辑 0,
B 相输入为逻辑 0 的时长,
即 SPDHIS0[ABSTAT]
= 2’b00
● 在测速日志寄存器 1(SPDHIS1)里,
保存 A 相输入为逻辑 0,
B 相输入为逻辑 1 的时长,
即 SPDHIS0[ABSTAT]
= 2’b01
● 在测速日志寄存器 2(SPDHIS2)里,
保存 A 相输入为逻辑 1,
B 相输入为逻辑 0 的时长,
即 SPDHIS0[ABSTAT]
= 2’b10
● 在测速日志寄存器 3(SPDHIS3)里,
保存 A 相输入为逻辑 1,
B 相输入为逻辑 1 的时长,
即 SPDHIS0[ABSTAT]
= 2’b11
这样一组测速日志寄存器可以完整捕获到一个周期内,电机的速度信息。
CLK
SPDHIS3=1
SPDHIS0=4 SPDHIS3=1
APH
SPDHIS2=2
SPDHIS1=3
SPDHIS2=1 SPDHIS1=1
BPH
SPDCNT
0 1 2 0 1 0 1 2 3 0 1 2 3 4 0 1 0 1 0 1 0 1 2
图 80: 测速计数器和测速日志计数器计数示意图
41.2.7
方向模式和上下模式
解码器除了支持增量型正交编码器,还支持方向(PD),上下(UD)两种编码模式。
用户可以配置 CR[ENCTYP] 位来设置解码器模式:
● 2’b00,正交解码器模式
● 2’b01,方向(PD)模式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
598/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
● 2’b10,上下(UD)模式
方向(PD)模式下,A 相输入用作 P 相(脉冲)输入,B 相输入用作 D 相(方向)输入。
D 相输入表示电机旋转方向,输入逻辑 1 表示正向旋转,输入逻辑 0 表示反向旋转。
电机正向旋转时,P 相输入的每一个边沿跳变(上升沿或下降沿),会使相位计数器 PHCNT +1。
电机反向旋转时,P 相输入的每一个边沿跳变(上升沿或下降沿),会使相位计数器 PHCNT -1。
P(APH)
D(BPH)
PHCNT
+1 +1 +1 +1 +1 +1 +1 +1 -1 -1 -1 -1 -1 -1 -1
图 81: 方向(PD)解码模式示意图
测速计数器会在 P 相输入的上升沿和下降沿时清 0,并重新计数。
测速日志寄存器 0 会在 P 相捕获到上升沿时,保存 P 相输入为逻辑 0 的时长。
测速日志寄存器 1 会在 P 相捕获到下降沿时,保存 P 相输入为逻辑 1 的时长。
上下(UD)模式下,A 相输入用作 U 相输入,B 相输入用作 D 相输入。
U 相输入的每一个脉冲,表示电机正向旋转,会使相位计数器 PHCNT +1。
D 相输入的每一个脉冲,表示电机反向旋转,会使相位计数器 PHCNT -1。
U(APH)
D(BPH)
PHCNT
+1 +1 +1 +1 +1 +1 +1 +1 -1 -1 -1 -1 -1 -1 -1
图 82: 上下(UD)解码模式示意图
测速计数器会在 U 相或者 D 相输入的上升沿和下降沿时清 0,并重新计数。
测速日志寄存器 0 会在 U 相 / D 相捕获到上升沿时,保存 U 相 / D 相输入为逻辑 0 的时长。
测速日志寄存器 1 会在 U 相 / D 相捕获到下降沿时,保存 U 相 / D 相输入为逻辑 1 的时长。
41.2.8
位置匹配
解码器支持对电机位置进行匹配检测。当电机运行到指定位置时,将位置匹配标志位置 1,该标志位可以触
发中断,DMA 请求,也可以作为事件输出。
用户可以设置 PHCMP 和 SPDCMP 值,当相位计数器 PHCNT 计数达到 PHCMP,测速计数器 SPDCNT 计
数达到 SPDCMP 时,产生位置匹配事件。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
599/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
注意,如果把 SPDCMP 值设为 0,那么只要相位计数器匹配(PHCNT == PHCMP),即会立即产生匹配事
件。因为 A 相/B 相输入翻转时,测速计数器会清 0。
用户也可以指定电机的旋转方向,添加为位置匹配的条件之一。把 PHCMP[DIRCMPDIS] 位清 0,再设置
PHCMP[DIRCMP] 位来指定期望的电机旋转方向。
用户还可以把 Z 相计数器,即电机旋转周数添加为位置匹配的条件之一。把 PHCMP[ZCMPDIS] 位清 0,再
设置 ZPHCMP 寄存器,来指定 Z 相计数器匹配值。那么在满足其他匹配条件,并且 ZPHCNT == ZPHCMP 时,
才会发生匹配事件。
定时器
41.2.9
定时器(TMRCNT, COUNT[TMR])是个以正交解码器时钟运行的 32 位定时器。在每个时钟周期累加。这个
定时器提供了编码器的全局时间计数。
看门狗计数器
41.2.10
看门狗计数器是个以正交编码器接口时钟运行的 31 位定时器,在每个时钟周期累加,看门狗计数器在检测
到 A 相或者 B 相输入信号的任意翻转时会清零。用户可以任意设置 WDGCFG 寄存器来配置超时的时间。看门狗
计数器的作用是,如果发生电机停转超过一定时间,为用户提供警报。
用户把 WDGCFG[WDGEN] 位置 1,即可打开看门狗计数器。通过 WDGCFG[WDGTO] 位可以设置看门狗
计数器的超时长度,当看门狗计数达到超时,SR[WDGF] 标志位置位。
用户通过 SR[WDGF] 写 1 清除该标志位时,看门狗计数器也会随之清零。
计数器读取和快照功能
41.2.11
正交解码器接口为它的计数器专门设计了读取接口,方便用户一次读取足够的电机位置和速度信息。
用户可以从计数器寄存器组读取各个计数器的实时信息:
● COUNT[CURRENT][PH] 寄存器,相位计数器,以及当前电机的旋转方向和 A 相 B 相输入状态信息
● COUNT[CURRENT][Z]T 寄存器,Z 相计数器
● COUNT[CURRENT][SPD] 寄存器,测速计数器,以及当前电机的旋转方向和 A 相 B 相输入状态信息
● COUNT[CURRENT][TMR],定时器。
正交解码器支持在读取事件发生时,把各个计数器的值保存到以下读取(READ)寄存器组里。以此保证用户
读到的各种计数器值,以及它们所反映的位置和速度信息是严格同一时刻的。
● COUNT[READ][PH] 寄存器,保存相位计数器的信息,以及当前电机的旋转方向和 A 相 B 相输入状态信
息
● COUNT[READ][Z] 寄存器,保存 Z 相计数器的信息
● COUNT[READ][SPD] 寄存器,保存测速计数器的信息,以及当前电机的旋转方向和 A 相 B 相输入状态
信息
● COUNT[READ][TMR],保存定时器的计时信息。
读取事件可以是:
● 软件触发,用户通过软件把 CR[READ] 位置 1
● 硬件触发,当以下标志位置 1 时,并且与之对应的硬件读取位 (READEN) 也置 1 时:
– 看门狗计数器超时,SR[WDGF] 标志位置 1
– HOME 标志位 SR[HOMEF] 置 1 时
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
600/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
– ZPH 标志位 SR[ZPHF] 置 1 时,
– 发生位置匹配事件,标志位 SR[POSCOMPF] 置 1 时
用户可以把硬件触发读取事件和正交解码器中断配合使用。例如,用户可以通过 IRQEN 寄存器打开 Z 相信
号的中断,同时通过 READEN 寄存器打开硬件读取。当标志位触发中断时,同时触发读取事件,各个计数器组保
存到读取寄存器组。这样,用户可以在中断服务程序里,直接通过读取寄存器组获得 Z 相输入跳变时刻各个计数
器的实时信息,避免中断延时造成的数据失真。
计数器快照功能则由硬件触发,当 CR[SNAPEN] 位置 1 时,正交解码器接口会检测快照触发输入 SNAPI,在
这个输入捕获到上升沿时,将各个计数器的值保存到以下快照(snap0/snap1)寄存器组里。和读取(READ)寄
存器组一样,快照寄存器组里的各种计数器值,以及它们所反映的位置和速度信息是严格同一时刻的。
● COUNT[SNAP0][PH] / COUNT[SNAP1][PH] 寄存器,保存相位计数器的信息,以及当前电机的旋转方
向和 A 相 B 相输入状态信息
● COUNT[SNAP0][PH] / COUNT[SNAP1][PH] 寄存器,保存 Z 相计数器的信息
● COUNT[SNAP0][PH] / COUNT[SNAP1][PH] 寄存器,以及当前电机的旋转方向和 A 相 B 相输入状态信
息
● COUNT[SNAP0][PH] / COUNT[SNAP1][PH],保存定时器的计时信息。
注意,快照触发输入信号长度不要超过一个正交编码器时钟周期。
注意,在快照触发输入捕获到上升沿时,解码器硬件总是会把 snap0 寄存器组的值转存到 snap1 寄存器组,把当前计
数器值保存到 snap0 寄存器组。因此每当快照触发时,软件可以从 snap0 寄存器组读取到本次触发时的各计数器值,
并且可以从 snap1 寄存器组里读取到上一次快照触发时,保存到 snap0 寄存器组的计数器值。而由再早些快照触发保
存下来的计数器值会丢失。
APH
BPH
SNAPI
SPDSNAP1
TMRSNAP0 - TMRSNAP1
SPDSNAP0
图 83: 快照功能示意图
图 83演示了正交解码器快照功能的使用示意图,假设快照由外部触发,正交解码器的各定时器由 2 次 SNAPI
触发信号保存至快照寄存器数据 SNAP0 和 SNAP1。如图所示:
2 组快照间的时间可由定时器计数器值相减(TMRSNAP0–TMRSNAP1)得到。第一次快照触发时,与上一
次相位计数器 PHCNT 更新的时间间隔可读取测速计数器的快照 SPDSNAP1 得到。第二次快照触发时,与上一
次相位计数器 PHCNT 更新的时间间隔可读取测速计数器的快照 SPDSNAP0 得到。
2 组快照间,电机运行的距离可以通过比较相位计数器快照 PHSNAP0,PHSNAP1 以及 Z 相计数器快照
ZPHSNAP0,ZPHSNAP1 得到。
由此,可以计算出电机运行的时间间隔,速度等信息。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
601/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
41.2.12
正交解码器接口 QEI
计数器复位
正交解码器支持通过以下方式复位所有计数器
● 用户软件置 CR [RSTCNT] 位为 1
复位后,以下计数器
● PHCNT,复位至 PHIDX
● ZPHCNT,复位至 0
● SPDCNT,以及各组测速日志计数器,SPDHISx,复位至 0
● TMRCNT,复位至 0
此外,各组读取计数器和快照计数器内容也会清 0。
41.2.13
计数器暂停
正交解码器支持在 PAUSE 输入为逻辑 1 时,暂停以下各计数器的计数:
● PHCNT
● ZPHCNT
● SPDCNT
41.2.14
中断、DMA、触发输出
正交解码器支持以下中断:
● 看门狗计数器超时,SR[WDGF] 标志位置 1
● HOME 标志位 SR[HOMEF] 置 1 时
● ZPH 标志位 SR[ZPHF] 置 1 时,
● 发生位置匹配事件,标志位 SR[POSCOMPF] 置 1 时
通过设置 IRQEN 寄存器相应位,可以打开或者关闭以上中断请求。
用户可以通过读取 SR 寄存器查询所有的标志位,SR 寄存器相应标志位写 1 可以清除标志位。
正交解码器支持以下 DMA 请求:
● 看门狗计数器超时,SR[WDGF] 标志位置 1
● HOME 标志位 SR[HOMEF] 置 1 时
● ZPH 标志位 SR[ZPHF] 置 1 时,
● 发生位置匹配事件,标志位 SR[POSCOMPF] 置 1 时
通过设置 DMAEN 寄存器内的相应位,可以打开或者关闭这些 DMA 请求。
正交解码器支持在以下情况发出长度为一个脉冲的触发输出信号 TRGO:
● 看门狗计数器超时,SR[WDGF] 标志位置 1
● HOME 标志位 SR[HOMEF] 置 1 时
● ZPH 标志位 SR[ZPHF] 置 1 时,
● 发生位置匹配事件,标志位 SR[POSCOMPF] 置 1 时
通过设置 TRGOEN 寄存器内的相应位,可以打开或者关闭这些触发输出。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
602/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
41.3
正交解码器接口 QEI
QEI 寄存器
QEI 的寄存器列表如下:
QEI0 base address: 0xF0208000
QEI1 base address: 0xF0218000
地址偏移
名称
描述
复位值
0x0000
CR
控制寄存器
0x00000000
0x0004
PHCFG
相位配置寄存器
0x00000000
0x0008
WDGCFG
看门狗配置寄存器
0x00000000
0x000C
PHIDX
相位索引寄存器
0x00000000
0x0010
TRGOEN
触发输出使能寄存器
0x00000000
0x0014
READEN
读取事件使能寄存器
0x00000000
0x0018
ZCMP
Z 相比较器
0x00000000
0x001C
PHCMP
AB 相比较器
0x00000000
0x0020
SPDCMP
转速比较器
0x00000000
0x0024
DMAEN
DMA 请求使能寄存器
0x00000000
0x0028
SR
状态寄存器
0x00000000
0x002C
IRQEN
中断请求使能寄存器
0x00000000
0x0030
COUNT[CURRENT][Z]
Z 相计数器
0x00000000
0x0034
COUNT[CURRENT][PH]
AB 相计数器
0x00000000
0x0038
COUNT[CURRENT][SPD]
转速计数器
0x00000000
0x003C
COUNT[CURRENT][TMR]
定时器计数器
0x00000000
0x0040
COUNT[READ][Z]
Z 相读取寄存器
0x00000000
0x0044
COUNT[READ][PH]
AB 相读取寄存器
0x00000000
0x0048
COUNT[READ][SPD]
转速读取寄存器
0x00000000
0x004C
COUNT[READ][TMR]
定时器读取寄存器
0x00000000
0x0050
COUNT[SNAP0][Z]
Z 相快照寄存器 0
0x00000000
0x0054
COUNT[SNAP0][PH]
AB 相快照寄存器 0
0x00000000
0x0058
COUNT[SNAP0][SPD]
转速快照寄存器 0
0x00000000
0x005C
COUNT[SNAP0][TMR]
定时器快照寄存器 0
0x00000000
0x0060
COUNT[SNAP1][Z]
Z 相快照寄存器 1
0x00000000
0x0064
COUNT[SNAP1][PH]
AB 相快照寄存器 1
0x00000000
0x0068
COUNT[SNAP1][SPD]
转速快照寄存器 1
0x00000000
0x006C
COUNT[SNAP1][TMR]
定时器快照寄存器 1
0x00000000
0x0070
SPDHIS[SPDHIS0]
转速日志寄存器 0
0x00000000
0x0074
SPDHIS[SPDHIS1]
转速日志寄存器 1
0x00000000
0x0078
SPDHIS[SPDHIS2]
转速日志寄存器 2
0x00000000
0x007C
SPDHIS[SPDHIS3]
转速日志寄存器 3
0x00000000
表 198: QEI 寄存器列表
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
603/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
QEI 寄存器详细信息
41.4
QEI 的寄存器详细说明如下:
x
x
0
0
0
0
ENCTYP
0
1
RW
0
2
RSVD
0
3
N/A
0
RSTCNT
0
SNAPEN
0
4
RW
0
5
RW
0
6
RSVD
0
7
N/A
x
8
HFDIR0
0
9
RW
10
HFDIR1
11
HRDIR0
0
12
RW
0
13
RW
x
14
HRDIR1
x
15
RW
x
16
PAUSEZ
x
N/A
x
17
PAUSEPH
x
18
RW
x
19
RW
x
20
PAUSESPD
x
21
RW
x
22
RSVD
x
23
HRSTZ
x
WO
0
24
RW
25
N/A
26
HRSTPH
27
RW
28
HRSTSPD
29
RSVD
30
READ
31
CR (0x0)
RW
41.4.1
0
CR [31:0]
位域
名称
31
READ
18
HRSTSPD
17
HRSTPH
16
HRSTZ
14
PAUSESPD
13
PAUSEPH
12
PAUSEZ
11
HRDIR1
10
HRDIR0
9
HFDIR1
8
HFDIR0
5
SNAPEN
4
RSTCNT
描述
1:生成软件读取事件,把 PHCNT,ZCNT,SPDCNT 和
TMRCNT 这些寄存器的值,载入对应的读取寄存器
1:当 H 相输入有效时,复位 SPDCNT
1:当 H 相输入有效时,复位 PHCNT
1:当 H 相输入有效时,复位 ZCNT
1:当 PAUSE 输入有效时,暂定 SPDCNT
1:当 PAUSE 输入有效时,暂定 PHCNT
1:当 PAUSE 输入有效时,暂定 ZCNT
1:HOMEF 标志位在 H 相输入上升沿,并且电机反向选择
(DIR==1)时置 1
1:HOMEF 标志位在 H 相输入上升沿,并且电机正向旋转
(DIR==0)时置 1
1:HOMEF 标志位在 H 相输入下降沿,并且电机反向选择
(DIR==1)时置 1
1:HOMEF 标志位在 H 相输入下降沿,并且电机正向旋转
(DIR==0)时置 1
1:打开快照功能,当 SNAPI 输入有效时,把 PHCNT,ZCNT,
SPDCNT 和 TMRCNT 这些寄存器的值,载入对应的快照寄存器
1:将 ZCNT,TMRCNT 和 SPDCNT 重置为 0,将 PHCNT 重置
为 PHIDX 的值
解码器模式控制位:
00:ABZ 模式
1-0
ENCTYP
01:PD 模式
10:UD 模式
11:保留
CR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
604/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PHCFG (0x4)
x
x
25
24
23
x
x
x
x
N/A
x
22
21
0
0
20
19
18
17
16
15
14
13
12
11
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
PHMAX
x
26
RW
x
27
PHCALIZ
28
RW
29
ZCNTCFG
30
RSVD
31
RW
41.4.2
正交解码器接口 QEI
0
PHCFG [31:0]
位域
名称
描述
1:当 PHCNT 递增计数到达 PHMAX 时,ZCNT 加 1,当
22
PHCNT 递减计数过 0 时,ZCNT 减 1
ZCNTCFG
0:当 Z 相输入有效时,ZCNT 按照电机旋转反向加 1 或减 1
21
PHCALIZ
20-0
PHMAX
1:当 Z 相输入有效时,重置 PHCNT 为 PHIDX
PHCNT 的计数上限,当 PHCNT 计数递增到达 PHMAX 时,会回
滚为 0;当 PHCNT 计数递减至 0 时,会回滚为 PHMAX
PHCFG 位域
41.4.3
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
RW
RW
0
15
WDGTO
WDGEN
31
WDGCFG (0x8)
0
WDGCFG [31:0]
位域
名称
描述
31
WDGEN
1:使能看门狗计数器
30-0
WDGTO
看门狗计数器的超时值
WDGCFG 位域
PHIDX (0xC)
30
29
28
27
x
x
x
x
x
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
x
x
x
x
x
0
0
0
0
0
0
0
0
0
0
x
RW
N/A
RSVD
31
PHIDX
41.4.4
0
PHIDX [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
605/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
20-0
PHIDX
正交解码器接口 QEI
描述
PHCNT 的重置值,如果 PHCALIZ 置 1,当 Z 相输入有效时,
PHCNT 重置为 PHIDX
PHIDX 位域
ZPHFEN
RW
0
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
x
x
x
x
x
x
x
x
x
x
x
x
x
x
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
RSVD
HOMEFEN
POSCMPFEN
RW
28
RW
29
WDGFEN
30
RW
31
TRGOEN (0x10)
N/A
41.4.5
x
TRGOEN [31:0]
位域
名称
描述
31
WDGFEN
WDGF 标志位触发输出 TRGO 使能位
30
HOMEFEN
HOMEF 标志位触发输出 TRGO 使能位
29
POSCMPFEN
28
ZPHFEN
POSCMPF 标志位触发输出 TRGO 使能位
ZPHF 标志位触发输出 TRGO 使能位
TRGOEN 位域
ZPHFEN
RW
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
x
x
x
x
x
x
x
x
x
x
x
x
x
x
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
RSVD
HOMEFEN
28
POSCMPFEN
29
RW
0
30
RW
WDGFEN
RW
31
READEN (0x14)
N/A
41.4.6
x
READEN [31:0]
位域
名称
描述
31
WDGFEN
WDGF 标志位生成读取事件使能位
30
HOMEFEN
HOMEF 标志位生成读取事件使能位
29
POSCMPFEN
28
ZPHFEN
POSCMPF 标志位生成读取事件使能位
ZPHF 标志位生成读取事件使能位
READEN 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
606/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
41.4.7
正交解码器接口 QEI
ZCMP (0x18)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ZCMP
31
0
ZCMP [31:0]
位域
名称
31-0
ZCMP
描述
ZCNT 计时器位置匹配的比较值,当 ZCNT==ZCMP 时,匹配才
成立
ZCMP 位域
0
26
25
x
x
x
x
24
23
22
21
20
19
18
17
16
15
14
13
12
11
x
x
x
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
PHCMP
0
27
RW
DIRCMP
RW
0
28
RSVD
DIRCMPDIS
RW
29
ZCMPDIS
30
RW
31
PHCMP (0x1C)
N/A
41.4.8
x
0
PHCMP [31:0]
位域
名称
描述
31
ZCMPDIS
30
DIRCMPDIS
1:位置匹配时,忽略 ZCMP
1:位置匹配时,忽略电机旋转方向 DIR
配置匹配时的旋转方向比较
29
DIRCMP
1:位置匹配时,电机需反向旋转(DIR==1)
0:位置匹配时,电机需正向旋转(DIR==0)
20-0
PHCNT 计时器位置匹配的比较值,当 PHCNT==PHCMP 时,匹
PHCMP
配才成立
PHCMP 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
SPDCMP
31
SPDCMP (0x20)
RW
41.4.9
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
607/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
正交解码器接口 QEI
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
SPDCMP [31:0]
位域
名称
描述
31-0
SPDCMP
SPHCNT 计时器位置匹配的比较值,当 SPDCNT==SPDCMP
时,匹配才成立
SPDCMP 位域
ZPHFEN
RW
0
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
x
x
x
x
x
x
x
x
x
x
x
x
x
x
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
RSVD
HOMEFEN
POSCMPFEN
RW
28
RW
29
WDGFEN
30
RW
31
DMAEN (0x24)
N/A
41.4.10
x
DMAEN [31:0]
位域
名称
描述
31
WDGFEN
WDGF 标志位生成 DMA 请求使能位
30
HOMEFEN
HOMEF 标志位生成 DMA 请求使能位
29
POSCMPFEN
28
ZPHFEN
POSCMPF 标志位生成 DMA 请求使能位
ZPHF 标志位生成 DMA 请求使能位
DMAEN 位域
ZPHF
RW
0
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
x
x
x
x
x
x
x
x
x
x
x
x
x
x
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
RSVD
HOMEF
POSCMPF
RW
28
RW
29
WDGF
30
RW
31
SR (0x28)
N/A
41.4.11
x
SR [31:0]
位域
名称
描述
31
WDGF
看门狗超时标志位
30
HOMEF
HOMEF 标志位
29
POSCMPF
位置匹配标志位
28
ZPHF
ZPH 标志位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
608/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
正交解码器接口 QEI
描述
SR 位域
ZPHIE
RW
0
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
x
x
x
x
x
x
x
x
x
x
x
x
x
x
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
RSVD
HOMEIE
POSCMPIE
RW
28
RW
29
WDGIE
30
RW
31
IRQEN (0x2C)
N/A
41.4.12
x
IRQEN [31:0]
位域
名称
描述
31
WDGIE
WDGF 标志位生成中断请求使能位
30
HOMEIE
HOMEF 标志位生成中断请求使能位
29
POSCMPIE
28
ZPHIE
POSCMPF 标志位生成中断请求使能位
ZPHF 标志位生成中断请求使能位
IRQEN 位域
41.4.13
COUNT[Z] (0x30 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
RW
ZCNT
31
0
COUNT[Z] [31:0]
位域
名称
31-0
ZCNT
描述
Z 相计数器 ZCNT
COUNT[Z] 位域
x
x
x
21
20
19
18
17
16
15
14
13
12
11
x
0
0
0
0
0
0
0
0
0
0
PHCNT
x
22
RO
0
23
RSVD
0
24
N/A
25
BSTAT
x
26
RO
27
ASTAT
0
28
RSVD
DIR
RO
x
29
N/A
RSVD
30
N/A
31
COUNT[PH] (0x34 + 0x10 * n)
RO
41.4.14
x
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
609/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
正交解码器接口 QEI
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
COUNT[PH] [31:0]
位域
名称
描述
旋转反向
30
DIR
0:电机正向旋转
1:电机反向旋转
A 相输入信号状态
26
1:A 相输入为逻辑 1
ASTAT
0:A 相输入为逻辑 0
B 相输入信号状态
25
1:B 相输入为逻辑 1
BSTAT
0:B 相输入为逻辑 0
20-0
相位计数器 PHCNT
PHCNT
COUNT[PH] 位域
BSTAT
RSVD
N/A
0
0
x
27
26
25
24
23
22
21
20
19
18
17
16
15
14
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13
SPDCNT
ASTAT
28
RO
0
29
RW
DIR
30
RO
31
COUNT[SPD] (0x38 + 0x10 * n)
RO
41.4.15
0
COUNT[SPD] [31:0]
位域
名称
描述
旋转反向
31
DIR
0:电机正向旋转
1:电机反向旋转
30
ASTAT
29
BSTAT
27-0
SPDCNT
A 相输入信号状态
1:A 相输入为逻辑 10:A 相输入为逻辑 0
B 相输入信号状态
1:B 相输入为逻辑 10:B 相输入为逻辑 0
转速计数器 SPDCNT
COUNT[SPD] 位域
41.4.16
COUNT[TMR] (0x3C + 0x10 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
610/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
TMRCNT
31
正交解码器接口 QEI
0
COUNT[TMR] [31:0]
位域
名称
描述
31-0
TMRCNT
定时器计数器 TMRCNT
COUNT[TMR] 位域
41.4.17
SPDHIS (0x70 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
SPDHIS0
31
0
SPDHIS [31:0]
位域
名称
31-0
SPDHIS0
描述
SPDCNT 的日志 0,当 A 相、B 相信号从逻辑 0,逻辑 0 变成其
他状态时,从 SPDCNT 载入
SPDHIS 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
611/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
霍尔传感器接口 HALL
霍尔传感器接口 HALL
42
本章节介绍本产品霍尔传感器接口 HALL 的主要功能和特性:
特性总结
42.1
本章节介绍霍尔传感器接口 HALL 的主要特性:
● 支持 U,V,W 三相输入信号检测
● 测速计数器
● 测速计数器日志功能
● 支持同一时刻读取多个计数器
● 支持计数器快照功能,由硬件信号触发
● 32 位定时器用作计时
● 支持看门狗计数器
霍尔传感器接口 HALL 的框图如图 84。
定时器读取
TMRREAD
U计数器读取
UREAD
V计数器读取
VREAD
W计数器读取
WREAD
看门狗
定时器
TMRCNT
U计数器
UCNT
U相
V相
捕获
逻辑
W相
V计数器
VCNT
U日志寄存器组
UHIS0/1
V日志寄存器组
VHIS0/1
W计数器
WCNT
W日志寄存器组
WHIS0/1
定时器快照
TMRSNAP0/1
U计数器快照
USNAP0/1
SNAPI
V计数器快照
VSNAP0/1
W计数器快照
WSNAP0/1
图 84: 霍尔传感器 HALL 框图
42.2
功能描述
本章节描述霍尔传感器接口 HALL 的功能。
42.2.1
U,V,W 相输入
霍尔传感器接口支持 3 个输入信号:U,V,W。每当输入信号之一发生翻转时,SR[PHUPTF] 标志位会置 1。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
612/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
霍尔传感器接口 HALL
用户也可以通过 SR 寄存器的 UF,VF,WF 这三个标志位来单独判断 U,V,W 三相输入信号的翻转情况。
注意,PHUPTF ,UF,VF,WF 这些标志位不会自动清除,用户需要及时通过对对应标志位写 1 来清除这些标志位。
以此保证标志位的实时性。
42.2.2
U,V,W 计数器
霍尔传感器接口支持 3 个计数器,分别记录输入信号 U,V,W 的长度信息。这三个测速计数器以霍尔传感
器接口的时钟运行,每个时钟周期 +1,可以用来记录输入信号的宽度,即 U / V / W 保持逻辑 0 或者逻辑 1 时长。
具体行为如下:
U 计数器(UCNT)会在输入信号 U 捕获到上升沿时,把计数器值保存到 U 日志计数器 0(UHIS0)
,再将计
数器清 0,重新计数。它会在输入信号 U 捕获到下降沿时,把计数器值保存到 U 日志计数器 1(UHIS1)
,再将计
数器清 0,重新计数。
V 计数器(VCNT)会在输入信号 V 捕获到上升沿时,把计数器值保存到 V 日志计数器 0(VHIS0)
,再将计
数器清 0,重新计数。它会在输入信号 V 捕获到下降沿时,把计数器值保存到 V 日志计数器 1(VHIS1)
,再将计
数器清 0,重新计数。
W 计数器(WCNT)会在输入信号 W 捕获到上升沿时,把计数器值保存到 W 日志计数器 0(WHIS0)
,再将
计数器清 0,重新计数。它会在输入信号 W 捕获到下降沿时,把计数器值保存到 W 日志计数器 1(WHIS1)
,再
将计数器清 0,重新计数。
U
V
W
UHIS0
UHIS1
VHIS0
VHIS1
WHIS0
WHIS1
图 85: U, V, W 日志计数器示意图
42.2.3
定时器
定时器(TMRCNT)是个以霍尔传感器接口时钟运行的 32 位定时器。在每个时钟周期累加。这个定时器可
作为霍尔传感器接口的全局时间计数。
42.2.4
提前触发
由于机械以及电信号的延时,用户有可能希望在霍尔传感器输入 U,V,W 上捕获到翻转之前就产生中断或
者事件来执行必要的操作,比如电机换相等。
霍尔传感器接口支持通过配置 UVWCFG[PRECNT] 位,来设置提前量。这样,在计数器 xCNT 计数到对应
日志测速计数器减去提前量时(xCNT == xHIS0 - PRECNT),即产生提前触发事件,SR[PHPREF] 标志位置 1。
这个标志位既可以产生中断,DMA 请求,也可以用作触发输出。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
613/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
霍尔传感器接口 HALL
注意,当霍尔传感器接口在复位之后,缺乏历史数据,日志测速计数器值是不可靠的。由于提前触发的提前量是基于
日志测速寄存器,因此,SR[PHPREF] 标志位置 1 的时刻也不可预测。建议用户霍尔传感器接口采集完整的 U,V,W
输入信号一定时间后,再使用提前触发功能。
42.2.5
延时事件
用户可以配置 PHCFG[DLYCNT],在 U,V,W 信号翻转(SR[PHUPTF] 位置 1)之后,延时一定的时钟周
期。或者在提前触发事件(SR[PHPREF] 位置 1)之后延时一定的时钟周期,产生延时事件,SR[PHDLYF] 标志
位置 1。
用户通过配置 PHCFG[DLYSEL] 来选择延时的起点:
● 1’b0,在 U,V,W 信号翻转(SR[PHUPT] 置 1)之后延时,即当 xCNT == DLYCNT 时,SR[PHDLYF]
标志位置 1
● 1’b1,在提前触发事件(SR[PHPREF] 置 1)之后延时,即当 xCNT == xHIS0–PRECNT + DLYCNT 时,
SR[DLY] 标志位置 1
SR[PHDLYF] 标志位置 1 时,既可以产生中断,DMA 请求,也可以用作触发输出。
42.2.6
看门狗计数器
看门狗计数器是个以霍尔传感器接口时钟运行的 31 位定时器,在每个时钟周期累加,看门狗计数器在检测
到 U、V、W 输入信号的任意翻转时会清零。用户可以任意设置 WDGCFG 寄存器来配置超时的时间。看门狗计
数器的作用是,如果发生电机停转超过一定时间,为用户提供警报。
用户把 WDGCFG[WDGEN] 位置 1,即可打开看门狗计数器。通过 WDGCFG[WDGTO] 位可以设置看门狗
计数器的超时长度,当看门狗计数达到超时,SR[WDGF] 标志位置位。用户通过 SR[WDGF] 写 1 清除该标志位
时,看门狗计数器也会随之清零。
42.2.7
计数器读取和快照功能
霍尔传感器接口为它的计数器专门设计了读取接口,方便用户一次读取足够的电机位置和速度信息。
用户可以从计数器寄存器组读取各个计数器的实时信息:
● U,V,W 计数器:UCNT,VCNT,WCNT
● TMRCNT,定时器。
在发生读取事件时,霍尔传感器接口会把各个计数器的值保存到以下读取(READ)寄存器组里。以此保证用
户读到的各种计数器值,以及它们所反映的位置和速度信息是严格同一时刻的。
● U,V,W 的 READ 寄存器,保存 U/V/W 计数器的信息和 U/V/W 的输入状态信息,包括 UREAD,VREAD,
WREAD
● TMRREAD,保存定时器的计时信息。
读取事件可以是:
● 软件触发,用户通过软件把 CR[READ] 位置 1
● 硬件触发,当以下标志位置 1 时,并且与之对应的硬件读取位 (READEN) 也置 1 时:
– 看门狗超时,SR[WDGF] 位置 1
– U/V/W 任一输入信号翻转,SR[PHUDTF] 位置 1
– U 信号翻转,SR[UF] 位置 1
– V 信号翻转,SR[VF] 位置 1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
614/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
霍尔传感器接口 HALL
– W 信号翻转,SR[WF] 位置 1
– 发生提前触发事件,SR[PHPREF] 位置 1
– 发生延时事件,SR[PHDLYF] 位置 1
用户可以把硬件触发读取事件和中断配合使用。例如,用户通过 IRQEN 寄存器打开了 U/V/W 任意信号翻转
的中断,同时通过 READEN 寄存器打开了硬件读取。SR[PHUDTF] 标志位触发中断时,同时触发读取事件,各个
计数器组保存到读取寄存器组。这样,用户可以在中断服务程序里,直接通过读取寄存器组获得信号翻转时,各
个计数器的实时信息,避免中断延时造成的数据失真。
计数器快照功能则由硬件触发,霍尔传感器接口会检测快照触发输入 SNAPI,在这个输入捕获到上升沿时,
将各个计数器的值保存到以下快照(snap0/snap1)寄存器组里。和读取(READ)寄存器组一样,快照寄存器组
里的各种计数器值,以及它们所反映的位置和速度信息是严格同一时刻的。
● U,V,W 计数器的 SNAP0 / SNAP 1 寄存器,保存 U/V/W 计数器的信息和 U/V/W 的输入状态信息,
USNAP0 / USNAP1,VSNAP0 / VSNAP1,WSNAP0 / WSNAP1,
● TMRSNAP0 / TMRSNAP 1,保存定时器的计时信息。
注意,快照触发输入信号长度不要超过一个霍尔传感器接口时钟周期。
注意,在快照触发输入捕获到上升沿时,霍尔传感器接口硬件总是会把 snap0 寄存器组的值转存到 snap1 寄存器组,
把当前计数器值保存到 snap0 寄存器组。因此每当快照触发时,软件可以从 snap0 寄存器组读取到本次触发时的各计
数器值,并且可以从 snap1 寄存器组里读取到上一次快照触发时,保存到 snap0 寄存器组的计数器值。而由再早些快
照触发保存下来的计数器值会丢失。
42.2.8
计数器复位
正交解码器支持通过以下方式复位所有计数器
● 用户软件置 CR [RSTCNT] 位为 1
复位后,以下计数器
● UCNT,复位至 0
● VCNT,复位至 0
● WCNT,复位至 0
● TMRCNT,复位至 0
此外,各组读取计数器和快照计数器内容也会清 0。
42.2.9
中断、DMA、触发输出
霍尔传感器接口支持以下中断:
● 看门狗计数器超时,SR[WDGF] 标志位置 1
● U/V/W 任一输入信号翻转,SR[PHUDTF] 位置 1
● U 信号翻转,SR[UF] 位置 1
● V 信号翻转,SR[VF] 位置 1
● W 信号翻转,SR[WF] 位置 1
● 发生提前触发事件,SR[PHPREF] 位置 1
● 发生延时事件,SR[PHDLYF] 位置 1
通过设置 IRQEN 寄存器相应位,可以打开或者关闭以上中断请求。
用户可以通过读取 SR 寄存器查询所有的标志位,SR 寄存器相应标志位写 1 可以清除标志位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
615/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
霍尔传感器接口 HALL
正交解码器支持以下 DMA 请求:
● 看门狗计数器超时,SR[WDGF] 标志位置 1
● U/V/W 任一输入信号翻转,SR[PHUDTF] 位置 1
● U 信号翻转,SR[UF] 位置 1
● V 信号翻转,SR[VF] 位置 1
● W 信号翻转,SR[WF] 位置 1
● 发生提前触发事件,SR[PHPREF] 位置 1
● 发生延时事件,SR[PHDLYF] 位置 1
通过设置 DMAEN 寄存器内的相应位,可以打开或者关闭这些 DMA 请求。
正交解码器支持在以下情况发出长度为一个脉冲的触发输出信号 TRGO:
● 看门狗计数器超时,SR[WDGF] 标志位置 1
● U/V/W 任一输入信号翻转,SR[PHUDTF] 位置 1
● U 信号翻转,SR[UF] 位置 1
● V 信号翻转,SR[VF] 位置 1
● W 信号翻转,SR[WF] 位置 1
● 发生提前触发事件,SR[PHPREF] 位置 1
● 发生延时事件,SR[PHDLYF] 位置 1
通过设置 TRGOEN 寄存器内的相应位,可以打开或者关闭这些触发输出。
42.3
HALL 寄存器列表
HALL 的寄存器列表如下:
HALL0 base address: 0xF0204000
HALL1 base address: 0xF0214000
地址偏移
名称
描述
复位值
0x0000
CR
控制寄存器
0x00000000
0x0004
PHCFG
相位配置寄存器
0x00000000
0x0008
WDGCFG
看门狗配置寄存器
0x00000000
0x000C
UVWCFG
UVW 配置寄存器
0x00000000
0x0010
TRGOEN
触发输出使能寄存器
0x00000000
0x0014
READEN
读取事件使能寄存器
0x00000000
0x0024
DMAEN
DMA 请求使能寄存器
0x00000000
0x0028
SR
状态寄存器
0x00000000
0x002C
IRQEN
中断请求使能寄存器
0x00000000
0x0030
COUNT[CURRENT][W]
W 相计数器
0x00000000
0x0034
COUNT[CURRENT][V]
V 相计数器
0x00000000
0x0038
COUNT[CURRENT][U]
U 相计数器
0x00000000
0x003C
COUNT[CURRENT][TMR]
定时器计数器
0x00000000
0x0040
COUNT[READ][W]
W 相读取寄存器
0x00000000
0x0044
COUNT[READ][V]
V 相读取寄存器
0x00000000
0x0048
COUNT[READ][U]
U 相读取寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
616/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
霍尔传感器接口 HALL
地址偏移
名称
描述
复位值
0x004C
COUNT[READ][TMR]
定时器读取寄存器
0x00000000
0x0050
COUNT[SNAP0][W]
W 相快照寄存器 0
0x00000000
0x0054
COUNT[SNAP0][V]
V 相快照寄存器 0
0x00000000
0x0058
COUNT[SNAP0][U]
U 相快照寄存器 0
0x00000000
0x005C
COUNT[SNAP0][TMR]
定时器快照寄存器 0
0x00000000
0x0060
COUNT[SNAP1][W]
W 相快照寄存器 1
0x00000000
0x0064
COUNT[SNAP1][V]
V 相快照寄存器 1
0x00000000
0x0068
COUNT[SNAP1][U]
U 相快照寄存器 1
0x00000000
0x006C
COUNT[SNAP1][TMR]
定时器快照寄存器 1
0x00000000
0x0070
HIS[U][HIS0]
U 相日志寄存器 0
0x00000000
0x0074
HIS[U][HIS1]
U 相日志寄存器 1
0x00000000
0x0078
HIS[V][HIS0]
V 相日志寄存器 0
0x00000000
0x007C
HIS[V][HIS1]
V 相日志寄存器 1
0x00000000
0x0080
HIS[W][HIS0]
W 相日志寄存器 0
0x00000000
0x0084
HIS[W][HIS1]
W 相日志寄存器 1
0x00000000
表 199: HALL 寄存器列表
HALL 寄存器详细信息
42.4
HALL 的寄存器详细说明如下:
x
0
0
0
0
0
0
18
17
16
15
14
RSVD
19
N/A
0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
RSVD
x
20
N/A
x
21
RSVD
x
22
N/A
0
WO
0
23
RSTCNT
24
RW
25
RSVD
26
N/A
27
SNAPEN
28
RW
29
RSVD
30
READ
31
CR (0x0)
N/A
42.4.1
CR [31:0]
位域
名称
描述
1:生成软件读取事件,把 UCNT,VCNT,W.CNT 和 TMRCNT
31
READ
这些寄存器的值,载入对应的读取寄存器。置 1 后硬件会自动清
零此位,此位读取值总为 0
11
SNAPEN
4
RSTCNT
1:打开快照功能,当 SNAPI 输入有效时,把 UCNT,VCNT,
WCNT 和 TMRCNT 这些寄存器的值,载入对应的快照寄存器
1:重置所有的计数器和对应的快照寄存器
CR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
617/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
0
0
0
27
25
24
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
N/A
RW
0
26
RSVD
DLYSEL
31
PHCFG (0x4)
DLYCNT
42.4.2
霍尔传感器接口 HALL
PHCFG [31:0]
位域
名称
描述
该位选择延时的起点:
31
1:在提前触发事件(SR[PHPREF] 置 1)之后延时
DLYSEL
0:在 U,V,W 信号翻转(SR[PHUPT] 置 1)之后延时
23-0
延时的长度,以时钟周期为单位。
DLYCNT
PHCFG 位域
42.4.3
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
RW
RW
0
15
WDGTO
WDGEN
31
WDGCFG (0x8)
0
WDGCFG [31:0]
位域
名称
描述
31
WDGEN
1:使能看门狗
30-0
WDGTO
看门狗计数器的超时值
WDGCFG 位域
UVWCFG (0xC)
30
29
28
0
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
N/A
RSVD
31
PRECNT
42.4.4
0
UVWCFG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
618/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
23-0
PRECNT
霍尔传感器接口 HALL
描述
提前事件的提前量,以时钟周期位单位。
UVWCFG 位域
TRGOEN (0x10)
VFEN
WFEN
RW
RW
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
x
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
RSVD
UFEN
0
20
N/A
RSVD
21
RW
22
N/A
23
RSVD
0
24
N/A
0
25
RSVD
0
26
RSVD
PHDLYEN
RW
0
27
N/A
PHUPTEN
PHPREEN
RW
28
RW
29
WDGEN
30
RW
31
N/A
42.4.5
x
TRGOEN [31:0]
位域
名称
描述
31
WDGEN
30
PHUPTEN
PHUPTF 标志位触发输出 TRGO 使能位
29
PHPREEN
PHPREF 标志位触发输出 TRGO 使能位
28
PHDLYEN
PHDLYF 标志位触发输出 TRGO 使能位
23
UFEN
UF 标志位触发输出 TRGO 使能位
22
VFEN
VF 标志位触发输出 TRGO 使能位
21
WFEN
WF 标志位触发输出 TRGO 使能位
WDGF 标志位触发输出 TRGO 使能位
TRGOEN 位域
VFEN
WFEN
RW
RW
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
x
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
RSVD
UFEN
0
20
N/A
RSVD
21
RW
22
N/A
23
RSVD
0
24
N/A
0
25
RSVD
0
26
RSVD
PHDLYEN
RW
0
27
N/A
PHUPTEN
PHPREEN
RW
28
RW
29
WDGEN
30
RW
31
READEN (0x14)
N/A
42.4.6
x
READEN [31:0]
位域
名称
描述
31
WDGEN
30
PHUPTEN
PHUPTF 标志位读取事件使能位
29
PHPREEN
PHPREF 标志位读取事件使能位
28
PHDLYEN
PHDLYF 标志位读取事件使能位
23
UFEN
WDGF 标志位读取事件使能位
UF 标志位读取事件使能位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
619/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
霍尔传感器接口 HALL
位域
名称
描述
22
VFEN
VF 标志位读取事件使能位
21
WFEN
WF 标志位读取事件使能位
READEN 位域
VFEN
WFEN
RW
RW
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
x
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
RSVD
UFEN
0
20
N/A
RSVD
21
RW
22
N/A
23
RSVD
0
24
N/A
0
25
RSVD
0
26
RSVD
PHDLYEN
RW
0
27
N/A
PHUPTEN
PHPREEN
RW
28
RW
29
WDGEN
30
RW
31
DMAEN (0x24)
N/A
42.4.7
x
DMAEN [31:0]
位域
名称
描述
31
WDGEN
30
PHUPTEN
PHUPTF 标志位 DMA 请求使能位
29
PHPREEN
PHPREF 标志位 DMA 请求使能位
28
PHDLYEN
PHDLYF 标志位 DMA 请求使能位
23
UFEN
UF 标志位 DMA 请求使能位
22
VFEN
VF 标志位 DMA 请求使能位
21
WFEN
WF 标志位 DMA 请求使能位
WDGF 标志位 DMA 请求使能位
DMAEN 位域
VF
WF
RW
RW
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
x
10
RSVD
UF
0
20
N/A
RSVD
RW
21
N/A
22
RSVD
0
23
N/A
0
24
RSVD
0
25
RSVD
PHDLYF
RW
0
26
N/A
PHUPTF
PHPREF
27
RW
28
RW
29
WDGF
30
RW
31
SR (0x28)
N/A
42.4.8
x
SR [31:0]
位域
名称
31
WDGF
30
PHUPTF
29
PHPREF
描述
看门狗超时标志位
相位更新标志位,当 U 相,V 相,W 相中任一信号翻转时置 1
提前事件标志位,会在 U 相,V 相,W 相中任一信号翻转的
PRECNT 个时钟周期之前置 1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
620/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
霍尔传感器接口 HALL
描述
延时事件标志位,根据 DLYSEL 位的配置,在 U 相,V 相,W 相
28
中任一信号翻转之后,或者在提前事件标志位置 1 后,DLYCNT
PHDLYF
个时钟周期后置 1
23
UF
U 相标志位,U 相信号翻转时置 1
22
VF
V 相标志位,V 相信号翻转时置 1
21
WF
W 相标志位,W 相信号翻转时置 1
SR 位域
VFIE
WFIE
RW
RW
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
x
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
RSVD
UFIE
0
20
N/A
RSVD
21
RW
22
N/A
23
RSVD
0
24
N/A
0
25
RSVD
0
26
RSVD
PHDLYIE
RW
0
27
N/A
PHUPTIE
PHPREIE
RW
28
RW
29
WDGIE
30
RW
31
IRQEN (0x2C)
N/A
42.4.9
x
IRQEN [31:0]
位域
名称
描述
31
WDGIE
30
PHUPTIE
PHUPTF 标志位中断请求使能位
29
PHPREIE
PHPREF 标志位中断请求使能位
28
PHDLYIE
PHDLYF 标志位中断请求使能位
23
UFIE
UF 标志位中断请求使能位
22
VFIE
VF 标志位中断请求使能位
21
WFIE
WF 标志位中断请求使能位
WDGF 标志位中断请求使能位
IRQEN 位域
42.4.10
x
x
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
x
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
WCNT
30
RO
N/A
RSVD
31
COUNT[W] (0x30 + 0x10 * n)
x
0
COUNT[W] [31:0]
位域
名称
27-0
WCNT
描述
W 相计数器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
621/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
霍尔传感器接口 HALL
描述
COUNT[W] 位域
42.4.11
27
26
25
24
23
22
21
20
19
18
17
16
15
14
x
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
VCNT
13
RO
0
28
RSVD
RSVD
N/A
0
29
N/A
RSVD
30
N/A
31
COUNT[V] (0x34 + 0x10 * n)
x
0
COUNT[V] [31:0]
位域
名称
27-0
VCNT
描述
V 相计数器
COUNT[V] 位域
COUNT[U] (0x38 + 0x10 * n)
VSTAT
WSTAT
RO
0
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13
UCNT
USTAT
RO
28
RO
29
DIR
30
RO
31
RO
42.4.12
0
COUNT[U] [31:0]
位域
名称
描述
旋转反向
31
DIR
0:电机正向旋转
1:电机反向旋转
U 相输入信号状态
30
USTAT
1:U 相输入为逻辑 1
0:U 相输入为逻辑 0
V 相输入信号状态
29
VSTAT
1:V 相输入为逻辑 1
0:V 相输入为逻辑 0
W 相输入信号状态
28
WSTAT
1:W 相输入为逻辑 1
0:W 相输入为逻辑 0
27-0
UCNT
U 相计数器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
622/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
霍尔传感器接口 HALL
描述
COUNT[U] 位域
42.4.13
COUNT[TMR] (0x3C + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
TIMER
31
0
COUNT[TMR] [31:0]
位域
名称
描述
31-0
TIMER
定时器计数器
COUNT[TMR] 位域
42.4.14
HIS[HIS0] (0x70 + 0x8 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
UHIS0
31
0
HIS[HIS0] [31:0]
位域
名称
31-0
UHIS0
描述
U 相计数器日志 0,U 相输入上升沿时从 U 相计数器载入
HIS[HIS0] 位域
42.4.15
HIS[HIS1] (0x74 + 0x8 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
UHIS1
31
0
HIS[HIS1] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
623/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
UHIS1
霍尔传感器接口 HALL
描述
U 相计数器日志 1,U 相输入下降沿时从 U 相计数器载入
HIS[HIS1] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
624/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
互联管理器 TRGM
互联管理器 TRGM
43
在本产品上,多个外设的输入输出信号可以相互连接,使得多个外设可以相互配合使用。互联管理器可以配
置这些连接。
互联管理器支持若干输入输出(IO)
,可以把这些 IO 分配给连接到互联管理器的外设,用作它们的输入或者
输出。
本产品上,互联管理器的输入信号分配,请查阅小节 39.4.1。
本产品上,互联管理器的输出信号分配,请查阅小节 39.4.2。
互联管理器输入配有数字滤波器,可以对一些信号进行滤波。
本产品上,互联管理器的数字滤波器分配,请查阅小节 39.4.4。
互联管理器也管理外设的 DMA 请求,把选中的 DMA 请求发送到 DMA 控制器。
本产品上,互联管理器的 DMA 请求信号分配,请查阅小节 39.4.3。
特性总结
43.1
本章节介绍互联管理器 TRGM(Trigger Manager)的主要特性:
● 多路复选器(MUX)阵列
● 支持多个输入和多个输出
● 每个输出都可以单独配置,从众多输入中选择
● 输入信号数字滤波器
● 输出信号极性取反
● 信号边沿到脉冲转换
● DMA 请求管理,管理 PWMT,QDEC 和 HALL 的 DMA 请求
43.2
功能描述
本章节描述互联管理器 TRGM 的功能。
43.2.1
管理器信号输入输出复选器
用户通过配置互联管理器寄存器,
可以把 TRGM 的任意输入信号连接到互相管理器的输出,
配置 TRGOCFGx[OCFG]
位来从 TRGM 的输入中选择一个,作为 OUTx 的输出。
43.2.2
输出配置
对于互联管理器的输出,在选择了信号输入后,用户还可以通过配置 TRGOCFGx[OPOL] 位,对输出取反。
TRGOCFGx[OPOL] 位置 0 时,输出信号不变,置 1 时,输出信号取反。
此外,互联管理器的输出配置支持对信号进行边沿到脉冲的转换。TRGOCFGx[REDG2PEN] 位置 1 时,输
入信号的每一个上升沿,都会输出宽度为一个互联管理器时钟周期长度的脉冲。
TRGOCFGx[FEDG2PEN] 位置 1 时,输入信号的每一个下降沿,都会输出宽度为一个互联管理器时钟周期
长度的脉冲。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
625/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
43.2.3
互联管理器 TRGM
数字滤波器
互联管理器 TRGM 为部分输入信号提供数字滤波器,用户可以通过 FILTCFGx[MODE] 寄存器滤波器的工作
模式:
● 3’b000,旁路模式,数字滤波器关闭
● 3’b100,滤刺模式,滤波器输入翻转后,输出也会立即翻转,之后会在一定时间内无视滤波器的输入。这
个模式下,滤波器输出会紧随输入,同时会避免输出信号出现毛刺。
● 3’b101,延时滤波器,滤波器输入翻转后需要保持一定时间,滤波器输出才会翻转
● 3’b110,滤峰模式,滤波器输入置逻辑 0 后,需要保持一定时间,滤波器输出才会置逻辑 0,而滤波器输
入置 1,滤波器输出会立即置 1,这个模式的目的是滤除不够长的输入波峰。
● 3’b111,滤谷模式,滤波器输入置逻辑 1 后,需要保持一定时间,滤波器输出才会置逻辑 1,而滤波器输
入置 0,滤波器输出会立即置 0,这个模式的目的是滤除不够长的输入波谷。
用户可以通过 FILTCFGx[FILTLEN] 寄存器位配置滤波器的滤波宽度。单位是互联管理器的时钟周期。
用户可以通过把 FILTCFGx[OUTINV] 位置 1 来将滤波器的输出取反。
43.2.4
DMA 请求管理
互联管理器支持管理与它互联的部分外设的 DMA 请求,这些外设的 DMA 请求通过互联管理器转发到 DMAMUX。
互联管理器支持 4 个 DMA 请求,用户可以配置 DMACFG0∼ DMACFG3 寄存器,从下表中选择输出到 DMA
控制器的 DMA 请求。
43.3
TRGM 寄存器列表
TRGM 的寄存器列表如下:
TRGM0 base address: 0xF020C000
TRGM1 base address: 0xF021C000
地址偏移
名称
描述
复位值
0x0000
FILTCFG[PWM_IN0]
滤波器配置寄存器
0x00000000
0x0004
FILTCFG[PWM_IN1]
滤波器配置寄存器
0x00000000
0x0008
FILTCFG[PWM_IN2]
滤波器配置寄存器
0x00000000
0x000C
FILTCFG[PWM_IN3]
滤波器配置寄存器
0x00000000
0x0010
FILTCFG[PWM_IN4]
滤波器配置寄存器
0x00000000
0x0014
FILTCFG[PWM_IN5]
滤波器配置寄存器
0x00000000
0x0018
FILTCFG[PWM_IN6]
滤波器配置寄存器
0x00000000
0x001C
FILTCFG[PWM_IN7]
滤波器配置寄存器
0x00000000
0x0020
FILTCFG[TRGM_IN0]
滤波器配置寄存器
0x00000000
0x0024
FILTCFG[TRGM_IN1]
滤波器配置寄存器
0x00000000
0x0028
FILTCFG[TRGM_IN2]
滤波器配置寄存器
0x00000000
0x002C
FILTCFG[TRGM_IN3]
滤波器配置寄存器
0x00000000
0x0030
FILTCFG[TRGM_IN4]
滤波器配置寄存器
0x00000000
0x0034
FILTCFG[TRGM_IN5]
滤波器配置寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
626/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
互联管理器 TRGM
名称
描述
复位值
0x0038
FILTCFG[TRGM_IN6]
滤波器配置寄存器
0x00000000
0x003C
FILTCFG[TRGM_IN7]
滤波器配置寄存器
0x00000000
0x0040
FILTCFG[TRGM_IN8]
滤波器配置寄存器
0x00000000
0x0044
FILTCFG[TRGM_IN9]
滤波器配置寄存器
0x00000000
0x0048
FILTCFG[TRGM_IN10]
滤波器配置寄存器
0x00000000
0x004C
FILTCFG[TRGM_IN11]
滤波器配置寄存器
0x00000000
0x0100
TRGOCFG[TRGM_OUT0]
TRGM 输出配置寄存器
0x00000000
0x0104
TRGOCFG[TRGM_OUT1]
TRGM 输出配置寄存器
0x00000000
0x0108
TRGOCFG[TRGM_OUT2]
TRGM 输出配置寄存器
0x00000000
0x010C
TRGOCFG[TRGM_OUT3]
TRGM 输出配置寄存器
0x00000000
0x0110
TRGOCFG[TRGM_OUT4]
TRGM 输出配置寄存器
0x00000000
0x0114
TRGOCFG[TRGM_OUT5]
TRGM 输出配置寄存器
0x00000000
0x0118
TRGOCFG[TRGM_OUT6]
TRGM 输出配置寄存器
0x00000000
0x011C
TRGOCFG[TRGM_OUT7]
TRGM 输出配置寄存器
0x00000000
0x0120
TRGOCFG[TRGM_OUT8]
TRGM 输出配置寄存器
0x00000000
0x0124
TRGOCFG[TRGM_OUT9]
TRGM 输出配置寄存器
0x00000000
0x0128
TRGOCFG[TRGM_OUT10]
TRGM 输出配置寄存器
0x00000000
0x012C
TRGOCFG[TRGM_OUT11]
TRGM 输出配置寄存器
0x00000000
0x0130
TRGOCFG[TRGM_OUTX0]
TRGM 输出配置寄存器
0x00000000
0x0134
TRGOCFG[TRGM_OUTX1]
TRGM 输出配置寄存器
0x00000000
0x0138
TRGOCFG[PWM_SYNCI]
TRGM 输出配置寄存器
0x00000000
0x013C
TRGOCFG[PWM_FRCI]
TRGM 输出配置寄存器
0x00000000
0x0140
TRGOCFG[PWM_FRCSYNCI]
TRGM 输出配置寄存器
0x00000000
0x0144
TRGOCFG[PWM_SHRLDSYNCI]
TRGM 输出配置寄存器
0x00000000
0x0148
TRGOCFG[PWM_FAULTI0]
TRGM 输出配置寄存器
0x00000000
0x014C
TRGOCFG[PWM_FAULTI1]
TRGM 输出配置寄存器
0x00000000
0x0150
TRGOCFG[PWM_FAULTI2]
TRGM 输出配置寄存器
0x00000000
0x0154
TRGOCFG[PWM_FAULTI3]
TRGM 输出配置寄存器
0x00000000
0x0158
TRGOCFG[PWM_IN8]
TRGM 输出配置寄存器
0x00000000
0x015C
TRGOCFG[PWM_IN9]
TRGM 输出配置寄存器
0x00000000
0x0160
TRGOCFG[PWM_IN10]
TRGM 输出配置寄存器
0x00000000
0x0164
TRGOCFG[PWM_IN11]
TRGM 输出配置寄存器
0x00000000
0x0168
TRGOCFG[PWM_IN12]
TRGM 输出配置寄存器
0x00000000
0x016C
TRGOCFG[PWM_IN13]
TRGM 输出配置寄存器
0x00000000
0x0170
TRGOCFG[PWM_IN14]
TRGM 输出配置寄存器
0x00000000
0x0174
TRGOCFG[PWM_IN15]
TRGM 输出配置寄存器
0x00000000
0x0178
TRGOCFG[PWM_IN16]
TRGM 输出配置寄存器
0x00000000
0x017C
TRGOCFG[PWM_IN17]
TRGM 输出配置寄存器
0x00000000
0x0180
TRGOCFG[PWM_IN18]
TRGM 输出配置寄存器
0x00000000
0x0184
TRGOCFG[PWM_IN19]
TRGM 输出配置寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
627/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
互联管理器 TRGM
名称
描述
复位值
0x0188
TRGOCFG[PWM_IN20]
TRGM 输出配置寄存器
0x00000000
0x018C
TRGOCFG[PWM_IN21]
TRGM 输出配置寄存器
0x00000000
0x0190
TRGOCFG[PWM_IN22]
TRGM 输出配置寄存器
0x00000000
0x0194
TRGOCFG[PWM_IN23]
TRGM 输出配置寄存器
0x00000000
0x0198
TRGOCFG[QEI_A]
TRGM 输出配置寄存器
0x00000000
0x019C
TRGOCFG[QEI_B]
TRGM 输出配置寄存器
0x00000000
0x01A0
TRGOCFG[QEI_Z]
TRGM 输出配置寄存器
0x00000000
0x01A4
TRGOCFG[QEI_H]
TRGM 输出配置寄存器
0x00000000
0x01A8
TRGOCFG[QEI_PAUSE]
TRGM 输出配置寄存器
0x00000000
0x01AC
TRGOCFG[QEI_SNAPI]
TRGM 输出配置寄存器
0x00000000
0x01B0
TRGOCFG[HALL_U]
TRGM 输出配置寄存器
0x00000000
0x01B4
TRGOCFG[HALL_V]
TRGM 输出配置寄存器
0x00000000
0x01B8
TRGOCFG[HALL_W]
TRGM 输出配置寄存器
0x00000000
0x01BC
TRGOCFG[HALL_SNAPI]
TRGM 输出配置寄存器
0x00000000
0x01C0
TRGOCFG[ADC0_STRGI]
TRGM 输出配置寄存器
0x00000000
0x01C4
TRGOCFG[ADC1_STRGI]
TRGM 输出配置寄存器
0x00000000
0x01C8
TRGOCFG[ADC2_STRGI]
TRGM 输出配置寄存器
0x00000000
0x01CC
TRGOCFG[ADC3_STRGI]
TRGM 输出配置寄存器
0x00000000
0x01D0
TRGOCFG[ADCX_PTRGI0A]
TRGM 输出配置寄存器
0x00000000
0x01D4
TRGOCFG[ADCX_PTRGI0B]
TRGM 输出配置寄存器
0x00000000
0x01D8
TRGOCFG[ADCX_PTRGI0C]
TRGM 输出配置寄存器
0x00000000
0x01DC
TRGOCFG[GPTMRA_SYNCI]
TRGM 输出配置寄存器
0x00000000
0x01E0
TRGOCFG[GPTMRA_IN2]
TRGM 输出配置寄存器
0x00000000
0x01E4
TRGOCFG[GPTMRA_IN3]
TRGM 输出配置寄存器
0x00000000
0x01E8
TRGOCFG[GPTMRB_SYNCI]
TRGM 输出配置寄存器
0x00000000
0x01EC
TRGOCFG[GPTMRB_IN2]
TRGM 输出配置寄存器
0x00000000
0x01F0
TRGOCFG[GPTMRB_IN3]
TRGM 输出配置寄存器
0x00000000
0x01F4
TRGOCFG[CMPX_WIN]
TRGM 输出配置寄存器
0x00000000
0x01F8
TRGOCFG[CAN_PTPC0_CAP]
TRGM 输出配置寄存器
0x00000000
0x01FC
TRGOCFG[CAN_PTPC1_CAP]
TRGM 输出配置寄存器
0x00000000
0x0200
DMACFG[0]
DMA 请求配置寄存器
0x00000000
0x0204
DMACFG[1]
DMA 请求配置寄存器
0x00000000
0x0208
DMACFG[2]
DMA 请求配置寄存器
0x00000000
0x020C
DMACFG[3]
DMA 请求配置寄存器
0x00000000
0x0400
GCR
通用控制寄存器
0x00000000
表 200: TRGM 寄存器列表
43.4
TRGM 寄存器描述
TRGM 的寄存器详细说明如下:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
628/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
FILTCFG (0x0 + 0x4 * n)
x
x
x
x
x
x
x
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
15
RW
N/A
x
16
0
14
13
0
12
11
10
9
8
7
6
0
0
0
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
0
FILTLEN
25
RW
26
SYNCEN
27
RW
28
MODE
29
RW
30
RSVD
31
OUTINV
43.4.1
互联管理器 TRGM
FILTCFG [31:0]
位域
名称
描述
16
OUTINV
1:滤波器输出取反
0:滤波器输出不变
此位域定义了滤波器的模式
000:旁路模式
15-13
100:滤刺模式
MODE
101:延时滤波器
110:滤峰模式
111:滤谷模式
12
SYNCEN
11-0
FILTLEN
1:将滤波器输入信号于 TRGM 时钟同步
0:不进行同步(有可能会导致时序问题)
此位域设置滤波器的长度,单位是 TRGM 时钟周期
FILTCFG 位域
24
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
x
N/A
x
8
7
6
0
0
0
RW
25
FEDG2PEN
26
REDG2PEN
27
RW
28
RW
29
OUTINV
30
RSVD
31
TRIGOSEL
TRGOCFG (0x100 + 0x4 * n)
RW
43.4.2
TRGOCFG [31:0]
位域
名称
描述
8
OUTINV
7
FEDG2PEN
1: 将输入信号的下降沿转化为输出一个脉冲
6
REDG2PEN
1: 将输入信号的上升沿转化为输出一个脉冲
5-0
TRIGOSEL
此位域从 TRGM 输入中选择一个作为 TRGM 输出
1:TRGM 输出取反
0:TRGM 输出不变
TRGOCFG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
629/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
DMACFG (0x200 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
x
2
1
0
0
0
0
RW
N/A
RSVD
31
DMASRCSEL
43.4.3
互联管理器 TRGM
DMACFG [31:0]
位域
名称
描述
4-0
DMASRCSEL
此位域选择 DMA 请求之一,作为 TRGM 的 DMA 请求
DMACFG 位域
GCR (0x400)
30
29
28
27
26
25
24
23
22
x
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
0
RW
N/A
RSVD
31
TRGOPEN
43.4.4
x
GCR [31:0]
位域
名称
11-0
TRGOPEN
描述
此位域使能 TRGM 输出到 IO
GCR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
630/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
同步定时器 SYNT
同步定时器 SYNT
44
本章节介绍同步定时器 SYNT 的主要功能和特性。
44.1
特性总结
本章节介绍同步定时器 SYNT 的主要特性:
● 32 位计数器和重载寄存器
● 支持 4 通道,每个通道支持一个比较寄存器
● 支持输出同步事件
44.2
功能描述
同步定时器有一个 32 位的计数器和 32 位的重载寄存器。
用户可以把 GCR[CEN] 位置 1 来使能计数器,使能以后,计数器总是从 0 开始计数,当计时器的值到达重载
寄存器 RLD 值时,计数器恢复到 0 开始继续计数。
用户也可以通过 GCR[CRST] 位来把计数器复位到 0。
同步定时器支持 4 个通道,每个通道配置有 32 位比较寄存器 CMPx。
当计数器计数达到比较寄存器值时,会输出长度为一个同步定时器时钟脉冲的比较事件。这个事件可以通过
互联管理器连接到电机系统的其他模块,比如 PWM,QEI,HAL 等,用作同步。
例如,通过连接到 PWM 的同步触发输入(SYNCI)
,可让 4 个电机系统精确到同一时钟周期开始运转,也可
精确调节 4 个电机系统的相位差。
注意:同步定时器设计用于片上电机系统间的同步,工作时钟与电机系统同步,不能用于其他时钟域的外设。
同步定时器不支持生成中断或者 DMA 请求。
44.3
SYNT 寄存器列表
SYNT 的寄存器列表如下:
SYNT base address: 0xF0240000
地址偏移
名称
描述
复位值
0x0000
GCR
全局控制寄存器
0x00000000
0x0004
RLD
计数器重载寄存器
0x00000000
0x000C
CNT
计数器
0x00000000
0x0020
CMP[0]
比较器
0x00000000
0x0024
CMP[1]
比较器
0x00000000
0x0028
CMP[2]
比较器
0x00000000
0x002C
CMP[3]
比较器
0x00000000
表 201: SYNT 寄存器列表
44.4
SYNT 寄存器详细信息
SYNT 的寄存器详细说明如下:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
631/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
CEN
29
RW
30
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
N/A
RSVD
31
CRST
GCR (0x0)
RW
44.4.1
同步定时器 SYNT
x
1
0
GCR [31:0]
位域
名称
1
CRST
0
CEN
描述
1: 复位计数器
软件需要清零此位以退出复位状态
1: 使能计数器
GCR 位域
44.4.2
RLD (0x4)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
RLD
31
0
RLD [31:0]
位域
名称
描述
31-0
RLD
计数器的重载值
RLD 位域
44.4.3
CNT (0xC)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RO
CNT
31
0
CNT [31:0]
位域
名称
描述
31-0
CNT
计数器
CNT 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
632/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
44.4.4
同步定时器 SYNT
CMP (0x20 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CMP
31
0
CMP [31:0]
位域
名称
31-0
CMP
描述
比较器值,当计数器计数到达比较器值时,输出长度为一个时钟
脉冲的比较事件
CMP 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
633/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
定时器概述
定时器概述
45
本章节介绍了本产品的定时器。本产品上的定时器包括通用定时器,看门狗定时器和实时时钟。
45.1
通用定时器 GPTMR, NTMR, PTMR
本产品支持 6 个通用定时器,每个通用定时器支持 4 个通道,每个通道支持 32 位计数器,重载寄存器和一
个输入捕获/输出比较通道,支持通用计时,输入捕获,输出比较,PWM 生成,以及产生中断和 DMA 请求。
● 4 个定时器位于系统电源域称为通用定时器 GPTMR0∼3
● 1 个定时器位于系统电源域的 CONN 子系统,称为网络定时器 NTMR0
● 1 个定时器位于电源管理域,称为电源管理域定时器 PTMR。
本产品上,GPTMR0∼3 的 4 个输入捕获/输出比较通道中,通道 0 和 1 的信号连接到 IO 上,通道 2 和 3 连接
到电机控制单元的各个互联管理器上。GPTMR0∼3 的计数器同步输入 SYNCI,来自不同的互联管理器:GPTMR0
和 GPTMR1 的 SYNCI 来自 TRGM0,GPTMR2 和 GPTMR3 的 SYNCI 来自 TRGM1。
GPTMR0∼3 的内部信号互联细节,请查阅节 39.4。
本产品上,NTMR0 的通道信号没有连接到 IO 上,而是连接部分通讯外设信号:
● NTMR0 通道 0 输入捕获连接 ENET0 PTP 输出 0
● NTMR0 通道 1 输入捕获连接 ENET0 PTP 输出 1
● NTMR0 通道 2 输入捕获连接 USB0 SOF
● NTMR0 通道 3 输入捕获连接 ENET0 PTP 输出 3
本产品上,PTMR 的 4 个输入捕获/输出比较通道连接到电源管理域 IO(GPIO 端口 Y)。PTMR 可以在系统电
源域电时保持工作。PTMR 中断可以把系统从低功耗模式下唤醒。PTMR 不支持生成 DMA 请求。
45.2
看门狗定时器 WDG, PWDG
本产品支持 3 个看门狗定时器,看门狗定时器可以防止系统因为软件或者硬件的错误而锁死。看门狗定时器
支持在软件喂狗超时时产生中断,或者生成系统复位。
其中 2 个位于系统电源域称为 WDG0∼1,WDGx 的时钟为 CLK_TOP_AHB,看门狗计数器外部时钟来自
CLK_32K。
1 个位于电源管理域,称为 PWDG。PWDG 可以在系统电源域掉电时保持工作。PWDG 的时钟为 CLK_24M,
看门狗计数器外部时钟为 CLK_32K。PWDG 支持从电源管理域 IO 上输出复位信号。
45.3
实时时钟 RTC
本产品支持 1 个实时时钟 RTC。RTC 位于电池备份域,可在系统仅有 VBAT 引脚供电时保持工作。RTC
时钟为 CLK_32K,支持以秒为单位计数,支持生成闹钟中断。RTC 的中断可以作为唤醒源,把系统从关机模式
SHUTDOWN 等低功耗模式下唤醒。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
634/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
定时器 TMR
定时器 TMR
46
本章节介绍定时器 TMR 的主要功能和特性。
特性总结
46.1
本章节介绍定时器 TMR 的主要特性:
● 定时器由 4 通道组成
● 单个通道配置一个 32 位分辨率计数器,支持向上模式
● 各个通道的计数器支持同步
● 单个通道支持可配置的 32 位重载寄存器
● 通道可同时用于输入捕获以及输出比较
● 单个通道支持 2 个输出比较器
● 支持捕获上升沿和/或者下降沿,支持测量 PWM 周期和占空比
● 支持生成 DMA 和中断请求
定时器的框图如图 86。
通道3
通道2
通道1
通道0
IN3
IN2
IN1
IN0
计数器
重载寄存器
比较器0
捕获电路
OUT3
OUT2
OUT1
OUT0
比较器1
图 86: 定时器框图
功能描述
46.2
本章节描述定时器各个子模块的功能。
46.2.1
定时器时间基准
定时器每个通道的时间基准模块的作用是决定定时器运行需要时间和周期。
它包含以下几部分:
● 32 位计数器
● 32 位的重载寄存器
计时器支持向上计数。
用户可以设置 CHxCR [CEN] 位使能计数器,使能以后,计数器总是从 0 开始计数,当计时器的值到达重载
值时,重载标志位置 1,计数器恢复到 0 开始继续计数。
用户可以通过 CHxCR [CNTRST] 位随时复位计数器。把 CHxCR[CNTRST] 位置 1 可以使计数器归 0。需要
再把 CHxCR[CNTRST] 位置 0,计数器才会重新开始计数。通过 CHxCR[CNTRST] 位重置计数器的同时,也会
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
635/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
定时器 TMR
重置所有的输入捕获值寄存器,同时把输出比较的输出重置到 CHxCR[CMPINIT] 位定义的起始电平。
计数器寄存器为只读寄存器,用户可以通过以下步骤将计数器 CHxCNT 的值更新到期望值:
● 把期望值写入寄存器 CHxCNTUPTVAL
● 把 CHxCR [CNTUPT] 位置 1,将 CHxCNTNEW 的值载入计数器 CHxCNT
用户也可以利用定时器的同步触发输入(SYNCI)来同步计数器开始计数的时机。定时器支持软件同步和硬
件同步等同步机制:
● 把 CHxCR [SWSYNCIEN] 位置 1 后,软件同步可以通过写入 GCR[SWSYNCTx] 位触发,每个通道都有
独立的软件触发位。用户同时把多个通道的软件触发位置 1,即可实现这些通道的计时器同步开始计时。
● 硬件同步信号来自定时器外部,即 SYNCI,可以通过把 CHxCR [SYNCIREN] 或者 CHxCR [SYNCIFEN]
位置 1,来选择同步发生在 SYNCI 的上升沿还是下降沿。
● 此外,对于通道序号大于 0 的通道,用户可以选择把 CHxCR [SYNCFLW] 位置 1,这样,该通道计数器
会随着它之前通道的计数器同步。比如,通道 1 的计数器会与通道 0 的计数器同时同步。
如果通过同步触发输入重置计数器到 0,重载标志位 RLDF 也会置 1。
46.2.2
输出比较
通用定时器的通道支持输出比较功能。
使用通道输出比较功能配置流程如下:
● 通过 CHxCR [CMPINIT] 位配置输出的起始状态,该位置 0 时,表示计数器开始计数时,输出起始状态
为逻辑 0,反之,则计数器开始计数时输出起始状态为逻辑 1。此外,当计数器计重载时(CNT == RLD)
,
输出也会重置到起始状态。
● 配置通道的两个比较器,CMP0 和 CMP1。每当计数器达到任一比较器值时,通道输出会翻转。
如果配置 CMP0 和 CMP1 相等,当计数器达到比较器值时,输出无变化。
● 通过设置 CHxCR [CMPEN] 位为 1,打开输出比较功能
● 通过设置 CHxCR [CEN] 位为 1 使能计数器
用户如果需要输出边沿对齐 PWM,可以通过 CMP0 设置 PWM 的占空比,设置 CMP1 值等于重载寄存器值
(CMP1 = RLD)。
用户如果需要输出中心对齐 PWM,可以设置 0 < CMP0 < CMP1 < RLD。这样,PWM 周期即为 RLD 值,占
空比为(CMP1–CMP0)。
输出比较支持快速输出逻辑 0 和逻辑 1,即把 CMP0 配置为 32’hFFFFFFFF 时,通道输出始终为逻辑 0。把
CMP1 配置为 32’hFFFFFFFF,且 CMP0 不为全 1 时,通道输出始终为逻辑 1。
注意:CMP0 和 CMP1 的初始值均为 32’hFFFFFFFF,用户使用比较输出功能时需配置两个值。
46.2.3
输入捕获
通用定时器的通道支持输入捕获。
用户可以配置 CHxCR[CAPMODE] 位来选择不同的捕获模式:
● 3’b000,关闭输入捕获
● 3’b001,捕获上升沿,每当输入发生从逻辑 0 变成逻辑 1 时,将当前的计数器值保存到 CAPPOS 寄存
器,标志位 CHxCAPF 置 1
● 3’b010,捕获下降沿,每当输入发生从逻辑 1 变成逻辑 0 时,将当前的计数器值保存到 CAPNEG 寄存
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
636/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
定时器 TMR
器,标志位 CHxCAPF 置 1
● 3’b011,捕获上升和下降沿,每当在输入发生翻转时,将当前的计数器值保存到 CAPPOS 和 CAPNEG
寄存器,标志位 CHxCAPF 置 1
● 3’b100,PWM 测量模式,此时定时器会自动测量 PWM 周期和占空比。定时器会把输入信号两个上升沿
之间的计数值差(即 PWM 周期)保存在 CAPPRD 寄存器,把信号上升沿和下降沿之间的计数值差(即
PWM 占空比)保存在 CAPDTY 寄存器。CAPPOS 寄存器仍然保存最近一次信号上升沿时计数器的值。
在此模式下,捕获到输入信号上升沿时,标志位 CHxCAPF 置 1
注意,CAPPOS 寄存器、CAPNEG 寄存器、CAPPRD 寄存器和 CAPDTY 寄存器的值,根据不同设置,在捕获到新
的边沿时会刷新,之前捕获的值会丢失。
注意,在 PWM 测量模式时,用户应当注意计数器 CNT 的值,在相邻的信号边沿跳转之间发生计数器重载,计数器值
归 0 的话,CAPPRD 寄存器和 CAPDTY 寄存器的值会不准确。
46.2.4
中断和 DMA
定时器支持生成以下中断:
● CHxRLDF 标志位置 1,即计数器计数达到重载寄存器值,或者由同步触发输入 SYNCI 引发计数器重载
● CHxCMPxF 标志位置 1,即输出比较功能打开时,计数器计数达到 CMP0 或者 CMP1 值时
● CHxCAPF 标志位置 1 时,即输入捕获功能打开时,在输入通道捕获到指定边沿跳变时
通过设置 CHxIRQEN 寄存器相应位,可以打开或者关闭以上中断请求。
用户可以通过读取 CHxSR 寄存器查询所有的标志位,SR 寄存器相应标志位写 1 可以清除标志位。
定时器支持生成以下 DMA 请求:
● CHxRLDF 标志位置 1,即计数器计数达到重载寄存器值,或者由同步触发输入 SYNCI 引发计数器重载
● CHxCMPxF 标志位置 1,即输出比较功能打开时,计数器计数达到 CMP0 或者 CMP1 值时
● CHxCAPF 标志位置 1 时,即输入捕获功能打开时,在输入通道捕获到指定边沿跳变时
通过设置 CHxCR[DMASEL] 寄存器位,可以选择从以上请求中选择一个作为 DMA 请求输出。
通过设置 CHxCR [DMAEN] 寄存器位,可以打开或者关闭 DMA 请求。
46.2.5
调试模式支持
通用定时器支持调试功能,
即在内核进入调试模式(Debug)时,
暂停计数器计数。用户把 CHxCR[DBGPAUSE]
位置 1 时,此功能即生效。
46.3
46.3.1
定时器寄存器
寄存器说明
定时器的寄存器列表如下:
NTMR0 base address: 0xF2010000
GPTMR0 base address: 0xF3000000
GPTMR1 base address: 0xF3004000
GPTMR2 base address: 0xF3008000
GPTMR3 base address: 0xF300C000
PTMR base address: 0xF40E0000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
637/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
定时器 TMR
名称
描述
复位值
0x0000
CHANNEL[CH0][CR]
控制寄存器
0x00000000
0x0004
CHANNEL[CH0][CMP][CMP0]
比较寄存器 0
0x0008
CHANNEL[CH0][CMP][CMP1]
比较寄存器 1
0x000C
CHANNEL[CH0][RLD]
重载寄存器
0x0010
CHANNEL[CH0][CNTUPTVAL]
计数器更新值寄存器
0x00000000
0x0020
CHANNEL[CH0][CAPPOS]
上升沿捕获寄存器
0x00000000
0x0024
CHANNEL[CH0][CAPNEG]
下降沿捕获寄存器
0x00000000
0x0028
CHANNEL[CH0][CAPPRD]
PWM 周期测量寄存器
0x00000000
0x002C
CHANNEL[CH0][CAPDTY]
PWM 占空比测量寄存器
0x00000000
0x0030
CHANNEL[CH0][CNT]
计数器
0x00000000
0x0040
CHANNEL[CH1][CR]
控制寄存器
0x00000000
0x0044
CHANNEL[CH1][CMP][CMP0]
比较寄存器 0
0x0048
CHANNEL[CH1][CMP][CMP1]
比较寄存器 1
0x004C
CHANNEL[CH1][RLD]
重载寄存器
0x0050
CHANNEL[CH1][CNTUPTVAL]
计数器更新值寄存器
0x00000000
0x0060
CHANNEL[CH1][CAPPOS]
上升沿捕获寄存器
0x00000000
0x0064
CHANNEL[CH1][CAPNEG]
下降沿捕获寄存器
0x00000000
0x0068
CHANNEL[CH1][CAPPRD]
PWM 周期测量寄存器
0x00000000
0x006C
CHANNEL[CH1][CAPDTY]
PWM 占空比测量寄存器
0x00000000
0x0070
CHANNEL[CH1][CNT]
计数器
0x00000000
0x0080
CHANNEL[CH2][CR]
控制寄存器
0x00000000
0x0084
CHANNEL[CH2][CMP][CMP0]
比较寄存器 0
0x0088
CHANNEL[CH2][CMP][CMP1]
比较寄存器 1
0x008C
CHANNEL[CH2][RLD]
重载寄存器
0x0090
CHANNEL[CH2][CNTUPTVAL]
计数器更新值寄存器
0x00000000
0x00A0
CHANNEL[CH2][CAPPOS]
上升沿捕获寄存器
0x00000000
0x00A4
CHANNEL[CH2][CAPNEG]
下降沿捕获寄存器
0x00000000
0x00A8
CHANNEL[CH2][CAPPRD]
PWM 周期测量寄存器
0x00000000
0x00AC
CHANNEL[CH2][CAPDTY]
PWM 占空比测量寄存器
0x00000000
0x00B0
CHANNEL[CH2][CNT]
计数器
0x00000000
0x00C0
CHANNEL[CH3][CR]
控制寄存器
0x00000000
0xFFFFFFF0
0xFFFFFFF0
0xFFFFFFFF
0xFFFFFFF0
0xFFFFFFF0
0xFFFFFFFF
0xFFFFFFF0
0xFFFFFFF0
0xFFFFFFFF
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
638/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
定时器 TMR
地址偏移
名称
描述
复位值
0x00C4
CHANNEL[CH3][CMP][CMP0]
比较寄存器 0
0x00C8
CHANNEL[CH3][CMP][CMP1]
比较寄存器 1
0x00CC
CHANNEL[CH3][RLD]
重载寄存器
0x00D0
CHANNEL[CH3][CNTUPTVAL]
计数器更新值寄存器
0x00000000
0x00E0
CHANNEL[CH3][CAPPOS]
上升沿捕获寄存器
0x00000000
0x00E4
CHANNEL[CH3][CAPNEG]
下降沿捕获寄存器
0x00000000
0x00E8
CHANNEL[CH3][CAPPRD]
PWM 周期测量寄存器
0x00000000
0x00EC
CHANNEL[CH3][CAPDTY]
PWM 占空比测量寄存器
0x00000000
0x00F0
CHANNEL[CH3][CNT]
计数器
0x00000000
0x0200
SR
状态寄存器
0x00000000
0x0204
IRQEN
中断使能寄存器
0x00000000
0x0208
GCR
全局控制寄存器
0x00000000
0xFFFFFFF0
0xFFFFFFF0
0xFFFFFFFF
表 202: GPTMR 寄存器列表
定时器的寄存器详细说明如下:
0
0
0
0
0
0
7
6
0
0
5
4
3
0
0
0
2
1
0
0
CHANNEL[CR] [31:0]
位域
名称
31
CNTUPT
14
CNTRST
13
SYNCFLW
12
SYNCIFEN
1: 定时器同步输入 SYNCI 下降沿有效
11
SYNCIREN
1: 定时器同步输入 SYNCI 上升沿有效
10
CEN
描述
1: 将计数器值更新为 CNTUPTVAL 寄存器的值,该位置 1 后会
在 1 个周期后自动清 0
1: 复位计数器
用户需要清零此位,不然计时器始终处于复位状态
1: 该通道计数器会随着上一通道计数器的一起重载。
该位对定时器通道 0 不适用。
1: 使能计数器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
639/1016
0
CAPMODE
0
8
RW
x
9
DBGPAUSE
x
10
RW
x
11
DMAEN
x
12
SWSYNCIEN
x
13
RW
x
RSVD
x
N/A
x
14
RW
x
15
DMASEL
x
16
RW
x
17
CMPEN
x
18
RW
x
19
CEN
x
20
CMPINIT
x
21
RW
x
WO
0
22
RW
23
SYNCIREN
24
RW
25
SYNCFLW
26
SYNCIFEN
27
RW
28
RW
29
CNTRST
30
CNTUPT
31
CHANNEL[CR] (0x0 + 0x40 * n)
RW
46.3.2
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
定时器 TMR
描述
输出比较初始极性
9
1: 通道输出初始极性为逻辑高
CMPINIT
0: 通道输出初始极性为逻辑低
用户需要在把 CMPEN 位置 1 前设置此位
8
1: 使能此通道的输出比较功能
CMPEN
DMA 请求选择位:
00: 比较器 0 标志位 CMP0 置 1 时生产 DMA 请求
7-6
01: 比较器 0 标志位 CMP1 置 1 时生产 DMA 请求
DMASEL
10: 输入捕获标志位 CAPF 置 1 时生产 DMA 请求
11: 重载标志位 RLD 置 1 时生产 DMA 请求
1: 使能 DMA
5
DMAEN
4
SWSYNCIEN
3
DBGPAUSE
1: 使能软件计数器同步,该位置 1 时,计数器会在 SWSYNCT
位置 1 时重载
1: 调试模式下计数器会暂停
输入捕获模式配置位
100: PWM 测量模式,定时器会测量输入 PWM 的周期和占空比
2-0
011: 捕获上升沿和下降沿
CAPMODE
010: 捕获下降沿
001: 捕获上升沿
000: 关闭输入捕获
CHANNEL[CR] 位域
46.3.3
CHANNEL[CMP] (0x4 + 0x40 * n + 0x4 * m)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
RW
CMP
31
1
CHANNEL[CMP] [31:0]
位域
名称
描述
比较器值 0
31-0
CMP
全 1 时 (0xFFFFFFFF) 比较器输出始终为 0.
初始值为 0xFFFFFFF0,用户使用比较功能前需要配置此位和比
较寄存器 1
CHANNEL[CMP] 位域
46.3.4
CHANNEL[RLD] (0xC + 0x40 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
640/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
RW
RLD
31
定时器 TMR
1
CHANNEL[RLD] [31:0]
位域
名称
描述
31-0
RLD
重载值
CHANNEL[RLD] 位域
46.3.5
CHANNEL[CNTUPTVAL] (0x10 + 0x40 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CNTUPTVAL
31
0
CHANNEL[CNTUPTVAL] [31:0]
位域
名称
描述
31-0
CNTUPTVAL
计数器更新值,当 CR 寄存器的 CNTUPT 位置 1 时,计数器更新
为此值
CHANNEL[CNTUPTVAL] 位域
46.3.6
CHANNEL[CAPPOS] (0x20 + 0x40 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
CAPPOS
31
0
CHANNEL[CAPPOS] [31:0]
位域
名称
31-0
CAPPOS
描述
输入信号上升沿捕获到的计数器值
CHANNEL[CAPPOS] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
641/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
46.3.7
定时器 TMR
CHANNEL[CAPNEG] (0x24 + 0x40 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
CAPNEG
31
0
CHANNEL[CAPNEG] [31:0]
位域
名称
描述
31-0
CAPNEG
输入信号下降沿捕获到的计数器值
CHANNEL[CAPNEG] 位域
46.3.8
CHANNEL[CAPPRD] (0x28 + 0x40 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
CAPPRD
31
0
CHANNEL[CAPPRD] [31:0]
位域
名称
描述
31-0
CAPPRD
PWM 测量模式下,测量的 PWM 周期长度
CHANNEL[CAPPRD] 位域
46.3.9
CHANNEL[CAPDTY] (0x2C + 0x40 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
MEAS_HIGH
31
0
CHANNEL[CAPDTY] [31:0]
位域
名称
31-0
MEAS_HIGH
描述
PWM 测量模式下,测量的 PWM 占空比长度
CHANNEL[CAPDTY] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
642/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
46.3.10
定时器 TMR
CHANNEL[CNT] (0x30 + 0x40 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
RO
COUNTER
31
0
CHANNEL[CNT] [31:0]
位域
名称
描述
31-0
COUNTER
32 位计数器值
CHANNEL[CNT] 位域
CH0RLDF
0
W1C
0
CH0CAPF
0
CH0CMP0F
0
W1C
0
W1C
0
CH0CMP1F
0
W1C
0
CH1RLDF
0
CH1CAPF
0
W1C
0
W1C
0
12
CH1CMP1F
0
13
CH1CMP0F
0
14
W1C
0
N/A
0
15
W1C
0
16
CH2RLDF
0
17
W1C
0
18
CH2CAPF
0
19
CH2CMP0F
0
20
W1C
0
21
CH2CMP1F
0
22
W1C
0
23
CH3RLDF
24
CH3CAPF
25
W1C
26
W1C
27
CH3CMP0F
28
W1C
29
CH3CMP1F
30
RSVD
31
W1C
SR (0x200)
W1C
46.3.11
0
0
0
0
0
0
0
0
SR [31:0]
位域
名称
描述
15
CH3CMP1F
通道 3 比较器 1 标志位
14
CH3CMP0F
通道 3 比较器 0 标志位
13
CH3CAPF
通道 3 输入捕获标志位
12
CH3RLDF
通道 3 重载标志位
11
CH2CMP1F
通道 2 比较器 1 标志位
10
CH2CMP0F
通道 2 比较器 0 标志位
9
CH2CAPF
通道 2 输入捕获标志位
8
CH2RLDF
通道 2 重载标志位
7
CH1CMP1F
通道 1 比较器 1 标志位
6
CH1CMP0F
通道 1 比较器 0 标志位
5
CH1CAPF
通道 1 输入捕获标志位
4
CH1RLDF
通道 1 重载标志位
3
CH0CMP1F
通道 0 比较器 1 标志位
2
CH0CMP0F
通道 0 比较器 0 标志位
1
CH0CAPF
通道 0 输入捕获标志位
0
CH0RLDF
通道 0 重载标志位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
643/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
定时器 TMR
描述
SR 位域
IRQEN (0x204)
CH0RLDEN
0
RW
1
CH0CAPEN
2
CH0CMP0EN
3
RW
4
RW
5
CH0CMP1EN
6
RW
7
CH1RLDEN
8
CH1CAPEN
0
9
RW
0
10
RW
0
11
CH1CMP1EN
0
12
CH1CMP0EN
0
13
RW
0
14
RW
0
N/A
0
15
CH2RLDEN
0
16
RW
0
17
CH2CAPEN
0
18
CH2CMP0EN
0
19
RW
0
20
RW
0
21
CH2CMP1EN
0
22
RW
0
23
CH3RLDEN
24
CH3CAPEN
25
RW
26
RW
27
CH3CMP0EN
28
RW
29
CH3CMP1EN
30
RSVD
31
RW
46.3.12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
IRQEN [31:0]
位域
名称
描述
15
CH3CMP1EN
通道 3 比较器 1 标志位中断使能位
14
CH3CMP0EN
通道 3 比较器 0 标志位中断使能位
13
CH3CAPEN
通道 3 输入捕获标志位中断使能位
12
CH3RLDEN
通道 3 重载标志位中断使能位
11
CH2CMP1EN
通道 2 比较器 1 标志位中断使能位
10
CH2CMP0EN
通道 2 比较器 0 标志位中断使能位
9
CH2CAPEN
通道 2 输入捕获标志位中断使能位
8
CH2RLDEN
通道 2 重载标志位中断使能位
7
CH1CMP1EN
通道 1 比较器 1 标志位中断使能位
6
CH1CMP0EN
通道 1 比较器 0 标志位中断使能位
5
CH1CAPEN
通道 1 输入捕获标志位中断使能位
4
CH1RLDEN
通道 1 重载标志位中断使能位
3
CH0CMP1EN
通道 0 比较器 1 标志位中断使能位
2
CH0CMP0EN
通道 0 比较器 0 标志位中断使能位
1
CH0CAPEN
通道 0 输入捕获标志位中断使能位
0
CH0RLDEN
通道 0 重载标志位中断使能位
IRQEN 位域
GCR (0x208)
30
29
28
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
1
0
0
0
RW
N/A
RSVD
31
SWSYNCT
46.3.13
x
GCR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
644/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
3-0
SWSYNCT
定时器 TMR
描述
计数器软件同步位,每一位对应一个通道
GCR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
645/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
看门狗 WDG
看门狗 WDG
47
本章节介绍看门狗 WDG 的功能和特性。
特性总结
47.1
看门狗 WDG 在打开后,需要软件在一定时间期限内执行“喂狗”操作,当软件执行由于各种原因出现错误,
无法在规定时间内“喂狗”时,生成中断乃至复位。看门狗 WDG 的主要特性如下:
● 支持中断超时计数器,在“喂狗”超时时生成中断
● 支持复位超时计数器,在“喂狗”超时时生成复位
● 支持使用总线时钟或者外部时钟
● 支持使用 Magic code 喂狗
● 支持寄存器写保护,可利用 Magic code 解锁写保护
功能描述
47.2
本章节描述看门狗 WDG 的功能。
47.2.1
WDG 超时中断和超时复位
WDG 的喂狗超时机制分为 2 部分,超时中断和超时复位。在 WDG 使能之后,首先进行超时中断的倒计时,
如果期间没有“喂狗”,在超时中断到期后,WDG 支持生产中断警报。随后 WDG 进行超时复位的倒计时,如果
期间仍然没有“喂狗”,WDG 会生成复位。
用户可以通过 INTTIME 位设置超时中断的时长,如果把 CTRL [INTEN] 位置 1,超时后 WDG 会产生中断报
警。注意,即使 CTRL [INTEN] 位清 0,WDG 仍然会先进行超时中断倒计时,只是不再产生中断报警。
用户可以通过 RSTTIME 位设置超时复位的时长,在超时中断到期后,进行超时复位倒计时,如果把 CTRL
[RSTEN] 位置 1,超时后 WDG 会产生复位。
INTTIME 和 RSTTIME 位设置的时长单位为看门狗 WDG 的计数器时钟周期数。WDG 可以配置使用以下时
钟:
● CLKSEL = 1’b0,使用外部时钟
● CLKSEL = 1’b1,使用 WDG 时钟
有关 WDG 时钟和外部时钟的具体情况,请用户查阅系统时钟配置的相关章节。
47.2.2
WDG 喂狗
通常把将看门狗 WDG 计数器重置的操作,称为“喂狗”。软件通过在恰当的时机“喂狗”
,从而避免了 WDG
计数器因为超时而生成中断,乃至复位。
用户需要对 RESTART 寄存器的 RESTART 位域写入 Magic Code 来“喂狗”
。WDG“喂狗”的 Magic Code
为 0xCAFE。
47.2.3
WDG 寄存器解锁
WDG 的 CTRL 寄存器和 RESTART 寄存器受到写保护。用户需要通过解锁操作,才能执行寄存器写操作,进
行 WDG 配置以及“喂狗”。
用户需要对 WREN 寄存器的 WEN 位域写入 Magic Code 进行解锁,解锁的 Magic Code 为 0x5AA5。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
646/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
看门狗 WDG
WDG 寄存器列表
47.3
WDG 的寄存器列表如下:
WDG0 base address: 0xF0090000
WDG1 base address: 0xF0094000
PWDG base address: 0xF40E8000
地址偏移
名称
描述
复位值
0x0010
CTRL
控制寄存器
0x00000000
0x0014
RESTART
计时器重启寄存器
0x00000000
0x0018
WREN
写保护寄存器
0x00000000
0x001C
ST
状态寄存器
0x00000000
表 203: WDG 寄存器列表
WDOG 寄存器描述
47.4
WDG 的寄存器详细说明如下:
CTRL (0x10)
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
x
x
x
x
x
x
x
x
x
x
0
8
7
6
0
0
0
RW
N/A
x
9
0
5
4
0
0
3
2
名称
0
0
0
描述
触发复位的时间设定:
0: 2^7 个计时时钟周期
1: 2^8 个计时时钟周期
2: 2^9 个计时时钟周期
10-8
RSTTIME
3: 2^10 个计时时钟周期
4: 2^11 个计时时钟周期
5: 2^12 个计时时钟周期
6: 2^13 个计时时钟周期
7: 2^14 个计时时钟周期
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
647/1016
0
0
CTRL [31:0]
位域
1
EN
x
21
RW
22
INTEN
23
CLKSEL
24
RW
25
RW
26
RSTEN
27
RW
28
INTTIME
29
RW
30
RSVD
31
RSTTIME
47.4.1
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
看门狗 WDG
描述
触发中断的时间设定:
0: 2^6 个计时时钟周期
1: 2^8 个计时时钟周期
2: 2^10 个计时时钟周期
3: 2^11 个计时时钟周期
4: 2^12 个计时时钟周期
5: 2^13 个计时时钟周期
6: 2^14 个计时时钟周期
7-4
7: 2^15 个计时时钟周期
INTTIME
8: 2^17 个计时时钟周期
9: 2^19 个计时时钟周期
10: 2^21 个计时时钟周期
11: 2^23 个计时时钟周期
12: 2^25 个计时时钟周期
13: 2^27 个计时时钟周期
14: 2^29 个计时时钟周期
15: 2^31 个计时时钟周期
3
RSTEN
使能看门狗超时复位
2
INTEN
使能看门狗超时中断
计时时钟选择:
1
CLKSEL
0:外部时钟
1:总线时钟
0
使能看门狗计时
EN
CTRL 位域
RESTART (0x14)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
N/A
WO
RSVD
31
RESTART
47.4.2
x
RESTART [31:0]
位域
名称
15-0
RESTART
描述
写入 magic number 能够复位并重新启动看门狗计时器
RESTART 位域
47.4.3
WREN (0x18)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
648/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
N/A
WO
WEN
RSVD
31
看门狗 WDG
x
WREN [31:0]
位域
名称
描述
15-0
WEN
写入 magic code 能够解锁 CTRL 和 RESTART 寄存器的写保护
WREN 位域
ST (0x1C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
ST [31:0]
位域
名称
描述
看门狗中断计时器状态:
0
INTEXPIRED
0
W1C
RSVD
31
INTEXPIRED
47.4.4
0:计时器未超时
1:计时器已超时
ST 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
649/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
实时时钟 RTC
实时时钟 RTC
48
48.1
特性总结
RTC 支持以下功能:
● 以秒为单位的时间计数
● 秒内计数
● 秒计数器和秒内计数器的锁存
● 两组定时器用于产生中断
● 定期重复
48.2
时间计数器
RTC 利用 32K 时钟源进行计时。提供一个 32 位的秒计数器,秒计数器允许写入,用以调整时钟的时间。
RTC 还提供一个秒内计数器,该计数器每个 32K 时钟周期计数一次,提供更为精确的时间信息。
为了避免秒内计数器和秒计数器读取时不同步,RTC 提供了数值锁存功能。锁存寄存器有两个,分别对应秒
计数器和秒内计数器。对任意一个锁存寄存器进行一次写操作,会触发两个锁存寄存器同时更新到当前计数器的
值,再读取两个锁存寄存器以获得同步时间。
48.3
定时器
RTC 能够设置定时,当计时时间与定时时间匹配时,能够产生中断,用于定时任务或唤醒系统。
如果增量寄存器 ALARMx_INC 设置了非零值,则每次定时器的匹配后,定时时间设置会自动增加 INCREASE
的值。利用该功能可以实现重复唤醒和中断的能力。
RTC 提供两组定时器设置。
定时器的匹配触发后即产生定时标志位,对该位写入 1 可完成对标志位的清零。
通过寄存器 ALARM_EN 来使能定时器匹配触发中断。
48.4
RTC 寄存器列表
RTC base address: 0xF5044000
地址偏移
名称
描述
复位值
0x0000
SECOND
秒计数器
0x00000000
0x0004
SUBSEC
秒内计数器
0x00000000
0x0008
SEC_SNAP
秒计数器快照
0x00000000
0x000C
SUB_SNAP
秒内计数器快照
0x00000000
0x0010
ALARM0
秒计数器比较寄存器 0
0x00000000
0x0014
ALARM0_INC
秒计数器匹配递增寄存器 0
0x00000000
0x0018
ALARM1
秒计数器比较寄存器 1
0x00000000
0x001C
ALARM1_INC
秒计数器匹配递增寄存器 1
0x00000000
0x0020
ALARM_FLAG
RTC 警报标志
0x00000000
0x0024
ALARM_EN
RTC 警报使能
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
650/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
实时时钟 RTC
名称
描述
复位值
表 204: RTC 寄存器列表
RTC 寄存器描述
48.5
48.5.1
SECOND (0x0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SECOND
31
0
SECOND [31:0]
位域
名称
描述
31-0
SECOND
秒计数器
SECOND 位域
48.5.2
SUBSEC (0x4)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RO
SUBSEC
31
0
SUBSEC [31:0]
位域
名称
描述
31-0
SUBSEC
秒内计数器
SUBSEC 位域
48.5.3
SEC_SNAP (0x8)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RW
SEC_SNAP
31
0
SEC_SNAP [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
651/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
SEC_SNAP
实时时钟 RTC
描述
秒计数器快照,写该寄存器会触发秒计数器和秒内计数器的快照
保存
SEC_SNAP 位域
48.5.4
SUB_SNAP (0xC)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SUB_SNAP
31
0
SUB_SNAP [31:0]
位域
名称
描述
31-0
SUB_SNAP
秒内计数器快照,写该寄存器会触发秒计数器和秒内计数器的快
照保存
SUB_SNAP 位域
48.5.5
ALARM0 (0x10)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ALARM
31
0
ALARM0 [31:0]
位域
名称
31-0
ALARM
描述
设置秒计数器的比较值 0,每次秒计数器与比较值 0 匹配时,
ALARM 位自动递增 ALARM0_INC 的值
ALARM0 位域
48.5.6
ALARM0_INC (0x14)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
652/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
INCREASE
31
实时时钟 RTC
0
ALARM0_INC [31:0]
位域
名称
描述
31-0
INCREASE
设置每次秒计数器与比较值 0 匹配时,ALARM 位的递增值
ALARM0_INC 位域
48.5.7
ALARM1 (0x18)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ALARM
31
0
ALARM1 [31:0]
位域
名称
描述
31-0
ALARM
设置秒计数器的比较值 1,每次秒计数器与比较值 1 匹配时,
ALARM 位自动递增 ALARM1_INC 的值
ALARM1 位域
48.5.8
ALARM1_INC (0x1C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
INCREASE
31
0
ALARM1_INC [31:0]
位域
名称
31-0
INCREASE
描述
设置每次秒计数器与比较值 1 匹配时,ALARM 位的递增值
ALARM1_INC 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
653/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
1
0
N/A
x
1
0
ALARM0
29
RW
30
RSVD
31
ALARM1
ALARM_FLAG (0x20)
RW
48.5.9
实时时钟 RTC
ALARM_FLAG [31:0]
位域
名称
描述
1
ALARM1
秒计数器与比较寄存器 1 匹配
0
ALARM0
秒计数器与比较寄存器 0 匹配
ALARM_FLAG 位域
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
ALARM_EN [31:0]
位域
名称
描述
1
ENABLE1
秒计数器与比较寄存器 1 匹配时的中断警报使能
0
ENABLE0
秒计数器与比较寄存器 0 匹配时的中断警报使能
ALARM_EN 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
654/1016
ENABLE0
29
RW
30
RSVD
31
ENABLE1
ALARM_EN (0x24)
RW
48.5.10
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通讯外设概述
通讯外设概述
49
本章节介绍了本产品的通讯外设。
49.1
通用异步收发器 UART,PUART
本产品支持 9 个通用异步收发器,支持与外部设备实现用于双向异步通信。
8 个通用异步收发器位于系统电源域,称为 UART0∼7。
1 个通用异步收发器位于电源管理域,称为 PUART。PUART 支持在系统电源域掉电时保持工作,产生的中
断可用于低功耗唤醒。PUART 不支持生成 DMA 请求。
49.2
串行外设总线 SPI
本产品支持 4 个串行外设总线 SPI,支持与外部设备实现全双工,同步的通信。SPI 支持经典单向 2 路数据
线模式,即 MISO,MOSI,也支持双向 2 路,4 路数据线模式,即 Dual-SPI 和 Quad-SPI。
49.3
集成电路总线 I2C
本产品支持 4 个集成电路总线 I2C。I2C 支持标准模式最大 100Kbps,快速模式最大 400Kbps 和快速 + 模式
最大 1Mbps。
。
49.4
控制器局域网 CAN
本产品支持 2 个控制器局域网 CAN0∼1,CAN 遵循 CAN 总线协议 2.0A 和 2.0B 协议,并支持 CAN-FD 协
议。
注意,本系列并不是所有产品型号都提供 CAN-FD 支持,请查询数据手册,了解具体型号是否支持 CAN-FD 协议。
本产品上,CAN 支持时间触发 CAN 通信,CAN0∼1 可以通过精确时间协议模块 PTPC 的时间戳输出端口直
接载入时间戳信息。
49.5
精确时间协议模块 PTPC
本产品支持 1 个精确时间协议模块 PTPC。PTPC 支持 2 套时间戳,可以生成秒和纳秒为分辨率的精确时间
戳信息供网络不同节点间同步时钟。
PTPC 支持 2 个时间戳输出端口,分别连接到 CAN0∼1,CAN 模块可以从这些端口直接载入时间戳信息。
PTPC 支持 2 个时间戳输入捕获信号 CAP0 和 CAP1,支持根据输入捕获信号捕获当前的时间戳。CAP0 和
CAP1 来自互联管理器 TRGM0∼1。PTPC 支持在时间戳匹配时,
输出 2 个时间戳输出比较 CMP0 和 CMP1。CMP0
和 CMP1 输出到互联管理器 TRGM0∼1。具体连接请查阅节 39.4。
49.6
以太网控制器 ENET
本产品支持 1 个以太网控制器 ENET。ENET 支持 IEEE802.3 标准以太网 MAC,支持 10/100 Mbps 数据传
输速率,支持 RMII 模式的 PHY。
本产品上,ENET 控制器支持事件输出信号 EVTO,可以把 ENET 的 PTP 输出 0∼2 通过 EVTO0∼2 经过 IO
输出。ENET 的 PTP 输出 3 输出到了互联管理器 TRGM0∼1。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
655/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
49.7
通讯外设概述
通用串行总线 USB
本产品支持 1 个通用串行总线 USB,USB 集成 HS PHY,支持 USB2.0 低速,全速,和高速传输。USB 支
持 Host,Device 和 OTG 模式。
本产品上,USB 控制器支持输出 USB 的 SOF (桢起始 Start of Frame) 信号,可以通过互联管理器 TRGM0∼1
连接到片上的其他模块。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
656/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用异步收发器 UART
通用异步收发器 UART
50
本章节介绍通用异步收发器 UART 的功能和特性。
特性总结
50.1
本章节介绍通用异步收发器 UART 的主要特性:
● 支持 5∼8 位数据长度
● 可配置停止位:1 位,1.5 位或者 2 位
● 可配置奇偶校验位:奇校验,偶校验,粘校验位
● 支持 DMA 数据传输
● 支持可配置波特率,支持独立的波特率生成时钟
● 支持硬件流控
● 支持奇偶校验错误,数据 FIFO 溢出等错误检测
● 16 字节的 TXFIFO 和 RXFIFO
● 支持各类中断
UART 的框图如图 87。
波特率控制
UART寄存器
寄存器接口
UART输出
TX FIFO
TX移位寄存器
TX控制器
RX FIFO
RX移位寄存器
RX控制器
UART输入
流控信号
Modem
控制器
图 87: UART 框图
50.2
功能描述
本章节描述通用异步收发器 UART 的功能。
50.2.1
UART 发送
UART 发送端由 TX FIFO 和 TX 移位寄存器和 TX 控制器组成。
TX FIFO 包含待发送的数据,并将数据传送到 TX 移位寄存器。
TX 移位寄存器为并行-串行转换器,把发送数据转换成串行的比特流。
TX 控制器在发送一个数据时,会生成一个 START 位,一个可配置的奇偶校验位 PARITY 位,和一个长度可
配的停止位。用户可以LCR寄存器 (Line Control Register) 来配置奇偶效验位和停止位。
TXFIFO 的写入口是THR寄存器 (Transmitter Holding Register)。用户需要把FCR寄存器 (FIFO Control Register) 的 FIFOE 位置 1,来打开 TXFIFO。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
657/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
50.2.2
通用异步收发器 UART
UART 接收
UART 接收端由 RX FIFO 和 RX 移位寄存器和 RX 控制器组成。
RX 控制器使用波特率控制模块生成的过采样时钟,对输入的每一位进行采样,并把收到的每一位移入 RX 移
位寄存器。
RX 移位寄存器对数据进行串行-并行转换,并把数据存入 RX FIFO。
RX FIFO 的读入口是RBR寄存器 (Receiver Buffer Register),用户需要把FCR寄存器 (FIFO Control Register)
的 FIFOE 位置 1,来打开 RXFIFO。
RX 控制器支持检测接收数据过程中的错误,如奇偶校验位错误,停止位错误,RX FIFO 溢出等。
50.2.3
波特率控制
波特率控制模块对 UART 时钟分频,得到波特率时钟,分频器为 16 位长,分别位于 2 个寄存器中,每个寄存
器存放 8 位分频值。分频值的 MSB 位于DLM寄存器 (Divisor Latch MSB),而 LSB 位于DLL寄存器 (Divisor Latch
LSB)。
UART 时钟与波特率的比率就是过采样率,过采样率OSC存放在OSCR寄存器 (Over Sample Control Register)。OSC默认值为 16。
分频值的公式如 (50.2.3):
Divisor =
fuart_clock
Baudrate × OS R
RX 控制器利用过采样时钟对输入数据进行采样。假设过采样率OSC为 16 当检测到输入信号第一个下降沿
时 (起始 START 位),计数器从 1 开始计数直到 16,在计数到 8 时,RX 控制器对输入数据采样。计数器在计数
到 16 后,会复位到 1,以此采样下一位数据,循环往复,直到停止 STOP 位。TX 控制器同样利用过采样时钟来
生成输出数据流。
50.2.4
Modem 控制器
Modem 控制器提供 Modem 控制功能,也支持自动流控,可以进一步降低软件控制开销。
UART 的发送接收流控通过 RTS / CTS 握手实现。流控可以避免因为数据传输速率超过数据消化速率而引起
的 overrun 错误。
UART 支持自动流控,包括 auto-RTS 和 auto-CTS 功能,前者用于数据接收,后者用于数据发送。
打开 auto-RTS 功能时,UART 的 RTS 输出需要连接到对方 UART 的 CTS 信号。
● N 是 RX FIFO 的触发阈值
● Bn 是 RX FIFO 接收到的字节数目
● 当 Bn ≥ N 时,RTS 置低
● 当 Bn < N 时,RTS 会自动置高,提示对方 UART 可以发送数据
打开 auto-CTS 功能时,UART 的 CTS 输入连接到对方 UART 的 RTS 信号。UART 只有在 CTS 检测到输
入低时,才会发送数据。CTS 必须在当前传输数据的停止 STOP 位发出前置高,这样 UART 才能不发出下一个
数据。
50.2.5
Loopback 模式
UART 支持 Loopback 模式。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
658/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用异步收发器 UART
Loopback 模式打开时,UART 的 TX 连接到 RX,RTS 连接到 CTS。通过THR寄存器发出的数据可以从RBR寄
存器接收到。
50.2.6
DMA
UART 支持发送 DMA 请求和接收 DMA 请求。
用户通过FCR寄存器配置 RX FIFO 的触发阈值RFIFOT,当 RX FIFO 接收的数据超过阈值时,生成 DMA 接
收请求。
当 RX FIFO 的数据不到阈值,且 4 字节时间没有新的数据时,也会生成 DMA 接收请求,将 FIFO 中剩余数
据送出,避免小于阈值的数据无法接收的情况。
用户通过FCR寄存器配置 TX FIFO 的触发阈值TFIFOT,当 TX FIFO 的待发送数据少于阈值时,生成 DMA
发送请求。
50.3
寄存器说明
UART 的寄存器列表如下:
UART0 base address: 0xF0040000
UART1 base address: 0xF0044000
UART2 base address: 0xF0048000
UART3 base address: 0xF004C000
UART4 base address: 0xF0050000
UART5 base address: 0xF0054000
UART6 base address: 0xF0058000
UART7 base address: 0xF005C000
PUART base address: 0xF40E4000
地址偏移
名称
描述
复位值
0x0010
CFG
配置查询寄存器
0x00000000
0x0014
OSCR
过采样控制寄存器
0x00000010
0x0020
RBR
0x0020
THR
0x0020
DLL
0x0024
IER
0x0024
DLM
0x0028
IIR
中断 ID 寄存器
0x00000001
0x0028
FCR
FIFO 控制寄存器
0x00000000
接收缓冲寄存器(当 DLAB=0
时)
发送缓冲寄存器(当 DLAB=0
时)
分频参数低位寄存器(当
DLAB=1 时)
中断使能寄存器(当 DLAB=0
时)
分频参数高位寄存器(当
DLAB=1 时)
0x00000000
0x00000000
0x00000001
0x00000000
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
659/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用异步收发器 UART
地址偏移
名称
描述
复位值
0x002C
LCR
传输控制寄存器
0x00000000
0x0030
MCR
流量控制寄存器
0x00000000
0x0034
LSR
传输状态寄存器
0x00000000
0x0038
MSR
流控状态寄存器
0x00000000
0x003C
GPR
通用存储寄存器
0x00000000
表 205: UART 寄存器列表
寄存器详细信息
50.4
UART 的寄存器详细说明如下:
CFG (0x10)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
1
0
0
0
0
RO
N/A
RSVD
31
FIFOSIZE
50.4.1
0
CFG [31:0]
位域
名称
描述
RXFIFO 和 TXFIFO 深度:
0:16 字节
1-0
1:32 字节
FIFOSIZE
2:64 字节
3:128 字节
CFG 位域
50.4.2
OSCR (0x14)
30
29
28
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
x
x
x
x
x
x
x
x
x
x
x
x
x
1
0
x
RW
N/A
OSC
RSVD
31
0
OSCR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
660/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用异步收发器 UART
描述
过采样率设置:
OSC8:过采样率为 OSC 的值
OSC
OSC 设置值必须是非 0 的偶数,若写入了奇数则会被自动转换为
一个偶数值;写 0 可能会导致错误。
OSCR 位域
50.4.3
RBR (0x20)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
3
2
1
0
RO
N/A
RBR
RSVD
31
x
RBR [31:0]
位域
名称
描述
7-0
RBR
接收数据读取
RBR 位域
50.4.4
THR (0x20)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
N/A
WO
THR
RSVD
31
x
THR [31:0]
位域
名称
描述
7-0
THR
发送数据写入
THR 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
DLL
31
DLL (0x20)
RSVD
50.4.5
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
661/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
1
3
2
1
0
RW
N/A
31
通用异步收发器 UART
x
DLL [31:0]
位域
名称
描述
7-0
DLL
当 DLAB 为 1 时,该寄存器配置分频参数的低 8 位
DLL 位域
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
ERBI
25
RW
26
ELSI
27
ETHEI
28
RW
29
RW
30
RSVD
31
EMSI
IER (0x24)
RW
50.4.6
0
0
0
0
IER [31:0]
位域
名称
描述
流控中断使能:
3
当自动流控功能关闭时,CTS 状态的变化会触发中断。
EMSI
当自动流控使能时,流控中断不会被使能,CTS 状态用来自动控
制发送行为。
2
ELSI
接收状态中断使能
1
ETHEI
发送状态中断使能
0
ERBI
接收数据有效中断使能
character 超时中断使能
IER 位域
50.4.7
DLM (0x24)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
RW
N/A
DLM
RSVD
31
x
DLM [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
662/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用异步收发器 UART
位域
名称
描述
7-0
DLM
当 DLAB 为 1 时,该寄存器配置分频参数的高 8 位
DLM 位域
IIR (0x28)
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
0
6
5
0
x
RO
N/A
x
4
3
2
x
0
0
1
0
0
1
INTRID
27
RO
28
RSVD
29
N/A
30
RSVD
31
FIFOED
50.4.8
IIR [31:0]
位域
名称
7-6
FIFOED
描述
当 FIFO 被使能(FIFOE 位为 1)时,FIFOED 的值为 0x3
中断 ID
6: 接收状态
当发生 overrun 错误,奇偶校验错误,帧错误或 line break 时产生
读寄存器 LSR 清零
4: 接收数据有效
如果 FIFOE 不使能,表示接收到一个数据在 RBR 中
如果 FIFOE 使能,表示接收到的数据达到 RFIFOT 触发水平
通过读接收缓存寄存器 RBR 直到剩余数据小于设置的触发水平
清零
0xC: 字符超时
当 FIFOE 被使能,没有字符从接收 FIFO 中被移出或移入,并且
3-0
INTRID
在最后四个字符时间内接收 FIFO 中至少有一个字符
读接收寄存器 RBR 直到 FIFO 为控清零
2: 发送缓存寄存器空
如果 FIFOE 不使能,表示 1 字节的 THR 为空
如果 FIFOE 使能,表示整个 16 字节的发送 FIFO 为空
向 THR 写入数据清零或读取 IIR 清零该位
0: modem 状态
当 modem 状态寄存器 MSR 的 bit[3:0] 的值不是 0 时置位,指示
下列事件中的一种发生:
Clear To Send (CTS), Data Set Ready (DSR), Ring Indicator
(RI), or Data Carrier Detect (DCD)
读 MSR 清零该位
IIR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
663/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
FCR (0x28)
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
0
6
5
0
0
WO
N/A
x
4
0
3
2
1
0
FIFOE
21
WO
22
TFIFORST
23
RFIFORST
24
WO
25
WO
26
DMAE
27
WO
28
TFIFOT
29
WO
30
RSVD
31
RFIFOT
50.4.9
通用异步收发器 UART
0
0
0
0
FCR [31:0]
位域
名称
描述
7-6
RFIFOT
接收 FIFO trigger level
5-4
TFIFOT
发送 FIFO trigger level
3
DMAE
2
TFIFORST
1
RFIFORST
DMA 使能
发送 FIFO 复位,写 1 会清除发送 FIFO 中的所有数据并复位指
针,该位自动清零
接收 FIFO 复位,写 1 会清除接收 FIFO 中的所有数据并复位指
针,该位自动清零
FIFO 使能。
0
写 1 会使能发送 FIFO 和接收 FIFO,该位发生翻转时会复位所有
FIFOE
的 FIFO
FCR 位域
LCR (0x2C)
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
x
x
x
x
N/A
x
7
6
5
4
3
2
0
0
0
0
0
0
1
0
WLS
x
18
RW
x
19
STB
20
RW
21
PEN
22
RW
23
EPS
24
SPS
25
RW
26
RW
27
BC
28
DLAB
29
RW
30
RSVD
31
RW
50.4.10
0
LCR [31:0]
位域
名称
7
DLAB
6
BC
描述
分频参数访问控制位,为 1 时访问相关寄存器会定向到分频参数
控制
break 控制
固定奇偶校验位:
5
SPS
1:parity bit 会固定为 0 或 1,根据 EPS 位设定
0:parity bit 不固定
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
664/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用异步收发器 UART
描述
奇偶校验选择:
4
1:偶校验(data 和 parity bits 中有偶数个 1)
EPS
0:奇校验
3
奇偶校验使能,使能后在发送数据时一个校验位会被放置在第一
PEN
个 STOP 之前,在接收数据时会进行校验位检查
STOP 位数量:
0:1 位
2
1:STOP 位的数量基于 WLS 的设置,
STB
WLS 为 0 时,STOP 为 1.5 位
WLS 为 1,2,3 时,STOP 为 2 位
word 长度设置
0:5 位
1-0
1:6 位
WLS
2:7 位
3:8 位
LCR 位域
MCR (0x30)
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
5
4
0
0
3
2
x
x
1
0
x
MCR [31:0]
位域
名称
描述
自动流控使能:
5
AFE
0:关闭
1:当 RTS 为 0 时,仅 CTS 做自动流控,当 RTS 为 1 时,CTS
和 RTS 自动流控都使能
4
LOOP
1
RTS
loopback 使能
请求 RTS 流控:设为 1 时,RTS 信号输出 0
MCR 位域
50.4.12
LSR (0x34)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
665/1016
0
RSVD
22
N/A
23
RTS
24
RW
25
RSVD
26
N/A
27
AFE
28
LOOP
29
RW
30
RSVD
31
RW
50.4.11
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
x
x
x
x
14
13
12
11
10
9
8
x
x
x
x
x
x
x
x
x
x
x
N/A
x
7
6
5
4
3
2
0
0
1
0
DR
x
15
RO
x
16
PE
x
17
OE
x
18
RO
x
19
RO
20
FE
21
RO
22
THRE
23
LBREAK
24
RO
25
RO
26
TEMT
27
ERRF
28
RO
29
RO
30
RSVD
31
通用异步收发器 UART
0
0
0
0
0
0
LSR [31:0]
位域
名称
描述
接收 FIFO 错误:
7
在 FIFO 模式下,当出现了奇偶校验错误,帧错误或者传输打断
ERRF
时该位会置 1。
该位读清零。
该位为 1 时,表示发送 FIFO 为空且移位寄存器已经完成移位,
意味着 UART 已经完成了所有待发送的数据,当前 uart 内不包含
6
任何数据。
TEMT
当 TEMT 状态被触发时,通常意味着可以安全地将 UART 连接的
发送引脚设置为逻辑高电平,或者用于其他用途。
该位为 1 时,意味着发送 FIFO 空,没有待发送的数据,这个状
5
态通常用于指示可以向 Transmitter Holding Register 或者 FIFO
THRE
中写入新的数据,以便发送。
如果该位对应中断使能,则会触发中断
传输打断。
4
当 RXD 信号拉低持续超过一个 full-word 时该位会被置 1。
LBREAK
一个 full-word 包括 START,data,parity 和 STOP 位。
该位读清零。
帧错误。
3
当接收的 STOP 位为低时该位置 1。
FE
该位读清零。
2
PE
1
OE
奇偶校验错误。
该位读清零。
接收数据过载。
接收数据就绪。
0
存在有效的接收数据时该位置 1。
DR
在所有接收数据被读取后该位清零。
LSR 位域
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
666/1016
1
0
DCTS
29
RSVD
30
CTS
31
MSR (0x38)
RSVD
50.4.13
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
28
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
x
x
x
4
3
2
1
RO
0
x
x
0
RC
29
N/A
30
N/A
31
通用异步收发器 UART
x
0
MSR [31:0]
位域
名称
描述
CTS 信号状态:
4
0:CTS 输入为高电平
CTS
1:CTS 输入为低电平
0
该位置 1 表示在上次该位被读取之后,CTS 输入信号曾发生了翻
DCTS
转。
MSR 位域
50.4.14
GPR (0x3C)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
RW
N/A
DATA
RSVD
31
x
GPR [31:0]
位域
名称
7-0
DATA
描述
一字节的存储寄存器
GPR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
667/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行外设总线 SPI
串行外设总线 SPI
51
串行外设总线 SPI 目前支持的特性如下:
功能
主要特性
通信方式
ꞏ 支持 1,2,4 线工作模式
ꞏ 支持主机模式或者从机模式
ꞏ 主机模式最高支持 80MHz
ꞏ 从机模式最高支持 20MHz
时钟特性
ꞏ SPI 时钟相位,极性可配置
ꞏ CS 与 SCLK 接口时序可配置
ꞏ 时钟源与 SCLK 频率比可配置
数据格式
ꞏ MSB 先行和 LSB 先行可配置
ꞏ 命令固定 8bit,可任意定义
ꞏ 地址长度 8,16,24,32bit 可配置
ꞏ 数据长度可配置,支持单次超过 512 个数
ꞏ 支持最多 4 个 cs
数据缓冲
ꞏ TX 有 8 字深,32 位宽的 FIFO 缓冲区域
ꞏ RX 有 8 字深,32 位宽的 FIFO 缓冲区域
中断
ꞏ 从机命令中断,从机模式下收到属命令时产生中断
ꞏ SPI 输出结束时产生中断
ꞏ TXFIFO 有效数据小于等于设置阈值时产生中断
ꞏ RXFIFO 有效数据小于等于设置阈值时产生中断
ꞏ TXFIFO 欠载时产生中断
ꞏ RXFIFO 溢出时产生中断
表 206: I2S 主要特性
51.1
SPI 架构图
SPI 的框图如图 88。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
668/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行外设总线 SPI
SPI_CLK
SCLK
SPI
仲裁
APB_BUS
寄存器
CS
SPI
接口
控制
逻辑
MOSI
MISO
DATA2
DATA3
DMA
请求/
响应
图 88: SPI 框图
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
669/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行外设总线 SPI
管脚说明
51.2
管脚
方向
功能描述
SCLK
输入输出
时钟
CS
输入输出
片选
MOSI
输入输出
MOSI /data[0]
MISO
输入输出
MISO /data[1]
WP
输入输出
WP /data[2]
HOLD
输入输出
HOLD /data[3]
表 207: SPI 管脚说明
51.3
功能描述
51.3.1
一般说明
串行外设总线 SPI 支持主机模式和从机模式。主机模式下可以控制多种外设,从机模式下可以接受主机的请
求完成数据交换。
SPI 引脚功能
● SCLK:时钟信号,主机输出,从机输入。
● CS:片选信号,主机输出,从机输入。
● MOSI:
– 主机输出,从机输入,数据来自主机;
– 2 线,4 线模式时,作为 data[0], 方向输入输出。
● MISO:
– 主机输入,从机输出,数据来自从机;
– 2 线,4 线模式时,作为 data[1], 方向输入输出。
● WP:
– WP 端口;
– 2 线,4 线模式时,作为 data[2], 方向输入输出。
● HOLD
– HOLD 端口
– 2 线,4 线模式时,作为 data[3], 方向输入输出。
51.3.2
主机模式
SPI 在主机模式下控制发起传输。SPI 传输的格式和接口时序可以通过寄存器编程。
SPI 传输包括命令、地址和数据字段,SPI 控制器提供专用的寄存器用来存储这些字段。
数据寄存器在接受和发送时是共用的。
数据传输可以由寄存器访问发起,也可以由 DMA 发起。
SPI 控制器提供发送和接受缓冲阈值中断,用以减轻流控的软件负担。
控制器还可以在传输结束时产生中断。
除支持标准的 SPI 传输以外,控制器允许软件直接控制 SPI 接口上的信号。这一功能可以用来实现接口上的
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
670/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行外设总线 SPI
特殊时序。
主机模式下,数据传输格式:cmd+addr+data ;如图 89。
● cmd:8bit,用户根据使用自行定义。
● addr:8,16,24,32bit 可配置。
● data: 长度根据应用配置,支持多种传输模式,传输顺序查看寄存器 TRANSCTRL.TRANSMODE。
CS
SCLK
CMD
ADDR
TX DATA
.
.
.
MOSI
RX DATA
.
.
.
MISO
图 89: SPI 主机模式传输
51.3.3
从机模式
从机模式下,控制器接收接口上的信号,把信号解释为命令、填充和数据。命令和填充字段固定为 8 位,数
据段的长度由接收到的命令和寄存器的设置决定。
从机模式下,内部配置有以下命令可以直接使用,该模式下还可以支持用户在寄存器中自定义的任意 8bit 命
令。
命令名称
byte1(命令)
byte2(填充)
数据
1 线读取控制器状态
0x05
dummy
32bit 状态
2 线读取控制器状态
0x15
dummy
32bit 状态
4 线读取控制器状态
0x25
dummy
32bit 状态
1 线读取数据
0x0b
dummy
数据
2 线读取数据
0x0c
dummy
数据
4 线读取数据
0x0e
dummy
数据
1 线写入数据
0x51
dummy
数据
2 线写入数据
0x52
dummy
数据
4 线写入数据
0x54
dummy
数据
自定义命令
任意 8bit
dummy
自定义
表 208: 从机模式支持的命令
对于读取状态的命令,控制器返回状态寄存器的值。
对于数据读写指令,传输由命令-填充-数据组成。
对于用户自定义指令,数据段格式由寄存器配置。例如,传输模式被设置成(填充,写入)
,填充周期为 (dummyCnt+1)*((DataLen+1)/IO 宽度),填充阶段字段被丢弃,之后的数据保存到数据寄存器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
671/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行外设总线 SPI
从机模式下,数据传输格式:cmd+dummy+data;如图 90。
● cmd:8bit,内部已配置命令或用户自行定义。
● dummy:8bit。
● data: 长度根据应用配置,支持多种传输模式,传输顺序查看寄存器 TRANSCTRL.TRANSMODE。
CS
SCLK
4
0
5
1
5
1
DATA2
6
2
6
2
DATA3
7
3
7
3
.
.
.
0
4
0
4
0
.
.
.
MOSI
MISO
DATA
4
5
1
5
1
.
.
.
DUMMY
6
2
6
2
.
.
.
CMD
7
3
7
3
图 90: SPI 从机模式传输
51.3.4
2 线模式
2 线模式下把 MISO 和 MOSI 都用作双向信号从而获得 2 倍的带宽。
2 线模式下提供两种传输方式。一种方式地址和数据均使用 2 线传输。另一种方式下,只有数据使用 2 线传
输。传输方式可以通过寄存器配置。
51.3.5
4 线模式
4 线模式把 MOSI、MISO、WP 和 HOLD 均作为双向数据信号使用,获得 4 倍带宽。
4 线模式下提供两种传输方式。一种方式地址和数据均使用 4 线传输。另一种方式下,只有数据使用 4 线传
输。传输方式可以通过寄存器配置。
51.3.6
中断
SPI 支持生成多种中断,这些中断状态在中断状态寄存器 INTRST(0x3c) 相应标志位里。
这些中断共用一根中断线,所以需要读取相应状态位和中断允许位来决定中断原因。
51.3.7
DMA
主机模式使用 DMA 写:
● 读取 CONFIG 寄存器 (0x7c),获得 RX/TX FIFO 的深度;
● 读取 SPI 的状态寄存器 (0x34),等待 SPI 空闲;
● 配置 TRANSFMT 寄存器 (0x10),配置 addrlen,datalen,datamerge,其他值复位值即可;
● 配置 TRANSCTRL 寄存器 (0x20),配置 cmden=1,addren=1,transmode=1(仅写),wrTranCnt,其他
值复位值即可;
● 配置 CTRL 寄存器 (0x30),使能 DMA,复位 TX FIFO,根据 FIFO 配置设置触发阈值,eg: 一半 TX FIFO
深度;
● 配置 INTREN 寄存器 (0x38),使能 EndIntEn 中断;
● 配置 TIMING 寄存器 (0x40),配置接口时许;
● 使用 DMA 从其他地方搬数到 DATA 寄存器 (0x2C);
● 配置 ADDR 寄存器 (0x28);
● 配置 CMD 寄存器 (0x24), 触发 SPI 的传输;命令取决于 SPI 设备;
● 等待 INTRST 寄存器 (0x3C) 中断位;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
672/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
串行外设总线 SPI
● 配置 INTRST 寄存器 (0x3C) 清除中断;
主机模式使用 DMA 读:
● 读取 CONFIG 寄存器 (0x7c),获得 RX/TX FIFO 的深度;
● 读取 SPI 的状态寄存器 (0x34),等待 SPI 空闲;
● 配置 TRANSFMT 寄存器 (0x10),配置 addrlen,datalen,datamerge,其他值复位值即可;
● 配置 TRANSCTRL 寄存器 (0x20),配置 cmden=1,addren=1,transmode=2(仅读),RdTranCnt,其他
值复位值即可;
● 配置 CTRL 寄存器 (0x30),使能 DMA,复位 RX FIFO,根据 FIFO 配置设置触发阈值,eg: 一半 RX FIFO
深度;
● 配置 INTREN 寄存器 (0x38),使能 EndIntEn 中断;
● 配置 TIMING 寄存器 (0x40),配置接口时许;
● 使用 DMA 从 DATA 寄存器 (0x2C) 搬数到其他地方;
● 配置 ADDR 寄存器 (0x28);
● 配置 CMD 寄存器 (0x24), 触发 SPI 的传输;命令取决于 SPI 设备;
● 等待 INTRST 寄存器 (0x3C) 中断位;
● 配置 INTRST 寄存器 (0x3C) 清除中断;
51.4
SPI 寄存器列表
SPI0 base address: 0xF0030000
SPI1 base address: 0xF0034000
SPI2 base address: 0xF0038000
SPI3 base address: 0xF003C000
地址偏移
名称
描述
复位值
0x0010
TRANSFMT
数据格式
0x00020780
0x0020
TRANSCTRL
传输控制
0x00000000
0x0024
CMD
命令寄存器
0x00000000
0x0028
ADDR
地址寄存器
0x00000000
0x002C
DATA
数据寄存器
0x00000000
0x0030
CTRL
控制寄存器
0x00000000
0x0034
STATUS
状态寄存器
0x00000000
0x0038
INTREN
中断使能寄存器
0x00000000
0x003C
INTRST
中断状态
0x00000000
0x0040
TIMING
接口时序
0x00000000
0x0060
SLVST
从机状态
0x00000000
0x0064
SLVDATACNT
从机数据计数
0x00000000
0x007C
CONFIG
配置寄存器
0x00004311
表 209: SPI 寄存器列表
51.5
SPI 寄存器描述
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
673/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRANSFMT (0x10)
0
0
1
12
11
RW
0
x
x
x
0
0
10
9
8
1
1
1
7
6
1
5
x
x
4
3
2
1
0
CPHA
0
13
RW
0
N/A
0
14
CPOL
0
15
SLVMODE
0
16
RW
17
RW
0
18
LSB
0
19
RW
0
20
MOSIBIDIR
0
21
RW
0
22
RSVD
0
23
N/A
0
24
DATAMERGE
25
RW
26
DATALEN
27
RW
28
RSVD
29
N/A
30
RSVD
31
ADDRLEN
51.5.1
串行外设总线 SPI
0
0
0
0
0
TRANSFMT [31:0]
位域
名称
描述
地址长度:
0x0:8 位,
17-16
ADDRLEN
0x1:16 位,
0x2:24 位,
0x3:32 位。
12-8
DATALEN
数据单位长度
实际位数为(DataLen+1)
允许数据合并模式,该模式在写入时自动拆分数据,在读取时合
并数据。
此位仅在 DataLen=0x7 时生效。在数据合并模式下,对数据寄存
7
DATAMERGE
器的每次写入将传输写入数据的所有四个字节;从数据寄存器读
取的每个数据将检索四个字节的接收数据,作为单个字数据。
当禁用数据合并模式时,只有数据寄存器的最小(DataLen+1)
有效位对读/写操作有效;不会执行自动数据拆分/合并。
常规模式下的双向 MOSI:
4
MOSIBIDIR
0x0:MOSI 是单向信号,
0x1:MOSI 是双向信号。
传输顺序:
3
LSB
0x0:高位先行,
0x1:低位先行。
主/从模式选择:
2
SLVMODE
0x0:主模式,
0x1:从模式。
SPI 时钟极性:
1
CPOL
0x0: 空闲态为低电平,
0x1: 空闲态为高电平。
SPI 时钟相位:
0
CPHA
0x0:奇数 SCLK 边沿采样,
0x1:偶数 SCLK 边沿采样。
TRANSFMT 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
674/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TRANSCTRL (0x20)
0
0
0
0
0
0
15
14
13
12
0
0
0
0
0
11
10
0
9
8
7
6
5
0
0
0
0
0
0
4
3
2
1
0
0
0
0
0
RDTRANCNT
0
16
RW
17
DUMMYCNT
18
RW
19
TOKENVALUE
0
20
RW
0
21
WRTRANCNT
0
22
RW
0
23
TOKENEN
0
24
RW
0
25
DUALQUAD
0
26
RW
ADDRFMT
RW
0
27
TRANSMODE
CMDEN
ADDREN
RW
28
RW
29
SLVDATAONLY
30
RW
31
RW
51.5.2
串行外设总线 SPI
0
TRANSCTRL [31:0]
位域
名称
描述
纯数据模式(仅从模式):
0x0:禁用纯数据模式,
31
SLVDATAONLY
0x1:启用纯数据模式。
注:此模式仅在常规模式下有效,因此 MOSIBiDir、DualQuad 和
TransMode 应设置为 0。
启用命令段(仅主模式):
30
CMDEN
0x0:禁用命令段,
0x1: 启用命令段。
启用地址段(仅主模式):
29
ADDREN
0x0:禁用地址段,
0x1: 启用地址段。
SPI 地址段格式(仅主模式)
:
28
ADDRFMT
0x0:常规(1 位)模式,
0x1:数据段(2 线/4 线)相同。
传输模式,传输顺序可以是
0x0:同时读写,
0x1:仅写,
0x2:只读,
0x3:写,读,
27-24
TRANSMODE
0x4:读、写,
0x5:写、填充、读,
0x6:读、填充、写,
0x7:无数据(必须在主模式下启用 CmdEn 或 AddrEn)
,
0x8:填充,写,
0x9:填充,读,
0xa~0xf: 保留。
SPI 数据段格式:
0x0:1 线模式,
23-22
DUALQUAD
0x1:2 线模式,
0x2:4 线模式,
0x3:保留。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
675/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
串行外设总线 SPI
描述
启用令牌(仅主模式)
,在 SPI 读取地址段后的 1 字节的令牌。应
21
在 TokenValue 中选择特殊令牌的值。
TOKENEN
0x0:禁用令牌,
0x1:启用令牌。
写入数据长度。
WrTranCnt 表示 SPI 写入数据长度。实际传输长度为
(WrTranCnt+1)。
20-12
WrTranCnt 仅在 TransMode 为 0、1、3、4、5、6 或 8 时生效。
WRTRANCNT
数据单位的大小(位宽度)由传输格式寄存器的 DataLen 字段定
义。
对于传输模式 0,WrTranCnt 必须等于 RdTranCnt。
令牌值(仅主模式),SPI 读取地址段后的令牌。
11
TOKENVALUE
0x0:令牌值 =0x00,
0x1:令牌值 =0x69。
填充数据长度。实际填充长度为(DummyCnt+1)。
10-9
SPI 接口上的填充周期数为(DummyCnt+1)*((DataLen+1)
DUMMYCNT
/SPI IO 宽度)
,在填充数据段,数据引脚被置于高阻抗中。
DummyCnt 仅用于 TransMode 5、6、8 和 9,其具有填充数据段。
读取数据长度,RdTranCnt 表示从 SPI 总线接收的数据长度。实
际接收长度为(RdTranCnt+1)
。
8-0
RdTransCnt 仅在 TransMode 为 0、2、3、4、5、6 或 9 时生效。
RDTRANCNT
数据单位由传输格式寄存器的 DataLen 字段定义。
对于传输模式 0,WrTranCnt 必须等于 RdTranCnt。
TRANSCTRL 位域
51.5.3
CMD (0x24)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
RW
N/A
CMD
RSVD
31
x
CMD [31:0]
位域
名称
描述
7-0
CMD
SPI 命令。
CMD 位域
51.5.4
ADDR (0x28)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
676/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ADDR
31
串行外设总线 SPI
0
ADDR [31:0]
位域
名称
31-0
ADDR
描述
SPI 地址(仅主模式)
。
ADDR 位域
51.5.5
DATA (0x2C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DATA
31
0
DATA [31:0]
位域
名称
描述
对于写操作,数据传输到 TX FIFO。低字节先行。如果 TX FIFO
满且状态寄存器的 SPIActive 位为 1,总线被阻塞并插入等待状
态。
对于读操作,数据从 RX FIFO 读取。低字节先行。如果 RX FIFO
空且状态寄存器的 SPIActive 位为 1,总线被阻塞并插入等待状
31-0
态。
DATA
FIFO 将 SPI 传输和软件的速度的缓冲。当 TX FIFO 为空时,SPI
传输将暂停,直到更多数据写入 TX FIFO;当 RX FIFO 满时,
SPI 传输将暂停,直到 RX FIFO 中有更多空间。
如果写入 TX FIFO 的数据多于写入传输数量(WrTranCnt)
,剩余
数据保留在 TX FIFO 中,下次传输或 TX FIFO 复位清除。
DATA 位域
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
SPIRST
24
TXFIFORST
25
RXFIFORST
26
RXDMAEN
27
TXDMAEN
28
RSVD
29
RXTHRES
30
TXTHRES
31
CTRL (0x30)
RSVD
51.5.6
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
677/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
23
22
21
20
x
x
x
0
0
0
0
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
RW
x
11
10
9
8
7
0
0
0
0
x
6
5
0
x
x
4
3
2
1
0
0
0
RW
x
24
RW
x
25
RW
x
26
RW
x
27
RW
28
N/A
29
RW
30
N/A
31
串行外设总线 SPI
0
0
0
0
CTRL [31:0]
位域
名称
描述
23-16
TXTHRES
15-8
RXTHRES
4
TXDMAEN
TX DMA 启用。
3
RXDMAEN
RX DMA 启用。
2
TXFIFORST
发送 FIFO 复位,写 1 复位,复位后自动清零。
1
RXFIFORST
接收 FIFO 复位,写 1 复位,复位后自动清零。
0
SPIRST
TXFIFO 阈值,TX 数据小于或等于 TX FIFO 阈值时,发出
TXFIFO 中断或 DMA 请求。
RXFIFO 阈值,RX 数据大于或等于 RX FIFO 阈值时,发出
RXFIFO 中断或 DMA 请求。
SPI 复位,写 1 复位,复位后自动清零。
CTRL 位域
0
0
11
0
0
0
10
9
8
7
6
5
0
0
x
x
x
4
3
2
1
x
x
x
SPIACTIVE
0
12
0
x
RO
0
13
RSVD
0
14
N/A
0
15
RXNUM_5_0
0
16
RO
0
17
TXNUM_5_0
0
18
RO
0
19
RXEMPTY
0
20
RO
0
21
RXFULL
x
22
RO
x
23
TXEMPTY
RSVD
N/A
0
24
RO
0
25
TXFULL
x
26
RO
27
RO
N/A
x
28
RXNUM_7_6
29
TXNUM_7_6
30
RSVD
31
STATUS (0x34)
RO
51.5.7
STATUS [31:0]
位域
名称
描述
29-28
TXNUM_7_6
发送 FIFO 中的有效数据。
25-24
RXNUM_7_6
接收 FIFO 中的有效数据。
23
TXFULL
发送 FIFO 满标志。
22
TXEMPTY
发送 FIFO 空标志。
21-16
TXNUM_5_0
15
RXFULL
接收 FIFO 满标志。
14
RXEMPTY
接收 FIFO 空标志。
13-8
RXNUM_5_0
发送 FIFO 中的有效数据。
接收 FIFO 中的有效数据。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
678/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
串行外设总线 SPI
描述
SPI 寄存器编程正在进行中。
在主模式下,SPIActive 在写入 SPI 命令寄存器后变为 1,在传输
完成后变为 0。
0
在从属模式下,SPI CS 信号被断言后,SPIActive 变为 1;SPI
SPIACTIVE
CS 信号被解除断言后,SPIActive 变为 0。
注意,由于时钟同步,当相应条件发生时,SPIActive 最多可能需
要两个 spi_ 时钟周期才能改变。
注意:当使用直接 IO 控制或内存映射接口时,该位保持为 0。
STATUS 位域
INTREN (0x38)
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
5
4
3
2
1
0
RXFIFOORINTEN
20
RW
21
RXFIFOINTEN
22
TXFIFOURINTEN
23
RW
24
RW
25
TXFIFOINTEN
26
RW
27
ENDINTEN
28
SLVCMDEN
29
RW
30
RSVD
31
RW
51.5.8
0
0
0
0
0
0
INTREN [31:0]
位域
名称
5
SLVCMDEN
4
ENDINTEN
3
TXFIFOINTEN
2
RXFIFOINTEN
1
TXFIFOURINTEN
0
RXFIFOORINTEN
描述
启用从机命令中断,在从模式下收到属命令时产生中断(仅从模
式)。
启用 SPI 传输结束中断。SPI 传输结束时是否产生中断(在从模
式下,读取结束不产生中断)。
启用发送 FIFO 阈值中断。有效数据小于或等于 TX FIFO 阈值时
是否产生中断。
启用接收 FIFO 阈值中断。有效数据大于或等于 RX FIFO 阈值时
是否产生中断。
启用发送 FIFO 欠载中断。发送 FIFO 数据耗尽时是否产生中断
(仅从模式)
。
启用接收 FIFO 溢出中断。接收 FIFO 溢出时是否产生中断(仅从
模式)。
INTREN 位域
51.5.9
INTRST (0x3C)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
679/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
RXFIFOORINT
19
W1C
20
RXFIFOINT
21
TXFIFOURINT
22
W1C
23
W1C
24
TXFIFOINT
25
W1C
26
ENDINT
27
SLVCMDINT
28
W1C
29
W1C
30
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
N/A
RSVD
31
串行外设总线 SPI
x
5
4
3
2
1
0
INTRST [31:0]
位域
名称
描述
5
SLVCMDINT
4
ENDINT
SPI 传输中断结束。
3
TXFIFOINT
TX FIFO 阈值中断。
2
RXFIFOINT
RX FIFO 阈值中断。
1
TXFIFOURINT
TX FIFO 欠载中断(仅从模式)。
0
RXFIFOORINT
RX FIFO 溢出中断(仅从模式)。
从机命令中断(仅从模式)。
INTRST 位域
27
26
25
24
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
x
x
x
x
x
x
x
x
0
12
11
10
0
0
RW
N/A
x
0
RW
28
CSHT
29
RW
30
RSVD
31
SCLK_DIV
TIMING (0x40)
CS2SCLK
51.5.10
TIMING [31:0]
位域
名称
13-12
CS2SCLK
11-8
CSHT
7-0
SCLK_DIV
描述
CS 有效到 SCLK 边缘最短时间。SCLK_ 周期 *(CS2SCLK+1)
/2。
CS 高电平的最短时间。SCLK_ 周期 *(CSHT+1)/2。
时钟源和 SPI 接口 SCLK 之间的时钟频率比。F(SCLK)=F(SPI)/
((SCLK_DIV+1)*2)。
当 SCLK_DIV 是 0xff 时,SCLK 频率应与 SPI 时钟源同频。
TIMING 位域
51.5.11
SLVST (0x60)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
680/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
22
21
20
19
x
x
x
x
x
x
18
N/A
x
17
16
0
0
0
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
USR_STATUS
x
23
RW
x
24
READY
x
25
RW
26
OVERRUN
27
RW
28
UNDERRUN
29
W1C
30
RSVD
31
串行外设总线 SPI
SLVST [31:0]
位域
名称
描述
18
UNDERRUN
上次传输中发生数据不足。
17
OVERRUN
上次传输中发生数据溢出。
16
READY
15-0
USR_STATUS
SPI 准备就绪。除从机模式下读取状态,该位都会在传输结束后
清零。
自定义的状态标志。
SLVST 位域
SLVDATACNT (0x64)
x
26
25
24
23
22
21
x
x
0
0
0
0
0
20
19
18
17
16
15
14
13
11
10
9
8
7
6
5
0
0
0
0
x
x
x
x
x
x
0
0
0
0
13
12
11
10
9
8
7
6
x
x
0
0
RO
N/A
x
12
4
3
2
1
0
0
0
0
0
0
0
5
4
3
2
1
0
0
1
0
0
0
1
RCNT
x
27
0
RO
x
28
RSVD
29
N/A
30
RSVD
31
WCNT
51.5.12
SLVDATACNT [31:0]
位域
名称
描述
25-16
WCNT
从机发送数据计数。
9-0
RCNT
从机接收数据计数。
SLVDATACNT 位域
x
x
x
x
x
x
21
20
19
18
17
16
15
x
x
x
x
x
x
x
x
RO
N/A
x
14
1
x
x
1
1
RXFIFOSIZE
x
22
RO
x
23
TXFIFOSIZE
24
RO
25
DUALSPI
26
RO
27
QUADSPI
28
RSVD
29
N/A
30
RSVD
31
RO
CONFIG (0x7C)
SLAVE
51.5.13
CONFIG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
681/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
14
SLAVE
支持从机模式。
9
QUADSPI
支持 4 线模式。
8
DUALSPI
支持 2 线模式。
串行外设总线 SPI
描述
发送 FIFO 的深度:
0x0:2 个字,
0x1:4 个字,
7-4
TXFIFOSIZE
0x2:8 个字,
0x3:16 个字,
0x4:32 个字,
0x5:64 个字,
0x6:128 字。
接收 FIFO 的深度:
0x0:2 个字,
0x1:4 个字,
3-0
RXFIFOSIZE
0x2:8 个字,
0x3:16 个字,
0x4:32 个字,
0x5:64 个字,
0x6:128 字。
CONFIG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
682/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路总线 I2C
集成电路总线 I2C
52
本章节介绍 I2C 的功能和特性。
特性总结
52.1
本章节介绍 I2C 的主要特性:
● 支持标准模式 (100Kb/s),快速模式 (400Kb/s) 和快速模式 +(1Mb/s)
● 可配置主从模式
● 支持 7 位和 10 位地址模式
● 支持广播呼叫地址 (general call address)
● 自动时钟延展 (clock stretching)
● 可配置的时钟/数据时序
● 支持直接内存访问 (DMA)
● 4 字节 FIFO
I2C 的框图如图 91。
I
寄存器接口
毛刺过滤
寄存器
控制逻辑
中断
S/SD输入
S/SD输出
D请求/响应
图 91: I2C 框图
52.2
功能描述
本章节描述 I2C 的功能。
52.2.1
主要功能
通过 SETUP 寄存器的 MASTER 位可配置 I2C 工作在主机模式或者从机模式。作为 I2C 主机,该控制器能
够高效的发起传输。每个传输由 4 个阶段组成:起始,地址,数据和结束。在起始阶段会产生 START 操作,在地
址阶段发送地址,在数据阶段 1 个或多个数据字节被传送,在结束阶段产生 STOP 操作。每个阶段都能够独立控
制是否执行。
作为 I2C 从机,当 I2C 传输的地址与寄存器 ADDR 的地址匹配时,该控制器被选定,可配置 INTEN 寄存器
的 ADDRHIT 位使控制器产生中断来通知软件准备后续的操作。如果收到广播呼叫地址,控制器会响应 ACK 并将
STATUS 寄存器的 GENCALL 位置 1。
当软件没有准备好下一个字节的发送数据或者接收数据时 FIFO 已满,控制会自动延展 I2C 总线时钟来暂停
总线传输。主机模式和从模式都支持自动时钟延展。
控制器默认使能了自动响应,即除了最后一个字节外每接收一个字节数据都会自动发出 ACK,软件可通过使
能 ByteReceive 中断来禁止自动响应功能,在每个字节接收完毕后决定是否发送 ACK 响应。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
683/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
52.2.2
集成电路总线 I2C
时序配置
I2C 时序参数在 SETUP 寄存器中配置,所有参数的单位都是 I2C 模块功能时钟 (CLK_TOP_I2Cx) 的时钟周
期数。由于这些可配参数的位数有限,当功能时钟频率非常高时,时序参数的位宽可能无法满足配置要求,因此
控制器提供了 TPM 寄存器用来设置时序参数乘数,该乘数能够扩展时序参数的范围。TPM 寄存器的修改应该在
I2C 总线空闲且 I2C 控制器关闭 (寄存器 SETUP 的 IICEN 位为 0) 时进行。
以下以 CLK_TOP_I2C 频率 40MHz 且 TPM 等于 0 为例来说明时序参数配置。
毛刺过滤:在 SCL 和 SDA 输入信号上可被过滤掉的脉冲宽度,由 SETUP 寄存器的 T_SP 位定义,计算公
式如 (6):
PulseWidth = T _S P × Clk_Period × (T PM + 1)
(6)
对于快速模式和快速模式 +,要求 50ns 以下的毛刺必须被过滤掉,计算可得 T_SP 应为 2.
数据建立时间 (Data Setup Time):数据建立时间定义了在 SCL 上升沿之前 SDA 应该保持稳定的时间,由
SETUP 寄存器的 T_SUDAT 位设置,计算公式如 (7):
S etupT ime = (2 × Clk_Period) + (2 + T _S P + T _S UDAT ) × Clk_Period × (T PM + 1)
(7)
对于标准模式,数据建立时间要求为 250ns 时,可得 T_SUDAT 应设为 4。
数据保持时间 (Data Hold Time):数据保持时间定义了 SCL 下降沿之后应保持稳定的时间,由 SETUP 寄存
器的 T_HDDAT 位设置,计算公式如 (8):
HoldT ime = (2 × Clk_Period) + (2 + T _S P + T _HDDAT ) × Clk_Period × (T PM + 1)
(8)
对于标准模式,数据保持时间要求为 300ns 时,可得 T_HDDAT 应设为 6。
总线时钟频率:I2C 总线时钟频率由 SETUP 寄存器的 T_SCLHI 位和 T_SCLRATIO 位定义,计算公式如
(9)和(10)
S CL HighPeriod = (2 × Clk_Period) + (2 + T _S P + T _S CLHI) × Clk_Period × (T PM + 1)
S CL LowPeriod = (2 × Clk_Period) + (2 + T _S P + T _S CLHI × T S CLRAT IO) × Clk_Period × (T PM + 1)
52.2.3
(9)
(10)
主机模式
不使用 DMA 的数据发送:
1. 设置时序参数
2. 配置主机模式 MASTER=1 并使能控制器 IICEN=1
3. 设置数据长度 DATACNT,传输方向 DIR 和传输阶段选择 PHASE_START/ADDR/DATA/STOP
4. 配置目标从机地址 ADDRESS
5. 设置 CMPL 使传输完成时产生中断,设置 FIFOEMPTY 使 FIFO 空时产生中断
6. 写 0x1 到 COMMAND 寄存器来启动传输
7. 等待中断:若 FIFO 为空则通过写 DATA 寄存器来存入数据,若所有数据已存入 FIFO 则关闭 FIFO 空
中断,否则重复步骤 7;若传输完成则检查 ADDRHIT 确保目标从机正确接收了传输,CMPL 寄存器写
1 清除中断,跳转到步骤 8。
8. 关闭所有中断,检查 DATACNT 以确保所有数据传输完成
不使用 DMA 的数据接收:
1. 设置时序参数
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
684/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
集成电路总线 I2C
2. 配置主机模式 MASTER=1 并使能控制器 IICEN=1
3. 设置数据长度 DATACNT,传输方向 DIR 和传输阶段选择 PHASE_START/ADDR/DATA/STOP
4. 配置目标从机地址 ADDRESS
5. 设置 CMPL 使传输完成时产生中断,设置 FIFOFULL 使 FIFO 满时产生中断
6. 写 0x1 到 COMMAND 寄存器来启动传输
7. 等待中断:若 FIFO 为满则通过从 DATA 寄存器来读出数据,若所有数据已存入 FIFO 则关闭 FIFO 空
中断,否则重复步骤 7;若传输完成则检查 ADDRHIT 确保目标从机正确接收了传输,CMPL 寄存器写
1 清除中断,跳转到步骤 8。
8. 关闭所有中断,检查 DATACNT 以确保所有数据传输完成
使用 DMA 的数据发送:
1. 设置时序参数
2. 配置主机模式 MASTER=1,使能控制器 IICEN=1,使能 DMA 功能 DMAEn=1
3. 配置 DMA 控制器 IP
4. 设置数据长度 DATACNT,传输方向 DIR 和传输阶段选择 PHASE_START/ADDR/DATA/STOP
5. 配置目标从机地址 ADDRESS
6. 设置 CMPL 使传输完成时产生中断
7. 写 0x1 到 COMMAND 寄存器来启动传输
8. 等待中断,检查 DATACNT 以确保所有数据传输完成
52.2.4
从机模式
不使用 DMA 的数据传输:
1. 设置从机地址
2. 设置时序参数
3. 配置从机模式 MASTER=0 并使能控制器 IICEN=1
4. 使能地址命中中断 ADDRHIT 和传输完成中断 CMPL
5. 等待地址命中中断:读取传输方向 DIR,查看 GENCALL 确认是否是广播呼叫。若 DIR 方向为从机接
收,则使能 FIFO 满中断并跳转到步骤 6;若 DIR 方向为从机发送,则使能 FIFO 空中断并跳转到步骤
7
6. 从机接收:等待 FIFO 满中断,读取数据,直到收到传输完成中断
7. 从机发送:等待 FIFO 空中断,写入数据,直到收到传输完成中断
8. 检查 DATACNT 寄存器确认传输数据量,清除传输完成中断
使用 DMA 的数据传输:
1. 设置从机地址
2. 设置时序参数
3. 配置从机模式 MASTER=0 并使能控制器 IICEN=1
4. 使能地址命中中断 ADDRHIT 和传输完成中断 CMPL
5. 等待地址命中中断:读取传输方向 DIR,如果不是期望的传输方向,则跳转到不使用 DMA 的数据传输
流程。查看 GENCALL 确认是否是广播呼叫
6. 从机接收:等待 FIFO 满中断,读取数据,直到收到传输完成中断
7. 从机发送:等待 FIFO 空中断,写入数据,直到收到传输完成中断
8. 检查 DATACNT 寄存器确认传输数据量,清除传输完成中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
685/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
52.3
I2C 寄存器
52.3.1
寄存器说明
集成电路总线 I2C
I2C 的寄存器列表如下:
I2C0 base address: 0xF3020000
I2C1 base address: 0xF3024000
I2C2 base address: 0xF3028000
I2C3 base address: 0xF302C000
地址偏移
名称
描述
复位值
0x0010
CFG
配置查询寄存器
0x00000001
0x0014
INTEN
中断使能寄存器
0x00000000
0x0018
STATUS
状态寄存器
0x00000001
0x001C
ADDR
地址寄存器
0x00000000
0x0020
DATA
数据寄存器
0x00000000
0x0024
CTRL
控制寄存器
0x00001E00
0x0028
CMD
指令寄存器
0x00000000
0x002C
SETUP
设置寄存器
0x05252100
0x0030
TPM
时序参数乘数
0x00000000
表 210: I2C 寄存器列表
52.3.2
寄存器详细信息
I2C 的寄存器详细说明如下:
CFG (0x10)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CFG [31:0]
位域
名称
描述
FIFO 深度:
0:2 字节
1-0
FIFOSIZE
0
RO
N/A
RSVD
31
FIFOSIZE
52.3.3
1:4 字节
2:8 字节
3:16 字节
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
686/1016
1
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
集成电路总线 I2C
描述
CFG 位域
INTEN (0x14)
0
0
11
10
0
0
0
0
0
0
0
0
0
0
N/A
0
9
8
7
6
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
INTEN [31:0]
位域
名称
描述
传输完成中断使能:
9
CMPL
主机模式:一个 transaction 被正确发出且没有失去总线仲裁
从机模式:发送给本控制器的一个 transaction 传输完成
字节接收中断使能:
8
BYTERECV
当收到一个字节的数据后发出中断,该位设为 1 时会关闭自动
ACK 响应,软件需要控制 ACK 或 NACK 的发出。
7
BYTETRANS
6
START
5
STOP
字节发送中断使能:
当完成一个字节的发送后产生中断。
START 中断使能:
当探测到 START 或 repeated START 时产生中断。
STOP 中断使能:
当探测到 STOP 时产生中断。
总线仲裁丢失中断使能:
4
ARBLOSE
主机模式:当控制器失去总线仲裁时产生中断
从机模式:无效
地址命中中断使能:
3
ADDRHIT
主机模式:收到目标从机的 ACK 响应时产生中断
从机模式:地址匹配时产生中断
FIFO 半满/半空中断:
2
FIFOHALF
工作在数据接收状态时,当 FIFO 已被填充一半时产生中断。
工作在数据发送状态时,当 FIFO 空出一半空间时产生中断。
数据的发送和接收状态由传输的方向决定。
1
FIFOFULL
FIFO 满中断使能
0
FIFOEMPTY
FIFO 空中断使能
INTEN 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
687/1016
0
FIFOEMPTY
0
12
RW
0
13
FIFOFULL
0
14
FIFOHALF
0
15
RW
0
16
RW
0
17
ADDRHIT
0
18
RW
0
19
STOP
0
20
ARBLOSE
21
RW
22
RW
23
START
24
BYTETRANS
25
RW
26
RW
27
BYTERECV
28
RW
29
CMPL
30
RSVD
31
RW
52.3.4
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
STATUS (0x18)
1
0
FIFOEMPTY
2
RO
0
3
FIFOFULL
0
4
FIFOHALF
0
5
RO
N/A
0
6
RO
0
7
ADDRHIT
0
8
W1C
0
9
STOP
0
10
ARBLOSE
0
11
W1C
0
12
W1C
0
13
START
0
0
14
BYTETRANS
15
W1C
0
16
W1C
0
17
BYTERECV
0
18
W1C
0
19
ACK
0
20
CMPL
0
21
RO
0
22
W1C
0
23
BUSBUSY
24
RO
25
LINESCL
26
GENCALL
27
RO
28
RO
29
LINESDA
30
RSVD
31
RO
52.3.5
集成电路总线 I2C
0
0
0
0
0
0
0
0
0
0
1
STATUS [31:0]
位域
名称
描述
SDA 信号状态:
14
LINESDA
1:高电平
0:低电平
SCL 信号状态:
13
LINESCL
1:高电平
0:低电平
广播呼叫标志:
12
GENCALL
1:当前 transaction 为广播呼叫
0:非广播呼叫
总线繁忙标志:
11
BUSBUSY
总线上出现了 START 但尚未出现 STOP 时为繁忙状态,该位置
1。
记录上一次传输的 ACK 状态:
10
ACK
1:ACK
0:NACK
传输完成:
9
CMPL
主机模式:一个 transaction 被正确发出且没有失去总线仲裁
从机模式:发送给本控制器的一个 transaction 传输完成
该状态位必须被清除,否则下一个 transaction 会被阻塞。
8
BYTERECV
一个字节数据已被接收
7
BYTETRANS
一个字节数据已被发送
6
START
START 或 repeated START 已被发送或接收
5
STOP
STOP 已被发送或接收
4
ARBLOSE
控制器已失去总线仲裁
主机模式:表示从机已发出响应
3
ADDRHIT
从机模式:表示 transaction 以本控制器为目标从机(包括广播呼
叫)
2
FIFOHALF
数据发送状态下 FIFO 半空
1
FIFOFULL
FIFO 满
0
FIFOEMPTY
FIFO 空
STATUS 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
688/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
ADDR (0x1C)
30
29
28
27
26
25
24
23
22
21
0
0
0
0
0
0
0
0
0
0
0
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
2
1
0
0
0
0
0
RW
N/A
RSVD
31
ADDR
52.3.6
集成电路总线 I2C
0
ADDR [31:0]
位域
名称
9-0
ADDR
描述
从机地址:
对于 7 位地址模式,该寄存器的低 7 位有效
ADDR 位域
52.3.7
DATA (0x20)
30
29
28
27
26
25
24
23
22
21
20
0
0
0
0
0
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
N/A
DATA
RSVD
31
0
DATA [31:0]
位域
名称
7-0
DATA
描述
对该寄存器执行写操作会对 FIFO 进行 push,对该寄存器的读操
作会对 FIFO 进行 pop
DATA 位域
0
0
x
x
1
20
19
18
17
16
15
14
1
1
0
0
0
0
0
0
0
RSVD
N/A
N/A
1
13
0
12
11
10
9
DATACNT
0
21
RW
0
22
DIR
0
23
RW
24
PHASE_STOP
25
RW
26
PHASE_DATA
27
RW
28
PHASE_ADDR
29
RW
30
RSVD
31
PHASE_START
CTRL (0x24)
RW
52.3.8
8
7
6
5
4
3
2
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
689/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
集成电路总线 I2C
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
CTRL [31:0]
位域
名称
描述
12
PHASE_START
发送 START 使能,仅主机模式。
11
PHASE_ADDR
发送地址使能,仅主机模式。
10
PHASE_DATA
发送数据使能,仅主机模式。
9
PHASE_STOP
发送 STOP 使能,仅主机模式。
传输方向:
主机模式下:
0:发送
8
DIR
1:接收
从机模式下:
0:接收
1:发送
byte 数量:
主机模式下:需要发送或接收的字节数,0 表示最大字节数。每次
byte 传输后该寄存器值减 1。
7-0
从机模式下:该寄存器的功能与 DMA 模式相关:
DATACNT
如果 DMA 关闭,该寄存器显示已向主机发送或从主机接收的字
节数,当地址匹配时清零,每字节的数据传输后加 1。
如果 DMA 使能,该寄存器表示需要向主机发送或从主机接收的
字节数,它不会清零且每字节的数据传输后减 1。
CTRL 位域
52.3.9
CMD (0x28)
30
29
28
27
26
25
24
23
22
21
20
19
18
0
0
0
0
0
0
0
0
0
0
0
0
0
0
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
N/A
0
1
CMD
RSVD
31
CMD [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
690/1016
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
集成电路总线 I2C
描述
定义需要执行的操作:
0x0:无操作
0x1:发送一个数据 transaction,仅主机模式
0x2:发送一个 ACK 响应
2-0
0x3:发送一个 NACK 响应
CMD
0x4:清除 FIFO
0x5:复位该控制器,包括中断使能寄存器
当通过向该寄存器写 1 来发送 transaction 时,寄存器保持 0x1 的
值直到传输完成。
CMD 位域
1
0
1
0
T_SP
RW
14
13
12
11
10
9
0
1
0
0
0
0
8
7
6
5
4
1
0
0
0
0
3
2
1
0
0
0
0
SETUP [31:0]
位域
名称
28-24
T_SUDAT
23-21
T_SP
20-16
T_HDDAT
描述
定义 SCL 上升沿之前 SDA 的建立时间
定义毛刺过滤的脉冲宽度
定义 SCL 下降沿之后 SDA 的保持时间
定义 SCL 占空比:
13
T_SCLRADIO
0:50% 占空比
1:低电平的持续时间约为高电平的 2 倍
仅主机模式有效。
12-4
T_SCLHI
定义 SCL 高电平时间,仅主机模式有效
3
DMAEN
DMA 使能
配置主从模式:
2
MASTER
1:主机模式
0:从机模式
I2C 地址模式:
1
ADDRESSING
1:10 位地址模式
0:7 位地址模式
0
IICEN
使能 I2C 控制器
SETUP 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
691/1016
0
IICEN
15
RW
0
16
MASTER
0
0
17
ADDRESSING
1
18
RW
19
RW
0
20
DMAEN
1
21
T_SCLHI
0
RW
1
22
RW
0
23
T_SCLRADIO
0
24
RW
0
25
RW
0
N/A
0
26
RSVD
27
N/A
28
T_HDDAT
29
T_SUDAT
30
RSVD
31
SETUP (0x2C)
RW
52.3.10
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
52.3.11
集成电路总线 I2C
TPM (0x30)
30
29
28
27
26
25
24
23
22
21
20
19
0
0
0
0
0
0
0
0
0
0
0
0
0
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
RW
N/A
0
2
TPM
RSVD
31
0
TPM [31:0]
位域
名称
描述
4-0
TPM
时序参数乘数
TPM 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
692/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
控制器局域网 CAN 控制器
53
本章节介绍控制器局域网 CAN 控制器功能和特性。
53.1
特性总结
本章节介绍控制器局域网 CAN 控制器功能和特性:
● 支持 CAN 2.0B 协议,支持多达 8 字节的数据载荷, 数据速率可达 1Mbit/s;
● 支持 CAN FD 协议,支持多达 64 字节的数据载荷, 数据速率可达 8Mbit/s;
● 支持 1 ∼ 1/256 的波特率预分频,灵活配置波特率;
● 16 个接收缓冲器;
– FIFO 方式;
– 错误或者不被接收的数据不会覆盖存储的消息;
● 1 个高优先主发送缓冲器 PTB;
● 8 个副发送缓冲器 STB;
– FIFO 方式;
– 优先级仲裁方式;
● 16 组独立的筛选器;
– 支持 11 位标准 ID 和 29 位扩展 ID;
– 可编程 ID CODE 位以及 MASK 位;
● PTB/STB 均支持单次发送模式;
● 支持静默模式;
● 支持回环模式;
● 支持待机模式;
● 支持捕捉传输的错误种类以及定位仲裁失败位置;
● 可编程的错误警告值;
● 支持 ISO11898-4 规定时间触发 CAN 以及接收时间戳可配置停止位:1 位,1.5 位或者 2 位。
CAN 控制器的框图如图 92。
CAN CLK
1
8
2
16
APB bus
INT to CPU core
2
8
1
图 92: CAN 控制器数据流框图
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
693/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
53.2
控制器局域网 CAN 控制器
功能描述
本章节介绍控制器局域网 CAN 控制器的功能。
53.2.1
CAN 管脚说明
管脚名称
方向
功能说明
RXD
输入
CAN 接收数据信号
TXD
输出
CAN 发送数据信号
STBY
输出
CAN 外部收发器待机控制信号
表 211: CAN 管脚说明
53.2.2
设定波特率
CAN 通信使用的时钟 CAN_CLK 为 SOC 内部产生的时钟,使用 CAN 模块之前,默认时钟频率 ( fcan_clk ) 是
80Mhz, 客户一般不需要对此时钟进行改变。
下图给出 CAN 位时间(BitTime,BT)定义图,虚线上部分为 CAN 协议规定的位时间,虚线下部分为本 CAN 控
制器定义的位时间。
其中 segment1 和 segment2 可以通过寄存器 BT 设定。
BT 寄存器只能在 CMD_STA_CMD_CTRL.RESET=
即 CAN 软件复位时设定。
图 93: CAN RXTX 位的时间定义图
TQ 计算方法请参考以下公式,其中 PRESC 通过 BT 寄存器的 PRESC 位设定。
TQ =
n prescaler
fcan_clk
位时间计算方法请参考以下公式,其中 SEG_1 和 SEG_2 通过 BT 寄存器的 SEG_1 位和 SEG_2 位设定。
BT =
n prescaler ∗ nT Q
= tS eg_1 + tS eg_2 = ((S EG1 + 2 + (S EG2 + 1))T Q
fcan_clk
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
694/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
寄存器位
设定范围
设定规则
BT 寄存器的 SEG_1 位
0 ~ 63
SEG_1 ≥ SEG_2 + 1
BT 寄存器的 SEG_2 位
0~7
SEG_2 ≥ SJW
BT 寄存器的 SJW 位
0~7
表 212: CAN 位时间设定规则
53.2.3
发送缓冲器
CAN 控制器提供两种发送缓冲器用于发送数据,主发送数据缓冲器 PTB 和副发送缓冲器 STB。PTB 具有最
高的优先级,但只能缓冲一帧数据。STB 优先级比 PTB 低,但可以缓冲 4 帧数据,且 STB 内 4 帧数据可以工作
在 FIFO 模式或者优先级仲裁模式。
STB 中的 4 帧数据可以通过 CMD_STA_CMD_CTRL 寄存器的 TSALL 位设定为 1 全部发送,在 FIFO 模式
下,最先写入的数据先发送,在优先级模式下,ID 小的数据先发送。PTB 中的数据具有最高优先级,所以 PTB 发
送能推迟 STB 发送,但是已经赢得仲裁并开始发送的 STB 不能够被 PTB 发送推迟。
PTB 和 STB 中的一帧数据需占用 4 个字,可以通过 TBUF 寄存器进行访问。通过 CMD_STA_CMD_CTRL 寄
存器的 TBSEL 位选择 PTB 或者 STB,TBSEL=0,选择 PTB,TBSEL=1,选择 STB。通过 CMD_STA_CMD_CTRL
寄存器的 TSNEXT 位选择 STB 中的下一个 SLOT。对应关系如下图所示:
Prority 优先级判决
高
通过TBUF写入的消息数据
即将发送的消息
低
当TSONE=1 或 TSALL=1时,
发送开始
消息成功发送后,跳到下一个位置
设置TSNEXT=1,消息到下一个位置
图 94: CAN TBUF 寄存器写发送缓冲器和示意图
53.2.4
接受缓冲器
CAN 控制器提供 16 个 SLOT 的接收缓冲器用于存储接收到的数据,该 16SLOT 的接收缓冲器工作在 FIFO
模式。每个 RB SLOT 需占用 4 个字,通过 RBUF 寄存器来读取接收到的数据,总是最先读取最早接收到数据,
并通过 CMD_STA_CMD_CTRL 寄存器的 RREL 设置为 1 释放已经读取的 RB SLOT,并指向下一个 RB SLOT。
通过 RBUF 读取 RB SLOT 示意图如下。
53.2.5
接收筛选寄存器组
CAN 控制器提供 16 组 32 位筛选器用于过滤接收到的数据从而降低 CPU 负荷,筛选器可以支持标准格式
11 位 ID 或者扩展格式 29 位 ID。每组筛选器有一个 32 位 ID CODE 寄存器和一个 32 位 ID MASK 寄存器,ID
CODE 寄存器用于比较接收到 CAN ID,而 ID MASK 寄存器用于选择比较的 CAN ID 位。对应的 ID MASK 位为
1 时,不比较该位的 ID CODE。
接收到的数据只要通过 16 组筛选器的任意一组,则被接收,接收到的数据存储在 RB 中,否则数据不被接
收,也不被存储。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
695/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
每组筛选器通过 ACFEN 寄存器使能或者禁止。ID CODE 和 ID MASK 通过 ACFCTRL 寄存器的 SELMASK
位设定,SELMASK=0 时,指向 ID CODE,SELMASK=1 时,指向 ID MASK。筛选器通过 ACFCTRL 寄存器的
ACFADR 位选择。ID CODE 和 ID MASK 通过 ACF 寄存器访问且只能在 CMD_STA_CMD_CTRL.RESET=1 即
CAN 软件复位时设定。ACF 寄存访问筛选寄存器组的方式请参考下图。
ACODE
0
ACFADR
1
15
SELMASK
AMASK
ACF_3
0
ACF_2
1
ACF_1
ACF_0
0
ACFADR
1
15
图 95: CAN 接受筛选寄存器
53.2.6
单次数据发送
不需要使用自动重新发送功能时,可以通过寄存器设定为单次发送模式,CMD_STA_CMD_CTRL 寄存器的
TPSS 位用于 PTB 的单次发送模式设定,TSSS 位用于 STB 的单次发送模式。数据成功发送时单次发送和正常
发送模式时动作相同。但是数据没有成功发送时会出现以下结果:
● TPIF 置位(TPIE=1),对应的 BUF SLOT 数据会被清除。
● 有错误发送时,KOER 更新,BEIF 置位(BEIE=1)。
● 仲裁失败,ALIF 置位(ALIE=1)。
单次发送模式,不能单独依靠 TPIF 来判断发送完成,需要同 BEIF 和 ALIF 一起判断发送是否完成。
53.2.7
取消数据发送
可以通过 TPA 或者 TSA 取消已请求但还没有被执行的数据发送。取消数据发送会出现以下几种情况:
● 仲裁中
– 节点仲裁失败,则取消数据发送。
– 节点仲裁成功,则继续发送。
● 数据发送中
– 成功发送数据且收到 ACK,对应的标志和状态正常置位。数据发送不取消。
– 成功发送数据但没有收到 ACK,数据发送取消,错误计数器增加。
– TSALL=1 设定的发送数据,正在发送的 STB SLOT 数据正常发送,没有开始发送的 STB SLOT
被取消。
取消数据发送的结果有以下两种情况。
● TPA 释放 PTB,且使 TPE=0。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
696/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
● TSA 释放一个 STB SLOT 或者全部 STB SLOT 取决是 TSONE 还是 TSALL 使能的发送。
53.2.8
数据接收
接收筛选器组可以过滤掉不需要的接收数据,减少中断的发生和 RB 的读取,从而降低 CPU 负荷。接收数据
设定步骤如下:
● 设定筛选器组。
● 设定 RFIE,RAFIE 和 AFWL。
● 等待 RFIF 或者 RAIF。
● 通过 RBUF 从 RB FIFO 中读取最早接收到的数据。
● 设置 RREL=1,选择下一个 RB SLOT。
● 重复 4,5 直到通过 RSTAT 确认 RB 为空。
53.2.9
错误处理
CAN 控制器一方面可以自动处理部分错误,比如自动重发数据或者丢弃接收到含有错误的帧,另一方面通过
中断将错误向 CPU 报告。
CAN 节点有以下三种错误状态:
● 错误主动:节点检测到错误时自动发送主动错误标志。
● 错误被动:节点检测到错误时自动发送被动错误标志。
● 节点关闭:关闭状态下此节点不再影响整个 CAN 网络。
CAN 控制器提供 TECNT 和 RECNT 两个计数器用于计数错误。TECNT 和 RECNT 计数器按照 CAN2.0B 协议
规定的规则进行增减。另外提供可编程的 CAN 错误警告 LIMIT 寄存器用于产生错误中断通知 CPU。
CAN 通信过程中有以下 5 种错误类型,错误类型可以通过 EALCAP 寄存器的 KOER 位识别:
● 位错误。
● 形式错误。
● 填充错误。
● 应答错误。
● CRC 错误。
53.2.10
节点关闭
当发送错误数大于 255 时,CAN 节点自动进入节点关闭状态从而不参与 CAN 通信,直到返回到错误主动状
态。可以通过 CCMD_STA_CMD_CTRL 寄存器的 BUSOFF 位确认 CAN 节点关闭状态。BUSOFF 被置位的同时
EIF 中断产生。
CAN 从节点关闭状态状态恢复到错误主动状态有以下两种方法:
● 上电复位。
● 接收到连续 128 个 11 位的隐形位序列(恢复序列)。
节点关闭状态下,TECNT 值保持不变,RECNT 用于计数恢复序列。从节点关闭状态恢复后,TECNT 和 RECNT
被复位为 0。
节点关闭标志 BUSOFF 置位的同时,CMD_STA_CMD_CTRL 寄存器的 RESET 位也被置位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
697/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
仲裁失败位置捕捉
53.2.11
CAN 控制器能够精确捕捉到仲裁失败位的位置并反映到 ALC 寄存器中。ALC 寄存器中保存着最近一次仲裁
失败位的位置,如果节点赢得仲裁,则 ALC 位不更新。
ALC 值定义如下:
● SOF 位后,第一个 ID 数据位 ALC 为 0,第二个 ID 数据位 ALC 为 1,依次类推。因为仲裁只发生在仲
裁场内,所以 ALC 的最大值为 31。比如一个标准格式远程帧和一个扩展帧仲裁,扩展帧在 IDE 位失败,
则 ALC=12。
53.2.12
回环模式
CAN 控制器支持以下两种回环模式:
● 内部回环。
● 外部回环。
两种回环模式都可以接收自己发出的数据帧,主要用于测试用途。
内部回环模式,模块内部将接收数据线连接到发送数据线,并且发送数据不输出。内部回环模式下,节点会
生成自应答信号以避免 ACK 错误。
外部回环模式保持和收发器的连接因此发送的数据仍能出现在 CAN 总线上,在收发器的帮助下,CAN 能收
到自己发送的数据。外部回环模式可以通过 CMD_STA_CMD_CTRL 寄存器的 SACK 位来决定是否生成自应答
信号,SACK=0 时,不生成自应答信号,SACK=1 时,生成自应答信号。
外部回环模式,SACK=0 时,会出现以下两种情况:
● 其它节点也收到本节点发送的数据帧并发送应答信号,该情况下本节点能够成功收发数据。
● 如果没有其它节点返回应答信号,则会产生应答错误,会重新发送数据并增加错误计数器。此时推荐采
用单次发送模式。
从回环模式返回到正常模式时,除了清除模式位以外,还需要软件复位 CAN_CTRL。
CAN 总线
CAN 总线
CAN收发器
CAN收发器
TXD
RXD
TXD
RXD
CAN-CTRL
CAN-CTRL
LBME
LBMI
图 96: CAN-CTRL 的回环模式
53.2.13
静默模式
静默模式可以用来监控 CAN 网络数据。在静默模式下,可以从 CAN 总线接收数据,不向总线发送任何数据。
将 CMD_STA_CMD_CTRL 寄存器中的 LOM 置 1,使 CAN 总线控制器进入静默模式,将其清 0 可以离开静默模
式。
外部回环模式可以和静默模式组合成外部回环静默模式,此时 CAN 可以认为一个安静的接收者,但在有必
要的时候可以发送数据。外部回环静默模式下,帧包含自应答信号允许被发送,但是该节点不会产生错误标志和
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
698/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
过载帧。
53.2.14
软件复位功能
通过设定寄存器 CMD_STA_CMD_CTRL 寄存器的 RESET 位为 1, 实现软件复位功能,软件复位功能的复位
范围如下表所示。
表 213: 软件复位
寄存器
复位
注释
ACFADR
NO
-
ACODE_X
NO
RESET=1 时寄存器可写,RESET=0 时写禁止。
ACFA
YES
-
AE_x
NO
-
AFWL
NO
-
AIF
YES
-
ALC
YES
-
ALIE
NO
-
ALIF
YES
-
AMASK_x
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
BEIE
NO
-
BEIF
YES
-
BUSOFF
NO
BUSOFF=1 时复位错误寄存器,同时也复位 BUSOFF
EIE
NO
-
EIF
NO
-
EPASS
NO
-
EPIE
NO
-
EPIF
YES
-
EWARN
NO
-
EWL
YES
-
FD_ISO
NO
-
FSTIM
NO
-
F_PRESC
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
F_SEG_1
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
F_SEG_2
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
F_SJW
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
KELOC
YES
-
KOER
YES
-
LBME
YES
-
LBMI
YES
-
LOM
NO
-
MAEIF
YES
-
MDEIF
YES
-
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
699/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
表 213: 软件复位
寄存器
复位
注释
MDWIE
NO
-
MDWIF
YES
-
MEL
NO
-
MEBP1
NO
-
MEBP2
NO
-
ME1EE
NO
-
ME2EE
NO
-
MEAEE
NO
-
MEEEC
NO
-
MENEC
NO
-
MES
NO
-
MPEN
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
RACTIVE
YES
CAN 的消息接收会被马上终止,不会发出接收应答。
RAFIE
NO
-
RAFIF
YES
-
RBALL
YES
-
RBUF
YES
-
RECNT
NO
-
REF_ID
NO
-
RFIE
NO
-
RFIF
YES
-
RIE
NO
-
RIF
YES
-
ROIE
NO
-
ROIF
UES
-
ROM
NO
-
ROV
UES
所有的 RB 位置都被标为“空”
RREL
YES
-
RSTAT
YES
所有的 RB 位置都被标为“空”
SACK
YES
-
SEIF
YES
-
SELMASK
NO
-
STBY
NO
-
SWIE
NO
-
SWIF
YES
-
S_PRESC
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
S_SEG_1
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
S_SEG_2
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
S_SJW
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
700/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
表 213: 软件复位
寄存器
复位
注释
TACTIVE
YES
CAN 的消息发送会被马上终止。
TBE
YES
-
TBF
YES
-
TBPTR
NO
-
TBSEL
YES
TBUF 指向 PTB
TBUF
YES
所有的 STB 位置都被标为“空”
TECNT
NO
-
TEIF
YES
-
TIMEEN
NO
-
TIMEPOS
NO
-
TPA
YES
-
TPE
YES
-
TSA
YES
-
TSALL
YES
-
TSMODE
NO
-
TSNEXT
YES
-
TSONE
YES
-
TPIE
NO
-
TPIF
YES
-
TPSS
YES
-
TSFF
YES
所有的 STB 位置都被标为“空
TSSS
NO
-
TSSTAT
YES
所有的 STB 位置都被标为“空
TTEN
YES
-
TTIF
YES
-
TTIE
NO
-
TTPTR
NO
-
TTS
NO
-
TTTBM
NO
-
TTYPE
NO
-
TT_TRIG
NO
-
TT_WTRIG
NO
-
T_PRESC
NO
-
TXB
YES
-
TXS
YES
-
WTIE
YES
-
WTIF
YES
-
XMREN
NO
RESET=1 时寄存器可写,RESET=0 时写禁止
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
701/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
53.2.15
控制器局域网 CAN 控制器
向上兼容 CAN-FD 功能
CAN 控制器的 CAN-FD 功能如果未被使能情况下,也能够向上兼容;在这种情况下,在 CAN-FD 网络中收
到 CAN-FD 的帧,接收器会自动忽略这些帧,不返回 ACK,等到总线空闲时,再发送或者接收下一个 CAN2.0B
的帧。
53.2.16
时间触发 TTCAN
CAN 控制器为 ISO11898-4 规定的时间触发通信方式提供部分 (lever 1) 硬件支持。本章节从以下 5 个部分
介绍 TTCAN 功能。
53.2.16.1
TTCAN 模式下的 TBUF 行为
TTTBM=1
TTTBM=1 时,PTB 和 STB SLOT 一样组成 TB SLOT,通过 TBPTR 寄存器指定发送 BUF,其中 TBPTR=0
时,指向 PTB,TBPTR=1 是指向 STB SLOT1,依次类推。主机可以通过 TPE 和 TPF 寄存器来标记发送 BUF
SLOT。此时 TBSEL 和 TSNEXT 寄存器无任何意义从而可以被忽略。
TTTBM=1 时,PTB 不具有任何特殊的属性,和 STB SLOT 一样,传送完成标志也采用 TSIF。
TTCAN 模式时,发送 BUF 没有 FIFO 模式和优先级仲裁模式,同时也只有一个选定的 SLOT 可以发送数据。
TTCAN 模式下,传输开始需要采用时间触发方式,TPE,TSONE,TSALL,TPSS 和 TPA 被固定为 0 且被
忽略。
TTTBM=0
TTTBM=0 时,组合使用事件驱动通信和接收时间戳功能。在该模式下,PTB 和 STB 的功能和 TTEN=0 时
一致,因此 PTB 始终具有最高的优先级,而 STB 可以工作在 FIFO 模式或者仲裁模式。
53.2.16.2
TTCAN 功能描述
上电后,Time Master 需要根据 ISO 11898-4 协议进行初始化。一个 CAN 网络中,
最多可以有 8 个潜在的 Time Master。每一个 Time Master 都具有自己的参考消息 ID(ID 最后 3 位)
。这些潜在
的 Time Master 根据自己的优先级发送各自的参考消息。
TTEN=1 后,16 位的计数器开始工作,当参考消息被成功接收或者 Time Master 成功发送参考消息时,CAN
控制器将 Sync_Mark 拷贝给 Ref_Mark,Ref_Mark 将 cycle time 设置为 0。成功接收参考消息置位 RIF 标志而
成功发送参考消息置位 TPIF 标志或者 TSIF 标志。此时主机需要准备下一个动作的触发条件。
触发条件可以是接收触发。该触发仅触发中断可用于检测期待的消息没有被收到。触发条件也可以是发送触
发。该触发开始发送通过 TTPTR 寄存器指定的 TBUF SLOT 里的数据。如果选定的 TBUF SLOT 被标记为空,则
不开始发送,但置位中断标志。
53.2.16.3
TTCAN 时序
CAN 控制器支持 ISO11898-4 level 1。包含的一个 16 位计数器工作在为 PRESC,
SEG_1,SET_2 定义的位时间下。如果 TTEN=1,则有一个额外的预分频器 T_PRESC。一帧数据的 SOF 时,计
数器的值为 Sync_Mark。如果该帧数据为参考消息,则将 Sync_Mark 拷贝给 Ref_Mark。cycle time 等于计数器
的值减去 Ref_Mark。该时间用作为接收消息的时间戳或者发送消息的触发时间基准。
53.2.16.4
TTCAN 触发方式
通过 TTYPE 寄存器定义 TTCAN 的触发方式,TTPTR 寄存器指定发送 SLOT,而
TT_TRIG 指定触发器的周期时间。包含以下五种触发方式:
● 立即触发。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
702/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
● 时间触发。
● 单词发送触发。
● 发送开始触发。
● 发送停止触发。
除了立即触发方式外,所有的触发器都使用 TTIF 标志。TTTBM=1 时,只支持时间触发方式。
立即触发
通过写 TT_TRIG 的高位(不在意写入的值)
,启动触发器。此模式下,TTPTR 选定的 TBUF SLOT 内的数据
会立即发送。TTIF 不置位。
时间触发
时间触发方式仅通过置位 TTIF 标志产生中断,并无其他功能。如果一个节点期待在特定的时间窗口内收到
期待的数据,则可以使用时间触发方式。如果 TT_TRIG 值小于实际的 cycle time,则 TEIF 置位且无其它动作。
单次发送触发
单次发送触发方式用于在执行时间窗口内发送数据。此时,忽略 TSSS 位。
通过 TEW 位设定 ISO11898-4 规定的最多 16 个 cycle time 的 Tick,设定范围为 1 16。如果在规定的发送使
能时间窗口内数据没有开始发送,则帧被丢弃。对应的发送 BUF SLOT 被标记为空,并且置位 AIF,对应的发送
BUF 内的数据不会被改写,因为可以通过置位 TPF 再次发送。
如果 TT_TRIG 值小于实际的周期时间,则 TEIF 置位且无其它动作。
发送开始触发
发送开始触发方式用于仲裁时间窗口内,参与仲裁。TSSS 用于决定是否自动重发或者单次发送模式。如果
指定的消息没有被成功发送,可以使用发送停止触发来停止该发送。
如果 TT_TRIG 值小于实际的周期时间,则 TEIF 置位且无其它动作。
发送停止触发
发送停止触发方式用于停止通过发送开始触发方式已经开始的发送。如果发送被停止,则发送帧被舍弃,置
位 AIF 并将选定的 TBUF SLOT 标记为空,但 TBUF SLOT 内的数据不会被改写,可以通过置位 TPF 就可以再
次发送。
如果 TT_TRIG 值小于实际的周期时间,则 TEIF 置位且无其它动作。
53.2.16.5
TTCAN 触发看门时间
TTCAN 触发看门时间功能类似于看门狗功能,在 TTTBM=1 时使用。用来看
门从上次成功接收到参考消息开始的时间。参考消息可以在周期 cycle time 中或者一个事件后被接收,应用程序
应该根据具体情况设定合适的看门时间。
如果 cycle count 等于 TT_WTRIG,则置位 WTIF。通过 WTIE 写 0,关闭看门触发。如果 TT_WTRIG 比实
际的 cycle time 小,则 TEIF 置位。
53.2.17
CiA 603 时间戳
53.2.17.1
时间戳
CAN in Automation (CiA) 在规范 603 中定义了至少 16 位时间戳的方法,此芯片 CAN 控制器支持 64 位时间
戳。它可以与 TTCAN 一起使用或独立使用。
CiA 603 有一个自由运行的计时器,它计算时钟周期而不是 CAN 位次。CAN 控制器外部有自由运行定时器
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
703/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
(64 位)PTPC,计数值连接到 CAN 控制器;计数器的时钟(PTPC 的时钟,默认值是 100Mhz)和 CAN 控制器
的通信时钟 can_clk 异步,和总线(APB 总线)的时钟也异步;can_clk 时钟域的事件(event)来触发从 PTPC
计数器来的计数值(PTPC 时钟域)作为时间戳,再到总线的时钟域(APB 时钟),最后再回到 can_clk 时钟域;
这些跨时钟域的信号会带来一定的延迟。
在 SOF 或 EOF 位的采样点处获取时间戳,其中帧被取为有效的。这可以通过配置位 TIMEPOS 来选择。ACK
后的七个隐性位分隔符形成 CAN / CAN FD 帧的 EOF。一个帧在最后一位对接收者有效 EOF,但对于 EOF 最后
一位的发送器。
在许多系统中广泛使用的基于软件的时间戳依赖于接收和传输中断。因此,建议在 EOF 上加时间戳。
CiA 603 应该支持 AUTOSAR 的时间戳和时间同步。用于 AUTOSAR CAN 网络中的一个节点是时间主站。
时间主站发送同步消息(同步消息)。SYNC 消息的时间戳由时间主机和所有时间获取奴隶。从命令 SYNC 消
息事件到发出 SYNC 消息的时间之间的时间差实际传输的 SYNC 消息将在后续 (FUP) 消息中由时间大师。因此
CAN-CTRL 只支持传输帧 (TTS) 的一个时间戳,但所有接收帧 (RTS) 的单独时间戳。为传输帧生成时间戳可以
使用 TBUF 插槽内的位 TTSEN 为每个帧单独启用或禁用。
CiA 定义了读取定时器和修改定时器的规则。CAN-CTRL 不包括定时器,但使用外部定时器。CAN-CTRL 只
包括时间戳机制,寄存器用于存储 TTS 和用于存储每个帧的 RTS 的内存。
寄存器位 TIMEEN 启用或禁用时间戳。如果禁用 TTS 和 RTS 无效。
外部定时器
53.2.17.2
CAN 控制器从 PTPC 模块接入 64 位自由运行计数器的计数值,PTPC 计数器的详细信息,请参照 PTPC 章
节。
总之,PTPC 是一个自由运行的计数器,它可以被 CPU 读取和写入;与 CAN 控制器提供的 CIiA 603 时间戳
支持 AUTOSAR 定义的时间同步。
53.3
53.3.1
CAN 寄存器
寄存器说明
CAN 的寄存器列表如下:
CAN0 base address: 0xF0080000
CAN1 base address: 0xF0084000
地址偏移
名称
描述
复位值
0x0000
RBUF[BUF0]
接收缓冲区寄存器及时间戳
0x00000000
0x0004
RBUF[BUF1]
接收缓冲区寄存器及时间戳
0x00000000
0x0008
RBUF[BUF2]
接收缓冲区寄存器及时间戳
0x00000000
0x000C
RBUF[BUF3]
接收缓冲区寄存器及时间戳
0x00000000
0x0010
RBUF[BUF4]
接收缓冲区寄存器及时间戳
0x00000000
0x0014
RBUF[BUF5]
接收缓冲区寄存器及时间戳
0x00000000
0x0018
RBUF[BUF6]
接收缓冲区寄存器及时间戳
0x00000000
0x001C
RBUF[BUF7]
接收缓冲区寄存器及时间戳
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
704/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
控制器局域网 CAN 控制器
名称
描述
复位值
0x0020
RBUF[BUF8]
接收缓冲区寄存器及时间戳
0x00000000
0x0024
RBUF[BUF9]
接收缓冲区寄存器及时间戳
0x00000000
0x0028
RBUF[BUF10]
接收缓冲区寄存器及时间戳
0x00000000
0x002C
RBUF[BUF11]
接收缓冲区寄存器及时间戳
0x00000000
0x0030
RBUF[BUF12]
接收缓冲区寄存器及时间戳
0x00000000
0x0034
RBUF[BUF13]
接收缓冲区寄存器及时间戳
0x00000000
0x0038
RBUF[BUF14]
接收缓冲区寄存器及时间戳
0x00000000
0x003C
RBUF[BUF15]
接收缓冲区寄存器及时间戳
0x00000000
0x0040
RBUF[BUF16]
接收缓冲区寄存器及时间戳
0x00000000
0x0044
RBUF[BUF17]
接收缓冲区寄存器及时间戳
0x00000000
0x0048
RBUF[BUF18]
接收缓冲区寄存器及时间戳
0x00000000
0x004C
RBUF[BUF19]
接收缓冲区寄存器及时间戳
0x00000000
0x0050
TBUF[BUF0]
发送缓存寄存器
0x00000000
0x0054
TBUF[BUF1]
发送缓存寄存器
0x00000000
0x0058
TBUF[BUF2]
发送缓存寄存器
0x00000000
0x005C
TBUF[BUF3]
发送缓存寄存器
0x00000000
0x0060
TBUF[BUF4]
发送缓存寄存器
0x00000000
0x0064
TBUF[BUF5]
发送缓存寄存器
0x00000000
0x0068
TBUF[BUF6]
发送缓存寄存器
0x00000000
0x006C
TBUF[BUF7]
发送缓存寄存器
0x00000000
0x0070
TBUF[BUF8]
发送缓存寄存器
0x00000000
0x0074
TBUF[BUF9]
发送缓存寄存器
0x00000000
0x0078
TBUF[BUF10]
发送缓存寄存器
0x00000000
0x007C
TBUF[BUF11]
发送缓存寄存器
0x00000000
0x0080
TBUF[BUF12]
发送缓存寄存器
0x00000000
0x0084
TBUF[BUF13]
发送缓存寄存器
0x00000000
0x0088
TBUF[BUF14]
发送缓存寄存器
0x00000000
0x008C
TBUF[BUF15]
发送缓存寄存器
0x00000000
0x0090
TBUF[BUF16]
发送缓存寄存器
0x00000000
0x0094
TBUF[BUF17]
发送缓存寄存器
0x00000000
0x0098
TTS[WRD0]
发送时间戳寄存器,低 32 位
0x00000000
0x009C
TTS[WRD1]
发送时间戳寄存器,高 32 位
0x00000000
0x00A0
CMD_STA_CMD_CTRL
配置,状态,命令和控制寄存器
0x00900080
0x00A4
RTIE
接收和发送中断使能寄存器
0xFE
0x00A5
RTIF
接收和发送中断标志寄存器
0x00
0x00A6
ERRINT
错误中断使能寄存器
0x00
0x00A7
LIMIT
警告限制寄存器。
0x1B
0x00A8
S_PRESC
位时序寄存器(低速)
0x01020203
0x00AC
F_PRESC
位时序寄存器(高速)
0x01020203
0x00B0
EALCAP
错误或仲裁丢失寄存器
0x00
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
705/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
地址偏移
名称
描述
复位值
0x00B1
TDC
发送延迟补偿寄存器
0x00
0x00B2
RECNT
接收错误计数寄存器
0x00
0x00B3
TECNT
发送错误计数寄存器
0x00
0x00B4
ACFCTRL
接收过滤控制寄存器
0x00
0x00B5
TIMECFG
CiA 603 时间戳
0x00
0x00B6
ACF_EN
接收过滤使能寄存器
0x0000
0x00B8
ACF
0x00BC
VER
版本号
0x0000
0x00BE
TBSLOT
TTCAN:TB 时隙指针寄存器
0x00
0x00BF
TTCFG
0x00C0
REF_MSG
TTCAN: 参考消息寄存器
0x00000000
0x00C4
TRIG_CFG
TTCAN: 触发配置寄存器
0x0000
0x00C6
TT_TRIG
TTCAN: 触发时间寄存器
0x0000
0x00C8
TT_WTRIG
TTCAN: 监视触发时间寄存器。
0x0000
接收 CODE ACODE 或
0x00000000
ACMASK 寄存器
TTCAN:TB 时间触发控制寄存
器
0x00
表 214: CAN 寄存器列表
53.3.2
寄存器详细信息
CAN 的寄存器详细说明如下:
53.3.3
RBUF (0x0 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
RW
RBUF
31
0
RBUF [31:0]
位域
名称
31-0
RBUF
描述
接收缓存
RBUF 位域
31
30
TBUF (0x50 + 0x4 * n)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
TBUF
53.3.4
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
706/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
10
9
8
7
6
5
4
3
2
1
0
RW
31
控制器局域网 CAN 控制器
0
TBUF [31:0]
位域
名称
31-0
TBUF
描述
发送缓存
TBUF 位域
53.3.5
TTS (0x98 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RO
TTS_WRD0
31
0
TTS [31:0]
位域
名称
描述
31-0
TTS_WRD0
发送时间戳,字 0,低 32 位
TTS 位域
TACTIVE
BUSOFF
RW
0
RACTIVE
0
RO
0
RO
TSSS
0
RW
1
LBMI
LBME
RW
0
TPSS
RESET
RW
0
RW
TSA
RW
0
RW
TSALL
0
TSONE
0
RW
TPA
RW
0
RW
TPE
11
STBY
0
12
RW
0
13
RW
0
LOM
0
RW
x
14
TBSEL
x
15
RW
1
16
TSSTAT
0
17
RO
0
18
RSVD
1
19
N/A
TTTBM
0
TSMODE
0
RW
x
20
RW
0
21
TSNEXT
0
22
RW
RSVD
0
23
FD_ISO
RBALL
RW
N/A
0
24
RW
RREL
RW
0
25
RSTAT
ROV
26
ROM
27
RO
28
RW
29
SACK
30
RW
31
CMD_STA_CMD_CTRL (0xA0)
RO
53.3.6
0
0
0
CMD_STA_CMD_CTRL [31:0]
位域
名称
31
SACK
描述
自响应 (Self ACK)
0–无自响应确认
1–当 LBME=1 时,自响应。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
707/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
接收缓冲区溢出模式,如果收到新消息时 RBUF 已满,则 ROM
30
ROM
选择以下内容:
1–不会存储新消息。
0–最旧的消息将被覆盖。
接收缓冲区溢出
29
ROV
1–溢出。至少丢失了一条消息。
0–无溢出。
ROV 通过设置 RREL=1 被清除。
接收缓冲区释放,CPU 已读取实际的 RB 槽并释放它。
28
RREL
RB 槽指针指向下一个 RB 插槽。RSTAT 得到更新。
1–释放:主机已读取 RB。
0–无释放
接收缓冲区存储“所有”数据帧
27
RBALL
0–正常操作
1–RB 存储正确的数据帧以及有错误的数据帧
接收缓冲区状态
00 - 空
25-24
RSTAT
01 - 不空
10 - 几乎满(AFWL 可编程阈值)但未满且无溢出
11 - 满(在溢出的情况下保持设置—溢出信号见 ROV)
CAN FD ISO 模式
0 - 博世 CAN FD(非 ISO)模式
1 - ISO CAN FD 模式 (ISO 11898-1:2015)
23
FD_ISO
ISO CAN FD 模式具有不同的 CRC 初始化值和额外的填充位计
数。
两种模式不兼容,不得在一个 CAN 网络中混合使用。
该位对 CAN 2.0B 没有影响。
该位仅在 RESET=1 时可写。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
708/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
副发送缓冲器下一个数据槽的使能
0 - 无动作
1 - STB 时隙已满,选择下一个插槽。
在所有帧字节写入 TBUF 寄存器后,主机控制器必须设置
TSNEXT 表示该槽已被填满。然后 CAN-CTRL 内核连接 TBUF
注册到下一个插槽。一旦一个时隙被标记为已满,就可以开始传
输使用 TSONE 或 TSALL。
22
TSNEXT
可以在一次写访问中同时设置 TSNEXT 和 TSONE 或 TSALL。
TSNEXT 必须由主机控制器设置,并由 CAN-CTRL 自动复位核
心设置后立即。
如果 TBSEL=0,则设置 TSNEXT 没有意义。在这种情况下
TSNEXT 被忽略并且自动清除。它不会造成任何伤害。
如果 STB 的所有时隙都已填满,则 TSNEXT 将保持设置状态,
直到一个时隙变为空闲。
TSNEXT 在 TTCAN 模式下没有意义,固定为 0。
副发送缓冲器操作模式
0 - 先进先出模式
1 - 优先决策模式
21
TSMODE
在 FIFO 模式下,帧按照写入 STB 的顺序传输。
在优先级决策模式下,STB 中具有最高优先级的帧自动首先传送。
帧的 ID 用于优先级决定。较低的 ID 意味着帧的优先级更高。
PTB 中的帧始终具有最高优先级,无论身份证。
只有当 STB 为空时才应切换 TSMODE。
TTCAN 发送缓冲模式
如果 TTEN=0,则忽略 TTTBM,否则以下内容有效:
0 - 分离 PTB 和 STB,行为由 TSMODE 定义
1 - 完全 TTCAN 支持:缓冲槽可由 TBPTR 和 TTPTR 选择
对于事件驱动的 CAN 通信(TTEN=0)
,系统提供了 PTB 和 STB
;STB 的行为由 TSMODE 定义。
20
TTTBM
对于时间触发的 CAN 通信 (TTEN=1),支持所有功能,包括时间
触发传输(TTTBM=1)
。所有 TB 槽都是可使用 TTPTR 和
TBPTR 寻址。
对于仅支持接收时间戳的时间触发 CAN 通信 (TTEN=1),可选择
TTTBM=0。然后发送缓冲区作为事件驱动模式(通过 TSMODE
选择行为)。
仅当 TBUF 为空时才可更改 TTTBM 的值。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
709/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
传输辅助状态 STAT 位
如果 TTEN=0 或 TTTBM=0:
00–STB 为空
01–STB 小于或等于半满
10–STB 已满一半
17-16
TSSTAT
11–STB 已满
如果使用 STB_DISABLE 禁用 STB,则 TSSTAT=00。
如果 TTEN=1 且 TTTBM=1:
00–PTB 和 STB 为空
01–PTB 和 STB 非空且未满
11–PTB 和 STB 已满
发送缓冲区选择; 选择要加载消息的传输缓冲区(TBUF)。
TBSEL 需要在写入 TBUF 寄存器时稳定。
15
TBSEL
TSNEXT 已设置。
0 - PTB(高优先级缓冲区)
1 - STB(次级优先级)
如果(TTEN=1 和 TTTBM=1)
,该位将被复位为硬件复位
只听模式
0 - 禁用
1 - 启用
14
LOM
如果设置了 TPE、TSONE 或 TSALL,则无法启用 LOM。如果已
经启用值听模式下 ( LOM),且 LBME=0,将无法启动传输。
LOM=1 和 LBME=0 禁用所有传输。
LOM=1 和 LBME=1 禁用接收帧和错误帧的 ACK,但启用
自己的帧的传输。
CAN 外部收发器待机模式
0 - 禁用
1 - 启用
13
STBY
该寄存器位连接到输出信号 STBY,可用于控制 CAN 收发器的待
机模式。
如果 TPE=1、TSONE=1 或 TSALL=1,则 STBY 不能设置为 1。
如果主机将 STBY 设置为 0,则主机需要等待收发器在主机请求
新传输之前启动。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
710/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
主传输使能
1 - 高优先级 PTB 消息的传输启用
0 - PTB 无传输
如果设置了 TPE,来自 PTB 的消息将在下一个可能的传输位置
传输。未完成的 STB 消息将继续完成,但新 STB 将等待 PTB 消
12
TPE
息被传输后才开始。TPE 一直保持被设置状态(=1)
,直到消息
成功传输或使用中止协议。
主机控制器可以将 TPE 设置为 1,但不能将其重置为 0。只能是
可能用 TPA 并中止消息。
如果 RESET=1, STBY=1, (LOM=1 和 LBME=0) 或 (TTEN=1 和
TTTBM=1),此位会被重置位硬件复位时的值(0)
。
传输主中止
1–中止。
中止由 TPE=1 请求,但未开始的 PTB 传输。
(消息的数据字节保
留在 PTB 中)
。
11
TPA
0–不中止。
当此位被设置后,整个 CAN 控制器复位时复位此位;设置 TPA
位,会使 TPE 清零。
CPU 可以将 TPA 设置为 1,但不能将其重置为 0。如果
RESET=1 或(TTEN=1 和 TTTBM=1),该位将被复位。
TPA 不应与 TPE 同时设置。
发送次要帧
1–STB 传输一个帧。
在 FIFO 模式下,这是最早的消息;
在优先级模式下,这是具有最高优先级的消息。优先模式下
(PRIMARY)的 TSONE 很难处理,因为有可能在同时向 STB 写
入新消息,此时会传输消息。一旦总线空闲,且无 PTB 传输请求
10
TSONE
(TPE)。
0–STB 无传输。
TSONE 将保持被设置状态,直到消息成功传输或被 TSA 中止。
CPU 可以将 TSONE 设置为 1,但无法将其重置为 0。可以用
TSA 中止消息发送。
此位被复位的条件,RESET=1,STBY=1,
(LOM=1 和
LBME=0)或(TTEN=1 和 TTTBM=1)。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
711/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
发送所有副帧
1–传输 STB 所有消息。
一旦总线空闲,控制器就会启动传输,并且无任何 PTB(位
TPE)传输请求。
0–STB 消息不传输。
TSALL 被设置后,到所有消息成功传输或被 TSA 中止,才会变为
9
TSALL
“0”。
CPU 可以将 TSALL 设置为 1,但不能将其重置为 0。可使用
TSA 并中止消息。
此位被复位的条件,RESET=1,STBY=1,
(LOM=1 和 LBME=0)
或(TTEN=1 和 TTTBM=1)
。
如果在传输期间 STB 加载了新帧,则新帧也将被传输,直到 STB
为空。
次要传输中止
1–中止已请求但尚未启动的 STB 传输。
对于 TSONE 传输,只有一个帧回在传输中被中止;对于对于
TSALL,传输时,所有帧都被中止。将相应的更新 TSSTAT。所
8
TSA
有中止的消息都将丢失。
0–无中止
CPU 可以将 TSA 设置为 1,但不能将其重置为 0。此位被置“1”
时,会自动清楚 TSONE 和 TALL。此位不应和 TSONE 或 TALL
同时置“1”。
RESET 请求位
1 - 执行本地复位。
0 - 没有本地复位某些寄存器(例如用于节点配置)只能在
RESET=1 时修改。
7
RESET
位 RESET 强制几个组件进入复位状态。
请注意,在 11 个 CAN 位时间后 RESET 切换为 0 后,一个 CAN
节点将参与 CAN 通信。
CAN 标准要求此延迟(总线空闲时间)。如果 RESET 设置为 1
并立即设置为 0,则需要一些时间才能读到 RESET 为 0 并变为
无效。
外部环回模式
6
LBME
0 - 未使能
1 - 启用。
当传输处于活动状态时不应启用。
内部环回模式
5
LBMI
0 - 未使能
1 - 启用。
当传输处于活动状态时不应启用。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
712/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
PTB 传输主单发模式
4
TPSS
0 - 禁用
1 - 启用
传输次级单发模式
3
TSSS
0 - 禁用
1 - 启用
接收正在进行(接收状态位)
2
RACTIVE
1 - 控制器当前正在接收帧。
0 - 没有接收活动。
发送正在进行(传输状态位)
1
TACTIVE
1 - 前正在传输一个帧。
0 - 无传输活动。
总线关闭(总线状态位)
0
BUSOFF
1 - 控制器状态为“总线关闭”。
0 - 控制器状态为“总线开启”
。
CMD_STA_CMD_CTRL 位域
RTIE (0xA4)
RAFIE
TPIE
TSIE
EIE
TSFF
RW
RW
RO
0
RW
1
RW
2
RFIE
3
RW
4
RIE
5
ROIE
6
RW
7
RW
53.3.7
1
1
1
1
1
1
1
0
RTIE [7:0]
位域
名称
7
RIE
6
ROIE
5
RFIE
4
RAFIE
3
TPIE
2
TSIE
描述
接收中断使能
0–禁用,1–启用
RB 溢出中断使能
0–禁用,1–启用
RB 满中断使能
0–禁用,1–启用
RB 几乎满中断使能
0–禁用,1–启用
首级传输中断使能
0–禁用,1–启用
次级传输中断使能
0–禁用,1–启用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
713/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
1
EIE
控制器局域网 CAN 控制器
描述
错误中断使能
0–禁用,1–启用
如果 TTEN=0 或 TTTBM=0:发送二级缓冲区满标志
1 - STB 填充了最大数量的消息。
0 - STB 未填充最大数量的消息。
0
TSFF
如果使用 STB_DISABLE 禁用 STB,则 TSFF=0。
如果 TTEN=1 且 TTTBM=1:发送缓冲区时隙已满标志
1 - TBPTR 选择的缓冲槽为满。
0 - TBPTR 选择的缓冲槽为空。
RTIE 位域
RTIF (0xA5)
RAFIF
TPIF
TSIF
EIF
AIF
W1C
W1C
W1C
0
W1C
1
W1C
2
RFIF
3
W1C
4
RIF
5
ROIF
6
W1C
7
W1C
53.3.8
0
0
0
0
0
0
0
0
RTIF [7:0]
位域
名称
描述
接收中断标志
7
RIF
1 - 数据或远程帧已被接收并且在接收缓冲区中。
0 - 没有收到帧。
RB 溢出中断标志
6
ROIF
1 - 至少一个接收到的消息已在 RB 中被覆盖。
0 - 没有 RB 被覆盖。
在 RB 溢出的情况下,ROIF 和 RFIF 都将被设置。
RB 满中断标志
5
RFIF
1 - 所有 RB 都已满。如果在接收到下一个有效消息之前不会释放
RB,最旧的消息将丢失。
0 - RB FIFO 未满。
RB 几乎满中断标志
4
RAFIF
1 - 填充的 RB 槽数 >= AFWL_i
0 - 填充的 RB 槽数 < AFWL_i
首级传输中断标志
3
TPIF
1 - 请求的 PTB 传输已成功完成。
0 - 尚未完成 PTB 的传输。
在 TTCAN 模式下,TPIF 不会被设置,只有 TSIF 是有效的。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
714/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
次级传输中断标志
1 - 请求的 STB 传输已成功完成。
2
TSIF
0 - 没有成功完成 STB 的传输。
在 TTCAN 模式下,TSIF 将发出所有成功传输的信号,无论其存
储位置如何消息。
错误中断标志
1
EIF
1 - 已超过错误警告限制,或 BUSOFF 位已更改。
0 - 没有变化。
中止中断标志
0
AIF
1 - 设置 TPA 或 TSA 后,相应的消息已中止。
建议不要同时设置 TPA 和 TSA,因为两者都触发 AIF。
0 - 未执行中止。
RTIF 位域
ERRINT (0xA6)
EPIF
ALIE
ALIF
BEIE
BEIF
W1C
RW
W1C
0
RW
1
W1C
2
EPIE
3
RW
4
EPASS
5
EWARN
6
RO
7
RO
53.3.9
0
0
0
0
0
0
0
0
ERRINT [7:0]
位域
名称
描述
达到错误或警告限制
7
EWARN
1 - 错误计数器 RECNT 或 TECNT 之一等于或大于 EWL
0 - 两个计数器中的值都小于 EWL。
被动错误模式激活
6
EPASS
0 - 非激活(节点是主动错误模式)
1 - 激活(节点被动错误模式)
5
EPIE
Error Passive Interrupt Enable
被动错误中断标志。
4
EPIF
如果错误状态从主动错误到被动错误的更改,则 EPIF 将被置起
(如果此终端被使能);反之亦然。
3
ALIE
仲裁丢失中断使能
2
ALIF
仲裁丢失中断标志
1
BEIE
总线错误中断使能
0
BEIF
总线错误中断标志
ERRINT 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
715/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
LIMIT (0xA7)
7
6
0
0
5
4
3
2
0
1
1
0
1
0
1
1
RW
RW
EWL
AFWL
53.3.10
控制器局域网 CAN 控制器
LIMIT [7:0]
位域
名称
描述
接收缓冲区几乎满警告限制
AFWL 定义了内部警告限制 AFWL_i,它是可用 RB 槽的数量。
AFWL_i 与已填充的 RB 槽进行比较,如果相等则触发 RAFIF。
7-4
AFWL = 0 无意义,自动视为 0x1。
(请注意,此规则中的意思是
AFWL
AFWL 而不是 AFWL_i。
)
AFWL_i > RB 总槽数无意义,自动视为 RB 的总槽数。
AFWL_i = RB 的总槽数是一个有效值。
可编程 错误警告限制 = (EWL+1)*8。可能的限制值:8、16、
3-0
……128。
EWL
EWL 的值会直接影响对应的中断标志位 EIF。
LIMIT 位域
S_PRESC (0xA8)
0
0
1
22
21
20
0
0
0
RW
N/A
RSVD
23
0
x
19
18
17
16
0
1
0
0
15
14
13
12
x
0
0
0
11
10
9
8
7
6
5
4
0
0
1
0
0
0
0
0
3
2
1
0
0
0
1
1
S_SEG_1
0
24
RW
0
25
S_SEG_2
0
26
RW
0
27
RSVD
28
N/A
29
S_SJW
30
S_PRESC
31
RW
53.3.11
S_PRESC [31:0]
位域
名称
描述
预分频器(慢速)
31-24
S_PRESC
预分频器对系统时钟进行分频以获得时间时钟 tq_clk。有效范围
PRESC=[0x00, 0xff] 导致分频器值为 1 到 256。
同步跳转宽度(慢速)
22-16
S_SJW
同步跳转宽度是缩短或延长重新同步的位时间的最大时间,其中
TQ 是时间单位量。
14-8
S_SEG_2
位定时段 2(慢速)
采样点之后的时间。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
716/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
7-0
S_SEG_1
控制器局域网 CAN 控制器
描述
位定时段1(慢速)
设置采样点在位时间开始之后的时间。
S_PRESC 位域
F_PRESC (0xAC)
0
0
1
x
x
21
20
19
18
x
0
0
RSVD
N/A
RW
0
17
16
15
14
x
0
x
x
13
12
11
10
1
x
0
0
9
8
7
6
x
1
0
x
x
5
4
3
2
x
x
0
0
1
0
1
1
F_SEG_1
22
RW
23
RSVD
0
24
N/A
0
25
F_SEG_2
0
26
RW
0
27
RSVD
28
N/A
29
F_SJW
30
F_PRESC
31
RW
53.3.12
F_PRESC [31:0]
位域
名称
描述
预分频器(快速)
31-24
F_PRESC
预分频器对系统时钟进行分频以获得时间时钟 tq_clk。有效范围
PRESC=[0x00, 0xff] 导致分频器值为 1 到 256。
同步跳转宽度(速度快)
19-16
F_SJW
同步跳转宽度是缩短或延长重新同步的位时间的最大时间,其中
TQ 是时间单位量。
11-8
F_SEG_2
3-0
F_SEG_1
位定时段 2(慢速)
采样点之后的时间。
位定时段1(慢速)
设置采样点在位时间开始之后的时间。
F_PRESC 位域
EALCAP (0xB0)
6
5
4
3
0
0
0
0
0
2
1
0
0
0
RO
ALC
KOER
7
RO
53.3.13
0
EALCAP [7:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
717/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
错误类型(错误代码)
000 - 没有错误(NO ERR)
001 - 位错误(BIT ERR)
010 - 格式错误(FORM ERR)
011 - 资料错误(STUFF ERR)
7-5
KOER
100 - 应答错误(ACK ERR)
101 - CRC 错误
110 - 其他错误(自身错误标志后的显性位,接收到的活动错误标
志太长,ACK 错误后被动错误标志期间的显性位)
111 - 未使用
KOER 随每个新错误而更新。因此,当帧成功发送或接收时,它
保持不变。
4-0
ALC
仲裁丢失捕获(仲裁丢失的帧中的位的位置)
EALCAP 位域
TDC (0xB1)
6
5
4
0
0
0
3
0
2
1
0
0
0
0
RW
RW
TDCEN
7
SSPOFF
53.3.14
0
TDC [7:0]
位域
名称
描述
发送的延迟补偿使能
7
TDCEN
如果 TDCEN=1,BRS 处于活动状态,则 TDC 将在 CAN FD 帧
的数据阶段被激活。
二级采样点偏移
6-0
SSPOFF
发送的延迟加上 SSPOFF 定义了 TDC 的辅助采样点的时间。
SSPOFF 以 TQ 的计数量给出。
TDC 位域
RECNT (0xB2)
6
5
4
3
2
1
0
RECNT
7
RO
53.3.15
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
718/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
控制器局域网 CAN 控制器
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RECNT [7:0]
位域
名称
描述
接收期间的错误数(Receive Error Count)
。
7-0
RECNT
RECNT 按照 CAN 规范中的定义递增和递减。RECNT 不会溢出。
如果 TXB=1,则错误计数器被冻结。
RECNT 位域
TECNT (0xB3)
7
6
5
4
0
0
0
0
3
2
1
0
0
0
0
0
RO
TECNT
53.3.16
TECNT [7:0]
位域
名称
描述
传输过程中的错误数(Transmit Error Count)
7-0
TECNT
TECNT 按照 CAN 规范中的定义递增和递减。在“总线关闭状
态”的情况下,TECT 可能会溢出。
如果 TXB=1,则错误计数器被冻结。
TECNT 位域
ACFCTRL (0xB4)
x
2
0
0
1
0
0
0
ACFADR
0
3
RW
RSVD
N/A
x
4
SELMASK
x
5
RW
6
RSVD
7
N/A
53.3.17
ACFCTRL [7:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
719/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
选择接受传输的掩码
5
0 - 寄存器 ACF_x 指向接受代码
SELMASK
1 - 寄存器 ACF_x 指向接受掩码。
ACFADR 选择一个特定的验收过滤器。
接受过滤器地址
ACFADR 指向特定的接受过滤器。
可以使用寄存器 ACF_x 访问选定的过滤器。
3-0
位 SELMASK 为选定的验收过滤器在验收代码和掩码之间进行选
ACFADR
择。
ACFADR>ACF_NUMBER-1 的值是没有意义的,并自动被视为值
ACF_NUMBER-1。
ACF_NUMBER = 16。
ACFCTRL 位域
TIMECFG (0xB5)
x
x
3
2
x
x
x
N/A
1
0
TIMEEN
x
4
TIMEPOS
5
RW
6
RW
7
RSVD
53.3.18
0
0
TIMECFG [7:0]
位域
名称
描述
时间戳位置
0–SOF,
1
TIMEPOS
1–EOF,
TIEMPOS 只能在 TIMEEN=0 时更改,但可以和 TIMEEN=1 同时
修改 TIEMPOS。
时间戳启用
0
0–禁用
TIMEEN
1–启用
TIMECFG 位域
ACF_EN (0xB6)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
ACF_EN
53.3.19
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
720/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
15
控制器局域网 CAN 控制器
ACF_EN [15:0]
位域
名称
描述
接收过滤器启用
1 - 启用接受过滤器
15-0
0 - 接受过滤器禁用
ACF_EN
每个验收过滤器(AMASK / ACODE)都可以单独启用或禁用。
禁用的过滤器拒绝消息;只有启用的过滤器才能接受消息。请注
意 AMASK / ACODE 配置匹配。
ACF_EN 位域
AIDE
RW
x
0
0
28
27
26
25
24
23
22
21
20
19
18
17
16
15
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CODE_MASK
AIDEE
RW
29
RSVD
30
N/A
31
ACF (0xB8)
RW
53.3.20
0
ACF [31:0]
位域
名称
描述
接受掩码 IDE 位检查使能
1 - 接受过滤器接受 AIDE 定义的标准或扩展
30
AIDEE
0 - 接受过滤器接受标准或扩展帧
只有过滤器 0 受上电复位影响。所有其他过滤器保持未初始化状
态。
接受掩码 IDE 位的值,如果 AIDEE=1,则:
1 - 接受过滤器只接受扩展帧;
29
AIDE
0 - 接受过滤器只接受标准帧;
只有过滤器 0 受上电复位影响,所有其他过滤器保持未初始化状
态。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
721/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
接收代码
1 - ACC 位值与接收到的消息的 ID 位进行比较
0 - ACC 位值与接收到的消息的 ID 位进行比较
ACODE_x(10:0) 将用于扩展帧。
ACODE_x(28:0) 将用于扩展帧。
只有过滤器 0 受上电复位影响。
28-0
接受掩码(如果 SELMASK ==1 )
CODE_MASK
1 - 接受检查,对象为禁用的接收标识符位
0 - 接受检查,对象为启用的接收标识符位
AMASK_x(10:0) 将用于扩展帧。
AMASK_x(28:0) 将用于扩展帧。
禁用位会使消息被接受。因此默认配置后,过滤器 0 的重置接受
所有消息。只有过滤器 0 受上电复位影响。
ACF 位域
VER (0xBC)
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
2
1
0
0
0
0
RW
VERSION
53.3.21
VER [15:0]
位域
名称
15-0
VERSION
描述
版本号
VER 位域
TBSLOT (0xBE)
0
4
3
0
0
0
TBPTR
TBF
0
5
RW
TBE
6
RW
7
RW
53.3.22
TBSLOT [7:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
722/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
将 TB 插槽设置为“空”
1 - TBPTR 选择的消息槽标记为“空”
0 - 无操作
7
TBE
一旦消息槽被标记为空,且 TSFF=0,TBE 自动重置为 0。
如果来自该消息槽的传输处于活动状态,TBE 就保持被设置状态,
到传输完成或在传输错误或仲裁丢失后。
如果同时设置了 TBF 和 TBE,则 TBE 获胜
将 TB 消息槽设置为“已填充”
1 - TBPTR 选择的消息槽应标记为“已填充”
6
TBF
0 - 无操作
一旦消息槽被标记为已填充,且 TSFF=1,TBF 会自动重置为 0。
如果同时设置了 TBF 和 TBE,则 TBE 获胜。
指向 TB 消息槽的指针。
0x00 - 指向 PTB 的指针
其他 - 指向 STB 中槽的指针
TBPTR 指向的消息槽可使用 TBUF 寄存器进行读取/写入。
仅当 TSFF=0 时才可能进行写访问。
将 TBF 设置为 1 将所选槽标记为已填充,将 TBE 设置为 1 将所
5-0
TBPTR
选插槽标记为空。
TBSEL 和 TSNEXT 在 TTCAN 模式下不使用,没有意义。
TBPTR 只能指向硬件中存在的缓冲槽。
TBPTR 的不可用位,固定为 0。
TBPTR 仅限于 PTB 和 63 个 STB 消息槽。
TTCAN 模式下不能使用更多的槽位。如果 TBPTR 太大并且指向
一个不可用的槽位,则 TBF 和 TBE 会自动重置并且不发生任何
动作。
TBSLOT 位域
TTCFG (0xBF)
0
0
0
0
0
TTEN
TTIF
RW
0
1
RW
TTIE
RW
0
2
T_PRESC
TEIF
RW
3
WTIF
4
WTIE
5
RW
6
RW
7
RW
53.3.23
0
0
TTCFG [7:0]
位域
名称
描述
7
WTIE
监视触发中断使能
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
723/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
监视触发中断标志
6
如果循环计数达到 TT_WTRIG 定义的限制,并且设置了 WTIE,
WTIF
则将设置 WTIF。
5
错误触发中断标志
TEIF
没有其他的寄存器位来启用或禁用 TEIF。
时间触发中断使能
4
如果设置了 TTIE,那么如果循环时间等于触发时间 TT_TRIG,
TTIE
则将设置 TTIF
时间触发中断标志
如果设置了 TTIE 并且周期时间等于触发时间 TT_TRIG,则将设
3
置 TTIF 为高。
TTIF
将 1 写入 TTIF 会将其重置。写入零没有影响。TTIF 将只设置一
次。如果 TT_TRIG 没有更新,那么在下一个基本循环中将不会再
次设置 TTIF。
TTCAN 定时器预分频器
00b - 1
01b - 2
10b - 4
2-1
11b - 8
T_PRESC
TTCAN 时基是由 S_PRES、S_SEG_1 和 S_SEG_2 定义的 CAN
位时间。使用 T_PRESC 定义了 1、2、4 或 8 的附加预分频因子。
T_PRESC 只能在 TTEN=0 时修改,但可以同时修改 T_PRESC
和设置 TTEN。
时间触发使能
0
1 - TTCAN 启用,定时器正在运行
TTEN
0 - 禁用
TTCFG 位域
53.3.24
28
27
26
25
24
23
22
21
20
19
18
17
16
15
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RSVD
x
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
N/A
RW
0
29
REF_MSG
30
REF_IDE
31
REF_MSG (0xC0)
x
0
REF_MSG [31:0]
位域
名称
31
REF_IDE
描述
参考的消息 IDE 位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
724/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
参考的消息标识符。
如果 REF_IDE 是
1 - REF_ID(28:0) 有效(扩展 ID)
0 - REF_ID(10:0) 有效(标准 ID)
REF_ID 在 TTCAN 模式下用于检测参考消息,适用于时间
28-0
从站(接收)以及时间主站(传输)。当检测到参考消息并且没有
REF_MSG
错误,则该帧的 Sync_Mark 将
成为 Ref_Mark。REF_ID(2:0) 未经测试,因此相应的寄存器位被
强制为 0。这些位用于最多 8 个潜在的时间主站。
CAN 控制器仅通过 ID 识别参考消息。未测试有效载荷。
附加说明:时间主站将以与时间主站相同的方式发送参考消息正
常帧。REF_ID 用于检测参考消息是否成功。
REF_MSG 位域
TRIG_CFG (0xC4)
N/A
RW
0
0
8
7
x
0
0
0
x
6
5
4
3
x
0
0
0
2
1
0
0
0
0
TTPTR
9
RW
10
RSVD
11
N/A
0
12
TTYPE
0
13
RW
14
RSVD
15
TEW
53.3.25
TRIG_CFG [15:0]
位域
名称
描述
传输启用窗口
15-12
TEW
对于单次发送触发,一个周期时间最多为可分为 16 个节拍,作为
允许帧开始的位置。TWE+1 定义节拍刻度数。TEW=0 是一个有
效的设置,并将传输启用窗口缩短为 1 个节拍。
触发类型
000b - 立即触发并马上传输
001b - 接收触发器的时间触发
10-8
TTYPE
010b - 独占时间窗口的,单次发送触发
011b - 合并仲裁时间窗口的发送开始触发
100b - 合并仲裁时间窗口的发送停止触发
其他 - 无动作
触发时间由 TT_TRIG 定义。TTPTR 选择传输触发的 TB 消息槽。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
725/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
控制器局域网 CAN 控制器
描述
发送触发 TB 消息槽指针
如果 TTPTR 太大,并指向一个不可用的消息槽,对 TT_TRIG_1
5-0
进行写访问后,不会有任何触发活动,此时会设置 TEIF。
TTPTR
如果 TTPTR 指向一个空槽,当触发时间已到,那么此时会设置
TEIF。
TRIG_CFG 位域
TT_TRIG (0xC6)
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
TT_TRIG
53.3.26
TT_TRIG [15:0]
位域
名称
描述
触发时间
15-0
TT_TRIG(15:0) 定义触发器的周期时间。
TT_TRIG
对于传输触发,相应帧的 SOF 的最早传输点将是 TT_TRIG+1。
TT_TRIG 位域
TT_WTRIG (0xC8)
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
TT_WTRIG
53.3.27
TT_WTRIG [15:0]
位域
名称
描述
监视触发时间
15-0
TT_WTRIG
TT_WTRIG(15:0) 定义监视触发器的周期时间。初始监视触发是
最大循环时间 0xffff。
TT_WTRIG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
726/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
精确时间协议模块 PTPC
精确时间协议模块 PTPC
54
本章节介绍精确时间协议模块 PTPC 的主要功能和特性。
特性总结
54.1
本章节介绍精确时间协议模块 PTPC 的主要特性:
● 支持 2 套时间戳
● 时间戳支持 63 位计数器
● 计数器分为 32 位秒计数器和 31 位纳秒计数器
● 支持输入捕获时间戳
● 支持时间戳匹配时,产生中断
● 支持从时间戳读取接口发送数据到 CAN 模块
功能描述
54.2
本章节描述精确时间协议模块 PTPC 的功能。
时间戳模块
54.2.1
精确时间协议模块 PTPC 包含 2 个时间戳模块,每个时间戳模块包含一个 63 位的计数器。
计数器分为 32 位的秒计数器 TIMEH 和 31 位的纳秒计数器 TIMEL
TIMEL 在每次更新时,不像传统计数器那样单纯加 1,而是加上 CTRL1[SS_INCR] 的值:
T I MEL = T I MEL + S S _INCR
假设 PTPC 的时钟为 100 MHz,每个时钟周期为 10 ns。此时,需要将 CTRL1 [SS_INCR] 配置为 8’d10。即
TIMEL 每次以 10 纳秒为单位累加。
计数器分为 31 位的 TIMEL 和 32 位的 TIMEH,每当 TIMEL 溢出时,TIMEH 累加。TIMEL 的溢出点支持以
下 2 种:
● 计数器溢出,计数器低 31 位 TIMEL,当计数至 32’h7FFFFFFF 时溢出。TIMEL 溢出时,TIMEH 加 1
● 秒计数溢出,计数器低 31 位 TIMEL,当计数至 1000000000,即 32’h3B9ACA00 时溢出。TIMEL 溢出
时,TIMEH 加 1。TIMEL 以纳秒为单位,TIMEH 以秒为单位计数。
用户把 CTRL0 [SUBSEC_DIGITAL_ROLLOVER] 置 0 时,配置计数器为计数器模式。置 1 时,配置计数器为秒
计数溢出。
推荐用户将此位置 1,这样读取时间戳计数器,可以直观地得到 TIMEH 秒又 TIMEL 纳秒的真实时间计时。
在使用 PTPC 前,需要先完成 PTPC 初始化,初始化时间戳计数器 TIMEL,TIMEH 的步骤如下,:
● 把 CTRL0[TIMER_ENABLE] 位置 1
● 在 TS_UPDTH 和 TS_UPDTL 寄存器写入目标值。注意,如果 TIMEL 设置位秒计数溢出,TS_UPDTL
的值不要超过 1000000000,即 32’h3B9ACA00
● 把 CTRL0[INIT_TIMER] 位置 1
PTPC 开始计时之后,用户可以根据需要更新计时器,PTPC 更新时间戳 TIMEL,TIMEH 的步骤如下:
● 在 TS_UPDTH 和 TS_UPDTL 寄存器写入目标值。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
727/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
精确时间协议模块 PTPC
● 配置 TS_UPDTL[ADD_SUB] 位,置 1 时,TIMEL/TIMEH 会在原值上加上 TS_UPDTL 和 TS_UPDTH,
置 1 时,TIMEL/TIMEH 会在原值上减去 TS_UPDTL 和 TS_UPDTH
● 把 CTRL0[UPDATE_TIMER] 位置 1
PTPC 支持通过配置 ADDEND 寄存器微调其时间戳计数器的计时快慢。
TIMEL 作为纳秒计数器,在每个 PTPC 时钟周期累加 CTRL1 [SS_INCR],当 PTPC 时钟为 100 MHz(即周
期为 10 ns)时,应当配置 SS_INCR 为 10,即 TIMEL 每个 PTPC 时钟周期累加 10。当时钟同步软件基于 PTPC
计时器进行时钟同步时,有可能发现本地时间和网络的时钟 Master 之间的误差是由 PTPC 时钟的误差引起的。这
时可以通过配置 ADDEND 寄存器实现等效的微调。
假设 PTPC 时钟为 100 MHz,TIMEL 累加的步长为 10 ns(SS_INCR = 10)
。
假设时钟同步算法发现时钟偏慢,希望将 TIMEL 累加的步长调整为 10.1 ns,这时,可以保持 S S _INCR = 10,
设置 ADDEND = 0xFFFFFFFF × (0.1) = 0x19999999。此时,可以视为 TIMEL 累加的等效步长为 10.1 ns。
假设时钟同步算法发现时钟偏快,希望将 TIMEL 累加的步长调整为 9.9 ns,这时,需要设置 S S _INCR = 9,
设置 ADDEND = 0xFFFFFFFF × (0.9) = 0xE6666666。此时,可以视为 TIMEL 累加的等效步长为 9.9 ns。
54.2.2
时间戳捕获和比较
PTPC 支持输入捕获功能。每个时间戳支持一个捕获输入信号,可以配置 CAP0 或者 CAP1 信号的有效边沿,
在 CAP0 或者 CAP1 上升沿或者下降沿时,将时间戳 TIMEL 和 TIMEH 的值,捕获存入寄存器 CAPT_SNAPL 和
CAPT_SNAPH。捕获发生时,捕获标志位会置 1。如果在中断使能寄存器内把相应的中断使能位置 1,就会生成
时间戳捕获中断请求。
PTPC 支持时间戳匹配功能,用户将目标时间戳值写入 TARH 和 TARL 寄存器,并置位 CTRL0[COMP_EN],
当时间戳计数器 TIMEH 和 TIMEL 大于或等于 TARH 和 TARL 时,发生匹配事件, 匹配事件发生后,COMP_EN
会自动清零。
此时,匹配标志位会置 1,如果在中断使能寄存器内把相应的中断使能位置 1,就会生成时间戳匹配中断请
求。
PTPC 支持生成时间戳匹配输出比较,在时间戳匹配时:输出 CMP0 或 CMP1 到系统的其他模块。
54.2.3
时间戳输出端口
PTPC 支持 4 个时间戳输出端口,系统上的其他模块可以从此端口直接载入 TIMEL 和 TIMEH 的值。用户可
以通过 TIME_SEL 寄存器直接配置端口 x 上时间戳信息的来源。相应的选择位置 0 时,输出模块 0 的时间戳。选
择位置 1 时,输出模块 1 的时间戳。
54.3
PTPC 寄存器列表
PTPC 的寄存器列表如下:
PTPC base address: 0xF00B0000
地址偏移
名称
描述
复位值
0x0000
PTPC[0][CTRL0]
控制寄存器 0
0x00000000
0x0004
PTPC[0][CTRL1]
控制寄存器 1
0x00000000
0x0008
PTPC[0][TIMEH]
时间戳的高位
0x00000000
0x000C
PTPC[0][TIMEL]
时间戳的低位
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
728/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
精确时间协议模块 PTPC
名称
描述
复位值
0x0010
PTPC[0][TS_UPDTH]
更新高位时间戳
0x00000000
0x0014
PTPC[0][TS_UPDTL]
更新低位时间戳
0x00000000
0x0018
PTPC[0][ADDEND]
加数计数器更新值
0x00000000
0x001C
PTPC[0][TARH]
纳秒比较器目标值高位
0x00000000
0x0020
PTPC[0][TARL]
纳秒比较器目标值低位
0x00000000
0x002C
PTPC[0][PPS_CTRL]
秒脉冲周期控制
0x00000000
0x0030
PTPC[0][CAPT_SNAPH]
捕获值高位
0x00000000
0x0034
PTPC[0][CAPT_SNAPL]
捕获值低位
0x00000000
0x1000
PTPC[1][CTRL0]
控制寄存器 0
0x00000000
0x1004
PTPC[1][CTRL1]
控制寄存器 1
0x00000000
0x1008
PTPC[1][TIMEH]
时间戳的高位
0x00000000
0x100C
PTPC[1][TIMEL]
时间戳的低位
0x00000000
0x1010
PTPC[1][TS_UPDTH]
更新高位时间戳
0x00000000
0x1014
PTPC[1][TS_UPDTL]
更新低位时间戳
0x00000000
0x1018
PTPC[1][ADDEND]
加数计数器更新值
0x00000000
0x101C
PTPC[1][TARH]
纳秒比较器目标值高位
0x00000000
0x1020
PTPC[1][TARL]
纳秒比较器目标值低位
0x00000000
0x102C
PTPC[1][PPS_CTRL]
秒脉冲周期控制
0x00000000
0x1030
PTPC[1][CAPT_SNAPH]
捕获值高位
0x00000000
0x1034
PTPC[1][CAPT_SNAPL]
捕获值低位
0x00000000
0x2000
TIME_SEL
0x2004
INT_STS
中断状态
0x00000000
0x2008
INT_EN
中断使能
0x00000000
0x3000
PTPC_CAN_TS_SEL
时间戳选择
0x00000000
0x00000000
表 215: PTPC 寄存器列表
PTPC 寄存器描述
54.4
PTPC 的寄存器详细说明如下:
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
TIMER_ENABLE
22
INIT_TIMER
23
FINE_COARSE_SEL
24
UPDATE_TIMER
25
RSVD
26
COMP_EN
27
CAPT_SNAP_NEG_EN
28
CAPT_SNAP_KEEP
29
CAPT_SNAP_POS_EN
30
SUBSEC_DIGITAL_ROLLOVER
31
PTPC[CTRL0] (0x0 + 0x1000 * n)
RSVD
54.4.1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
729/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
x
x
x
x
x
x
x
x
x
x
x
9
8
7
6
5
4
3
2
1
0
RW
21
RW
22
WO
23
WO
24
RW
25
N/A
26
RW
27
RW
28
RW
29
RW
30
N/A
31
精确时间协议模块 PTPC
0
0
0
0
0
0
0
0
0
0
PTPC[CTRL0] [31:0]
位域
名称
描述
纳秒计数器模式
9
SUBSEC_DIGITAL
_ROLLOVER
1-数字模式,溢出时间 1000000000/0x3B9ACA00,分辨率为 1
纳秒;
0-二进制,溢出时间 0x7FFFFFFF,分辨率为大约 0.466 纳秒
保持捕获值
1:PTPC 会在捕获事件后保持捕获值,直到软件读取 capt_snapl
8
CAPT_SNAP_KEE
P
寄存器。此模式下,软件需要先读 capt_snaph 寄存器,避免错误
结果。
0:PTPC 会在每次捕获事件后更新捕获值,软件需要在合适的时
间点读取捕获值。
7
6
4
CAPT_SNAP_PO
S_EN
CAPT_SNAP_NE
G_EN
COMP_EN
上升沿捕获使能
1 :使能上升沿捕获
0:禁止上升沿捕获
下降沿捕获使能
1 :使能下降沿捕获
0:禁止下降沿捕获
比较器使能。
置 1 使能比较器,PTPC 会在比较条件满足后清零此位
计时器更新
3
UPDATE_TIMER
置 1 会在当前计时器上加或减 ts_updateh/ts_updatel 的时间。硬
件在完成更新后自动清零该位
计时器初始化
2
INIT_TIMER
置 1 会在将计时器初始化为 ts_updateh/ts_updatel 的时间。硬件
在完成更新后自动清零该位
1
0
FINE_COARSE_S
EL
TIMER_ENABLE
精细初略更新选择
0:粗略更新,纳秒计数器每个时钟增加 ss_incr
1:精细更新,每次加数计数器溢出时,纳秒计数器增加 ss_incr
计数器使能
置 1 计数器工作
PTPC[CTRL0] 位域
54.4.2
PTPC[CTRL1] (0x4 + 0x1000 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
730/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
SS_INCR
30
RW
N/A
RSVD
31
精确时间协议模块 PTPC
x
PTPC[CTRL1] [31:0]
位域
名称
描述
纳秒计数器更新值。
7-0
例如 50MHz 时钟,每周期为 20 纳秒,
SS_INCR
数字模式下,设为 0x14(每个时钟周期增加 20 纳秒)
;
二进制模式下,设为 0x2B(20/0.466);
PTPC[CTRL1] 位域
54.4.3
PTPC[TIMEH] (0x8 + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
TIMESTAMP_HIGH
31
0
PTPC[TIMEH] [31:0]
位域
名称
描述
TIMESTAMP_HIG
31-0
当前秒计时器值
H
PTPC[TIMEH] 位域
54.4.4
PTPC[TIMEL] (0xC + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
TIMESTAMP_LOW
31
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
731/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
精确时间协议模块 PTPC
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
PTPC[TIMEL] [31:0]
位域
名称
描述
当前纳秒计时器值。
TIMESTAMP_LO
31-0
数值模式下精度为 1 纳秒;
W
二进制模式下精度为 0.466 纳秒
PTPC[TIMEL] 位域
54.4.5
PTPC[TS_UPDTH] (0x10 + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SEC_UPDATE
31
0
PTPC[TS_UPDTH] [31:0]
位域
名称
描述
秒计时器更新值。
31-0
初始化时,用于将该值更新到秒计时器中;
SEC_UPDATE
更新时,从当前秒计时器加或减该值(纳秒计时器可能产生进位
或借位)
PTPC[TS_UPDTH] 位域
54.4.6
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
RW
0
15
NS_UPDATE
30
ADD_SUB
31
PTPC[TS_UPDTL] (0x14 + 0x1000 * n)
0
PTPC[TS_UPDTL] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
732/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
精确时间协议模块 PTPC
描述
计时器更新模式。
31
1 表示减;0 表示加;
ADD_SUB
仅用于计时器更新。
纳秒计时器更新值。
30-0
初始化时,用于将该值更新到纳秒计时器中;
NS_UPDATE
更新时,从当前纳秒计时器加或减该值,可能会产生对秒计时器
的进位或借位。
PTPC[TS_UPDTL] 位域
54.4.7
PTPC[ADDEND] (0x18 + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ADDEND
31
0
PTPC[ADDEND] [31:0]
位域
名称
描述
加数计数器更新值。
31-0
仅用于精细更新模式。
ADDEND
每个时钟周期 32 位的加数计数器会累加该值,当加数计数器溢出
后,纳秒计时器会增加 ss_incr
PTPC[ADDEND] 位域
54.4.8
PTPC[TARH] (0x1C + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TARGET_TIME_HIGH
31
0
PTPC[TARH] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
733/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
描述
TARGET_TIME_HI
31-0
精确时间协议模块 PTPC
秒比较器目标值
GH
PTPC[TARH] 位域
54.4.9
PTPC[TARL] (0x20 + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
RW
TARGET_TIME_LOW
31
0
PTPC[TARL] [31:0]
位域
名称
描述
TARGET_TIME_L
31-0
纳秒比较器目标值
OW
PTPC[TARL] 位域
PTPC[PPS_CTRL] (0x2C + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
RW
N/A
RSVD
31
PPS_CTRL
54.4.10
x
PTPC[PPS_CTRL] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
734/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
精确时间协议模块 PTPC
描述
秒脉冲周期控制
为 0 时,PPS 输出为每秒一个脉冲(宽度为一个时钟周期)。
对于其他值,PPS 输出成为以下频率的生成时钟:
0001:二进制模式为 2 Hz,数字模式为 1 Hz。
0010:二进制模式为 4 Hz,数字模式为 2 Hz。
0011:二进制模式为 8 Hz,数字模式为 4 Hz。
0100: 二进制模式为 16 Hz,数字模式为 8 Hz。
..
1111:二进制模式为 32.768 KHz,数字模式为 16.384KHz。
在二进制翻转模式下,PPS 输出是一个占空比 50% 的时钟。
3-0
在数字翻转模式下,PPS 输出频率为平均值
PPS_CTRL
数字实际时钟的频率不同每秒同步一次。例如:
当 PPSCTRL=0001 时,PPS(1 Hz)的低周期为 537 ms 高周期
463ms;
当 PPSCTRL=0010 时,PPS(2 Hz)为以下序列:
-一个 50% 占空比的 537 毫秒周期的时钟
-第二个时钟周期为 463 毫秒(低 268 毫秒,高 195 毫秒)
当 PPSCTRL=0011 时,PPS(4 Hz)为以下序列:
-三个 50% 占空比的 268 毫秒周期的时钟
-第四个时钟周期为 195 毫秒(低 134 毫秒,高 61 毫秒)
这种行为是由于数字模式中,溢出位的非线性导致的(不是计时
器全 1 时溢出)
PTPC[PPS_CTRL] 位域
54.4.11
PTPC[CAPT_SNAPH] (0x30 + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
CAPT_SNAP_HIGH
31
0
PTPC[CAPT_SNAPH] [31:0]
位域
31-0
名称
CAPT_SNAP_HIG
H
描述
在输入的捕获信号上升沿或者下降沿,将当前秒计数器值存放与
该寄存器中。
捕获信号来自于电机系统的互联管理器
PTPC[CAPT_SNAPH] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
735/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
54.4.12
精确时间协议模块 PTPC
PTPC[CAPT_SNAPL] (0x34 + 0x1000 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CAPT_SNAP_LOW
31
0
PTPC[CAPT_SNAPL] [31:0]
位域
名称
描述
在输入的捕获信号上升沿或者下降沿,将当前纳秒计数器值存放
CAPT_SNAP_LO
31-0
与该寄存器中。
W
PTPC[CAPT_SNAPL] 位域
TIME_SEL (0x2000)
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
3
2
1
0
CAN0_TIME_SEL
24
RW
25
CAN1_TIME_SEL
26
CAN2_TIME_SEL
27
RW
28
RW
29
CAN3_TIME_SEL
30
RSVD
31
RW
54.4.13
0
0
0
0
TIME_SEL [31:0]
位域
名称
3
CAN3_TIME_SEL
2
CAN2_TIME_SEL
1
CAN1_TIME_SEL
0
CAN0_TIME_SEL
描述
设 1 选择 PTPC1 作为 CAN 下的系统时钟;
设 0 选择 PTPTC0 作为 CANx 的系统时钟。
TIME_SEL 位域
54.4.14
INT_STS (0x2004)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
736/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
x
16
0
0
0
N/A
x
15
14
13
12
11
10
x
x
x
x
x
x
9
8
7
6
5
4
3
x
x
x
x
x
x
x
2
1
0
PPS_INT_STS0
x
17
W1C
x
18
COMP_INT_STS0
19
CAPTURE_INT_STS0
x
20
W1C
x
21
W1C
x
22
RSVD
x
23
N/A
x
24
PPS_INT_STS1
x
25
W1C
26
CAPTURE_INT_STS1
27
W1C
28
COMP_INT_STS1
29
W1C
30
RSVD
31
精确时间协议模块 PTPC
0
0
0
INT_STS [31:0]
位域
名称
描述
18
COMP_INT_STS1
PTPC1 比较器中断状态位
CAPTURE_INT_S
17
PTPC1 捕获中断状态位
TS1
16
PPS_INT_STS1
2
COMP_INT_STS0
PTPC1 秒脉冲(pps)信号中断状态位,会在 pps 信号的上升沿
和下降沿都产生中断
PTPC0 比较器中断状态位
CAPTURE_INT_S
1
PTPC0 捕获中断状态位
TS0
0
PTPC0 秒脉冲(pps)信号中断状态位,会在 pps 信号的上升沿
PPS_INT_STS0
和下降沿都产生中断
INT_STS 位域
INT_EN (0x2008)
x
x
x
x
x
17
16
0
0
0
N/A
x
15
14
13
12
11
10
x
x
x
x
x
x
9
8
7
6
5
4
3
x
x
x
x
x
x
x
2
1
0
PPS_INT_STS0
x
18
RW
19
COMP_INT_STS0
x
20
CAPTURE_INT_STS0
x
21
RW
x
22
RW
x
23
RSVD
x
24
N/A
x
25
PPS_INT_STS1
26
RW
27
CAPTURE_INT_STS1
28
RW
29
COMP_INT_STS1
30
RSVD
31
RW
54.4.15
0
0
0
INT_EN [31:0]
位域
名称
18
COMP_INT_STS1
17
16
CAPTURE_INT_S
TS1
PPS_INT_STS1
描述
PTPC1 比较器中断使能位
PTPC1 捕获中断使能位
PTPC1 秒脉冲(pps)信号中断使能位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
737/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
2
COMP_INT_STS0
描述
PTPC0 比较器中断使能位
CAPTURE_INT_S
1
PTPC0 捕获中断使能位
TS0
0
精确时间协议模块 PTPC
PTPC0 秒脉冲(pps)信号中断使能位
PPS_INT_STS0
INT_EN 位域
PTPC_CAN_TS_SEL (0x3000)
25
24
23
0
0
0
0
0
21
20
19
18
17
0
0
0
0
0
RW
RW
TSU_TBIN2_SEL
22
0
16
15
14
13
12
11
0
0
0
0
0
0
10
9
8
7
6
5
4
0
0
0
x
x
x
x
3
2
1
0
x
x
x
x
RSVD
0
26
N/A
0
27
TSU_TBIN0_SEL
0
28
RW
29
TSU_TBIN1_SEL
30
TSU_TBIN3_SEL
31
RW
54.4.16
0
PTPC_CAN_TS_SEL [31:0]
位域
名称
描述
CANx 输入时间戳 3 选择,每个 CAN 模块有同样的 4 个输入时间
戳,CAN 可以配置内部寄存器选择其中一个。
31-26
TSU_TBIN3_SEL
本寄存器配置输入时间戳 3 的来源。
0x20 选择 PTPC0;0x21 选择 PTPC1;
0x00 选择 CAN0 输出时间戳;0x01 选择 CAN1 输出时间戳;
0xN 选择 CANn 输出时间戳,最大支持 N=30
25-20
TSU_TBIN2_SEL
CANx 输入时间戳 2 选择
19-14
TSU_TBIN1_SEL
CANx 输入时间戳 1 选择
13-8
TSU_TBIN0_SEL
CANx 输入时间戳 0 选择
PTPC_CAN_TS_SEL 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
738/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
以太网控制器 ENET
以太网控制器 ENET
55
以太网是一种计算机局域网技术。IEEE 组织的 IEEE802.3 标准制定了以太网的技术标准,它规定了包括物
理层的连线,电气信号和介质访问层协议的相关内容。
以太网控制器用于连接物理层,在以太网网络中发送和接收数据,CPU 可以通过 APB 总线控制 ENET,ENET
本身自带 DMA,可以通过 AXI 总线访问系统存储器,接收和发送数据。
支持的物理层 (PHY) 接口为 RMII.
55.1
功能简介
本章节介绍了 ENET 的主要功能:
● 支持 RMII(10M/100M).
● 支持精确时钟控制 (IEEE 1588-2008 协议)
● 支持 Energy Efficient Ethernet(EEE),IEEE 802.3az-2010
● 支持 PPS 输出,可用于系统同步
● 内置 DMA,可通过 AXI 完成 ENET 和系统存储间的数据交换
● 支持 MDIO,可用于配置外部 PHY
55.2
初始化流程
● 根据开发板 PHY 类型,配置通信系统控制器 CONCTL 寄存器 CTRL2(offset 0x08,bit15-13),设置 PHY
模式 (RMII);
● 设置时钟,对于 RMII,可以由 soc 提供时钟,需通过 SYSCTL 设置 CLK_TOP_REF 为 50MHz,打开
对应 pinmux 的 loopback 模式 (为了平衡接收时序),设置寄存器 CTRL2.ENET0_REFCLK_OE 为 1(为
了给外部 PHY 提供时钟);
也可设置从外部输入, 仅需配置对应 pinmux 为 ENET 模式即可,由外部时钟同时提供 ENET 和 PHY,
需为 50MHz。
● 根据开发板配置 pinmux,RMII 使用 REFCLK(详见也叫配置及功能章节,IO 功能分配)。
● 初始化 DMA:设置软件 reset,DMA_BUS_MODE.SWR(offset 0x1000,bit0)=1, 等待硬件 reset 完成后
自动清零;
设置 DMA_BUS_MODE.PBL(bit13-8)=16;
设置 DMA_AXI_MODE(offset 0x1028)=0xF, 使能支持的 burst;
等待寄存器 DMA_BUS_STATUS(offset 0x102C) 为 0,等待 AXI 空闲;
● 根据 PHY 文档,通过 MDIO 配置 PHY,以下为通过 MDIO 读写 PHY 寄存器流程:根据系统 AHB 总线
时钟频率,配置 GMII_ADDR.CR 寄存器 (offset 0x10,bit5-2);
根据开发板设计图,将 PHY 地址写入 GMII_ADDR.PA(bit15-11);
将所需配置的 PHY 寄存器地址写入 GMII_ADDR.GR(bit10-6);
写操作将所需写的数据写入 GMII_DATA 寄存器 (offset 0x14),
并置位 GMII_ADDR.GW(bit1);
读操作略过此步;
置位 GMII_ADDR.GB(bit0) 并等待其被硬件清零,读操作可以从 GMII_DATA 得到所读数
据;
● 初始化发送接收描述符,并将描述符地址写入 DMA_TX_DESC_LIST_ADDR (offset0x1004)
和 DMA_RX_DESC_LIST_ADDR (offset 0x1008)
● 配置 DMA_OP_MODE 寄存器启动 DMA;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
739/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
以太网控制器 ENET
● 置位 MACCFG 寄存器 (offset 0x00) 的 TE(bit1)/RE(bit0), 启动传输;
55.3
描述符详解
ENET 支持 16 字节和 32 字节两种描述符,由 DMA_BUS_MODE.ATDS(offset 0x1000,bit7) 决定。
55.3.1
发送描述符
图 97: 发送描述符
位
描述
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
740/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
OWN:OWN bit
When set, this bit indicates that the descriptor is owned by the DMA. When this bit is
reset, it indicates that the descriptor is owned by the Host. The DMA clears this bit
31
either when it completes the frame transmission or when the buffers allocated in the
descriptor are read completely. The ownership bit of the frame’s first descriptor must
be set after all subsequent descriptors belonging to the same frame have been set.
This avoids a possible race condition between fetching a descriptor and the driver
setting an ownership bit.
IC: Interrupt on Completion
30
When set, this bit sets the Transmit Interrupt (DMA_STATUS.TI) after the present frame
has been transmitted. This bit is valid only when the last segment bit (TDES0[29]) is set.
LS: Last Segment
29
When set, this bit indicates that the buffer contains the last segment of the frame. When
this bit is set, the TBS1 or TBS2 field in TDES1 should have a non-zero value.
28
FS: First Segment;
When set, this bit indicates that the buffer contains the first segment of a frame.
DC: Disable CRC;
27
When this bit is set, the MAC does not append a cyclic redundancy check (CRC) to the
end of the transmitted
DP: Disable Pad
When set, the MAC does not automatically add padding to a frame shorter than 64
26
bytes. When this bit is reset, the DMA automatically adds padding and CRC to a frame
shorter than 64 bytes, and the CRC field is added despite the state of the DC
(TDES0[27]) bit. This is valid only when the first segment (TDES0[28]) is set.
TTSE: Transmit Timestamp Enable
25
When set, this bit enables IEEE1588 hardware timestamping for the transmit frame
referenced by the descriptor. This field is valid only when the First Segment control bit
(TDES0[28]) is set.
CRCR: CRC Replacement Control
When set, the MAC replaces the last four bytes of the transmitted packet with
24
recalculated CRC bytes. The host should ensure that the CRC bytes are present in the
frame being transferred from the Transmit Buffer. This bit is valid when the First
Segment control bit (TDES0[28]) is set. In addition, CRC replacement is done only
when Bit 27 (DC) is set to 1.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
741/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
CIC: Checksum Insertion Control
These bits control the checksum calculation and insertion. The following list describes
the bit encoding:
• 2’b00: Checksum Insertion Disabled.
23:22
• 2’b01: Only IP header checksum calculation and insertion are enabled.
• 2’b10: IP header checksum and payload checksum calculation and insertion are
enabled, but pseudoheader checksum is not calculated in hardware.
• 2’b11: IP Header checksum and payload checksum calculation and insertion are
enabled, and pseudoheader checksum is calculated in hardware.
This field is valid when the First Segment control bit (TDES0[28]) is set
TER: Transmit End of Ring
21
When set, this bit indicates that the descriptor list reached its final descriptor. The DMA
returns to the base address of the list, creating a descriptor ring.
TCH: Second Address Chained
When set, this bit indicates that the second address in the descriptor is the Next
20
Descriptor address rather than the second buffer address. When TDES0[20] is set,
TBS2 (TDES1[28:16]) is a “don’t care”value. TDES0[21] takes precedence over
TDES0[20].
VLIC: VLAN Insertion Control
When set, these bits request the MAC to perform VLAN tagging or untagging before
transmitting the frames. If the frame is modified for VLAN tags, the MAC automatically
recalculates and replaces the CRC bytes. The following list describes the values of
these bits:
• 2’b00: Do not add a VLAN tag.
19:18
• 2’b01: Remove the VLAN tag from the frames before transmission. This option
should be used only with the VLAN frames.
• 2’b10: Insert a VLAN tag with the tag value programmed in Register 353 (VLAN Tag
Inclusion or Replacement Register).
• 2’b11: Replace the VLAN tag in frames with the Tag value programmed in Register
VLAN_TAG_INC_RPL (offset 0x584) (VLAN Tag Inclusion or Replacement Register).
This option should be used only with the VLAN frames.
These bits are valid when the First Segment control bit (TDES0[28]) is set.
TTSS: Transmit Timestamp Status
This field is used as a status bit to indicate that a timestamp was captured for the
17
described transmit frame. When this bit is set, TDES2 and TDES3 have a timestamp
value captured for the transmit frame. This field is only valid when the descriptor’s
Last Segment control bit (TDES0[29]) is set.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
742/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
IHE: IP Header Error
When set, this bit indicates that the MAC transmitter detected an error in the IP
datagram header. The transmitter checks the header length in the IPv4 packet against
the number of header bytes received from the application and indicates an error status
if there is a mismatch. For IPv6 frames, a header error is reported if the main header
16
length is not 40 bytes. Furthermore, the Ethernet Length/Type field value for an IPv4 or
IPv6 frame must match the IP header version received with the packet. For IPv4
frames, an error status is also indicated if the Header Length field has a value less than
0x5. This bit is valid only when the Tx Checksum Offload is enabled. Otherwise, it is
reserved. If COE detects an IP header error, it still inserts an IPv4 header checksum if
the Ethernet Type field indicates an IPv4 payload.
ES: Error Summary
Indicates the logical OR of the following bits:
• TDES0[16]: IP Header Error
• TDES0[14]: Jabber Timeout
• TDES0[13]: Frame Flush
15
• TDES0[12]: IP Payload Error
• TDES0[11]: Loss of Carrier
• TDES0[10]: No Carrier
• TDES0[9]: Late Collision
• TDES0[8]: Excessive Collision
• TDES0[2]: Excessive Deferral
• TDES0[1]: Underflow Error
JT: Jabber Timeout
14
When set, this bit indicates the MAC transmitter has experienced a jabber timeout. This
bit is only set when Bit22 (Jabber Disable) of Register MACCFG is not set.
FF: Frame Flushed
13
When set, this bit indicates that the DMA or MTL flushed the frame because of a
software Flush command given by the CPU.
IPE: IP Payload Error
When set, this bit indicates that MAC transmitter detected an error in the TCP, UDP, or
12
ICMP IP datagram payload. The transmitter checks the payload length received in the
IPv4 or IPv6 header against the actual number of TCP, UDP, or ICMP packet bytes
received from the application and issues an error status in case of a mismatch.
LOC: Loss of Carrier
When set, this bit indicates that a loss of carrier occurred during frame transmission
11
(that is, the phy_crs_i signal was inactive for one or more transmit clock periods during
frame transmission). This is valid only for the frames transmitted without collision when
the MAC operates in the half-duplex mode.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
743/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
NC: No Carrier
When set, this bit indicates that the Carrier Sense signal from the PHY was not
10
asserted during transmission. Note: When any optional PHY interface is enabled, the
carrier errors (NC or LOC) cannot be generated. This is because the CRS signal is
internally-generated based on the internal MII TX_EN and RX_DV derived from the
optional PHY interface signals.
LC: Late Collision
When set, this bit indicates that frame transmission is aborted because of a collision
9
occurring after the collision window (64 byte-times, including preamble, in MII mode
and 512 byte-times, including preamble and carrier extension, in GMII mode). This bit
is not valid if the Underflow Error bit is set.
EC: Excessive Collision
When set, this bit indicates that the transmission was aborted after 16 successive
8
collisions while attempting to transmit the current frame. If Bit 9 (Disable Retry) bit in
the MACCFG register is set, this bit is set after the first collision, and the transmission
of the frame is aborted.
7
VF: VLAN Frame
When set, this bit indicates that the transmitted frame is a VLAN-type frame.
CC: Collision Count (Status field)
6:3
These status bits indicate the number of collisions that occurred before the frame was
transmitted. This count is not valid when the Excessive Collisions bit (TDES0[8]) is set.
The core updates this status field only in the half-duplex mode.
ED: Excessive Deferral
2
When set, this bit indicates that the transmission has ended because of excessive
deferral of over 24,288 bit times (155,680 bits times in 1,000-Mbps mode or if Jumbo
Frame is enabled) if Bit 4 (Deferral Check) bit in MACCFG Register is set high.
UF: Underflow Error
When set, this bit indicates that the MAC aborted the frame because the data arrived
1
late from the Host memory. Underflow Error indicates that the DMA encountered an
empty transmit buffer while transmitting the frame. The transmission process enters the
Suspended state and sets both Transmit Underflow (DMA_STATUS bit5) and Transmit
Interrupt (DMA_STATUS bit0).
DB: Deferred Bit
0
When set, this bit indicates that the MAC defers before transmission because of the
presence of carrier. This bit is valid only in the half-duplex mode.
表 216: TDES0
位
描述
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
744/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
SAIC: SA Insertion Control
These bits request the MAC to add or replace the Source Address field in the Ethernet
frame with the value given in the MAC Address 0 register. If the Source Address field is
modified in a frame, the MAC automatically recalculates and replaces the CRC bytes.
The Bit 31 specifies the MAC Address Register (1 or 0) value that is used for Source
Address insertion or replacement. The following list describes the values of Bits[30:29]:
31:29
• 2’b00: Do not include the source address.
• 2’b01: Include or insert the source address. For reliable transmission, the application
must provide frames without source addresses.
• 2’b10: Replace the source address. For reliable transmission, the application must
provide frames with source addresses.
• 2’b11: Reserved
These bits are valid when the First Segment control bit (TDES0[28]) is set.
TBS2: Transmit Buffer 2 Size
28:16
This field indicates the second data buffer size in bytes. This field is not valid if
TDES0[20] is set.
15:13
reserved
TBS1: Transmit Buffer 1 Size
12:0
These bits indicate the first data buffer byte size, in bytes. If this field is 0, the DMA
ignores this buffer and uses Buffer 2 or the next descriptor, depending on the value of
TCH (TDES0[20]).
表 217: TDES1
TDES
描述
Buffer 1 Address Pointer
TDES2
These bits indicate the physical address of Buffer 1. There is no limitation on the buffer
address alignment.
Buffer 2 Address Pointer (Next Descriptor Address)
Indicates the physical address of Buffer 2 when a descriptor ring structure is used. If the
TDES3
Second Address Chained (TDES1[24]) bit is set, this address contains the pointer to the
physical memory where the Next Descriptor is present. The buffer address pointer must
be aligned to the bus width only when TDES1[24] is set. (LSBs are ignored internally.)
TTSL: Transmit Frame Timestamp Low
TDES6
This field is updated by DMA with the least significant 32 bits of the timestamp captured
for the corresponding transmit frame. This field has the timestamp only if the Last
Segment bit (LS) in the descriptor is set and Timestamp status (TTSS) bit is set.
TTSH: Transmit Frame Timestamp High
TDES7
This field is updated by DMA with the most significant 32 bits of the timestamp captured
for the corresponding receive frame. This field has the timestamp only if the Last
Segment bit (LS) in the descriptor is set and Timestamp status (TTSS) bit is set.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
745/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
TDES
以太网控制器 ENET
描述
表 218: TDES2 7
55.3.2
接收描述符
图 98: 接收描述符
位
描述
OWN: Own Bit
When set, this bit indicates that the descriptor is owned by the DMA of the DWC_gmac.
31
When this bit is reset, this bit indicates that the descriptor is owned by the Host. The
DMA clears this bit either when it completes the frame reception or when the buffers
that are associated with this descriptor are full.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
746/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
30
以太网控制器 ENET
描述
AFM: Destination Address Filter Fail
When set, this bit indicates a frame that failed in the DA Filter in the MAC.
FL: Frame Length
These bits indicate the byte length of the received frame that was transferred to host
memory. This field is valid when Last Descriptor (RDES0[8]) is set and either the
Descriptor Error (RDES0[14]) or Overflow Error bits are reset. The frame length also
29:16
includes the two bytes appended to the Ethernet frame when IP checksum calculation
(Type 1) is enabled and the received frame is not a MAC control frame. This field is
valid when Last Descriptor (RDES0[8]) is set. When the Last Descriptor and Error
Summary bits are not set, this field indicates the accumulated number of bytes that
have been transferred for the current frame. The inclusion of CRC length in the frame
length depends on the settings of Bit 7 and Bit 25 in MACCFG Register.
ES: Error Summary
Indicates the logical OR of the following bits:
• RDES0[1]: CRC Error
15
• RDES0[3]: Receive Error • RDES0[4]: Watchdog Timeout
• RDES0[6]: Late Collision • RDES0[7]: Giant Frame
• RDES4[4:3]: IP Header or Payload Error • RDES0[11]: Overflow Error
• RDES0[14]: Descriptor Error
This field is valid only when the Last Descriptor (RDES0[8]) is set.
DE: Descriptor Error
14
When set, this bit indicates a frame truncation caused by a frame that does not fit within
the current descriptor buffers, and that the DMA does not own the Next Descriptor. The
frame is truncated. This field is valid only when the Last Descriptor (RDES0[8]) is set.
13
SAF: Source Address Filter Fail
When set, this bit indicates that the SA field of frame failed the SA Filter in the MAC.
LE: Length Error
12
When set, this bit indicates that the actual length of the frame received and that the
Length/ Type field does not match. This bit is valid only when the Frame Type
(RDES0[5]) bit is reset.
OE: Overflow Error
When set, this bit indicates that the received frame was damaged because of buffer
11
overflow in MTL.
Note: This bit is set only when the DMA transfers a partial frame to the application. This
happens only when the Rx FIFO is operating in the threshold mode. In the
store-and-forward mode, all partial frames are dropped completely in Rx FIFO.
VLAN: VLAN Tag
10
When set, this bit indicates that the frame to which this descriptor is pointing is a VLAN
frame tagged by the MAC. The VLAN tagging depends on checking the VLAN fields of
received frame based on the VLANT AGRegistersetting.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
747/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
FS: First Descriptor
When set, this bit indicates that this descriptor contains the first buffer of the frame. If
9
the size of the first buffer is 0, the second buffer contains the beginning of the frame. If
the size of the second buffer is also 0, the next Descriptor contains the beginning of the
frame.
LS: Last Descriptor
8
When set, this bit indicates that the buffers pointed to by this descriptor are the last
buffers of the frame
Timestamp Available, IP Checksum Error (Type1), or Giant Frame
When Advanced Timestamp feature is present, when set, this bit indicates that a
snapshot of the Timestamp is written in descriptor words 6 (RDES6) and 7 (RDES7).
This is valid only when the Last Descriptor bit (RDES0[8]) is set. When IP Checksum
Engine (Type 1) is selected, this bit, when set, indicates one of the following:
7
• The 16-bit IPv4 header checksum calculated by the core did not match the received
checksum bytes.
• The header checksum checking is bypassed for non-IPv4 frames.
Otherwise, this bit, when set, indicates the Giant Frame Status. Giant frames are larger
than 1,518-byte (or 1,522-byte for VLAN or 2,000-byte when Bit 27 of MAC
Configuration register is set) normal frames and larger than 9,018-byte (9,022-byte for
VLAN) frame when Jumbo Frame processing is enabled.
LC: Late Collision
6
When set, this bit indicates that a late collision has occurred while receiving the frame
in the half-duplex mode.
FT: Frame Type
When set, this bit indicates that the Receive Frame is an Ethernet-type frame (the LT
5
field is greater than or equal to 1,536). When this bit is reset, it indicates that the
received frame is an IEEE 802.3 frame. This bit is not valid for Runt frames less than
14 bytes.
RWT: Receive Watchdog Timeout
4
When set, this bit indicates that the Receive Watchdog Timer has expired while
receiving the current frame and the current frame is truncated after the Watchdog
Timeout.
RE: Receive Error
When set, this bit indicates that the gmii_rxer_i signal is asserted while gmii_rxdv_i is
3
asserted during frame reception. This error also includes carrier extension error in the
GMII and half-duplex mode. Error can be of less or no extension, or error (rxd ≠ 0f)
during extension.
DE: Dribble Bit Error
2
When set, this bit indicates that the received frame has a non-integer multiple of bytes
(odd nibbles). This bit is valid only in the MII Mode.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
748/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
CE: CRC Error
1
When set, this bit indicates that a Cyclic Redundancy Check (CRC) Error occurred on
the received frame. This field is valid only when the Last Descriptor (RDES0[8]) is set.
Extended Status Available/Rx MAC Address
When either Advanced Timestamp or IP Checksum Offload (Type 2) is present, this bit,
when set, indicates that the extended status is available in descriptor word 4 (RDES4).
This is valid only when the Last Descriptor bit (RDES0[8]) is set. This bit is invalid when
Bit 30 is set. When IP Checksum Offload (Type 2) is present, this bit is set even when IP
0
Checksum Offload engine bypasses the processing of received frame. The bypassing
may be because of non-IP frame or IP frame with no+B80n-TCP/UDP/ICMP payload.
When Advance Timestamp Feature or IPC Full Offload is not selected, this bit indicates
Rx MAC Address status. When set, this bit indicates that the Rx MAC Address
registers value (1 to 15) matched the frame’s DA field. When reset, this bit indicates
that the Rx MAC Address Register 0 value matched the DA field.
表 219: RDES0
位
描述
DIC: Disable Interrupt on Completion
When set, this bit prevents setting the Status Register’s RI bit (CSR5[6]) for the
31
received frame ending in the buffer indicated by this descriptor. This, in turn, disables
the assertion of the interrupt to Host because of RI for that frame.
Note: This bit is valid only when the last descriptor bit (RDES0[8]) is set.
30:29
Reserved
RBS2: Receive Buffer 2 Size
These bits indicate the second data buffer size, in bytes. The buffer size must be a
28:16
multiple of 4, 8, or 16, depending on the bus widths (32, 64, or 128, respectively), even
if the value of RDES3 (buffer2 address pointer) is not aligned to bus width. If the buffer
size is not an appropriate multiple of 4, 8, or 16, the resulting behavior is undefined.
This field is not valid if RDES1[14] is set.
RER: Receive End of Ring
15
When set, this bit indicates that the descriptor list reached its final descriptor. The DMA
returns to the base address of the list, creating a descriptor ring.
RCH: Second Address Chained
When set, this bit indicates that the second address in the descriptor is the Next
14
Descriptor address rather than the second buffer address. When this bit is set, RBS2
(RDES1[28:16]) is a “don’t care”value. RDES1[15] takes precedence over
RDES1[14].
13
Reserved
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
749/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
RBS1: Receive Buffer 1 Size
Indicates the first data buffer size in bytes. The buffer size must be a multiple of 4, 8, or
12:0
16, depending upon the bus widths (32, 64, or 128), even if the value of RDES2
(buffer1 address pointer) is not aligned. When the buffer size is not a multiple of 4, 8, or
16, the resulting behavior is undefined. If this field is 0, the DMA ignores this buffer and
uses Buffer 2 or next descriptor depending on the value of RCH (Bit 14).
表 220: RDES1
位
描述
Buffer 1 Address Pointer
These bits indicate the physical address of Buffer 1. There are no limitations on the
buffer address alignment except for the following condition: The DMA uses the
configured value for its address generation when the RDES2 value is used to store the
31:0
start of frame. The DMA performs a write operation with the RDES2[3:0, 2:0, or 1:0]
bits as 0 during the transfer of the start of frame but the frame data is shifted as per the
actual Buffer address pointer. The DMA ignores RDES2[3:0, 2:0, or 1:0] (corresponding
to bus width of 128, 64, or 32) if the address pointer is to a buffer where the middle or
last part of the frame is stored.
表 221: RDES2
位
描述
Buffer 2 Address Pointer (Next Descriptor Address)
These bits indicate the physical address of Buffer 2 when a descriptor ring structure is
used. If the Second Address Chained (RDES1[24]) bit is set, this address contains the
pointer to the physical memory where the Next Descriptor is present.
If RDES1[24] is set, the buffer (Next Descriptor) address pointer must be bus
31:0
width-aligned (RDES3[3, 2, or 1:0] = 0, corresponding to a bus width of 128, 64, or 32.
LSBs are ignored internally.) However, when RDES1[24] is reset, there are no
limitations on the RDES3 value, except for the following condition: The DMA uses the
configured value for its buffer address generation when the RDES3 value is used to
store the start of frame. The DMA ignores RDES3 [3, 2, or 1:0] (corresponding to a bus
width of 128, 64, or 32) if the address pointer is to a buffer where the middle or last part
of the frame is stored.
表 222: RDES3
位
31:28
描述
Reserved
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
750/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
Layer 3 and Layer 4 Filter Number Matched
These bits indicate the number of the Layer 3 and Layer 4 Filter that matched the
received frame.
• 00: Filter 0
27:26
• 01: Filter 1
• 10: Filter 2
• 11: Filter 3
This field is valid only when Bit 24 or Bit 25 is set high. When more than one filter
matches, these bits give only the lowest filter number.
Layer 4 Filter Match
When set, this bit indicates that the received frame matches one of the enabled Layer 4
Port Number fields.
25
This status is given only when one of the following conditions is true:
• Layer 3 fields are not enabled and all enabled Layer 4 fields match.
• All enabled Layer 3 and Layer 4 filter fields match.
When more than one filter matches, this bit gives the layer 4 filter status of filter
indicated by Bits [27:26].
Layer 3 Filter Match
When set, this bit indicates that the received frame matches one of the enabled Layer 3
IP Address fields.
24
This status is given only when one of the following conditions is true:
• All enabled Layer 3 fields match and all enabled Layer 4 fields are bypassed.
• All enabled filter fields match.
When more than one filter matches, this bit gives the layer 3 filter status of filter
indicated by Bits [27:26].
23:15
Reserved
Timestamp Dropped
14
When set, this bit indicates that the timestamp was captured for this frame but got
dropped in the MTL Rx FIFO because of overflow.
PTP Version
13
When set, this bit indicates that the received PTP message is having the IEEE 1588
version 2 format. When reset, it has the version 1 format.
PTP Frame Type
When set, this bit indicates that the PTP message is sent directly over Ethernet. When
12
this bit is not set and the message type is non-zero, it indicates that the PTP message
is sent over UDP-IPv4 or UDP-IPv6. The information about IPv4 or IPv6 can be
obtained from Bits 6 and 7.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
751/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
Message Type
These bits are encoded to give the type of the message received.
• 0000: No PTP message received
• 0001: SYNC (all clock types)
• 0010: Follow_Up (all clock types)
• 0011: Delay_Req (all clock types)
• 0100: Delay_Resp (all clock types)
11:8
• 0101: Pdelay_Req (in peer-to-peer transparent clock)
• 0110: Pdelay_Resp (in peer-to-peer transparent clock)
• 0111: Pdelay_Resp_Follow_Up (in peer-to-peer transparent clock)
• 1000: Announce
• 1001: Management
• 1010: Signaling
• 1011-1110: Reserved
• 1111: PTP packet with Reserved message type
IPv6 Packet Received
7
When set, this bit indicates that the received packet is an IPv6 packet. This bit is
updated only when Bit 10 (IPC) of MACCFG Register is set.
IPv4 Packet Received
6
When set, this bit indicates that the received packet is an IPv4 packet. This bit is
updated only when Bit 10 (IPC) of MACCFG Register is set.
5
IP Checksum Bypassed
When set, this bit indicates that the checksum offload engine is bypassed.
IP Payload Error
When set, this bit indicates that the 16-bit IP payload checksum (that is, the TCP, UDP,
4
or ICMP checksum) that the core calculated does not match the corresponding
checksum field in the received segment. It is also set when the TCP, UDP, or ICMP
segment length does not match the payload length value in the IP Header field. This bit
is valid when either Bit 7 or Bit 6 is set.
IP Header Error
3
When set, this bit indicates that either the 16-bit IPv4 header checksum calculated by
the core does not match the received checksum bytes, or the IP datagram version is not
consistent with the Ethernet Type value. This bit is valid when either Bit 7 or Bit 6 is set.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
752/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位
以太网控制器 ENET
描述
IP Payload Type
These bits indicate the type of payload encapsulated in the IP datagram processed by
the Receive Checksum Offload Engine (COE). The COE also sets these bits to 2’b00 if
it does not process the IP datagram’s payload due to an IP header error or
fragmented IP.
2:0
• 3’b000: Unknown or did not process IP payload
• 3’b001: UDP
• 3’b010: TCP
• 3’b011: ICMP
• 3’b1xx: Reserved
This bit is valid when either Bit 7 or Bit 6 is set.
表 223: RDES4
位
描述
RTSL: Receive Frame Timestamp Low
This field is updated by DMA with the least significant 32 bits of the timestamp captured
31:0
for the corresponding receive frame. This field is updated by DMA only for the last
descriptor of the receive frame which is indicated by Last Descriptor status bit
(RDES0[8]).
表 224: RDES6
位
描述
RTSH: Receive Frame Timestamp High
This field is updated by DMA with the most significant 32 bits of the timestamp captured
31:0
for the corresponding receive frame. This field is updated by DMA only for the last
descriptor of the receive frame which is indicated by Last Descriptor status bit
(RDES0[8]).
表 225: RDES7
55.3.3
Buffer Size Calculations
The DMA does not update the size fields in the Transmit and Receive descriptors. The DMA updates only
the status fields (RDES and TDES) of the descriptors. The driver has to perform the size calculations. The
Transmit DMA transfers the exact number of bytes (indicated by buffer size field of TDES1) towards the MAC. If
a descriptor is marked as first (FS bit of TDES1 is set), then the DMA marks the first transfer from the buffer as
the start of frame. If a descriptor is marked as last (LS bit of TDES1), then the DMA marks the last transfer from
that data buffer as the end-of frame to the MTL.
The Receive DMA transfers data to a buffer until the buffer is full or the end-of frame is received from the
MTL. If a descriptor is not marked as last (LS bit of RDES0), then the descriptor’s corresponding buffer(s) are
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
753/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
以太网控制器 ENET
full and the amount of valid data in a buffer is accurately indicated by its buffer size field minus the data buffer
pointer offset when the FS bit of that descriptor is set. The offset is zero when the data buffer pointer is aligned
to the data bus width. If a descriptor is marked as last, then the buffer may not be full (as indicated by the buffer
size in RDES1). To compute the amount of valid data in this final buffer, the driver must read the frame length
(FL bits of RDES0[29:16]) and subtract the sum of the buffer sizes of the preceding buffers in this frame. The
Receive DMA always transfers the start of next frame with a new descriptor.
NOTE: Even when the start address of a receive buffer is not aligned to the data width of system bus, the
system should allocate a receive buffer of a size aligned to the system bus width. For example, if the system
allocates a 1,024-byte (1 KB) receive buffer starting from address 0x1000, the software can program the buffer
start address in the Receive descriptor to have a 0x1002 offset. The Receive DMA writes the frame to this buffer
with dummy data in the first two locations (0x1000 and 0x1001). The actual frame is written from location 0x1002.
Thus, the actual useful space in this buffer is 1,022 bytes, even though the buffer size is programmed as 1,024
bytes, because of the start address offset.
55.4
ENET 寄存器列表
ENET0 base address: 0xF2000000
地址偏移
名称
描述
复位值
0x0000
MACCFG
MAC 配置寄存器
0x00000000
0x0004
MACFF
MAC 帧过滤器
0x00000000
0x0008
HASH_H
哈希表高位寄存器
0x00000000
0x000C
HASH_L
哈希表低位寄存器
0x00000000
0x0010
GMII_ADDR
GMII 地址寄存器
0x00000000
0x0014
GMII_DATA
GMII 数据寄存器
0x00000000
0x0018
FLOWCTRL
流量控制寄存器
0x00000000
0x001C
VLAN_TAG
VLAN 标签寄存器
0x00000000
0x0028
RWKFRMFILT
远程唤醒帧过滤器寄存器
0x00000000
0x002C
PMT_CSR
PMT 控制和状态寄存器
0x00000000
0x0030
LPI_CSR
LPI 控制和状态寄存器
0x00000000
0x0034
LPI_TCR
LPI 定时器控制寄存器
0x00000000
0x0038
INTR_STATUS
中断状态寄存器
0x00000000
0x003C
INTR_MASK
中断屏蔽寄存器
0x00000000
0x0040
MAC_ADDR_0_HIGH
MAC 地址 0 高位寄存器
0x00000000
0x0044
MAC_ADDR_0_LOW
MAC 地址 0 低位寄存器
0x00000000
0x0048
MAC_ADDR[1][HIGH]
MAC 地址高位寄存器
0x00000000
0x004C
MAC_ADDR[1][LOW]
MAC 地址低位寄存器
0x00000000
0x0050
MAC_ADDR[2][HIGH]
MAC 地址 2 高位寄存器
0x00000000
0x0054
MAC_ADDR[2][LOW]
MAC 地址 2 低位寄存器
0x00000000
0x0058
MAC_ADDR[3][HIGH]
MAC 地址 3 高位寄存器
0x00000000
0x005C
MAC_ADDR[3][LOW]
MAC 地址 3 低位寄存器
0x00000000
0x0060
MAC_ADDR[4][HIGH]
MAC 地址 4 高位寄存器
0x00000000
0x0064
MAC_ADDR[4][LOW]
MAC 地址 4 低位寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
754/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
以太网控制器 ENET
地址偏移
名称
描述
0x00D8
XMII_CSR
0x00DC
WDOG_WTO
0x0100
MMC_CNTRL
0x0104
MMC_INTR_RX
MMC 接收中断
0x00000000
0x0108
MMC_INTR_TX
MMC 发送中断
0x00000000
0x010C
MMC_INTR_MASK_RX
MMC 接收中断掩码
0x00000000
0x0110
MMC_INTR_MASK_TX
MMC 发送中断屏蔽
0x00000000
SGMII/RGMII/SMII 控制和状态
寄存器
看门狗超时寄存器
MMC 控制建立 MMC 的操作模
式。
复位值
0x00000000
0x00000000
0x00000000
传输的字节数,不包括前导码和
0x0114
重试
TXOCTETCOUNT_GB
0x00000000
字节。
传输的好坏帧数,不包括重试
0x0118
TXFRAMECOUNT_GB
0x011C
TXBROADCASTFRAMES_G
传输的好的广播帧数。
0x00000000
0x0120
TXMLTICASTFRAMES_G
传输的好的组播帧数
0x00000000
0x0124
TX64OCTETS_GB
帧的帧数,
帧。
0x00000000
传输长度为 64 字节的好帧和坏
0x00000000
不包括前导和重试帧
传输的长度为之间的好帧和坏帧
的个数
0x0128
65 和 127(含)字节,不包括前
TX65TO127OCTETS_GB
0x00000000
导码和重试
帧。
传输的长度为之间的好帧和坏帧
0x012C
的个数
TX128TO255OCTETS_GB
128 和 255(含)字节,不包括
0x00000000
前导码和重试帧。
传输的长度为之间的好帧和坏帧
0x0130
的个数
TX256TO511OCTETS_GB
256 和 511(含)字节,不包括
0x00000000
前导码和重试帧。
传输的长度为之间的好帧和坏帧
0x0134
的个数
TX512TO1023OCTETS_GB
512 和 1023(含)字节,不包括
0x00000000
前导码和重试帧
传输的长度为之间的好坏帧数
0x0138
1,024 和 maxsize(含)字节,
TX1024TOMAXOCTETS_GB
不包括前导码和
0x00000000
重试帧。
0x0180
收到的好帧和坏帧数
RXFRAMECOUNT_GB
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
755/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
名称
以太网控制器 ENET
描述
复位值
MMC IPC 接收校验和卸载中断
0x0200
掩码,作用于从接收 IPC 统计计
MMC_IPC_INTR_MASK_RX
0x00000000
数器生成的中断
MMC 接收校验和卸载中断维护
0x0208
MMC_IPC_INTR_RX
0x0210
RXIPV4_GD_FMS
0x0400
L3_L4_CFG[0][L3_L4_CTRL]
第 3 层和第 4 层控制寄存器
0x00000000
0x0404
L3_L4_CFG[0][L4_ADDR]
第 4 层地址寄存器
0x00000000
0x0410
L3_L4_CFG[0][L3_ADDR_0]
第 3 层地址 0 寄存器
0x00000000
0x0414
L3_L4_CFG[0][L3_ADDR_1]
第 3 层地址 1 寄存器
0x00000000
0x0418
L3_L4_CFG[0][L3_ADDR_2]
第 3 层地址 2 寄存器
0x00000000
0x041C
L3_L4_CFG[0][L3_ADDR_3]
第 3 层地址 3 寄存器
0x00000000
0x0584
VLAN_TAG_INC_RPL
VLAN 标记包含或替换寄存器
0x00000000
0x0588
VLAN_HASH
VLAN 哈希表寄存器
0x00000000
0x0700
TS_CTRL
时间戳控制寄存器
0x00000000
0x0704
SUB_SEC_INCR
次-秒增量寄存器
0x00000000
0x0708
SYST_SEC
系统时间 - 秒寄存器
0x00000000
0x070C
SYST_NSEC
系统时间 - 纳秒寄存器
0x00000000
0x0710
SYST_SEC_UPD
系统时间 - 秒更新寄存器
0x00000000
0x0714
SYST_NSEC_UPD
系统时间 - 纳秒更新寄存器
0x00000000
0x0718
TS_ADDEND
时间戳加法寄存器
0x00000000
0x071C
TGTTM_SEC
目标时间秒寄存器
0x00000000
0x0720
TGTTM_NSEC
目标时间纳秒寄存器
0x00000000
0x0724
SYSTM_H_SEC
系统时间 - 秒寄存器的高位字
0x00000000
0x0728
TS_STATUS
时间戳状态寄存器
0x00000000
0x072C
PPS_CTRL
PPS 控制寄存器
0x00000000
0x0730
AUX_TS_NSEC
辅助时间戳 - 纳秒寄存器
0x00000000
0x0734
AUX_TS_SEC
辅助时间戳 - 秒寄存器
0x00000000
0x0760
PPS0_INTERVAL
PPS0 间隔寄存器
0x00000000
0x0764
PPS0_WIDTH
PPS0 宽度寄存器
0x00000000
0x0780
PPS[1][TGTTM_SEC]
PPS 目标时间秒寄存器
0x00000000
0x0784
PPS[1][TGTTM_NSEC]
PPS 目标时间纳秒寄存器
0x00000000
0x0788
PPS[1][INTERVAL]
PPS 间隔寄存器
0x00000000
0x078C
PPS[1][WIDTH]
PPS 宽度寄存器
0x00000000
0x07A0
PPS[2][TGTTM_SEC]
PPS2 目标时间秒寄存器
0x00000000
0x07A4
PPS[2][TGTTM_NSEC]
PPS 目标时间纳秒寄存器
0x00000000
0x07A8
PPS[2][INTERVAL]
PPS 间隔寄存器
0x00000000
0x07AC
PPS[2][WIDTH]
PPS 宽度寄存器
0x00000000
0x07C0
PPS[3][TGTTM_SEC]
PPS3 目标时间秒寄存器
0x00000000
接收 IPC 统计计数器生成的中断
使用 TCP、UDP 或 ICMP 负载
接收的良好 IPv4 数据报的数量
0x00000000
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
756/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
以太网控制器 ENET
地址偏移
名称
描述
复位值
0x07C4
PPS[3][TGTTM_NSEC]
PPS 目标时间纳秒寄存器
0x00000000
0x07C8
PPS[3][INTERVAL]
PPS 间隔寄存器
0x00000000
0x07CC
PPS[3][WIDTH]
PPS 宽度寄存器
0x00000000
0x1000
DMA_BUS_MODE
DMA 总线模式寄存器
0x00000000
0x1004
DMA_TX_POLL_DEMAND
DMA 发送轮询请求寄存器
0x00000000
0x1008
DMA_RX_POLL_DEMAND
DMA 接收轮询请求寄存器
0x00000000
0x100C
DMA_RX_DESC_LIST_ADDR
0x1010
DMA_TX_DESC_LIST_ADDR
0x1014
DMA_STATUS
Status Register
0x00000000
0x1018
DMA_OP_MODE
DMA 操作模式寄存器
0x00000000
0x101C
DMA_INTR_EN
DMA 中断使能寄存器
0x00000000
0x1020
DMA_MISS_OVF_CNT
0x1024
DMA_RX_INTR_WDOG
接收中断看门狗定时器寄存器
0x00000000
0x1028
DMA_AXI_MODE
AXI 总线模式寄存器
0x00000000
0x102C
DMA_BUS_STATUS
AHB 或 AXI 状态寄存器
0x00000000
0x1048
DMA_CURR_HOST_TX_DESC
当前主机发送描述符寄存器
0x00000000
0x104C
DMA_CURR_HOST_RX_DESC
当前主机接收描述符寄存器
0x00000000
0x1050
DMA_CURR_HOST_TX_BUF
当前主机发送缓冲区地址寄存器
0x00000000
0x1054
DMA_CURR_HOST_RX_BUF
当前主机接收缓冲区地址寄存器
0x00000000
0x3008
CTRL2
控制寄存器 2
0x00000000
DMA 接收描述符列表地址寄存
0x00000000
器
DMA 发送描述符列表地址寄存
0x00000000
器
丢失帧和缓冲区溢出计数器寄存
器
0x00000000
表 226: ENET 寄存器列表
ENET 寄存器描述
0
0
MACCFG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
757/1016
0
PRELEN
0
1
RW
RE
RW
0
TE
0
2
RW
0
3
DC
0
4
RW
0
5
BL
0
6
RW
ACS
RW
0
LUD
0
RW
0
DR
0
7
IPC
DM
RW
0
8
RW
LM
0
9
RW
DO
10
RW
11
RW
0
12
FES
0
13
RW
0
14
PS
0
15
DCRS
0
16
RW
0
17
RW
JE
0
18
IFG
BE
RW
RW
0
19
RW
JD
20
RW
21
TC
0
22
WD
0
23
RW
0
24
RW
CST
0
25
RW
0
26
SFTERR
0
27
TWOKPE
28
RW
N/A
x
29
SARC
30
RSVD
31
MACCFG (0x0)
RW
55.5.1
RW
55.5
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
源地址插入或替换控制
该字段控制所有传输帧的源地址插入或替换。位 30 根据位
[29:28] 的值指定哪个 MAC 地址寄存器(0 或 1)用于源地址插入
或替换:
- 2’b0x:输入信号 mti_sa_ctrl_i 和 ati_sa_ctrl_i 控制 SA 字段的
生成。
- 2’b10:- 如果位 30 设置为 0,MAC 将 MAC 地址 0 寄存器(寄
存器 16 和 17)的内容插入到所有传输帧的 SA 字段中。- 如果位
30 设置为 1 并且在内核配置期间选择了启用 MAC 地址寄存器 1
30-28
SARC
选项,则 MAC 将 MAC 地址 1 寄存器(寄存器 18 和 19)的内容
插入到所有传输帧的 SA 字段中。
- 2’b11:- 如果位 30 设置为 0,MAC 将替换所有传输帧的 SA 字
段中 MAC 地址 0 寄存器(寄存器 16 和 17)的内容。- 如果位
30 设置为 1 并且在内核配置期间选择了启用 MAC 地址寄存器 1
选项,则 MAC 将替换所有传输帧的 SA 字段中 MAC 地址 1 寄存
器(寄存器 18 和 19)的内容。注意:- 对该字段的更改仅在帧开
始时生效。如果在传输帧时写入该寄存器字段,则只有后续帧可
以使用更新后的值,即当前帧不使用更新后的值。- 当内核配置期
间未选择在 TX 上启用 SA、VLAN 和 CRC 插入功能时,这些位
被保留和 RO。
IEEE 802.3as 支持 2K 数据包
设置后,MAC 将所有长度最多为 2,000 字节的帧视为正常数据
27
TWOKPE
包。当第 20 位 (JE) 未设置时,MAC 将所有接收到的大小超过
2K 字节的帧视为巨型帧。当该位复位且位 20 (JE) 未设置时,
MAC 将所有接收到的大小超过 1,518 字节(标记为 1,522 字节)
的帧视为巨型帧。设置位 20 时,设置此位对巨帧状态没有影响。
IEEE 802.3as 支持 2K 数据包
设置后,MAC 将所有长度最多为 2,000 字节的帧视为正常数据
26
SFTERR
包。当第 20 位 (JE) 未设置时,MAC 将所有接收到的大小超过
2K 字节的帧视为巨型帧。当该位复位且位 20 (JE) 未设置时,
MAC 将所有接收到的大小超过 1,518 字节(标记为 1,522 字节)
的帧视为巨型帧。设置位 20 时,设置此位对巨帧状态没有影响。
类型帧的 CRC 剥离
设置此位后,所有 Ether 类型帧(长度/类型字段大于或等于
25
CST
1,536)的最后 4 个字节 (FCS) 在将帧转发到应用程序之前被剥
离和丢弃。当 MAC 接收器中启用 IP 校验和引擎(类型 1)时,
此功能无效。此功能在启用类型 2 校验和卸载引擎时有效。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
758/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
RGMII、SGMII 或 SMII 中的传输配置
设置时,该位启用双工模式、链路速度和链路启动或关闭信息到
24
TC
PHY(RGMII、SMII 或 SGMII 端口中)
。当该位复位时,不会将
此类信息发送到 PHY。如果在内核配置期间未选择 RGMII、SMII
或 SGMII PHY 端口,则该位保留(和 RO)
看门狗禁用
23
WD
当该位被设置时,MAC 禁用接收器上的看门狗定时器。MAC 最
多可以接收 16,383 字节的帧。
Jabber 禁用
当该位被设置时,MAC 禁用发送器上的 jabber 定时器。MAC 最
22
JD
多可以传输 16,383 字节的帧。当该位复位时,如果应用程序在传
输过程中发送了超过 2,048 个字节的数据(如果 JE 设置为高,则
为 10,240 个字节),MAC 将切断发送器。
帧突发使能
21
BE
当该位被设置时,MAC 允许在 GMII 半双工模式下传输期间的帧
突发。该位在 10/100 Mbps 或全双工配置时保留(和 RO)
。
巨型帧启用
20
JE
设置此位后,MAC 允许 9,018 字节(VLAN 标记帧为 9,022 字
节)的巨型帧,而不会在接收帧状态中报告巨大帧错误。
帧间间隙
这些位控制传输期间帧之间的最小 IFG。
- 000:96 位时间
- 001:88 位时间
- 010:80 位时间
19-17
IFG
- ...
- 111:40 位时间
在半双工模式下,最小 IFG 只能配置为 64 位时间(IFG = 100),
不考虑较低的值。在 1000-Mbps 模式下,支持的最小 IFG 配置中
为 64 位时间(及以上)
,在其他配置中为 80 位时间(及以上)。
当由于传输 JAM 模式时,MAC 不考虑最小 IFG。
在传输过程中禁用载波侦听
当设置为高时,该位使 MAC 发送器在半双工模式下帧传输期间
16
DCRS
忽略 (G)MII CRS 信号。此请求不会导致在此类传输期间因丢失
载波或无载波而产生错误。当该位为低时,MAC 发送器会因载波
侦听而产生此类错误,甚至可以中止传输。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
759/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
端口选择
该位选择以太网线路速度。
- 0:对于 1000 Mbps 操作
15
PS
- 1:对于 10 或 100 Mbps 操作在 10 或 100 Mbps 操作中,该位
与 FES 位一起选择准确的线路速度。在仅 10/100 Mbps(始终为
1)或仅 1000 Mbps(始终为 0)的配置中,该位是只读的,具有
适当的值。在默认 10/100/1000 Mbps 配置中,该位是 R_W。
mac_portselect_o 或 mac_speed_o[1] 信号反映了该位的值。
速度
该位选择 MII、RMII、SMII、RGMII、SGMII 或 RevMII 接口中的
速度:
- 0:10 Mbps
- 1: 100 Mbps 该位默认保留 (RO),仅在参数 SPEED_SELECT =
14
FES
Enabled 时启用。当位 24 (TC) 在 RGMII、SMII 或 SGMII 模式下
设置时,该位生成链接速度编码。对于 RGMII、SGMII、SMII 或
RevMII 接口,该位始终使能。在具有 RGMII、SGMII、SMII 或
RevMII 接口的配置中,该位作为输出信号 (mac_speed_o[0]) 驱
动以反映 mac_speed_o 信号中该位的值。在具有 RMII、MII 或
GMII 接口的配置中,您可以选择将此位作为输出信号
(mac_speed_o[0]) 来驱动,以在 mac_speed_o 信号中反映其值。
禁用接收自己的
当该位被设置时,当 phy_txen_o 在半双工模式下被置位时,
13
DO
MAC 将禁止接收帧。当该位复位时,MAC 接收传输时由 PHY 提
供的所有数据包。如果 MAC 在全双工模式下运行,则该位不适
用。如果 MAC 配置为仅全双工操作,则该位是保留的(RO 具有
默认值)。
环回模式
12
LM
当该位置位时,MAC 在 GMII 或 MII 下以环回模式运行。(G)MII
接收时钟输入 (clk_rx_i) 是环回正常工作所必需的,因为发送时钟
不在内部环回。
双工模式
11
DM
当该位被设置时,MAC 在全双工模式下运行,它可以同时发送和
接收。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
760/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
校验和卸载
当该位被设置时,MAC 计算所有接收到的以太网帧有效载荷的补
码和的 16 位补码。它还检查 IPv4 报头校验和(假设为接收的以
太网帧的字节 25-26 或 29-30(VLAN 标记)
)对于接收的帧是否
10
IPC
正确,并在接收状态字中给出状态。MAC 还附加为 IP 报头数据
报负载(IPv4 报头之后的字节)计算的 16 位校验和,并将其附
加到传输到应用程序的以太网帧(当取消选择类型 2 COE 时)
。
当该位复位时,该功能被禁用。选择 2 型 COE 时,该位在设置
时,启用 IPv4 头部校验和检查和 IPv4 或 IPv6 TCP,UDP 或
ICMP 有效载荷校验和检查。
禁用重试
当该位被设置时,MAC 只尝试一次传输。当 GMII 或 MII 接口发
9
DR
生冲突时,MAC 会忽略当前帧的传输,并在传输帧状态中报告
Frame Abort 和过多的冲突错误。当该位复位时,MAC 会根据
BL 字段(位 [6:5])的设置尝试重试。
链接向上或向下
该位指示在 RGMII、SGMII 或 SMII 接口中传输配置期间链路是
8
LUD
up 还是 down:
- 0:链接断开
- 1:链接
自动垫或 CRC 剥离
设置该位后,仅当长度字段的值小于 1,536 字节时,MAC 才会剥
7
ACS
离传入帧上的 Pad 或 FCS 字段。所有接收到的长度字段大于或
等于 1,536 字节的帧都将传递给应用程序,而不会剥离 Pad 或
FCS 字段。当该位复位时,MAC 将所有传入帧传递给主机,而无
需修改它们。
回退限制
回退限制决定了时隙延迟的随机整数 (r)(1000 Mbps 为 4,096 位
时间,10/100 Mbps 为 512 位时间)
,MAC 在冲突后重试期间重
新安排传输尝试之前等待该延迟。该位仅适用于半双工模式,并
6-5
BL
在仅全双工配置中保留 (RO)。
- 00: k= min (n, 10)
- 01: k = min (n, 8)
- 10: k = min (n, 4)
- 11: k = min (n, 1) 其中 n = 重传尝试。随机整数 r 取值范围为 0 ≤
r < 2k。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
761/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
延期检查
当该位被设置时,在 MAC 中启用延迟检查功能。当传输状态机在
10 或 100 Mbps 模式下延迟超过 24,288 位时间时,MAC 会发出
帧中止状态以及在传输帧状态中设置的过多延迟错误位。如果
MAC 配置为 1000 Mbps 操作,或者如果在 10 或 100 Mbps 模式
4
下启用 Jumbo 帧模式,则延迟阈值为 155,680 位时间。当发射机
DC
准备好发送时,延迟开始,但由于 GMII 或 MII 上的活动载波侦听
信号 (CRS) 而被阻止。延迟时间不是累积的。例如,如果发射机
由于 CRS 信号处于活动状态而推迟 10,000 比特时间,然后 CRS
信号变为非活动状态,则发射机会发射并发生冲突。由于碰撞,
发射器需要退避,然后在退避完成后再次推迟。在这种情况下,
延迟计时器将重置为 0 并重新启动。
发射器使能
3
当该位被设置时,MAC 的传输状态机被启用以在 GMII 或 MII 上
TE
传输。当该位复位时,MAC 发送状态机在当前帧传输完成后禁
用,不再发送任何帧。
接收器启用
2
当该位被设置时,MAC 的接收器状态机被启用以接收来自 GMII
RE
或 MII 的帧。当该位复位时,MAC 接收状态机在当前帧接收完成
后被禁用,并且不再接收来自 GMII 或 MII 的任何帧。
发送帧的前导码长度
这些位控制添加到每个传输帧开头的前导字节数。仅当 MAC 在
全双工模式下运行时才会发生前导码减少。
1-0
- 2’b00:7 字节的前导码
PRELEN
- 2’b01:5 字节的前导
- 2’b10:3 字节的前导
- 2’b11:保留
MACCFG 位域
0
0
0
0
0
0
MACFF [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
762/1016
0
PR
0
1
RW
0
2
HUC
0
3
HMC
0
4
RW
0
5
RW
x
6
DAIF
x
7
RW
x
8
PM
x
9
DBF
0
10
RW
x
11
RW
x
12
PCF
13
RW
x
14
SAIF
x
15
RW
0
16
SAF
0
17
HPF
x
18
RW
x
19
RW
x
20
RSVD
x
N/A
x
21
N/A
22
VTFE
x
23
RW
x
24
RSVD
x
25
N/A
x
RW
0
26
IPFE
27
DNTU
28
RW
29
RSVD
30
RA
31
MACFF (0x4)
RW
55.5.2
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
接受所有帧
当设置该位时,MAC 接收器模块将所有接收到的帧传递给应用程
31
RA
序,而不管它们是否通过地址过滤器。SA 或 DA 过滤的结果在接
收状态字的相应位中更新(通过或失败)。重置此位时,接收器模
块仅将通过 SA 或 DA 地址过滤器的帧传递给应用程序。
丢弃非 TCP/UDP over IP 帧
21
DNTU
设置此位后,MAC 可以丢弃非 TCP 或 UDP over IP 帧。MAC 仅
转发由第 4 层过滤器处理的帧。重置时,此位使 MAC 能够转发
所有非 TCP 或 UDP over IP 帧。
第 3 层和第 4 层过滤器启用
设置时,该位使 MAC 能够丢弃与启用的第 3 层和第 4 层过滤器
20
IPFE
不匹配的帧。如果未启用第 3 层或第 4 层过滤器进行匹配,则此
位不会产生任何影响。重置时,MAC 转发所有帧,而不考虑第 3
层和第 4 层字段的匹配状态。
启用 VLAN 标记的筛选器
15
VTFE
设置此位后,MAC 可以丢弃与 VLAN 标记比较不匹配的 VLAN
标记帧。重置时,MAC 转发所有帧,而不考虑 VLAN 标记的匹配
状态。
哈希过滤器,还是完美过滤器
10
HPF
设置此位时,地址过滤器会通过与 HMC 或 HUC 位设置的完美过
滤或哈希过滤匹配的帧。当该位为低时,且设置了 HUC 或 HMC
位时,仅当该帧与哈希过滤器匹配时才传递该帧。
启用源地址筛选器
设置该位时,MAC 将接收帧的 SA 字段与已启用 SA 寄存器中编
9
SAF
程的值进行比较。如果比较失败,MAC 将丢弃该帧。
当重置该位时,MAC 将接收到的帧转发给应用程序,并根据 SA
地址比较更新 Rx 状态的 SAF 位。
SA 逆过滤
设置此位时,地址检查模块在 SA 地址比较的反向过滤模式下运
8
SAIF
行。SA 与 SA 寄存器匹配的帧被标记为 SA 地址筛选失败的帧。
重置此位时,SA 与 SA 寄存器不匹配的帧将标记为 SA 地址筛选
失败的帧。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
763/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
转发控制帧
这些位控制所有控制帧(包括单播和多播暂停帧)的转发。
-00:MAC 过滤所有到达应用程序的控制帧。
-01:MAC 将所有控制帧(暂停帧除外)转发给应用程序,即使它
们未通过地址过滤器。
-10:MAC 将所有控制帧转发给应用程序,即使它们未通过地址过
滤器。
-11:MAC 转发通过地址过滤器的控制帧。暂停帧处理应满足以下
7-6
PCF
条件:-条件 1:MAC 处于全双工模式,通过将寄存器 6(流量控
制寄存器)的位 2(RFE)设置为 1 启用流量控制。-条件 2:设
置寄存器 6(流控制寄存器)的位 3(向上)时,接收帧的目标地
址(DA)与特殊多播地址或 MAC 地址 0 匹配。-条件 3:接收帧
的类型字段为 0x8808,操作码字段为 0x0001。注:仅当条件 1
为真时,该字段才应设置为 01,即 MAC 编程为在全双工模式下
工作,且 RFE 位启用。否则,暂停帧过滤可能不一致。当条件 1
为 false 时,暂停帧被视为通用控制帧。因此,要在未启用全双工
模式和流量控制时传递所有控制帧(包括暂停帧),应将 PCF 字
段设置为 10 或 11(根据应用程序的要求)
。
禁用广播帧
5
DBF
设置此位时,AFM 模块阻止所有传入的广播帧。此外,它将覆盖
所有其他过滤器设置。当该位复位时,AFM 模块通过所有接收到
的广播帧。
通过所有多播
4
PM
设置时,该位表示所有接收到的具有多播目标地址的帧(目标地
址字段中的第一位为“1”
)都被传递。重置时,多播帧的过滤取
决于 HMC 位。
反过滤
3
DAIF
当设置该位时,地址检查块以反向过滤模式操作,用于单播和多
播帧的 DA 地址比较。重置时,执行帧的正常过滤。
哈希多播
2
HMC
当设置时,MAC 根据哈希表对接收到的多播帧执行目的地地址过
滤。复位时,MAC 对多播帧执行完美的目的地地址过滤,即将
DA 字段与 DA 寄存器中编程的值进行比较。
哈希单播
1
HUC
设置后,MAC 根据哈希表对单播帧进行目的地址过滤。复位时,
MAC 对单播帧执行完美的目标地址过滤,即将 DA 字段与 DA 寄
存器中编程的值进行比较。
混杂模式
0
PR
设置该位后,地址过滤器模块会通过所有传入帧,而不管目标地
址或源地址如何。当 PR 置位时,接收状态字的 SA 或 DA 过滤器
失败状态位总是被清除
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
764/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MACFF 位域
55.5.3
HASH_H (0x8)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
HTH
31
0
HASH_H [31:0]
位域
名称
31-0
HTH
描述
哈希表高
该字段包含哈希表的高 32 位。
HASH_H 位域
55.5.4
HASH_L (0xC)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
RW
HTL
31
0
HASH_L [31:0]
位域
名称
31-0
HTL
描述
哈希表低
该字段包含哈希表的低 32 位。
HASH_L 位域
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
x
x
x
x
x
x
x
0
0
12
11
10
9
0
0
0
0
RW
N/A
PA
13
x
0
0
GMII_ADDR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
765/1016
GB
25
RW
26
GW
27
CR
28
RW
29
GR
30
RSVD
31
RW
GMII_ADDR (0x10)
RW
55.5.5
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
物理层地址
15-11
PA
该字段指示正在访问 32 个可能的 PHY 设备中的哪一个。对于
RevMII,该字段给出了 RevMII 模块的 PHY 地址。
GMII 注册
10-6
GR
这些位选择所选 PHY 器件中所需的 GMII 寄存器。对于 RevMII,
这些位在 RevMII 寄存器集中选择所需的 CSR 寄存器。
CSR 时钟范围
CSR 时钟范围选择根据您的设计中使用的 CSR 时钟频率确定
MDC 时钟的频率。不同 GMAC 配置对应的 CSR 时钟在第 564
页的表 9-2 中给出。适用于每个值的 CSR 时钟频率的建议范围
(当 Bit[5] = 0 时)确保 MDC 时钟大约在频率范围之间 1.0 MHz–
2.5 MHz。
- 0000:CSR 时钟频率为 60-100 MHz,MDC 时钟频率为 CSR
clock/42。
- 0001:CSR 时钟频率为 100-150 MHz,MDC 时钟频率为 CSR
clock/62。
- 0010:CSR 时钟频率为 20-35 MHz,MDC 时钟频率为 CSR
clock/16。
- 0011:CSR 时钟频率为 35-60 MHz,MDC 时钟频率为 CSR
clock/26。
- 0100:CSR 时钟频率为 150-250 MHz,MDC 时钟频率为 CSR
clock/102。
5-2
CR
- 0101:CSR 时钟频率为 250-300 MHz,MDC 时钟为 CSR 时
钟/124。
- 0110, 0111:保留当位 5 被设置时,您可以获得比 2.5 MHz 频率
限制(在 IEEE Std 802.3 中指定)更高的 MDC 时钟频率,并编
程一个较低值的时钟分频器。例如,当 CSR 时钟的频率为 100
MHz 并且您将这些位编程为 1010 时,生成的 MDC 时钟为 12.5
MHz,超出了 IEEE 802.3 指定范围的限制。仅当接口芯片支持更
快的 MDC 时钟时才对以下值进行编程。
- 1000:CSR 时钟/4
- 1001:CSR 时钟/6
- 1010:CSR 时钟/8
- 1011:CSR 时钟/10
- 1100:CSR 时钟/12
- 1101:CSR 时钟/14
- 1110:CSR 时钟/16
- 1111:CSR 时钟/18
这些位不用于访问 RevMII。如果 RevMII 接口被选为单个 PHY
接口,这些位是只读的。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
766/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
GMII 写
1
设置时,该位向 PHY 或 RevMII 指示这是使用 GMII 数据寄存器
GW
的写操作。如果该位未设置,则表示这是一次读操作,即将数据
放入 GMII 数据寄存器中。
GMII 忙
在写入寄存器 4 和寄存器 5 之前,该位应读取逻辑 0。在 PHY 或
RevMII 寄存器访问期间,软件将此位设置为 1’b1 以指示正在进
行读或写访问。寄存器 5 无效,直到该位被 MAC 清除。因此,寄
0
存器 5(GMII 数据)应保持有效,直到 MAC 在 PHY 写操作期间
GB
清除该位。类似地,对于读操作,寄存器 5 的内容在该位被清除
之前无效。后续的读或写操作应该只在前一个操作完成后发生。
因为在读或写操作完成后没有从 PHY 到 MAC 的确认,所以即使
PHY 不存在,该位的功能也没有变化。
GMII_ADDR 位域
55.5.6
GMII_DATA (0x14)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
N/A
GD
RSVD
31
x
GMII_DATA [31:0]
位域
名称
描述
GMII 数据
15-0
该字段包含在管理读取操作之后从 PHY 或 RevMII 读取的 16 位
GD
数据值或在管理写入操作之前要写入 PHY 或 RevMII 的 16 位数
据值。
GMII_DATA 位域
FLOWCTRL (0x18)
0
16
15
14
13
12
0
0
0
0
0
0
0
x
x
x
x
11
10
9
8
x
x
x
N/A
RW
0
x
7
6
0
x
5
4
0
0
3
2
0
0
0
0
0
FLOWCTRL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
767/1016
1
FCB_BPA
0
17
RW
0
18
TFE
0
19
RFE
0
20
RW
0
21
RW
0
22
UP
0
23
RW
24
PLT
25
RW
26
RSVD
27
N/A
28
DZPQ
29
RW
30
PT
31
RSVD
55.5.7
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
暂停时间
31-16
PT
该字段保存要在传输控制帧的暂停时间字段中使用的值。如果暂
停时间位配置为与 (G)MII 时钟域双同步,则应仅在目标时钟域中
至少四个时钟周期后执行对该寄存器的连续写入。
禁用零量子暂停
当该位被设置时,它会在来自 FIFO 层的流量控制信号(MTL 或
7
DZPQ
外部边带流量控制信号 sbd_flowctrl_i/mti_flowctrl_i)变成无效时
禁用零量子暂停帧的自动生成。当该位复位时,启用自动零量子
暂停帧生成的正常操作。
暂停低阈值
该字段配置 Pause 定时器的阈值,在该阈值处检查输入流控制信
号 mti_flowctrl_i(或 sbd_flowctrl_i)是否自动重传 Pause 帧。阈
值应始终小于在 Bits[31:16] 中配置的暂停时间。例如,如果 PT =
100H(256 个时隙),并且 PLT = 01,那么如果 mti_flowctrl_i 信
号在第一个暂停帧传输后的 228 (256–28) 个时隙时断言,则第二
5-4
PLT
个暂停帧将自动传输。以下列表提供了不同值的阈值:
- 00:阈值是暂停时间减去 4 个插槽时间(PT–4 个插槽时间)。
- 01:阈值是暂停时间减去 28 个插槽时间(PT–28 个插槽时间)。
- 10:阈值是暂停时间减去 144 个插槽时间(PT–144 个插槽时
间)。
- 11:阈值是暂停时间减去 256 个插槽时间(PT–256 个插槽时
间)
。时隙定义为在 GMII 或 MII 接口上传输 512 位(64 字节)所
花费的时间。
单播暂停帧检测
如果暂停帧具有 IEEE Std 802.3 中指定的唯一多播地址,则会对
3
UP
其进行处理。当该位被设置时,MAC 也可以检测到带有站点单播
地址的 Pause 帧。此单播地址应与 MAC 地址 0 高位寄存器和
MAC 地址 0 低位寄存器中指定的一样。当该位复位时,MAC 仅
检测具有唯一多播地址的暂停帧。
接收流控制使能
2
RFE
当该位被设置时,MAC 解码接收到的暂停帧并在指定的(暂停)
时间内禁用其发送器。当该位复位时,暂停帧的解码功能被禁用。
传输流控制使能
在全双工模式下,当该位被设置时,MAC 启用流量控制操作以传
1
TFE
输暂停帧。当该位复位时,MAC 中的流量控制操作被禁用,MAC
不发送任何暂停帧。在半双工模式下,当该位被设置时,MAC 启
用背压操作。当该位复位时,背压功能被禁用。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
768/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
流量控制忙或背压激活
该位在全双工模式下启动一个暂停帧,如果 TFE 位被设置,则在
半双工模式下激活背压功能。在全双工模式下,在写入流量控制
寄存器之前,该位应读为 1’b0。要启动暂停帧,应用程序必须将
此位设置为 1’b1。在控制帧传输期间,该位继续设置以表示正在
0
进行帧传输。暂停帧传输完成后,MAC 将该位复位为 1’b0。在该
FCB_BPA
位清零之前,不应写入流量控制寄存器。在半双工模式下,当该
位被设置(并且 TFE 被设置)时,MAC 会声明背压。在背压期
间,当 MAC 接收到新帧时,发送器开始发送导致冲突的 JAM 模
式。该控制寄存器位与用于背压功能的 mti_flowctrl_i 输入信号进
行逻辑或运算。当 MAC 配置为全双工模式时,BPA 将自动禁用。
FLOWCTRL 位域
VLAN_TAG (0x1C)
x
x
21
20
x
x
x
x
x
N/A
x
19
18
17
16
0
0
0
0
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
VL
x
22
RW
x
23
ETV
x
24
RW
x
25
VTIM
26
RW
27
ESVL
28
VTHM
29
RW
30
RSVD
31
RW
55.5.8
VLAN_TAG [31:0]
位域
名称
描述
VLAN 标记的哈希表匹配启用
设置时,VLAN 标记的 CRC 的最高有效四位用于索引寄存器 354
(VLAN 哈希表寄存器)的内容。VLAN 哈希表寄存器中与索引对
19
VTHM
应的值为 1 表示帧与 VLAN 哈希表匹配。当设置位 16(ETV)
时,12 位 VLAN 标识符(VID)的 CRC 用于比较,而当重置
ETV 时,16 位 VLAN 标记的 CRC 用于比较。
重置时,不会执行 VLAN 哈希匹配操作。
启用 S-VLAN
18
ESVL
当该位被设置时,MAC 发送器和接收器还将 S VLAN(类型=
0x88 A8)帧视为有效的 VLAN 标记帧
VLAN 标记的反向匹配启用
设置时,此位启用 VLAN 标记反向匹配。没有匹配 VLAN 标记的
17
VTIM
帧被标记为匹配。
重置时,此位启用 VLAN 标记的完美匹配。具有匹配 VLAN 标记
的帧标记为匹配。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
769/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
启用 12 位 VLAN 标记比较
设置此位时,12 位 VLAN 标识符用于比较和筛选,而不是完整的
16 位 VLAN 标记。VLAN 标记的位 [11:0] 与接收到的 VLAN 标记
16
帧中的相应字段进行比较。类似地,启用时,接收帧中只有 12 位
ETV
VLAN 标记用于基于哈希的 VLAN 过滤。重置此位时,接收到的
VLAN 帧的第 15 和第 16 字节的所有 16 位用于比较和 VLAN 哈
希过滤。
接收帧的 VLAN 标记标识符
此字段包含用于标识 VLAN 帧的 802.1Q VLAN 标记,并与
VLAN 帧接收的帧的第 15 和第 16 字节进行比较。以下列表描述
了此字段的位:-位 [15:13]:用户优先级-位 12:规范格式指示符
15-0
(CFI)或删除合格指示符(DEI)-位 [11:0]:VLAN 标记的 VLAN
VL
标识符(VID)字段设置 ETV 位时,仅使用 VID(位 [11:0])进行
比较。如果 VL(如果设置了 ETV,则为 VL[11:0])均为零,则
MAC 不会检查第十五和第十六字节以进行 VLAN 标记比较,并将
类型字段值为 0x8100 或 0x88a8 的所有帧声明为 VLAN 帧。
VLAN_TAG 位域
55.5.9
RWKFRMFILT (0x28)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
WKUPFRMFILT
31
0
RWKFRMFILT [31:0]
位域
名称
描述
这是应用程序写入或读取远程唤醒帧筛选器寄存器
(wkupfmfilter_reg)的地址。wkupfmfilter_reg 寄存器是指向八个
31-0
WKUPFRMFILT
wkupfmfilter_reg 寄存器的指针。wkupfmfilter_reg 寄存器通过顺
序加载八个寄存器值来加载。八次顺序写入此地址(0x0028)写
入所有 wkupfmfilter_reg 寄存器。类似地,从该地址(0x0028)
进行的八次顺序读取将读取所有 wkupfmfilter_reg 寄存器
RWKFRMFILT 位域
55.5.10
PMT_CSR (0x2C)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
770/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
x
x
x
12
11
10
x
x
x
x
x
x
9
8
RSVD
N/A
x
0
7
x
x
6
5
0
0
4
3
x
x
2
1
0
PWRDWN
x
13
RW
0
14
MGKPKTEN
0
15
RWKPKTEN
0
RW
x
16
RW
17
RW
18
RSVD
19
N/A
20
MGKPRCVD
21
RW
22
RWKPRCVD
23
RW
24
RSVD
0
25
N/A
0
RSVD
x
26
GLBLUCAST
27
RW
28
N/A
RW
0
29
RWKPTR
30
RWKFILTRST
31
以太网控制器 ENET
0
0
0
PMT_CSR [31:0]
位域
名称
描述
远程唤醒帧筛选器寄存器指针重置
31
RWKFILTRST
设置此位时,它将远程唤醒帧筛选器寄存器指针重置为 3’b000。
它在 1 个时钟周期后自动清除
远程唤醒 FIFO 指针
此字段给出远程唤醒帧筛选器寄存器指针的当前值(0 到 31)
。当
28-24
RWKPTR
该指针的值等于 7、15、23 或 31 时,远程唤醒帧滤波器寄存器
的内容将在该寄存器发生写入时传输到 clk_rx_i 域。指针的最大
值分别为 7、15、23 和 31,具体取决于配置期间选择的远程唤醒
过滤器的数量。
全局单播
9
GLBLUCAST
设置后,使 MAC(DAF)地址识别过滤的任何单播数据包成为远
程唤醒帧。
接收到远程唤醒帧
6
RWKPRCVD
设置时,此位表示由于接收远程唤醒帧而生成电源管理事件。通
过读入该寄存器,该位被清除
收到了唤醒包
5
MGKPRCVD
设置时,该位表示由于接收魔术包而生成电源管理事件。通过读
入该寄存器,该位被清除
2
RWKPKTEN
1
MGKPKTEN
远程唤醒帧启用
设置后,由于接收远程唤醒帧,启用电源管理事件的生成。
唤醒包启用
设置后,由于接收魔术数据包,启用电源管理事件的生成。
断电
设置后,MAC 接收器丢弃所有接收到的帧,直到接收到预期的唤
醒包或远程唤醒帧。然后该位自清除,断电模式被禁用。软件还
可以在收到预期的唤醒包或远程唤醒帧之前清除该位。MAC 在清
0
PWRDWN
除该位后接收到的帧被转发到应用程序。仅当 Magic Packet
Enable(魔术包启用)
、Global Unicast(全局单播)或 Remote
Wake Up Frame Enable(远程唤醒帧启用)位设置为高位时,才
能设置此位。注意:您可以在断电模式下关闭 CSR 时钟。但是,
当 CSR 时钟选通关闭时,您无法在此寄存器上执行任何读取或写
入操作。因此,软件无法清除该位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
771/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
PMT_CSR 位域
LPI_CSR (0x30)
x
x
x
0
0
7
6
x
x
5
4
x
x
3
2
1
0
TLPIEN
x
8
RW
x
9
TLPIEX
x
10
RLPIEN
0
11
RW
0
12
RW
0
13
RLPIEX
0
14
RW
x
15
RSVD
x
16
N/A
x
17
TLPIST
x
18
RW
x
N/A
x
19
RLPIST
x
20
RW
x
21
RSVD
x
22
N/A
x
23
LPIEN
x
24
RW
x
25
PLS
26
RW
27
PLSEN
28
LPITXA
29
RW
30
RSVD
31
RW
55.5.11
0
0
0
0
LPI_CSR [31:0]
位域
名称
描述
LPI TX 自动
该位控制 MAC 在传输侧进入或退出 LPI 模式时的行为。该位在
GMAC-CORE 配置中不起作用,在 GMAC-CORE 配置中,发送
时钟选通在 LPI 模式下完成。如果 LPITXA 和 LPIEN 位设置为 1,
则 MAC 仅在所有未完成帧(在核心中)和待处理帧(在应用程序
19
LPITXA
接口中)传输完毕后才进入 LPI 模式。当应用程序发送任何帧进
行传输或应用程序发出 TX FIFO Flush 命令时,MAC 退出 LPI 模
式。此外,MAC 在退出 LPI 状态时自动清除 LPIEN 位。如果在
寄存器 6(操作模式寄存器)的第 20 位设置了 TX FIFO Flush,
则当 MAC 处于 LPI 模式时,MAC 退出 LPI 模式。当该位为 0 时,
LPIEN 位直接控制 MAC 在进入或退出 LPI 模式时的行为
物理层链路状态启用
此位启用在 RGMII、SGMII 或 SMII 接收路径上接收的链路状态,
以用于激活 LPI LS 定时器。设置时,MAC 使用寄存器 54
18
PLSEN
(SGMII/RGMII/SMII 控制和状态寄存器)的链路状态位和 LPI LS
定时器触发器的位 17(PLS)
。清除时,MAC 忽略寄存器 54 的
链路状态位,只取 PLS 位。如果未选择 RGMII、SGMII 或 SMII
PHY 接口,则此位为 RO 并保留。
物理层链路状态
此位表示物理层的链路状态。MAC 发送器仅当链路状态至少在
17
PLS
LPI LS 定时器指示的时间内处于开启(正常)状态时才断言 LPI
模式。设置时,链路被视为正常(向上),重置时,链路被视为向
下。
LPI 启用
设置时,该位指示 MAC 发送器进入 LPI 状态。复位时,该位指示
16
LPIEN
MAC 退出 LPI 状态并恢复正常传输。当设置 LPITXA 位时,该位
被清除,并且 MAC 由于要传输的新数据包的到达而退出 LPI 状
态。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
772/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
接收 LPI 状态
9
设置时,该位表示 MAC 正在 GMII 或 MII 接口上接收 LPI 数据格
RLPIST
式。
发送 LPI 状态
8
设置时,该位表示 MAC 正在 GMII 或 MII 接口上传输 LPI 数据格
TLPIST
式。
接收 LPI 出口
设置时,该位表示 MAC 接收器已停止接收 GMII 或 MII 接口上的
3
LPI 模式,退出 LPI 状态,并恢复正常接收。读该寄存器,该位被
RLPIEX
清除。注意:如果 MAC 在很短的时间内停止接收 LPI 模式,例
如,CSR 时钟少于 3 个时钟周期,则可能不会设置此位。
接收 LPI 条目
设置时,该位表示 MAC 接收器已接收到 LPI 模式并进入 LPI 状
2
态。通过读入该寄存器,该位被清除。注意:如果 MAC 在很短的
RLPIEN
时间内停止接收 LPI 模式,例如,CSR 时钟少于 3 个时钟周期,
则可能不会设置此位。
发送 LPI 出口
1
设置时,该位表示在用户清除 LPIEN 位且 LPI TW 定时器过期后,
TLPIEX
MAC 发送器退出 LPI 状态。通过读该寄存器,清除该位
发送 LPI 条目
0
设置时,该位表示由于 LPIEN 位的设置,MAC 发送器已进入 LPI
TLPIEN
状态。读该寄存器,该位被清除
LPI_CSR 位域
LPI_TCR (0x34)
29
x
x
x
28
27
26
25
24
23
22
21
x
x
0
0
0
0
0
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
LST
RW
N/A
x
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
TWT
30
RSVD
31
RW
55.5.12
0
LPI_TCR [31:0]
位域
名称
描述
LPI LS 定时器
此字段指定在将 LPI 模式传输到 PHY 之前,PHY 的链路状态应
25-16
LST
处于开启(正常)状态的最短时间(以毫秒为单位)。即使设置了
LPIEN 位,MAC 也不会发送 LPI 模式,除非 LPI LS 定时器达到
编程的终端计数。根据 IEEE 标准的定义,LPI LS 定时器的默认
值为 1000(1 秒)。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
773/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
LPI TW 定时器
15-0
此字段指定 MAC 在停止向 PHY 传输 LPI 模式后和恢复正常传输
TWT
前等待的最短时间(以微秒为单位)。TLPIEX 状态位在该计时器
到期后设置。
LPI_TCR 位域
INTR_STATUS (0x38)
x
x
x
x
x
0
7
6
5
4
3
2
1
0
0
0
x
0
0
0
0
0
RGSMIIIS
x
8
RO
x
9
PCSANCIS
x
10
PCSLCHGIS
x
N/A
x
11
RO
x
12
RO
x
13
PMTIS
x
14
RO
x
15
MMCIS
x
16
MMCRXIS
x
17
RO
x
18
RO
x
19
MMCTXIS
x
20
MMCRXIPIS
x
21
RO
22
RO
23
RSVD
24
N/A
25
TSIS
26
LPIIS
27
RO
28
RO
29
GPIIS
30
RSVD
31
RO
55.5.13
0
0
0
INTR_STATUS [31:0]
位域
名称
描述
GPI 中断状态
启用 GPIO 功能时,当寄存器 56(通用 IO 寄存器)的 GPIS 字
11
GPIIS
段(位 [3:0])上发生任何活动事件(LL 或 LH)且相应的 GPIE
位启用时,设置该位。该位在寄存器 56(通用 IO 寄存器)的读
取通道 0(GPIS)上被清除。未启用 GPIO 功能时,此位保留。
LPI 中断状态
10
LPIIS
启用节能以太网功能时,此位用于 MAC 发射机或接收机中的任
何 LPI 状态进入或退出。该位在读取寄存器 12(LPI 控制和状态
寄存器)的位 0 时被清除。在所有其他模式下,此位保留。
时间戳中断状态
启用高级时间戳功能时,当以下任一条件为真时,将设置此位:
9
TSIS
-系统时间值等于或超过目标时间高电平和低电平寄存器中指定的
值。-秒寄存器中存在溢出。-辅助快照触发器被断言。该位在读取
寄存器 458(时间戳状态寄存器)的位 0 时被清除。
MMC 接收校验和卸载中断状态
7
MMCRXIPIS
当 MMC 接收校验和卸载中断寄存器中产生中断时,该位设置为
高电平。当该中断寄存器中的所有位都被清除时,该位被清除。
MMC 传输中断状态
6
MMCTXIS
当 MMC 发送中断寄存器中产生中断时,该位设置为高电平。当
该中断寄存器中的所有位都被清除时,该位被清除。
MMC 接收中断状态
5
MMCRXIS
当 MMC 接收中断寄存器中产生中断时,该位设置为高电平。当
该中断寄存器中的所有位都被清除时,该位被清除。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
774/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 中断状态
4
当任何位 [7:5] 设置为高时,该位设置为高,并且仅当所有这些位
MMCIS
都为低时才清除。
PMT 中断状态
当在掉电模式下接收到唤醒数据包或远程唤醒帧时,该位被设置
3
(参见 PMT 控制和状态寄存器中的位 5 和位 6)
。由于对 PMT 控
PMTIS
制和状态寄存器的读操作,当两个位 [6:5] 都被清除时,该位被清
除。
PCS 自动协商完成
2
当 TBI、RTBI 或 SGMII PHY 接口(寄存器 49(AN 状态寄存器)
PCSANCIS
中的位 5)中的自动协商完成时,该位被设置。当您对 AN 状态寄
存器执行读操作时,该位会被清除。
PCS 链接状态已更改
1
由于 TBI、RTBI 或 SGMII PHY 接口(寄存器 49(AN 状态寄存
PCSLCHGIS
器)中的第 2 位)中的链路状态发生任何变化而设置该位。当对
AN 状态寄存器执行读操作时,该位会被清除。
RGMII 或 SMII 中断状态
由于 RGMII 或 SMII 接口(寄存器 54(SGMII/RGMII/SMII 控制
0
和状态寄存器)中的第 3 位)的链路状态值的任何变化,该位被
RGSMIIIS
设置。当对 SGMII/RGMII/SMII 控制和状态寄存器执行读操作时,
该位被清除。
INTR_STATUS 位域
INTR_MASK (0x3C)
x
x
x
x
x
x
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
x
N/A
x
10
9
0
0
8
7
x
x
6
5
4
x
x
x
3
0
2
1
0
RGSMIIIM
x
18
RW
x
19
PCSANCIM
x
20
PCSLCHGIM
x
21
RW
22
RW
23
PMTIM
24
RW
25
RSVD
26
N/A
27
TSIM
28
LPIIM
29
RW
30
RSVD
31
RW
55.5.14
0
0
0
INTR_MASK [31:0]
位域
名称
描述
LPI 中断掩码
10
LPIIM
设置后,由于设置了寄存器 14(中断状态寄存器)中的 LPI 中断
状态位,该位将禁用中断信号的断言。
时间戳中断掩码
9
TSIM
设置时,由于设置了寄存器 14(中断状态寄存器)中的时间戳中
断状态位,该位禁用中断信号的断言。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
775/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
PMT 中断掩码
3
设置后,由于设置了寄存器 14(中断状态寄存器)中的 PMT 中
PMTIM
断状态位,该位禁用中断信号的断言。
PCS AN 完成中断掩码
2
设置后,由于设置了寄存器 14(中断状态寄存器)中的 PCS 自
PCSANCIM
动协商完成位,该位将禁用中断信号的断言
PCS 链接状态中断掩码
1
设置后,由于设置了寄存器 14(中断状态寄存器)中的 PCS 链
PCSLCHGIM
接状态更改位,该位会禁用中断信号的断言。
RGMII 或 SMII 中断掩码
0
由于设置了寄存器 14(中断状态寄存器)中的 RGMII 或 SMII 中
RGSMIIIM
断状态位,该位被设置时会禁用中断信号的断言。
INTR_MASK 位域
29
28
27
26
25
24
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
x
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
N/A
RO
0
23
RSVD
30
AE
31
MAC_ADDR_0_HIGH (0x40)
ADDRHI
55.5.15
MAC_ADDR_0_HIGH [31:0]
位域
名称
31
AE
描述
地址使能
该位为只读位,读取值固定为 1
MAC 地址 0 [47:32]
15-0
该字段包含第一个 6 字节 MAC 地址的高 16 位 (47:32)。MAC 使
ADDRHI
用该字段过滤接收到的帧并将 MAC 地址插入到传输流控制(暂
停)帧中。
MAC_ADDR_0_HIGH 位域
55.5.16
MAC_ADDR_0_LOW (0x44)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ADDRLO
31
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
776/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
以太网控制器 ENET
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
MAC_ADDR_0_LOW [31:0]
位域
名称
描述
MAC 地址 0 [31:0]
31-0
该字段包含第一个 6 字节 MAC 地址的低 32 位。MAC 使用它来
ADDRLO
过滤接收到的帧并将 MAC 地址插入到传输流控制(暂停)帧中。
MAC_ADDR_0_LOW 位域
0
0
25
24
23
22
21
20
0
0
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
0
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
ADDRHI
0
26
RW
27
N/A
0
28
MBC
SA
RW
0
29
RW
AE
30
RW
31
MAC_ADDR[HIGH] (0x48 + 0x8 * n)
RSVD
55.5.17
x
MAC_ADDR[HIGH] [31:0]
位域
名称
描述
地址使能
31
AE
当该位置位时,地址过滤模块使用第二个 MAC 地址进行完美过
滤。当该位复位时,地址过滤模块将忽略该地址进行过滤。
源地址
30
SA
当该位被设置时,MAC Address1[47:0] 用于与接收帧的 SA 字段
进行比较。当该位复位时,MAC 地址 1[47:0] 用于与接收帧的 DA
字段进行比较。
掩码字节控制
这些位是用于比较每个 MAC 地址字节的掩码控制位。当设置为
高电平时,MAC 不会将接收到的 DA 或 SA 的相应字节与 MAC
29-24
MBC
地址 1 寄存器的内容进行比较。每个位控制字节的掩码如下:- 位
29:寄存器 18[15:8] - 位 28:寄存器 18[7:0] - 位 27:寄存器
19[31:24] - ... - 位 24:寄存器 19[7:0] 您可以通过屏蔽地址的一
个或多个字节来过滤一组地址(称为组地址过滤)。
15-0
ADDRHI
MAC 地址 1 [47:32]
该字段包含第二个 6 字节 MAC 地址的高 16 位 (47:32)。
MAC_ADDR[HIGH] 位域
55.5.18
MAC_ADDR[LOW] (0x4C + 0x8 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
777/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
ADDRLO
31
以太网控制器 ENET
0
MAC_ADDR[LOW] [31:0]
位域
名称
描述
MAC 地址 1 [31:0]
31-0
该字段包含第二个 6 字节 MAC 地址的低 32 位。在初始化过程之
ADDRLO
后由应用程序加载之前,此字段的内容是未定义的。
MAC_ADDR[LOW] 位域
XMII_CSR (0xD8)
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
5
4
3
0
0
0
2
1
0
0
XMII_CSR [31:0]
位域
名称
描述
检测到错误载波
5
FALSCARDET
该位指示 SMII PHY 是否检测到错误载波 (1’b1)。当为 SGMII 或
RGMII PHY 接口配置 MAC 时,该位被保留。
Jabber 超时
4
JABTO
该位指示接收帧中是否存在 jabber 超时错误 (1’b1)。当为 SGMII
或 RGMII PHY 接口配置 MAC 时,该位被保留。
链接状态
该位指示本地 PHY 和远程 PHY 之间的链路是开启还是关闭。它
3
LNKSTS
给出了 MAC 的 SGMII 和本地 PHY 的 SGMII 之间的链路状态。
状态位是在 SGMII 链路上 MAC 和 PHY 之间的 ANEG 期间从本
地 PHY 接收的。
链接速度
该位指示链路的当前速度:
2-1
LNKSPEED
- 00:2.5 兆赫
- 01:25 兆赫
- 10:为 SMII PHY 接口配置 MAC 时,保留 125 MHz 位 2
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
778/1016
0
LNKMOD
22
RW
23
LNKSPEED
24
RW
25
LNKSTS
26
RW
27
JABTO
28
FALSCARDET
29
RW
30
RSVD
31
RW
55.5.19
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
链接模式
0
该位指示链路的当前操作模式:
LNKMOD
- 1’b0:半双工模式
- 1’b1:全双工模式
XMII_CSR 位域
WDOG_WTO (0xDC)
27
26
25
x
x
x
x
x
x
x
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
15
PWE
RW
N/A
x
16
0
14
13
12
11
10
9
8
7
x
0
0
0
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
0
0
0
WTO
28
RW
29
RSVD
30
RSVD
31
N/A
55.5.20
x
WDOG_WTO [31:0]
位域
名称
描述
可编程看门狗使能
当该位被设置并且“MAC 配置寄存器”的位 23(WD)被复位时,
16
WTO 字段(位 [13:0])被用作接收帧的看门狗超时。当该位清零
PWE
时,接收帧的看门狗超时由“MAC 配置寄存器”中的位 23
(WD)和位 20(JE)的设置控制
看门狗超时
当第 16 位(PWE)置位且“MAC 配置寄存器”的第 23 位
(WD)复位时,该字段用作接收帧的看门狗超时限制字段。如果
13-0
接收帧的长度超过该字段的值,则该帧将被终止并声明为错误帧。
WTO
注意:当位 16 (PWE) 被设置时,该字段中的值应大于 1,522
(0x05F2)。否则,IEEE Std 802.3 指定的有效标记帧将被声明为
错误帧并被丢弃。
WDOG_WTO 位域
MMC_CNTRL (0x100)
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
x
7
RW
N/A
x
8
0
6
x
x
5
4
3
2
0
0
0
0
0
0
0
MMC_CNTRL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
779/1016
1
CNTRST
x
17
RW
x
18
RSTONRD
x
19
CNTSTOPRO
x
20
RW
21
RW
22
CNTFREEZ
23
RW
24
CNTPRST
25
CNTPRSTLVL
26
RW
27
RW
28
RSVD
29
N/A
30
RSVD
31
UCDBC
55.5.21
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
更新丢弃的广播帧的 MMC 计数器
8
UCDBC
设置后,MAC 更新所有相关的 MMC 计数器,用于由于寄存器 1
(MAC 帧过滤器)的位 5 (DBF) 的设置而丢弃的广播帧。重置时,
MMC 计数器不会因丢失的广播帧而更新
MMC 计数器半满预设
当该位为低且位 4 置位时,所有 MMC 计数器都被预设为几乎一
半的值。所有八位字节计数器都预设为 0x7FFF_F800(半满2KBytes) 并且所有帧计数器都被预设为 0x7FFF_FFF0(半满-
5
CNTPRSTLVL
16)
。当该位为高且位 4 被设置时,所有 MMC 计数器都被预设为
几乎满值。所有八位字节计数器都预设为 0xFFFF_F800(满2KBytes) 并且所有的帧计数器都被预设为 0xFFFF_FFF0 (满16)。对于 16 位计数器,几乎一半的预设值是 0x7800 和
0x7FF0,用于相应的八位字节和帧计数器。类似地,16 位计数器
的几乎全部预设值为 0xF800 和 0xFFF0。
计数器预设
当该位被设置时,所有的计数器都根据位 5 被初始化或预置为几
4
CNTPRST
乎满或几乎一半。该位在 1 个时钟周期后自动清零。由于 MMC
计数器变为半满或满,该位与位 5 一起用于调试和测试中断有效
置位。
MMC 计数器冻结
设置此位后,它将所有 MMC 计数器冻结为其当前值。在该位复
3
CNTFREEZ
位为 0 之前,没有 MMC 计数器因任何传输或接收的帧而更新。
如果在读取复位位设置的情况下读取任何 MMC 计数器,则该计
数器也会在此模式下清零。
读取时重置
2
RSTONRD
当该位被设置时,MMC 计数器在读取后复位为零(复位后自清
零)。当读取最低有效字节通道 (Bits[7:0]) 时,计数器会被清除
1
CNTSTOPRO
计数器停止自动重新计数。
当该位被设置时,计数器在达到最大值后不会返回到零。
计数器重置
0
CNTRST
当该位被设置时,所有的计数器都被复位。该位在 1 个时钟周期
后自动清零
MMC_CNTRL 位域
55.5.22
MMC_INTR_RX (0x104)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
780/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RXBCGFIS
RXGOCTIS
RXGBOCTIS
RXGBFRMIS
RW
RW
RW
RW
0
0
RXMCGFIS
0
1
RXCRCERFIS
0
2
RW
0
3
RW
0
4
RXRUNTFIS
0
5
RXALGNERFIS
0
6
RW
0
7
RW
0
RXJABERFIS
RX64OCTGBFIS
RW
0
RW
RX65T127OCTGBFIS
RW
0
RXUSIZEGFIS
RX128T255OCTGBFIS
RW
0
8
RXOSIZEGFIS
RX256T511OCTGBFIS
RW
0
9
RW
RX512T1023OCTGBFIS
0
10
RW
RX1024TMAXOCTGBFIS
RW
11
RW
12
RXUCGFIS
13
RW
14
RXLENERFIS
15
RXORANGEFIS
16
RW
17
RW
18
RXFOVFIS
0
19
RXPAUSFIS
0
20
RW
0
21
RW
22
RXVLANGBFIS
0
23
RW
x
24
RXWDOGFIS
x
N/A
x
25
RXRCVERRFIS
x
26
RW
x
27
RW
x
28
RXCTRLFIS
29
RW
30
RSVD
31
以太网控制器 ENET
0
0
0
0
0
0
0
0
MMC_INTR_RX [31:0]
位域
名称
描述
MMC 接收控制帧计数器中断状态
25
RXCTRLFIS
当 rxctrlframes_g 计数器达到最大值或最大值的一半时,该位被
设置。
24
RXRCVERRFIS
MMC 接收错误帧计数器中断状态
当 rxrcverror 计数器达到最大值或最大值的一半时,该位被设置。
MMC 接收看门狗错误帧计数器中断状态
23
RXWDOGFIS
当 rxwatchdog 错误计数器达到最大值或最大值的一半时,该位被
设置。
MMC 接收 VLAN 好帧和坏帧计数器中断状态
22
RXVLANGBFIS
当 rxvlanframes_gb 计数器达到最大值或最大值的一半时,该位
被设置。
MMC 接收 FIFO 溢出帧计数器中断状态
21
RXFOVFIS
当 rxfifooverflow 计数器达到最大值或最大值的一半时,该位被设
置。
MMC 接收暂停帧计数器中断状态
20
RXPAUSFIS
当 rxpauseframes 计数器达到最大值或最大值的一半时,会设置
该位。
MMC 接收超出范围错误帧计数器中断状态。
19
RXORANGEFIS
当 rxoutofrangetype 计数器达到最大值或最大值的一半时,该位
被设置。
MMC 接收长度错误帧计数器中断状态
18
RXLENERFIS
当 rxlengtherror 计数器达到最大值或最大值的一半时,该位被设
置。
MMC 接收单播良好帧计数器中断状态
17
RXUCGFIS
当 rxunicastframes_g 计数器达到最大值或最大值的一半时,该
位被设置。
16
RX1024TMAXOCT
GBFIS
MMC 接收 1024 到最大八位字节好坏帧计数器中断状态。
当 rx1024tomaxoctets_gb 计数器达到最大值或最大值的一半时,
会设置该位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
781/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
15
14
13
12
名称
RX512T1023OCT
GBFIS
RX256T511OCTG
BFIS
RX128T255OCTG
BFIS
RX65T127OCTGB
FIS
以太网控制器 ENET
描述
MMC 接收 512 到 1023 个八位字节好坏帧计数器中断状态
当 rx512to1023octets_gb 计数器达到最大值或最大值的一半时,
会设置该位。
MMC 接收 256 到 511 个八位字节好坏帧计数器中断状态
当 rx256to511octets_gb 计数器达到最大值或最大值的一半时,
会设置该位。
MMC 接收 128 到 255 个八位字节好坏帧计数器中断状态
当 rx128to255octets_gb 计数器达到最大值或最大值的一半时,
会设置该位。
MMC 接收 65 到 127 个八位字节好坏帧计数器中断状态
当 rx65to127octets_gb 计数器达到最大值或最大值的一半时,会
设置该位。
MMC 接收 64 个八位字节好坏帧计数器中断状态
11
RX64OCTGBFIS
当 rx64octets_gb 计数器达到最大值或最大值的一半时,会设置
该位。
MMC 接收超大好帧计数器中断状态
10
RXOSIZEGFIS
当 rxoversize_g 计数器达到最大值或最大值的一半时,该位被设
置
MMC 接收尺寸过小良好帧计数器中断状态
9
RXUSIZEGFIS
当 rxundersize_g 计数器达到最大值或最大值的一半时,该位被
设置。
MMC 接收 Jabber 错误帧计数器中断状态
8
RXJABERFIS
当 rxjabbererror 计数器达到最大值或最大值的一半时,该位被设
置。
7
RXRUNTFIS
MMC 接收矮帧计数器中断状态
当 rxrunterror 计数器达到最大值或最大值的一半时,该位被设置
MMC 接收对齐错误帧计数器中断状态
6
RXALGNERFIS
当 rxalignmenterror 计数器达到最大值或最大值的一半时,该位
被设置。
5
RXCRCERFIS
MMC 接收 CRC 错误帧计数器中断状态
当 rxcrcerror 计数器达到最大值或最大值的一半时,该位被设置
MMC 接收多播良好帧计数器中断状态
4
RXMCGFIS
当 rxmulticastframes_g 计数器达到最大值或最大值的一半时,设
置该位。
MMC 接收广播良好帧计数器中断状态
3
RXBCGFIS
当 rxbroadcastframes_g 计数器达到最大值或最大值的一半时,
该位被设置。
MMC 接收良好八位字节计数器中断状态
2
RXGOCTIS
当 rxoctetcount_g 计数器达到最大值或最大值的一半时,该位被
设置
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
782/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 收到良好的坏八位字节计数器中断状态
1
当 rxoctetcount_gb 计数器达到最大值或最大值的一半时,该位被
RXGBOCTIS
设置。
MMC 接收好坏帧计数器中断状态
0
当 rxframecount_gb 计数器达到最大值或最大值的一半时,该位
RXGBFRMIS
被设置。
MMC_INTR_RX 位域
MMC_INTR_TX (0x108)
TXBCGFIS
TXGBFRMIS
TXGBOCTIS
RW
RW
RW
0
0
TXMCGFIS
0
1
RW
0
2
TX64OCTGBFIS
0
3
TX65T127OCTGBFIS
0
4
RW
0
5
RW
0
TX256T511OCTGBFIS
0
TX128T255OCTGBFIS
0
6
RW
0
7
RW
0
TX512T1023OCTGBFIS
0
RW
TXMCGBFIS
RW
0
TXUCGBFIS
TXBCGBFIS
RW
0
TX1024TMAXOCTGBFIS
TXUFLOWERFIS
RW
0
8
RW
TXSCOLGFIS
RW
0
9
RW
TXDEFFIS
10
TXMCOLGFIS
11
RW
12
RW
13
TXLATCOLFIS
14
RW
15
TXEXCOLFIS
16
TXCARERFIS
17
RW
18
RW
0
19
TXGOCTIS
0
20
TXGFRMIS
0
21
RW
22
RW
0
23
TXEXDEFFIS
x
24
RW
x
N/A
x
25
TXPAUSFIS
x
26
TXVLANGFIS
x
27
RW
x
28
RW
29
TXOSIZEGFIS
30
RSVD
31
RW
55.5.23
0
0
0
0
0
0
MMC_INTR_TX [31:0]
位域
名称
描述
MMC 传输超大好帧计数器中断状态
25
TXOSIZEGFIS
当 txoversize_g 计数器达到最大值或最大值的一半时,该位被设
置。
MMC 传输 VLAN 良好帧计数器中断状态
24
TXVLANGFIS
当 txvlanframes_g 计数器达到最大值或最大值的一半时,该位被
设置。
MMC 传输暂停帧计数器中断状态
23
TXPAUSFIS
当 txpauseframeserror 计数器达到最大值或最大值的一半时,该
位被设置。
MMC 传输过多延迟帧计数器中断状态
22
TXEXDEFFIS
当 txexcessdef 计数器达到最大值或最大值的一半时,该位被设
置。
MMC 传输良好帧计数器中断状态
21
TXGFRMIS
当 txframecount_g 计数器达到最大值或最大值的一半时,该位被
设置。
MMC 传输良好八位字节计数器中断状态
20
TXGOCTIS
当 txoctetcount_g 计数器达到最大值或最大值的一半时,该位被
设置。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
783/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 传输载波错误帧计数器中断状态
19
TXCARERFIS
当 txcarriererror 计数器达到最大值或最大值的一半时,该位被设
置。
18
TXEXCOLFIS
17
TXLATCOLFIS
16
TXDEFFIS
15
TXMCOLGFIS
14
TXSCOLGFIS
MMC 发送过度冲突帧计数器中断状态
当 txexessecol 计数器达到最大值或最大值的一半时,该位被设置
MMC 传输延迟冲突帧计数器中断状态
当 txlatecol 计数器达到最大值的一半或最大值时,设置此位。
MMC 传输延迟帧计数器中断状态
当 txdeferred 计数器达到最大值的一半或最大值时设置此位
MMC 传输多重冲突良好帧计数器中断状态
当 txmulticol_g 计数器达到最大值的一半或最大值时,设置此位。
MMC 传输单冲突良好帧计数器中断状态
当 txsinglecol_g 计数器达到最大值的一半或最大值时,设置此位。
MMC 传输下溢错误帧计数器中断状态
13
TXUFLOWERFIS
当 txunderflowerror 计数器达到最大值的一半或最大值时,设置
此位。
12
TXBCGBFIS
MMC 传输广播好坏帧计数器中断状态
当 TXBU gb 计数器达到最大值或最大值的一半时,设置此位。
MMC 传输多播好坏帧计数器中断状态
11
TXMCGBFIS
当 txmulticastframes_gb 计数器达到最大值的一半或最大值时,
设置该位。
MMC 传输单播好坏帧计数器中断状态
10
TXUCGBFIS
当 TXUNICASTU gb 计数器达到最大值或最大值的一半时,设置
此位
9
8
7
6
5
TX1024TMAXOCT
GBFIS
TX512T1023OCT
GBFIS
TX256T511OCTG
BFIS
TX128T255OCTG
BFIS
TX65T127OCTGB
FIS
MMC 传输 1024 到最大八位字节好坏帧计数器中断状态
当 TX1024TOMAXOCETS_gb 计数器达到最大值或最大值的一
半时,设置此位。
MMC 传输 512 到 1023 八位字节好坏帧计数器中断状态
当 TX512 至 1023 八位字节 _gb 计数器达到最大值或最大值的一
半时,设置此位
MMC 传输 256 到 511 八位字节好坏帧计数器中断状态
当 TX256 至 511Octets_gb 计数器达到最大值或最大值的一半时,
设置此位。
MMC 传输 128 到 255 八位字节好坏帧计数器中断状态
当 tx128to255octets_gb 计数器达到最大值或最大值的一半时,
设置此位。
MMC 传输 65 到 127 八位字节好坏帧计数器中断状态
当 TX65to127 八位字节 _gb 计数器达到最大值的一半时,以及达
到最大值时,设置此位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
784/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 传输 64 个八位字节好坏帧计数器中断状态
4
当 tx64octets_gb 计数器达到最大值的一半或最大值时,设置此
TX64OCTGBFIS
位。
MMC 传输多播良好帧计数器中断状态
3
当 txmulticastframes\u g 计数器达到最大值的一半或最大值时,
TXMCGFIS
设置此位
MMC 传输广播良好帧计数器中断状态
2
当 txbroadcastframes__g 计数器达到最大值的一半或最大值时,
TXBCGFIS
设置此位
MMC 传输好坏帧计数器中断状态
1
当 txframecount_gb 计数器达到最大值的一半或最大值时,设置
TXGBFRMIS
此位。
MMC 传输良好不良八位字节计数器中断状态
0
当 TXOTETCOUNT_gb 计数器达到最大值的一半或最大值时,
TXGBOCTIS
设置此位
MMC_INTR_TX 位域
MMC_INTR_MASK_RX (0x10C)
RXMCGFIM
RXBCGFIM
RXGOCTIM
RXGBOCTIM
RSVD
RW
RW
RW
N/A
0
RXCRCERFIM
1
RW
2
RW
3
RXRUNTFIM
0
4
RXALGNERFIM
0
5
RW
0
6
RW
RXJABERFIM
0
RW
0
7
RXUSIZEGFIM
0
8
RXOSIZEGFIM
0
9
RW
0
10
RW
0
RX64OCTGBFIM
0
RW
0
RX65T127OCTGBFIM
RX256T511OCTGBFIM
RW
0
11
RX128T255OCTGBFIM
RX512T1023OCTGBFIM
RW
0
12
RW
RX1024TMAXOCTGBFIM
RW
0
13
RW
RXUCGFIM
14
RW
15
RXLENERFIM
16
RXORANGEFIM
17
RW
18
RW
0
19
RXFOVFIM
0
20
RXPAUSFIM
0
21
RW
22
RW
0
23
RXVLANGBFIM
x
24
RW
x
N/A
x
25
RXWDOGFIM
x
26
RXRCVERRFIM
x
27
RW
x
28
RW
29
RXCTRLFIM
30
RSVD
31
RW
55.5.24
0
0
0
0
0
0
0
x
MMC_INTR_MASK_RX [31:0]
位域
名称
描述
MMC 接收控制帧计数器中断掩码
25
RXCTRLFIM
当 rxctrlframes_g 计数器达到最大值或最大值的一半时,设置该
位会屏蔽中断
MMC 接收错误帧计数器中断掩码
24
RXRCVERRFIM
当 rxrcverror 计数器达到最大值或最大值的一半时,设置该位会
屏蔽中断
MMC 接收看门狗错误帧计数器中断掩码
23
RXWDOGFIM
当 rxwatchdog 计数器达到最大值的一半或最大值时,设置该位会
屏蔽中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
785/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 接收 VLAN 好坏帧计数器中断掩码
22
RXVLANGBFIM
设置此位会在 RxVLANU gb 计数器达到最大值或最大值的一半时
屏蔽中断
MMC 接收 FIFO 溢出帧计数器中断掩码
21
RXFOVFIM
当 rxfifooverflow 计数器达到最大值或最大值的一半时,设置此位
会屏蔽中断
MMC 接收暂停帧计数器中断掩码
20
RXPAUSFIM
当 rxpauseframes 计数器达到最大值或最大值的一半时,设置此
位会屏蔽中断
MMC 接收超出范围错误帧计数器中断掩码
19
RXORANGEFIM
当 RxOutofranGetType 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
MMC 接收长度错误帧计数器中断掩码
18
RXLENERFIM
当 rxlengtherror 计数器达到最大值的一半或最大值时,设置该位
会屏蔽中断
MMC 接收单播良好帧计数器中断掩码
17
RXUCGFIM
当 rxunicastframes__g 计数器达到最大值或最大值的一半时,设
置该位会屏蔽中断
16
15
14
13
12
RX1024TMAXOCT
GBFIM
RX512T1023OCT
GBFIM
RX256T511OCTG
BFIM
RX128T255OCTG
BFIM
RX65T127OCTGB
FIM
MMC 接收 1024 到最大八位字节好坏帧计数器中断掩码。
当 RX1024TOMAXOCETS_gb 计数器达到最大值或最大值的一
半时,设置该位会屏蔽中断
MMC 接收 512 到 1023 八位字节好坏帧计数器中断掩码
当 RX512 至 1023 八位字节 _gb 计数器达到最大值的一半或最大
值时,设置此位会屏蔽中断
MMC 接收 256 到 511 八位字节好坏帧计数器中断掩码
当 rx256to511octets_gb 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 接收 128 到 255 个八位字节好坏帧计数器中断掩码
当 rx128to255octets_gb 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 接收 65 至 127 八位字节好坏帧计数器中断掩码
当 RX65to127 八位字节 _gb 计数器达到最大值或最大值的一半
时,设置此位会屏蔽中断
“MMC 接收 64 个八位字节好坏帧计数器中断掩码
11
RX64OCTGBFIM
当 rx64octets_gb 计数器达到最大值或最大值的一半时,设置此
位会屏蔽中断
MMC 接收超大良好帧计数器中断掩码
10
RXOSIZEGFIM
当 RxVersionize_g 计数器达到最大值或最大值的一半时,设置此
位会屏蔽中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
786/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 接收尺寸过小的良好帧计数器中断掩码
9
当 rxundersize_g 计数器达到最大值或最大值的一半时,设置此
RXUSIZEGFIM
位会屏蔽中断
MMC 接收 Jabber 错误帧计数器中断掩码
8
当 RXJABBERROR 计数器达到最大值或最大值的一半时,设置
RXJABERFIM
该位会屏蔽中断
MMC 接收短帧计数器中断掩码
7
当 rxrunterror 计数器达到最大值的一半或最大值时,设置此位会
RXRUNTFIM
屏蔽中断
MMC 接收对齐错误帧计数器中断掩码
6
设置此位会在 RXAalignmentError 计数器达到最大值的一半或最
RXALGNERFIM
大值时屏蔽中断
MMC 接收 CRC 错误帧计数器中断掩码
5
当 RxRCERROR 计数器达到最大值的一半或最大值时,设置此
RXCRCERFIM
位会屏蔽中断
MMC 接收多播良好帧计数器中断掩码
4
当 rxmulticastframes_g 计数器达到最大值或最大值的一半时,设
RXMCGFIM
置此位会屏蔽中断
MMC 接收广播良好帧计数器中断掩码
3
当 rxbroadcastframes__g 计数器达到最大值或最大值的一半时,
RXBCGFIM
设置此位会屏蔽中断
MMC 接收良好的八位计数器中断掩码
2
当 rxoctetcount_g 计数器达到最大值或最大值的一半时,设置该
RXGOCTIM
位会屏蔽中断
MMC 接收好坏八位计数器中断掩码。
1
当 rxoctetcount_gb 计数器达到最大值或最大值的一半时,设置此
RXGBOCTIM
位会屏蔽中断
MMC_INTR_MASK_RX 位域
MMC_INTR_MASK_TX (0x110)
TXBCGFIM
TXGBOCTIM
RW
0
TXGBFRMIM
0
RW
0
RW
0
0
0
0
0
0
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
787/1016
0
TXMCGFIM
0
1
RW
0
2
TX64OCTGBFIM
0
3
TX65T127OCTGBFIM
0
4
RW
0
5
RW
0
TX256T511OCTGBFIM
0
TX128T255OCTGBFIM
0
RW
0
RW
0
TX512T1023OCTGBFIM
0
RW
TXMCGBFIM
RW
0
6
TXUCGBFIM
TXBCGBFIM
RW
0
7
TX1024TMAXOCTGBFIM
TXUFLOWERFIM
RW
0
8
RW
TXSCOLGFIM
RW
0
9
RW
TXDEFFIM
10
TXMCOLGFIM
11
RW
12
RW
13
TXLATCOLFIM
14
RW
15
TXEXCOLFIM
16
TXCARERFIM
17
RW
18
RW
19
TXGOCTIM
20
TXGFRMIM
21
RW
22
RW
0
23
TXEXDEFFIM
x
24
RW
x
N/A
x
25
TXPAUSFIM
x
26
TXVLANGFIM
x
27
RW
x
28
RW
29
TXOSIZEGFIM
30
RSVD
31
RW
55.5.25
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
以太网控制器 ENET
14
13
12
11
10
9
8
7
6
5
4
3
2
1
MMC_INTR_MASK_TX [31:0]
位域
名称
描述
MMC 传输超大良好帧计数器中断掩码
25
TXOSIZEGFIM
当 txoversize_g 计数器达到最大值或最大值的一半时,设置该位
会屏蔽中断
MMC 传输 VLAN 良好帧计数器中断掩码
24
TXVLANGFIM
当 TXVLAN 计数器达到最大值或最大值的一半时,设置此位会屏
蔽中断
MMC 传输暂停帧计数器中断掩码
23
TXPAUSFIM
当 txpauseframes 计数器达到最大值的一半或最大值时,设置此
位会屏蔽中断
MMC 传输过度延迟帧计数器中断掩码
22
TXEXDEFFIM
当 txexcessdef 计数器达到最大值的一半或最大值时,设置此位
会屏蔽中断
MMC 传输良好的帧计数器中断掩码
21
TXGFRMIM
当 txframecount_g 计数器达到最大值或最大值的一半时,设置此
位会屏蔽中断
MMC 传输良好八位计数器中断掩码
20
TXGOCTIM
当 TXOTETCOUNT_g 计数器达到最大值或最大值的一半时,设
置该位会屏蔽中断。
MMC 传输载波错误帧计数器中断掩码
19
TXCARERFIM
当 txcarriererror 计数器达到最大值的一半或最大值时,设置此位
会屏蔽中断
MMC 传输过度冲突帧计数器中断掩码
18
TXEXCOLFIM
当 txexcesscol 计数器达到最大值的一半或最大值时,设置此位
会屏蔽中断
MMC 传输延迟冲突帧计数器中断掩码
17
TXLATCOLFIM
当 txlatecol 计数器达到最大值的一半或最大值时,设置此位会屏
蔽中断
MMC 传输延迟帧计数器中断掩码
16
TXDEFFIM
设置此位会在 txdeferred 计数器达到最大值的一半或最大值时屏
蔽中断
MMC 传输多重冲突良好帧计数器中断掩码
15
TXMCOLGFIM
当 txmulticol_g 计数器达到最大值或最大值的一半时,设置该位
会屏蔽中断
MMC 传输单冲突良好帧计数器中断掩码
14
TXSCOLGFIM
当 txsinglecol_g 计数器达到最大值或最大值的一半时,设置该位
会屏蔽中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
788/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 传输下溢错误帧计数器中断掩码
13
TXUFLOWERFIM
当 txunderflowerror 计数器达到最大值或最大值的一半时,设置
此位会屏蔽中断
MMC 传输广播好坏帧计数器中断掩码
12
TXBCGBFIM
当 TXBROADCASTU gb 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 传输多播好坏帧计数器中断掩码
11
TXMCGBFIM
当 txmulticastframes_gb 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 传输单播好坏帧计数器中断掩码
10
TXUCGBFIM
当 txunicastframes_gb 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
9
8
7
6
5
TX1024TMAXOCT
GBFIM
TX512T1023OCT
GBFIM
TX256T511OCTG
BFIM
TX128T255OCTG
BFIM
TX65T127OCTGB
FIM
输 1024 到最大八位字节好坏帧计数器中断掩码
当 TX1024TOMAXOCETS_gb 计数器达到最大值或最大值的一
半时,设置该位会屏蔽中断
MMC 传输 512 到 1023 八位字节好坏帧计数器中断掩码
当 tx512to1023octets_gb 计数器达到最大值的一半或最大值时,
设置此位会屏蔽中断
MMC 传输 256 到 511 八位字节好坏帧计数器中断掩码
当 tx256to511octets_gb 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 传输 128 到 255 八位字节好坏帧计数器中断掩码
当 tx128to255octets_gb 计数器达到最大值的一半或最大值时,
设置此位会屏蔽中断
MMC 传输 65 到 127 八位字节好坏帧计数器中断掩码
当 tx65to127octets_gb 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
MMC 传输 64 个八位字节好坏帧计数器中断掩码
4
TX64OCTGBFIM
当 tx64octets_gb 计数器达到最大值或最大值的一半时,设置此
位会屏蔽中断
MMC 传输多播良好帧计数器中断掩码
3
TXMCGFIM
当 txmulticastframes_g 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
MMC 传输广播良好帧计数器中断掩码
2
TXBCGFIM
当 txbroadcastframes__g 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 传输好坏帧计数器中断掩码
1
TXGBFRMIM
当 txframecount_gb 计数器达到最大值或最大值的一半时,设置
此位会屏蔽中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
789/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 传输好坏八位计数器中断掩码
0
当 TXOTETCOUNT_gb 计数器达到最大值或最大值的一半时,
TXGBOCTIM
设置此位会屏蔽中断
MMC_INTR_MASK_TX 位域
55.5.26
TXOCTETCOUNT_GB (0x114)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
BYTECNT
31
0
TXOCTETCOUNT_GB [31:0]
位域
名称
描述
31-0
BYTECNT
在好帧和坏帧中传输的字节数,不包括前导和重试字节。
TXOCTETCOUNT_GB 位域
55.5.27
TXFRAMECOUNT_GB (0x118)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
TXFRAMECOUNT_GB [31:0]
位域
名称
描述
31-0
FRMCNT
传输的好帧和坏帧的数量,不包括重试帧。
TXFRAMECOUNT_GB 位域
55.5.28
TXBROADCASTFRAMES_G (0x11C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
790/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
以太网控制器 ENET
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
TXBROADCASTFRAMES_G [31:0]
位域
名称
描述
31-0
FRMCNT
传输的良好广播帧数。
TXBROADCASTFRAMES_G 位域
55.5.29
TXMLTICASTFRAMES_G (0x120)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
TXMLTICASTFRAMES_G [31:0]
位域
名称
描述
31-0
FRMCNT
传输的良好多播帧数。
TXMLTICASTFRAMES_G 位域
55.5.30
TX64OCTETS_GB (0x124)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
TX64OCTETS_GB [31:0]
位域
名称
描述
31-0
FRMCNT
传输的长度为 64 字节的好帧和坏帧的数量,不包括前导和重试
帧。
TX64OCTETS_GB 位域
31
30
TX65TO127OCTETS_GB (0x128)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
FRMCNT
55.5.31
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
791/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
以太网控制器 ENET
0
TX65TO127OCTETS_GB [31:0]
位域
名称
描述
31-0
FRMCNT
传输的长度在 65 到 127(含)字节之间的好帧和坏帧的数量,不
包括前导和重试帧。
TX65TO127OCTETS_GB 位域
55.5.32
TX128TO255OCTETS_GB (0x12C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
TX128TO255OCTETS_GB [31:0]
位域
名称
描述
31-0
FRMCNT
传输的长度在 128 到 255(含)字节之间的好帧和坏帧的数量,
不包括前导和重试帧
TX128TO255OCTETS_GB 位域
55.5.33
TX256TO511OCTETS_GB (0x130)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
TX256TO511OCTETS_GB [31:0]
位域
名称
31-0
FRMCNT
描述
传输的长度在 256 到 511(含)字节之间的好帧和坏帧的数量,
不包括前导和重试帧
TX256TO511OCTETS_GB 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
792/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
55.5.34
以太网控制器 ENET
TX512TO1023OCTETS_GB (0x134)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
TX512TO1023OCTETS_GB [31:0]
位域
名称
描述
31-0
FRMCNT
传输的长度在 512 到 1,023(含)字节之间的好帧和坏帧的数量,
不包括前导和重试帧
TX512TO1023OCTETS_GB 位域
55.5.35
TX1024TOMAXOCTETS_GB (0x138)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
TX1024TOMAXOCTETS_GB [31:0]
位域
名称
描述
31-0
FRMCNT
传输的长度在 1,024 和 maxsize(含)字节之间的好帧和坏帧的
数量,不包括前导和重试帧
TX1024TOMAXOCTETS_GB 位域
55.5.36
RXFRAMECOUNT_GB (0x180)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
0
RXFRAMECOUNT_GB [31:0]
位域
名称
31-0
FRMCNT
描述
收到的好帧和坏帧的数量
RXFRAMECOUNT_GB 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
793/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
RXIPV4FRAGFIM
RXIPV4NOPAYFIM
RXIPV4HERFIM
RXIPV4GFIM
RW
RW
RW
RW
0
RXIPV6GFIM
1
RXIPV4UDSBLFIM
2
RW
3
RW
4
RXIPV6HERFIM
0
5
RXIPV6NOPAYFIM
0
6
RW
RXUDPGFIM
RW
0
7
RW
RXTCPGFIM
0
RXUDPERFIM
0
RW
0
8
RW
x
RXTCPERFIM
x
9
RW
0
10
RXICMPGFIM
0
11
RXICMPERFIM
0
12
RW
0
13
RW
RXIPV4GOIM
RW
0
14
RSVD
RXIPV4HEROIM
RW
0
15
N/A
RXIPV4FRAGOIM
RXIPV4NOPAYOIM
16
RW
17
RW
18
RXIPV6GOIM
0
19
RXIPV4UDSBLOIM
0
20
RW
0
21
RW
0
RXIPV6HEROIM
0
RW
0
22
RXUDPGOIM
RXUDPEROIM
RW
0
23
RXIPV6NOPAYOIM
RXTCPGOIM
0
24
RW
RXTCPEROIM
RW
25
RW
26
RXICMPGOIM
27
RW
x
28
RXICMPEROIM
N/A
x
29
RW
30
RSVD
31
MMC_IPC_INTR_MASK_RX (0x200)
RW
55.5.37
以太网控制器 ENET
0
0
0
0
0
0
0
0
MMC_IPC_INTR_MASK_RX [31:0]
位域
名称
描述
MMC 接收 ICMP 错误八位字节计数器中断掩码
29
RXICMPEROIM
当 rxicmp_err_octets 计数器达到最大值或最大值的一半时,设置
该位会屏蔽中断
MMC 接收 ICMP 好八位字节计数器中断掩码
28
RXICMPGOIM
当 rxicmp_gd_octets 计数器达到最大值或最大值的一半时,设置
该位会屏蔽中断
MMC 接收 TCP 错误八位字节计数器中断掩码
27
RXTCPEROIM
当 rxtcp_err_octets 计数器达到最大值或最大值的一半时,设置
该位会屏蔽中断
MMC 接收 TCP 好八位字节计数器中断掩码
26
RXTCPGOIM
当 rxtcp_gd_octets 计数器达到最大值或最大值的一半时,设置该
位会屏蔽中断
MMC 接收 UDP 好八位字节计数器中断掩码
25
RXUDPEROIM
当 rxudp_err_octets 计数器达到最大值或最大值的一半时,设置
该位会屏蔽中断
MMC 接收 IPV6 无有效载荷八位字节计数器中断掩码
24
RXUDPGOIM
当 rxudp_gd_octets 计数器达到最大值或最大值的一半时,设置
该位会屏蔽中断
23
RXIPV6NOPAYOI
M
MMC 接收 IPV6 报头错误八位字节计数器中断掩码
当 rxipv6_nopay_octets 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 接收 IPV6 良好八位字节计数器中断掩码
22
RXIPV6HEROIM
当 rxipv6_hdrerr_octets 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
MMC 接收 IPV6 良好八位字节计数器中断掩码
21
RXIPV6GOIM
当 rxipv6_gd_octets 计数器达到最大值或最大值的一半时,设置
此位会屏蔽中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
794/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
20
名称
RXIPV4UDSBLOI
M
以太网控制器 ENET
描述
MMC 接收 IPV4 UDP 校验和禁用八位字节计数器中断掩码
当 rxipv4_udsbl_octets 计数器达到最大值或最大值的一半时,设
置该位会屏蔽中断
MMC 接收 IPV4 分段八位字节计数器中断掩码
19
RXIPV4FRAGOIM
当 rxipv4_frag_octets 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
18
RXIPV4NOPAYOI
M
MMC 接收 IPV4 无有效载荷八位字节计数器中断掩码
当 rxipv4_nopay_octets 计数器达到最大值或最大值的一半时,
设置此位会屏蔽中断
MMC 接收 IPV4 报头错误八位字节计数器中断掩码
17
RXIPV4HEROIM
当 rxipv4_hdrerr_octets 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
MMC 接收 IPV4 良好八位字节计数器中断掩码
16
RXIPV4GOIM
当 rxipv4_gd_octets 计数器达到最大值或最大值的一半时,设置
此位会屏蔽中断
MMC 接收 ICMP 错误帧计数器中断掩码
13
RXICMPERFIM
当 rxicmp_err_frms 计数器达到最大值或最大值的一半时,设置
该位会屏蔽中断
MMC 接收 ICMP 良好帧计数器中断掩码
12
RXICMPGFIM
当 rxicmp_gd_frms 计数器达到最大值或最大值的一半时,设置该
位会屏蔽中断
MMC 接收 TCP 错误帧计数器中断掩码
11
RXTCPERFIM
当 rxtcp_err_frms 计数器达到最大值或最大值的一半时,设置该
位会屏蔽中断
MMC 接收 TCP 良好帧计数器中断掩码
10
RXTCPGFIM
当 rxtcp_gd_frms 计数器达到最大值或最大值的一半时,设置该
位会屏蔽中断
MMC 接收 UDP 错误帧计数器中断掩码
9
RXUDPERFIM
当 rxudp_err_frms 计数器达到最大值或最大值的一半时,设置该
位会屏蔽中断
MMC 接收 UDP 良好帧计数器中断掩码
8
RXUDPGFIM
当 rxudp_gd_frms 计数器达到最大值或最大值的一半时,设置该
位会屏蔽中断
7
RXIPV6NOPAYFI
M
MMC 接收 IPV6 无有效载荷帧计数器中断掩码
当 rxipv6_nopay_frms 计数器达到最大值或最大值的一半时,设
置此位会屏蔽中断
MMC 接收 IPV6 报头错误帧计数器中断掩码
6
RXIPV6HERFIM
当 rxipv6_hdrerr_frms 计数器达到最大值或最大值的一半时,设
置该位会屏蔽中断
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
795/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 接收 IPV6 良好帧计数器中断掩码
5
当 rxipv6_gd_frms 计数器达到最大值或最大值的一半时,设置该
RXIPV6GFIM
位会屏蔽中断
MMC 接收 IPV4 UDP 校验和禁用帧计数器中断掩码
RXIPV4UDSBLFI
4
当 rxipv4_udsbl_frms 计数器达到最大值或最大值的一半时,设置
M
该位会屏蔽中断
MMC 接收 IPV4 分段帧计数器中断掩码
3
当 rxipv4_frag_frms 计数器达到最大值或最大值的一半时,设置
RXIPV4FRAGFIM
此位会屏蔽中断
MMC 接收 IPV4 无有效载荷帧计数器中断掩码
RXIPV4NOPAYFI
2
当 rxipv4_nopay_frms 计数器达到最大值或最大值的一半时,设
M
置此位会屏蔽中断
MMC 接收 IPV4 报头错误帧计数器中断掩码
1
当 rxipv4_hdrerr_frms 计数器达到最大值或最大值的一半时,设
RXIPV4HERFIM
置该位会屏蔽中断
MMC 接收 IPV4 良好帧计数器中断掩码
0
当 rxipv4_gd_frms 计数器达到最大值或最大值的一半时,设置此
RXIPV4GFIM
位会屏蔽中断
MMC_IPC_INTR_MASK_RX 位域
RXIPV4FRAGFIS
RXIPV4NOPAYFIS
RXIPV4HERFIS
RXIPV4GFIS
RW
RW
RW
RW
0
RXIPV6GFIS
1
RXIPV4UDSBLFIS
2
RW
3
RW
4
RXIPV6HERFIS
0
5
RXIPV6NOPAYFIS
0
6
RW
RXUDPGFIS
RW
0
7
RW
RXTCPGFIS
0
RXUDPERFIS
0
8
RW
0
9
RW
x
RXTCPERFIS
x
RW
0
10
RXICMPGFIS
0
11
RXICMPERFIS
0
12
RW
0
13
RW
RXIPV4GOIS
RW
0
14
RSVD
RXIPV4HEROIS
RW
0
15
N/A
RXIPV4FRAGOIS
RXIPV4NOPAYOIS
16
RW
17
RW
18
RXIPV6GOIS
0
19
RXIPV4UDSBLOIS
0
20
RW
0
21
RW
0
RXIPV6HEROIS
0
RW
0
22
RXUDPGOIS
RXUDPEROIS
RW
0
23
RXIPV6NOPAYOIS
RXTCPGOIS
0
24
RW
RXTCPEROIS
RW
25
RW
26
RXICMPGOIS
27
RW
x
28
RXICMPEROIS
N/A
x
29
RW
30
RSVD
31
MMC_IPC_INTR_RX (0x208)
RW
55.5.38
0
0
0
0
0
0
0
0
MMC_IPC_INTR_RX [31:0]
位域
名称
描述
MMC 接收 ICMP 错误八位字节计数器中断状态
29
RXICMPEROIS
当 rxicmp_err_octets 计数器达到最大值或最大值的一半时,该位
被设置。
MMC 接收 ICMP 良好八位字节计数器中断状态
28
RXICMPGOIS
当 rxicmp_gd_octets 计数器达到最大值或最大值的一半时,该位
被设置
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
796/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 接收 TCP 错误八位字节计数器中断状态
27
RXTCPEROIS
当 rxtcp_err_octets 计数器达到最大值或最大值的一半时,该位
被设置
26
RXTCPGOIS
MMC 接收 TCP 好八位字节计数器中断状态
当 rxtcp_gd_octets 计数器达到最大值的一半或最大值时设置该位
MMC 接收 UDP 错误八位字节计数器中断状态
25
RXUDPEROIS
当 rxudp_err_octets 计数器达到最大值或最大值的一半时,设置
该位
MMC 接收 UDP 好八位字节计数器中断状态
24
RXUDPGOIS
当 rxudp_gd_octets 计数器达到最大值或最大值的一半时,该位
被设置
23
RXIPV6NOPAYOI
S
MMC 接收 IPV6 无有效载荷八位字节计数器中断状态
当 rxipv6_nopay_octets 计数器达到最大值或最大值的一半时,
会设置该位
MMC 接收 IPV6 报头错误八位字节计数器中断状态
22
RXIPV6HEROIS
当 rxipv6_hdrerr_octets 计数器达到最大值或最大值的一半时,会
设置该位
MMC 接收 IPV6 良好八位字节计数器中断状态
21
RXIPV6GOIS
当 rxipv6_gd_octets 计数器达到最大值或最大值的一半时,会设
置该位
20
RXIPV4UDSBLOI
S
MMC 接收 IPV4 UDP 校验和禁用八位字节计数器中断状态
当 rxipv4_udsbl_octets 计数器达到最大值或最大值的一半时,会
设置该位
MMC 接收 IPV4 分段八位字节计数器中断状态
19
RXIPV4FRAGOIS
当 rxipv4_frag_octets 计数器达到最大值或最大值的一半时,会
设置该位
18
RXIPV4NOPAYOI
S
MMC 接收 IPV4 无有效负载八位字节计数器中断状态
当 rxipv4_nopay_octets 计数器达到最大值或最大值的一半时,
会设置该位
MMC 接收 IPV4 报头错误八位字节计数器中断状态
17
RXIPV4HEROIS
当 rxipv4_hdrerr_octets 计数器达到最大值或最大值的一半时,会
设置该位
MMC 接收 IPV4 良好八位字节计数器中断状态
16
RXIPV4GOIS
当 rxipv4_gd_octets 计数器达到最大值或最大值的一半时,会设
置该位
MMC 接收 ICMP 错误帧计数器中断状态
13
RXICMPERFIS
当 rxicmp_err_frms 计数器达到最大值或最大值的一半时,该位
被设置
MMC 接收 ICMP 良好帧计数器中断状态
12
RXICMPGFIS
当 rxicmp_gd_frms 计数器达到最大值或最大值的一半时,该位被
设置
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
797/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
MMC 接收 TCP 错误帧计数器中断状态
11
RXTCPERFIS
当 rxtcp_err_frms 计数器达到最大值或最大值的一半时,该位被
设置
MMC 接收 TCP 良好帧计数器中断状态
10
RXTCPGFIS
当 rxtcp_gd_frms 计数器达到最大值或最大值的一半时,该位被
设置
MMC 接收 UDP 错误帧计数器中断状态
9
RXUDPERFIS
当 rxudp_err_frms 计数器达到最大值或最大值的一半时,该位被
设置
MMC 接收 UDP 良好帧计数器中断状态
8
RXUDPGFIS
当 rxudp_gd_frms 计数器达到最大值或最大值的一半时,该位被
设置
7
RXIPV6NOPAYFI
S
MMC 接收 IPV6 无有效载荷帧计数器中断状态
当 rxipv6_nopay_frms 计数器达到最大值或最大值的一半时,会
设置该位
MMC 接收 IPV6 报头错误帧计数器中断状态
6
RXIPV6HERFIS
当 rxipv6_hdrerr_frms 计数器达到最大值或最大值的一半时,会
设置该位
MMC 接收 IPV6 良好帧计数器中断状态
5
RXIPV6GFIS
当 rxipv6_gd_frms 计数器达到最大值或最大值的一半时,会设置
该位
MMC 接收 IPV4 UDP 校验和禁用帧计数器中断状态
4
RXIPV4UDSBLFIS
当 rxipv4_udsbl_frms 计数器达到最大值或最大值的一半时,会设
置该位
MMC 接收 IPV4 分片帧计数器中断状态
3
RXIPV4FRAGFIS
当 rxipv4_frag_frms 计数器达到最大值或最大值的一半时,会设
置该位
2
RXIPV4NOPAYFI
S
MMC 接收 IPV4 无有效载荷帧计数器中断状态
当 rxipv4_nopay_frms 计数器达到最大值或最大值的一半时,会
设置该位
MMC 接收 IPV4 报头错误帧计数器中断状态
1
RXIPV4HERFIS
当 rxipv4_hdrerr_frms 计数器达到最大值或最大值的一半时,会
设置该位
MMC 接收 IPV4 良好帧计数器中断状态
0
RXIPV4GFIS
当 rxipv4_gd_frms 计数器达到最大值或最大值的一半时,会设置
该位
MMC_IPC_INTR_RX 位域
55.5.39
RXIPV4_GD_FMS (0x210)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
798/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
FRMCNT
31
以太网控制器 ENET
0
RXIPV4_GD_FMS [31:0]
位域
名称
描述
31-0
FRMCNT
使用 TCP、UDP 或 ICMP 负载接收的良好 IPv4 数据报的数量
RXIPV4_GD_FMS 位域
L3_L4_CFG[L3_L4_CTRL] (0x400 + 0x20 * n)
0
0
0
0
3
2
0
0
0
1
0
L3PEN0
0
4
RW
0
5
RSVD
0
6
L3SAM0
0
7
RW
0
8
N/A
0
9
L3SAIM0
0
10
RW
x
11
L3DAM0
0
12
L3DAIM0
0
13
RW
0
14
RW
0
15
L3HSBM0
16
RW
17
L3HDBM0
x
18
RW
x
19
L4PEN0
x
20
RW
x
N/A
x
21
RSVD
x
22
N/A
x
23
L4SPM0
x
24
L4SPIM0
x
25
RW
x
26
RW
27
L4DPM0
28
L4DPIM0
29
RW
30
RSVD
31
RW
55.5.40
0
x
0
L3_L4_CFG[L3_L4_CTRL] [31:0]
位域
名称
描述
第 4 层目标端口反向匹配使能
21
L4DPIM0
设置时,该位表示第 4 层目标端口号字段启用反向匹配。复位时,
该位表示启用了第 4 层目标端口号字段以实现完美匹配。该位仅
在位 20 (L4DPM0) 设置为高时有效且适用。
第 4 层目标端口匹配使能
20
L4DPM0
设置时,该位表示第 4 层目标端口号字段已启用以进行匹配。重
置时,MAC 会忽略第 4 层目标端口号字段以进行匹配。
第 4 层源端口反向匹配使能
19
L4SPIM0
设置时,该位表示第 4 层源端口号字段启用反向匹配。复位时,
该位表示启用了第 4 层源端口号字段以进行完美匹配。该位仅在
位 18 (L4SPM0) 设置为高时有效且适用
第 4 层源端口匹配使能
18
L4SPM0
设置时,该位表示第 4 层源端口号字段已启用以进行匹配。重置
时,MAC 会忽略第 4 层源端口号字段进行匹配
第 4 层协议启用
16
L4PEN0
设置时,该位表示使用 UDP 帧的源和目标端口号字段进行匹配。
复位时,该位表示 TCP 帧的源和目标端口号字段用于匹配。第 4
层匹配仅在 L4SPM0 或 L4DPM0 位设置为高时完成
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
799/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
第 3 层 IP DA 更高位匹配
IPv4 帧:该字段包含在 IPv4 帧中匹配的 IP 目标地址的较高位数。
以下列表描述了该字段的值:
- 0:没有位被屏蔽。
- 1:LSb[0] 被屏蔽。
- 2:两个 LSb [1:0] 被屏蔽。
- ...
- 31:屏蔽除 MSb 之外的所有位。IPv6 Frames:该字段的 Bits
15-11
L3HDBM0
[12:11] 对应 L3HSBM0 的 Bits [6:5],表示在 IPv6 帧中被屏蔽的
IP Source 或 Destination Address 的低位位数。以下列表描述了
L3HDBM0[1:0] 和 L3HSBM0 位的串联值:
- 0:没有位被屏蔽。
- 1:LSb[0] 被屏蔽。
- 2:两个 LSb [1:0] 被屏蔽。
……
- 127:除 MSb 外的所有位都被屏蔽。仅当 L3DAM0 或 L3SAM0
设置为高时,此字段才有效且适用
第 3 层 IP SA 更高位匹配
IPv4 帧:该字段包含被屏蔽以在 IPv4 帧中匹配的 IP 源地址的低
位位数。以下列表描述了该字段的值:
- 0:没有位被屏蔽。
10-6
L3HSBM0
- 1:LSb[0] 被屏蔽。
- 2:两个 LSb [1:0] 被屏蔽。- ...
- 31:屏蔽除 MSb 之外的所有位。IPv6 帧:该字段包含该字段的
Bits [4:0],该字段指示 IPv6 帧中匹配的 IP Source 或 Destination
Address 的较高比特数。仅当 L3DAM0 或 L3SAM0 设置为高时,
此字段才有效且适用
第 3 层 IP DA 反向匹配使能
5
L3DAIM0
设置时,该位表示启用了第 3 层 IP 目标地址字段以进行反向匹
配。复位时,该位表示启用了第 3 层 IP 目标地址字段以实现完美
匹配。该位仅在位 4 (L3DAM0) 设置为高时有效且适用
第 3 层 IP DA 匹配启用
设置时,该位表示启用第 3 层 IP 目标地址字段以进行匹配。重置
4
L3DAM0
时,MAC 忽略第 3 层 IP 目标地址字段进行匹配。注意:当设置
了位 0 (L3PEN0) 时,您应该设置此位或位 2 (L3SAM0),因为可
以检查 IPv6 DA 或 SA 以进行过滤
第 3 层 IP SA 反向匹配启用
3
L3SAIM0
设置时,该位表示启用了第 3 层 IP 源地址字段以进行反向匹配。
复位时,该位表示启用了第 3 层 IP 源地址字段以进行完美匹配。
该位仅在位 2 (L3SAM0) 设置为高时有效且适用
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
800/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
第 3 层 IP SA 匹配启用
2
设置时,该位表示启用第 3 层 IP 源地址字段以进行匹配。重置
L3SAM0
时,MAC 会忽略第 3 层 IP 源地址字段进行匹配
第 3 层协议启用
0
设置时,该位表示为 IPv6 帧启用第 3 层 IP 源或目标地址匹配。
L3PEN0
复位时,该位表示为 IPv4 帧启用了第 3 层 IP 源或目标地址匹配。
第 3 层匹配仅在 L3SAM0 或 L3DAM0 位设置为高时完成
L3_L4_CFG[L3_L4_CTRL] 位域
55.5.41
L3_L4_CFG[L4_ADDR] (0x404 + 0x20 * n)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
RW
L4SP0
L4DP0
31
0
L3_L4_CFG[L4_ADDR] [31:0]
位域
名称
描述
第 4 层目的端口号字段
当第 16 位 (L4PEN0) 复位且第 20 位 (L4DPM0) 在寄存器 256
(第 3 层和第 4 层控制寄存器 0)中设置时,该字段包含要与 IPv4
31-16
或 IPv6 中的 TCP 目标端口号字段匹配的值帧。当第 16 位
L4DP0
(L4PEN0)和第 20 位(L4DPM0)在寄存器 256(第 3 层和第 4
层控制寄存器 0)中设置时,该字段包含要与 IPv4 或 IPv6 帧中
的 UDP 目标端口号字段匹配的值
第 4 层源端口号字段
当第 16 位 (L4PEN0) 复位且第 20 位 (L4DPM0) 在寄存器 256
(第 3 层和第 4 层控制寄存器 0)中设置时,该字段包含要与 IPv4
15-0
或 IPv6 中的 TCP 源端口号字段匹配的值帧。当第 16 位
L4SP0
(L4PEN0)和第 20 位(L4DPM0)在寄存器 256(第 3 层和第 4
层控制寄存器 0)中设置时,该字段包含要与 IPv4 或 IPv6 帧中
的 UDP 源端口号字段匹配的值。
L3_L4_CFG[L4_ADDR] 位域
31
30
L3_L4_CFG[L3_ADDR_0] (0x410 + 0x20 * n)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
L3A00
55.5.42
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
801/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
以太网控制器 ENET
0
L3_L4_CFG[L3_ADDR_0] [31:0]
位域
名称
描述
第 3 层地址 0 字段
当寄存器 256(第 3 层和第 4 层控制寄存器 0)中的位 0
(L3PEN0) 和位 2 (L3SAM0) 设置时,该字段包含要与 IP 源地址
字段的位 [31:0] 匹配的值 IPv6 帧。当在寄存器 256(第 3 层和第
31-0
4 层控制寄存器 0)中设置位 0 (L3PEN0) 和位 4 (L3DAM0) 时,
L3A00
该字段包含与 IP 目标地址字段的位 [31:0] 匹配的值 IPv6 帧。当
第 0 位 (L3PEN0) 复位且第 2 位 (L3SAM0) 在寄存器 256(第 3
层和第 4 层控制寄存器 0)中设置时,该字段包含要与 IPv4 帧中
的 IP 源地址字段匹配的值
L3_L4_CFG[L3_ADDR_0] 位域
55.5.43
L3_L4_CFG[L3_ADDR_1] (0x414 + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
L3A10
31
0
L3_L4_CFG[L3_ADDR_1] [31:0]
位域
名称
描述
第 3 层地址 1 字段
当寄存器 256(第 3 层和第 4 层控制寄存器 0)中的位 0
(L3PEN0) 和位 2 (L3SAM0) 设置时,该字段包含与 IP 源地址字
段的位 [63:32] 匹配的值 IPv6 帧。当在寄存器 256(第 3 层和第
31-0
L3A10
4 层控制寄存器 0)中设置位 0 (L3PEN0) 和位 4 (L3DAM0) 时,
该字段包含与 IP 目标地址字段的位 [63:32] 匹配的值 IPv6 帧。当
第 0 位 (L3PEN0) 复位且第 4 位 (L3DAM0) 在寄存器 256(第 3
层和第 4 层控制寄存器 0)中设置时,该字段包含要与 IPv4 帧中
的 IP 目标地址字段匹配的值
L3_L4_CFG[L3_ADDR_1] 位域
55.5.44
L3_L4_CFG[L3_ADDR_2] (0x418 + 0x20 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
802/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
L3A20
31
以太网控制器 ENET
0
L3_L4_CFG[L3_ADDR_2] [31:0]
位域
名称
描述
第 3 层地址 2 字段
当寄存器 256(第 3 层和第 4 层控制寄存器 0)中的位 0
(L3PEN0) 和位 2 (L3SAM0) 设置时,该字段包含与 IP 源地址字
31-0
段的位 [95:64] 匹配的值 IPv6 帧。当在寄存器 256(第 3 层和第
L3A20
4 层控制寄存器 0)中设置位 0 (L3PEN0) 和位 4 (L3DAM0) 时,
该字段包含与 IP 目标地址字段中的位 [95:64] 匹配的值 IPv6 帧。
当寄存器 256(第 3 层和第 4 层控制寄存器 0)中的位 0
(L3PEN0) 复位时,不使用该寄存器
L3_L4_CFG[L3_ADDR_2] 位域
55.5.45
L3_L4_CFG[L3_ADDR_3] (0x41C + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
L3A30
31
0
L3_L4_CFG[L3_ADDR_3] [31:0]
位域
名称
描述
第 3 层地址 3 字段当第 0 位(L3PEN0)和第 2 位(L3SAM0)
在寄存器 256(第 3 层和第 4 层控制寄存器 0)中设置时,该字
段包含要与寄存器的位 [127:96] 匹配的值 IPv6 帧中的 IP 源地址
31-0
L3A30
字段。当第 0 位(L3PEN0)和第 4 位(L3DAM0)在寄存器 256
(第 3 层和第 4 层控制寄存器 0)中设置时,该字段包含与 IP 目
标地址字段的位 [127:96] 匹配的值 IPv6 帧。当寄存器 256(第 3
层和第 4 层控制寄存器 0)中的位 0(L3PEN0)复位时,不使用
该寄存器
L3_L4_CFG[L3_ADDR_3] 位域
55.5.46
VLAN_TAG_INC_RPL (0x584)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
803/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
x
x
x
22
21
20
x
x
x
x
x
N/A
x
19
18
0
0
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
VLT
x
23
RW
x
24
VLC
x
25
RW
26
VLP
27
CSVL
28
RW
29
RW
30
RSVD
31
以太网控制器 ENET
0
VLAN_TAG_INC_RPL [31:0]
位域
名称
描述
C-VLAN 或 S-VLAN
19
当该位被设置时,S-VLAN 类型 (0x88A8) 被插入或替换在传输帧
CSVL
的第 13 和 14 字节中。当该位复位时,C-VLAN 类型 (0x8100) 被
插入或替换到传输的帧中
VLAN 优先级控制
18
当该位被设置时,控制位 [17:16] 用于 VLAN 的删除、插入或替
VLP
换。当该位复位时,将使用 mti_vlan_ctrl_i 控制输入,并忽略位
[17:16]
传输帧中的 VLAN 标记控制
- 2’b00:无 VLAN 标记删除、插入或替换
- 2’b01: VLAN tag delete MAC 删除所有传输的带有 VLAN tag
的帧的 VLAN 类型(字节 13 和 14)和 VLAN 标记(字节 15 和
16)。
- 2’b10: VLAN 标签插入 MAC 在第 13 和 14 字节插入类型值
17-16
(0x8100/0x88a8) 后,在帧的第 15 和 16 字节插入 VLT。此操作
VLC
对所有传输的帧执行,无论它们是否已经有一个 VLAN 标签。
- 2’b11:VLAN 标记替换 MAC 替换所有 VLAN 类型传输帧的第
15 和 16 字节中的 VLT(第 13 和 14 字节为 0x8100/0x88a8)。
注意:对此字段的更改仅在帧开始时生效。如果在传输帧时写入
此寄存器字段,则只有后续帧可以使用更新后的值,即当前帧不
使用更新后的值
用于传输帧的 VLAN 标记
该字段包含要插入或替换的 VLAN 标记的值。仅当传输线路处于
15-0
非活动状态或在初始化阶段时才必须更改该值。Bits[15:13] 是用
VLT
户优先级,Bit 12 是 CFI/DEI,Bits[11:0] 是 VLAN 标签的 VID 字
段。
VLAN_TAG_INC_RPL 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
VLHT
31
VLAN_HASH (0x588)
RSVD
55.5.47
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
804/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
9
8
7
6
5
4
3
2
1
0
RW
N/A
31
以太网控制器 ENET
x
VLAN_HASH [31:0]
位域
名称
15-0
VLHT
描述
VLAN 哈希表
该字段包含 16 位 VLAN 哈希表
VLAN_HASH 位域
TSINIT
TSENA
RW
0
TSCFUPDT
0
RW
TSUPDT
RW
0
RW
TSTRIG
x
TSADDREG
x
RW
0
RW
0
RSVD
0
N/A
TSENALL
0
RW
0
TSCTRLSSR
0
TSVER2ENA
0
RW
TSIPENA
RW
0
10
RW
TSIPV4ENA
11
TSIPV6ENA
0
12
RW
0
13
RW
0
14
TSEVNTENA
x
15
RW
x
16
TSMSTRENA
x
17
RW
x
18
SNAPTYPSEL
x
19
RW
0
20
TSENMACADDR
0
21
RW
0
22
RSVD
ATSFC
RW
0
23
N/A
ATSEN0
24
RW
0
25
ATSEN1
x
26
ATSEN2
x
27
RW
N/A
x
28
RW
29
ATSEN3
30
RSVD
31
TS_CTRL (0x700)
RW
55.5.48
0
0
0
TS_CTRL [31:0]
位域
名称
描述
辅助快照 3 启用
该字段控制捕获辅助快照触发器 3。当该位被设置时,
ptp_aux_trig_i[3] 输入上的事件的辅助快照被启用。当该位复位
28
ATSEN3
时,该输入上的事件将被忽略。如果在内核配置期间未选择 Add
IEEE 1588 Auxiliary Snapshot 选项或在 Number of IEEE 1588
Auxiliary Snapshot Inputs 选项中选择的数量小于四,则保留该
位。
辅助快照 2 启用
该字段控制捕获辅助快照触发器 2。当该位被设置时,
27
ATSEN2
ptp_aux_trig_i[2] 输入上的事件的辅助快照被启用。当该位复位
时,该输入上的事件将被忽略。如果在内核配置期间未选择 Add
IEEE 1588 Auxiliary Snapshot 选项或在 Number of IEEE 1588
Auxiliary Snapshot Inputs 选项中选择的数量小于 3,则保留该位。
辅助快照 1 启用
该字段控制捕获辅助快照触发器 1。当该位被设置时,
26
ATSEN1
ptp_aux_trig_i[1] 输入上的事件的辅助快照被启用。当该位复位
时,该输入上的事件将被忽略。如果在内核配置期间未选择 Add
IEEE 1588 Auxiliary Snapshot 选项或在 Number of IEEE 1588
Auxiliary Snapshot Inputs 选项中选择的数量小于 2,则保留该位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
805/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
辅助快照 0 启用
25
ATSEN0
该字段控制捕获辅助快照触发器 0。当该位被设置时,
ptp_aux_trig_i[0] 输入上的事件的辅助快照被启用。当此位复位
时,此输入上的事件将被忽略
辅助快照 FIFO 清除
设置后,它会重置辅助快照 FIFO 的指针。当指针复位且 FIFO 为
24
ATSFC
空时,该位被清除。当该位为高时,辅助快照存储在 FIFO 中。如
果在内核配置期间未选择 Add IEEE 1588 Auxiliary Snapshot 选
项,则保留该位
为 PTP 帧过滤启用 MAC 地址
18
TSENMACADDR
设置后,当 PTP 通过以太网直接发送时,DA MAC 地址(匹配任
何 MAC 地址寄存器)用于过滤 PTP 帧
选择用于拍摄快照的 PTP 数据包
17-16
SNAPTYPSEL
这些位以及位 15 和 14 决定需要为其拍摄快照的 PTP 数据包类
型集
为与 Master 相关的消息启用快照
15
TSMSTRENA
设置后,仅为与主节点相关的消息拍摄快照。否则,为与从节点
相关的消息拍摄快照
为事件消息启用时间戳快照
14
TSEVNTENA
设置后,仅为事件消息(SYNC、Delay_Req、Pdelay_Req 或
Pdelay_Resp)拍摄时间戳快照。重置时,将为除 Announce、
Management 和 Signaling 之外的所有消息拍摄快照
启用对通过 IPv4-UDP 发送的 PTP 帧的处理
13
TSIPV4ENA
设置后,MAC 接收器处理封装在 UDP over IPv4 数据包中的
PTP 数据包。当该位清零时,MAC 将忽略通过 UDP-IPv4 数据包
传输的 PTP。默认情况下设置此位。
启用对通过 IPv6-UDP 发送的 PTP 帧的处理
12
TSIPV6ENA
设置后,MAC 接收器处理封装在 UDP over IPv6 数据包中的
PTP 数据包。当该位清零时,MAC 将忽略通过 UDP-IPv6 数据包
传输的 PTP
通过以太网帧启用 PTP 处理
11
TSIPENA
设置后,MAC 接收器处理直接封装在以太网帧中的 PTP 数据包。
当该位清零时,MAC 将忽略 PTP over Ethernet 数据包
为版本 2 格式启用 PTP 数据包处理
10
TSVER2ENA
设置后,将使用 1588 版本 2 格式处理 PTP 数据包。否则,将使
用版本 1 格式处理 PTP 数据包
时间戳数字或二进制翻转控制
设置后,时间戳低寄存器在 0x3B9A_C9FF 值(即 1 纳秒精度)
9
TSCTRLSSR
后翻转并增加时间戳(高)秒。复位时,亚秒寄存器的翻转值为
0x7FFF_FFFF。必须根据 PTP 参考时钟频率和该位的值正确编
程亚秒增量。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
806/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
8
TSENALL
以太网控制器 ENET
描述
为所有帧启用时间戳
设置后,将为 MAC 接收的所有帧启用时间戳快照
添加注册更新
5
设置后,时间戳加数寄存器的内容在 PTP 块中更新以进行精细校
TSADDREG
正。更新完成后,这将被清除。该寄存器位在设置之前应为零
时间戳中断触发使能
4
设置后,当系统时间变得大于目标时间寄存器中写入的值时生成
TSTRIG
时间戳中断。该位在时间戳触发中断产生后复位
时间戳更新
设置后,系统时间将更新(添加或减去)寄存器 452(系统时间 3
秒更新寄存器)和寄存器 453(系统时间 - 纳秒更新寄存器)中
TSUPDT
指定的值。该位在更新前应读为零。当硬件更新完成时,该位复
位。“时间戳高位字”寄存器(如果在内核配置期间启用)不会更
新
时间戳初始化
设置后,系统时间将使用寄存器 452(系统时间 - 秒更新寄存器)
2
和寄存器 453(系统时间 - 纳秒更新寄存器)中指定的值进行初
TSINIT
始化(覆盖)。该位在更新前应读为零。该位在初始化完成时复
位。“时间戳高位字”寄存器(如果在内核配置期间启用)只能被
初始化
时间戳精细或粗略更新
1
设置时,该位表示系统时间更新应使用精细更新方法完成。重置
TSCFUPDT
时,它表示应使用 Coarse 方法完成系统时间戳更新
时间戳启用
设置后,会为发送和接收帧添加时间戳。禁用时,不会为发送和
0
接收帧添加时间戳,并且时间戳生成器也会暂停。启用此模式后,
TSENA
您需要初始化 Timestamp(系统时间)
。在接收端,只有设置了该
位,MAC 才会处理 1588 帧
TS_CTRL 位域
SUB_SEC_INCR (0x704)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
RW
N/A
RSVD
31
SSINC
55.5.49
x
SUB_SEC_INCR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
807/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
亚秒增量值
该字段中编程的值在每个时钟周期(clk_ptp_i)与亚秒寄存器的
内容累加。例如,当 PTP 时钟为 50 MHz(周期为 20 ns)时,当
7-0
系统时间纳秒寄存器的精度为 1 ns [Bit 9 (TSCTRLSSR) 在寄存
SSINC
器 448 (Timestamp Control) 中设置时,您应该编程 20 (0x14) 登
记)]。当 TSCTRLSSR 清零时,纳秒寄存器的分辨率为
~0.465ns。在这种情况下,您应该编写一个由 20ns/0.465 导出的
值 43 (0x2B)。
SUB_SEC_INCR 位域
55.5.50
SYST_SEC (0x708)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
TSS
31
0
SYST_SEC [31:0]
位域
名称
31-0
TSS
描述
时间戳(秒)
该字段的值表示 MAC 维护的系统时间的当前值,以秒为单位
SYST_SEC 位域
55.5.51
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
N/A
x
15
TSSS
RSVD
31
SYST_NSEC (0x70C)
0
SYST_NSEC [31:0]
位域
名称
描述
时间戳子秒
30-0
TSSS
该字段中的值具有亚秒级的时间表示,精度为 0.46 ns。当第 9 位
(TSCTRLSSR) 在寄存器 448(时间戳控制寄存器)中设置时,每
一位代表 1 ns,最大值为 0x3B9A_C9FF,之后它会翻转为零。
SYST_NSEC 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
808/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
55.5.52
以太网控制器 ENET
SYST_SEC_UPD (0x710)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TSS
31
0
SYST_SEC_UPD [31:0]
位域
名称
描述
时间戳秒
31-0
此字段中的值表示要初始化或添加到系统时间的时间(以秒为单
TSS
位)
SYST_SEC_UPD 位域
55.5.53
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
RW
0
15
TSSS
ADDSUB
31
SYST_NSEC_UPD (0x714)
0
SYST_NSEC_UPD [31:0]
位域
名称
描述
加减时间
31
ADDSUB
当该位置位时,更新寄存器的内容减去时间值。当该位复位时,
时间值与更新寄存器的内容相加。
时间戳子秒
30-0
TSSS
该字段中的值具有亚秒级的时间表示,精度为 0.46 ns。当第 9 位
(TSCTRLSSR) 在寄存器 448(时间戳控制寄存器)中设置时,每
一位代表 1 ns,编程值不应超过 0x3B9A_C9FF。
SYST_NSEC_UPD 位域
55.5.54
TS_ADDEND (0x718)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
809/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TSAR
31
以太网控制器 ENET
0
TS_ADDEND [31:0]
位域
名称
描述
时间戳加法寄存器
31-0
该字段表示要添加到累加器寄存器以实现时间同步的 32 位时间
TSAR
值。
TS_ADDEND 位域
55.5.55
TGTTM_SEC (0x71C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TSTR
31
0
TGTTM_SEC [31:0]
位域
名称
描述
目标时间秒寄存器
31-0
该寄存器以秒为单位存储时间。当时间戳值匹配或超过两个目标
TSTR
时间戳寄存器时,然后根据寄存器 459(PPS 控制寄存器)的位
[6:5],MAC 启动或停止 PPS 信号输出并生成中断(如果启用)
。
TGTTM_SEC 位域
55.5.56
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
RW
0
15
TTSLO
TRGTBUSY
31
TGTTM_NSEC (0x720)
0
TGTTM_NSEC [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
810/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
目标时间寄存器忙
当寄存器 459(PPS 控制寄存器)中的 PPSCMD 字段(位 [3:0])
被编程为 010 或 011 时,MAC 设置该位。将 PPSCMD 字段编程
31
为 010 或 011,指示 MAC 同步目标时间寄存器到 PTP 时钟域。
TRGTBUSY
MAC 在将目标时间寄存器同步到 PTP 时钟域后清除该位。当该
位读为 1 时,应用程序不得更新目标时间寄存器。否则,先前编
程时间的同步将被破坏。当未选择启用灵活的每秒脉冲输出功能
时,该位保留。
目标时间戳低寄存器
该寄存器以(有符号)纳秒为单位存储时间。当时间戳的值与两
个目标时间戳寄存器匹配时,然后根据寄存器 459(PPS 控制寄
30-0
存器)中的 TRGTMODSEL0 字段(位 [6:5])
,MAC 开始或停止
TTSLO
PPS 信号输出并产生中断(如果启用)。当第 9 位
(TSCTRLSSR)在寄存器 448(时间戳控制寄存器)中设置时,
该值不应超过 0x3B9A_C9FF。PPS 信号输出的实际开始或停止
时间可能有高达一个单位的亚秒增量值的误差幅度。
TGTTM_NSEC 位域
SYSTM_H_SEC (0x724)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
N/A
RSVD
31
TSHWR
55.5.57
x
SYSTM_H_SEC [31:0]
位域
名称
描述
时间戳高位字寄存器
该字段包含时间戳秒值的最高 16 位。该寄存器是可选的,可以在
15-0
TSHWR
内核配置期间使用 Enable IEEE 1588 Higher Word Register 选项
进行选择。直接写入寄存器初始化值。当系统时间 - 秒寄存器的
32 位溢出时,该寄存器会递增
SYSTM_H_SEC 位域
55.5.58
TS_STATUS (0x728)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
811/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
2
1
0
0
0
TSSOVF
3
RO
x
4
TSTARGT
x
5
AUXTSTRIG
x
6
RO
x
7
RO
x
8
TSTRGTERR
0
9
RO
x
10
TSTARGT1
0
11
TSTRGTERR1
x
12
RO
13
RO
14
TSTARGT2
0
15
TSTRGTERR2
0
16
RO
x
17
RO
18
TSTARGT3
19
RO
x
20
TSTRGTERR3
x
RO
0
21
RSVD
0
22
RO
0
23
N/A
0
RO
x
24
ATSSTN
25
RO
0
26
RSVD
0
N/A
x
27
N/A
28
ATSSTM
29
ATSNS
30
RSVD
31
以太网控制器 ENET
0
0
0
0
0
0
0
0
TS_STATUS [31:0]
位域
名称
描述
辅助时间戳快照的数量
该字段表示 FIFO 中可用的快照数量。等于所选 FIFO 深度(4、8
29-25
ATSNS
或 16)的值表示辅助快照 FIFO 已满。当辅助快照 FIFO 清除位
被设置时,这些位被清除(到 00000)。只有在内核配置期间选择
了添加 IEEE 1588 辅助快照选项时,该位才有效。
辅助时间戳快照触发器丢失
24
ATSSTM
当辅助时间戳快照 FIFO 已满且外部触发已设置时,该位设置。
这表示最新的快照未存储在 FIFO 中。只有在内核配置期间选择
了添加 IEEE 1588 辅助快照选项时,该位才有效。
辅助时间戳快照触发器标识符
这些位标识辅助快照寄存器中可用的时间戳适用的辅助触发输入。
当同时置位不止一位时,表示相应的辅助触发在同一时钟采样。
19-16
ATSSTN
这些位仅在辅助快照的数量大于 1 时适用。为每个触发分配一位,
如下表所示:- Bit 16:辅助触发 0 - Bit 17:辅助触发 1 - Bit 18:
辅助触发 2 - Bit 19:辅助触发 3 软件可以读取该寄存器以找到获
取时间戳时设置的触发器。
时间戳目标时间错误
9
TSTRGTERR3
当在寄存器 496 和寄存器 497 中编程的目标时间已经过去时,会
设置该位。该位在被应用程序读取时被清除。
达到目标时间 PPS3 的时间戳目标时间
8
TSTARGT3
设置时,该位表示系统时间的值大于或等于寄存器 496(PPS3
目标时间高位寄存器)和寄存器 497(PPS3 目标时间低位寄存
器)中指定的值。
7
TSTRGTERR2
6
TSTARGT2
5
TSTRGTERR1
4
TSTARGT1
3
TSTRGTERR
2
AUXTSTRIG
1
TSTARGT
0
TSSOVF
TS_STATUS 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
812/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
x
0
0
x
0
0
x
0
0
0
0
x
5
0
4
3
2
0
0
0
0
1
0
0
0
PPSCTRLCMD0
6
RW
7
PPSEN0
8
RW
x
9
TRGTMODSEL0
0
0
10
RW
11
RSVD
12
N/A
RSVD
0
13
PPSCMD1
14
N/A
RW
x
15
RW
16
TRGTMODSEL1
17
RW
18
PPSCMD2
19
RSVD
TRGTMODSEL2
20
RSVD
0
21
N/A
0
22
N/A
RW
x
23
PPSEN1
x
24
RSVD
RSVD
N/A
0
25
RW
26
RW
0
27
N/A
28
RW
N/A
x
29
TRGTMODSEL3
30
RSVD
31
PPS_CTRL (0x72C)
PPSCMD3
55.5.59
以太网控制器 ENET
PPS_CTRL [31:0]
位域
名称
描述
PPS3 输出的目标时间寄存器模式
30-29
TRGTMODSEL3
该字段指示 PPS3 输出信号的目标时间寄存器(寄存器 496 和
497)模式。该字段类似于 TRGTMODSEL0 字段。
灵活的 PPS3 输出控制
26-24
PPSCMD3
该字段控制灵活的 PPS3 输出 (ptp_pps_o[3]) 信号。该字段在功
能上类似于 PPSCMD0[2:0]
PPS2 输出的目标时间寄存器模式
22-21
TRGTMODSEL2
该字段指示 PPS2 输出信号的目标时间寄存器(寄存器 488 和
489)模式。该字段类似于 TRGTMODSEL0 字段。
灵活的 PPS2 输出控制
18-16
PPSCMD2
该字段控制灵活的 PPS2 输出 (ptp_pps_o[2]) 信号。该字段在功
能上类似于 PPSCMD0[2:0]。
PPS1 输出的目标时间寄存器模式
14-13
TRGTMODSEL1
该字段指示 PPS1 输出信号的目标时间寄存器(寄存器 480 和
481)模式。该字段类似于 TRGTMODSEL0 字段。
12
PPSEN1
Flexible PPS1 Output Mode Enable
When set high, Bits[10:8] function as PPSCMD.
灵活的 PPS1 输出控制
10-8
PPSCMD1
该字段控制灵活的 PPS1 输出 (ptp_pps_o[1]) 信号。该字段在功
能上类似于 PPSCMD0[2:0]。
PPS0 输出的目标时间寄存器模式
此字段指示 PPS0 输出信号的目标时间寄存器(寄存器 455 和
456)模式:
- 00:表示目标时间寄存器仅用于生成中断事件。
6-5
TRGTMODSEL0
- 01:保留
- 10:表示目标时间寄存器被编程用于产生中断事件和开始或停止
PPS0 输出信号的产生。
- 11:表示目标时间寄存器仅用于启动或停止 PPS0 输出信号的生
成。没有中断被断言。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
813/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
灵活的 PPS 输出模式启用
4
当设置为低时,位 [3:0] 用作 PPSCTRL(向后兼容)
。当设置为
PPSEN0
高时,位 [3:0] 用作 PPSCMD。
PPSCTRL0: PPS0 输出频率控制
该字段控制 PPS0 输出 (ptp_pps_o[0]) 信号的频率。PPSCTRL
的默认值为 0000,PPS 输出为每秒 1 个脉冲(宽度为 clk_ptp_i)
。
对于 PPSCTRL 的其他值,PPS 输出成为以下频率的生成时钟:
- 0001:二进制翻转为 2 Hz,数字翻转为 1 Hz。
- 0010:二进制翻转为 4 Hz,数字翻转为 2 Hz。
- 0011:二进制翻转为 8 Hz,数字翻转为 4 Hz。
- 0100:二进制翻转为 16 Hz,数字翻转为 8 Hz。- ...
3-0
- 1111:二进制翻转为 32.768 KHz,数字翻转为 16.384 KHz。注
PPSCTRLCMD0
意:在二进制翻转模式下,PPS 输出 (ptp_pps_o) 在这些频率下
的占空比为 50%。在数字翻转模式下,PPS 输出频率是一个平均
值。实际时钟具有不同的频率,每秒同步一次。例如:- 当
PPSCTRL = 0001 时,PPS (1 Hz) 的低周期为 537 ms,高周期
为 463 ms - 当 PPSCTRL = 0010 时,PPS (2 Hz) 是一个序列:一个时钟 50% 占空比和 537 ms 周期 - 463 ms 周期的第二个时
钟(268 ms 低电平和 195 ms 高电平)- 当 PPSCTRL = 0011 时,
PPS (4 Hz) 是一个序列:- 三个 50% 占空比的时钟和 268 ms 周
期 - 195 ms 周期的第四个时钟(低 134 ms,高 61 ms)
PPS_CTRL 位域
55.5.60
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
N/A
x
15
AUXTSLO
30
RSVD
31
AUX_TS_NSEC (0x730)
0
AUX_TS_NSEC [31:0]
位域
名称
30-0
AUXTSLO
描述
包含辅助时间戳的低 31 位(纳秒字段)
AUX_TS_NSEC 位域
55.5.61
AUX_TS_SEC (0x734)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
814/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
AUXTSHI
31
以太网控制器 ENET
0
AUX_TS_SEC [31:0]
位域
名称
描述
31-0
AUXTSHI
包含辅助时间戳的 Seconds 字段的低 32 位。
AUX_TS_SEC 位域
55.5.62
PPS0_INTERVAL (0x760)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
PPSINT
31
0
PPS0_INTERVAL [31:0]
位域
名称
描述
PPS0 输出信号间隔
这些位以亚秒增量值为单位存储 PPS0 信号输出上升沿之间的间
31-0
隔。您需要编程一个小于所需间隔的值。例如,如果 PTP 参考时
PPSINT
钟为 50 MHz(周期为 20ns)
,并且 PPS0 信号输出上升沿之间所
需的间隔为 100ns(即 5 个单位的亚秒增量值)
,那么您应该编程
值 4(5–1) 在这个寄存器中。
PPS0_INTERVAL 位域
55.5.63
PPS0_WIDTH (0x764)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
PPSWIDTH
31
0
PPS0_WIDTH [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
815/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
PPS0 输出信号宽度
这些位以亚秒增量值为单位存储 PPS0 信号输出的上升沿和相应
31-0
下降沿之间的宽度。您需要编程一个小于所需间隔的值。例如,
PPSWIDTH
如果 PTP 参考时钟为 50 MHz(周期为 20ns)
,并且 PPS0 信号
输出的上升沿和相应下降沿之间所需的宽度为 80ns(即四个单位
的亚秒增量值),那么您应该编程此寄存器中的值 3 (4–1)。
PPS0_WIDTH 位域
55.5.64
PPS[TGTTM_SEC] (0x780 + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TSTRH1
31
0
PPS[TGTTM_SEC] [31:0]
位域
名称
描述
PPS1 目标时间秒寄存器
该寄存器以秒为单位存储时间。当时间戳值匹配或超过两个目标
31-0
时间戳寄存器时,然后根据寄存器 459(PPS 控制寄存器)的位
TSTRH1
[14:13] TRGTMODSEL1,MAC 启动或停止 PPS 信号输出并产
生中断(如果启用)
PPS[TGTTM_SEC] 位域
55.5.65
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
RW
0
15
TTSL1
TRGTBUSY1
31
PPS[TGTTM_NSEC] (0x784 + 0x20 * n)
0
PPS[TGTTM_NSEC] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
816/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
PPS1 目标时间寄存器忙
当寄存器 459(PPS 控制寄存器)中的 PPSCMD1 字段(位
[10:8])被编程为 010 或 011 时,MAC 设置该位。将 PPSCMD1
31
字段编程为 010 或 011 指示 MAC 将目标时间寄存器同步到 PTP
TRGTBUSY1
时钟域。MAC 在将目标时间寄存器同步到 PTP 时钟域后清除该
位。当该位读为 1 时,应用程序不得更新目标时间寄存器。否则,
先前编程时间的同步将被破坏。
PPS1 寄存器的目标时间低
该寄存器以(有符号)纳秒为单位存储时间。当时间戳的值与两
个目标时间戳寄存器匹配时,然后根据寄存器 459(PPS 控制寄
30-0
存器)中的 TRGTMODSEL1 字段(位 [14:13])
,MAC 开始或停
TTSL1
止 PPS 信号输出并产生中断(如果启用)。当第 9 位
(TSCTRLSSR)在寄存器 448(时间戳控制寄存器)中设置时,
该值不应超过 0x3B9A_C9FF。PPS 信号输出的实际开始或停止
时间可能有高达一个单位的亚秒增量值的误差幅度。
PPS[TGTTM_NSEC] 位域
55.5.66
PPS[INTERVAL] (0x788 + 0x20 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
PPSINT
31
0
PPS[INTERVAL] [31:0]
位域
名称
描述
PPS1 输出信号间隔
这些位以亚秒增量值为单位存储 PPS1 信号输出上升沿之间的间
31-0
PPSINT
隔。您需要编程一个小于所需间隔的值。例如,如果 PTP 参考时
钟为 50 MHz(周期为 20ns)
,并且 PPS1 信号输出上升沿之间所
需的间隔为 100ns(即 5 个单位的亚秒增量值)
,那么您应该编程
值 4(5–1) 在这个寄存器中。
PPS[INTERVAL] 位域
55.5.67
PPS[WIDTH] (0x78C + 0x20 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
817/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
PPSWIDTH
31
以太网控制器 ENET
0
PPS[WIDTH] [31:0]
位域
名称
描述
PPS1 输出信号宽度
这些位以亚秒增量值为单位存储 PPS1 信号输出的上升沿和相应
31-0
下降沿之间的宽度。您需要编程一个小于所需间隔的值。例如,
PPSWIDTH
如果 PTP 参考时钟为 50 MHz(周期为 20ns)
,并且 PPS1 信号
输出的上升沿和相应下降沿之间所需的宽度为 80ns(即四个单位
的亚秒增量值),那么您应该编程此寄存器中的值 3 (4–1)。
PPS[WIDTH] 位域
0
0
0
0
7
6
5
0
0
0
0
4
3
2
0
0
0
1
0
SWR
0
8
RW
0
9
DA
0
10
DSL
11
RW
0
12
RW
0
13
ATDS
0
0
14
RW
0
15
PBL
0
16
RW
0
17
PR
0
18
RW
0
19
FB
0
20
RW
0
21
RPBL
USP
0
22
RW
PBLX8
RW
RW
23
AAL
24
RW
25
MB
0
26
TXPR
0
27
RW
x
28
PRWG
RSVD
N/A
0
29
RW
RIB
30
RW
31
DMA_BUS_MODE (0x1000)
RW
55.5.68
0
0
DMA_BUS_MODE [31:0]
位域
名称
描述
重建 INCRx Burst
当该位设置为高且 AHB 主机获得 EBT(重试、拆分或丢失总线
31
RIB
授权)时,AHB 主机接口会重建任何由 INCRx 启动的突发传输
的待处理拍子。AHB 主接口通过指定突发与 INCRx 和 SINGLE
的组合重建节拍。默认情况下,AHB 主接口使用未指定 (INCR)
突发重建 EBT 的未决拍。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
818/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
频道优先
权重此字段在系统总线的 DMA 通道之间的循环仲裁期间设置通
道 0 的优先权权重。
- 00:优先权重为 1。
29-28
PRWG
- 01:优先权重为 2。
- 10:优先权重为 3。
- 11:优先级权重为 4。当您选择 AV 功能时,该字段存在于除
GMAC-AXI 之外的所有 DWC_gmac 配置中。否则,该字段是保
留的和只读的 (RO)。
传输优先
27
TXPR
设置时,该位表示在系统侧总线的仲裁期间发送 DMA 的优先级
高于接收 DMA。在 GMAC-AXI 配置中,该位保留且只读 (RO)。
混合突发传输
26
MB
当该位设置为高且 FB 位为低时,AHB 主接口以 INCR(未定义
突发)启动所有长度超过 16 的突发,而对于突发长度为 16 和较
少的。”
地址对齐的节拍
25
AAL
当该位设置为高且 FB 位等于 1 时,AHB 或 AXI 接口生成与起始
地址 LS 位对齐的所有突发。如果 FB 位等于 0,则第一个突发
(访问数据缓冲区的起始地址)未对齐,但后续突发与地址对齐。
PBLx8 模式
24
PBLX8
当设置为高电平时,该位将编程的 PBL 值(位 [22:17] 和位
[13:8])乘以八倍。因此,DMA 根据 PBL 值以 8、16、32、64、
128 和 256 节拍传输数据。
使用单独的 PBL
23
USP
当设置为高时,该位将 Rx DMA 配置为使用位 [22:17] 中配置的
值作为 PBL。Bits [13:8] 中的 PBL 值仅适用于 Tx DMA 操作。当
复位为低时,位 [13:8] 中的 PBL 值适用于两个 DMA 引擎。
接收 DMA PBL
该字段指示在一个 Rx DMA 事务中传输的最大节拍数。这是在单
个块读取或写入中使用的最大值。每次在主机总线上启动突发传
22-17
RPBL
输时, Rx DMA 总是尝试按照 RPBL 位中指定的方式进行突发。
您可以使用 1、2、4、8、16 和 32 的值对 RPBL 进行编程。任何
其他值都会导致未定义的行为。该字段仅在 USP 设置为高时才有
效和适用。
固定突发
该位控制 AHB 或 AXI 主接口是否执行固定突发传输。设置后,
16
FB
AHB 接口在正常突发传输开始期间仅使用 SINGLE、INCR4、
INCR8 或 INCR16。复位时,AHB 或 AXI 接口使用 SINGLE 和
INCR 突发传输操作。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
819/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
优先比例
这些位控制 Rx DMA 和 Tx DMA 之间加权循环仲裁中的优先级比
率。这些位仅在位 1 (DA) 复位时有效。优先级比率为 Rx:Tx 或
15-14
PR
Tx:Rx,具体取决于位 27 (TXPR) 是复位还是置位。
- 00:优先级比为 1:1。
- 01:优先级比为 2:1。
- 10:优先级比为 3:1。
- 11:优先级比例为 4:1。
可编程突发长度
这些位指示在一个 DMA 事务中传输的最大节拍数。这是在单个
块读取或写入中使用的最大值。每次在主机总线上启动突发传输
13-8
PBL
时, DMA 总是尝试按照 PBL 中的规定进行突发。PBL 可以用允
许的值 1、2、4、8、16 和 32 进行编程。任何其他值都会导致未
定义的行为。当 USP 设置为高电平时,此 PBL 值仅适用于 Tx
DMA 事务。如果要传输的节拍数大于 32,则执行以下步骤:1.
设置 PBLx8 模式。2. 设置 PBL。
备用描述符大小
设置后,备用描述符的大小(在第 545 页的“备用或增强描述符”
中描述)增加到 32 字节(8 个双字)
。当在接收器中启用高级时
间戳功能或 IPC 完整校验和卸载引擎(类型 2)时,这是必需的。
7
ATDS
如果未启用高级时间戳和 IPC 完整校验和卸载引擎(类型 2)功
能,则不需要增强描述符。在这种情况下,您可以使用 16 字节描
述符来节省 4 字节的内存。仅当您在内核配置期间选择备用描述
符功能和以下任一功能时,才会出现此位:- 高级时间戳功能 IPC 完整校验和卸载引擎(类型 2)功能否则,此位保留且只读。
重置后,描述符大小恢复为 4 个 DWORD(16 字节)。
描述符跳过长度
该位指定要在两个未链接的描述符之间跳过的字、双字或 Lword
6-2
DSL
(取决于 32 位、64 位或 128 位总线)的数量。地址跳过从当前描
述符的末尾开始到下一个描述符的开头。当 DSL 值等于 0 时,描
述符表在环形模式下被 DMA 视为连续的
DMA 仲裁方案
该位指定通道 0 的发送和接收路径之间的仲裁方案。
- 0:带 Rx:Tx 或 Tx:Rx 的加权循环路径之间的优先级根据位
1
DA
[15:14] (PR) 中指定的优先级和位 27 (TXPR) 中指定的优先级权
重。
- 1:固定优先级当位 27 (TXPR) 被设置时,发送路径优先于接收
路径。否则,接收路径优先于传输路径。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
820/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
软件重置
当该位置位时,MAC DMA 控制器复位 MAC 的逻辑和所有内部
寄存器。在所有 DWC_gmac 时钟域中完成复位操作后,它会自
动清零。在重新编程 DWC_gmac 的任何寄存器之前,您应该在
0
该位读取零 (0) 值。注:- 软件复位功能仅由该位驱动。寄存器 64
SWR
(通道 1 总线模式寄存器)或寄存器 128(通道 2 总线模式寄存
器)的位 0 对软件复位功能没有影响。- 仅当所有活动时钟域中的
所有复位都无效时,才完成复位操作。因此,必须提供所有 PHY
输入时钟(适用于所选 PHY 接口)以完成软件复位。完成软件复
位操作的时间取决于最慢的活动时钟的频率。
DMA_BUS_MODE 位域
55.5.69
DMA_TX_POLL_DEMAND (0x1004)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TPD
31
0
DMA_TX_POLL_DEMAND [31:0]
位域
名称
描述
发送的查询的请求
当这些位写入任何值时,DMA 读取寄存器 18(当前主机发送描
31-0
述符寄存器)指向的当前描述符。如果该描述符不可用(由主机
TPD
拥有),则传输返回到挂起状态并且寄存器 5(状态寄存器)的位
2 (TU) 被置位。如果描述符可用,传输将恢复。
DMA_TX_POLL_DEMAND 位域
55.5.70
DMA_RX_POLL_DEMAND (0x1008)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
RPD
31
0
DMA_RX_POLL_DEMAND [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
821/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
接受的查询的请求
当这些位写入任何值时,DMA 读取寄存器 19(当前主机接收描
31-0
述符寄存器)指向的当前描述符。如果该描述符不可用(由主机
RPD
拥有),则接收返回到挂起状态并且寄存器 5(状态寄存器)的位
7 (RU) 被置位。如果描述符可用,则 Rx DMA 返回活动状态。
DMA_RX_POLL_DEMAND 位域
55.5.71
DMA_RX_DESC_LIST_ADDR (0x100C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
RDESLA
31
0
DMA_RX_DESC_LIST_ADDR [31:0]
位域
名称
描述
接收列表的开始
31-0
该字段包含接收描述符列表中第一个描述符的基地址。DMA 会忽
RDESLA
略 32 位、64 位或 128 位总线宽度的 LSB 位(1:0、2:0 或 3:0)
并在内部将其视为全零。因此,这些 LSB 位是只读的 (RO)。
DMA_RX_DESC_LIST_ADDR 位域
55.5.72
DMA_TX_DESC_LIST_ADDR (0x1010)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
TDESLA
31
0
DMA_TX_DESC_LIST_ADDR [31:0]
位域
名称
描述
发送列表的开始
31-0
TDESLA
该字段包含传输描述符列表中第一个描述符的基地址。32 位、64
位或 128 位总线宽度的 LSB 位(1:0、2:0、3:0)被忽略,DMA
在内部将其视为全零。因此,这些 LSB 位是只读的 (RO)。
DMA_TX_DESC_LIST_ADDR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
822/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
0
TI
0
RW
0
TU
0
TPS
RW
0
0
RW
TJT
RW
0
1
RW
UNF
OVF
RW
2
RI
3
RU
4
RW
5
RW
x
6
RPS
x
7
RW
0
8
ETI
0
9
RWT
0
RSVD
0
10
RW
0
11
RW
0
12
N/A
0
13
FBI
0
14
RW
0
15
ERI
0
16
RW
0
17
AIS
0
18
NIS
0
19
RW
0
20
RW
0
21
RS
0
22
RW
GLI
RW
0
23
TS
GMI
RW
0
24
RW
GPI
RW
x
25
EB
TTI
26
GLPII
27
RW
28
RW
29
RSVD
30
N/A
31
DMA_STATUS (0x1014)
RW
55.5.73
以太网控制器 ENET
0
0
0
DMA_STATUS [31:0]
位域
名称
描述
GLPII:GMAC LPI 中断(用于通道 0)
该位表示 MAC 的 LPI 逻辑中的中断事件。要将此位重置为 1’b0,
软件必须读取 DWC_gmac 中的相应寄存器以获取中断的确切原
因并清除其源。注:GLPII 状态仅在通道 0 DMA 寄存器中给出,
并且仅在启用节能以太网功能时适用。否则,该位被保留。当该
位为高电平时,来自 MAC (sbd_intr_o) 的中断信号为高电平。
30
GLPII
-或- GTMSI:GMAC TMS 中断(用于通道 1 和通道 2)该位指示
DWC_gmac 的流量管理器和调度程序逻辑中的中断事件。要复位
该位,软件必须读取相应的寄存器(通道状态寄存器)以获取中
断的确切原因并清除其源。注意:当启用 AV 功能并且存在相应
的附加传输通道时,GTMSI 状态仅在通道 1 和通道 2 DMA 寄存
器中给出。否则,该位被保留。当该位为高电平时,来自 MAC
(sbd_intr_o) 的中断信号为高电平。
时间戳触发中断
该位指示 DWC_gmac 的时间戳生成器块中的中断事件。软件必
29
TTI
须读取 DWC_gmac 中相应的寄存器才能获得中断的确切原因并
清除其源以将该位重置为 1’b0。当该位为高电平时,来自
DWC_gmac 子系统(sbd_intr_o)的中断信号为高电平。该位仅
在启用 IEEE 1588 时间戳功能时适用。否则,该位被保留。
GMAC PMT 中断
该位表示 DWC_gmac 的 PMT 模块中的中断事件。软件必须读取
MAC 中的 PMT 控制和状态寄存器以获取中断的确切原因并清除
28
GPI
其源以将该位重置为 1’b0。当该位为高时,来自 DWC_gmac 子
系统(sbd_intr_o)的中断信号为高。该位仅在启用电源管理功能
时适用。否则,该位被保留。注意:GPI 和 pmt_intr_o 中断是在
不同的时钟域中产生的。
GMAC MMC 中断
该位反映了 DWC_gmac 的 MMC 模块中的中断事件。软件必须
27
GMI
读取 DWC_gmac 中相应的寄存器才能得到中断的确切原因并清
除中断源使该位为 1’b0。当该位为高时,来自 DWC_gmac 子系
统(sbd_intr_o)的中断信号为高。该位仅在启用 MAC 管理计数
器 (MMC) 时适用。否则,该位被保留。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
823/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
GMAC 线路接口中断
设置后,该位反映 DWC_gmac 接口中的以下任何中断事件(如
果存在并在您的配置中启用)
:- PCS(TBI、RTBI 或 SGMII)
:链
路更改或自动协商完成事件 - SMII 或 RGMII:链路更改事件 - 通
用输入状态 (GPIS):gpi_i 输入端口上的任何 LL 或 LH 事件要确
26
GLI
定中断的确切原因,软件必须首先读取寄存器 14(中断状态寄存
器),然后清除中断源(也清除 GLI 中断)
,读取以下任何相应的
寄存器:- PCS(TBI、RTBI 或 SGMII)
:寄存器 49(AN 状态寄
存器)- SMII 或 RGMII :寄存器 54(SGMII/RGMII/SMII 控制和
状态寄存器)-通用输入(GPI):寄存器 56(通用 IO 寄存器)当
该位为高时,来自 DWC_gmac 子系统(sbd_intr_o)的中断信号
为高。
错误位
该字段指示导致总线错误的错误类型,例如 AHB 或 AXI 接口上
的错误响应。该字段仅在位 13 (FBI) 被设置时有效。该字段不会
产生中断。
- 0 0 0:Rx DMA 写数据传输期间出错
25-23
EB
- 0 1 1:Tx DMA 读取数据传输期间出错
- 1 0 0:Rx DMA 描述符写访问期间出错
- 1 0 1:Tx DMA 描述符写访问期间出错
- 1 1 0:Rx DMA 描述符读取访问期间出错
- 1 1 1:Tx DMA 描述符读取访问期间出错注意:001 和 010 被保
留。
传输进程状态
该字段指示传输 DMA FSM 状态。该字段不会产生中断。
- 3’b000:停止;发出复位或停止传输命令
- 3’b001:运行;获取传输传输描述符
- 3’b010:运行;等待状态
22-20
TS
- 3’b011:运行;从主机内存缓冲区读取数据并将其排队到发送
缓冲区(Tx FIFO)
- 3’b100: TIME_STAMP 写状态
- 3’b101:保留以备将来使用
- 3’b110:暂停;发送描述符不可用或发送缓冲区下溢
- 3’b111:运行;关闭传输描述符
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
824/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
接收进程状态
该字段指示接收 DMA FSM 状态。该字段不会产生中断。
- 3’b000:停止:发出复位或停止接收命令
- 3’b001:运行:获取接收传输描述符
19-17
RS
- 3’b010:保留以备将来使用
- 3’b011:运行:等待接收数据包
- 3’b100:暂停:接收描述符不可用
- 3’b101:运行:关闭接收描述符
- 3’b110: TIME_STAMP 写状态
- 3’b111:运行:将接收包数据从接收缓冲区传输到主机内存
正常中断总状态为
当相应的中断位在寄存器 7(中断启用寄存器)中启用时,正常
中断摘要位值是以下位的逻辑或:- 寄存器 5[0]:发送中断 - 寄存
16
NIS
器 5[2]:发送缓冲区不可用 - 寄存器 5[6]:接收中断 - 寄存器
5[14]:早期接收中断只有未屏蔽位(在寄存器 7 中设置了中断允
许的中断)影响正常中断摘要位。这是一个粘性位,每次清除导
致 NIS 置位的相应位时都必须清除(通过向该位写入 1)。
异常中断总结
在寄存器 7(中断启用寄存器)中启用相应的中断位时,异常中
断摘要位值是以下各项的逻辑或:- 寄存器 5[1]:发送过程停止 寄存器 5[3]:发送 Jabber 超时 - 寄存器 5[4]:接收 FIFO 溢出 -
15
AIS
寄存器 5[5]:发送下溢 - 寄存器 5[7]:接收缓冲区不可用 - 寄存器
5[8]:接收过程停止 - 寄存器 5[9]:接收看门狗超时 - 寄存器 5
[10]:提前发送中断 - 寄存器 5[13]:致命总线错误只有未屏蔽的
位会影响异常中断摘要位。这是一个粘性位,每次清除导致 AIS
设置的相应位时都必须清除(通过向该位写入 1)
。
提前接收中断
14
ERI
该位表示 DMA 填充了数据包的第一个数据缓冲区。当软件向该
位写入 1 或该寄存器的位 6 (RI) 置位(以较早发生者为准)时,
该位将被清除。
致命总线错误中断
13
FBI
该位表示发生了总线错误,如位 [25:23] 中所述。设置该位后,相
应的 DMA 引擎将禁用其所有总线访问。
10
ETI
提前传输中断
该位表示要传输的帧已完全传输到 MTL 传输 FIFO。
接收看门狗超时
9
RWT
置位时,该位表示接收看门狗定时器在接收当前帧时超时,当前
帧在看门狗超时后被截断。
8
RPS
接收进程停止
当接收进程进入停止状态时,该位被置位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
825/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
接收缓冲区不可用
该位表示主机拥有接收列表中的下一个描述符并且 DMA 无法获
7
取它。接收进程暂停。要恢复处理接收描述符,主机应更改描述
RU
符的所有权并发出接收轮询请求命令。如果没有发出 Receive
Poll Demand,接收过程会在接收到下一个识别的传入帧时恢复。
仅当 DMA 拥有前一个接收描述符时,才会设置该位。
接收中断
6
该位表示帧接收完成。当接收完成时,RDES1(Disable Interrupt
RI
on Completion)的 Bit 31 在最后一个 Descriptor 中被复位,并在
descriptor 中更新特定的帧状态信息。接收保持在运行状态。
传输下溢
5
该位表示传输缓冲区在帧传输期间发生了下溢。传输暂停并设置
UNF
下溢错误 TDES0[1]。
接收溢出
4
该位表示接收缓冲区在帧接收期间发生溢出。如果将部分帧传输
OVF
到应用程序,则在 RDES0[11] 中设置溢出状态。
传输 Jabber 超时
该位表示传输 Jabber 计时器到期,当帧大小超过 2,048(启用巨
3
型帧时为 10,240 字节)时会发生这种情况。当 Jabber Timeout
TJT
发生时,传输过程中止并置于 Stopped 状态。这会导致发送
Jabber 超时 TDES0[14] 标志置为有效。
发送缓冲区不可用
该位表示主机拥有发送列表中的下一个描述符并且 DMA 无法获
2
取它。传输暂停。位 [22:20] 解释了传输过程状态转换。要恢复处
TU
理传输描述符,主机应通过设置 TDES0[31] 更改描述符的所有
权,然后发出传输轮询请求命令。
1
传输过程停止
TPS
该位在传输停止时置位。
传输中断
0
该位表示帧传输完成。当传输完成时,TDES0 的第 31 位
TI
(OWN)被复位,并在描述符中更新特定的帧状态信息。
DMA_STATUS 位域
RSVD
N/A
0
0
0
x
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
826/1016
0
SR
0
1
OSF
0
2
RW
0
RTC
0
3
RW
0
4
RW
0
DGF
0
5
RW
RFA
RW
0
6
FEF
0
7
FUF
0
8
RW
0
9
RW
0
10
RFD
0
11
RW
x
12
EFC
x
13
RW
x
14
ST
0
15
RW
0
16
TTC
0
17
RW
0
18
RSVD
FTF
0
19
N/A
TSF
RW
RW
20
RFD_2
0
21
RW
22
DFF
x
23
RFA_2
x
24
RW
0
25
RW
DT
x
26
RSF
x
27
RW
N/A
x
28
RW
29
N/A
30
RSVD
31
DMA_OP_MODE (0x1018)
RSVD
55.5.74
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
以太网控制器 ENET
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
DMA_OP_MODE [31:0]
位域
名称
描述
禁止丢弃 TCP/IP 校验和错误帧
设置此位时,MAC 不会丢弃仅具有接收校验和卸载引擎检测到的
错误的帧。此类帧在 MAC 接收到的以太网帧中没有任何错误
28
DT
(包括 FCS 错误)
,而仅在封装的有效载荷中存在错误。当该位复
位时,如果 FEF 位复位,则所有错误帧都将被丢弃。如果 IPC 完
整校验和卸载引擎(类型 2)被禁用,则该位被保留(RO 值为
1’b0)。
接收存储转发
25
RSF
当该位置位时,MTL 仅在完整的帧写入后才从 Rx FIFO 读取帧,
忽略 RTC 位。当该位复位时,Rx FIFO 在直通模式下运行,受
RTC 位指定的阈值限制。
禁用接收帧的刷新
24
DFF
当该位被设置时,由于接收描述符或缓冲区不可用,Rx DMA 不
会像在该位被复位时通常那样刷新任何帧。(请参阅第 83 页上的
“接收过程暂停”
。)
激活流量控制的阈值的 MSB
如果 DWC_gmac 配置为 8 KB 或更大的 Rx FIFO 大小,则该位
(设置时)提供额外的阈值级别,用于在半双工和全双工模式下激
活流量控制。该位(作为最高有效位)与 RFA(位 [10:9])一起
23
RFA_2
给出了以下用于激活流量控制的阈值:
- 100:满减 5 KB,即 FULL —5 KB
- 101:满减 6 KB,即 FULL —6 KB
- 110:满减 7 KB,即 FULL —7 KB
- 111:保留如果 Rx FIFO 的深度为 4 KB 或更小,则此位是保留
的(和 RO)。
停用流量控制的阈值的 MSB
如果 DWC_gmac 配置为 8 KB 或更大的 Rx FIFO 大小,则该位
(设置时)提供额外的阈值级别,用于在半双工和全双工模式下停
用流量控制。该位(作为最高有效位)与 RFD(位 [12:11])一起
22
RFD_2
给出了以下用于停用流量控制的阈值:
- 100:满减 5 KB,即 FULL —5 KB
- 101:满减 6 KB,即 FULL —6 KB
- 110:满减 7 KB,即 FULL —7 KB
- 111:保留如果 Rx FIFO 的深度为 4 KB 或更小,则此位是保留
的(和 RO)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
827/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
传输存储和转发
21
TSF
当该位被设置时,当一个完整的帧驻留在 MTL 发送 FIFO 中时,
发送开始。设置该位时,位 [16:14] 中指定的 TTC 值将被忽略。
只有在传输停止时才应更改此位。
刷新发送 FIFO
当该位被设置时,发送 FIFO 控制器逻辑被重置为其默认值,因
20
FTF
此 Tx FIFO 中的所有数据都将丢失或刷新。当刷新操作完成时,
该位在内部清零。在该位清零之前,不应写入操作模式寄存器。
MAC 发送器已经接受的数据不会被刷新。它被安排传输并导致下
溢和残帧传输。
传输阈值控制
这些位控制 MTL 发送 FIFO 的阈值电平。当 MTL Transmit FIFO
内的帧大小大于阈值时,传输开始。此外,还传输长度小于阈值
的全帧。这些位仅在位 21 (TSF) 复位时使用。
- 000:64
16-14
TTC
- 001:128
- 010:192
- 011:256
- 100:40
- 101:32
- 110:24
- 111: 16
开始或停止传输命令
当该位被设置时,传输被置于运行状态,DMA 检查当前位置的传
输列表是否有要传输的帧。可以从列表中的当前位置(即寄存器 4
(发送描述符列表地址寄存器)设置的发送列表基地址)或从先前
停止传输时保留的位置尝试获取描述符。如果 DMA 不拥有当前
描述符,则传输进入暂停状态并且寄存器 5(状态寄存器)的位 2
13
ST
(传输缓冲区不可用)被设置。开始传输命令仅在传输停止时有
效。如果在设置寄存器 4(发送描述符列表地址寄存器)之前发
出命令,则 DMA 行为是不可预测的。当该位复位时,在完成当前
帧的传输后,传输过程被置于停止状态。传输列表中的下一个描
述符位置被保存,并在传输重新开始时成为当前位置。要更改列
表地址,您需要在该位复位时使用新值对寄存器 4(发送描述符
列表地址寄存器)进行编程。再次设置该位时会考虑新值。停止
传输命令只有在当前帧传输完成或传输处于暂停状态时才有效。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
828/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
停用流控制的阈值(在半双工和全双工模式下)这些位控制阈值
(Rx FIFO 的填充级别),在该阈值处,流控制在激活后被取消断
言。
- 00:满减 1 KB,即 FULL —1 KB
12-11
RFD
- 01:满减 2 KB,即 FULL —2 KB
- 10:满减 3 KB,即 FULL —3 KB
- 11:Full - 4 KB,即 FULL —4 KB 只有流量控制被声明后,
de-assertion 才有效。如果 Rx FIFO 为 8 KB 或更大,则额外的位
(RFD_2) 用于更多阈值级别,如位 22 中所述。当 Rx FIFO 深度
小于 4 KB 时,这些位被保留且只读。
激活流量控制的阈值(在半双工和全双工模式下)这些位控制激
活流量控制的阈值(Rx FIFO 的填充水平)。
- 00:满减 1KB,即 FULL—1KB。
- 01:满减 2KB,即 FULL—2KB。
- 10:满减 3KB,即 FULL—3KB。
10-9
RFA
- 11:满减 4KB,即 FULL—4KB。这些值仅适用于 4 KB 或更大
的 Rx FIFO,并且当位 8 (EFC) 设置为高电平时。如果 Rx FIFO
为 8 KB 或更大,则额外的位 (RFA_2) 用于更多阈值级别,如位
23 中所述。当 Rx FIFO 的深度小于 4 KB 时,这些位被保留且只
读。注意:当 FIFO 大小正好为 4 KB 时,尽管 DWC_gmac 允许
您将这些位的值编程为 11,但软件不应将这些位编程为 2’b11。
值 2’b11 表示在 FIFO 空情况下的流量控制
启用硬件流控制
8
EFC
当该位被设置时,基于 Rx FIFO 的填充水平的流量控制信号操作
被启用。复位时,流量控制操作被禁用。当 Rx FIFO 小于 4 KB
时,不使用该位(保留并始终复位)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
829/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
转发错误帧
当该位复位时,Rx FIFO 丢弃具有错误状态(CRC 错误、冲突错
误、GMII_ER、巨型帧、看门狗超时或溢出)的帧。但是,如果
帧的起始字节(写)指针已经传输到读控制器端(在阈值模式下)
,
则该帧不会被丢弃。在 GMAC-MTL 配置中,在内核配置期间也
启用了帧长度 FIFO,如果该帧的起始字节未在 ARI 总线上传输
(输出)
,则 Rx FIFO 会丢弃错误帧。当 FEF 位被设置时,除矮帧
错误帧之外的所有帧都被转发到 DMA。如果位 25 (RSF) 被设置
7
FEF
并且在写入部分帧时 Rx FIFO 溢出,则无论 FEF 位设置如何,该
帧都会被丢弃。但是,如果在写入部分帧时 Bit 25 (RSF) 被重置
并且 Rx FIFO 溢出,则部分帧可能会被转发到 DMA。注意:当
FEF 位复位时,如果巨帧状态在以下配置中在 Rx 状态(表 8-6
或表 8-23)中给出:- IP 校验和引擎(类型 1)和未选择完整校验
和卸载引擎(类型 2)
。- 未选择高级时间戳功能,但选择了扩展状
态。扩展状态具有以下功能:- GMAC-CORE 或 GMAC-MTL 配
置中的 L3-L4 过滤器 - GMAC-DMA、GMAC-AHB 或 GMAC 中
具有增强描述符格式的完整校验和卸载引擎(类型 2)- AXI 配置。
转发过小的好帧
设置后,Rx FIFO 转发尺寸过小的帧(即没有错误且长度小于 64
6
FUF
字节的帧),包括填充字节和 CRC。复位时,Rx FIFO 丢弃所有
小于 64 字节的帧,除非由于接收阈值较低,例如 RTC = 01,帧
已经传输
丢弃巨型帧
当设置时,MAC 丢弃接收到的巨帧在 Rx FIFO 中,即大于计算巨
帧限制的帧。复位时,MAC 不会丢弃 Rx FIFO 中的巨帧。注意:
5
DGF
该位在以下配置中可用,其中在 Rx 状态中不提供巨帧状态并且
默认情况下不丢弃巨帧:- 在 Rx 中选择 IP 校验和卸载(类型 1)
的配置 - 其中的配置 IPC 完整校验和卸载引擎(类型 2)在具有
正常描述符格式的 Rx 中选择 - 选择高级时间戳功能的配置在所
有其他配置中,不使用该位(保留并始终重置)
接收阈值控制
这两位控制 MTL 接收 FIFO 的阈值电平。当 MTL 接收 FIFO 内的
帧大小大于阈值时,开始向 DMA 传输(请求)
。此外,长度小于
阈值的全帧会自动传输。如果配置的接收 FIFO 大小为 128 字节,
4-3
RTC
则 11 的值不适用。这些位仅在 RSF 位为零时有效,当 RSF 位设
置为 1 时被忽略。
- 00: 64
- 01:32
- 10: 96
- 11: 128
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
830/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
在第二帧上操作
2
当该位被设置时,它指示 DMA 甚至在获得第一帧的状态之前处
OSF
理传输数据的第二帧。
开始或停止接收
当该位被设置时,接收进程被置于运行状态。DMA 尝试从接收列
表中获取描述符并处理传入的帧。从列表中的当前位置尝试获取
描述符,该位置是由寄存器 3(接收描述符列表地址寄存器)设
置的地址或接收进程先前停止时保留的位置。如果 DMA 不拥有
该描述符,则接收被挂起并设置寄存器 5(状态寄存器)的位 7
1
(接收缓冲区不可用)
。开始接收命令仅在接收停止时有效。如果
SR
在设置寄存器 3(接收描述符列表地址寄存器)之前发出命令,
则 DMA 行为是不可预测的。当该位清零时,Rx DMA 操作在当前
帧传输后停止。Receive 列表中的下一个描述符位置被保存,并
在 Receive 进程重新启动后成为当前位置。Stop Receive 命令仅
在 Receive 进程处于 Running(等待接收数据包)或 Suspended
状态时有效。
DMA_OP_MODE 位域
DMA_INTR_EN (0x101C)
TIE
0
RW
0
1
TSE
0
2
TUE
0
3
RW
x
4
RW
x
5
TJE
0
6
RW
0
7
UNE
0
8
OVE
0
9
RW
x
10
RW
x
11
RIE
x
12
RUE
x
13
RW
x
14
RW
x
15
RSE
x
N/A
x
16
RW
17
ETE
x
18
RWE
x
19
RW
x
20
RW
x
21
RSVD
x
22
N/A
x
23
FBE
x
24
RW
25
ERE
26
RW
27
AIE
28
NIE
29
RW
30
RSVD
31
RW
55.5.75
0
0
0
0
0
0
0
0
DMA_INTR_EN [31:0]
位域
名称
描述
正常中断摘要使能
当该位被设置时,正常的中断汇总使能。当该位复位时,正常中
16
NIE
断汇总被禁用。该位允许寄存器 5(状态寄存器)中的以下中断:
- 寄存器 5[0]:发送中断 - 寄存器 5[2]:发送缓冲区不可用 - 寄存
器 5[6]:接收中断 - 寄存器 5[14]:提前接收中断
异常中断摘要使能
当该位置位时,异常中断汇总使能。当该位复位时,异常中断汇总
被禁用。该位允许寄存器 5(状态寄存器)中的以下中断:- 寄存
15
AIE
器 5[1]:发送过程停止 - 寄存器 5[3]:发送 Jabber 超时 - 寄存器
5[4]:接收溢出 - 寄存器 5[5]:发送下溢 - 寄存器 5[7]:接收缓冲
区不可用 - 寄存器 5[8]:接收过程停止 - 寄存器 5[9]:接收看门狗
超时 - 寄存器 5[10]:提前发送中断 - 寄存器 5[13]:致命总线错误
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
831/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
早期接收中断使能
14
ERE
当该位被设置为正常中断汇总使能(位 16)时,早期接收中断被
使能。当该位复位时,早期接收中断被禁用。
致命总线错误启用
13
FBE
当该位被设置为异常中断摘要启用(位 15)时,致命总线错误中
断被启用。当该位复位时,致命总线错误启用中断被禁用。
提前发送中断使能
10
ETE
当该位被设置为异常中断摘要使能(位 15)时,提前发送中断被
使能。当该位复位时,提前发送中断被禁用
接收看门狗超时使能
9
RWE
当该位被设置为异常中断摘要使能(位 15)时,接收看门狗超时
中断被使能。当该位复位时,接收看门狗超时中断被禁用。
接收停止启用
8
RSE
当该位被设置为异常中断摘要使能(位 15)时,接收停止中断被
使能。当该位复位时,接收停止中断被禁用。
接收缓冲区不可用使能
7
RUE
当该位被设置为异常中断摘要使能(位 15)时,接收缓冲区不可
用中断被使能。当该位复位时,接收缓冲区不可用中断被禁用。
接收中断使能
6
RIE
当该位被设置为正常中断汇总使能(位 16)时,接收中断被使能。
当该位复位时,接收中断被禁用。
下溢中断使能
5
UNE
当该位被设置为异常中断摘要使能(位 15)时,发送下溢中断被
使能。当该位复位时,下溢中断被禁用。
溢出中断使能
4
OVE
当该位被设置为异常中断摘要使能(位 15)时,接收溢出中断被
使能。当该位复位时,溢出中断被禁用。
传输 Jabber 超时启用
3
TJE
当该位被设置为异常中断摘要启用(位 15)时,发送 Jabber 超
时中断被启用。当该位复位时,发送 Jabber 超时中断被禁用。
发送缓冲区不可用使能
2
TUE
当该位被设置为正常中断摘要启用(位 16)时,发送缓冲区不可
用中断被启用。当该位复位时,发送缓冲区不可用中断被禁用
传输停止使能
1
TSE
当该位被设置为异常中断摘要使能(位 15)时,传输停止中断被
使能。当该位复位时,传输停止中断被禁用。
传输中断使能
0
TIE
当该位被设置为正常中断摘要启用(位 16)时,发送中断被启用。
当该位复位时,发送中断被禁用。
DMA_INTR_EN 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
832/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
24
23
x
x
0
0
0
0
0
0
22
21
20
19
18
17
0
0
0
0
0
16
15
14
13
12
11
10
9
8
RW
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
MISFRMCNT
25
RW
26
RW
N/A
x
27
MISCNTOVF
28
RW
29
ONFCNTOVF
30
RSVD
31
DMA_MISS_OVF_CNT (0x1020)
OVFFRMCNT
55.5.76
以太网控制器 ENET
DMA_MISS_OVF_CNT [31:0]
位域
名称
描述
FIFO 溢出计数器的溢出位
28
每次溢出帧计数器 (Bits[27:17]) 溢出时都会设置该位,即 Rx
ONFCNTOVF
FIFO 溢出时溢出帧计数器为最大值。在这种情况下,溢出帧计数
器被重置为全零,该位表示发生了翻转。
溢出帧计数器
27-17
该字段指示应用程序丢失的帧数。每次 MTL FIFO 溢出时,该计
OVFFRMCNT
数器都会增加。当使用 1’b1 处的 mci_be_i[2] 读取该寄存器时,
计数器被清零。
丢失帧计数器的溢出位
每次丢失帧计数器 (Bits[15:0]) 溢出时都会设置该位,也就是说,
16
由于主机接收缓冲区不可用且丢失帧计数器处于最大值,因此
MISCNTOVF
DMA 丢弃传入帧。在这种情况下,丢失帧计数器将重置为全零,
该位表示发生了翻转。
丢帧计数器
15-0
该字段表示由于主机接收缓冲区不可用而被控制器丢失的帧数。
MISFRMCNT
每次 DMA 丢弃传入帧时,该计数器都会递增。当使用 1’b1 处
的 mci_be_i[0] 读取该寄存器时,计数器被清零。
DMA_MISS_OVF_CNT 位域
55.5.77
DMA_RX_INTR_WDOG (0x1024)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
RW
N/A
RIWT
RSVD
31
x
DMA_RX_INTR_WDOG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
833/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
RI 看门狗定时器计数
该位表示设置看门狗定时器的系统时钟周期数乘以 256。在 Rx
DMA 完成传输一个帧后,看门狗定时器被编程的值触发,该帧的
7-0
RI 状态位未设置,因为相应描述符 RDES1[31] 中的设置。当看
RIWT
门狗定时器用完时,RI 位被置位,定时器停止。由于根据任何接
收帧的 RDES1[31] 自动设置 RI,当 RI 位设置为高电平时,看门
狗定时器会重置。
DMA_RX_INTR_WDOG 位域
1
0
UNDEF
2
RW
x
3
BLEN4
x
4
BLEN8
x
5
RW
x
6
RW
0
7
BLEN16
0
8
RW
x
9
BLEN32
x
10
BLEN64
0
11
RW
0
12
RW
0
13
BLEN128
0
14
BLEN256
0
15
RW
0
16
RW
x
17
RSVD
0
18
N/A
0
19
AXI_AAL
x
20
ONEKBBE
x
21
RW
22
RW
23
RSVD
x
24
N/A
x
25
RD_OSR_LMT
x
26
RW
27
RW
0
28
RSVD
LPI_XIT_FRM
RW
0
29
N/A
EN_LPI
30
RW
31
DMA_AXI_MODE (0x1028)
WR_OSR_LMT
55.5.78
0
0
0
0
0
0
0
0
DMA_AXI_MODE [31:0]
位域
名称
描述
启用低功耗接口 (LPI)
当设置为 1 时,该位启用 GMAC-AXI 配置支持的 LPI 模式并接受
来自 AXI 系统时钟控制器的 LPI 请求。当设置为 0 时,该位禁用
31
EN_LPI
LPI 模式并始终拒绝来自 AXI 系统时钟控制器的 LPI 请求。
”
” 解锁魔术包或远程唤醒帧
当设置为 1 时,该位使 GMAC-AXI 仅在收到幻包或远程唤醒帧时
才退出 LPI 模式。当设置为 0 时,该位使 GMAC-AXI 在接收到任
何帧时退出 LPI 模式。
解锁唤醒包或远程唤醒帧
30
LPI_XIT_FRM
当设置为 1 时,该位使 GMAC-AXI 仅在收到幻包或远程唤醒帧时
才退出 LPI 模式。当设置为 0 时,该位使 GMAC-AXI 在接收到任
何帧时退出 LPI 模式。
AXI 最大写入未完成请求限制
该值限制了 AXI 写入接口上的最大未完成请求。最大未完成请求
23-20
WR_OSR_LMT
数 = WR_OSR_LMT+1 注意:- 如果
AXI_GM_MAX_WR_REQUESTS = 4,则保留位 22。- 如果
AXI_GM_MAX_WR_REQUESTS != 16,则保留位 23。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
834/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
AXI 最大读取未完成请求限制
该值限制了 AXI 读取接口上的最大未完成请求。最大未完成请求
19-16
RD_OSR_LMT
数 = RD_OSR_LMT+1 注意:- 如果
AXI_GM_MAX_RD_REQUESTS = 4,则保留位 18。- 如果
AXI_GM_MAX_RD_REQUESTS != 16,则保留位 19。
GMAC-AXI Master 的 1 KB 边界交叉使能
13
ONEKBBE
设置后,GMAC-AXI 主设备执行不跨越 1 KB 边界的突发传输。
复位时,GMAC-AXI 主设备执行不跨越 4 KB 边界的突发传输。
地址对齐的节拍
12
AXI_AAL
该位是只读位,反映寄存器 0(总线模式寄存器)的位 25 (AAL)。
当该位设置为 1 时,GMAC-AXI 在读取和写入通道上执行地址对
齐的突发传输
AXI 突发长度 256
7
BLEN256
当该位设置为 1 时,允许 GMAC-AXI 在 AXI 主接口上选择 256
的突发长度。该位仅在配置参数 AXI_BL 设置为 256 时出现。否
则,该位保留且为只读 (RO)
AXI 突发长度 128
6
BLEN128
当该位设置为 1 时,允许 GMAC-AXI 在 AXI 主接口上选择 128
的突发长度。该位仅在配置参数 AXI_BL 设置为 128 或更多时出
现。否则,该位是保留的并且是只读的 (RO)。
AXI 突发长度 64
5
BLEN64
当该位设置为 1 时,允许 GMAC-AXI 在 AXI 主接口上选择 64 的
突发长度。该位仅在配置参数 AXI_BL 设置为 64 或更多时出现。
否则,该位是保留的并且是只读的 (RO)。
AXI 突发长度 32
4
BLEN32
当该位设置为 1 时,允许 GMAC-AXI 在 AXI 主接口上选择 32 的
突发长度。该位仅在配置参数 AXI_BL 设置为 32 或更多时出现。
否则,该位是保留的并且是只读的 (RO)。
AXI 突发长度 16
3
BLEN16
当该位设置为 1 或 UNDEF 设置为 1 时,GMAC-AXI 可以在 AXI
主接口上选择突发长度为 16。
AXI 突发长度 8
2
BLEN8
当该位设置为 1 时,允许 GMAC-AXI 在 AXI 主接口上选择突发
长度为 8。当 UNDEF 设置为 1 时,设置此位无效。
AXI 突发长度 4
1
BLEN4
当该位设置为 1 时,允许 GMAC-AXI 在 AXI 主接口上选择突发
长度为 4。当 UNDEF 设置为 1 时,设置此位无效。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
835/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
AXI 未定义突发传输长度
该位是只读位,指示寄存器 0(总线模式寄存器)中位 16 (FB) 的
补码(反相)值。- 当该位设置为 1 时,允许 GMAC-AXI 执行等
0
于或低于位 [7:3] 中编程的最大允许突发长度的任何突发长度。-
UNDEF
当该位设置为 0 时,GMAC-AXI 只允许执行由 BLEN256、
BLEN128、BLEN64、BLEN32、BLEN16、BLEN8 或 BLEN4 指
示的固定突发长度,或突发长度为 1。如果设置了 UNDEF 并且
未设置任何 BLEN 位,则允许 GMAC-AXI 执行长度为 16 的突发。
DMA_AXI_MODE 位域
DMA_BUS_STATUS (0x102C)
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
1
0
AXWHSTS
28
RW
29
AXIRDSTS
30
RSVD
31
RW
55.5.79
0
0
DMA_BUS_STATUS [31:0]
位域
名称
描述
AXI 主读通道状态
1
为高电平时,表示 AXI 主设备的读通道处于活动状态并正在传输
AXIRDSTS
数据。
AXI 主写通道或 AHB 主状态
0
当为高电平时,表示 AXI 主设备的写入通道处于活动状态,并在
AXWHSTS
GMAC-AXI 配置中传输数据。在 GMAC-AHB 配置中,表示 AHB
主接口 FSM 处于非空闲状态。
DMA_BUS_STATUS 位域
55.5.80
DMA_CURR_HOST_TX_DESC (0x1048)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CURTDESAPTR
31
0
DMA_CURR_HOST_TX_DESC [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
836/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
CURTDESAPTR
以太网控制器 ENET
描述
主机传输描述符地址指针
复位时清除。操作期间由 DMA 更新的指针
DMA_CURR_HOST_TX_DESC 位域
55.5.81
DMA_CURR_HOST_RX_DESC (0x104C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CURRDESAPTR
31
0
DMA_CURR_HOST_RX_DESC [31:0]
位域
名称
描述
31-0
CURRDESAPTR
主机接收描述符地址指针
复位时清除。操作期间由 DMA 更新的指针
DMA_CURR_HOST_RX_DESC 位域
55.5.82
DMA_CURR_HOST_TX_BUF (0x1050)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CURTBUFAPTR
31
0
DMA_CURR_HOST_TX_BUF [31:0]
位域
名称
描述
31-0
CURTBUFAPTR
主机发送缓冲区地址指针
复位时清除。操作期间由 DMA 更新的指针
DMA_CURR_HOST_TX_BUF 位域
55.5.83
DMA_CURR_HOST_RX_BUF (0x1054)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
837/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
3
2
1
0
x
x
x
x
x
RW
CURRBUFAPTR
31
以太网控制器 ENET
0
DMA_CURR_HOST_RX_BUF [31:0]
位域
名称
描述
31-0
CURRBUFAPTR
主机接收缓冲区地址指针
复位时清除。操作期间由 DMA 更新的指针
DMA_CURR_HOST_RX_BUF 位域
0
RSVD
15
x
x
x
0
14
13
0
0
12
11
10
0
x
0
9
8
7
6
5
x
x
x
x
x
RSVD
x
16
N/A
x
17
RW
x
18
RSVD
x
N/A
x
19
ENET0_RMII_TXCLK_SEL
x
20
N/A
x
21
ENET0_FLOWCTRL
x
22
ENET0_PHY_INF_SEL
x
0
23
RW
x
24
RW
25
RSVD
26
N/A
27
ENET0_REFCLK_OE
28
RW
N/A
x
29
ENET0_LPI_IRQ_EN
30
RSVD
31
CTRL2 (0x3008)
RW
55.5.84
CTRL2 [31:0]
位域
29
19
名称
ENET0_LPI_IRQ_
EN
ENET0_REFCLK_
OE
描述
lowpower interrupt enable, for internal use only, user should use
core registers for enable/disable interrupt
RMII 模式参考时钟输出使能,选择内部输出参考时钟时需要设置
此位。
PHY 选择
15-13
ENET0_PHY_INF_
SEL
000MII; 001RGMII; 100RMII;
注意:需在配置 IOMUX 之前设置此位,不然千兆模式可能工作
不正常
12
ENET0_FLOWCT
RL
flow control request
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
838/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
以太网控制器 ENET
描述
ENET0 RMII 时钟选择
10
ENET0_RMII_TXC
LK_SEL
1:从芯片 pad 来(这里分两种情况,一种是使用芯片外部时钟,
从引脚输入,另一种是使用芯片内部时钟,为平衡时序,时钟会
输出到引脚后再返回)
CTRL2 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
839/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用串行总线 USB
通用串行总线 USB
56
功能简介
56.1
提供 USB 通信解决方案, 完全兼容 USB2.0 协议
● 支持 OTG(可配置成主机 host 模式, 也可配置成设备 device 模式)
● 主机模式支持高速 (480Mbps), 全速 (12Mbps) 和低速 (1.5Mbps)
● 设备模式支持高速 (480Mbps), 全速 (12Mbps)
● 设备模式支持 8 个双向端点 (8IN + 8OUT endpoint)
● 内置片上高速 usbphy(支持全速和低速)
● 内置 DMA, 通过描述符,无需 cpu 参与即可完成 usb 与系统存储器之间的数据交互
● 主机模式软件结构完全兼容 EHCI1.0(Enhanced Host Controller Interface Specification for Universal Serial Bus) 协议
● 低功耗模式,可以关掉片上所有 PLL 的情况下, 通过片上 osc 时钟完成唤醒
管脚说明
56.2
表 227: USB 管脚说明
管脚
方向
功能描述
USB_VBUS
输入
VBUS 检测信号。
USB_ID
输入
ID 检测信号。
USB_OC
输入
过流信号。
USB_DP
双向
差分信号正端。
USB_DN
双向
差分信号负端。
工作流程
56.3
56.3.1
usbphy 初始化
退出 reset 状态:OTG_CTRL0.OTG_UTMI_RESRET_SW=0
退出 suspend 状态:OTG_CTRL0.OTG_UTMI_SUSPENDM_SW=1
检测 usbphy 时钟:PHY_STATUS.UTMI_CLK_VALID=1
等待 usbphy 时钟稳定:while(PHY_STATUS.UTMI_CLK_VALID==1)
56.3.2
配置工作模式
系统上电后 USB 模块处于 OTG 模式, 如需改变模式,先进行 usb reset(USBCMD.RST=1).
用户可以根据需求配置成主机或者设备模式.
也可以保持 OTG 模式, 根据外部连接情况进行配置.
如果是 micro-AB 接口, 保持 ID 为高 (通过 gpio 配置上拉), 保持 VBUS 为低
● 检测到 ID 变低, 说明有设备接入 (也可能有 otg 线插入),设置成主机模式 (USBMODE.CM=3)
● 检测到 VBUS 变高,说明有主机接入,设置成设备模式 (USBMODE.CM=2)
如果是 typeC 接口, 请参考 typeC 协议设置主机或设备模式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
840/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
56.3.3
通用串行总线 USB
主机初始化流程
打开 VBUS(一般通过 gpio 控制板子上的供电芯片).
打开端口:PORTSC1.PP=1
等待设备连接,在收到端口变化中断 (USBSTS.PCI) 后, 检查端口连接状态 (PORTSC1.CCS),1 表示有设备
连接
检查 linestate:PHY_STATUS.LINE_STATE
为 2,表示接入的是低速设备,需要使用串行模式 (设置 PORTSC1.STS=1)
为 1,表示接入的是全速或者高速设备,使用并行模式 (设置 PORTSC1.STS=0)
启动 USB:USBCMD.RS=1
reset 设备:PORTSC1.PR=1
等待 bus reset 结束:while(PORTSC1.PR==1), 这个时间大概在 55ms 左右,期间会收到端口变化的中断
(USBSTS.PCI)
确定设备连接速度:PORTSC1.PSPD
枚举设备 (具体流程参考 EHCI 协议)
56.3.4
设备初始化流程
设置并行模式 (设备模式不支持低速, 可以全部工作在并行模式) :PORTSC1.STS=0
准备好端点 0 的接收描述符, 并将其地址写入 ENDPTLISTADDR.
等待 VBUS(OTGSC.AVV) 为 1.
启动 USB:USBCMD.RS=1
等待主机发送 bus reset(USBSTS.URI)
等待端口变化中断 USBSTS.PCI.
确定主机连接速度:PORTSC1.PSPD
等待主机发起枚举并响应.
56.4
56.4.1
数据结构
主机数据结构
为方便软件开发,主机数据结构完全兼容 EHCI1.0 协议,具体请参考协议.
这里简单介绍一下 BULK/CTRL 传输使用的异步队列, 所有图片来源于 EHCI 协议
异步队列是一个循环链表,如图 99所示,链表中每一项 (也叫 qhead) 对应一个端点 (EP, endpoint), 一个主
机可以连接多个设备,一个设备可以有多个端点.
硬件会轮询这个链表,看是否有需要传输的数据. 其中一个 qhead 会标记 H 为 1,表示链表头,当硬件两次轮
询到链表头之间,没有数据传输时,会停止轮询。软件在初始化时需将链表头的地址写入 ASYNCLISTADDR 寄存
器,硬件会在轮询过程中实时更新 ASYNCLISTADDR 为当前正在执行的 qhead 地址每个 qhead 可以链接 0 到
多个 qTD,qTD 用于传输数据,包含数据包地址,传输状态,以及下一个 qTD 地址。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
841/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用串行总线 USB
图 99: 异步队列示意图
qhead 结构如图 100所示,
图 100: qhead 示意图
简单介绍下 BULK/CTRL 传输需要用到的部分,未介绍的详见 EHCI 协议。
qhead 的字节 0x10 及之后部分,也叫 Transfer Overlay,硬件会把当前传输的 qTD 写到 qhead 的这部分空
间,在当前 qTD 传输完成前,在 qhead 里更新状态,传输完成后回写到 qTD
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
842/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
字节
位
0x00
31:5
通用串行总线 USB
描述
Queue Head Horizontal Link Pointer
表示下一个 qhead 地址,qhead 数据结构必须 32byte 对齐,如果当前应用中
只有一个设备的一个端点,这个地址可以指向 qhead 本身。
0x00
2:1
0x00
0
0x04
31:28
0x04
27
0x04
26:16
0x04
15
Typ 是 qhead 类型,BULK 和 CTRL 传输需要设成 01。
T 是 Terminate 的简称,设 1 表示当前地址无效,对于 BULK/CTRL 的 qhead,
Queue Head Horizontal Link Pointer 的 T 需要为 0。
RL 设 0
C 表示 CTRL 端点,当 qhead.EPS 为高速设备且当前端点是 CTRL 端点时,
需要设 1,其他情况设 0
Maximum Packet Length, 当前端点最大数据包长度,主机枚举过程中可以在
设备获得,未获得之前可以设成 8
H 表示当前 qehad 是链表中第一个,整个 qhead 链表中有且仅有一个 qehad
需要设 H=1
dtc,data toggle control,设 1 表示用 qtd 的 DT 位作为当前传输的 data
0x04
14
toggle 位;0 表示由硬件维护 data toggle;在 CTRL 传输时,data toggle 有些
特殊需要用到 (详见 usb2 协议 8.5.3)
EPS, 表示端点速度,全速 00,低速 01,高速 10,11 为 reserved
0x04
13:12
0x04
11:8
0x04
7
0x04
6:0
DeviceAddress 表示当前 qhead 对应的设备地址
0x08
31:0
用于同步传输以及 hub 相关,简单应用时设 0
0x0C
31:5
Current qTD Pointer, 硬件用于维护当前传输的 qTD 地址,软件初始化时设 0
0x10
31:5
Next qTD Pointer,表示下一个 qTD 地址
0x10
0
0x14
31:0
0x18
31
EndPt, 表示当前 qhead 对应的端点号
I 是同步队列需要用的,对于 BULK/CTRL 传输设 0
T 是 Terminate 的简称,设 0 表示当前地址有效, 软件初始化 qhead 时,如果
没有需要传输的数据,需要设 T 为 1
简单应用设 1 即可 (或者 T=1,其他部分随意, 比如 0xbadbadff)
dt,data toggle,当 qhead.dtc 为 1 时,硬件用这一位作为当前传输的起始
data toggle,简单应用时仅用于 CTRL 传输
Total Bytes Transfer,当前 dTD 需要传输的数据长度,最大支持 20Kbyte,建
议最大 16Kbyte。
对于 OUT,软件初始化为需要发送的数据,硬件在每传输一个数据包 (长度为
0x18
30:16
Maximum Packet Length, 最后一个数据包除外) 后递减,当传输完成后应当为
0;
对于 IN,软件初始化为接收空间的大小,硬件在每传输一个数据包后更新这个
值,当为 0 或者收到 short packet(数据包长度小于 Maximum Packet Length)
后当前 qTD 传输完成,结果可能不为 0
ioc,Interrup On Complete,设 1 表示当前 qTD 传输完成后置位 USBSTS.UI,
0x18
15
用于产生中断,对于多 qTD 的传输,软件可以仅置位最后一个 qTD 的 ioc 位,
这样可以减少中断次数提高传输效率
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
843/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
字节
位
0x18
14:12
0x18
11:10
0x18
9:8
通用串行总线 USB
描述
CPage,数据 buffer 的指针,软件需要初始化为 0,硬件会实时更新,表示当前
数据在哪个 buffer(有效值为 0 到 4,对应 qTD 中 Buffer Pointer Page 0 到 4)
Cerr,传输错误计数器,软件需初始化为 3,每次传输错误会减一,到 0 后当
前 qTD 会结束并置位 USBSTS.UEI, 用于产生出错中断
PID Code,当前 qtd 传输的 PID,有效值为:OUT-00,IN-01,SETUP-10
Status,用于表示当前 qTD 状态,软件需要初始化成 0x80.
bit7:Active,用于表示当前 qTD 是否有效,硬件仅在 Active=1 时会认为有效
而进行传输,当传输完成后会将 Active 清零;
bit6:Halt,当硬件碰到严重错误 (babble,Cerr 计数到 0,收到 STALL) 时,
0x18
7:0
硬件将 Halt 置 1,同时将 Active 清零;
bit5:Data Buffer Error,当发生 overrun 或者 underrun 时会置 1;
bit4:Babble,硬件检测到 babble(USB2 协议,8.7.4) 情况时置 1;
bit3:XactErr,表示发生传输错误,具体错误类型详见 EHCI 协议 4.15.1.1;
bit2:0 在简单应用时可忽略。
Buffer Pointer (Page 0),数据包起始地址,由 buffer0 和 current offset 指定,
0x1C
31:12
硬件在传输完 buffer0 的数据后,会切换地址到 buffer1 开始传输,5 个 buffer
可以是连续地址也可以不连续,只需要 4Kbyte 对齐即可
Current Offset,软件初始化为数据包在 buffer0 的起始偏移量,硬件传输过程
0x1C
11:0
中会实时更新为当前 buffer(由 cpage 指定) 的偏移量,表示已经传输了多少数
据
0x20 至
0x2F
31:12
qhead 余下部分,简单应用时只需配置数据 buffer pointer 地址即可
(page1,2,3,4)
表 228: qhead 结构
qtd 结构如图 101所示, 内容和 qhead overlay 部分相同,软件在需要传输数据时,需要初始化好一个或多个
qtd,将第一个 qtd 地址写到 qhead.Next qTD Pointer 即可。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
844/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用串行总线 USB
图 101: qtd 示意图
56.4.2
设备数据结构
设备数据结构指软件在存储空间中分配的一段空间,由以下几个部分组成:
● dqhlist,存储所有 dqh,每个端点对应两个 dqh(IN 和 OUT),每个 dqh 占用 64-byte,dqhlist 的起始地
址必须 2Kbyte 对齐。
● dqh,用于配置该端点参数,包含最大数据包长度,当前以及下一个传输描述符地址,同时会保存当前传
输描述符内容,如图 103所示。详细信息如??所示。
● dtd,传输描述符,用于传输数据,保护数据长度,起始地址,状态等信息, 如图 104所示
如图 102所示,寄存器的 ENDPTLISTADDR,指向 dqhlist 的起始地址。软件需要在启动 USB(USBCMD.RS=1)
前准备好至少端点 0 的接收 dqh(EP0 的 OUT dqh,位于 dqhlist 起始地址),用于接收主机发送的枚举信息中第
一个 SETUP 数据包,之后根据接收到的数据,准备相应端点的 dqh 以及 dtd。
这里以接收枚举的第一个 SETUP 数据包为例,简单介绍软件流程:
● 给 dqhlist 准备一块 2Kbyte 对齐的空间,起始地址写入 ENDPTLISTADDR,大小为设备所需最大端点
号乘 128byte。比如一个 mass storage 设备,除端点 0 外还需要端点 1 作为 IN,端点 2 和端点 3 作
为 OUT,那么 dqhlist 需要 4*128=512byte; 极端情况某设备仅需要端点 7 作为 IN,那么 dqhlist 需要
8*128=1Kbyte;
● 准备端点 0 的接收 dqh(地址位于 dqhlist+0x00),Maximum Packet Length 设置成本设备支持的最大数
据包长度,一般低速为 8,全速或高速为 64;ios 设 1 用于收到 SETUP 后产生中断;T=1;Status=0;
其他部分随意;
● 准备端点 0 的发送 dqh(地址位于 dqhlist+0x40),Maximum Packet Length 设置成本设备支持的最大数
据包长度,Status=0, 其他部分随意;
● 设置 USBINTR.UI=1, 等待中断;
● 收到 UI 中断后,SETUP 数据包的 8byte 内容会存放在端点 0 接收 dqh 的 Setup Buffer 中,根据 SETUP
内容准备响应;
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
845/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用串行总线 USB
● 假设收到的是 GET DESC,需要准备设备信息返回给主机,软件需要准备一个 IN dtd 返回数据,以及一
个 0byte 的 OUT dtd 作为 Status 阶段的结束。
● 对于 IN dtd,T=1;TotalBytes 为设备信息字节数;Status=0x80;数据起始地址写入 buffer0 以及 Current
Offset,如需要 (设备信息的内容跨 4K 地址) 可以准备 buffer1,其他部分为 0;
● 对于 OUT dtd,T=1,TotalBytes=0,Status=0x80,ioc=1,其他为 0;
● 将 IN dtd 地址写入端点 0 IN dqh 的 Next dTD Pointer 并清零 T,设置 ENDPTPRIME 的 bit16,等待
bit16 被硬件自动清零 (此时硬件会从 IN0 dqh 中读取相应内容,将需要发送的数据读入内部存储空间,
结束后会清零 ENDPTPRIME 的对应 bit); 以上内容称为 PRIME EP0 IN。
● 同样做法,PRIME EP0 OUT
● 等待中断;如果正常完成,应该是收到 EP0 的 OUT 中断,因为以上流程中设置了 OUT dtd 的 ioc,没
有设置 IN 的 ioc。
图 102: dqhlist 示意图
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 word
mult
zlt
0
0
ios
max_packet_size
03-00h
0
cur_dtd_addr
0
nxt_dtd_addr
0
total_bytes
ioc
c_page
multo
0
status
07-04h
T 0B-08h
0F-0Ch
buffer(page 0)
current_offset
13-10h
buffer(page 1)
reserved
17-14h
buffer(page 2)
reserved
1B-18h
buffer(page 3)
reserved
1F-1Ch
buffer(page 4)
reserved
23-20h
reserved
27-24h
setup buffer bytes 3..0
2B-28h
setup buffer bytes 7..4
2F-2Ch
图 103: dqh 示意图
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
846/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用串行总线 USB
图 104: dtd 示意图
类似于主机 qhea 的 overlay 部分,设备 dtd 也会被硬件全部复制到 dqh 中再进行传输,所以 dqh 中一部分
(0x08 至 0x23) 和 dtd 完全一致。
设备数据结构 dqh 详解如下:
字节
位
0x00
31:30
0x00
29
0x00
26:16
0x00
15
0x04
31:5
0x08
31:5
0x08
0
描述
mult, ISO 端点,必须设置成 1/2/3,表示每个 dTD 可以传输多少数据包
非 ISO 端点,必须设置为 0。
zlt, 设 1 表示,当传输长度是最大数据包长度的整数倍时,最后加一个 0 长度
数据包作为传输结束标志。仅用于非 ISO 端点
max_packet_size,端点的最大数据包长度。
ios, interrupt on setup, 设 1 表示,当 CTRL 端点收到 SETUP 数据包后会将
USBSTS.UI 置位.CTRL 端点的 dqh 需要设置此位
cur_dtd_addr, 当前 dqh 中正在传输的 dtd 物理地址,32 字节对齐。端点 prime
时,或者当一个 dtd 传输完成后,硬件会把 nxt_dtd_addr 复制到当前位置
nxt_dtd_addr, 下一个将要处理的 dtd 物理地址,32 字节对齐
T(Terminate), 表示 nxt_dtd_addr 地址是否有效,0 表示有效,1 表示当前 dtd 是
最后一个,队列中没有下一个有效 dtd
total_bytes, 表示当前 dtd 需要传输的长度。
0x0C
30:16
对于 IN,表示需要传给主机的数据包长度;
对于 OUT,表示可以从主机接收的长度,实际接收的长度可能小于这个值.
0x0C
15
0x0C
14:12
ioc,Interrup On Complete,设 1 表示,当前 dtd 传输完成后,会将
USBSTS.UI 置位
CPage,当前 buffer,软件需要初始化成 0,硬件会在传输过程中实时更新
multo,用于 dtd 覆盖 dqh 的 mult 部分.
0x0C
11:10
例如,dqh.mult=3, max_packet_size=,512. 当需要传输 1023byte 数据时,软
件需要将 dtd.multo 设成 2,这样会传输 2 个数据包:512+511;
如果软件不设置 multo(为 0 的话),会传输 3 个数据包:512+511+0.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
847/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
字节
位
通用串行总线 USB
描述
Status,用于表示当前 dtd 状态,软件需要初始化成 0x80.
bit7: Active, 表示当前 dtd 有效, 软件需要在准备 dtd 的时候将这个位设 1, 硬件
0x0C
7:0
在完成传输后会将这个位清零. Bit6: Halted. 表示当前端点发生处于 Halt 状态
bit5: data buffer error. 表示 buffer underrun(IN) 或者 overrun(OUT) bit3:
transaction error. 表示数据传输有错误 bit2:0 在简单应用时可忽略。
Buffer Pointer (Page 0),每个 dtd 有 5 个 buffer, 每个 4Kbyte, 可以是连续的物
0x10
31:12
理地址 (buffer[n]=buffer[n-1]+0x1000, 也可以是离散的地址. Buffer page0 的
起始地址由 current_offset 指定,其他 buffer 必须 4Kbyte 对齐. 最大可以传输
20Kbyte 数据, 如果起始地址不是 4Kbyte 对齐,建议不要超过 16Kbyte
Current Offset,软件初始化为数据包在 buffer0 的起始偏移量,硬件传输过程
0x10
11:0
中会实时更新为当前 buffer(由 cpage 指定) 的偏移量,表示已经传输了多少数
据
0x14 至
0x23
0x28 至
0x2F
31:12
31:0
数据 buffer pointer 地址 (page1,2,3,4)
setup buffer,dqh 的最后 8 字节,用于存放 SETUP 数据包,当收到 SETUP
包后,会将 8 字节 SETUP 数据存放在端点 0 的 OUT dqh 中
表 229: dqh 结构
56.5
USB 寄存器列表
USB0 base address: 0xF2020000
地址偏移
名称
描述
General Purpose Timer #0 Load
复位值
0x0080
GPTIMER0LD
0x0084
GPTIMER0CTRL
0x0088
GPTIMER1LD
0x008C
GPTIMER1CTRL
0x0090
SBUSCFG
System Bus Config Register
0x00000000
0x0140
USBCMD
USB Command Register
0x00080000
0x0144
USBSTS
USB Status Register
0x00000000
0x0148
USBINTR
Interrupt Enable Register
0x00000000
0x014C
FRINDEX
USB Frame Index Register
0x00000000
0x0154
DEVICEADDR
Device Address Register
0x00000000
0x0154
PERIODICLISTBASE
0x0158
ASYNCLISTADDR
Next Asynch. Address Register
0x00000000
0x0158
ENDPTLISTADDR
Endpoint List Address Register
0x00000000
Register
General Purpose Timer #0
Controller Register
General Purpose Timer #1 Load
Register
General Purpose Timer #1
Controller Register
Frame List Base Address
Register
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
848/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
名称
通用串行总线 USB
描述
Programmable Burst Size
复位值
0x0160
BURSTSIZE
0x0164
TXFILLTUNING
TX FIFO Fill Tuning Register
0x00000000
0x0178
ENDPTNAK
Endpoint NAK Register
0x00000000
0x017C
ENDPTNAKEN
Endpoint NAK Enable Register
0x00000000
0x0184
PORTSC1
Port Status & Control
0x00000000
0x01A4
OTGSC
0x01A8
USBMODE
USB Device Mode Register
0x00000000
0x01AC
ENDPTSETUPSTAT
Endpoint Setup Status Register
0x00000000
0x01B0
ENDPTPRIME
Endpoint Prime Register
0x00000000
0x01B4
ENDPTFLUSH
Endpoint Flush Register
0x00000000
0x01B8
ENDPTSTAT
Endpoint Status Register
0x00000000
0x01BC
ENDPTCOMPLETE
Endpoint Complete Register
0x00000000
0x01C0
ENDPTCTRL[ENDPTCTRL0]
0x01C4
ENDPTCTRL[ENDPTCTRL1]
0x01C8
ENDPTCTRL[ENDPTCTRL2]
0x01CC
ENDPTCTRL[ENDPTCTRL3]
0x01D0
ENDPTCTRL[ENDPTCTRL4]
0x01D4
ENDPTCTRL[ENDPTCTRL5]
0x01D8
ENDPTCTRL[ENDPTCTRL6]
0x01DC
ENDPTCTRL[ENDPTCTRL7]
0x0200
OTG_CTRL0
0x00000000
0x0210
PHY_CTRL0
0x00000000
0x0214
PHY_CTRL1
0x00000000
0x0220
TOP_STATUS
0x00000000
0x0224
PHY_STATUS
0x00000000
Register
On-The-Go Status & control
Register
Endpoint Control0 Register...
Endpoint Control7 Register
Endpoint Control0 Register...
Endpoint Control7 Register
Endpoint Control0 Register...
Endpoint Control7 Register
Endpoint Control0 Register...
Endpoint Control7 Register
Endpoint Control0 Register...
Endpoint Control7 Register
Endpoint Control0 Register...
Endpoint Control7 Register
Endpoint Control0 Register...
Endpoint Control7 Register
Endpoint Control0 Register...
Endpoint Control7 Register
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
表 230: USB 寄存器列表
56.6
56.6.1
USB 寄存器描述
GPTIMER0LD (0x80)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
849/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
x
x
x
x
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
x
x
x
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
GPTLD
30
RW
N/A
RSVD
31
通用串行总线 USB
x
GPTIMER0LD [31:0]
位域
名称
描述
通用定时器 0 重置值
当 GPTRST 位设置为“1b”时,这些位字段加载到 GPTCNT 位。
23-0
该值表示计时器持续时间的时间(微秒减 1)。
GPTLD
示例:对于一毫秒计时器,加载 1000-1=999 或 0x0003E7。
注:最大值为 0xFFFFFF 或 16.777215 秒。
GPTIMER0LD 位域
25
x
x
x
24
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
GPTCNT
x
26
RO
x
27
GPTMODE
0
28
RW
GPTRST
WO
0
29
RSVD
GPTRUN
30
RW
31
GPTIMER0CTRL (0x84)
N/A
56.6.2
GPTIMER0CTRL [31:0]
位域
名称
描述
通用定时器 0 启动
31
GPTRUN
0:计时器停止(保持原值)
1:计时器工作(倒计时)
注:GPTCNT 不会因为此位的设置或清除而变化
通用定时器 0 重置
30
GPTRST
0:无操作
1:将 GPTLD 的值加载到计时器 GPTCNT 中
通用定时器 0 模式
24
GPTMODE
0:单次模式,计时器将倒计时至零,生成中断,并停止;
1:重复模式,计时器将倒计时至零,生成中断并自动重新加载
GPTLD 位的值,继续倒计时。
23-0
GPTCNT
通用定时器 0 时间
此位表示当前通用定时器的值。
GPTIMER0CTRL 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
850/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
GPTIMER1LD (0x88)
30
29
28
x
x
x
x
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
RW
N/A
RSVD
31
GPTLD
56.6.3
通用串行总线 USB
x
GPTIMER1LD [31:0]
位域
名称
描述
23-0
GPTLD
通用定时器 1 重置值
GPTIMER1LD 位域
25
x
x
x
24
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
GPTCNT
x
26
0
RO
x
27
GPTMODE
0
28
RW
GPTRST
WO
0
29
RSVD
GPTRUN
30
RW
31
GPTIMER1CTRL (0x8C)
N/A
56.6.4
GPTIMER1CTRL [31:0]
位域
名称
描述
31
GPTRUN
通用定时器 1 启动
30
GPTRST
通用定时器 1 重置
24
GPTMODE
通用定时器 1 模式
23-0
GPTCNT
通用定时器 1 时间
GPTIMER1CTRL 位域
SBUSCFG (0x90)
30
29
28
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
x
RW
N/A
RSVD
31
AHBBRST
56.6.5
SBUSCFG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
851/1016
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
AHB 主接口突发配置
这些位控制 AHB 主传输类型序列(或优先级)
。
000-仅限未指定长度的增量突发,长度由 BURSTSIZE 寄存器决
定
001-INCR4 突发,然后单次传输
2-0
010-INCR8 突发,INCR4 突发,然后单次传输
AHBBRST
011-INCR16 突发、INCR8 突发、INCR4 突发,然后是单次传输
100-保留,不使用
101-增量突发,然后是未指定长度的增量突发
110-INCR8 突发、INCR4 突发,然后是未指定长度的增量突发
111-INCR16 突发、INCR8 突发、INCR4 突发,然后是未指定长
度的增量突发
SBUSCFG 位域
USBCMD (0x140)
0
x
0
0
0
3
2
0
0
1
0
0
USBCMD [31:0]
位域
名称
描述
中断阈值控制
系统软件使用此字段设置主机/设备控制器发出中断的最大速率。
ITC 包含以微帧为单位测量的最大中断间隔。有效值如下所示
00000000-立即(无阈值)
00000001-1 微帧
23-16
ITC
00000010-2 微帧
00000100-4 微帧
00001000-8 微帧
00010000-16 微帧
00100000-32 微帧
01000000-64 微帧
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
852/1016
0
RS
0
4
RW
x
5
RST
0
6
RW
x
7
FS_1
0
8
RW
0
9
PSE
RW
0
10
ASE
0
11
RW
0
ITC
0
1
12
RW
0
13
IAA
0
14
RSVD
0
N/A
x
15
RW
0
16
N/A
x
17
ASP
x
18
RW
x
19
RSVD
20
N/A
21
ASPE
22
RW
23
RSVD
x
24
SUTW
x
25
RW
x
26
N/A
x
27
ATDTW
28
RW
29
FS_2
30
RSVD
31
RW
56.6.6
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
帧列表大小。[仅主机模式]
此字段指定帧列表的大小,用于控制帧索引寄存器中的哪些位应
用于帧列表当前索引。
注:该字段由 USBCMD 位 15、3 和 2 组成。
0b000-1024 个元素(4096 字节)默认值
15
FS_2
0b001-512 个元素(2048 字节)
0b010-256 个元素(1024 字节)
0b011-128 个元素(512 字节)
0b100-64 个元素(256 字节)
0b101-32 个元素(128 字节)
0b110-16 个元素(64 字节)
0b111-8 个元素(32 字节)
添加 dTD TripWire。[仅限设备模式]
此位用作标志位,以确保将新 dTD 正确添加到活动(已启动)端
14
ATDTW
点的链接列表中。该位由软件设置和清除。
当状态机是危险区域时,硬件也会清除该位,在该危险区域中,
向预处理端点添加 dTD 可能无法识别。
设置 TripWire。[仅限设备模式]
此位用作标志位,以确保 DCD 从 QH 中提取 8 字节的设置数据
有效负载而不会损坏。
13
SUTW
如果设置锁定模式关闭(USB 核心寄存器 USBMODE 中的
SLOM 位,请参阅 USBMODE),
则当 DCD 从 QH 复制上一个设置数据包的设置数据有效负载时,
新的设置数据到达时存在危险。该位由软件设置和清除。
当检测到危险时,硬件也会清除该位。
异步计划驻车模式启用。
11
ASPE
软件使用此位启用或禁用驻车模式。当该位为 1 时,启用驻车模
式。当该位为零时,驻车模式被禁用。
异步计划驻车模式计数。
包含在继续遍历异步调度之前,允许主机控制器从异步调度上的
9-8
ASP
高速队列头执行的连续事务数的计数。有效值为 1 至 3。
当驻车模式启用为 1 时,软件不得将零写入该位,因为这将导致
未定义的行为。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
853/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
异步前进门铃中断。
此位被软件用作门铃,以告知主机控制器在下次推进异步计划时
发出中断。软件必须对此位写入 1 才能按门铃。
当主机控制器退出所有适当的缓存调度状态时,它会在 USBSTS
寄存器中设置异步前进状态位上的中断。
如果 USBINTR 寄存器中的同步提前启用中断位为 1,则主机控
6
IAA
制器将在下一个中断阈值断言中断。
主机控制器将 USBSTS 寄存器中的中断同步高级状态位设置为 1
后,将该位设置为 0。
当异步计划处于非活动状态时,软件不应向该位写入 1。这样做
将产生未定义的结果。
此位仅在主机模式下使用。选择设备模式时,将 1 写入该位将产
生未定义的结果。
异步计划启用。
此位控制主机控制器是否跳过异步计划的处理。
5
ASE
只有主机控制器使用此位。
0-不要处理异步计划。
1-使用 ASYNCLISTADDR 寄存器访问异步计划。
定期计划启用-读/写。默认值为 0b。
此位控制主机控制器是否跳过处理定期计划。
4
PSE
只有主机控制器使用此位。
0-不处理定期计划
1-使用 PERIODICLISTBASE 寄存器访问定期计划。
3-2
FS_1
FS_1
See description at bit 15
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
854/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
控制器复位。
软件使用此位重置控制器。复位过程完成后,主机/设备控制器将
该位设置为零。软件无法通过向该寄存器写入零来提前终止重置
过程。
主机操作模式:
当软件将一写入该位时,控制器将其内部管道、计时器、计数器、
状态机等重置为初始值。
USB 上当前正在进行的任何事务都将立即终止。USB 重置不会在
1
下游端口上驱动。
RST
当 USBSTS 寄存器中的 HCHARTED 位为零时,软件不应将该位
设置为 1。尝试重置活动运行的主机控制器将导致未定义的行为。
设备操作模式:
当软件将一写入该位时,控制器将其内部管道、计时器、计数器、
状态机等重置为初始值。
当设备处于连接状态时,不建议将 1 写入该位,因为对连接主机
的影响尚未定义。
为了确保在启动设备控制器重置之前设备未处于连接状态,应刷
新所有已启动的端点,并将 USBCMD 运行/停止位设置为 0。
运行/停止。
1= 运行。0= 停止。
主机操作模式:
当设置为“1b”时,控制器继续执行计划。只要该位设置为 1,控
制器就会继续执行。当该位设置为 0 时,主机控制器在 USB 上完
成当前事务,然后停止。
状态寄存器中的 HC 暂停位指示控制器何时完成事务并进入停止
0
状态。
RS
除非控制器处于暂停状态(即 USBSTS 寄存器中的 HCHARTED
为 1),否则软件不应向该字段写入 1。
设备操作模式:
将 1 写入该位将导致控制器启用 D+ 上拉并启动连接事件。
此控制位不直接连接到上拉启用,因为在转换到高速模式时上拉
将被禁用。
在控制器正确初始化之前,软件应使用此位防止附加事件。将 0
写入此将导致分离事件。
USBCMD 位域
10
9
8
7
6
5
4
3
2
1
0
UI
11
UEI
12
PCI
13
FRI
14
SEI
15
AAI
16
SRI
17
URI
18
SLI
19
RSVD
20
RCL
21
HCH
22
PS
23
AS
24
NAKI
25
RSVD
26
UPI
27
UAI
28
RSVD
29
TI0
30
TI1
31
USBSTS (0x144)
RSVD
56.6.7
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
855/1016
HPM6300 系列
0
x
0
0
0
0
0
10
9
x
x
x
8
7
6
5
4
3
2
1
0
RWC
0
11
RWC
12
RWC
13
RWC
14
RWC
15
RWC
16
RWC
x
17
RWC
x
18
RWC
x
19
N/A
x
20
RO
0
21
RO
0
22
RO
x
23
RO
x
24
RO
x
25
N/A
x
26
RWC
x
27
通用串行总线 USB
RWC
x
28
N/A
29
RWC
30
N/A
31
RWC
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
0
0
0
0
0
0
0
USBSTS [31:0]
位域
名称
25
TI1
24
TI0
描述
通用定时器 1 中断标志位
当定时器 1 倒计时到 0 后置位;
通用定时器 0 中断标志位
当定时器倒计时 0 到 0 后置位;
USB 主机周期队列传输完成中断标志位
当周期队列中的描述符传输完成时,且该标识符(TD)设置了完
19
UPI
成中断(IOC)位,主机控制器将置位此位。
当检测到短数据包且该数据包处于周期队列时,主机也会设置该
位。短数据包是指接收到的实际字节数小于预期的字节数。
设备控制器不使用该位,该位始终为零
USB 主机异步队列传输完成中断标志位
当异步队列中的描述符传输完成时,且该标识符(TD)设置了完
18
UAI
成中断(IOC)位,主机控制器将置位此位。
当检测到短数据包且该数据包处于异步计划时,主机也会设置该
位。短数据包是指接收到的实际字节数小于预期的字节数。
设备控制器不使用该位,该位始终为零
NAK 中断标志位
当设备某个端点回复 NAK,且 ENDPTNAKEN 中对应位为 1,则
16
NAKI
会置位此位。
当 ENDPTNAK 中所有位清零,此位自动清零。
仅用于设备模式。
异步计划状态
此位报告异步计划的当前实际状态。为零时,表示异步计划状态
为禁用,如果为一,则状态为启用。
15
AS
当软件转换 USBCMD 寄存器中的异步计划启用位时,主机控制
器无需立即禁用或启用异步计划。
当此位和异步计划启用位的值相同时,异步计划将启用(1)或禁
用(0)。
仅在主机操作模式下使用。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
856/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
周期计划状态
此位报告周期计划的当前实际状态。为零时,表示周期计划被禁
用,为一,则状态为启用。
14
PS
当软件转换 USBCMD 寄存器中的周期计划启用位时,主机控制
器无需立即禁用或启用周期计划。
当该位和周期计划启用位的值相同时,周期计划被启用(1)或禁
用(0)。
仅在主机操作模式下使用。
回收
13
RCL
这是一个只读状态位,用于检测空的异步计划。
仅在主机操作模式下使用。
主机停止。
当运行/停止位为 1 时,该位为 0。由于运行/停止位被软件或控制
12
HCH
器硬件设置为 0(例如,内部错误)
,控制器在停止执行后将该位
设置为 1。
仅在主机操作模式下使用。
设备控制器挂起中断标志位
8
SLI
当控制器从活动状态进入暂停状态时,该位将设置为 1。设备控
制器在从挂起状态退出时清除位。
仅在设备操作模式下使用。
收到 SOF 中断标志位
当设备控制器检测到(微)帧开始时,该位将设置为 1。当 SOF
非常晚时,设备控制器将自动设置此位,以指示预期 SOF。
因此,该位在设备 FS 模式下大约每 1ms 设置一次,在 HS 模式
7
SRI
下每 125ms 设置一次,并与接收到的实际 SOF 同步。
由于设备控制器在连接前已初始化为 FS,因此在连接和啁啾的前
奏中,该位将以 1ms 的间隔设置。
在主机模式下,该位将每 125us 设置一次,并可由主机控制器驱
动程序用作时基。
已接收 USB 重置中断标志位
6
URI
当设备控制器检测到 USB 重置并进入默认状态时,该位将设置为
1。
仅在设备操作模式下使用。
异步前进中断标志位
系统软件可通过在 USBCMD 寄存器中异步前进门铃位的中断中
5
AAI
写入一个中断,
强制主机控制器在下次主机控制器推进异步计划时发出中断。此
状态位表示该中断源的断言。
仅在主机操作模式下使用。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
857/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
系统错误中断标志位
4
当 DMA 访问系统总线,收到错误回复时置位。
SEI
一般发生于访问了不该访问的地址,由于描述符或寄存器配置错
误导致
帧列表滚动中断标志位
当帧列表索引从其最大值滚动到零时,主机控制器将该位设置为
1。发生滚动的确切值取决于帧列表的大小。
例如如果帧列表大小(在 USBCMD 寄存器的帧列表大小字段中
3
编程)为 1024,则每次 FRINDEX[13] 切换时,帧索引寄存器都
FRI
会滚动。
类似地,如果大小为 512,则主机控制器每次切换 FHINDEX[12]
时将该位设置为 1。
仅在主机操作模式下使用。
端口更改中断标志位
当在任何端口上发生连接状态、端口启用/禁用更改或强制端口恢
复位作为挂起端口上 J-K 转换的结果而设置时,主机控制器将该
2
位设置为 1。
PCI
当端口控制器进入全速或高速操作状态时,设备控制器将该位设
置为 1。
当端口控制器由于复位或挂起事件退出完全或高速操作状态时,
通知机制分别为 USB 复位接收位和 DCSuspend 位。
USB 错误中断标志位
1
当 USB 事务的完成导致错误情况时,该位由主机/设备控制器设
UEI
置。如果发生错误中断的 TD 也设置了完整中断(IOC)位,则该
位与 USBINT 位一起设置。
USB 传输中断标志位
当 USB 传输完成,且其传输描述符(TD)设置了完成中断
0
(IOC)位。
UI
当检测到短数据包时,主机控制器也会设置该位。短数据包是指
接收到的实际字节数小于预期的字节数。
USBSTS 位域
USBINTR (0x148)
UE
0
RW
0
UEE
0
0
PCE
0
1
RW
0
2
RWC
3
FRE
0
4
RW
x
5
SEE
x
6
AAE
x
7
RW
x
8
RW
x
9
SRE
x
10
URE
x
11
RW
0
12
RW
x
13
SLE
0
14
RW
0
15
RSVD
16
N/A
17
NAKE
x
18
RO
x
19
RSVD
x
20
N/A
x
21
UAIE
0
22
UPIE
0
23
RW
x
24
RW
x
N/A
x
25
RSVD
x
26
N/A
x
27
TIE0
x
28
RW
29
TIE1
30
RSVD
31
RW
56.6.8
0
0
0
USBINTR [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
858/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用串行总线 USB
位域
名称
描述
25
TIE1
通用定时器 1 中断使能
24
TIE0
通用定时器 0 中断使能
19
UPIE
USB 主机周期队列传输完成中断使能
18
UAIE
USB 主机异步队列传输完成中断使能
16
NAKE
8
SLE
7
SRE
收到 SOF 中断使能
6
URE
收到 USB 重置中断使能
5
AAE
异步前进中断使能
4
SEE
系统错误中断使能
3
FRE
帧列表滚动中断使能
2
PCE
端口更改中断使能
1
UEE
USB 错误中断使能
0
UE
USB 传输中断使能
NAK 中断使能
当此位置位且 USBSTS 中的 NAKI 置位,则产生中断
设备控制器挂起中断使能
仅用于设备模式
USBINTR 位域
FRINDEX (0x14C)
30
29
28
27
26
25
24
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
0
0
0
RW
N/A
RSVD
31
FRINDEX
56.6.9
x
FRINDEX [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
859/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
帧索引。
该寄存器中的值在每个时间帧(微帧)结束时递增。位 [N:3] 用于
帧列表当前索引。
这意味着在移动到下一个索引之前,帧列表的每个位置都会被访
问 8 次(帧或微帧)。
以下说明了在主机模式下使用时,基于 USBCMD 寄存器中帧列
表大小字段的值 N 的值。
USBCMD[帧列表大小] 数字元素 N
在设备模式下,该值是最后发送的帧的当前帧编号。它不用作索
13-0
引。
FRINDEX
在任一模式下,位 2:0 表示当前微帧。
下面的位字段值描述表示为(帧列表大小)数字元素 N。
00000000000000 - (1024) 12
00000000000001 - (512) 11
00000000000010 - (256) 10
00000000000011 - (128) 9
00000000000100 - (64) 8
00000000000101 - (32) 7
00000000000110 - (16) 6
00000000000111 - (8) 5
FRINDEX 位域
DEVICEADDR (0x154)
0
0
0
28
27
26
25
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
x
x
x
x
x
x
x
x
x
x
x
x
RW
RW
0
24
0
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
RSVD
29
N/A
30
USBADR
31
USBADRA
56.6.10
DEVICEADDR [31:0]
位域
名称
31-25
USBADR
描述
设备地址
此字段表示 USB 设备地址,仅用于设备模式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
860/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
设备地址提前。
当该位为“0”时,对 USBADR 的任何写入都是瞬时的。当该位
同时或在写入 USBADR 之前写入“1”时,对 USBADR 字段的
写入被暂存并保存在隐藏寄存器中。
在端点 0 上发生 IN 并确认后,将从保留寄存器加载 USBADR。
在以下情况下,硬件将自动清除该位:
1)中的已确认为终结点 0。(USBADR 从暂存寄存器更新)
。
24
2)对终结点 0 执行出/设置。(USBADR 未更新)。
USBADRA
3)发生设备重置(USBADR 重置为 0)
。
注:在 SET_ADDRESS 描述符的状态阶段之后,DCD 有 2 毫秒
的时间对 USBADR 字段进行编程。
当 DCD 无法在设置地址状态阶段 2 毫秒内写入设备地址时,该
机制将确保满足该规范。
如果 DCD 在 SET_ADDRESS 数据阶段之后(在状态阶段开始之
前)以 USBADRA=1 写入 USBADR,则 USBADR 将在正确的时
间被更新,以满足 2ms USB 要求。
DEVICEADDR 位域
56.6.11
PERIODICLISTBASE (0x154)
30
29
28
27
26
25
24
23
22
0
0
0
0
0
0
0
0
0
0
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
0
0
0
0
0
0
0
0
0
x
x
x
x
x
x
5
4
3
2
1
0
x
x
x
x
x
x
RW
N/A
RSVD
BASEADR
31
0
PERIODICLISTBASE [31:0]
位域
名称
描述
该 20 位寄存器包含系统内存中周期序列表的起始地址的高 20 位,
低 12 位必须为 0。软件需在主机控制器开始执行调度之前初始化
此寄存器。
31-12
BASEADR
此物理内存指针引用的内存结构为 4 KB 对齐。该寄存器的内容
与帧索引寄存器(FRINDEX)相结合,以使主机控制器能够按顺
序单步执行周期帧列表。
仅用于主机模式
PERIODICLISTBASE 位域
56.6.12
ASYNCLISTADDR (0x158)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
861/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
0
0
0
0
0
0
0
0
0
0
0
0
0
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
0
0
0
0
0
0
0
0
0
0
0
0
0
x
x
1
0
x
x
N/A
RW
0
2
RSVD
ASYBASE
31
通用串行总线 USB
x
ASYNCLISTADDR [31:0]
位域
名称
描述
此寄存器包含主机要执行的下一个异步队列头的地址高 27 位,低
31-5
5 位必须为 0(32 字节对齐)。
ASYBASE
仅用于主机模式
ASYNCLISTADDR 位域
56.6.13
ENDPTLISTADDR (0x158)
30
29
28
27
26
25
24
23
22
0
0
0
0
0
0
0
0
0
0
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
0
0
0
0
0
0
0
0
0
0
x
x
x
x
x
4
3
2
1
0
x
x
x
x
x
x
3
2
1
0
0
0
0
0
N/A
RW
0
5
RSVD
EPBASE
31
ENDPTLISTADDR [31:0]
位域
名称
描述
31-11
EPBASE
端点列表基地址
此地址必须 2KB 对齐,对应于最多 16 个 dQH
ENDPTLISTADDR 位域
BURSTSIZE (0x160)
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
x
x
x
x
x
x
x
0
0
0
0
11
10
9
8
7
6
5
4
0
0
0
0
0
0
0
RXPBURST
29
RW
N/A
x
RW
30
RSVD
31
TXPBURST
56.6.14
0
BURSTSIZE [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
862/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
发送可配置的突发长度
15-8
当 AHBBRST 配置为仅限未指定长度的增量突发时,发送时
TXPBURST
DMA 访问内存的突发长度由此寄存器配置
接收可配置的突发长度
7-0
当 AHBBRST 配置为仅限未指定长度的增量突发时,接收时
RXPBURST
DMA 访问内存的突发长度由此寄存器配置
BURSTSIZE 位域
TXFILLTUNING (0x164)
x
22
21
20
19
x
x
x
x
0
0
0
18
17
16
15
0
0
x
RW
N/A
x
14
13
12
11
0
x
x
0
0
10
9
8
0
0
0
7
6
5
4
x
0
0
0
3
2
1
0
0
0
0
TXSCHOH
x
23
RW
x
24
RSVD
x
25
N/A
x
26
TXSCHHEALTH
27
RWC
28
RSVD
29
N/A
30
RSVD
31
TXFIFOTHRES
56.6.15
0
TXFILLTUNING [31:0]
位域
名称
描述
FIFO 突发阈值。
该寄存器控制在数据包开始传输到总线之前,在主机模式下发送
到 TX 延迟 FIFO 的数据突发数。
21-16
TXFIFOTHRES
最小值为 2,该值应尽可能低,以最大限度地提高 USB 性能。
在延迟不可预测和/或带宽不足的系统中,可以使用更高的值,因
为从延迟 FIFO 传输到 USB 的数据发生在从系统内存补充之前,
FIFO 可能运行不足。
如果设置了 USBMODE 寄存器中的 SDIS 位,则忽略此值。
调度程序运行状况计数器。
当主机控制器在下一帧开始前发送数据包的时间不足之前,未能
将 TX 延迟 FIFO 填充到 TXFITOTHRES 编程的水平时,该寄存
12-8
TXSCHHEALTH
器会增加。
此健康计数器测量发生这种情况的次数,以便为选择合适的
TXSCHOH 提供反馈。写入此寄存器将清除计数器,此计数器最
大值为 31。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
863/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
调度程序开销
该寄存器向上述计划时间估计器添加一个额外的固定偏移量,称
为 Tff。作为近似值,
为该寄存器选择的值应将 TXSCHHEALTH 中捕获的退避事件数
6-0
量限制在高利用率总线中小于每秒 10 个。
TXSCHOH
不需要为此寄存器选择过高的值,因为它会不必要地降低 USB 利
用率。
当设备以高速模式连接时,该寄存器中表示的时间单位为
1.267us。当设备以低速/全速模式连接时,该寄存器中表示的时
间单位为 6.333us。
TXFILLTUNING 位域
ENDPTNAK (0x178)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RWC
RWC
EPTN
31
EPRN
56.6.16
0
ENDPTNAK [31:0]
位域
名称
描述
发送端点 NAK 状态位
31-16
当设备某端点收到主机的 IN 后回复 NAK,则此位置位。
EPTN
每个端点对应一位。
软件写 1 清零该位
接收端点 NAK 状态位
当设备某端点收到主机的 OUT 或 PING 后回复 NAK,则此位置
15-0
位。
EPRN
每个端点对应一位。
软件写 1 清零该位
ENDPTNAK 位域
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
EPRNE
29
RW
30
EPTNE
31
ENDPTNAKEN (0x17C)
RW
56.6.17
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
864/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
通用串行总线 USB
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
ENDPTNAKEN [31:0]
位域
名称
描述
发送端点 NAK 中断使能
31-16
当某发送端点回复 NAK,且对应的该位置位,则置位 USBSTS
EPTNE
中 NAK 中断状态位。
每个端点对应一位
接收端点 NAK 中断使能
15-0
当某接收端点回复 NAK,且对应的该位置位,则置位 USBSTS
EPRNE
中 NAK 中断状态位。
每个端点对应一位
ENDPTNAKEN 位域
PEC
PE
CSC
CCS
RWC
RWC
RWC
RWC
0
0
0
0
0
0
0
0
PORTSC1 [31:0]
位域
名称
描述
串行收发器选择
1:选择串行接口引擎
29
STS
0:选择并行接口信号
当该位设置为“1b”时,将使用串行接口引擎而不是并行接口信
号。
并行收发器接口宽度
28
PTW
0:选择 8 位 UTMI 端口(60MHz)
1:选择 16 位 UTMI 端口(30MHz)
选择串行收发器时此位无效
端口速度
此寄存器反应当前正在工作的端口速度
27-26
PSPD
00b :全速
01b :低速
10b :高速
11b :无效
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
865/1016
0
OCA
1
OCC
2
RO
3
RW
0
4
FPR
0
5
SUSP
0
6
RW
0
7
RW
0
8
PR
x
9
RW
x
10
HSP
x
11
RO
0
0
12
LS
0
13
RO
0
14
PP
0
15
RW
0
16
RSVD
0
17
N/A
0
18
PTC
WKDC
WKCN
RW
RW
0
19
RW
WKOC
20
RW
21
PFSC
22
PHCD
x
23
RW
0
24
RW
0
25
RSVD
0
26
N/A
0
27
PSPD
PTW
RW
x
28
STS
N/A
x
29
RW
30
RSVD
31
PORTSC1 (0x184)
RO
56.6.18
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
强制全速连接
当此位被设置时,端口强制工作在全速状态。
作为主机,会在 USB 复位的速度协商过程中,不输出 ChirpKJ 序
24
PFSC
列;
作为设备,会在 USB 复位的速度协商过程中,不输出 ChirpK。
0 :常规工作
1 :强制全速连接
PHY 低功耗模式
设置此位,会拉低输出到 PHY 的 suspendm 信号,让 PHY 进入
低功耗模式。
23
PHCD
主机模式时,由软件决定何时进入低功耗模式;
设备模式时,当收到 SLI 中断后,可以由软件设置此位进入低功
耗模式。
当检测到唤醒信号时,硬件自动清掉此位。
过流唤醒使能
22
WKOC
当 USB 处于低功耗模式,当检测发生过载时,设置此位会产生唤
醒事件
仅用于主机模式
断开连接唤醒使能
21
WKDC
当 USB 处于低功耗模式,当检测设备断开连接时,设置此位会产
生唤醒事件
仅用于主机模式
断开连接唤醒使能
20
WKCN
当 USB 处于低功耗模式,当检测到设备连接时,设置此位会产生
唤醒事件
仅用于主机模式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
866/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
端口测试控制-读/写。默认值 =0000b。
有关使用这些测试模式的操作模型,请参阅端口测试模式;有关
每个测试模式的详细信息,请参阅 USB 规范版本 2.0 第 7 章。
强制启用 FS 和强制启用 LS 是 EHCI 规范中指定的测试模式支持
的扩展。
将 PTC 字段写入任意 FORCE_ENABLE_{HS/FS/LS} 值将强制
端口以所选速度进入已连接和已启用状态。
将 PTC 字段写回 TEST_MODE_DISABLE 将允许端口状态机从
此点正常运行。
19-16
PTC
注意:设备不支持低速操作。
除零以外的任何其他值表示端口正在测试模式下运行。
0000-测试模式禁用
0001-J 状态
0010-K 状态
0011-SE0(主机)/NAK(设备)
0100-数据包
0101-强制启用高速
0110-强制启用全速
0111-强制启用低速
1000-1111-保留
端口电源
主机控制器需要端口电源控制开关。该位表示开关的当前设置
(0= 关闭,1= 打开)。
12
PP
当端口电源不可用时(即 PP 等于 0)
,该端口不起作用,不会报
告连接、分离等。
当在通电端口上检测到过流情况时,主机控制器会将 PP 位从 1
转换为零(从端口断电)。
仅用于主机模式,设备模式时此位无意义。
总线状态
表示当前 USB 总线上的状态,bit11 表示 D+ 状态,bit10 表示
D-状态。
00 :SE0
11-10
LS
01 :K 状态
10 :J 状态
11 :未定义
注意,以上状态在低速和全速时可用;当 USB 工作于高速状态
时,以上定义需需参考 UTMI 协议
高速端口
9
HSP
当此位置 1 时,表示当前主机或设备连接成高速模式。
此位是 PSPD(bit27,bit26) 的冗余,用户也可从 PSPD 中获取当
前信息。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
867/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
端口复位
在主机模式下:该位可读写。
1:端口处于复位状态。
0:端口未处于重置状态
8
PR
当软件将该位置 1 时,主机将根据 USB 规范版本 2.0 中定义,开
始总线复位序列。复位顺序完成后,该位将自动变为零。
此行为与 EHCI 不同,EHCI 要求主机控制器驱动程序在驱动程序
中定时重置持续时间后将此位设置为零。
在设备模式下:该位为只读状态位。USB 总线的设备复位也在
USBSTS 寄存器中指示。
挂起-读/写或只读。默认值 =0b。
1= 端口处于挂起状态。0= 端口未处于挂起状态。
在主机模式下:读/写。
此寄存器的端口启用位(PE,bit2)和挂起位(SUSP,bit7)定
义端口状态,如下所示:
端口状态
0x:禁用
10:启用
11:挂起
处于挂起状态时,此端口的下行数据传播被阻止,端口复位除外。
7
SUSP
如果在将该位写入 1 时正在进行数据传输,则会在当前传输结束
后进入挂起状态。
在挂起状态下,端口对恢复检测敏感会检测恢复(resume)信号。
请注意,在端口挂起之前,位状态不会改变,如果 USB 上当前正
在进行事务,则挂起端口可能会有延迟。
当软件将 Force Port Resume 位设置为零时,主机控制器将无条
件地将该位设置为零。主机控制器忽略对此位的零写入。
如果主机软件在端口未启用时将该位设置为 1(即,端口启用位
PE 为零),则结果未定义。
如果在主机模式下端口电源(PP)为零,则此字段为零。
在设备模式下:只读。
在设备模式下,该位为只读状态位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
868/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
强制端口恢复。1= 在端口上检测到/驱动恢复。0= 在端口上未检
测到恢复(K 状态)
。
在主机模式下:
软件将该位设置为 1,以驱动恢复信号。如果在端口处于挂起状
态时检测到 J-to-K 转换,主机控制器将此位设置为 1。
当此位由于检测到 J-to-K 转换而转换为 1 时,USBSTS 寄存器中
的端口更改检测位也设置为 1。
恢复序列完成后,该位将自动变为零。
此行为与 EHCI 不同,EHCI 要求主机控制器驱动程序在驱动程序
中计时恢复持续时间后将此位设置为零。
请注意,当主机控制器拥有该端口时,恢复序列遵循 USB 规范修
订版 2.0 中定义的序列。
6
FPR
只要该位保持为 1,就在端口上驱动恢复信令(全速“K”)
。该位
将保持为 1,直到端口切换到高速空闲。
写入零无效,因为端口控制器将计时恢复操作,并在恢复时序结
束,端口状态切换到 HS 或 FS idle 时清零该位。
如果在主机模式下端口电源(PP)为零,则此字段为零。
此位与 EHCI 不兼容。
在设备模式下:
设备处于暂停状态 5 毫秒或更长时间后,软件必须将该位设置为
1,以在清除之前的恢复信号。
如果在端口处于挂起状态时检测到 J-to-K 转换,则设备控制器将
此位设置为 1。
当设备恢复正常运行时,该位将被清除。
此外,当由于检测到 K-to-J 转换而清除该位时,USBSTS 寄存器
中的端口更改检测位也设置为 1。
过流状态改变
5
OCC
当硬件检测到过流时会置位此位
软件需要写 1 清除该位。
过流状态
此位表示当前过流状态
4
OCA
0:端口当前没有过流发生
1:端口处于过流状态
当过流结束时,此位会自动清零
端口启用变化
1:端口启用状态发生过变化(从禁止到启用,或者从启用到禁止)
3
PEC
0:端口启用状态无变化
软件写 1 清零该位
如果在主机模式下端口电源(PP)为零,则此字段为零。
设备模式端口永远启用,所以该位一直为 0.
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
869/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
端口启用/禁用。1= 启用。0= 禁用。
在主机模式下:
端口只能由主机控制器作为重置和启用的一部分启用。软件无法
通过写 1 来启用端口。
端口可以由故障条件(断开事件或其他故障条件)或主机软件禁
2
用(软件可以通过写 0 禁用端口)
。
PE
请注意,在端口状态实际更改之前,位状态不会更改。由于总线
传输,禁用或启用端口时可能会有延迟。
当端口被禁用时,(0b)数据的下游传播被阻止,重置除外。
如果在主机模式下端口功率(PORTSC1)为零,则此字段为零。
在设备模式下:
设备端口始终处于启用状态,因此此位始终为“1b”。
连接状态更改。1= 当前连接状态更改。0= 没有变化。
在主机模式下:
表示端口的当前连接状态发生了更改。主机控制器会在端口设备
连接状态有更改时设置此位,即使系统软件尚未清除现有连接状
态更改。
1
例如,在系统软件清除更改的条件之前,插入状态更改两次,集
CSC
线器硬件将“设置”一个已设置的位(即,该位将保持设置)。
软件通过向其写入 1 来清除该位。
如果在主机模式下端口电源(PP)为零,则此字段为零。
在设备模式下:
此位在设备控制器模式下未定义。
当前连接状态。
在主机模式下:
1= 端口上存在设备。0= 不存在任何设备。默认值 =0。此值反映
端口的当前状态,可能与导致设置连接状态更改位(位 1)的事
件不直接对应。
0
如果在主机模式下端口电源(PP)为零,则此字段为零。
CCS
在设备模式下:
1 表示设备已成功连接,并且正在高速或全速运行,如该寄存器
中的高速端口位所示。
0 表示设备未成功连接或被软件向 USBCMD 寄存器中的运行位
写入零而强制断开连接。
PORTSC1 位域
15
14
13
12
11
10
9
8
7
6
5
4
3
2
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
870/1016
1
0
VD
16
VC
17
RSVD
18
IDPU
19
RSVD
20
ID
21
AVV
22
ASV
23
RSVD
24
IDIS
25
AVVIS
26
ASVIS
27
RSVD
28
IDIE
29
AVVIE
30
RSVD
31
OTGSC (0x1A4)
ASVIE
56.6.19
HPM6300 系列
x
0
0
0
15
14
x
x
13
12
11
x
x
x
10
9
8
0
0
0
7
6
x
5
4
x
0
3
2
x
x
x
1
0
RW
16
RW
x
17
N/A
x
18
RW
x
19
N/A
x
20
RO
0
21
RO
0
22
RO
0
23
通用串行总线 USB
N/A
x
24
RWC
x
25
RWC
x
26
RWC
27
N/A
x
28
RW
x
29
RW
30
N/A
31
RW
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
0
OTGSC [31:0]
位域
名称
描述
26
ASVIE
session valid 变化中断使能
25
AVVIE
vbus valid 变化中断使能
24
IDIE
18
ASVIS
ID 变化中断使能
session valid 中断状态
软件写 1 清零该位
vbus valid 中断状态。
17
注意,当 ID 为 1 时,不会产生 vbus 变化中断,用户可以使用
AVVIS
session valid 中断替代
软件写 1 清零该位
16
ID 变化中断状态
IDIS
软件写 1 清零该位
session valid 状态位
10
表示 VBUS 高于 session valid 阈值
ASV
注意:此位通过去抖电路,与实际 vbus 状态会有 1 到 2 毫秒的
延迟,用户可以在 PHY_STATUS 寄存器中读到实时状态
vbus valid 状态位
9
表示 VBUS 高于 vbus valid 阈值
AVV
注意:此位通过去抖电路,与实际 vbus 状态会有 1 到 2 毫秒的
延迟,用户可以在 PHY_STATUS 寄存器中读到实时状态
ID 状态位
8
注意:此位通过去抖电路,与实际 ID 状态会有 1 到 2 毫秒的延
ID
迟,用户可以在 PHY_STATUS 寄存器中读到实时状态
ID 上拉使能
5
IDPU
1
VC
VBUS 充电
0
VD
VBUS 放电
设 1 上拉 ID
OTGSC 位域
USBMODE (0x1A8)
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
4
3
2
0
0
0
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
871/1016
1
0
CM
24
RW
25
ES
26
RW
27
SLOM
28
RW
29
SDIS
30
RSVD
31
RW
56.6.20
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
通用串行总线 USB
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
USBMODE [31:0]
位域
名称
描述
流禁用模式。
设备模式:设置为“1”将禁用低带宽系统的 RX 和 TX 上的双重
启动。
此模式确保当 RX 和 TX 缓冲区足以包含整个数据包时,禁用标
准双缓冲方案以防止带宽受限系统中的超限/欠载。
注意:在高速模式下,当流禁用激活时,所有接收到的数据包都
4
SDIS
会通过 NYET 握手进行响应。
主机模式:设置为“1”可确保在 RX 和 TX 缓冲区足以容纳整个
数据包的低带宽系统中,消除延迟 FIFO 的超限/不足。
启用 stream disable 还可以确保在将数据包发送到 USB 之前将
发送数据预取到内部缓存。
注意:使用此功能会限制整体 USB 性能,建议仅在系统带宽不足
时使用。
SETUP 锁定模式
仅用于设备模式,控制 SETUP 传输的锁定机制
3
SLOM
0:SETUP 锁定打开
0:SETUP 锁定关闭,软件需要使用 USBCMD 寄存器中的
SUTW
Endian 选择。
此位可以更改传输缓冲区的字节对齐方式,以匹配主机微处理器。
2
ES
微处理器接口中的位字段和数据结构不受该位值的影响,因为它
们基于 32 位字。
0-小端 [默认值]
1-大端
控制器模式
默认为空闲状态。
在控制器复位后,仅能写一次。
软件必须在配置此寄存器前,先在 USBCMD.RST 位写 1 复位整
1-0
CM
个控制器。
00:空闲
01:保留
10:设备模式
11:主机模式
USBMODE 位域
56.6.21
ENDPTSETUPSTAT (0x1AC)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
872/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
ENDPTSETUPSTAT
30
N/A
RWC
RSVD
31
通用串行总线 USB
x
ENDPTSETUPSTAT [31:0]
位域
名称
描述
SETUP 端点状态
对于接收到的每个 SETUP 传输,该寄存器中的对应位设置为 1。
ENDPTSETUPST
15-0
软件从队列头读取 8 字节 SETUP 数据后,必须通过向相应位写
AT
入 1 来清除或确认 SETUP 传输
此寄存器仅在设备模式下使用。
ENDPTSETUPSTAT 位域
ENDPTPRIME (0x1B0)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RWS
RWS
PETB
31
PERB
56.6.22
0
ENDPTPRIME [31:0]
位域
名称
描述
端点发送缓冲区预取
对于每个端点使用相应的位请求为发送传输准备缓冲区,以便响
应 USB 主机的传输请求。
当向端点队列头发布新的传输描述符时,软件应向相应位写入 1,
硬件自动使用该位开始解析队列头中的新传输描述符,并准备传
输缓冲区。
31-16
PETB
当相关端点成功启动时,硬件清除此位。
USB 协议中,传输数据是由主机发起,设备并不知道何时主机会
发起传输数据要求(IN),
因此当软件准备好发送数据后,需要通过此位,通知设备控制器,
将数据从系统内存中搬到 USB 发送缓冲区,
在搬完之前(或者发送缓冲区满之前),设备会对主机的请求
(IN)回复 NAK。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
873/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
端点接收缓冲区准备
每当向端点队列头发布新的传输描述符时,软件应向相应位写入
1,硬件自动使用该位开始解析队列头中的新传输描述符,并准备
接收缓冲区。
15-0
当相关端点成功启动时,硬件清除此位。
PERB
跟发送不同,对于接收数据,只要接收缓冲区有空间,就可以接
收数据,所以设置此位,硬件仅需解析传输符即可。
在软件设置此位,硬件解析完传输符之前,设备会对主机的请求
(OUT 或 PING)回复 NAK。
ENDPTPRIME 位域
ENDPTFLUSH (0x1B4)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RWS
RWS
FETB
31
FERB
56.6.23
0
ENDPTFLUSH [31:0]
位域
名称
描述
刷新端点发送缓冲区
将一写入该寄存器中的一位会导致相关端点清除对应的发送缓冲
31-16
区。
FETB
如果一个关联端点的数据包正在进行中,则该传输将继续,直到
完成。
在端点刷新操作成功后,硬件清除此寄存器。
刷新端点接收缓冲区
将一写入该寄存器中的一位会导致相关端点清除对应的接收缓冲
15-0
区。
FERB
如果一个关联端点的数据包正在进行中,则该传输将继续,直到
完成。
在端点刷新操作成功后,硬件清除此寄存器。
ENDPTFLUSH 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
ERBR
31
ENDPTSTAT (0x1B8)
ETBR
56.6.24
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
874/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RO
30
RO
31
通用串行总线 USB
0
ENDPTSTAT [31:0]
位域
名称
描述
端点发送缓冲区就绪。
每个端点的一位表示各自端点发送缓冲区的状态。
硬件将该位设置为 1,作为从 ENDPTPRIME 寄存器中相应位接
收命令的响应。
在 ENDPTPRIME 寄存器中设置一个位和端点指示就绪之间始终
31-16
存在延迟。
ETBR
此延迟时间根据当前 USB 通信量和 ENDPRIME 寄存器中设置的
位数而变化。
USB 复位、USB DMA 系统或 ENDPTFLUSH 寄存器可清除缓冲
区就绪状态。
注意:当 dTD 失效且 dQH 更新时,在硬件端点重新启动操作期
间,硬件会立即清除这些位。
端点接收缓冲区就绪。
每个端点的一位表示各自端点接收缓冲区的状态。
硬件将该位设置为 1,作为从 ENDPTPRIME 寄存器中相应位接
收命令的响应。
在 ENDPTPRIME 寄存器中设置一个位和端点指示就绪之间始终
15-0
存在延迟。
ERBR
此延迟时间根据当前 USB 通信量和 ENDPRIME 寄存器中设置的
位数而变化。
USB 复位、USB DMA 系统或 ENDPTFLUSH 寄存器可清除缓冲
区就绪状态。
注意:当 dTD 失效且 dQH 更新时,在硬件端点重新启动操作期
间,硬件会立即清除这些位。
ENDPTSTAT 位域
ENDPTCOMPLETE (0x1BC)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RWC
RWC
ETCE
31
ERCE
56.6.25
0
ENDPTCOMPLETE [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
875/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
端点发送完成状态位
每个位表示发生了发送事件(IN),软件应读取相应的端点队列以
31-16
确定端点状态。
ETCE
如果在传输描述符中设置了相应的 IOC 位,则该位与 USBINT 同
时设置。
写入一将清除该寄存器中的相应位。
端点接收完成状态位
每个位表示发生了接收事件(OUT/SETUP),软件应读取相应的
15-0
端点队列以确定端点状态。
ERCE
如果在传输描述符中设置了相应的 IOC 位,则该位与 USBINT 同
时设置。
写入一将清除该寄存器中的相应位。
ENDPTCOMPLETE 位域
ENDPTCTRL (0x1C0 + 0x4 * n)
x
x
0
0
5
4
3
x
x
0
2
0
1
0
RXS
x
6
RW
x
7
RSVD
x
8
N/A
x
9
RXT
x
10
RW
x
11
RSVD
12
N/A
13
RXE
0
14
RSVD
x
0
15
RXR
0
16
RW
x
17
WS
x
18
N/A
0
19
TXS
0
20
RW
x
21
RSVD
x
22
N/A
x
N/A
x
23
TXT
x
24
RW
x
25
RSVD
x
26
N/A
x
27
TXR
28
WS
29
TXE
30
RSVD
31
RW
56.6.26
x
0
ENDPTCTRL [31:0]
位域
名称
描述
发送端点使能
23
TXE
0:禁止
1:使能
端点仅在被配置(指 USB 枚举协议中的配置端点)后才能使能
发送数据 toggle 重置
写 1 重置发送数据 toggle 位,从 DATA0 开始发送。
22
TXR
当收到对该端点的配置事件时(通过枚举,从主机收到相应配置
请求),软件必须对相应位写 1 以同步主机和设备之间的数据 PID
(DATA0 或者 DATA1)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
876/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
发送端点类型
00:CTRL
01:ISO
19-18
TXT
10:BULK
11:INT
注意:当该发送端点被设置为非 CTRL(默认值)时,必须将对应
的接收端点也设置成非 CTRL 类型,因为 CTRL 端点必须成对存
在
发送端点暂停
0:端点正常
1:端点暂停
如果此端点配置为控制端点,则在收到设置请求时(SETUP 包)
,
此位将自动清除,并且此位将继续由硬件清除,直到清除关联的
ENDPTSETUPSTAT 位。
16
TXS
软件可以将 1 写入该位,以强制端点向主机返回暂停握手,直到
此位被软件清除或自动清除,如上所述,用于控制端点。
注意:[仅限控制端点类型]:在 ENDPTSETUPSTAT 开始清除和
硬件继续清除该位之间有轻微延迟(最多 50 个时钟)
。
在大多数系统中,设备软件不太可能观察到这种延迟。但是,如
果在向其写入 1 后观察到该位未设置,则遵循以下步骤:
通过检查相关的 endptsetupstat 位,持续写入此暂停位,直到设
置完毕或接收到新设置为止。
接收端点使能
7
RXE
0:禁止
1:使能
接收数据 toggle 重置
写 1 重置发送数据 toggle 位,从 DATA0 开始接收。
6
RXR
当收到对该端点的配置事件时(通过枚举,从主机收到相应配置
请求),软件必须对相应位写 1 以同步主机和设备之间的数据 PID
(DATA0 或者 DATA1)
接收端点类型
00:CTRL
01:ISO
3-2
RXT
10:BULK
11:INT
注意:当该接收端点被设置为非 CTRL(默认值)时,必须将对应
的发送端点也设置成非 CTRL 类型,因为 CTRL 端点必须成对存
在
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
877/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
接收端点暂停
0:端点正常
1:端点暂停
如果此端点配置为控制端点,则在收到设置请求时(SETUP 包)
,
此位将自动清除,并且此位将继续由硬件清除,直到清除关联的
ENDPTSETUPSTAT 位。
0
软件可以将 1 写入该位,以强制端点向主机返回暂停握手,直到
RXS
此位被软件清除或自动清除,如上所述,用于控制端点。
注意:[仅限控制端点类型]:在 ENDPTSETUPSTAT 开始清除和
硬件继续清除该位之间有轻微延迟(最多 50 个时钟)
。
在大多数系统中,设备软件不太可能观察到这种延迟。但是,如
果在向其写入 1 后观察到该位未设置,则遵循以下步骤:
通过检查相关的 endptsetupstat 位,持续写入此暂停位,直到设
置完毕或接收到新设置为止。
ENDPTCTRL 位域
OTG_CTRL0 (0x200)
0
0
x
x
0
x
x
1
0
x
x
RSVD
0
2
N/A
0
3
SER_MODE_SUSPEND_EN
0
4
RW
0
5
RSVD
OTG_OVER_CUR_DIS
RW
0
6
N/A
OTG_OVER_CUR_POL
7
RW
8
OTG_POWER_MASK
9
RW
x
10
RW
x
11
OTG_UTMI_RESET_SW
0
12
OTG_WAKEUP_INT_ENABLE
0
13
RW
x
14
OTG_VBUS_SOURCE_SEL
0
15
OTG_UTMI_SUSPENDM_SW
16
RW
x
17
RSVD
x
18
RW
x
19
N/A
x
20
OTG_ID_WAKEUP_EN
0
21
RW
x
RW
N/A
x
22
OTG_VBUS_WAKEUP_EN
23
RW
x
24
RSVD
x
25
AUTORESUME_EN
x
26
RW
x
27
N/A
x
28
RSVD
29
N/A
30
RSVD
31
OTG_WKDPDMCHG_EN
56.6.27
OTG_CTRL0 [31:0]
位域
名称
描述
DP/DM 变化唤醒使能
当 USB 进入低功耗模式(suspend)
,设置此位,或 VBUS 当前
25
OTG_WKDPDMC
HG_EN
为高,会自动唤醒 USB,并在使能的情况下
(otg_wakeup_int_enable 为 1)产生唤醒中断。
此位仅用于设备模式。
主机模式时,由 PROTSC1 中的 WKDNS/WKCN 使能 DP,DM
唤醒
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
878/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
自动 resume 信号使能
19
AUTORESUME_E
1:使能
N
0:禁止
仅用于主机模式
17
16
OTG_VBUS_WAK
EUP_EN
OTG_ID_WAKEU
P_EN
VBUS 变化唤醒使能
1:使能
0:禁止
ID 变化唤醒使能
1:使能
0:禁止
VBUS 唤醒来源
0:使用 vbus valid 作为唤醒源
13
OTG_VBUS_SOU
RCE_SEL
1:使用 session valid 作为唤醒源
这两个信号区别在于阈值不同,vbus valid 会比较高,在某些应用
中,用户可能 vbus 不足 5V,这种情况可以使用此位选择
session valid
PHY suspendm 软件控制
12
OTG_UTMI_SUSP
ENDM_SW
默认为 0,PHY 处于低功耗模式
软件需要在初始化时置位此位。
注意:在 suspendm 置 1 和 reset 清零之间,需要保证至少 1 微
秒时间间隔
PHY 复位软件控制
11
OTG_UTMI_RESE
默认为 1,PHY 处于复位状态。
T_SW
软件需要在初始化时清零此位。
注意:在置位 suspendm 后至少等待 1 微秒才能清零此位
唤醒中断使能
当 usb 处于低功耗模式(PORTSC1.PHCD 为 1)时,系统可以
关闭所有 PLL 和外部晶振,保留内部 osc 作为唤醒时钟。
10
OTG_WAKEUP_I
NT_ENABLE
当 usb 收到唤醒事件且相应事件使能时,如果此位置位,会产生
唤醒中断。
唤醒中断状态位在 TOP_STATUS.wakeup_int_status,软件需要
清零此位清除唤醒中断。
建议流程是,在进入低功耗模式后置位此位,收到唤醒中断后清
零此位。
VBUS 控制极性
主机模式时,可从引脚输出 USBx_PWR(来源时
9
OTG_POWER_MA
SK
PORTSC1.PP),用于控制外部 VBUS 开关,
此位可用于控制外部 VBUS 电路的极性,默认为 0,低有效。
如果外部 VBUS 控制开关时高有效,可以置位此位。
用户也可不适应 USBx_PWR,而使用其他 gpio 作为 VBUS 控制
开关。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
879/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
过流保护极性
主机模式时,可以从引脚 USBx_OC 引入过流状态(一般与来自
OTG_OVER_CUR
8
于 VBUS 控制电路),此位定义过流状态极性。
_POL
0:高表示有过流发生
1:低表示有过流发生
过流禁止
主机模式时,用户可能在电路上没有过流状态指示,可以设置此
OTG_OVER_CUR
7
位避免因为过流保护极性设置错误导致的错误过流状态。
_DIS
0:过流状态正常工作
1:过流状态禁止,永远不会产生过流
SER_MODE_SUS
4
此位需置 1
PEND_EN
OTG_CTRL0 位域
PHY_CTRL0 (0x210)
x
x
x
x
x
x
14
13
12
0
0
0
11
10
9
8
x
x
x
x
7
6
5
4
3
x
x
x
x
x
2
1
0
VBUS_VALID_OVERRIDE_EN
x
15
RW
x
16
ID_DIG_OVERRIDE_EN
x
17
SESS_VALID_OVERRIDE_EN
0
18
RW
x
RW
N/A
x
19
RW
20
RSVD
21
N/A
22
SESS_VALID_OVERRIDE
23
VBUS_VALID_OVERRIDE
x
24
RW
x
25
RW
x
26
ID_DIG_OVERRIDE
x
27
RW
x
28
RSVD
29
N/A
30
RSVD
31
GPIO_ID_SEL_N
56.6.28
0
0
0
PHY_CTRL0 [31:0]
位域
名称
描述
ID 选择
PHY 有 USB ID 引脚,在某些封装,为了节约引脚,可能会不把
25
GPIO_ID_SEL_N
PHY 引脚接到芯片外部,此时可以使用某个 GPIO 作为 USBID
(具体参见 PINMUX)
0:使用 PHY ID
1:使用 gpio ID
ID 信号强制改写
14
ID_DIG_OVERRID
E
当 id_dig_override_en 为 1 时,可以通过此位强制输入 ID 值。
适用于因为外部电路原因,无法通过引脚得知当前 ID 状态,软件
可以通过把通过其他渠道得到的 ID 状态写入此位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
880/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
sess valid 信号强制改写
适用于因为外部电路原因,无法通过 PHY 得知当前 vbus 状态,
SESS_VALID_OV
13
软件可以通过把通过其他渠道得到的 phy 状态写入此位,
ERRIDE
设备模式时,必须 vbus 有效(vbus valid 或者 sess valid 为高)
,
设备控制器才能正常工作
VBUS_VALID_OV
12
vbus valid 信号强制改写
ERRIDE
ID_DIG_OVERRID
2
ID 信号强制改写使能
E_EN
SESS_VALID_OV
1
sess valid 信号强制改写使能
ERRIDE_EN
VBUS_VALID_OV
0
vbus valid 信号强制改写使能
ERRIDE_EN
PHY_CTRL0 位域
PHY_CTRL1 (0x214)
x
x
x
24
23
22
21
x
x
x
x
x
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
RW
N/A
x
20
0
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
1
0
x
PHY_CTRL1 [31:0]
位域
20
1
名称
UTMI_CFG_RST_
N
UTMI_OTG_SUSP
ENDM
描述
PHY 配置电路复位
低有效,默认为 0,PHY 配置电路处于复位状态,软件在初始化
PHY 时需要设置此位
OTG suspend, not utmi_suspendm
PHY_CTRL1 位域
56.6.30
TOP_STATUS (0x220)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
881/1016
0
RSVD
x
25
N/A
x
26
UTMI_OTG_SUSPENDM
27
RW
28
RSVD
29
N/A
30
RSVD
31
UTMI_CFG_RST_N
56.6.29
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
15
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
RW
0
14
RSVD
WAKEUP_INT_STATUS
31
通用串行总线 USB
x
TOP_STATUS [31:0]
位域
名称
描述
唤醒中断状态位
31
WAKEUP_INT_ST
0:无唤醒中断
ATUS
1:有唤醒中断
注意:此位不是写 1 清零,软件需要清零唤醒中断使能清零此位。
TOP_STATUS 位域
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
0
6
RSVD
RW
N/A
x
0
5
4
3
2
1
0
0
0
x
VBUS_VALID
x
RW
0
19
RW
20
RSVD
21
UTMI_SESS_VALID
22
RW
23
N/A
24
RSVD
25
N/A
26
ID_DIG
27
HOST_DISCONNECT
28
RW
29
RW
30
UTMI_CLK_VALID
31
PHY_STATUS (0x224)
LINE_STATE
56.6.31
0
x
0
PHY_STATUS [31:0]
位域
名称
描述
PHY 时钟有效状态位
此位用于软件判断当前 PHY 是否输出时钟。
31
UTMI_CLK_VALID
使用流程如下:
写 1 清零此位;
读此位,为 0 表示 PHY 无时钟输出,1 表示有时钟输出。
USB 总线状态
7-6
LINE_STATE
低速全速时,bit7 为 DM 状态;bit6 为 DP 状态
高速时 PHY 仅输出是否有数据变化,00 表示无数据;01 表示有
数据
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
882/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
通用串行总线 USB
描述
断开连接指示
仅用于主机模式,有高速设备连接时。
5
HOST_DISCONN
ECT
当高速设备被断开连接,主机无法像低速全速那样,通过 USB 中
线状态变化检测到,
只能通过在 SOF 帧末尾检测电平来判断,此位为 1 表示检测到高
速设备被断开连接
4
2
0
ID_DIG
UTMI_SESS_VALI
D
VBUS_VALID
PHY ID 状态
session valid 状态
vbus valiud 状态
PHY_STATUS 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
883/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
模拟外设概述
模拟外设概述
57
本章节介绍了本产品的模拟外设。
16 位模拟数字转换器 ADC16
57.1
本产品支持 3 个 16 位模拟数字转换器 ADC16。ADC16 是一种采用逐次逼近方式的模拟数字转换器,可以
转换来自外部引脚、以及芯片内部的模拟信号,ADC16 的转换精度设置为 16 位时,最大采样率 2MSPS,当转
换精度设置为 12 位时,最大采样率 4MSPS。
本产品上,三个 16 位 ADC 称为 ADC0∼2。
本产品上,三个 16 位 ADC 的参考电压输入是 VREFH 和 VREFL。
注意:本产品上,ADC16 相关寄存器 (ADC16_ 开头的寄存器,偏移量大于等于 0x1400),需要配置如下寄
存器才能正常写入:
● 设置 CONV_CFG1 寄存器 CLK_DIVIDER=1;
● 设置 ANA_CTRL0 寄存器 ADC_CLK_ON=1;
57.1.1
ADC0 输入通道分配
16 位模拟数字转换器 ADC0 支持输入通道 ina0∼15,全部来自 IO.
ADC0 输入通道与 IO 的具体连接,请参考章 20。
57.1.2
ADC1 输入通道分配
16 位模拟数字转换器 ADC1 支持输入通道 ina0∼15,全部来自 IO。
ADC1 输入通道与 IO 的具体连接,请参考章 20。
57.1.3
ADC2 输入通道分配
16 位模拟数字转换器 ADC2 支持输入通道 ina0∼15,全部来自 IO。
ADC2 输入通道与 IO 的具体连接,请参考章 20。
57.1.4
ADC 转换触发信号连接
本产品上 16 位模拟数字转换器 ADC16 支持 2 种队列转换,序列转换和抢占转换:
● 序列转换长度最长可达 16,支持软件或者硬件触发,硬件触发信号 STRIGI,来自各个互联管理器。片
上的其他模块可以以此触发 ADC 序列转换
● 抢占转换长度最长可达 4,每个 ADC 支持 4 组,每组 3 个,共 12 个抢占转换队列。每个抢占队列支持
软件或者硬件触发,12 个硬件触发信号来自互联管理器,片上的其他模块可以以此触发 ADC 抢占转换
– PTRGI0A,PTRGI0B,PTRGI0C 来自互联管理器 TRGM0
– PTRGI1A,PTRGI1B,PTRGI1C 来自互联管理器 TRGM1
– PTRGI2A,PTRGI2B,PTRGI2C 来自互联管理器 TRGM0,PTRGI2A 与 ADC0_STRIGI 短接,
PTRGI2B 与 ADC1_STRIGI 短接,PTRGI2C 与 ADC2_STRIGI 短接
– PTRGI3A,PTRGI3B,PTRGI3C 来自互联管理器 TRGM1,PTRGI2A 与 ADC0_STRIGI 短接,
PTRGI2B 与 ADC1_STRIGI 短接,PTRGI2C 与 ADC2_STRIGI 短接
– 片上各个 ADC 的相同序号抢占转换触发序号短接,因此,同一个触发信号可以同时触发片上所
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
884/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
模拟外设概述
有 ADC 的相同序号的抢占转换序列。
ADC16 的触发信号的具体连接请查阅节 39.4。
注意:在接收触发信号之前,ADC 必须先初始化,不然可能导致工作异常。
57.2
比较器 ACMP
本产品支持 2 个模拟比较器 ACMP。ACMP 可以对两个模拟电压输入 (正端电压 INP) 和负端电压 (INN) 进
行比较,并输出比较结果。ACMP 支持内部 8 位数字模拟转换器 DAC,支持比较 2 个外部模拟信号,或者比较外
部模拟信号与内部 DAC 生成的参考信号。
本产品上,ACMP 内部 DAC 的参考电压来自 VREFH。
本产品上,ACMP 支持 8 路正端电压 INP 输入通道和 8 路负端电压 INN 输入通道。INP0 和 INN0 来自 ACMP
内置 DAC 的输出。其余输入通道来自 IO。本产品上,各个 ACMP 输入通道与 IO 的具体连接,请参考章 20。
本产品上,
2 个 ACMP 的输出连接到 IO,
也连接到电机系统的互联管理器。
具体连接请参考章 20和小节 39.4.1。
57.3
温度传感器
本产品上,集成了一个温度传感器,可以用于测量芯片内部的温度。
57.4
数字模拟转换器 DAC
本产品上,集成了一个 12 位数字模拟转换器 DAC。可以将数字信号,转换为模拟信号输出。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
885/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
16 位模数转换器 ADC16
58
本章节介绍 16 位模数转换器 ADC16 的主要功能和特性:
特性总结
58.1
本章节介绍 16 位模数转换器 ADC16 的主要特性:
● 16 位逐次逼近型 ADC
● 最大 2MHz 采样率
● 支持单端输入
● 独立的 ADC 转换时钟
● 支持任意配置的 AD 转换分辨率
● 可配置采样周期数
● 内置 DMA 可直接把 ADC 转换结果写入内存
● 支持读取转换模式
– 读取结果寄存器直接触发转换
● 支持周期转换模式
– 内置定时器按周期进行转换
– 支持硬件阈值比较,对超出范围的转换结果报警
● 支持序列转换模式
– 可由软件或硬件触发
– 序列最长可达 16
– 支持单次转换或者连续转换
– 支持序列循环
● 支持抢占转换模式
– 可由软件或硬件触发
– 连续转换序列最长可达 4
● 支持生成各类中断
58.2
功能描述
本章节描述 16 位模数转换器 ADC16 的功能。
58.2.1
ADC 时钟
ADC 时钟包括 ADC 控制器时钟和 ADC 转换时钟。
其中 ADC 转换时钟是 ADC 逐次逼近模拟转换节拍控制的时钟。
由 ADC 控制器时钟经过预分频得到,ADC 控制器时钟由系统控制模块配置,默认为系统总线时钟 200MHz(与
电机系统时钟同步)。
用户可以通过设置 CONVCFG1[CONVCLKDIV] 寄存器位,配置 ADC 转换时钟相对于 ADC 控制器时钟的预
分频的值。CONVCFG1[CONVCLKDIV] 值为 0 时,代表预分频值为/1;值为 1 时,预分频值为/2,最大为/16。
ADC16 转换时钟最大频率为 50MHz。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
886/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
58.2.2
16 位模数转换器 ADC16
ADC 输入通道配置
ADC 的每一个输入通道都可以通过 SAMPLE_CFGx 寄存器来单独配置。
用户可以通过 SAMPLE_CFGx [SAMPLE_CLOCK_NUMBER] 和 [SAMPLE_CLOCK_NUMBER_SHIFT] 位
来设置通道的采样时间。
采样时间为 S AMPLE_CLOCK_NU MBER × 2S AMPLE_CLOCK_NU MBER_S HIFT 个时钟周期。采样时间最短为 1 个
时钟周期。
此外,用户需要把 CONV_CFG1[CONVERT_CLOCK_NUMBER] 配置成 21,即转换时间为 21 个时钟周期,
来达到 16 位转换精度。
如用户不需要 16 位精度,但希望更快得到结果,可以通过缩短转换时间来完成。
用户需同时改变 CONV_CFG1[CONVERT_CLOCK_NUMBER] 和 ADC16_CONFIG1[COV_END_CNT]。
COV_END_CNT = 21-CONVERT_CLOCK_NUMBER; CONVERT_CLOCK_NUMBER=21 时 ADC16 工作
在完全的 16 位模式;
CONVERT_CLOCK_NUMBER=14 时 ADC16 大约工作在 12 位模式;
CONVERT_CLOCK_NUMBER=11 时 ADC16 大约工作在 10 位模式;
CONVERT_CLOCK_NUMBER= 9 时 ADC16 大约工作在 8 位模式;
其他数值也可工作,用户可根据精度和速度需求自由选择。
每个通道的转换时间是采样时间和转换时间的和。
58.2.3
读取转换模式
用户可以通过读取转换模式直观的读取 ADC 某个输入通道的转换结果。
适用于用户需要尽快知道某个通道的结果,在此之前无其他任务可做的情况。
当用户读取 BUS_RESULTx 寄存器时,就会触发一次对 ADC 输入 x 的转换。待转换完成以后,直接返回结
果。
根据不同的 ADC 通道配置,返回转换结果的用时也会不同。
在 ADC 完成转换之前,ADC 会阻塞相关外设总线的访问,而由转换引起的阻塞时间可能会比较长。用户可
以把 BUF_CFG0 [WAITDIS] 位置 1 来关闭总线阻塞,这时读 BUS_RESULTx 寄存器会直接返回上一次转换的结
果。当 BUS_RESULTx [VALID] 位置 1 时,提示 ADC 转换完成,此时 BUS_RESULTx 寄存器中保存了最近一次
的转换结果。
58.2.4
周期转换模式
用户可以通过周期转换模式要求 ADC 的一个或者多个输入通道进行周期性的转换。
适用于有定时转换的需求,或监控某个通道是否超过阈值。
用户可以通过 PRD_CFGx [PRD_CNT] 和 [PRESCALE] 寄存器位设置周期的长度,
周期的长度具体为 PRD_CNT ×
2
PRES CALE
,每个 ADC 时钟周期,计数器都会-1,计数器计数到 0 时,即开始转换,同时计数器重载。
注意,把 PRD_CFGx [PRD_CNT] 位清 0 的话,表示关闭该输入的周期转换。
周期转换的结果保存在 PRD_RESULTx 寄存器里,软件能从 PRD_RESULTx 里读取到输入通道 x 的最近一
次转换结果。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
887/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
注意,PRD_RESULTx 总是保存 ADC 输入通道 x 最近一次的转换结果。PRD_RESULTx 不仅保存周期转换的结果,
也保存其他转换模式的转换结果。
用户可以通过设置 PRD_THSHD_CFGx[THSHDH] 和 PRD_THSHD_CFGx[THSHDL] 对输入通道 x 的转换
结果进行监测。一旦转换结果超出范围 (Result 大于 THSHDHx 或者 Result 小于 THSHDLx),即会报警,相应的
标志位 INT_STS[ADWDGx] 位会置 1,如果相应中断使能,还会产生中断。
注意,ADC 转换结果检测不限于周期转换模式,而是对所有读取模式都有效。如果设置的门限不正确,比如,把
THSHDHx 设为 0,那么每当通道转换结束,都会触发报警。
如果有多个通道同时计时到期需要开始转换,那么序号较小的输入通道会先转换。
58.2.5
序列转换模式
ADC 支持序列转换模式,在此模式下,ADC 可以按照预先编程好的顺序,对指定的输入通道逐一转换。
适用于对某一或者某几个通道,进行连续转换,数据量比较大的情况,比如测试信噪比或 ENOB。
用户可以通过依次配置 SEQ_QUEx 寄存器来指定序列的转换目标是哪个输入通道。
SEQ_QUE0 [CHAN_NUM]
位域可以配置序列转换触发之后,第一次 AD 转换的通道序号;SEQ_QUE1 [CHNUM] 位域配置第二次 AD 转换
的通道序号,以此类推,SEQ_QUE15[CHNUM] 位配置第 16 次 AD 转换的通道序号。
此外,用户需要配置 SEQ_CFG0 [SEQ_LEN] 位,来指定转换序列的长度,ADC 的转换序列最长可达 16。
序列开始转换可以通过软件或者硬件触发:
● 用户通过软件,先把 SEQ_CFG0 [SW_TRIG_EN] 位置 1,再把 SEQ_CFG0 [SW_TRIG] 位置 1,即触
发序列转换。
● SEQ_CFG0 [HW_TRIG_EN] 位置 1 以后,在 STRGI 上捕获到上升沿,即触发序列转换
一经触发,ADC 将按照顺序,根据 SEQ_QUE0 的配置开始转换输入通道,转换完成后,标志位 INT_STS
[SEQ_CVC](转换完成,conversion complete)就会置 1。此时:
● 如果 SEQ_CFG0 [CONT_EN] 位置 1,ADC 会自动根据 SEQ_QUE1 的配置开始下一次 AD 转换,直到
达到指定的序列长度 SEQ_QUEn。
● 如果 SEQ_CFG0 [CONT_EN] 位清 0,ADC 等到下一次软件或者硬件触发,才会开始下一个通道的转
换。
当 ADC 完成序列的全部转换(长度由 SEQ_CFG0 [SEQ_LEN] 位设置)后,标志位 INT_STS[SEQ_CMPT]
(序列转换完成,Sequence Complete)位会置 1。此时:
● 如果 SEQ_CFG0 [RESTART_EN] 位置 1,
SEQ_CFG0 [CONT_EN] 位置 1,
ADC 会自动根据 SEQ_QUEx
的配置,从 SEQ_QUE0 开始连续依次转换
● 如果 SEQ_CFG0 [RESTART_EN] 位置 0,SEQ_CFG0 [CONT_EN] 位置 1,ADC 在下一次软件或者硬
件触发后,会连续转换直到整个序列完成
● 如果 SEQ_CFG0 [CONT_EN] 位置 0,无论 SEQ_CFG0 [RESTART_EN] 位置 1 还是置 0,ADC 在下
一次软件或者硬件触发后,才会重新根据 SEQ_QUEx 的配置开始转换。
如果在 ADC 序列转换过程中,接收到新的序列转换触发信号,ADC 会忽略这个触发。如果是软件触发序
列转换,此时,INT_STS [SEQ_SW_CFLCT] 位会置 1。如果是由 STRGI 引发的硬件触发序列转换,INT_STS
[SEQ_HW_CFLCT] 位会置 1。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
888/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
58.2.6
16 位模数转换器 ADC16
序列转换模式的 DMA
ADC 序列转换模式支持内置 DMA,可以直接把转换结果写入内存中用户指定的缓冲区。用户可以通过寄存
器 SEQ_DMA_ADDR 配置目标地址,通过 SEQ_DMA_CFG [BUF_LEN] 设置数据区域长度。这样为 ADC 的序
列转换结果配置了一个循环缓冲区。即:
第一次 AD 转换完成,
DMA 会把转换结果写入 SEQ_DMA_ADDR,
下一次 AD 转换的结果会写入 SEQ_DMA_ADDR
+ 4。之后每一次转换完成都会使指针地址持续累加,如果地址超出 SEQ_DMA_ADDR + BUF_LEN,那么 ADC
会重新向 SEQ_DMA_ADDR 指向的内存地址单元写入下一次 AD 转换的结果。
注意,DMA 每次会向内存写入 32 位(4 字节)数据,其中 16 位的 AD 转换结果位于 [15:0]。位 [31:16] 还包括了周
期,序列编号,AD 输入通道序号等标志数据,方便软件解读 AD 转换的信息。
图 105为序列转换模式,DMA 写入内存的数据格式。
31
周期
30 29 28
2'b00
24 23
AD输入通道序号
IN0 = 5'b00000
IN1 = 5'b00001
…
20 19
4'b111x
16 15
序列转换号码
第1次转换 = 4’b0000
第2次转换 = 4’b0001
…
第16次转换 = 4’b1111
0
AD转换结果
图 105: 序列转换模式数据格式
用户可以利用其中的周期(Cycle)位 [31] 来辅助判断 AD 转换结果的实时性。当 DMA 在内存的缓冲区中第
一次写入转换结果时,该位会置 1。当写满整个缓冲区后,DMA 指针循环指向起始位置,这一轮该位会置 0。当
DMA 又一次写满缓冲区,指针第三次回到起始位置,这一轮周期(Cycle)位又会置 1。
为防止 DMA 覆盖掉缓冲区中没有被及时读取的数据,用户可以把 SEQ_DMA_CFG [STOP_EN] 位置 1,并设
置 SEQ_DMA_CFG [STOP_POS] 位,
以此标记最近一次软件读取转换结果的位置。
DMA 在指针到达 SEQ_DMA_ADDR
+ STOP_POS 后,
就不再将数据写入缓冲区。
这次及之后的 AD 转换的结果会丢失,
标志位 INT_STS [SEQ_DMAABT]
会置 1,如果打开对应中断,那么 ADC 会生成中断报警。
用户可以通过对 SEQ_DMA_CFG [DMA_RST] 位置 1 再清 0,复位整个转换序列。复位之后,ADC 在下一次软
件或者硬件触发后,
重新根据 SEQ_QUE0 的配置,
开始序列转换。
该位也会重置 DMA 的指针到 SEQ_DMA_ADDR
寄存器包含的地址。周期(Cycle)位也会重置到 1。
建议用户把 SEQ_DMA_CFG [DMA_RST] 位置 1 后,
软件把内存中的缓冲区初始化清 0,
之后再把 SEQ_DMA_CFG
[DMA_RST] 位清 0。
58.2.7
抢占转换模式
ADC 支持抢占转换模式,抢占转换是优先级最高的转换模式。
适用于电机控制系统,需要在指定时间对指定通道进行转换的实时性要求比较高的情况。
ADC 支持 12 组抢占转换序列,触发信号分别来自于芯片的片上互联模块,共 12 个抢占触发源。
用户可以通过寄存器 CONFIGx,分别配置这些抢占转换序列。
抢占转换通过硬件触发:
● 在 PTRGIxA,PTRGIxB 或者 PTRGIxC 上捕获到上升沿,即触发抢占序列 xA,xB 或 xC
用户首先需要通过 CONFIGx 寄存器的 [TRIG_LEN] 位配置抢占转换的序列长度,序列长度最多为 4,即每
个触发最多可以触发一次长度为 4 的转换。
用户可以通过 CONFIGx 寄存器配置抢占转换的转换顺序,配置寄存器的 [CHAN0],[CHAN1],[CHAN2],
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
889/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
[CHAN3] 位域依次可以配置触发后的第 1,2,3,4 次转换的 AD 输入通道号码。
抢占转换一旦开始,就会根据 [TRIG_LEN] 的配置连续转换完成整个抢占序列。抢占序列的第 x 次转换完成
后,如果 CONFIGx 寄存器的 [INTENx] 位置 1,INT_STS [TRIG_CMPT] 标志位会置 1,如果相应的中断控制位
也置 1,ADC 就会生成中断。
如果在 ADC 抢占转换过程中,接收到新的抢占转换触发信号,ADC 不会响应新的触发。但是会根据触发来
源是软件还是硬件,将 INT_STS [TRIG_SW_CFLICT] 标志位或者 INT_STS[TRIG_HW_CFLICT] 标志位置 1,表
示发生了抢占转换触发冲突,如果对应的中断控制位置 1,ADC 会产生中断报警。
如果几个不同的抢占转换同时触发,ADC 会按以下次序优先响应:
组号较小的抢占转换,如 PTRGI0A 优先于 PTRGI1A,同组之间,xA 优先于 xB,xB 优先于 xC。如 PTRGI0A
优先于 PTRGI0B。同时 INT_STS[PTCHWCFLICT] 标志位置 1。
58.2.8
抢占转换模式的 DMA
ADC 抢占转换模式支持内置 DMA,可以直接把转换结果写入内存中用户指定的缓冲区。
用户可以通过寄存器 TRG_DMA_ADDR 配置目标地址,以此地址为基地址,ADC 会占用一块 192 字节的区
域作为抢占转换结果的缓冲区。缓冲区分配如表 231:
序号
地址
描述
0
TRG_DMA_ADDR + 0x0
PTRGI0A 触发的第一次 AD 转换结果与附加信息
1
TRG_DMA_ADDR + 0x4
PTRGI0A 触发的第二次 AD 转换结果与附加信息
2
TRG_DMA_ADDR + 0x8
PTRGI0A 触发的第三次 AD 转换结果与附加信息
3
TRG_DMA_ADDR + 0xC
PTRGI0A 触发的第四次 AD 转换结果与附加信息
4
TRG_DMA_ADDR + 0x10
PTRGI0B 触发的第一次 AD 转换结果与附加信息
5
TRG_DMA_ADDR + 0x14
PTRGI0B 触发的第二次 AD 转换结果与附加信息
6
TRG_DMA_ADDR + 0x18
PTRGI0B 触发的第三次 AD 转换结果与附加信息
7
TRG_DMA_ADDR + 0x1C
PTRGI0B 触发的第四次 AD 转换结果与附加信息
8
TRG_DMA_ADDR + 0x20
PTRGI0C 触发的第一次 AD 转换结果与附加信息
9
TRG_DMA_ADDR + 0x24
PTRGI0C 触发的第二次 AD 转换结果与附加信息
10
TRG_DMA_ADDR + 0x28
PTRGI0C 触发的第三次 AD 转换结果与附加信息
11
TRG_DMA_ADDR + 0x2C
PTRGI0C 触发的第四次 AD 转换结果与附加信息
12
TRG_DMA_ADDR + 0x30
PTRGI1A 触发的第一次 AD 转换结果与附加信息
13
TRG_DMA_ADDR + 0x34
PTRGI1A 触发的第二次 AD 转换结果与附加信息
14
TRG_DMA_ADDR + 0x38
PTRGI1A 触发的第三次 AD 转换结果与附加信息
15
TRG_DMA_ADDR + 0x3C
PTRGI1A 触发的第四次 AD 转换结果与附加信息
16
TRG_DMA_ADDR + 0x40
PTRGI1B 触发的第一次 AD 转换结果与附加信息
17
TRG_DMA_ADDR + 0x44
PTRGI1B 触发的第二次 AD 转换结果与附加信息
18
TRG_DMA_ADDR + 0x48
PTRGI1B 触发的第三次 AD 转换结果与附加信息
19
TRG_DMA_ADDR + 0x4C
PTRGI1B 触发的第四次 AD 转换结果与附加信息
20
TRG_DMA_ADDR + 0x50
PTRGI1C 触发的第一次 AD 转换结果与附加信息
21
TRG_DMA_ADDR + 0x54
PTRGI1C 触发的第二次 AD 转换结果与附加信息
22
TRG_DMA_ADDR + 0x58
PTRGI1C 触发的第三次 AD 转换结果与附加信息
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
890/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
序号
地址
描述
23
TRG_DMA_ADDR + 0x5C
PTRGI1C 触发的第四次 AD 转换结果与附加信息
24
TRG_DMA_ADDR + 0x60
PTRGI2A 触发的第一次 AD 转换结果与附加信息
25
TRG_DMA_ADDR + 0x64
PTRGI2A 触发的第二次 AD 转换结果与附加信息
26
TRG_DMA_ADDR + 0x68
PTRGI2A 触发的第三次 AD 转换结果与附加信息
27
TRG_DMA_ADDR + 0x6C
PTRGI2A 触发的第四次 AD 转换结果与附加信息
28
TRG_DMA_ADDR + 0x70
PTRGI2B 触发的第一次 AD 转换结果与附加信息
29
TRG_DMA_ADDR + 0x74
PTRGI2B 触发的第二次 AD 转换结果与附加信息
30
TRG_DMA_ADDR + 0x78
PTRGI2B 触发的第三次 AD 转换结果与附加信息
31
TRG_DMA_ADDR + 0x7C
PTRGI2B 触发的第四次 AD 转换结果与附加信息
32
TRG_DMA_ADDR + 0x80
PTRGI2C 触发的第一次 AD 转换结果与附加信息
33
TRG_DMA_ADDR + 0x84
PTRGI2C 触发的第二次 AD 转换结果与附加信息
34
TRG_DMA_ADDR + 0x88
PTRGI2C 触发的第三次 AD 转换结果与附加信息
35
TRG_DMA_ADDR + 0x8C
PTRGI2C 触发的第四次 AD 转换结果与附加信息
36
TRG_DMA_ADDR + 0x90
PTRGI3A 触发的第一次 AD 转换结果与附加信息
37
TRG_DMA_ADDR + 0x94
PTRGI3A 触发的第二次 AD 转换结果与附加信息
38
TRG_DMA_ADDR + 0x98
PTRGI3A 触发的第三次 AD 转换结果与附加信息
39
TRG_DMA_ADDR + 0x9C
PTRGI3A 触发的第四次 AD 转换结果与附加信息
40
TRG_DMA_ADDR + 0xA0
PTRGI3B 触发的第一次 AD 转换结果与附加信息
41
TRG_DMA_ADDR + 0xA4
PTRGI3B 触发的第二次 AD 转换结果与附加信息
42
TRG_DMA_ADDR + 0xA8
PTRGI3B 触发的第三次 AD 转换结果与附加信息
43
TRG_DMA_ADDR + 0xAC
PTRGI3B 触发的第四次 AD 转换结果与附加信息
44
TRG_DMA_ADDR + 0xB0
PTRGI3C 触发的第一次 AD 转换结果与附加信息
45
TRG_DMA_ADDR + 0xB4
PTRGI3C 触发的第二次 AD 转换结果与附加信息
46
TRG_DMA_ADDR + 0xB8
PTRGI3C 触发的第三次 AD 转换结果与附加信息
47
TRG_DMA_ADDR + 0xBC
PTRGI3C 触发的第四次 AD 转换结果与附加信息
表 231: ADC 抢占转换 DMA 数据缓冲区分配
抢占转换触发后,按照触发来源以及在抢占转换序列中的序号,DMA 会把转换结果写入缓冲区对应的位置。
注意,DMA 每次会向内存写入 32 位(4 字节)数据,其中 16 位的 AD 转换结果位于 [15:0]。位 [31:16] 还包括了周
期,序列编号,AD 输入通道序号等标志数据,方便软件解读 AD 转换的信息。
31
30
1'b1
2'b00
29 28
24 23
20 19
AD输入通道序号
触发来源
IN0 = 5'b00000 PTC0A = 4’b0000
IN1 = 5'b00001
…
…
PTC3C = 4’b1011
16 15
序列序号
CONV0 = 4’b0000
CONV1 = 4’b0001
CONV2 = 4’b0010
CONV3 = 4’b0011
43
AD转换结果
0
4'b0000
图 106: 抢占转换模式数据格式
位 31 用于和软件的交互,软件可以在初始化缓冲区时将此位清零,在收到转换完成中断后读取结果时,需检
查此位为高,确保 ADC 已经将新的结果写入缓冲区。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
891/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
ADC 中断
58.2.9
ADC 支持以下中断:
● 在序列转换模式下,序列中某一次 AD 转换完成,INT_STS [SEQ_CVC] 位置 1
● 在序列转换模式下,整个序列转换完成,INT_STS[SEQ_CMPT] 位置 1
● ADC 序列转换进行中,软件触发序列转换,INT_STS[SEQ_SW_CFLCT] 位置 1
● ADC 序列转换进行中,硬件触发序列转换,INT_STS[SEQ_HW_CFLCT] 位置 1
● 在序列转换模式下,SEQ_DMA_CFG[STOP_EN] 位置 1,并设置 SEQ_DMA_CFG [STOP_POS] 位,
DMA 在指针到达 SEQ_DMA_ADDR + STOP_POS 后,
停止将数据写入缓冲区,
标志位 INT_STS[SEQ_DMAABT]
置1
● 抢占转换模式下,
抢占序列的第 x 次转换完成后,
并且 CONFIGx 寄存器的 [INTENx] 位置 1,
INT_STS[TRIG_CMPT]
位置 1
● ADC 序列抢占转换进行中,软件触发抢占转换,INT_STS[TRIG_SW_CFLICT] 位置 1
● ADC 序列抢占转换进行中,
又收到抢占触发信号,
或者多个抢占触发信号同时到达,
INT_STS[TRIG_HW_CFLICT]
位置 1
● ADC 读取转换进行中,并且已将 BUF_CFG0 [WAITDIS] 位置 1,软件读取另一个 BUS_RESULT 寄存
器,INT_STS [READ_CFLCT] 位置 1
● 当输入通道 x 的 AD 转换结果超出 THSHDx 寄存器设置的范围,即会报警,INT_STS [WDOG] 位置 1
● 序列转换和抢占转换的 DMA FIFO 溢出时,INT_STS[DMA_FIFO_FULL] 位置 1
● 序列转换和抢占转换的 DMA 对存储器写入 ADC 转换结果出错时,INT_STS [AHB_ERR] 位置 1
用户可以对 INT_STS 寄存器内的各个标志位写入 1 来把该标志位清 0。
ADC 可以通过 INT_EN 寄存器管理这些中断,如果对应的中断使能位置 1,那么标志位置 1 时,即表示产生
了中断。
58.3
ADC16 寄存器列表
ADC16 的寄存器列表如下:
ADC0 base address: 0xF0010000
ADC1 base address: 0xF0014000
ADC2 base address: 0xF0018000
地址偏移
名称
描述
复位值
0x0000
CONFIG[TRG0A]
抢占模式配置寄存器
0x00000000
0x0004
CONFIG[TRG0B]
抢占模式配置寄存器
0x00000000
0x0008
CONFIG[TRG0C]
抢占模式配置寄存器
0x00000000
0x000C
CONFIG[TRG1A]
抢占模式配置寄存器
0x00000000
0x0010
CONFIG[TRG1B]
抢占模式配置寄存器
0x00000000
0x0014
CONFIG[TRG1C]
抢占模式配置寄存器
0x00000000
0x0018
CONFIG[TRG2A]
抢占模式配置寄存器
0x00000000
0x001C
CONFIG[TRG2B]
抢占模式配置寄存器
0x00000000
0x0020
CONFIG[TRG2C]
抢占模式配置寄存器
0x00000000
0x0024
CONFIG[TRG3A]
抢占模式配置寄存器
0x00000000
0x0028
CONFIG[TRG3B]
抢占模式配置寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
892/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
地址偏移
名称
描述
复位值
0x002C
CONFIG[TRG3C]
抢占模式配置寄存器
0x00000000
0x0030
TRG_DMA_ADDR
抢占模式 DMA 地址寄存器
0x00000000
0x0034
TRG_SW_STA
0x0400
BUS_RESULT[CHN0]
读取模式结果寄存器
0x00000000
0x0404
BUS_RESULT[CHN1]
读取模式结果寄存器
0x00000000
0x0408
BUS_RESULT[CHN2]
读取模式结果寄存器
0x00000000
0x040C
BUS_RESULT[CHN3]
读取模式结果寄存器
0x00000000
0x0410
BUS_RESULT[CHN4]
读取模式结果寄存器
0x00000000
0x0414
BUS_RESULT[CHN5]
读取模式结果寄存器
0x00000000
0x0418
BUS_RESULT[CHN6]
读取模式结果寄存器
0x00000000
0x041C
BUS_RESULT[CHN7]
读取模式结果寄存器
0x00000000
0x0420
BUS_RESULT[CHN8]
读取模式结果寄存器
0x00000000
0x0424
BUS_RESULT[CHN9]
读取模式结果寄存器
0x00000000
0x0428
BUS_RESULT[CHN10]
读取模式结果寄存器
0x00000000
0x042C
BUS_RESULT[CHN11]
读取模式结果寄存器
0x00000000
0x0430
BUS_RESULT[CHN12]
读取模式结果寄存器
0x00000000
0x0434
BUS_RESULT[CHN13]
读取模式结果寄存器
0x00000000
0x0438
BUS_RESULT[CHN14]
读取模式结果寄存器
0x00000000
0x043C
BUS_RESULT[CHN15]
读取模式结果寄存器
0x00000000
0x0500
BUF_CFG0
读取模式配置寄存器 0
0x00000000
0x0800
SEQ_CFG0
序列模式配置寄存器 0
0x00000000
0x0804
SEQ_DMA_ADDR
序列模式 DMA 地址寄存器
0x00000000
0x080C
SEQ_DMA_CFG
序列模式 DMA 配置寄存器
0x00000000
0x0810
SEQ_QUE[CFG0]
序列模式队列配置寄存器
0x00000000
0x0814
SEQ_QUE[CFG1]
序列模式队列配置寄存器
0x00000000
0x0818
SEQ_QUE[CFG2]
序列模式队列配置寄存器
0x00000000
0x081C
SEQ_QUE[CFG3]
序列模式队列配置寄存器
0x00000000
0x0820
SEQ_QUE[CFG4]
序列模式队列配置寄存器
0x00000000
0x0824
SEQ_QUE[CFG5]
序列模式队列配置寄存器
0x00000000
0x0828
SEQ_QUE[CFG6]
序列模式队列配置寄存器
0x00000000
0x082C
SEQ_QUE[CFG7]
序列模式队列配置寄存器
0x00000000
0x0830
SEQ_QUE[CFG8]
序列模式队列配置寄存器
0x00000000
0x0834
SEQ_QUE[CFG9]
序列模式队列配置寄存器
0x00000000
0x0838
SEQ_QUE[CFG10]
序列模式队列配置寄存器
0x00000000
0x083C
SEQ_QUE[CFG11]
序列模式队列配置寄存器
0x00000000
0x0840
SEQ_QUE[CFG12]
序列模式队列配置寄存器
0x00000000
0x0844
SEQ_QUE[CFG13]
序列模式队列配置寄存器
0x00000000
0x0848
SEQ_QUE[CFG14]
序列模式队列配置寄存器
0x00000000
0x084C
SEQ_QUE[CFG15]
序列模式队列配置寄存器
0x00000000
0x0C00
PRD_CFG[CHN0][PRD_CFG]
周期模式配置寄存器
0x00000000
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
893/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
地址偏移
名称
描述
复位值
0x0C04
PRD_CFG[CHN0][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C08
PRD_CFG[CHN0][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C10
PRD_CFG[CHN1][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C14
PRD_CFG[CHN1][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C18
PRD_CFG[CHN1][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C20
PRD_CFG[CHN2][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C24
PRD_CFG[CHN2][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C28
PRD_CFG[CHN2][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C30
PRD_CFG[CHN3][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C34
PRD_CFG[CHN3][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C38
PRD_CFG[CHN3][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C40
PRD_CFG[CHN4][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C44
PRD_CFG[CHN4][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C48
PRD_CFG[CHN4][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C50
PRD_CFG[CHN5][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C54
PRD_CFG[CHN5][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C58
PRD_CFG[CHN5][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C60
PRD_CFG[CHN6][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C64
PRD_CFG[CHN6][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C68
PRD_CFG[CHN6][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C70
PRD_CFG[CHN7][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C74
PRD_CFG[CHN7][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C78
PRD_CFG[CHN7][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C80
PRD_CFG[CHN8][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C84
PRD_CFG[CHN8][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C88
PRD_CFG[CHN8][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0C90
PRD_CFG[CHN9][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0C94
PRD_CFG[CHN9][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0C98
PRD_CFG[CHN9][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0CA0
PRD_CFG[CHN10][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0CA4
PRD_CFG[CHN10][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0CA8
PRD_CFG[CHN10][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0CB0
PRD_CFG[CHN11][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0CB4
PRD_CFG[CHN11][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0CB8
PRD_CFG[CHN11][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0CC0
PRD_CFG[CHN12][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0CC4
PRD_CFG[CHN12][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0CC8
PRD_CFG[CHN12][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0CD0
PRD_CFG[CHN13][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0CD4
PRD_CFG[CHN13][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
894/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
地址偏移
名称
描述
复位值
0x0CD8
PRD_CFG[CHN13][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0CE0
PRD_CFG[CHN14][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0CE4
PRD_CFG[CHN14][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0CE8
PRD_CFG[CHN14][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x0CF0
PRD_CFG[CHN15][PRD_CFG]
周期模式配置寄存器
0x00000000
0x0CF4
PRD_CFG[CHN15][PRD_THSHD_CFG]
转换结果监测配置寄存器
0x00000000
0x0CF8
PRD_CFG[CHN15][PRD_RESULT]
周期模式结果寄存器
0x00000000
0x1000
SAMPLE_CFG[CHN0]
通道采样配置寄存器
0x00000000
0x1004
SAMPLE_CFG[CHN1]
通道采样配置寄存器
0x00000000
0x1008
SAMPLE_CFG[CHN2]
通道采样配置寄存器
0x00000000
0x100C
SAMPLE_CFG[CHN3]
通道采样配置寄存器
0x00000000
0x1010
SAMPLE_CFG[CHN4]
通道采样配置寄存器
0x00000000
0x1014
SAMPLE_CFG[CHN5]
通道采样配置寄存器
0x00000000
0x1018
SAMPLE_CFG[CHN6]
通道采样配置寄存器
0x00000000
0x101C
SAMPLE_CFG[CHN7]
通道采样配置寄存器
0x00000000
0x1020
SAMPLE_CFG[CHN8]
通道采样配置寄存器
0x00000000
0x1024
SAMPLE_CFG[CHN9]
通道采样配置寄存器
0x00000000
0x1028
SAMPLE_CFG[CHN10]
通道采样配置寄存器
0x00000000
0x102C
SAMPLE_CFG[CHN11]
通道采样配置寄存器
0x00000000
0x1030
SAMPLE_CFG[CHN12]
通道采样配置寄存器
0x00000000
0x1034
SAMPLE_CFG[CHN13]
通道采样配置寄存器
0x00000000
0x1038
SAMPLE_CFG[CHN14]
通道采样配置寄存器
0x00000000
0x103C
SAMPLE_CFG[CHN15]
通道采样配置寄存器
0x00000000
0x1104
CONV_CFG1
转换配置寄存器 1
0x00000000
0x1108
ADC_CFG0
ADC 配置寄存器 0
0x00000000
0x1110
INT_STS
状态寄存器
0x00000000
0x1114
INT_EN
中断使能寄存器
0x00000000
0x1200
ANA_CTRL0
模拟控制寄存器 0
0x00000000
0x1210
ANA_STATUS
模拟状态寄存器
0x00000000
0x1400
ADC16_PARAMS[ADC16_PARA00]
ADC16 参数寄存器
0x0000
0x1402
ADC16_PARAMS[ADC16_PARA01]
ADC16 参数寄存器
0x0000
0x1404
ADC16_PARAMS[ADC16_PARA02]
ADC16 参数寄存器
0x0000
0x1406
ADC16_PARAMS[ADC16_PARA03]
ADC16 参数寄存器
0x0000
0x1408
ADC16_PARAMS[ADC16_PARA04]
ADC16 参数寄存器
0x0000
0x140A
ADC16_PARAMS[ADC16_PARA05]
ADC16 参数寄存器
0x0000
0x140C
ADC16_PARAMS[ADC16_PARA06]
ADC16 参数寄存器
0x0000
0x140E
ADC16_PARAMS[ADC16_PARA07]
ADC16 参数寄存器
0x0000
0x1410
ADC16_PARAMS[ADC16_PARA08]
ADC16 参数寄存器
0x0000
0x1412
ADC16_PARAMS[ADC16_PARA09]
ADC16 参数寄存器
0x0000
0x1414
ADC16_PARAMS[ADC16_PARA10]
ADC16 参数寄存器
0x0000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
895/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
16 位模数转换器 ADC16
名称
描述
复位值
0x1416
ADC16_PARAMS[ADC16_PARA11]
ADC16 参数寄存器
0x0000
0x1418
ADC16_PARAMS[ADC16_PARA12]
ADC16 参数寄存器
0x0000
0x141A
ADC16_PARAMS[ADC16_PARA13]
ADC16 参数寄存器
0x0000
0x141C
ADC16_PARAMS[ADC16_PARA14]
ADC16 参数寄存器
0x0000
0x141E
ADC16_PARAMS[ADC16_PARA15]
ADC16 参数寄存器
0x0000
0x1420
ADC16_PARAMS[ADC16_PARA16]
ADC16 参数寄存器
0x0000
0x1422
ADC16_PARAMS[ADC16_PARA17]
ADC16 参数寄存器
0x0000
0x1424
ADC16_PARAMS[ADC16_PARA18]
ADC16 参数寄存器
0x0000
0x1426
ADC16_PARAMS[ADC16_PARA19]
ADC16 参数寄存器
0x0000
0x1428
ADC16_PARAMS[ADC16_PARA20]
ADC16 参数寄存器
0x0000
0x142A
ADC16_PARAMS[ADC16_PARA21]
ADC16 参数寄存器
0x0000
0x142C
ADC16_PARAMS[ADC16_PARA22]
ADC16 参数寄存器
0x0000
0x142E
ADC16_PARAMS[ADC16_PARA23]
ADC16 参数寄存器
0x0000
0x1430
ADC16_PARAMS[ADC16_PARA24]
ADC16 参数寄存器
0x0000
0x1432
ADC16_PARAMS[ADC16_PARA25]
ADC16 参数寄存器
0x0000
0x1434
ADC16_PARAMS[ADC16_PARA26]
ADC16 参数寄存器
0x0000
0x1436
ADC16_PARAMS[ADC16_PARA27]
ADC16 参数寄存器
0x0000
0x1438
ADC16_PARAMS[ADC16_PARA28]
ADC16 参数寄存器
0x0000
0x143A
ADC16_PARAMS[ADC16_PARA29]
ADC16 参数寄存器
0x0000
0x143C
ADC16_PARAMS[ADC16_PARA30]
ADC16 参数寄存器
0x0000
0x143E
ADC16_PARAMS[ADC16_PARA31]
ADC16 参数寄存器
0x0000
0x1440
ADC16_PARAMS[ADC16_PARA32]
ADC16 参数寄存器
0x0000
0x1442
ADC16_PARAMS[ADC16_PARA33]
ADC16 参数寄存器
0x0000
0x1444
ADC16_CONFIG0
ADC16 配置寄存器 0
0x00000000
0x1460
ADC16_CONFIG1
0x00000000
表 232: ADC16 寄存器列表
ADC16 寄存器描述
58.4
ADC16 的寄存器详细说明如下:
RSVD
x
0
0
0
10
9
8
0
0
0
7
6
5
x
0
0
4
3
0
0
2
0
CONFIG [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
896/1016
1
0
0
0
CHAN0
x
11
RW
0
12
INTEN0
0
13
RW
0
14
CHAN1
0
15
RW
0
16
RSVD
0
17
QUEUE_EN
x
18
INTEN1
19
RW
20
N/A
x
21
CHAN2
0
CHAN3
0
RW
0
22
RW
0
23
INTEN2
0
24
RW
0
25
N/A
0
26
RW
27
INTEN3
28
RW
WO
0
29
RSVD
30
TRIG_LEN
31
CONFIG (0x0 + 0x4 * n)
N/A
58.4.1
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
16 位模数转换器 ADC16
位域
名称
描述
31-30
TRIG_LEN
29
INTEN3
28-24
CHAN3
21
INTEN2
20-16
CHAN2
13
INTEN1
12-8
CHAN1
第 2 次转换的通道号码
6
QUEUE_EN
抢占转换队列使能控制
5
INTEN0
4-0
CHAN0
抢占转换队列长度,0 表示队列包含 1 个转换,3 表示队列包含 4
个转换
第 4 次转换结束后中断使能,置 1 时,此次转换结束后
TRIG_COMPT 标志位置 1
第 4 次转换的通道号码
第 3 次转换结束后中断使能,置 1 时,此次转换结束后
TRIG_COMPT 标志位置 1
第 3 次转换的通道号码
第 2 次转换结束后中断使能,置 1 时,此次转换结束后
TRIG_COMPT 标志位置 1
第 1 次转换结束后中断使能,置 1 时,此次转换结束后
TRIG_COMPT 标志位置 1
第 1 次转换的通道号码
CONFIG 位域
58.4.2
TRG_DMA_ADDR (0x30)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
0
RW
N/A
RSVD
TRG_DMA_ADDR
31
0
x
TRG_DMA_ADDR [31:0]
位域
名称
31-2
TRG_DMA_ADDR
描述
抢占转换的 DMA 目标地址,抢占转换结束后,ADC 内置的 DMA
会将转换结果存放入该位域指向的一块长度为 192 字节的缓冲区。
TRG_DMA_ADDR 位域
58.4.3
TRG_SW_STA (0x34)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
897/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
x
x
3
2
0
0
RW
N/A
x
4
0
1
0
0
0
TRIG_SW_INDEX
28
RW
29
TRG_SW_STA
30
RSVD
31
16 位模数转换器 ADC16
TRG_SW_STA [31:0]
位域
名称
描述
软件触发位,设置该位会触发一次 trig_sw_index 指定队列的抢占
4
ADC 转换。
TRG_SW_STA
该位在队列中所有通道转换完成后,由硬件清零。
3-0
软件触发抢占队列
TRIG_SW_INDEX
TRG_SW_STA 位域
BUS_RESULT (0x400 + 0x4 * n)
28
27
26
25
x
x
x
x
x
x
x
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
RO
N/A
x
16
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
CHAN_RESULT
29
RO
30
RSVD
31
VALID
58.4.4
BUS_RESULT [31:0]
位域
名称
描述
转换结果有效提示位。如果 WAIT_DIS 位置 1,该位在读取转换
结束后置 1,并在软件从结果寄存器读取转换结果后清 0
16
VALID
该位为 0 时,对读取转换结果寄存器的读操作会触发一次 AD 转
换如果 AD 转换过程中读取其他通道的读取转换结果寄存器,不
会触发 AD 转换,只会返回旧的转换结果,并且 read_cflict 标志
位会置 1
读此位域会触发一次对应通道的 AD 转换
如果 WAIT_DIS 位置 1,读此位域会返回前一次 AD 转换结果,
15-0
CHAN_RESULT
直到 VALID 位置 1 后,才能读到最近一次的转换结果如果
WAIT_DIS 位置 0,读此位域会阻塞总线,直到 AD 完成转换之后
返回转换结果
BUS_RESULT 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
898/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
BUF_CFG0 (0x500)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
9
8
7
6
5
4
3
2
1
0
0
0
x
x
0
RW
N/A
RSVD
31
WAIT_DIS
58.4.5
16 位模数转换器 ADC16
BUF_CFG0 [31:0]
位域
名称
描述
0
WAIT_DIS
该位置 1 可以防止读取模式阻塞总线
BUF_CFG0 位域
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
x
x
x
x
x
x
x
x
x
0
0
RSVD
RW
N/A
x
x
x
HW_TRIG_EN
x
19
RW
x
20
SW_TRIG
x
RO
0
21
SW_TRIG_EN
22
RW
23
WO
24
CONT_EN
25
RW
26
RESTART_EN
27
RW
28
RSVD
29
N/A
30
CYCLE
31
SEQ_CFG0 (0x800)
SEQ_LEN
58.4.6
0
0
0
0
0
SEQ_CFG0 [31:0]
位域
名称
31
CYCLE
11-8
SEQ_LEN
4
RESTART_EN
描述
序列模式 DMA 写内存的周期提示位,该位在每次 DMA 写内存后
会翻转
序列转换的队列长度,0 表示包含 1 次转换,0xF 表示包含 16 次
转换
自动重新转换位,当此位与 CONT_EN 位都置 1 时,仅需 1 次触
发,ADC 硬件会持续地循环转换整个序列
连续转换位
3
CONT_EN
1:ADC 在收到 1 次序列转换触发后,就会连续转换完整个序列
0:ADC 在收到 1 次序列转换触发后,转换序列中的一个通道
序列转换软件触发位
2
SW_TRIG
1
SW_TRIG_EN
序列转换软件触发使能位
0
HW_TRIG_EN
序列转换硬件触发使能位
SEQ_CFG0 位域
58.4.7
SEQ_DMA_ADDR (0x804)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
899/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
x
x
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
N/A
RSVD
TAR_ADDR
31
16 位模数转换器 ADC16
0
SEQ_DMA_ADDR [31:0]
位域
名称
描述
31-2
TAR_ADDR
序列转换 DMA 的目标地址
SEQ_DMA_ADDR 位域
23
22
x
0
0
0
0
0
0
21
20
19
18
17
16
15
0
0
0
0
0
x
RW
N/A
x
14
0
x
13
12
0
0
RW
24
STOP_EN
25
DMA_RST
26
RW
27
RW
x
28
RSVD
x
29
STOP_POS
30
RSVD
31
BUF_LEN
SEQ_DMA_CFG (0x80C)
N/A
58.4.8
SEQ_DMA_CFG [31:0]
位域
名称
27-16
STOP_POS
描述
DMA 停止位置位,如果 STOP_EN 位置 1,序列模式的 DMA 在
写入到该位指定的位置后,就不再继续将结果写入内存。直到软
件更新此位,指定新的停止写入位置。
重置序列转换 DMA,置 1 后,序列转换 DMA 不再将转换结果写
13
DMA_RST
入内存,会把写内存指针重置到 TAR_ADDR,并把 cycle 位重置
为1
12
STOP_EN
该位置 1 后,序列模式 DMA 会在指针指向特定位置后,不再往
内存写入转换结果
内存中分配给序列转换 DMA 的缓冲区长度。DMA 会在写满缓冲
11-0
BUF_LEN
区后,重新从缓冲区头部写入新的转换结果
0 表示缓冲区大小为 4 Byte,0xFFF 表示缓冲区大小为 16 KB
SEQ_DMA_CFG 位域
58.4.9
SEQ_QUE (0x810 + 0x4 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
900/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
27
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
x
x
x
5
4
3
0
0
RW
N/A
x
0
2
1
0
0
0
CHAN_NUM_4_0
28
RW
29
SEQ_INT_EN
30
RSVD
31
16 位模数转换器 ADC16
0
SEQ_QUE [31:0]
位域
名称
描述
5
SEQ_INT_EN
4-0
CHAN_NUM_4_0
本次转换完成后中断使能,置 1 后,此次转换完成后 SEQ_CVC
标志位置 1
本次转换的通道序号
SEQ_QUE 位域
PRD_CFG[PRD_CFG] (0xC00 + 0x10 * n)
28
27
26
25
24
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
0
0
9
8
7
6
5
4
0
0
0
0
0
0
RW
N/A
x
10
0
3
2
1
0
0
0
0
0
PRD
29
RW
30
RSVD
31
PRESCALE
58.4.10
PRD_CFG[PRD_CFG] [31:0]
位域
名称
描述
周期模式周期长度的预分频
0: 1* PRD
1:2* PRD
2:4* PRD
12-8
PRESCALE
......
15:32K* PRD
......
31: 2G* PRD
PRD 为分频前的 adc 时钟,默认为 AHB 时钟
7-0
PRD
周期模式的周期长度,0 表示关闭周期模式
单位由 prescale 决定
PRD_CFG[PRD_CFG] 位域
58.4.11
PRD_CFG[PRD_THSHD_CFG] (0xC04 + 0x10 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
901/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
RW
THSHDL
THSHDH
31
16 位模数转换器 ADC16
0
PRD_CFG[PRD_THSHD_CFG] [31:0]
位域
名称
描述
31-16
THSHDH
监测上限,当转换结果超过上限时,WDOG 标志位置 1
15-0
THSHDL
监测下限,当转换结果低于下限时,WDOG 标志位置 1
PRD_CFG[PRD_THSHD_CFG] 位域
PRD_CFG[PRD_RESULT] (0xC08 + 0x10 * n)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RO
N/A
RSVD
31
CHAN_RESULT
58.4.12
x
PRD_CFG[PRD_RESULT] [31:0]
位域
名称
描述
周期模式转换结果,周期模式下,该位会周期性得更新 AD 转换
15-0
结果,如果对应 AD 通道由其他转换模式触发,转换结果也会存
CHAN_RESULT
放到该位域
PRD_CFG[PRD_RESULT] 位域
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
SAMPLE_CLOCK_NUMBER
30
SAMPLE_CLOCK_NUMBER_SHIFT
31
SAMPLE_CFG (0x1000 + 0x4 * n)
RSVD
58.4.13
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
902/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
x
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
0
10
8
7
6
5
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
0
0
RW
9
x
4
RW
30
N/A
31
16 位模数转换器 ADC16
SAMPLE_CFG [31:0]
位域
名称
描述
采样长度左移位数
SAMPLE_CLOCK
11-9
1:sample_clock_number«1
_NUMBER_SHIFT
......
SAMPLE_CLOCK
8-0
采样长度,以 ADC 时钟为单位
_NUMBER
SAMPLE_CFG 位域
CONV_CFG1 (0x1104)
28
27
26
25
24
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
8
7
x
x
x
x
x
x
x
x
x
x
x
0
0
RW
N/A
x
CLOCK_DIVIDER
29
0
RW
30
RSVD
31
CONVERT_CLOCK_NUMBER
58.4.14
CONV_CFG1 [31:0]
位域
名称
描述
AD 转换时间长度,单位为 ADC 时钟周期
8-4
CONVERT_CLOC
当 ADC 转换精度为 16 位时,应设为 21,对应于 21 个时钟周期
K_NUMBER
用户可以设置更小的值,以达到更快的转换速度,但是精度会下
降,设置其他值时需同时配置 adc16_config1.con_end_cnt
ADC 时钟分频位,ADC 时钟与总线时钟比率
0:1:1
3-0
CLOCK_DIVIDER
1:1:2
2:1:3
...
15: 1:16
CONV_CFG1 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
903/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
ADC_CFG0 (0x1108)
0
26
25
24
23
22
21
20
19
18
17
16
15
x
x
x
x
x
x
x
x
x
x
x
x
x
x
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
0
PORT3_REALTIME
x
27
RW
RW
0
28
RSVD
RSVD
ADC_AHB_EN
N/A
29
SEL_SYNC_AHB
30
RW
31
N/A
58.4.15
16 位模数转换器 ADC16
x
0
ADC_CFG0 [31:0]
位域
名称
描述
31
SEL_SYNC_AHB
29
ADC_AHB_EN
1: ADC 时钟与总线时钟同步,此位置 1 时,ADC 时钟必须与总
线时钟相同
1:允许序列转换和抢占转换的 DMA 把转换结果写入内存
PORT3_REALTIM
0
set to enable trg queue stop other queues
E
ADC_CFG0 位域
INT_STS (0x1110)
AHB_ERR
RW1C
0
0
0
0
0
x
x
18
17
16
15
14
13
12
11
10
9
8
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
WDOG
DMA_FIFO_FULL
RW1C
0
19
RW1C
SEQ_CVC
RW1C
0
20
RSVD
SEQ_CMPT
RW1C
0
SEQ_DMAABT
0
RW1C
0
SEQ_SW_CFLCT
0
SEQ_HW_CFLCT
21
RW1C
22
RW1C
23
READ_CFLCT
24
RW1C
25
TRIG_SW_CFLCT
26
TRIG_HW_CFLCT
27
RW1C
28
RW1C
29
TRIG_CMPT
30
RW1C
31
N/A
58.4.16
INT_STS [31:0]
位域
名称
描述
31
TRIG_CMPT
30
TRIG_SW_CFLCT
软件触发抢占转换冲突标志位
29
TRIG_HW_CFLCT
硬件触发抢占转换冲突标志位
28
READ_CFLCT
27
SEQ_SW_CFLCT
软件触发序列转换冲突标志位
26
SEQ_HW_CFLCT
硬件触发序列转换冲突标志位
25
SEQ_DMAABT
抢占转换完成标志位
读取转换冲突位,如果 WAIT_DIS 位置 1,在 AD 转换进行中,
软件读取其他通道的读取结果寄存器后,该位置 1
序列模式 DMA 放弃标志位,当 STOP_EN 位置 1,并且 DMA 写
入到 STOP_POS 指定的停止位置后,该位置 1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
904/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
24
SEQ_CMPT
23
SEQ_CVC
22
DMA_FIFO_FULL
21
AHB_ERR
15-0
WDOG
16 位模数转换器 ADC16
描述
序列模式队列完成标志位
序列模式单次转换完成标志位,对应的 SEQ_INT_EN 位置 1 后,
才会置 1
序列模式或抢占模式 DMA 内部 FIFO 满标志位,DMA 的目标存
储器写入速率不足时可能置 1
序列模式或抢占模式 DMA 错误标志位,如目标地址为非法地址
时可能置 1
AD 转换结果监测看门狗标志位
INT_STS 位域
INT_EN (0x1114)
SEQ_CVC
DMA_FIFO_FULL
AHB_ERR
RW
RW
RW
0
0
0
0
0
0
0
0
0
x
x
18
17
16
15
14
13
12
11
10
9
8
x
x
x
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
WDOG
SEQ_CMPT
RW
0
19
RW
SEQ_DMAABT
RW
0
20
RSVD
SEQ_SW_CFLCT
SEQ_HW_CFLCT
21
RW
22
RW
23
READ_CFLCT
24
RW
25
TRIG_SW_CFLCT
26
TRIG_HW_CFLCT
27
RW
28
RW
29
TRIG_CMPT
30
RW
31
N/A
58.4.17
INT_EN [31:0]
位域
名称
描述
31
TRIG_CMPT
30
TRIG_SW_CFLCT
软件触发抢占转换冲突标志位中断使能位
29
TRIG_HW_CFLCT
硬件触发抢占转换冲突标志位中断使能位
28
READ_CFLCT
27
SEQ_SW_CFLCT
软件触发序列转换冲突标志位中断使能位
26
SEQ_HW_CFLCT
硬件触发序列转换冲突标志位中断使能位
25
SEQ_DMAABT
24
SEQ_CMPT
23
SEQ_CVC
22
DMA_FIFO_FULL
21
AHB_ERR
15-0
WDOG
抢占转换完成标志位中断使能位
读取转换冲突位中断使能位
序列模式 DMA 放弃标志位中断使能位
序列模式队列完成标志位中断使能位
序列模式单次转换完成标志位中断使能位
序列模式或抢占模式 DMA 内部 FIFO 满标志位中断使能位
序列模式或抢占模式 DMA 错误标志位中断使能位
AD 转换结果监测看门狗标志位中断使能位
INT_EN 位域
58.4.18
ANA_CTRL0 (0x1200)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
905/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
x
x
x
x
x
x
x
x
x
12
11
10
9
8
x
x
x
x
RW
N/A
x
0
7
6
5
4
3
x
2
1
0
x
x
x
x
0
x
x
6
5
4
3
2
1
0
x
x
x
x
x
x
RSVD
24
N/A
25
STARTCAL
26
RW
27
RSVD
28
N/A
29
ADC_CLK_ON
30
RSVD
31
16 位模数转换器 ADC16
ANA_CTRL0 [31:0]
位域
名称
描述
12
ADC_CLK_ON
2
STARTCAL
在写入任意 ADC16_* 寄存器前,该位必须置 1
1:开始校正
ANA_CTRL0 位域
ANA_STATUS (0x1210)
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
x
x
x
x
7
RW
N/A
RSVD
29
N/A
30
RSVD
31
CALON
58.4.19
x
0
x
ANA_STATUS [31:0]
位域
名称
描述
7
CALON
校正提示位
1:ADC16 校正进行中
ANA_STATUS 位域
ADC16_PARAMS (0x1400 + 0x2 * n)
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
PARAM_VAL
58.4.20
ADC16_PARAMS [15:0]
位域
名称
15-0
PARAM_VAL
描述
ADC16 校正参数
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
906/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
16 位模数转换器 ADC16
描述
ADC16_PARAMS 位域
ADC16_CONFIG0 (0x1444)
19
18
0
x
x
17
0
0
16
15
x
x
14
x
13
12
11
10
9
8
7
0
0
0
0
0
0
0
0
6
5
4
3
2
1
0
0
0
0
0
0
0
0
CONV_PARAM
0
20
RW
0
21
PREEMPT_EN
x
22
RW
x
23
RSVD
x
N/A
x
24
N/A
25
CAL_AVG_CFG
x
26
RW
x
27
BANDGAP_EN
x
28
RW
29
REG_EN
30
RSVD
31
RW
58.4.21
ADC16_CONFIG0 [31:0]
位域
名称
描述
24
REG_EN
23
BANDGAP_EN
1:打开稳压器
1:打开 Bandgap
用于校正结果平均
0:1 轮
1:2 轮
22-20
2:4 轮
CAL_AVG_CFG
......
5:32 轮
其他:保留
14
PREEMPT_EN
13-0
CONV_PARAM
1:使能抢占转换抢占功能,抢占转换可以打断进行中的其他模式
转换过程
AD 转换参数
ADC16_CONFIG0 位域
ADC16_CONFIG1 (0x1460)
28
27
26
25
24
23
x
x
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
12
11
x
x
x
x
x
x
x
x
x
0
0
9
8
7
6
5
4
0
0
x
x
x
x
RW
N/A
x
10
0
3
2
1
0
x
x
x
x
RSVD
29
N/A
30
RSVD
31
COV_END_CNT
58.4.22
ADC16_CONFIG1 [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
907/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
16 位模数转换器 ADC16
描述
AD 转换结束计数器,当使用完全 16 位精度时,此位为默认 1;
12-8
COV_END_CNT
如果减小转换时间,除需将 conv_cfg1.convert_clock_number 配
置为小于 21 的值外,还需配置此位:
conv_end_cnt=21-convert_clock_number+1
ADC16_CONFIG1 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
908/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
模拟比较器 ACMP
模拟比较器 ACMP
59
本章节介绍模拟比较器 ACMP 的功能和特性。
特性总结
59.1
模拟比较器 ACMP 的主要特性如下:
● 3.0 至 3.6V 工作
● 支持轨到轨输入
● 可编程滞回
● 支持窗口模式输出
● 支持对输出进行数字滤波
● 支持生成中断
● 支持 DMA
● 内置 8bit DAC
功能描述
59.2
本章节描述模拟比较器 ACMP 的功能。
比较器可以用来比较 PIN 和 MIN 这两个模拟输入信号,当 PIN 的电压高于 MIN 电压时,模拟器输出逻辑 1。
反之,当 PIN 的电压低于于 MIN 电压时,模拟器输出逻辑 0。
59.2.1
ACMP 输入配置
用户可以通过配置比较器的 CFG[PINSEL] 位,选择 PIN 的输入来源:
● INN0,固定连接到 DAC_OUT
● INN1
● INN2
● INN3
● INN4
● INN5
● INN6
● INN7
用户可以通过配置比较器的 CFG[MINSEL] 位,选择 MIN 的输入来源:
● INP0,固定连接到 DAC_OUT
● INP1
● INP2
● INP3
● INP4
● INP5
● INP6
● INP7
用户可以通过配置 CFG[HYST] 位来设置比较器的滞回 (hysteresis)。比较器支持 4 个不同水平的滞回。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
909/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
59.2.2
模拟比较器 ACMP
ACMP 输出控制
ACMP 的输出 OUT 反映了 2 个输入之间电压大小关系。用户也可以通过比较器控制逻辑对输出进行一定的
干预。
用户可以通过 CFG[OPOL] 位,对输出取反。
用户可以对比较器输出进行数字滤波,当 CFG[FLTBYPS] 置 0 时,数字滤波器有效,置 1 时,数字滤波器无
效。
当数字滤波器有效时,用户配置 CFG[FLTMODE] 可以指定滤波器的工作模式:
● 3’b000,旁路模式,数字滤波器关闭
● 3’b100,滤刺模式,滤波器输入翻转后,输出也会立即翻转,之后会在一定时间内无视滤波器的输入。这
个模式下,滤波器输出会紧随输入,同时会避免输出信号出现毛刺。
● 3’b101,延时滤波器,滤波器输入翻转后需要保持一定时间,滤波器输出才会翻转
● 3’b110,滤峰模式,滤波器输入置逻辑 1 后,需要保持一定时间,滤波器输出才会置逻辑 1,而滤波器输
入置 0,滤波器输出会立即置 0,这个模式的目的是滤除不够长的输入波峰。
● 3’b111,滤谷模式,滤波器输入置逻辑 0 后,需要保持一定时间,滤波器输出才会置逻辑 0,而滤波器输
入置 1,滤波器输出会立即置 1,这个模式的目的是滤除不够长的输入波谷。
用户可以通过 CFG[FLTLEN] 位,配置滤波器的长度。
用户可以通过 CFG[WINEN] 位,打开输出的窗口模式。窗口模式下,即 CFG [WINEN] 位置 1 时,在 ACMP
的 WIN 输入为逻辑 0 时,比较器始终输出逻辑 0,在 WIN 输入为逻辑 1 时,比较器输出正常。
59.2.3
ACMP 工作模式
ACMP 支持高性能模式和常规模式这两种工作模式。用户将 CFG[HPMODE] 位置 1,即可将 ACMP 设置为
高性能模式。在高性能模式下,ACMP 的输出延时比常规模式更小,但是功耗更高。
59.2.4
中断和 DMA
ACMP 可以在输出的上升沿,
下降沿,
或者双边沿时产生中断,
用户可以配置 IRQEN[REDGEN] 和 IRQEN[FEDGEN]
位来打开或者关闭相应的中断请求。
同样的,CMP 可以在输出的上升沿,下降沿,或者双边沿时产生 DMA 请求,用户可以配置 DMAEN[REDGEN]
和 IRQEN[FEDGEN] 位来打开或者关闭相应的 DMA 请求。
59.3
ACMP 寄存器列表
ACMP 的寄存器列表如下:
ACMP base address: 0xF0020000
地址偏移
名称
描述
复位值
0x0000
CHANNEL[CHN0][CFG]
配置寄存器
0x00000000
0x0004
CHANNEL[CHN0][DACCFG]
DAC 配置寄存器
0x00000000
0x0010
CHANNEL[CHN0][SR]
状态寄存器
0x00000000
0x0014
CHANNEL[CHN0][IRQEN]
中断请求使能寄存器
0x00000000
0x0018
CHANNEL[CHN0][DMAEN]
DMA 请求使能寄存器
0x00000000
0x0020
CHANNEL[CHN1][CFG]
配置寄存器
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
910/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
模拟比较器 ACMP
名称
描述
复位值
0x0024
CHANNEL[CHN1][DACCFG]
DAC 配置寄存器
0x00000000
0x0030
CHANNEL[CHN1][SR]
状态寄存器
0x00000000
0x0034
CHANNEL[CHN1][IRQEN]
中断请求使能寄存器
0x00000000
0x0038
CHANNEL[CHN1][DMAEN]
DMA 请求使能寄存器
0x00000000
0x0040
CHANNEL[CHN2][CFG]
配置寄存器
0x00000000
0x0044
CHANNEL[CHN2][DACCFG]
DAC 配置寄存器
0x00000000
0x0050
CHANNEL[CHN2][SR]
状态寄存器
0x00000000
0x0054
CHANNEL[CHN2][IRQEN]
中断请求使能寄存器
0x00000000
0x0058
CHANNEL[CHN2][DMAEN]
DMA 请求使能寄存器
0x00000000
0x0060
CHANNEL[CHN3][CFG]
配置寄存器
0x00000000
0x0064
CHANNEL[CHN3][DACCFG]
DAC 配置寄存器
0x00000000
0x0070
CHANNEL[CHN3][SR]
状态寄存器
0x00000000
0x0074
CHANNEL[CHN3][IRQEN]
中断请求使能寄存器
0x00000000
0x0078
CHANNEL[CHN3][DMAEN]
DMA 请求使能寄存器
0x00000000
表 233: ACMP 寄存器列表
ACMP 寄存器描述
59.4
ACMP 的寄存器详细说明如下:
0
0
11
10
9
8
7
6
0
0
0
0
0
0
0
0
4
3
2
1
0
0
0
0
0
0
0
FLTLEN
5
RW
0
12
SYNCEN
0
13
RW
0
14
FLTMODE
0
15
RW
OPOL
16
RW
0
17
WINEN
0
18
RW
PINSEL
RW
0
19
FLTBYPS
x
20
CMPOEN
0
21
RW
0
22
RW
0
23
RSVD
0
24
N/A
0
25
MINSEL
0
26
RW
CMPEN
RW
27
HPMODE
0
28
RW
RW
0
29
DACEN
30
HYST
31
CHANNEL[CFG] (0x0 + 0x20 * n)
RW
59.4.1
CHANNEL[CFG] [31:0]
位域
名称
描述
比较器滞回设置位
00: 滞回值 0
31-30
HYST
01: 滞回值 1
10: 滞回值 2
11: 滞回值 3
DAC 使能位
29
DACEN
0: DAC 关闭
1: DAC 使能
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
911/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
模拟比较器 ACMP
描述
高性能使能位
28
0: 高性能模式关闭
HPMODE
1: 高性能模式打开
比较器使能位
27
0: 比较器关闭
CMPEN
1: 比较器打开
26-24
MINSEL
22-20
PINSEL
MIN 选择
从比较器输入信号和 DAC 输出中选择一个作为 MIN
PIN 选择
从比较器输入信号和 DAC 输出中选择一个作为 PIN
比较器输出使能位
19
0: 比较器输出关闭
CMPOEN
1: 比较器输出打开
比较器输出滤波器旁路
18
0: 比较器输出会经过数字滤波
FLTBYPS
1: 比较器输出不经过数字滤波
比较器窗口模式使能位
17
0: 比较器窗口模式关闭
WINEN
1: 比较器窗口模式使能
比较器输出取反位
16
0: 比较器输出不变
OPOL
1: 比较器输出取反
此位域定义了比较器输出滤波器的模式
000:旁路模式
15-13
100:滤刺模式
FLTMODE
101:延时滤波器
110:滤峰模式
111:滤谷模式
比较器输出时钟同步使能位
12
0: 比较器输出不与比较器时钟同步
SYNCEN
1: 比较器输出与比较器时钟同步
11-0
比较器输出滤波器的长度,单位是时钟周期
FLTLEN
CHANNEL[CFG] 位域
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
DACCFG
29
RW
30
RSVD
31
CHANNEL[DACCFG] (0x4 + 0x20 * n)
N/A
59.4.2
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
912/1016
1
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
模拟比较器 ACMP
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
0
1
0
CHANNEL[DACCFG] [31:0]
位域
名称
描述
7-0
DACCFG
8 位 DAC 输出值至模拟模块
CHANNEL[DACCFG] 位域
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
REDGF
29
RW
30
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
1
0
N/A
RSVD
31
FEDGF
CHANNEL[SR] (0x10 + 0x20 * n)
RW
59.4.3
x
CHANNEL[SR] [31:0]
位域
名称
描述
1
FEDGF
比较器输出下降沿标志位,该位写 1 清 0
0
REDGF
比较器输出上升沿标志位,该位写 1 清 0
CHANNEL[SR] 位域
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
CHANNEL[IRQEN] [31:0]
位域
名称
描述
1
FEDGEN
比较器输出下降沿中断请求使能位
0
REDGEN
比较器输出上升沿中断请求使能位
CHANNEL[IRQEN] 位域
59.4.5
CHANNEL[DMAEN] (0x18 + 0x20 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
913/1016
REDGEN
29
RW
30
RSVD
31
FEDGEN
CHANNEL[IRQEN] (0x14 + 0x20 * n)
RW
59.4.4
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
CHANNEL[DMAEN] [31:0]
位域
名称
描述
1
FEDGEN
比较器输出下降沿 DMA 请求使能位
0
REDGEN
比较器输出上升沿 DMA 请求使能位
CHANNEL[DMAEN] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
914/1016
1
0
REDGEN
27
RW
28
FEDGEN
29
RW
30
RSVD
31
模拟比较器 ACMP
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
数模转换器 DAC
数模转换器 DAC
60
本章节介绍数模转换器 DAC 的功能和特性。
特性总结
60.1
数模转换器 DAC 的主要特性如下:
● 最大 1MHz,12bit
● 两个时钟域:AHB,DAC
● 内置 16 位分频器,可以将 DAC 时钟分频至小于等于 1MHz 的数据输出频率。
● 支持直接模式,阶梯模式和内存模式
● 内置 DMA
● 支持中断,DMA 请求
功能描述
60.2
本章节描述数模转换器 DAC 的功能。
60.2.1
直接模式
用户通过写 12 位寄存器,直接输出所需电压。
60.2.2
阶梯模式
DAC 输出电压从起始值到终止值。
● 可以递增或递减;
● 每次阶梯值可配;
● 到达终止值后,可配置停在终止值,或者回到起始值继续;
● 支持 4 组阶梯配置,每组可以独立配置起止值,阶梯值,循环模式,递增递减等;
60.2.3
内存模式
DAC 内置 DMA 可以从指定存储空间中读出一段数据,从 DAC 输出;
DMA 按 32 位从存储空间读出数据,每笔 32 位数据可以配置成一个或两个 DAC 输出数据;
用户可以配置两个存储空间,每个最大 1M 字节,支持最多 512K 个点,DAC 控制器读完一个后自动从另一
个读取数据。
60.2.4
触发控制
阶梯模式和内存模式,都可以由软件或硬件触发使能,使能后根据配置的 DAC 输出频率输出数据;
● 软件触发:软件寄存器触发;
● 硬件触发:通过配置互联管理器产生硬件触发;
60.2.5
中断,DMA 请求
内存模式时,支持在每个存储空间结束时发出中断或者 DMA 请求。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
915/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
60.2.6
数模转换器 DAC
时钟控制
DAC 输入有两个时钟,APB 和 DAC 时钟,APB 时钟用于 CPU 读写配置寄存器,以及内部 DMA 在内存模
式时通过 AHB 读数据;
DAC 时钟用于模拟电路控制,以及输出数据频率控制;
用户需要配置 dac_cfg1.div_cfg,配置 DAC 输出数据频率;
模拟电路需要一个时钟锁存 DAC 输出数据,直接模式时,用户需要设置 dac_cfg1.ana_clk_en 来打开此时
钟;阶梯模式和内存模式时无需配置。
60.3
DAC 寄存器
DAC 的寄存器列表如下:
DAC base address: 0xF0024000
地址偏移
名称
描述
复位值
0x0000
CFG0
配置寄存器 0
0x00000000
0x0004
CFG1
配置寄存器 1
0x00010000
0x0008
CFG2
配置寄存器 2
0x00000000
0x0010
STEP_CFG[STEP0]
Step0 寄存器
0x00000000
0x0014
STEP_CFG[STEP1]
Step0 寄存器
0x00000000
0x0018
STEP_CFG[STEP2]
Step0 寄存器
0x00000000
0x001C
STEP_CFG[STEP3]
Step0 寄存器
0x00000000
0x0020
BUF_ADDR[BUF0]
Buffer 地址寄存器 0
0x00000000
0x0024
BUF_ADDR[BUF1]
Buffer 地址寄存器 1
0x00000000
0x0028
BUF_LENGTH
Buffer 长度寄存器
0x00000000
0x0030
IRQ_STS
状态寄存器
0x00000000
0x0034
IRQ_EN
中断使能寄存器
0x00000000
0x0038
DMA_EN
DMA 使能寄存器
0x00000000
0x0040
ANA_CFG0
模拟配置寄存器 0
0x00000030
0x0044
CFG0_BAK
配置寄存器 0 备份寄存器
0x00000000
0x0048
STATUS0
Status0 寄存器
0x00000000
表 234: DAC 寄存器列表
60.4
DAC 寄存器详细信息
DAC 的寄存器详细说明如下:
60.4.1
CFG0 (0x0)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
916/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
13
0
0
0
0
0
x
x
x
WO
N/A
x
12
11
10
0
x
x
x
9
8
7
6
0
0
0
0
5
4
0
3
2
0
0
1
0
HBURST_CFG
14
WO
0
15
BUF_DATA_MODE
0
16
WO
0
17
DAC_MODE
0
18
WO
0
19
HW_TRIG_EN
0
20
WO
x
21
TRIG_MODE
22
WO
23
SYNC_MODE
24
WO
25
DMA_AHB_EN
26
WO
27
RSVD
x
28
N/A
x
29
SW_DAC_DATA
30
RSVD
31
数模转换器 DAC
0
0
0
CFG0 [31:0]
位域
名称
27-16
SW_DAC_DATA
描述
直接模式下使用的 DAC 数据(dac_mode==2’b10)
设置为启用内部 DMA,如果 FIFO 中有足够的空间,它将读取一
9
DMA_AHB_EN
个突发。在设置此位之前,用户应配置正确的缓冲区起始地址和
长度。
仅在缓冲区模式下使用。
1: 同步 clk_dac 和 clk_ahb
在同步模式下, 所有硬件触发信号都是脉冲信号,可以获得更快的
8
SYNC_MODE
响应;
0: 异步 clk_dac 和 clk_ahb
所有硬件触发信号应为电平信号,并应超过一个 DAC 时钟周期,
用于获得准确的输出频率(无法从 AHB 时钟分频得到的频率)
0:单模,
一个触发脉冲将一个 12 位数据发送到 DAC 模拟模块;
7
TRIG_MODE
1:连续模式,
如果设置了触发信号(SW 或 HW),如果 FIFO 不为空,DAC 将
发送数据,如果触发信号清除,DAC 将停止发送数据。
6
HW_TRIG_EN
设置为使用来自 trigger_mux 的触发信号,在单模下,用户应将
其配置为脉冲,在连续模式下,配置为电平
00:直接模式,DAC 输出固定配置数据(来自 sw_dac_data)
01:步进模式,DAC 输出从 start_point 到终点,具有配置的步
进,可以升步或降步
5-4
DAC_MODE
10:缓冲模式,从缓冲器读取数据,然后输出到模拟模块,如果
本地 FIFO 中有足够的空间,内部 DMA 将加载下一个突发,
11: 触发模式,外部触发 DAC 输出
注:hpm63xx, hpm62xx 系列不支持触发模式
缓冲区模式的数据结构,
3
BUF_DATA_MOD
E
0:每 32 位数据包含 2 个点,b11:0 对应第一个点,b27:16 对
应第二个点.
1:每 32 位数据包含 1 个点,b11:0 对应第一个点
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
917/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
数模转换器 DAC
描述
AC 仅支持以下固定突发
2-0
HBURST_CFG
000-单; 011-INCR4; 101:INCR8
其他: 保留
CFG0 位域
CFG1 (0x4)
26
x
x
x
x
x
x
25
24
23
22
21
20
19
x
x
x
x
x
x
18
RW
N/A
x
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
DIV_CFG
27
RW
28
ANA_DIV_CFG
29
RW
30
RSVD
31
ANA_CLK_EN
60.4.2
1
CFG1 [31:0]
位域
名称
描述
18
ANA_CLK_EN
设置为启用模拟时钟(除以 ana_div_cfg)
直接模式和触发模式需要设置此位
clock divider config for ana_clk to dac analog;
00: div2
17-16
01: div4
ANA_DIV_CFG
10: div6
11: div8
步进模式和缓冲模式,:
DAC 输出速率分频比,应配置为小于 1MHz 的数据速率。
15-0
直接模式和触发模式:
DIV_CFG
DAC 数据更新速率,应配置小于 1MHz 的数据速率。
注:
直接模式和触发模式的设置在 hpm63xx,hpm62xx 系列不支持。
CFG1 位域
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
STEP_SW_TRIG0
24
STEP_SW_TRIG1
25
STEP_SW_TRIG2
26
STEP_SW_TRIG3
27
FIFO_CLR
28
BUF_SW_TRIG
29
DMA_RST0
30
DMA_RST1
31
CFG2 (0x8)
RSVD
60.4.3
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
918/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
x
x
x
x
x
7
6
5
4
3
2
1
0
RW
23
RW
24
RW
25
RW
26
RW
27
WO
28
WO
29
WO
30
N/A
31
数模转换器 DAC
0
0
0
0
0
0
0
0
CFG2 [31:0]
位域
名称
描述
重置 dma 读取指针到 buf1_start_addr;
7
如果同时设置 dma_rst0 与 dma_rst1,将设置为 buf0_start_addr
DMA_RST1
当用户使用 dma_rst*,可以设置 fifo_clr 位.
6
DMA_RST0
重置 dma 读取指向 buf0_start_addr
5
FIFO_CLR
清除 FIFO 内容(将读/写指针都设置为 0)
4
BUF_SW_TRIG
3
STEP_SW_TRIG3
步进模式软件触发 3,硬件自动清除
2
STEP_SW_TRIG2
步进模式软件触发 2,硬件自动清除
1
STEP_SW_TRIG1
步进模式软件触发 1,硬件自动清除
0
STEP_SW_TRIG0
步进模式软件触发 0,硬件自动清除
软件触发缓冲模式,硬件自动清除
CFG2 位域
23
22
0
0
0
0
0
0
21
20
19
18
17
16
15
14
0
0
0
0
0
0
0
13
12
11
10
9
8
7
6
0
0
0
0
0
0
0
STEP_NUM
0
5
4
3
2
1
0
0
0
0
0
0
0
START_POINT
24
RW
25
RW
0
26
END_POINT
0
27
RW
UP_DOWN
x
28
RW
N/A
x
29
ROUND_MODE
30
RSVD
31
STEP_CFG (0x10 + 0x4 * n)
RW
60.4.4
0
STEP_CFG [31:0]
位域
名称
描述
步进模式工作方式:
29
ROUND_MODE
0:在终点处停止;
1:重新加载起点,再次步进
28
UP_DOWN
27-16
END_POINT
0 表示向上,1 表示向下
结束点
在每个 DAC 时钟周期内,输出数据变化的 step_num。例如:如
15-12
STEP_NUM
果 step_num=3,则输出数据序列为 0,3,6,9... 注意:如果
step_num 不是 1,用户应确保可以访问 end_point 如果
step_num 为 0,则输出数据将始终位于起点
11-0
START_POINT
起始点
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
919/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
数模转换器 DAC
描述
STEP_CFG 位域
BUF_ADDR (0x20 + 0x4 * n)
27
26
25
24
23
22
21
20
19
18
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
0
1
0
BUF_STOP
28
RW
29
RSVD
30
BUF_START_ADDR
31
N/A
60.4.5
x
0
BUF_ADDR [31:0]
位域
名称
描述
缓冲区起始地址,应为 4 字节对齐 AHB 突发不能跨越 1K 字节边
BUF_START_ADD
31-2
界,用户应配置地址/长度/突发以避免此类问题。
R
0
设置此位硬件会在缓冲区 0 末尾停止读取数据
BUF_STOP
BUF_ADDR 位域
60.4.6
BUF_LENGTH (0x28)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
RW
BUF0_LEN
BUF1_LEN
31
0
BUF_LENGTH [31:0]
位域
名称
31-16
BUF1_LEN
15-0
BUF0_LEN
描述
缓冲区 1 长度,单位为 32 位(4 字节)
,一个缓冲区最大 256K
字节
缓冲区 0 长度,单位为 32 位(4 字节)
,一个缓冲区最大 256K
字节
BUF_LENGTH 位域
60.4.7
IRQ_STS (0x30)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
920/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
N/A
x
3
2
1
0
BUF0_CMPT
23
W1C
24
BUF1_CMPT
25
FIFO_EMPTY
26
W1C
27
W1C
28
AHB_ERROR
29
W1C
30
RSVD
31
数模转换器 DAC
0
0
0
0
IRQ_STS [31:0]
位域
名称
描述
3
AHB_ERROR
如果 hresp==2’b01(错误)则设置此中断位,写 1 清零
2
FIFO_EMPTY
缓冲模式下,缓冲区空中断状态位,写 1 清零
1
BUF1_CMPT
缓冲模式下,缓冲区 1 完成中断状态位,写 1 清零
0
BUF0_CMPT
缓冲模式下,缓冲区 0 完成中断状态位,写 1 清零
IRQ_STS 位域
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
N/A
x
4
3
2
1
0
BUF0_CMPT
21
RW
22
BUF0_CMPT
23
BUF1_CMPT
24
FIFO_EMPTY
25
RW
26
RW
27
BUF1_CMPT
28
AHB_ERROR
29
RW
30
RSVD
31
STEP_CMPT
IRQ_EN (0x34)
RW
60.4.8
0
0
0
IRQ_EN [31:0]
位域
名称
描述
4
STEP_CMPT
标志位中断请求使能
3
AHB_ERROR
标志位中断请求使能
2
FIFO_EMPTY
标志位中断请求使能
1
BUF1_CMPT
标志位中断请求使能
0
BUF0_CMPT
标志位中断请求使能
IRQ_EN 位域
31
30
DMA_EN (0x38)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
RSVD
60.4.9
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
921/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
x
1
0
RW
29
RW
30
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
x
8
7
6
5
4
3
2
1
0
0
0
1
1
0
N/A
31
数模转换器 DAC
0
0
DMA_EN [31:0]
位域
名称
描述
1
BUF1_CMPT
缓冲区 1 完成 DMA 使能位
0
BUF0_CMPT
缓冲区 0 完成 DMA 使能位
DMA_EN 位域
23
22
21
x
x
x
x
x
x
x
x
x
x
x
20
19
18
17
16
15
14
13
12
11
10
9
x
x
x
x
x
x
x
x
x
x
x
RW
N/A
x
0
0
ANA_CFG0 [31:0]
位域
ODE
7-4
3-2
0
描述
DAC12BIT_LP_M
8
1
名称
DAC_CONFIG
CALI_DELTA_V_C
FG
BYPASS_CALI_G
M
DAC12BIT_EN
ANA_CFG0 位域
60.4.11
CFG0_BAK (0x44)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
922/1016
DAC12BIT_EN
24
RW
25
BYPASS_CALI_GM
26
RW
27
RW
28
DAC_CONFIG
29
RW
30
RSVD
31
CALI_DELTA_V_CFG
ANA_CFG0 (0x40)
DAC12BIT_LP_MODE
60.4.10
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
13
0
0
0
0
0
x
x
x
RW
N/A
x
12
11
10
0
x
x
x
9
8
7
6
0
0
0
0
5
4
0
3
2
0
0
1
0
HBURST_CFG
14
RW
0
15
BUF_DATA_MODE
0
16
RW
0
17
DAC_MODE
0
18
RW
0
19
HW_TRIG_EN
0
20
RW
x
21
TRIG_MODE
22
RW
23
SYNC_MODE
24
RW
25
DMA_AHB_EN
26
RW
27
RSVD
x
28
N/A
x
29
SW_DAC_DATA
30
RSVD
31
数模转换器 DAC
0
0
0
CFG0_BAK [31:0]
位域
名称
27-16
SW_DAC_DATA
描述
直接模式下使用的 DAC 数据(dac_mode==2’b10)
设置为启用内部 DMA,如果 FIFO 中有足够的空间,它将读取一
9
DMA_AHB_EN
个突发。在设置此位之前,用户应配置正确的缓冲区起始地址和
长度。
仅在缓冲区模式下使用。
1: 同步 clk_dac 和 clk_ahb
在同步模式下, 所有硬件触发信号都是脉冲信号,可以获得更快的
8
SYNC_MODE
响应;
0: 异步 clk_dac 和 clk_ahb
所有硬件触发信号应为电平信号,并应超过一个 DAC 时钟周期,
用于获得准确的输出频率(无法从 AHB 时钟分频得到的频率)
0:单模,
一个触发脉冲将一个 12 位数据发送到 DAC 模拟模块;
7
TRIG_MODE
1:连续模式,
如果设置了触发信号(SW 或 HW),如果 FIFO 不为空,DAC 将
发送数据,如果触发信号清除,DAC 将停止发送数据。
6
HW_TRIG_EN
设置为使用来自 trigger_mux 的触发信号,在单模下,用户应将
其配置为脉冲,在连续模式下,配置为电平
00:直接模式,DAC 输出固定配置数据(来自 sw_dac_data)
01:步进模式,DAC 输出从 start_point 到终点,具有配置的步
5-4
DAC_MODE
进,可以升步或降步
10:缓冲模式,从缓冲器读取数据,然后输出到模拟模块,如果
本地 FIFO 中有足够的空间,内部 DMA 将加载下一个突发,
缓冲区模式的数据结构,
3
BUF_DATA_MOD
E
0:每 32 位数据包含 2 个点,b11:0 对应第一个点,b27:16 对
应第二个点.
1:每 32 位数据包含 1 个点,b11:0 对应第一个点
AC 仅支持以下固定突发
2-0
HBURST_CFG
000-单; 011-INCR4; 101:INCR8
其他: 保留
CFG0_BAK 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
923/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
STATUS0 (0x48)
x
x
x
26
25
24
23
22
21
20
19
18
17
16
x
x
x
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
RW
N/A
x
7
6
5
4
0
0
x
x
x
3
2
1
0
x
x
x
RSVD
x
27
N/A
28
CUR_BUF_INDEX
29
RW
30
RSVD
31
CUR_BUF_OFFSET
60.4.12
数模转换器 DAC
x
STATUS0 [31:0]
位域
23-8
7
名称
CUR_BUF_OFFS
ET
CUR_BUF_INDEX
描述
当前 AHB 读取索引。
注意:根据 DAC 数据速率(div_cfg)和系统总线延迟,此指数与
实际 DAC 输出之间有延迟
0 表示缓冲区 0,1 表示缓冲区 1
STATUS0 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
924/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
温度传感器 TSNS
温度传感器 TSNS
61
本章节介绍温度传感器 TSNS 的功能和特性。
特性总结
61.1
本产品包含温度传感器,可以测量管芯温度。主要特性如下:
● 单次测量
● 连续测量
● 多次测量取平均
● 记录温度上下限
● 温度范围比较
● 温度超范围时产生中断
● 温度超范围时复位芯片
61.2
功能描述
TSNS 通过内置 ADC 对内置温敏二极管进行转换,得到管芯温度。软件需要使能其偏置电路才能进行温度采
集。
温度采集过程,由 ADC 对内部温度传感器进行多测采样,并求平均以获得较高的精度。平均次数由 AVERAGE
字段设置,最高支持 128 次平均。
AGE 寄存器,温度传感器模块提供上一次温度采集距离现在时间,该寄存器提供的时间以 24M 时钟周期计
数。
温度传感器内部记录出现过的最高和最低温度。可通过 TMAX 和 TMIN 读取,可通过 RECORD_MAX_CLR
和 RECORD_MIN_CLR 清除,并重新记录。
61.2.1
温度采集模式
转换可以由软件触发也可以定时连续采集。
在单次采集模式下,软件通过写入 TRIGGER 进行温度测量,测量完成后 VALID 置 1,表示温度数值有效。
连续模式通过 CONTINOUS 字段设置。在连续模式下,用户通过设置 VALIDITY 字段设置温度采样的时间间
隔,时间间隔以 24M 时钟计数。
61.2.2
温度比较功能
温度传感器具有温度超范围产生中断和复位的功能,
该功能可通过设置 COMPARE_MIN_EN 和 COMPARE_MAX_EN
允许高温和低温比较。
中断和复位的温度范围独立设置。
中断比较的温度设置在 UPPER_LIM_IRQ 和 LOWER_LIM_IRQ 寄存器中。
复位比较的温度设置在 UPPER_LIM_RST 和 LOWER_LIM_RST 寄存器中。
当测量到的管芯温度超出设置的范围时,温度传感器模块产生标志位。若中断使能位 IRQ_EN 置 1 则产生中
断。若复位使能位 RST_EN 置 1 则产生复位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
925/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
温度传感器 TSNS
TSNS 寄存器
61.3
TSNS 的寄存器列表如下:
TSNS base address: 0xF4104000
地址偏移
名称
描述
复位值
0x0000
T
当前温度
0x00000000
0x0004
TMAX
最高温度
0xFF800000
0x0008
TMIN
最低温度
0x000C
AGE
采集时间
0x00000000
0x0010
STATUS
状态寄存器
0x00000000
0x0014
CONFIG
配置寄存器
0x00600300
0x0018
VALIDITY
采样间隔
0x016E3600
0x001C
FLAG
标志位
0x00000000
0x0020
UPPER_LIM_IRQ
中断高温
0x00000000
0x0024
LOWER_LIM_IRQ
中断低温
0x00000000
0x0028
UPPER_LIM_RST
复位高温
0x00000000
0x002C
LOWER_LIM_RST
复位低温
0x00000000
0x0030
ASYNC
异步模式配置
0x00000000
0x0038
ADVAN
高级配置
0x00000000
0x007FFFFF
表 235: TSNS 寄存器列表
TSNS 寄存器详细信息
61.4
TSNS 的寄存器详细说明如下:
61.4.1
T (0x0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
T
31
0
T [31:0]
位域
名称
31-0
T
描述
摄氏温度,24 位整数,8 位小数
T 位域
61.4.2
TMAX (0x4)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
926/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
T
31
温度传感器 TSNS
0
TMAX [31:0]
位域
名称
31-0
T
描述
出现过的最高温度
TMAX 位域
61.4.3
TMIN (0x8)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RO
T
31
0
TMIN [31:0]
位域
名称
31-0
T
描述
出现过的最低温度
TMIN 位域
61.4.4
AGE (0xC)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
RO
AGE
31
0
AGE [31:0]
位域
名称
描述
31-0
AGE
上次采集时间,上次采集到当前时间的 24M 时钟周期数
AGE 位域
61.4.5
STATUS (0x10)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
927/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
21
20
19
18
17
16
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
W1C
RSVD
N/A
RO
0
15
TRIGGER
30
VALID
31
温度传感器 TSNS
x
0
STATUS [31:0]
位域
名称
描述
温度寄存器数据是否有效
31
0: 温度尚未采集,温度寄存器中的数据无效
VALID
1: 温度已采集,温度寄存器中的数据有效
0
在触发模式下,软件出发温度采集。若处于非触发模式或采集正
TRIGGER
在进行,写入将被忽略
STATUS 位域
CONFIG (0x14)
0
0
x
x
12
11
10
x
x
0
RSVD
N/A
RW
0
x
9
8
7
0
0
x
6
5
x
4
3
x
0
2
x
x
1
0
ENABLE
0
13
RW
14
RSVD
15
N/A
0
16
CONTINUOUS
0
17
RW
0
18
RSVD
0
19
N/A
20
AVERAGE
21
RW
0
22
SPEED
0
23
ASYNC
x
24
RW
x
25
RW
x
26
COMPARE_MIN_EN
x
27
COMPARE_MAX_EN
0
28
RW
RST_EN
RW
0
29
RSVD
IRQ_EN
30
RW
31
N/A
61.4.6
0
0
CONFIG [31:0]
位域
名称
31
IRQ_EN
使能中断
30
RST_EN
使能复位
25
24
COMPARE_MIN_
EN
COMPARE_MAX_
EN
描述
允许低温比较
允许高温比较
温度采集步长 24M 时钟周期数,有效范围是 24-255, 缺省值 96
24: 24 周期
23-16
SPEED
25: 25 周期
26: 26 周期
...
255: 255 周期
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
928/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
温度传感器 TSNS
描述
平均次数,缺省值为 3
0: 不做平均
10-8
1: 平均两次
AVERAGE
2: 平均四次
...
7: 平均 128 次
采样模式
4
0: 触发模式,温度传感器在软件触发后采样温度
CONTINUOUS
1: 连续模式,温度传感器周期性采样温度
异步模式, 该模式下无需时钟,但是只能比较高温或低温
1
0: 正常模式
ASYNC
1: 异步模式
使能温度传感器,关闭温度传感器可以降低 SOC 功耗
0
0: 关闭温度传感器
ENABLE
1: 打开温度传感器
CONFIG 位域
61.4.7
VALIDITY (0x18)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
7
6
5
4
3
2
1
0
RW
VALIDITY
31
0
VALIDITY [31:0]
位域
名称
描述
31-0
VALIDITY
连续采样时采样间隔 24M 时钟周期数
VALIDITY 位域
17
16
RSVD
IRQ
RW
19
N/A
20
OVER_TEMP
22
RW
23
UNDER_TEMP
24
RW
25
RSVD
26
N/A
21
RECORD_MAX_CLR
27
RW
28
RECORD_MIN_CLR
29
RW
30
RSVD
31
FLAG (0x1C)
N/A
61.4.8
18
15
14
13
12
11
10
9
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
929/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
温度传感器 TSNS
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
0
0
x
x
0
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
FLAG [31:0]
位域
名称
描述
RECORD_MIN_CL
21
写入 1,清除最低温度
R
RECORD_MAX_C
20
写入 1,清除最高温度
LR
17
UNDER_TEMP
写入 1,清除低温警告
16
OVER_TEMP
写入 1,清高低温警告
0
IRQ
写入 1,清除中断标志
FLAG 位域
61.4.9
UPPER_LIM_IRQ (0x20)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
T
31
0
UPPER_LIM_IRQ [31:0]
位域
名称
31-0
T
描述
最高温度
UPPER_LIM_IRQ 位域
61.4.10
LOWER_LIM_IRQ (0x24)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
T
31
0
LOWER_LIM_IRQ [31:0]
位域
名称
31-0
T
描述
最低温度
LOWER_LIM_IRQ 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
930/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
61.4.11
温度传感器 TSNS
UPPER_LIM_RST (0x28)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
T
31
0
UPPER_LIM_RST [31:0]
位域
名称
31-0
T
描述
最高温度
UPPER_LIM_RST 位域
61.4.12
LOWER_LIM_RST (0x2C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
0
0
0
0
0
0
0
0
0
0
RW
T
31
0
LOWER_LIM_RST [31:0]
位域
名称
31-0
T
描述
最低温度
LOWER_LIM_RST 位域
x
x
23
22
21
x
x
x
RW
0
20
19
18
17
x
x
x
x
16
15
14
0
x
x
13
x
RW
x
N/A
x
24
RSVD
25
N/A
x
26
POLARITY
x
27
RW
x
28
RSVD
29
N/A
30
RSVD
31
VALUE
ASYNC (0x30)
ASYNC_TYPE
61.4.13
0
ASYNC [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
931/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
温度传感器 TSNS
描述
比较类型
24
0: 高温比较
ASYNC_TYPE
1: 低温比较
16
POLARITY
10-0
VALUE
内部比较器极性
比较结果
ASYNC 位域
ADVAN (0x38)
17
x
x
x
x
16
15
14
13
12
11
10
9
0
x
x
x
x
x
x
x
8
7
6
5
4
3
2
x
x
x
x
x
x
x
ADVAN [31:0]
位域
名称
描述
25
ASYNC_IRQ
异步中断状态
24
ACTIVE_IRQ
中断状态
16
SAMPLING
采样种
1
NEG_ONLY
仅使用负极性
0
POS_ONLY
仅使用正极性
ADVAN 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
932/1016
1
0
POS_ONLY
x
18
RW
x
19
NEG_ONLY
x
20
RW
21
RSVD
0
22
N/A
0
23
SAMPLING
x
24
RO
x
N/A
x
25
RSVD
x
26
N/A
x
27
RO
x
28
ASYNC_IRQ
29
ACTIVE_IRQ
30
RSVD
31
RO
61.4.14
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
信息安全模块概述
信息安全模块概述
62
本章节介绍了本产品的信息安全模块。
本产品的信息安全模块主要划分为以下几类:
● 加解密引擎
– 安全数据处理器 SDP
– 在线解密模块 EXIP
● 加解密引擎的密钥管理
– 密钥管理器 KEYM
– 电池备份域的密钥单元 BKEY
– OTP 中的密钥区
● 真随机数发生器
● 系统安全状态监视器
– 基于产品生命周期管理
– 监视 JTAG 调试接口
– 监视处理器进入 Debug 模式
– 支持单调计数器
– 支持侵入检测模块
● BOOT ROM 安全启动机制,保证安全,可信的加载用户程序镜像
62.1
安全数据处理器 SDP
本产品包含一个安全数据处理器 SDP,支持加解密运算 AES-128/256,并支持 AES 的 ECB,CBC 加密模
式。SDP 支持哈希运算 SHA-1/256,支持 CRC32。
SDP 支持从密钥管理器 KEY 载入密钥。本产品上,SDP 的以下密钥来自密钥管理器 KEYM。
● MK[0:255],来自密钥管理器的 MK 密钥输出
● SK0[0:255],来自密钥管理器的 SK0 密钥输出
● SK1[0:255],来自密钥管理器的 SK1 密钥输出
● SK2[0:255],来自密钥管理器的 SK2 密钥输出
● SK3[0:255],来自密钥管理器的 SK3 密钥输出
62.2
在线解密引擎 EXIP
本产品包括 1 个在线解密引擎 EXIP0,EXIP0 与 XPI0 紧密耦合。用户可以使用 AES-128 CTR 模式按照规
范对外部 NOR Flash 存储数据加密。当本产品通过 XPI 连接到加密的外部 NOR Flash 时,EXIP 零等待周期实
时在线解密,把加密后的代码还原成明文,供处理器直接在线执行。
EXIP 支持利用 OTP 中存储的 EXIP KEK(Key Encryption Key 加密密钥的密钥) 从 Key Blob 中还原 DEK(Data
Encryption Key 加密数据的密钥)。实现对 DEK 的保护。
有关本产品密钥管理情况,请查阅节 62.5。
62.3
密钥管理器
本产品支持密钥管理器 KEYM,密钥管理器支持通过独立的数据通路从电池备份域密钥寄存器 BKEY 和 OTP
的密钥区载入密钥,并进行混淆处理后,通过独立的数据通路将密钥传送到安全数据处理器 SDP。实现不依赖处
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
933/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
信息安全模块概述
理器参与的密钥加载,保证不向任何软件暴露密钥。
本产品上,密钥管理器支持从以下模块载入密钥信息:
● SMKRNG[0:255],来自随机数发生器 RNG
● ZMK[0:255],来自电池备份域密钥模块 BKEY
● FMK[0:255],来自 OTP 的密钥区
本产品上,KEYM 通过独立数据通路向 SDP 发送密钥信息:
● MK[0:255]
● SK0[0:255]
● SK1[0:255]
● SK2[0:255]
● SK3[0:255]
有关本产品密钥管理情况,请查阅节 62.5。
62.4
电池备份域密钥模块 BKEY
本产品包含电池备份域密钥模块 BKEY。此模块位于电池备份域,因此可以在仅有 VBAT 供电,其他电源引
脚都掉电的情况下保存密钥。
BKEY 可以存储 KEY0 和 KEY1 两个密钥,支持对密钥设置写保护和读保护。用户可以配置 KEY0 或者 KEY1
作为 ZMK 发送到密钥管理器。
BKEY 存储的密钥受到系统安全监视器保护,当检测到安全违例的事件时,可以立即将密钥擦除。
62.5
密钥管理总结
本产品上,密钥管理总结如图 107所示:
SMKRNG
MK
RNG
SK0
BKEY
ZMK
KEYM
SK1
SDP
SK2
FMK
SK3
OTP
KEK0
EXIP0
图 107: 密钥管理总结
62.6
一次性可编程存储 OTP
本产品的 OTP 上支持保存各类安全功能有关的数据:
● 128 位调试密钥 Debug Key,本产品支持 JTAG 口锁定,在锁定后,调试器需要提供调试密码,解锁 JTAG
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
934/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
信息安全模块概述
接口,进行调试。
● 128 位 UUID,芯片的唯一标识
● 安全启动的公钥 HASH,为公钥的 256 位 SHA-256 哈希值
● 用于 EXIP 解密包含 DEK 的 Key Blob 的 256 位 KEK,EXIP0 KEK 和 EXIP1 KEK
● 密钥管理器的 256 位 FMK
有关这些安全相关数据的具体信息,请查阅 OTP 及其他安全模块的相关章节。
真随机数发生器 RNG
62.7
本产品包含一个真随机数发生器。熵源为内部模拟噪声源,对片上环境如温度,电压,时钟非常敏感,产生
512 位熵 entropy。RNG 支持错误检测。
电源管理域安全管理器 PSEC
62.8
本产品包含一个电源管理域安全管理器 PSEC。PSEC 位于电源管理域,因此在系统电源域掉电时,也能保
持工作。
电源管理域安全管理器 PSEC 的主要功能是根据芯片当前的生命周期,配置电源管理域与系统电源域系统的
安全状态。
电源管理域安全管理器 PSEC 可以制定安全规则,并检测电源管理域和系统电源域的各类安全事件。当有安
全违例事件发生时,采取不同的措施,来保护用户的敏感信息,如密钥等。
电源管理域安全管理器支持监视如下事件:
● OSC24M 时钟故障
● CPU0 进入调试模式
● CPU1 进入调试模式
● VPMC 电源毛刺或者 OSC24M 时钟毛刺,来自电源域监视器 PMON
● VPMC 欠压(Brownout)
● PWDG 超时
● JTAG 端口连接
● JTAG TCK 引脚活动
当安全事件发生,电源管理域与系统电源域系统的安全状态会转换为 FAIL,会锁定密钥管理器 KEYM 的各
个密钥数据通路,并锁定 OTP 的密钥和敏感数据区域及其影子寄存器为不可读。
62.9
电源管理域监视器 PMON
本产品包含一个电源管理域监视器 PMON。电源管理域监视器的作用是监测电源域的电源和时钟。电源监视
器在检测到 VPMC 上异常的电源毛刺,或者 OSC24M 上的时钟毛刺,或者 OSC24M 停止工作时会向电源管理
域安全管理器 PSEC 报警。
62.10
电池备份域安全管理器 BSEC
本产品包含电池备份域安全管理器 BSEC。BSEC 位于电池备份域,因此在系统电源域和电源管理域掉电时,
也能保持工作。BSEC 可以配置电池备份域的安全状态,并制定安全规则。BSEC 可以检测电池备份域的各类安
全事件。当有安全违例事件发生时,采取不同的措施,来保护用户的敏感信息,如密钥等。
电池备份域安全管理器 BSEC 监视如下事件:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
935/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
信息安全模块概述
● VBAT 电源毛刺或者 OSC32K 时钟毛刺,来自电池备份域监视器 BMON
● OSC32K 时钟故障
● 侵入检测模块 TAMP 的侵入事件
● 单调计数器 MONO 溢出
当安全事件发生,电池备份域的安全状态会转换为 FAIL,并擦除电池备份域密钥模块 BKEY 的数据。
62.11
电池备份域监视器 BMON
本产品包含一个电池备份域监视器 BMON。电池备份域监视器的作用是监测电池备份域的电源和时钟,以及
配置芯片的工厂测试模式。电源监视器在检测到 VBAT 上异常的电源毛刺,或者检测到 OSC32K 的时钟毛刺,或
者 OSC32K 停止工作时会向电池备份域安全管理器 BSEC 报警。
电池备份域监视器支持关闭芯片的工厂测试模式。
本产品上,BMON,TAMP,MONO 共享一个中断请求,称为 BVIO,即电池备份域安全违例中断。
62.12
侵入检测模块 TAMP
本产品包含一个侵入检测模块 TAMP。侵入检测模块位于电池备份域,可以在仅有 VBAT 供电,其他电源引
脚都掉电的情况下保持工作。侵入检测模块支持多达 12 个侵入检测引脚,侵入检测引脚支持配置为主动模式或
者被动模式。在检测到侵入事件时,侵入检测模块向电池备份域安全管理器 BSEC 报警。
本产品上,BMON,TAMP,MONO 共享一个中断请求,称为 BVIO,即电池备份域安全违例中断。
62.13
单调计数器 MONO
本产品包含一个单调计数器 MONO。单调计数器宽度为 48 位,位于电池备份域,可以在仅有 VBAT 供电,其
他电源引脚都掉电的情况下保持工作。单调计数器在每次被写操作时 +1,因此计数器的值单调递增,除非 VBAT
掉电永不重复。在单调计数器溢出时,会向电池备份域安全管理器 BSEC 报警。
本产品上,BMON,TAMP,MONO 共享一个中断请求,称为 BVIO,即电池备份域安全违例中断。
62.14
BOOT ROM
本产品集成了 BOOT ROM,系统复位后总是最先执行 BOOT ROM 的代码。由只读存储器的物理特性,保证
了 BOOT ROM 代码几乎不可能篡改。由此构建了最初的可信安全执行环境。
BOOT ROM 支持如下安全功能:
● 通过 EXIP 和 XPI 直接从加密的串行 NOR Flash 执行代码。
● 安全启动,在跳转到用户软件镜像前可以先验证镜像的来源合法可信。支持 ECDSA 或者 SM2 的签名验
证
● 支持加载加密的软件镜像,支持 AES 或者 SM4 加密算法
● Flash loader 支持烧录加密的固件
有关 BOOT ROM 支持的安全功能细节,请查阅 ROM 相关章节。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
936/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
安全数据处理器 SDP
63
本章节描述了安全数据处理器 SDP 的主要特性和功能。
特性总结
63.1
安全数据处理器 SDP 的主要特性如下:
● 支持 AES-128/256,支持 ECB,CBC 模式
● 支持 SHA-1/256
● 支持 CRC-32
● 内置 DMA,支持数据拷贝,块拷贝和数据充填
● 支持从密钥管理器加载受保护的密钥,或者使用用户写入 SDP 密钥存储器的密钥
● 密钥寄存器可读保护
功能描述
63.2
数据安全处理器 SDP 是一个可以实现数据加解密,计算数据哈希值的安全运算引擎。SDP 作为总线主设备,
可以自主访问芯片上的存储外设;SDP 实现自主读取命令描述符,读取待处理数据,写回处理后数据。
63.2.1
命令描述符
数据安全处理器 SDP 工作由命令描述符控制,用户可以在内存中编写命令描述符。SDP 从内存中自主读取
命令描述符,按照描述符的配置执行任务,并反馈结果。
SDP 可以通过命令描述符执行的任务总结如下:
● AES-128/256 ECB 模式,对指定长度的明文加密,或者密文解密
● AES-128/256 CBC 模式,对指定长度的明文加密,或者密文解密
● SHA-1/256,对指定长度的数据计算其 Hash 值
● CRC-32,对指定长度的数据计算 CRC32 值
● 将指定长度的数据从源地址拷贝至目标地址
● 对目标地址充填指定长度、指定样式的数据
用户可以通过 CMDPTR 寄存器,指定命令描述符在内存中的地址。
命令描述符的格式如表 236:
地址
名称
描述
CMDPTR + 0x00
NXTCMD
下一条命令描述符指针
CMDPTR + 0x04
PKTCTL
命令控制字,32 位
CMDPTR + 0x08
PKTSRC
源数据地址,32 位
CMDPTR + 0x0C
PKTDST
目标数据地址,32 位
CMDPTR + 0x10
BUFSIZE
数据长度(字节数),32 位
CMDPTR + 0x14
RESERVED
保留
CMDPTR + 0x18
RESERVED
保留
CMDPTR + 0x1C
RESERVED
保留
表 236: SDP 命令描述符格式
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
937/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
NXTCMD 是指向下一条命令描述符,如果 PKTCTL[3],CHAIN 位置 1,SDP 在执行完当前命令后,继续执
行 NXTCMD 指向的命令描述符。
PKTCTL 是命令描述符的控制字,配置 SDP 的任务,描述如下:
● PKTCTL[31:24],PKTTAG,数据包标签,用户可以为每个数据包打上不同的标签;
● PKTCTL[6],CIPHIV,使用 AES-CBC 模式时置 1,提示 AES 载入初始向量(Initial Vector);
● PKTCTL[5],HASFNL,置 1 提示 HASH 引擎,这是待处理数据的结尾;
● PKTCTL[4],HASINI,置 1 提示 HASH 引擎,这是待处理数据的起始;
● PKTCTL[3],CHAIN,置 1 提示 SDP 在执行完当前命令后,从 NXTCMD 取下一条命令描述符;
● PKTCTL[2],DCRSEMA,置 1 提示 SDP 在执行完当前命令后,将 PKTCNT [CNTVAL] 减 1, 当 PKTCNT
[CNTVAL] = 0 时,SDP 会停止工作;
● PKTCTL[1],PKTINT,置 1 时,SDP 在执行完当前命令后,会生成中断请求;
PKTSRC,源数据地址,即 SDP 待处理数据的读取地址,PKTSRC 应当指向待加密的明文,待解密的密文,
或者需要通过 HASH 函数压缩的数据。当 SDP 执行数据拷贝时,PKTSRC 指向待拷贝的数据。
PKTDST,目标数据地址,即 SDP 处理后数据的存放地址。PKTDST 应当指向加密后的密文,解密后的明
文。当 SDP 执行数据拷贝时,PKTDST 指向拷贝的目标地址。
BUFSIZE,数据的长度(字节数)
,即 SDP 加密明文的长度,解密密文的长度,需要计算 Hash 值或者 CRC
值的数据块长度,或者需要数据拷贝的数据块长度。
用户在使用 SDP 运算前,需要
● 按需求配置 SDPCR 和 MODCTRL 寄存器
● 编写命令描述符,注意
– PKTCTL[2],DCRSEMA 置 1,提示命令执行完成后,PKTCNT [CNTVAL]–1
– 如果希望执行多条命令,
最后一条命令外的命令描述符 PKTCTL[3],
CHAIN 位置 1,
并把 NXTCMD
填入下一条命令的地址
– 如果希望命令执行完成后生成中断请求,把命令描述符 PKTCTL[1],PKTINT 置 1
● 在 CMDPTR 寄存器写入命令描述符地址
● 对 PKTCNT [CNTINCR] 写入需要执行的命令描述符数量,写入 PKTCNT [CNTINCR] 会更新 PKTCNT
[CNTVAL] = PKTCNT [CNTVAL] + PKTCNT [CNTINCR],PKTCNT [CNTVAL] 代表了需要执行的命令
数据
– 如果只需要执行一条命令,写 1
– 如果希望连续执行 n 条命令,写入 n
63.2.2
AES 加解密引擎
SDP 支持 AES 加解密引擎,AES 为 Advanced Encyrption Standard 的简称,由美国国家标准与技术研究院
(NIST)于 2001 年 11 月 26 日发布于 FIPS PUB 197。用户可以自行查阅 AES 的细节。
用户把 SDPCR[CIPHEN] 位置 1,即打开 AES 加解密引擎。
AES 引擎支持 AES-128 和 AES-256,即 128 位和 256 位的 AES 密钥长度。
用户可以通过 MODCTRL[AESALG] 位配置 AES 的密钥长度:
● 4’b0000,AES-128,即密钥长度为 128 位
● 4’b0001,AES-256,即密钥长度为 256 位
AES 引擎支持加密,即通过密钥将明文加密成为密文。AES 引擎支持解密,即通过密钥将密文恢复为明文。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
938/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
用户可以通过 MODCTRL [AESDIR] 位配置 AES 引擎进行的是加密运算还是解密运算:
● MODCTRL [AESDIR] = 1’b0,AES 引擎执行加密运算
● MODCTRL [AESDIR] = 1’b1,AES 引擎执行解密运算
AES 引擎支持 ECB 工作模式和 CBC 工作模式。
ECB 模式称为电子密码本模式(Electronic codebook)
,是最基本的 AES 加密模式,加密前把全部数据根据
数据块大小(AES 数据块长度为 16 字节,即 128 位)分成若干块,之后将每块使用相同的密钥单独加密,解密
同理。通常不建议用户使用 ECB 模式加密长度超过一个 AES 数据块的数据。
CBC 模式称为密码分组链接模式(Cipher-block chaining),CBC 模式对于每个待加密的数据块在加密前会
先与前一个数据块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量(Initial Vector)的数据块
异或。解密的过程相似,第一个密文块使用密钥解密后,与初始化向量数据块异或恢复出第一个明文块,之后的
密文块解密后与前一个数据块的密文异或恢复出明文。
用户通过 MODCTRL[AESMOD] 位配置 AES 的工作模式:
● MODCTRL[AESMOD] = 4’b0000,AES 工作模式为 ECB 模式
● MODCTRL[AESMOD] = 4’b0001,AES 工作模式为 CBC 模式
用户使用 AES-CBC 模式,需要把第一个命令描述符的 PKTCTL[6],CIPHIV 位置 1,提示 AES 引擎载入初
始化向量(Initial Vector),同时,用户需要把初始化向量(Initial Vector)写入 CIPHIV0 ∼ CIPHIV3 寄存器。
63.2.3
AES 密钥配置
AES 作为公开发布的标准算法,其加解密的数据处理步骤是公开可知的。AES 算法的安全性不依赖于算法本
身,而是取决于密钥的安全性。
SDP 的 AES 引擎采取了一系列设计,保护 AES 加解密的密钥不泄露。
AES 引擎的密钥有以下选项:
● 从 SDP 内部存储器 KEYRAM 载入密钥,KEYRAM 容量 256 字节,可以存储 16 个 128 位的 AES-128
密钥或者 8 个 256 位的 AES-256 密钥
● 从密钥管理器 KEYM 的专用密钥通路载入密钥,可用密钥有 MK,SK0 ∼ SK3
SDP 的内部存储器 KEYRAM 为只可写,不可读存储器。用户可以通过 KEYADDR 和 KEYDAT 寄存器来初
始化 SDP 的内部存储器 KEYRAM,方法如下:
● 通过写 KEYADDR [INDEX] 位域来指定 KEYRAM 内部地址索引。
– KEYADDR [INDEX] = 0,表示指向 KEYRAM 第 1 个 128 位密钥
– KEYADDR [INDEX] = 1,表示指向 KEYRAM 第 2 个 128 位密钥
– ……
– KEYADDR [INDEX] = 15,表示指向 KEYRAM 第 16 个 128 位密钥
● 通过 KEYDAT,写入密钥,KEYDAT 为 32 位寄存器
– 第 1 次写 KEYDAT,写入密钥 [0:31]
– 第 2 次写 KEYDAT,写入密钥 [32:63]
– 第 3 次写 KEYDAT,写入密钥 [64:95]
– 第 4 次写 KEYDAT,写入密钥 [96:127]
显然,如果用户希望使用 256 位的 AES-256 密钥,需要先将 KEYADDR [INDEX] 取 0 ∼ 15 之间的偶数,按
以上步骤写入密钥的前 128 位。之后将现有 KEYADDR [INDEX] + 1,再写入 4 次 KEYDAT 寄存器,来写入密钥
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
939/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
的后 128 位,密钥 [128:255]
密钥初始化完成后,用户可以通过 MODCTRL[AESKS] 位域来选择密钥:
当 AES 引擎设置为 AES-128 时:
● MODCTRL[AESKS] = 6’h00,选择 KEYRAM 第 1 个 128 位密钥,即 KEYRAM [0:127]
● MODCTRL[AESKS] = 6’h01,选择 KEYRAM 第 2 个 128 位密钥,即 KEYRAM [128:255]
● ……
● MODCTRL[AESKS] = 6’h0E,选择 KEYRAM 第 15 个 128 位密钥,即 KEYRAM [1792:1919]
● MODCTRL[AESKS] = 6’h0F,选择 KEYRAM 第 16 个 128 位密钥,即 KEYRAM [1920:2047]
● MODCTRL[AESKS] = 6’h20,选择来自 KEYM 的 SK0[0:127]
● MODCTRL[AESKS] = 6’h21,选择来自 KEYM 的 SK0[128:255]
● MODCTRL[AESKS] = 6’h22,选择来自 KEYM 的 SK1[0:127]
● MODCTRL[AESKS] = 6’h23,选择来自 KEYM 的 SK1[128:255]
● MODCTRL[AESKS] = 6’h24,选择来自 KEYM 的 SK2[0:127]
● MODCTRL[AESKS] = 6’h25,选择来自 KEYM 的 SK2[128:255]
● MODCTRL[AESKS] = 6’h26,选择来自 KEYM 的 SK3[0:127]
● MODCTRL[AESKS] = 6’h27,选择来自 KEYM 的 SK3[128:255]
● MODCTRL[AESKS] = 6’h2E,选择来自 KEYM 的 MK[0:127]
● MODCTRL[AESKS] = 6’h2F,选择来自 KEYM 的 MK[128:255]
当 AES 引擎设置为 AES-256 时:
● MODCTRL[AESKS] = 6’h00,选择 KEYRAM 第 1 个 256 位密钥,即 KEYRAM [0:255]
● MODCTRL[AESKS] = 6’h01,无效
● ……
● MODCTRL[AESKS] = 6’h0E,选择 KEYRAM 第 8 个 256 位密钥,即 KEYRAM [1792:2048]
● MODCTRL[AESKS] = 6’h0F,无效
● MODCTRL[AESKS] = 6’h20,选择来自 KEYM 的 SK0[0:255]
● MODCTRL[AESKS] = 6’h21,无效
● MODCTRL[AESKS] = 6’h22,选择来自 KEYM 的 SK1[0:255]
● MODCTRL[AESKS] = 6’h23,无效
● MODCTRL[AESKS] = 6’h24,选择来自 KEYM 的 SK2[0:255]
● MODCTRL[AESKS] = 6’h25,无效
● MODCTRL[AESKS] = 6’h26,选择来自 KEYM 的 SK3[0:255]
● MODCTRL[AESKS] = 6’h27,无效
● MODCTRL[AESKS] = 6’h2E,选择来自 KEYM 的 MK[0:255]
● MODCTRL[AESKS] = 6’h2F,无效
63.2.4
HASH 模块
SDP 支持一个 HASH 模块。
HASH,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入数据,通过 HASH 算法变换成固定长
度的输出,该输出就是 HASH 值,也译作散列值或者杂凑值。这种转换是一种压缩映射,也就是,HASH 值的空
间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以理论上不可能从散列值来确定唯一的输入
值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要 (Digest) 的函数,因此,通常也把一段
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
940/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
信息的 HASH 值,称为这段信息的摘要 (Digest)。
尽管理论上,一段数据和它的 HASH 值不存在一一对应关系,即总是存在不同的数据,它们的 HASH 值是相
同的。对于不同的数据得到相同的 HASH 值,称为碰撞。但是,密码学理论认为,现代的 HASH 算法具备以下特
征:
● 从 HASH 值不能反向推导出原始数据,即单向性
● 对输入数据非常敏感,原始数据最微小的修改,会导致 HASH 值大不相同
● 碰撞发生的概率虽然理论上不为 0,但数学上,认为碰撞的概率近似于 0。
因此,HASH 算法得出的数据摘要,或者说 HASH 值,可以用来校验数据的完整性,并在信息安全领域上派
生出许多应用。
SDP 的 HASH 模块支持 SHA-1 和 SHA-256。
SHA-1(Secure Hash Algorithm 1)由美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为
联邦数据处理标准(FIPS)
。SHA-1 支持长度不超过 (264 − 1) 位的输入数据,可以生成 160 位(20 字节)HASH
值。
SHA-2(Secure Hash Algorithm 2)
,由美国国家安全局研发,由美国国家标准与技术研究院(NIST)在 2001
年发布。是 SHA-1 的后继算法。SHA-256 是 SHA-2 的算法之一,支持长度不超过 (264 − 1) 位的输入数据,可以
生成 256 位(32 字节)HASH 值。
用户把 SDPCR[HASHEN] 位置 1,即打开 HASH 模块。
用户可以通过 MODCTRL[HASALG] 位,选择 HASH 算法:
● MODCTRL[HASALG] = 4’b0000,选择 SHA-1
● MODCTRL[HASALG] = 4’b0010,选择 SHA-256
用户在使用 HASH 模块时,必须按需要配置命令描述符的 PKTCTL 字
● 如果此命令描述符处理的数据,包括 HASH 算法输入数据的结尾,要把 PKTCTL[5],HASFNL 置 1
● 如果此命令描述符处理的数据,包括 HASH 算法输入数据的起始,PKTCTL[4],HASINI 置 1
● 如果对一段内存内连续的数据执行 HASH 算法,用户可以把 PKTCTL[5] 和 PKTCTL[4] 都置 1,用户利
用一条命令描述符就可以计算一段连续的数据的 HASH 值。
63.2.5
数据拷贝和数据充填
SDP 支持内存区段的数据拷贝和数据充填功能。
用户把 SDPCR[MCPEN] 位置 1,即打开数据拷贝功能。这样,SDP 功能与 DMA 类似,通过配置命令描述
符,可以把任意长度的数据从源地址指定的内存区段,拷贝到目标地址指定的内存区段。
用户把 SDPCR[CONFEN] 位置 1,即打开数据充填功能。这时,用户配置命令描述符,把需要充填的数据写
入源地址字 PKTSRC,SDP 会把目标地址字 PKTDST 起,长度为 BUFSIZE 的区域全部填写 PKTSRC 的值。
63.2.6
数据重排序
SDP 支持对从源地址读取到输入数据,写入目标地址的输出数据,以及密钥进行数据重排序,以适应不同系
统的数据排序要求。
MODCTRL[DINSWP] 位域,配置了输入数据的重排序方式:
● 2’b00,输入 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],保持不变
● 2’b01,输入 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte2, Byte3,
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
941/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
Byte0, Byte1]
● 2’b10,输入 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte1, Byte0,
Byte3, Byte2]
● 2’b11,输入 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte0, Byte1,
Byte2, Byte3]
MODCTRL[DOUTSWP] 位域,配置了输出数据的重排序方式:
● 2’b00,输出 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],保持不变
● 2’b01,输出 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte2, Byte3,
Byte0, Byte1]
● 2’b10,输出 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte1, Byte0,
Byte3, Byte2]
● 2’b11,输出 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte0, Byte1,
Byte2, Byte3]
MODCTRL[KEYSWP] 位域,配置了密钥数据的重排序方式:
● 2’b00,密钥 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],保持不变
● 2’b01,密钥 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte2, Byte3,
Byte0, Byte1]
● 2’b10,密钥 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte1, Byte0,
Byte3, Byte2]
● 2’b11,密钥 32 位数据字节从高位到低位为 [Byte3, Byte2, Byte1, Byte0],重新排列为 [Byte0, Byte1,
Byte2, Byte3]
63.3
SDP 寄存器
63.3.1
寄存器说明
SDP 的寄存器列表如下:
SDP base address: 0xF304C000
地址偏移
名称
描述
复位值
0x0000
SDPCR
SDP 控制寄存器
0x30000000
0x0004
MODCTRL
模式控制寄存器
0x00000000
0x0008
PKTCNT
数据包计数寄存器
0x00000000
0x000C
STA
状态寄存器
0x00000000
0x0010
KEYADDR
密钥地址寄存器
0x00000040
0x0014
KEYDAT
密钥数据
0x00000030
0x0018
CIPHIV[CIPHIV0]
密码初始化向量 0
0x00000000
0x001C
CIPHIV[CIPHIV1]
密码初始化向量 1
0x00000000
0x0020
CIPHIV[CIPHIV2]
密码初始化向量 2
0x00000000
0x0024
CIPHIV[CIPHIV3]
密码初始化向量 3
0x00000000
0x0028
HASWRD[HASWRD0]
哈希数据字 0
0x00000030
0x002C
HASWRD[HASWRD1]
哈希数据字 1
0x00000030
0x0030
HASWRD[HASWRD2]
哈希数据字 2
0x00000030
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
942/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
安全数据处理器 SDP
名称
描述
复位值
0x0034
HASWRD[HASWRD3]
哈希数据字 3
0x00000030
0x0038
HASWRD[HASWRD4]
哈希数据字 4
0x00000030
0x003C
HASWRD[HASWRD5]
哈希数据字 5
0x00000030
0x0040
HASWRD[HASWRD6]
哈希数据字 6
0x00000030
0x0044
HASWRD[HASWRD7]
哈希数据字 7
0x00000030
0x0048
CMDPTR
命令字指针
0x00000000
0x004C
NPKTPTR
下一个数据包地址指针
0x00000000
0x0050
PKTCTL
数据包控制寄存器
0x00000000
0x0054
PKTSRC
数据包在内存中源地址
0x00000000
0x0058
PKTDST
0x005C
PKTBUF
数据包处理完后内存中的目标地
址
数据包在内存中的大小。
0x00000000
0x00000000
表 237: SDP 寄存器列表
SDP 的寄存器详细说明如下:
SDPCR (0x0)
x
9
x
x
x
8
7
6
5
x
0
x
x
x
4
3
2
1
x
x
x
x
0
INTEN
x
10
RW
x
11
RSVD
x
12
N/A
13
RDSCEN
0
14
RW
0
15
RSVD
TSTPKT0IRQ
RW
0
16
N/A
RSVD
0
DCRPDI
0
17
RW
0
18
N/A
0
19
MCPEN
0
20
CONFEN
0
21
RW
0
22
RW
0
23
HASHEN
1
24
RW
1
25
CIPHEN
HASDIS
RO
0
26
RW
CIPDIS
0
27
RSVD
CLKGAT
RO
28
RW
29
SFTRST
30
RW
31
N/A
63.3.2
0
SDPCR [31:0]
位域
名称
31
SFTRST
30
CLKGAT
29
CIPDIS
28
HASDIS
描述
软复位控制位。
此寄存器位写“1”,然后再写“0”,来软复位 SDP 模块。
SDP 的主要电路的门控时钟控制位。
此为寄存器写“1”,会关闭 SDP 内部绝大部分逻辑电路的时钟。
加解密硬件禁止位,此位为只读寄存器位;此位为“1”时,加解
密的功能不可用;此位为“0”时,加解密的功能可用。
哈希硬件禁止位,此位为只读寄存器位;此位为“1”时,哈希的
功能不可用;此位为“0”时,哈希的功能可用。
加解密使能位。
23
CIPHEN
此位置“1”时,加解密的功能可用;
此位置“0”时,加解密的功能不可用。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
943/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
安全数据处理器 SDP
描述
哈希软件使能位。
22
此位置“1”时,哈希的功能可用;
HASHEN
此位置“0”时,哈希的功能不可用。
内存数据拷贝功能使能位;
21
此位置“1”时,内存拷贝的功能可用;
MCPEN
此位置“0”时,内存拷贝的功能不可用。
内存数据填充的使能位。
20
此位置“1”时,数据填充内存的功能可用;
CONFEN
此位置“0”时,常数填充内存功能不可用。
AES 解密禁止位。
19
写“1”禁止解密功能。
DCRPDI
此位仅能通过硬复位清零。
17
保留位。
TSTPKT0IRQ
寄存器存储包描述符使能位。
当设置“1”时,第一个数据包描述符位于寄存器中(CMDPTR,
8
RDSCEN
NPKTPTR,...)
当设置“0”时,第一个数据包描述符位于内存中(由 CMDPTR
指向)。
中断使能,由软件控制。
0
当置“1”时,SDP 中断使能。
INTEN
当置“0”时,SDP 中断禁用。
SDPCR 位域
MODCTRL (0x4)
0
0
0
0
6
5
0
0
0
4
3
0
0
2
1
0
0
MODCTRL [31:0]
位域
名称
描述
AES 算法选择。
0x0 = AES 128;
31-28
AESALG
0x1 = AES 256;
0x8 = SM4;
其它值,保留。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
944/1016
0
KEYSWP
0
7
RW
x
8
DOUTSWP
0
9
RW
0
10
DINSWP
0
11
RW
0
12
RSVD
0
13
N/A
0
14
RSVD
0
15
N/A
0
16
HASOUT
0
17
HASCHK
0
18
RW
0
19
RW
0
RW
RW
0
20
RSVD
21
N/A
22
HASALG
0
23
RW
0
24
AESDIR
0
25
RW
26
RSVD
27
N/A
0
28
AESKS
0
29
AESMOD
30
AESALG
31
RW
63.3.3
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
安全数据处理器 SDP
描述
AES 模式选择。
27-24
AESMOD
0x0 = ECB;
0x1 = CBC;
其它,保留。
AES 密钥选择。用于选择存储在 SDP 的 16x128 密钥内存中的
AES 密钥,或从 KMAN 中选择密钥。详情如下:
0x00~0x0F:选择密钥内存中的 128 位密钥,0x00~0x0F 为密钥
的地址;当地址为偶数时,AES256 模式下将使用来自该地址的
128 位和下一个地址的 128 位密钥作为 256 位 AES 密钥。当地
址为奇数时,仅对 AES128 有效。
0x20~0x27:来自密钥管理器 KMAN 的密钥 SK(session key):
-0x20,AES128 使用 kman_sk0[127:0] 作为密钥;AES256 使用
kman_sk0[255:0] 作为密钥。
-0x21,AES128 使用 kman_sk0[255:128] 作为密钥;对 AES256
无效。
-0x22,AES128 使用 kman_sk1[127:0] 作为密钥;AES256 使用
kman_sk1[255:0] 作为密钥。
23-18
AESKS
-0x23,AES128 使用 kman_sk1[255:128] 作为密钥;对 AES256
无效。
-0x24,AES128 使用 kman_sk2[127:0] 作为密钥;AES256 使用
kman_sk2[255:0] 作为密钥。
-0x25,AES128 使用 kman_sk2[255:128] 作为密钥;对 AES256
无效。
-0x26,AES128 使用 kman_sk3[127:0] 作为密钥;AES256 使用
kman_sk3[255:0] 作为密钥。
-0x27,AES128 使用 kman_sk3[255:128] 作为密钥;对 AES256
无效。
-0x2E:AES128 使用 kman_mk[127:0] 作为密钥;AES256 使用
kman_mk[255:0] 作为密钥。
-0x2F:AES128 使用 kman_mk[255:128] 作为密钥;对 AES256
无效。
其它值,保留.
AES 方向
16
AESDIR
0x0,AES 加密。
0x1,AES 解密。
HASH 算法选择。
0x0 SHA1 算法
15-12
HASALG
0x1 CRC32 算法
0x2 SHA256 算法
0x3 SM3 算法
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
945/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
安全数据处理器 SDP
描述
哈希检查使能位。
0 x0,未启用哈希检查,HASHRSLT0-7 存储哈希计算的结果。
10
0 x1,启用哈希校验,SDP 计算所得哈希结果会与 HASHRSLT
HASCHK
0-7 寄存器里的预设值进行比较;
对于 SHA1,将使用 HASHRSLT0-3 字,而 HASH 256 将使用
HASH0-7 字。
当启用哈希时,该位选择 AES 引擎的输入或输出数据,进行哈希
9
运算。
HASOUT
0x0, AES 输入数据来进行哈希计算
0x1, AES 输出数据来进行哈希计算
决定 SDP 是否对输入数据进行字节交换,变成大端数据;
5-4
DINSWP
3-2
DOUTSWP
1-0
KEYSWP
当所有位都被设置时,数据被假定为大端格式。
决定 SDP 是否对输出数据进行字节交换,变成大端数据;;
当所有位都被设置时,数据被假定为大端格式
决定 SDP 是否对密钥进行字节交换,变成大端数据;;
当所有位都被设置时,数据被假定为大端格式
MODCTRL 位域
0
0
0
16
15
14
13
12
0
0
0
0
0
0
0
0
11
3
2
1
0
0
0
0
0
0
5
4
3
2
1
0
ERRCHAIN
0
17
W1C
0
18
ERRDST
0
19
ERRHAS
20
W1C
21
W1C
22
10
9
8
7
6
5
4
0
0
0
0
0
0
6
CNTINCR
23
0
RW
0
24
ERRSRC
0
25
RSVD
0
26
N/A
27
CNTVAL
0
28
RO
RSVD
N/A
0
29
RSVD
RSVD
30
N/A
31
W1C
PKTCNT (0x8)
N/A
63.3.4
0
PKTCNT [31:0]
位域
名称
描述
23-16
CNTVAL
只读计数器;显示数据包计数器的当前值。
7-0
CNTINCR
写入此处的数值将加到数据包计数器。
PKTCNT 位域
10
9
8
7
ERRSET
11
ERRPKT
12
W1C
13
W1C
14
RSVD
15
N/A
16
PKTDON
17
W1C
18
PKTCNT0
19
W1C
20
HASBSY
21
RO
22
AESBSY
23
RO
24
CHN1PKT0
25
W1C
26
RSVD
27
N/A
28
IRQ
29
W1C
30
TAG
31
STA (0xC)
RO
63.3.5
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
946/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
STA [31:0]
位域
名称
描述
31-24
TAG
正在处理的数据包的标签。
23
IRQ
中断请求;当错误发生时,数据包处理完成时,数据包计数器达
到零时,都会有中断请求发生。
当前数据报的描述字中,
“CHAIN”位为“1”,指示有后续的数据
20
包;但是此时数据包计数器已经到达“0”,正等待等待新的缓冲
CHN1PKT0
区数据包。
19
AESBSY
AES 加解密引擎正忙。
18
HASBSY
哈希处理忙状态。
17
PKTCNT0
包计数器现在已经计数到“0”。
16
PKTDON
5
ERRSET
工作模式设置错误。
4
ERRPKT
数据包头访问错误,或状态更新错误。
3
ERRSRC
源缓冲区访问错误
2
ERRDST
目标缓冲区访问错误
1
ERRHAS
哈希结果检查错误
0
ERRCHAIN
数据包处理完成后,当数据包控制字中的“PKTINT”位设置位
“1”时,将触发此中断。
当前数据包的 CHAIN 位 = 0,但数据包计数器不为“0”
,触发发
生缓冲区链错误。
STA 位域
KEYADDR (0x10)
0
0
0
26
25
24
23
22
21
20
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
10
9
0
0
0
0
0
0
0
0
0
0
RW
N/A
0
8
7
6
5
4
3
2
1
0
0
0
1
0
0
0
0
0
0
SUBWRD
0
27
RW
28
RSVD
29
N/A
30
RSVD
31
INDEX
63.3.6
0
KEYADDR [31:0]
位域
名称
描述
键索引指针(0-15)。在 SDP 中,有一个 16x128 的密钥缓
23-16
INDEX
存区,可以存储 16 个 AES128 密钥或 8 个 AES 256 密钥;该索
引用于寻址 16 个 128 位密钥地址。
1-0
SUBWRD
密钥的子字指针。有效值为 0-3。每次写入密钥数据寄存器后,该
字段会加 1。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
947/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
安全数据处理器 SDP
描述
KEYADDR 位域
63.3.7
KEYDAT (0x14)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
RW
KEYDAT
31
0
KEYDAT [31:0]
位域
名称
描述
密钥寄存器。该寄存器提供对密钥索引寄存器指定的密钥/密钥子
字的写访问。
31-0
写入此位置的数值,会更新位于子字地址处的密钥的选定子字;
KEYDAT
写操作还会触发 SUBWRD 寄存器递增到密钥中的下一个更高的
字。
KEYDAT 位域
63.3.8
CIPHIV (0x18 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
RW
CIPHIV
31
0
CIPHIV [31:0]
位域
名称
描述
31-0
CIPHIV
AES 加解密的初始化向量。
CIPHIV 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
HASWRD
31
HASWRD (0x28 + 0x4 * n)
RW
63.3.9
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
948/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
安全数据处理器 SDP
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
HASWRD [31:0]
位域
名称
描述
哈希数据字 - HASH 结果位;如果启用了哈希结果检查,此寄存
器存储预期的哈希结果;当未启用哈希检查时,哈希引擎将在这
31-0
里存储最终的哈希结果 [31:0]。
HASWRD
如果启用了 CRC 模式,如果启用了 CRC 校验,则此工作存储
CRC 预期结果;如果未启用 CRC 校验,此寄存器存储最终计算
出的 CRC 结果。
HASWRD 位域
63.3.10
CMDPTR (0x48)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
CMDPTR
31
0
CMDPTR [31:0]
位域
名称
描述
31-0
CMDPTR
当前命令地址寄存器指向内存中的要执行(或当前正在执行)的
描述符地址。
CMDPTR 位域
63.3.11
NPKTPTR (0x4C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
NPKTPTR
31
0
NPKTPTR [31:0]
位域
名称
31-0
NPKTPTR
描述
下一个数据包地址指针。
NPKTPTR 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
949/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
PKTCTL (0x50)
17
16
0
0
0
0
0
0
0
0
0
0
0
15
13
12
11
10
9
8
7
0
0
0
0
0
0
0
0
RW
N/A
RSVD
14
0
0
6
5
4
3
2
1
0
RSVD
18
N/A
19
PKTINT
20
DCRSEMA
21
RW
22
RW
23
CHAIN
0
24
RW
0
25
HASINI
0
26
HASFNL
0
27
RW
28
RW
29
CIPHIV
30
PKTTAG
31
RW
63.3.12
安全数据处理器 SDP
0
0
0
0
0
0
0
PKTCTL [31:0]
位域
名称
描述
31-24
PKTTAG
6
CIPHIV
5
HASFNL
是否是哈希终止包
4
HASINI
是否是哈希初始包
3
CHAIN
2
DCRSEMA
1
PKTINT
包标签。
使用 AES-CBC 模式时置 1,提示 AES 装载初始向量。
指示是否有下一个数据包;也就是下一个命令指针寄存器是否必
须被加载。
在当前操作结束时,信号量是否必须递减操作。当信号量达到零
值时,将不再进行进一步的数据包处理。
此位的设置,决定是否必须在数据包完成后发出中断。
PKTCTL 位域
63.3.13
PKTSRC (0x54)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13
12
11
10
9
8
7
6
5
4
3
2
1
0
RW
PKTSRC
31
0
PKTSRC [31:0]
位域
名称
描述
31-0
PKTSRC
数据包内存源地址。
PKTSRC 位域
31
30
PKTDST (0x58)
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
PKTDST
63.3.14
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
950/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
31
安全数据处理器 SDP
0
PKTDST [31:0]
位域
名称
描述
31-0
PKTDST
数据包内存目标地址。
PKTDST 位域
63.3.15
PKTBUF (0x5C)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
PKTBUF
31
0
PKTBUF [31:0]
位域
名称
31-0
PKTBUF
描述
PKTBUF 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
951/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
在线解密引擎 EXIP
在线解密引擎 EXIP
64
本章节描述了在线解密引擎 EXIP 的主要特性和功能。
特性总结
64.1
在线解密引擎 EXIP 可以实现对加密的外部 NOR Flash 实时解密,EXIP 的主要特性有:
● 支持 AES-128 CTR 模式解密
● 支持 4 个区段,每个区段可以使用不同的密钥加密
● 支持通过 Key Blob 封装数据加密密钥等敏感信息(符合 RFC3394)
● 支持硬件解封 Key Blob(符合 RFC3394)
● 支持从 OTP 读取用于解封 Key Blob 的 KEK(加密密钥的密钥)
功能描述
64.2
在本产品上,用户可以通过 XPI 控制器连接多种不同品牌,不同容量的串行 NOR Flash。XPI 控制器支持将
外部存储器直接映射到系统的地址空间上。因此处理器、DMA 等主设备可以像访问片上内存一样,直接访问外部
存储器,载入数据或者执行代码。这种不需要把外部存储器数据先复制到内存,再执行的访问方式,称为在线执
行 (Execution In Place)。在线解密引擎 EXIP 与 XPI 控制器紧密耦合,支持外部串行 NOR Flash 在线执行的同
时,对数据实时解密。因此,只要用户通过 AES-128 CTR 算法,对外部 NOR Flash 上的数据和代码加密,就可
以实现对数据和代码的保护。
64.2.1
EXIP 区段,密钥,计数器
EXIP 支持 4 个区段,每个区段都可以支持独立的密钥和计数器。
每个区段可以定义区段的起始地址和结尾地址,起始地址和结尾地址之间的区域,就是加密区域。EXIP 与
XPI 控制器紧密耦合,总线主设备(处理器或 DMA 等)通过 XPI 发起对外部存储器访问时,EXIP 会监控访问的
系统地址。如果该地址位于加密区域内,就会执行解密操作。
RGNx_DSCR_W0 [START] 存放区段 x 的起始地址,RGNx_DSCR_W1 [END] 存放区段 x 的结尾地址。EXIP
要求加密区域长度的单位为 1KB,起始地址必须 1KB 对齐,假设加密区域长度为 x KB,结尾地址应为 START +
x*1024–1。因此 START 只取高 22 位,低 10 位应当为 0。而 END 只取高 22 位,低 10 位应当为 1。
EXIP 支持 AES-128 CTR 模式解密,密钥长度为 128 位。密钥存放在寄存器 RGNx_KEY0,RGNx_KEY1,
RGNx_KEY2,RGNx_KEY3。
计数器长度与 AES 数据块长度相同,也为 128 位。AES CTR 模式要求使用相同密钥加密的数据,每一个数
据块对应的计数器值不能重复。EXIP 对每一个 128 位(16 字节)的数据块,其计数器,由数据块的 32 位系统
地址和 64 位的 NONCE 组成,其中 NONCE 存放在 RGNx_CTR0 和 RGNx_CTR1 中。计数器组成方式如下:
● Counter[127:96] = CTR0[31:0]
● Counter[95:64] = CTR1[31:0]
● Counter[63:32] = CTR0[31:0] XOR CTR1[31:0]
● Counter[31:0] = Sysaddr[31:0] AND 0xFFFFFFF0
其中:
● CTR0 为 64 位长 NONCE 的低 32 位
● CTR1 为 64 为长 NONCE 的高 32 位
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
952/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
在线解密引擎 EXIP
● SysAddr 为密文块的系统映射地址。密文块长度为 128 位 / 16 字节,一个密文块对应一个计数器值,因
此计数器值只取地址的高 28 位,地址低 4 位置 0。
64.2.2
EXIP 的密钥封装和密钥解封
EXIP 使用 RFC3394 定义的密钥封装和密钥解封算法,保护 EXIP 解密用的密钥和相关敏感数据。为了便于
区分,把 EXIP 用于密钥封装/解封的密钥称为 KEK(Key-Encryption Key 密钥加密密钥)。把 EXIP 用户解密外部
存储器上数据/代码的密钥,称为 DEK(Data Encryption Key)。
EXIP 的每一个区段,需要封装的 DEK 和相关数据有 5 个 64 位数据块,共 40 字节的数据。总结如下:
地址偏移
描述
0x00
DEKx[31:0],即 RGNx_KEY0 存放的部分密钥
0x04
DEKx[63:32],即 RGNx_KEY1 存放的部分密钥
0x08
DEKx[95:64],即 RGNx_KEY2 存放的部分密钥
0x0C
DEKx[127:96],即 RGNx_KEY3 存放的部分密钥
0x10
NONCE[31:0],即 RGNx_CTR0 存放的部分 NONCE
0x14
NONCE[63:32],即 RGNx_CTR1 存放的部分 NONCE
0x18
START,即 RGNx_RGN_SA[31:10],加密区域起始地址, 其他位
置0
0x1C
END,即 RGNx_RGN_EA[31:10],加密区域结尾地址
RO,即 RGNx_RGN_EA[2],置 1 时,RGNx 的配置寄存器读保
护
DECEN,即 RGNx_RGN_EA[1],置 1 时,EXIP 对此区段执行
解密
VALID,即 RGNx_RGN_EA[0],置 1 时,区段 x 有效
其他位置 1
0x20
充填数据,全部置 0
0x24
充填数据,全部置 0
表 238: EXIP Key Wrap 数据汇总
这些数据经过密钥封装 (Key Wrap) 过程后,得到 6 个 64 位密文块,共 48 字节。
当 CFG 寄存器的 BE 位和 KBPE 位置 1 后,EXIP 会启动硬件的密钥解封过程。EXIP 会通过 XPI 控制器,
直接从外部存储器的起始地址取密文块,密文块在外部存储器的位置如下:
地址偏移
描述
0x00
区段 0,RGN0 的 DEK,NONCE,区域地址信息的密文包
0x40
区段 1,RGN1 的 DEK,NONCE,区域地址信息的密文包
0x80
区段 2,RGN2 的 DEK,NONCE,区域地址信息的密文包
0xC0
区段 3,RGN3 的 DEK,NONCE,区域地址信息的密文包
表 239: EXIP Key Wrap 数据汇总
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
953/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
在线解密引擎 EXIP
EXIP 一旦开始解封密文包,会自动执行 4 个区段密文包的解封过程 (Key Unwrap)。解封完成后,会将恢复的
DEK,
NONCE,
SART,
END 等信息载入 RGNx 的对应寄存器。
如果解封后得到的初始值与定义的 IV (0xA6A6A6A6A6A6A6A6)
不一致,就会提示错误,RGNx_DESC_W1[0] VALID 位会置 1,同时 STA[KBERR] 标志位置 1。
用户如果实际使用的区段小于 4 个,也需要按照密钥封装的步骤生成全部 4 个区段的密文包,并烧录在 Flash
的对应地址,把不用的区段起始地址和结尾地址都填 0 即可。
EXIP 用于密码解封的 KEK 从片上 OTP 的专用数据通路直接加载,KEK 一旦烧录到 OTP 指定位置,并配置
恰当的读写保护后,就对软件不再可见。有关 OTP 的烧录和读写保护配置,用户可以查阅 OTP 的相关章节。
本产品上,EXIP 的打开和密钥解封由 BOOT ROM 管理,OTP 中的 ENCRYPT_XIP 字段被置 1 后。ROM
在 XPI NOR Flash 启动中会强制打开 EXIP。
总结,用户使用 EXIP 实现在线解密执行:
● 生成 KEK,并利用 KEK 对 DEK,NONCE,START,END 等数据进行密钥封装 (KeyWrap),生成密文
包,注意要生成全部 4 个 EXIP 区段的密文包
● 把密文包烧录到外部串行 NOR Flash 的指定地址
● 按照 DEK,NONCE 对镜像加密,加密后烧录到外部串行 NOR Flash
● 将 KEK 烧录到 OTP 的指定位置,并配置读写保护
● 烧录 OTP 中的 ENCRYPT_XIP 字段为 1
● 复位后,芯片即支持从加密后的外部串行 NOR Flash 启动
64.3
64.3.1
附录
RFC3394 简介
EXIP 支持 AES-128 CTR 模式解密外部 NOR Flash 上加密的数据和代码。显然,这些数据及代码的安全,取
决于 EXIP 解密用的密钥的安全。EXIP 支持一种称为 Key Wrap 的密钥封装算法,来保护 EXIP 解密用的密钥和
其他相关敏感数据。
EXIP 使用的 Key Wrap 算法符合 RFC3394 “Advanced Encryption Standard (AES) Key Wrap Algorithm”。
RFC3394 定义了一种称为密钥封装 (Key wrap) 的算法,算法基于 AES 标准,可以对任意长度的数据进行加密保
护,并提供数据的完整性检验。RFC3394 把用来封装受保护数据的密钥称为 KEK(Key-encryption Key),即密钥
加密密钥。KEK 可以是 AES 标准支持的密钥,AES-128,AES-192,AES-256。EXIP 使用的 KEK 为 128 位长。
RFC3394 定义,受保护的数据,可以以 64 位为单位分成若干个数据块。数据块个数最少为 2 个,最大个数
没有限制。n 个明文数据块经过密钥封装的过程后,得到 n+1 个密文数据块。而 n+1 个密文数据块,经过密钥解
封过程,可能还原成 n 个明文数据块。
引用 RFC3394 的密钥封装 Key Wrap 步骤如下:
输入: 明文, n个64位数据块 {P1, P2, ..., Pn}以及密钥K (即KEK).
输出: 密文, (n+1)个64位密文块{C0, C1, ..., Cn}.
步骤1,初始化
设置A为初始值IV
For i = 1 to n
R[i] = P[i]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
954/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
在线解密引擎 EXIP
步骤2,计算中间值
For j = 0 to 5
For i=1 to n
B = AES(K, A | R[i])
A = MSB(64, B) ^ t 其中t = (n*j)+i
R[i] = LSB(64, B)
步骤3,输出结果
C[0] = A
For i = 1 to n
C[i] = R[i]
引用 RFC3394 的密钥解封 Key Unwrap 步骤如下:
输入: 密文, (n+1)个64位密文块{C0, C1, ..., Cn}, 以及密钥 K (即KEK).
输出: 明文, n个64位数据块{P0, P1, K, Pn}.
步骤1,初始化
A = C[0]
For i = 1 to n
R[i] = C[i]
步骤2,计算中间值
For j = 5 to 0
For i = n to 1
B = AES-1(K, (A ^ t) | R[i]) 其中t = n*j+i
A = MSB(64, B)
R[i] = LSB(64, B)
步骤3,输出结果
如果 A与初始值IV相符,则
For i = 1 to n
P[i] = R[i]
否则表示出错
以上密钥封装和解封步骤中使用的表达式说明如下:
AES(K, W) 使用AES算法以密钥K对数据W加密
AES-1(K, W) 使用AES算法以密钥K对数据W解密
MSB(j, W) 返回数据W的j个MSB,即最高的j位
LSB(j, W) 返回数据W的j个LSB,即最低的j位
B1 \^ B2 把数据B1和B2按位异或
B1 | B2 把数据B1和B2拼接
K 即KEK,密钥加密密钥
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
955/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
在线解密引擎 EXIP
n 64位数据块的数目
s 密钥封装的步骤数目 s = 6n
P[i] 第i个64位明文数据块
C[i] 第i个64位密文数据块
A 64位寄存器,存放完整性检验数据
R[i] 一组64位的寄存器阵列,其中i = 0, 1, ……, n
IV 封装时的64位的初始值,解封时用于与A比较,EXIP使用RFC3394定义的默认初始值:0xA6A6A6A6A6A6A6A6
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
956/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
随机数发生器 RNG
随机数发生器 RNG
65
本章节介绍随机数发生器 RNG 的主要特性和功能。
特性总结
65.1
RNG 的特性如下:
● 多个熵源的 256 位硬件真随机发生器(TRNG)来生成种子((SEED)
● 符合 NIST 标准的 160 位硬件伪随机数发生器(PRNG),伪随机数的种子是 256 位;
● 支持数字签名标准(DSS)中定义的密钥生成算法;
● 支持软件不可见的随机数传递接口;
功能描述
65.2
本章节描述随机数发生器 RNG 的功能。
65.2.1
RNG 初始化
RNG 模块在使用前需要初始化,初始化流程如下:
1. CMD 寄存器的 CLRERR 位置 1,清除所有的错误和中断
2. CMD 寄存器的 GENSD 位置 1,开始生成种子(SEED)
3. 等待 STA 寄存器的 FSTSDDN 标志位置 1,代表 SEED 就绪
65.2.2
RNG 生成 SEED
RNG 在初始化完成后,即可以开始生成 SEED。
RNG 支持自动生成 SEED,也支持在软件触发的 SEED 生成。当 CTRL 寄存器的 AUTRSD 位置 1 时,RNG
可以自动重新生成 SEED。如果 AUTRSD 位置 0,用户需要把 CMD 寄存器的 GENSD 位置 1,来指示 RNG 生
成一个新 SEED。当 SEED 生成完毕时,STA 寄存器的 NEWSDDN 标致位会被置 1。
每当存储随机数的 FIFO(五个字共 160 位)为空时,RNG 会基于种子快速生成 160 位随机数填充到 FIFO;
当前的种子被用来生成一定数量的的随机数后,RNG 会通过状态寄存器来标识需要生成新的种子,这时,如果自
动种子生成模式(AUTRSD 为 1)被使能,会自动生成种子;否则,需要软件设置 CMD.GENSD 位来触发新的
种子的生成。
可以通过 FO2B 寄存器读取 FIFO 里存储器的随机数。可以通过 STA 寄存器的 FRNNU 标志位,判断当前
FIFO 存有的随机数字数。
RNG 支持随机数直接输出端口,通过硬件直接传给其它模块,这时随机数对软件不可见;随机数传递步骤如
下:
1. 通过 STA 寄存器的 FLVL 标志位,判断 SEED FIFO 内存在有效数据
2. 软件依次读取寄存器 R2SK[0] ∼R2SK[7],当读取 R2SK[7] 完成后,SEED 端口上的 256 位的 SEED
数据有效。
注意,软件读寄存器 R2SK[0] ∼R2SK[7],返回值总是 0。真实有效的随机数会从输出端口输出给其他模块。
65.2.3
RNG 自测试
RNG 支持通过自测试,确保相关电路工作正常。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
957/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
随机数发生器 RNG
用户把 CMD 寄存器的 SLFCHK 位置 1,
RNG 模块即开始自测试流程。自测结束时,
STA 寄存器的 SLFCHKDN
标志位会置 1,如果自测出现问题,SLFCHNPF 标志位会置 1。
65.2.4
中断
RNG 支持生成以下中断请求:
● RNG 生成 SEED 完毕或者自测完毕时
● RNG 发生错误时
CTRL 寄存器的 MIRQDN 位和 MIRQERR 位清 0 时,支持生成相应中断。
RNG 寄存器列表
65.3
RNG 的寄存器列表如下:
RNG base address: 0xF00C8000
地址偏移
名称
描述
复位值
0x0000
CMD
命令寄存器
0x00000000
0x0004
CTRL
控制寄存器
0x00000000
0x0008
STA
状态寄存器
0x00000000
0x000C
ERR
错去指示寄存器
0x00000000
0x0010
FO2B
随机数到总线寄存器
0x00000000
0x0020
R2SK[FO2S0]
随机数到 KMAN/SDP 寄存器
0x00000000
0x0024
R2SK[FO2S1]
随机数到 KMAN/SDP 寄存器
0x00000000
0x0028
R2SK[FO2S2]
随机数到 KMAN/SDP 寄存器
0x00000000
0x002C
R2SK[FO2S3]
随机数到 KMAN/SDP 寄存器
0x00000000
0x0030
R2SK[FO2S4]
随机数到 KMAN/SDP 寄存器
0x00000000
0x0034
R2SK[FO2S5]
随机数到 KMAN/SDP 寄存器
0x00000000
0x0038
R2SK[FO2S6]
随机数到 KMAN/SDP 寄存器
0x00000000
0x003C
R2SK[FO2S7]
随机数到 KMAN/SDP 寄存器
0x00000000
表 240: RNG 寄存器列表
65.3.1
RNG 寄存器描述
RNG 的寄存器详细说明如下:
CMD (0x0)
0
0
0
0
0
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
10
9
8
7
0
0
0
0
0
0
0
0
0
0
0
0
N/A
0
6
5
4
0
0
0
3
2
0
0
CMD [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
958/1016
1
0
SLFCHK
20
RW
21
GENSD
22
RW
23
RSVD
24
N/A
25
CLRINT
26
CLRERR
27
RW
28
RW
29
SFTRST
30
RSVD
31
RW
65.3.2
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
随机数发生器 RNG
描述
软复位控制位, 该位是自清零的。
6
0 不执行软件复位
SFTRST
1 执行软件复位
错误清除位,清除 ESR 寄存器中的错误和 RNG 中断,该位是自
5
清零的。
CLRERR
0 不清除错误和对应的中断
1 清除错误和对应的中断
中断清除位,如果不存在错误,则清除 RNG 中断,该位是自清零
4
的。
CLRINT
0 不清除中断
1 清除中断
1
GENSD
0
SLFCHK
生成种子命令位,写“1”触发种子的生成;种子生成结束后此位
自动清零。
自检命令位,写“1”触发电路自检;自检结束后,此位自动清零。
CMD 位域
CTRL (0x4)
21
20
0
0
0
0
0
0
0
0
0
0
0
0
19
18
17
16
15
14
13
12
11
10
9
8
7
0
0
0
0
0
0
0
0
0
0
0
0
N/A
0
6
5
4
0
0
0
3
2
1
0
0
0
0
FUFMOD
22
RW
23
RSVD
24
N/A
25
MIRQDN
26
AUTRSD
27
RW
28
RW
29
MIRQERR
30
RSVD
31
RW
65.3.3
0
CTRL [31:0]
位域
名称
6
MIRQERR
描述
中断屏蔽位,屏蔽因为内部错误引起的的中断请求
中断屏蔽位,屏蔽种子产生和自检完成时产生的中断。这些作业
的状态可以通过以下方式查看:
• 读取 STA 并查看种子生成完成和自检完成位(STA[NSDDN,
5
MIRQDN
SCDN])
• 查看 CMD 寄存器里的生成种子或自检位
(CMD[GENSD,SLFCHK]) ,如果这些位仍为“1”,表明操作仍在
进行
4
AUTRSD
种子自动生成控制位;当此位为高时,需要种子生成时,会自动
触发种子生成。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
959/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
随机数发生器 RNG
描述
FIFO 下溢响应模式
1-0
0X 返回全零并设置 ESR[FUFE]
FUFMOD
10 返回全零,并产生总线传输错误
11 返回全零,产生中断(覆盖 CTRL[MIRQERR])
CTRL 位域
STA (0x8)
0
0
0
0
0
7
6
5
4
3
2
1
0
RSVD
0
8
N/A
0
9
IDLE
0
10
BUSY
0
11
RO
0
12
RO
0
13
RSDREQ
14
RO
15
SCDN
0
16
FSDDN
0
SCPF
0
17
RO
0
RO
N/A
0
18
RO
0
19
RSVD
0
20
NSDDN
0
21
RO
0
22
N/A
23
FRNNU
0
24
RO
0
25
FSIZE
0
26
RO
0
27
FUNCERR
28
RO
29
RSVD
30
RSVD
31
N/A
65.3.4
0
0
0
0
0
0
0
0
STA [31:0]
位域
名称
描述
23-21
SCPF
自检结果位:0x1, 自检失败;0x0, 自检成功
16
FUNCERR
错误标识位,当为“1”时,标识有功能错误
15-12
FSIZE
存储随机数的 FIFO 的大小,以字为单位。
11-8
FRNNU
存储随机数的 FIFO 内当前随机数的个数。
6
NSDDN
新种子生成完成标识位
5
FSDDN
第一个种子生成完成标识位
自检结束标志位,通过硬件复位或启动新的自检来清除。
4
SCDN
通过设置 CMD[SLFCHK] 启动。
0 自检未完成
1 上次重启的自检完成
需要重新产生种子。
3
RSDREQ
当此位置高时,表示需要重新产生 RNG 的种子。种子的产生需要
设置 CMD[GENSD] 来完成,或者
如果设置了 CTRL[AUTRSD],则自动执行。
2
IDLE
1
BUSY
保留位
忙标志位;当为 1 时,表示 RNG 引擎正忙于种子产生或随机数
生成、自检等。
STA 位域
65.3.5
ERR (0xC)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
960/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
0
13
12
0
0
0
0
0
0
0
N/A
N/A
0
11
10
9
8
7
0
0
0
0
x
6
0
x
5
4
3
2
1
0
RSVD
0
14
N/A
0
15
RSVD
0
16
RSVD
0
17
N/A
0
18
N/A
0
19
SCKERR
20
RO
21
FUFE
22
RSVD
23
RO
0
24
N/A
0
25
RSVD
0
26
N/A
0
27
RSVD
28
N/A
29
RSVD
30
RSVD
31
随机数发生器 RNG
0
0
0
0
0
0
ERR [31:0]
位域
名称
5
FUFE
描述
FIFO 访问错误(下溢)
自检错误指示位;只能通过硬件,或软件复位向 CMD[CE] 写入 1
3
清零。
SCKERR
0 自检成功。
1 自检失败。
ERR 位域
65.3.6
FO2B (0x10)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
FO2B
31
0
FO2B [31:0]
位域
名称
31-0
FO2B
描述
软件读取得随机数 FIFO 数据。
FO2B 位域
65.3.7
R2SK (0x20 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
FO2S0
31
0
R2SK [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
961/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
随机数发生器 RNG
描述
软件读此此寄存器,将会得到“0”,实际得随机数 FIFO 会输出到
31-0
FO2S0
KMAN,可作为 SDP AES 的密钥。请确保 STA 的 FLVL 位在读
此地址时不为“0”,否则 SDP 将无法从随机数 FIFO 读到数据。
R2SK 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
962/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
密钥管理器 KEYM
密钥管理器 KEYM
66
本章节描述了密钥管理器 KEYM 的主要特性和功能。密钥管理器的主要功能是为加解密引擎输送密钥。实现
安全密钥管理,保证密钥不暴露给任何软件。
特性总结
66.1
密钥管理器 KEYM 的主要特性:
● 从其他模块载入密钥
● 支持对输入密钥加扰
● 向加密引擎输送密钥
● 支持软件密钥 SMK
● 支持生成多个 SK(session key)
● 支持由多个密钥合成一个密钥
66.2
功能描述
本章节描述密钥管理器 KEYM 的的功能。
66.2.1
ZMK 密钥
ZMK 密钥是个 256 位的密钥。ZMK 由密钥管理器从电池备份域加扰传输而来。
用户使用 ZMK 可以选择是使用原始数据,或者加扰。
注意,为实现系统不同安全状态下的密钥隔离,密钥管理器支持在 SEC 和 NSC 这两个不同状态下,单独地配置密钥
是否加扰,并且不同模式下使用不同的加扰算法。即相同的原始数据,加扰后的输出也不相同。请查阅系统安全管理
器的相关章节获取安全状态的详细信息。
SEC_KEY_SEL[ZMK_SEL] 位置 0,表示当系统安全状态为 SEC 时,使用加扰后 ZMK;否则使用 ZMK 的
原始数据。
NSC_KEY_SEL[ZMK_SEL] 位置 0,表示当系统安全状态为 NSC 时,使用加扰后 ZMK;否则使用 ZMK 的
原始数据。
66.2.2
FMK 密钥
FMK 密钥是个 256 位的密钥。FMK 由密钥管理器从 OTP 传输而来。每一颗芯片具备唯一的 OTP 根密钥。
用户使用 FMK 可以选择是使用具有两个加扰版本,原始密钥不可直接使用。
注意,为实现系统不同安全状态下的密钥隔离,密钥管理器支持在 SEC 和 NSC 这两个不同状态下,单独地配置密钥
是否加扰,并且不同模式下使用不同的加扰算法。即相同的原始数据,加扰后的输出也不相同。请查阅系统安全管理
器的相关章节获取安全状态的详细信息。
SEC_KEY_SEL[FMK_SEL] 位置 0,表示当系统安全状态为 SEC 时,使用加扰后 FMK;否则使用 FMK 的
另一加扰版本。
NSC_KEY_SEL[FMK_SEL] 位置 0,表示当系统安全状态为 NSC 时,使用加扰后 FMK;否则使用 FMK 的
另一加扰版本。
66.2.3
SMK 密钥
SMK 密钥是个 256 位的密钥。SMK 可以由软件写入 SFK0 SFK7 寄存器。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
963/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
密钥管理器 KEYM
SMK 支持 SMKRNG 端口直接载入,通过配置 KEYM_RNG 寄存器可以配置载入选项:
● RNG[RNG_XOR] = 0’b0,SMK(KEYM_SFKx) 直接填入 RNG 生成的随机数
● RNG[RNG_XOR] = 0’b1,SMK(KEYM_SFKx) 更新为原值与 RNG 生成的随机数按位异或
用户将 KEYM_RNG[BLOCK_RNG_XOR] 位置 1,可以锁定 KEYM_RNG[RNG_XOR] 位的值,不能再更改。
密钥管理器支持对存放 SMK 密钥的寄存器 SFK0 SFK7 设置读保护,
将 READ_CONTROL [BLOCK_SMK_READ]
位置 1,则软件不能再读取 SFK0 SFK7。
用户使用 SMK 可以选择是使用原始数据,或者加扰。
注意,为实现系统不同安全状态下的密钥隔离,密钥管理器支持在 SEC 和 NSC 这两个不同状态下,单独地配置密钥
是否加扰,并且不同模式下使用不同的加扰算法。即相同的原始数据,加扰后的输出也不相同。请查阅系统安全管理
器的相关章节获取安全状态的详细信息。
SEC_KEY_SEL[SMK_SEL] 位置 1,表示当系统安全状态为 SEC 时,使用加扰后 SMK;否则使用 SMK 的
原始数据。
NSC_KEY_SEL[SMK_SEL] 位置 1,表示当系统安全状态为 NSC 时,使用加扰后 SMK;否则使用 SMK 的
原始数据,若安全模式设置为使用加扰版本,则非安全模式固定为加扰版本。
66.2.4
MK 密钥
MK 可以从 ZMK,FMK,SMK 中选择其一,也可以由它们中的多个或者全部合成。通过密钥合成,可以把根
密钥分散管理,降低风险。
注意,为实现系统不同安全状态下的密钥隔离,密钥管理器支持在 SEC 和 NSC 这两个不同状态下,单独地配置 MK
合成。
MK 合成的具体配置方法为:
● SEC_KEY_SEL 寄存器的 KEY_SEL[0] 置 1,表示当系统安全状态为 SEC 时,FMK 参与密钥合成,否
则输出密钥与 FMK 无关
● SEC_KEY_SEL 寄存器的 KEY_SEL[1] 置 1,表示当系统安全状态为 SEC 时,ZMK 参与密钥合成,否
则输出密钥与 ZMK 无关
● SEC_KEY_SEL 寄存器的 KEY_SEL[2] 置 1,表示当系统安全状态为 SEC 时,SMK 参与密钥合成,否
则输出密钥与 SMK 无关
● NSC_KEY_SEL 寄存器的 KEY_SEL[0] 置 1,表示当系统安全状态为 NSC 时,FMK 参与密钥合成,否
则输出密钥与 FMK 无关
● NSC_KEY_SEL 寄存器的 KEY_SEL[1] 置 1,表示当系统安全状态为 NSC 时,ZMK 参与密钥合成,否
则输出密钥与 ZMK 无关
● NSC_KEY_SEL 寄存器的 KEY_SEL[2] 置 1,表示当系统安全状态为 NSC 时,SMK 参与密钥合成,否
则输出密钥与 SMK 无关
假设用户将 SEC_KEY_SEL 寄存器的 KEY_SEL[0] 置 1,而 KEY_SEL[1] 和 KEY_SEL[2] 置 0,那么在安全
状态为 SEC 时,密钥管理器会将 FMK 作为 MK 输出。
若三个合成因子都为 0,或选择的因子有任意一个输入无效值,则输出全零密钥。可以通过将加密数据与全
零密钥的密文相比对的方式检测密钥是否设置成功。
66.2.5
SK 密钥
SK 密钥又称为 session key,密钥管理器支持输出 SK0,SK1,SK2,SK3 到系统上的加解密引擎。
注意,为实现系统不同安全状态下的密钥隔离,密钥管理器支持在 SEC 和 NSC 这两个不同状态下,生成不同的 SK。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
964/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
密钥管理器 KEYM
SEC_KEY_SEL[SK_VAL] 位置 1,表示当系统安全状态为 SEC 时,SK 生成有效;否则使用 SKx 的输出为
全 0。
NSC_KEY_SEL[SK_VAL] 位置 1,表示当系统安全状态为 NSC 时,SK 生成有效;否则使用 SKx 的输出为
全 0。
密钥管理器的 SK 密钥生成通过密钥生成模块实现。密钥生成模块的输入是 SMK,而每一颗芯片具有不同的
密钥产生逻辑,不同的 SKx 之间,密钥生成模块逻辑也不相同。
因此,在同一芯片上,当 SMK = a 时,生成 SK0 = SK0a,SK1 = SK1a,SK2 = SK2a,SK3 = SK3a。只要
记录下 a 的值,再次设置 SMK = a,可以还原 SK0a,SK1a,SK2a,SK3a。但是在另一芯片上,输入 SMK = a
则不能得到相同的 SK。
注意:如使用 session Key,则不应在 MK 中引入 SMK 作为合成因子。
66.3
KEYM 寄存器列表
KEYM 的寄存器列表如下:
KEYM base address: 0xF00CC000
地址偏移
名称
描述
复位值
0x0000
SOFTMKEY[SFK0]
软密钥
0x00000000
0x0004
SOFTMKEY[SFK1]
软密钥
0x00000000
0x0008
SOFTMKEY[SFK2]
软密钥
0x00000000
0x000C
SOFTMKEY[SFK3]
软密钥
0x00000000
0x0010
SOFTMKEY[SFK4]
软密钥
0x00000000
0x0014
SOFTMKEY[SFK5]
软密钥
0x00000000
0x0018
SOFTMKEY[SFK6]
软密钥
0x00000000
0x001C
SOFTMKEY[SFK7]
软密钥
0x00000000
0x0020
SOFTPKEY[SPK0]
私钥
0x00000000
0x0024
SOFTPKEY[SPK1]
私钥
0x00000000
0x0028
SOFTPKEY[SPK2]
私钥
0x00000000
0x002C
SOFTPKEY[SPK3]
私钥
0x00000000
0x0030
SOFTPKEY[SPK4]
私钥
0x00000000
0x0034
SOFTPKEY[SPK5]
私钥
0x00000000
0x0038
SOFTPKEY[SPK6]
私钥
0x00000000
0x003C
SOFTPKEY[SPK7]
私钥
0x00000000
0x0040
SEC_KEY_CTL
安全密钥产生
0x00000000
0x0044
NSC_KEY_CTL
非安全密钥产生
0x00000000
0x0048
RNG
随机数发生器接口
0x00000000
0x004C
READ_CONTROL
密钥读取控制
0x00000000
表 241: KEYM 寄存器列表
66.4
寄存器描述
KEYM 的寄存器详细说明如下:
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
965/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
66.4.1
密钥管理器 KEYM
SOFTMKEY (0x0 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
KEY
31
0
SOFTMKEY [31:0]
位域
名称
描述
密钥有 4 种加扰版本,加扰方式在同一颗芯片上可重复,不同芯
31-0
片上不可重现。该组寄存器必须按从 0-7 的顺序写入,否则输出
KEY
全 0.
SOFTMKEY 位域
66.4.2
SOFTPKEY (0x20 + 0x4 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
KEY
31
0
SOFTPKEY [31:0]
位域
名称
31-0
KEY
描述
密钥由熔丝私钥,软件密钥,SRK 及系统安全状态派生出来。
此密钥只可读取一次,再次读取则得到全 0。
SOFTPKEY 位域
x
x
x
x
RSVD
RO
N/A
x
0
14
13
12
x
x
11
x
0
10
9
x
x
8
7
x
0
6
5
x
x
x
4
3
0
x
2
0
SEC_KEY_CTL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
966/1016
1
0
KEY_SEL
x
15
RW
x
16
RSVD
x
17
N/A
x
18
FMK_SEL
x
19
RW
x
20
RSVD
x
21
N/A
x
22
ZMK_SEL
x
RW
0
23
RW
24
RSVD
25
N/A
26
SMK_SEL
27
RW
28
RSVD
29
N/A
30
LOCK_SEC_CTL
31
SEC_KEY_CTL (0x40)
SK_VAL
66.4.3
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31
LOCK_SEC_CTL
密钥管理器 KEYM
描述
禁止更改密钥设置
会话密钥有效
16
0: 会话密钥未设置或不可用
SK_VAL
1: 会话密钥有效
软密钥选择
12
0: 使用原始密钥
SMK_SEL
1: 使用加扰版本
电池域密钥选择(如有电池域)
8
0: 使用加扰版本
ZMK_SEL
1: 使用原始密钥
熔丝对称密钥选择
4
0: 使用加扰版本
FMK_SEL
1: 使用另一加扰版本
安全状态对称密钥合成选择
2-0
bit0: 熔丝密钥, 0: 不参与, 1: 参与
KEY_SEL
bit1: 电池密钥, 0: 不参与, 1: 参与(如有电池域)
bit2: 软密钥 key 0: 不参与, 1: 参与
SEC_KEY_CTL 位域
x
x
x
x
RSVD
RO
N/A
x
0
14
13
12
x
x
11
x
0
10
9
x
x
8
7
x
0
6
5
x
x
x
4
3
0
x
2
0
NSC_KEY_CTL [31:0]
位域
名称
31
LOCK_NSC_CTL
描述
禁止更改密钥设置
会话密钥有效
16
SK_VAL
0: 会话密钥未设置或不可用
1: 会话密钥有效
软密钥选择
12
SMK_SEL
0: 使用原始密钥
1: 使用加扰版本
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
967/1016
1
0
KEY_SEL
x
15
RW
x
16
RSVD
x
17
N/A
x
18
FMK_SEL
x
19
RW
x
20
RSVD
x
21
N/A
x
22
ZMK_SEL
x
RW
0
23
RW
24
RSVD
25
N/A
26
SMK_SEL
27
RW
28
RSVD
29
N/A
30
LOCK_NSC_CTL
31
NSC_KEY_CTL (0x44)
SK_VAL
66.4.4
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
密钥管理器 KEYM
描述
电池域密钥选择(如有电池域)
8
0: 使用加扰版本
ZMK_SEL
1: 使用原始密钥
熔丝对称密钥选择
4
0: 使用加扰版本
FMK_SEL
1: 使用另一加扰版本
安全状态对称密钥合成选择
2-0
bit0: 熔丝密钥, 0: 不参与, 1: 参与
KEY_SEL
bit1: 电池密钥, 0: 不参与, 1: 参与(如有电池域)
bit2: 软密钥 key 0: 不参与, 1: 参与
NSC_KEY_CTL 位域
RNG (0x48)
26
25
x
x
x
x
x
x
x
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
15
14
13
12
11
10
9
x
x
x
x
x
x
x
RW
N/A
x
16
0
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
0
RNG_XOR
27
RW
28
RSVD
29
N/A
30
RSVD
31
BLOCK_RNG_XOR
66.4.5
0
RNG [31:0]
位域
名称
描述
禁止修改 RNG_XOR 位,一旦置 1 不可清零,直到下次系统复位
BLOCK_RNG_XO
16
0: RNG_XOR 可修改
R
1: RNG_XOR 锁定
选择如何接收随机数
0
0: 替换软密钥
RNG_XOR
1: 和原有密钥异或
RNG 位域
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
968/1016
1
0
BLOCK_SMK_READ
29
RSVD
30
BLOCK_PK_READ
31
READ_CONTROL (0x4C)
RSVD
66.4.6
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
28
27
26
25
x
x
x
x
x
x
x
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
15
14
13
12
11
10
9
x
x
x
x
x
x
x
RW
16
0
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
READ_CONTROL [31:0]
位域
16
0
名称
BLOCK_PK_REA
D
BLOCK_SMK_RE
AD
描述
禁止读取私钥,一旦置 1 不可清零,直到下次系统复位
0: 私钥可读取
1: 私钥不可读取
禁止读取软密钥,一旦置 1 不可清零,直到下次系统复位
0: 密钥可读取
1: 密钥不可读取
READ_CONTROL 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
969/1016
0
RW
29
N/A
30
N/A
31
密钥管理器 KEYM
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电池域密钥模块 BKEY
电池域密钥模块 BKEY
67
本章节描述了电池域密钥模块 BKEY 的主要特性和功能。
67.1
特性总结
电池域密钥模块 BKEY 的主要特性:
● 支持 2 个 256 位密钥
● 密钥支持 ECC 校验
● 支持通过独立数据通路向加解密引擎输送密钥
● 支持在根据不同的安全模式输出不同密钥
● 支持密钥读保护和写保护
● 当安全规则破坏事件发生时,支持擦除密钥
67.2
功能描述
本章节描述电池域密钥模块 BKEY 的的功能。
电池域密钥模块 BKEY 支持 2 个 256 位的密钥,分别存放在 KEY0_DATA0 ∼ KEY0_DATA7,和 KEY1_DATA0
∼ KEY1_DATA7 中。
用户可以密钥初始化完成后对密钥进行读保护和写保护设置。ECC0 [WLOCK] 和 ECC1 [WLOCK] 位置 1 后,
KEY0 和 KEY1 就不能再修改。ECC0 [RLOCK] 和 ECC1 [RLOCK] 位置 1 后,KEY0 和 KEY1 就不能再读取。密
钥一旦设置为读保护,只有加解密引擎可以通过密钥模块的独立数据通路加载密钥,密钥对软件不再可见。
ECC0 和 ECC1 寄存器包含的密钥的 ECC 校验位,可以检测出三位错误。若 ECC 检验未通过,则密钥处于
保护状态,输出被关闭,加解密引擎被禁止。
ECC 算法如下 uint16_t ecc(uint8_t * key) uint16_t res = 0; int i; uint8_t val = 0; for(i = 0; i < 32; i ++) val =̂
key[i];
res =̂ (val » 0) 0x1; res =̂ (val » 2) 0x1; res =̂ (val » 4) 0x1; res =̂ (val » 6) 0x1;
res =̂ (val » 0) 0x2; res =̂ (val » 2) 0x2; res =̂ (val » 4) 0x2; res =̂ (val » 6) 0x2;
for (i = 0; i < 16; i ++) int rnd = i / 2; int rem = i
int val = 0;
for (int j = 0; j< 256; j ++) if((j / (2 « rnd)) val =̂ (key[j / 8] » (j res =̂ val « i;
return res;
注意:为防止恶意程序通过 ECC 获取密钥信息,在注入密钥之后务必打开读保护和写保护
非安全状态下,固定使用 KEY1。安全状态下,软件可以通过配置 SELECT 寄存器选择使用 KEY0 或者 KEY1。
● SELECT = 1’b0,使用 KEY0。
● SELECT = 1’b1,使用 KEY1。
67.3
BKEY 寄存器列表
BKEY 的寄存器列表如下:
BKEY base address: 0xF5048000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
970/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
电池域密钥模块 BKEY
名称
描述
复位值
0x0000
KEY[0][DATA][0]
密钥 0
0x00000000
0x0004
KEY[0][DATA][1]
密钥 0
0x00000000
0x0008
KEY[0][DATA][2]
密钥 0
0x00000000
0x000C
KEY[0][DATA][3]
密钥 0
0x00000000
0x0010
KEY[0][DATA][4]
密钥 0
0x00000000
0x0014
KEY[0][DATA][5]
密钥 0
0x00000000
0x0018
KEY[0][DATA][6]
密钥 0
0x00000000
0x001C
KEY[0][DATA][7]
密钥 0
0x00000000
0x0020
KEY[1][DATA][0]
密钥 1
0x00000000
0x0024
KEY[1][DATA][1]
密钥 1
0x00000000
0x0028
KEY[1][DATA][2]
密钥 1
0x00000000
0x002C
KEY[1][DATA][3]
密钥 1
0x00000000
0x0030
KEY[1][DATA][4]
密钥 1
0x00000000
0x0034
KEY[1][DATA][5]
密钥 1
0x00000000
0x0038
KEY[1][DATA][6]
密钥 1
0x00000000
0x003C
KEY[1][DATA][7]
密钥 1
0x00000000
0x0040
ECC[KEY0]
密钥 0 配置与校验和
0x00000000
0x0044
ECC[KEY1]
密钥 1 配置与校验和
0x00000000
0x0048
SELECT
密钥选择
0x00000000
表 242: BKEY 寄存器列表
寄存器详细信息描述
67.4
BKEY 的寄存器详细说明如下:
67.4.1
KEY[DATA] (0x0 + 0x20 * n + 0x4 * m)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DATA
31
0
KEY[DATA] [31:0]
位域
名称
31-0
DATA
描述
密钥数据
KEY[DATA] 位域
67.4.2
ECC (0x40 + 0x4 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
971/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
27
26
25
24
23
x
x
x
x
x
x
x
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
ECC
RW
0
28
RSVD
RLOCK
RW
0
29
N/A
WLOCK
30
RW
31
电池域密钥模块 BKEY
x
ECC [31:0]
位域
名称
描述
密钥 0 写保护
31
0: 允许写入
WLOCK
1: 禁止写入
密钥 0 读保护
30
0: 允许读取
RLOCK
1: 读出值为 0
15-0
密钥 0 的校验和
ECC
ECC 位域
SELECT (0x48)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
RW
N/A
RSVD
31
SELECT
67.4.3
SELECT [31:0]
位域
名称
描述
选择两个密钥之一使用,密钥 0 只有安全状态可见。非安全状态
0
SELECT
下总是使用密钥 1,设置无关。
0: 选择密钥 0(限安全状态),但是非安全下总是使用密钥 0
1: 选择密钥 1
SELECT 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
972/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电源管理域安全管理器 PSEC
电源管理域安全管理器 PSEC
68
本章节描述电源管理域安全管理器 PSEC 的特性和功能。
特性总结
68.1
电源管理域安全管理器 PSEC 的主要特性:
● 管理芯片的安全生命周期
● 管理电源管理域和系统电源域安全状态
● 监测电源管理域和系统电源域的安全事件
● 发生异常时,采取措施保护敏感信息
● 向电池域通报安全事件
功能描述
68.2
本章节描述电源管理域安全管理器 PSEC 的功能。
68.2.1
芯片生命周期
根据芯片生命周期的不同阶段,对芯片内部信息的读写进行管理。安全生命周期 LIFECYCLE 有 4 位,在 OTP
中冗余设置,分为 A、B 两份设置。
芯片生命周期的 4 位,描述如下:
● LIFECYCLE = 4’b0000,CREATE,保留。
● LIFECYCLE = 4’b0001,NONSEC,芯片经过测试并向用户交付的状态,用户在此状态进行开发。
– 芯片调试端口,JTAG 和 Debug 端口开放。
– 测试功能开放。
– BOOT ROM 的不执行安全启动,不验证用户代码镜像的签名。
– 密钥管理器及其关联的几个模块使用 NONSEC 密钥。
● LIFECYCLE = 4’b0011,SECURE,用户将敏感信息和代码注入系统,并对系统进行保护,防止功能
遭到破坏。
– 芯片调试端口,JTAG 和 Debug 端口关闭,调试鉴权成功后开放调试。
– 测试功能禁止。
– BOOT ROM 执行行安全启动,验证镜像的签名。如果验证失败,则不会运行镜像。
– 密钥管理器及其关联的几个模块使用 SEC 密钥。
● LIFECYCLE = 4’b0111,RETURN。该状态在保证用户信息不泄露的前提下重新允许测试功能。
– 芯片调试端口,JTAG 和 Debug 端口重新打开。
– 测试功能开放。
– BOOT ROM 不执行安全启动,不验证用户代码镜像的签名。
– 不再从 OTP 载入密钥。
● LIFECYCLE = 4’b1011,NONRET。禁止返厂测试,此状态的安全保护功能同安全状态,但是永久性
禁止测试功能。
– 在 SECURE 生命周期的基础上,芯片不再允许配置位返厂模式。
● LIFECYCLE = 4’b1111,SCRIBE。芯片废弃,销毁敏感信息,芯片在此状态下无法正常使用。
– 密钥管理器及其关联的几个模块不能再从 OTP 载入密钥,电池域的密钥也会擦除。
– ROM 不再引导系统。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
973/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电源管理域安全管理器 PSEC
注意:如果用户通过烧录 OTP 的 DEBUG_DISABLE,JTAG_DISABLE 和 TCU_DISABLE 位来强制关闭调试端口,
JTAG 端口和测试端口。那么无论芯片处于哪个生命周期,都无法再重新打开这些端口。
除了读取 OTP,用户可以从系统安全监视器的 LIFECYCLE 寄存器读取芯片的当前生命周期状态:
● LIFECYCLE[0],标志位置 1 表示未知生命周期。
● LIFECYCLE[1],标志位置 1 表示生命周期为 CREATE。保留。
● LIFECYCLE[2],标志位置 1 表示生命周期为 NONSEC。芯片开放。
● LIFECYCLE[3],标志位置 1 表示生命周期为 SECURE。芯片安全。
● LIFECYCLE[4],标志位置 1 表示生命周期为 RETURN。芯片返厂。
● LIFECYCLE[5],标志位置 1 表示生命周期为 NONRET。芯片禁止返厂。
● LIFECYCLE[6],标志位置 1 表示生命周期为 SCRIBE。芯片废弃。
● LIFECYCLE[7],标志位置 1 表示生命周期为 DEBATE。冗余状态发生矛盾。
68.2.2
电源管理域系统电源域安全状态管理
电源管理域安全管理器可以配置并监测电源管理域和系统电源域外设的安全状态。电源管理域和系统电源域
支持以下安全状态:
● INSPECT,
用以对系统安全相关组件自检,
该状态下密钥固定为 1F1E1D1C1B1A191817161514131211100F0E0D0C
● NONSEC,此状态主要保护 HPM 已安装密钥和识别号等安全基础安全信息。
● SECURE,此状态主要保护客户安装的密钥等资产。
● FAIL,该状态会禁止硬件加解密引擎。
当芯片从电池域复位或者电源管理域复位中释放时,安全状态最先处于 INSPECT 状态,BOOT ROM 会根据 OTP
中芯片的 LIFECYCLE 位设置,配置电源管理域系统电源域为 NONSEC 或者 SECURE 状态。
● 如果当前芯片的生命周期为 NONSEC,那么设置电源管理域系统电源域的安全状态为 NONSEC;
● 如果当前芯片的生命周期为 SEUCRE,那么设置电源管理域系统电源域的安全状态为 SECURE;
● 如果当前芯片的生命周期为 RETURN,那么设置电源管理域系统电源域的安全状态为 NONSEC;
● 如果当前芯片的生命周期为 NONRET,那么设置电源管理域系统电源域的安全状态为 SECURE;
● 如果当前芯片的生命周期为其他状态,那么设置电源管理域系统电源域的安全状态为 FAIL;
片上的密钥模块,如密钥管理器,会根据电源管理域系统电源域安全状态,提供 NONSEC 或者 SECURE 两套密
钥。而在其他的安全状态下,密钥管理器会封锁密钥。
芯片的系统电源域复位,不会复位电源管理域监视器的状态。
用户可以通过 SECURE_STATE 寄存器查询及配置电源管理域系统电源域的安全状态。
电源管理域安全管理器监视系统上若干安全相关的事件,有关具体事件列表,请查阅系统安全配置的相关章
节。
注意,电源管理域安全管理器在 SECURE 状态和 NONSEC 状态下都可以监视并响应安全事件,并在安全事件发生
时,将安全状态置为 FAIL。
用户可以通过 VIOLATION_CONFIG 寄存器配置监视器是否响应检测的安全事件:
● NSC_VIO_CFG 位域包含各个安全事件的响应使能位,置 0 表示对应的安全事件在 NONSEC 状态下,
不视为破坏安全规则,置 1 表示对应的安全事件在 NONSEC 状态下,视为破坏安全规则。安全状态会
因之转为 FAIL。
● LOCK_NSC 位为 NONSEC 配置锁定位,置 1 即锁定 NSC_VIO_CFG 位域
● SEC_VIO_CFG 位域包含各个安全事件的响应使能位,置 0 表示对应的安全事件在 SECURE 状态下,
不视为破坏安全规则,置 1 表示对应的安全事件在 SECURE 状态下,视为破坏安全规则。安全状态会
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
974/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电源管理域安全管理器 PSEC
因之转为 FAIL。
● LOCK_SEC 位为 SECURE 配置锁定位,置 1 即锁定 SEC_VIO_CFG 位域
用户可以通过 EVENT 寄存器的各个标志位,查询是否检测到安全事件。
当电源管理域安全状态为 FAIL 时,PSEC 会禁止敏感信息的访问,并且禁止加解密引擎。
68.2.3
安全事件通报
电源管理域和电池域各有一个安全管理器,独立运行,分别管理电源管理域系统电源域和电池域安全系统的
状态。可以通过 ESCALATE_CONFIG 寄存器配置电源管理域安全监视器是否向电池域安全管理器通报安全事件,
允许电池域的安全管理器作出相应保护。
● NSC_VIO_CFG 位域包含各个安全事件的通报使能,置 1 时,电池域处于 NONSEC 模式下,响应该安
全事件。
● SEC_VIO_CFG 位域包含各个安全事件的通报使能,置 1 时,电池域处于 SECURE 模式下,响应该安
全事件。
用户可以通过 EVENT 寄存器的各个标志位,查询是否发生安全事件通报。
PSEC 寄存器列表
68.3
PSEC 的寄存器列表如下:
PSEC base address: 0xF40CC000
地址偏移
名称
描述
复位值
0x0000
SECURE_STATE
安全状态
0x00000000
0x0004
SECURE_STATE_CONFIG
安全状态机配置
0x00000000
0x0008
VIOLATION_CONFIG
安全违例配置
0x00000000
0x000C
ESCALATE_CONFIG
安全事件通报配置
0x00000000
0x0010
EVENT
事件通报状态
0x00000000
0x0014
LIFECYCLE
生命周期
0x00000000
表 243: PSEC 寄存器列表
PSEC 寄存器描述
68.4
PSEC 的寄存器详细说明如下:
SECURE_STATE (0x0)
x
x
x
x
0
0
15
14
13
12
x
x
x
x
11
10
9
8
x
x
x
x
7
6
5
4
0
0
0
0
3
2
x
x
SECURE_STATE [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
975/1016
1
0
x
x
RSVD
x
16
N/A
x
N/A
x
17
PMIC_INS
x
18
PMIC_SEC
x
19
RW
x
20
RW
x
21
PMIC_NSC
x
22
RW
x
23
PMIC_FAIL
x
24
RW
25
RSVD
26
N/A
27
ALLOW_SEC
28
RO
29
ALLOW_NSC
30
RSVD
31
RO
68.4.1
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
电源管理域安全管理器 PSEC
描述
允许非安全状态
17
0: 系统安全状态不可进入或停留在非安全状态,此时从
ALLOW_NSC
INSPECT 跳转到非安全状态的请求会使状态机进入失败状态
1: 系统安全状态允许进入或停留在非安全状态
允许非安全状态
16
0: 系统安全状态不可进入或停留在安全状态,此时从 INSPECT
ALLOW_SEC
跳转到安全状态的请求会使状态机进入失败状态
1: 系统安全状态允许进入或停留在安全状态
状态机状态,写 1 请求进入失效状态
7
0: 状态机不处于失败状态
PMIC_FAIL
1: 状态机处于失败状态
状态机状态
6
0: 状态机不处于非安全状态
PMIC_NSC
1: 状态机处于非安全状态
状态机状态
5
0: 状态机不处于安全状态
PMIC_SEC
1: 状态机处于安全状态
状态机状态
4
0: 状态机不处于检查状态
PMIC_INS
1: 状态机处于检查状态
SECURE_STATE 位域
SECURE_STATE_CONFIG (0x4)
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
2
RW
N/A
LOCK
3
x
0
1
x
x
SECURE_STATE_CONFIG [31:0]
位域
名称
描述
状态机允许恢复锁定,锁定后锁定位会一同锁定,直至下一次复
3
LOCK
位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
976/1016
0
ALLOW_RESTART
28
RW
29
RSVD
30
RSVD
31
N/A
68.4.2
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
描述
允许状态机从 FAIL 回到 INSPECT
ALLOW_RESTAR
0
电源管理域安全管理器 PSEC
0: 不允许,只可以通过复位恢复状态机
T
1: 允许,软件可以把状态机从 FAIL 切换至 INSPECT
SECURE_STATE_CONFIG 位域
28
27
26
25
24
0
0
0
0
0
0
0
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
0
0
0
0
0
0
0
LOCK_SEC
15
RW
RW
RW
0
23
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
SEC_VIO_CFG
29
NSC_VIO_CFG
30
LOCK_NSC
31
VIOLATION_CONFIG (0x8)
RW
68.4.3
0
VIOLATION_CONFIG [31:0]
位域
名称
描述
事件非安全状态违例配置锁定,锁定后锁定位会一同锁定,直至
31
LOCK_NSC
下一次复位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为非安全状态事件向电池域(如有电池域)违例,
30-16
NSC_VIO_CFG
每一位代表一个事件
0: 事件不向电池域违例
1: 事件向电池域违例
事件安全状态违例配置锁定,锁定后锁定位会一同锁定,直至下
15
LOCK_SEC
一次复位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为安全状态事件向电池域(如有电池域)违例,
14-0
SEC_VIO_CFG
每一位代表一个事件
0: 事件不向电池域违例
1: 事件向电池域违例
VIOLATION_CONFIG 位域
68.4.4
ESCALATE_CONFIG (0xC)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
977/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
27
26
25
24
0
0
0
0
0
0
0
23
21
20
19
18
17
16
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
0
0
0
0
0
0
0
LOCK_SEC
15
RW
RW
RW
0
22
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
SEC_VIO_CFG
28
RW
29
NSC_VIO_CFG
30
LOCK_NSC
31
电源管理域安全管理器 PSEC
0
ESCALATE_CONFIG [31:0]
位域
名称
描述
事件非安全状态通报配置锁定,锁定后锁定位会一同锁定,直至
31
下一次复位
LOCK_NSC
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为非安全状态事件向电池域(如有电池域)通报,
30-16
每一位代表一个事件
NSC_VIO_CFG
0: 事件不向电池域通报
1: 事件向电池域通报
事件安全状态通报配置锁定,锁定后锁定位会一同锁定,直至下
15
一次复位
LOCK_SEC
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为安全状态事件向电池域(如有电池域)通报,
14-0
每一位代表一个事件
SEC_VIO_CFG
0: 事件不向电池域通报
1: 事件向电池域通报
ESCALATE_CONFIG 位域
EVENT (0x10)
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
0
0
0
0
0
0
0
x
x
x
x
x
x
8
7
6
5
4
x
x
x
x
x
x
RO
N/A
RSVD
9
0
3
2
0
0
EVENT [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
978/1016
1
0
RSVD
26
N/A
27
PMIC_ESC_SEC
28
RO
29
PMIC_ESC_NSC
30
EVENT
31
RO
68.4.5
x
x
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
电源管理域安全管理器 PSEC
描述
事件状态,每一位代表一个事件,1 表示发生该事件
9 位:TCK 出现翻转
8 位:JTAG 出现操作
7 位:CPU1 正在进入或处于调试状态(如有 CPU1)
6 位:CPU0 正在进入或处于调试状态
31-16
5 位:电源域看门狗复位(如果该监视器位于电源域)
EVENT
4 位:电源域电压过低
3 位:毛刺监测 1 检出毛刺
2 位:毛刺监测 0 检出毛刺
1 位:时钟监测 1 检出异常
0 位:时钟监测 0 检出异常
非安全状态事件通报
3
0:无事件通报
PMIC_ESC_NSC
1:事件通报给电池域
安全状态事件通报
2
PMIC_ESC_SEC
0:无事件通报
1:事件通报给电池域(如有电池域)
EVENT 位域
LIFECYCLE (0x14)
30
29
28
27
26
25
24
23
22
21
20
x
x
x
x
x
x
x
x
x
x
x
x
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
3
2
1
0
0
0
0
0
RO
N/A
RSVD
31
LIFECYCLE
68.4.6
x
LIFECYCLE [31:0]
位域
名称
描述
生命周期
7 位: 矛盾,
6 位: 销毁,
5 位: 禁止返厂,
7-0
LIFECYCLE
4 位: 返厂,
3 位: 安全,
2 位: 非安全,
1 位: 生产,
0 位: 未知
LIFECYCLE 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
979/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电源管理域安全管理器 PSEC
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
980/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电源管理域监视器 PMON
电源管理域监视器 PMON
69
本章节描述了电源管理域监视器 PMON 的主要特性和功能。
特性总结
69.1
电源管理域监视器 PMON 是电源管理域安全管理器的一部分,它可以用来配置电源管理域的供电和时钟监
视电路,它的主要特性:
● 2 个毛刺检测电路
● 2 个时钟故障检测电路
● 支持产生中断
功能描述
69.2
本章节描述电源管理域监视器 PMON 的功能。
69.2.1
芯片生命周期
电源管理域监视器包含电源和时钟故障检测电路,检测电路的作用是监测电源和时钟上意外注入的毛刺,并
通知安全管理器。
电源管理域监视器包含 2 个独立的电源毛刺检测模块和 2 个独立的时钟故障检测模块。
● 毛刺检测模块检测 VPMC 引脚上的电源输入以及 OSC24M 的时钟噪声
● 时钟故障检测模块检测外部时钟 OSC24M 或内部 RC24M 振荡器
MONITOR.GLITCH0 和 MONITOR.GLITCH1 分别对应 2 个电源毛刺检测模块,通过各自的 CONTROL 寄
存器进行配置:
● CONTROL[ENABLE] 位置 0 时,检测模块关闭,置 1 时检测模块进行监测。
● CONTROL[ACTIVE] 位置 0 时,设置为被动检测,置 1 时,设置为主动检测
MONITOR.CLOKC0 和 MONITOR.CLOKC1 分别对应 2 个时钟故障检测模块,通过各自的 CONTROL 寄存
器进行配置:
● CONTROL[ENABLE] 位置 0 时,检测模块关闭,置 1 时检测模块进行监测。
各个检测模块可以独立地检测电源毛刺或者时钟故障,并在发现异常时,作为安全事件通知电源管理域安全
管理器 PSEC,PSEC 会根据配置予以响应。
69.2.2
中断
电源监视器也可以配置在检测到电源毛刺或者时钟故障时生成中断请求。
IRQ_ENABLE 寄存器包含了相应的中断使能位。
IRQ_FLAG 寄存器可以查询中断的标志位。
69.3
PMON 寄存器列表
PMON 的寄存器列表如下:
PMON base address: 0xF40D0000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
981/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
电源管理域监视器 PMON
名称
描述
复位值
0x0000
MONITOR[GLITCH0][CONTROL]
时钟和电源毛刺检测器 0 设置
0x00000000
0x0004
MONITOR[GLITCH0][STATUS]
时钟和电源毛刺检测器 0 状态
0x00000000
0x0008
MONITOR[GLITCH1][CONTROL]
时钟和电源毛刺检测器 1 设置
0x00000000
0x000C
MONITOR[GLITCH1][STATUS]
时钟和电源毛刺检测器 1 状态
0x00000000
0x0010
MONITOR[CLOCK0][CONTROL]
时钟停止检测器 0 设置
0x00000000
0x0014
MONITOR[CLOCK0][STATUS]
时钟停止检测器 0 状态
0x00000000
0x0018
MONITOR[CLOCK1][CONTROL]
时钟停止检测器 1 设置
0x00000000
0x001C
MONITOR[CLOCK1][STATUS]
时钟停止检测器 1 状态
0x00000000
0x0040
IRQ_FLAG
0x00000000
0x0044
IRQ_ENABLE
0x00000000
表 244: PMON 寄存器列表
PMON 寄存器描述
69.4
PMON 的寄存器详细说明如下:
MONITOR[CONTROL] (0x0 + 0x8 * n)
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
x
x
0
x
x
x
0
11
10
9
8
7
6
5
4
3
2
1
0
3
RW
N/A
x
4
2
1
0
ENABLE
27
RW
28
RSVD
29
N/A
30
RSVD
31
ACTIVE
69.4.1
MONITOR[CONTROL] [31:0]
位域
名称
描述
检测器工作模式选择.
4
0: 被动模式
ACTIVE
1: 主动模式
使能检测器
0
0: 检测器关闭
ENABLE
1: 检测器运行
MONITOR[CONTROL] 位域
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
FLAG
29
RW
30
RSVD
31
MONITOR[STATUS] (0x4 + 0x8 * n)
N/A
69.4.2
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
982/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电源管理域监视器 PMON
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
1
0
MONITOR[STATUS] [31:0]
位域
名称
描述
检测器状态
0
0: 正常
FLAG
1: 异常
MONITOR[STATUS] 位域
69.4.3
IRQ_FLAG (0x40)
30
29
28
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
1
0
0
0
RW
N/A
FLAG
RSVD
31
x
IRQ_FLAG [31:0]
位域
名称
描述
中断标志,写 1 清
3-0
0: 为发生中断
FLAG
1: 发生中断
IRQ_FLAG 位域
IRQ_ENABLE (0x44)
30
29
28
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
RW
N/A
RSVD
31
ENABLE
69.4.4
x
IRQ_ENABLE [31:0]
位域
名称
描述
中断使能,每一位控制一个检测器
3-0
ENABLE
0: 禁止中断
1: 使能中断
IRQ_ENABLE 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
983/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电池备份域安全管理器 BSEC
电池备份域安全管理器 BSEC
70
本章节描述了电池备份域安全管理器 BSEC 的主要特性和功能。
特性总结
70.1
电池备份域安全管理器 BSEC 的主要特性:
● 管理电池备份域的安全状态
● 对不同安全状态制定不同安全规则
● 监测电池备份域的安全事件
● 发生安全事件时,采取措施保护敏感信息
● 支持向电源管理域安全管理器 PSEC 通报安全事件
功能描述
70.2
本章节描述电池备份域安全管理器 BSEC 的功能。
70.2.1
电池备份域安全状态管理
电池备份域安全管理器可以配置并监测电池备份域外设的安全状态。电池备份域支持以下安全状态:
● INSPECT
● NONSEC
● SECURE
● FAIL
用户可以通过 SECURE_STATE 寄存器查询及配置电池备份域的安全状态。
电池备份域的安全状态,由用户软件配置。当芯片从电池备份域上电复位 (VBAT POR) 中释放时,最先处于
INSPECT 状态,用户可以按照需要,在初始化电池备份域密钥模块后,配置电池备份域安全状态为 NONSEC 或
者 SECURE 状态。
一旦电池备份域的安全状态及其监视器配置完成,除非发生电池备份域上电复位(VBAT POR)
,即使发生电
源域或核心域的复位,甚至电源域核心域掉电,其工作都不受影响。
注意,电池备份域安全管理器在 SECURE 状态和 NONSEC 状态下都可以监视并响应安全事件,并在安全事件发生
时,将安全状态置为 FAIL。
用户可以通过 VIOLATION_CONFIG 寄存器配置监视器是否响应检测的安全事件:
● NSC_VIO_CFG 位域包含各个安全事件的响应使能位,置 0 表示对应的安全事件在 NONSEC 状态下,
不视为破坏安全规则,置 1 表示对应的安全事件在 NONSEC 状态下,视为破坏安全规则。安全状态会
因之转为 FAIL。
● LOCK_NSC 位为 NONSEC 配置锁定位,置 1 即锁定 NSC_VIO_CFG 位域
● SEC_VIO_CFG 位域包含各个安全事件的响应使能位,置 0 表示对应的安全事件在 SECURE 状态下,
不视为破坏安全规则,置 1 表示对应的安全事件在 SECURE 状态下,视为破坏安全规则。安全状态会
因之转为 FAIL。
● LOCK_SEC 位为 SECURE 配置锁定位,置 1 即锁定 SEC_VIO_CFG 位域
用户可以通过 EVENT 寄存器的各个标志位,查询是否检测到安全事件。
当电池备份域安全状态为 FAIL 时,BSEC 清除电池备份域内存储的密钥。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
984/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
70.2.2
电池备份域安全管理器 BSEC
安全事件通报
本产品支持 2 套安全管理器:电池备份域安全管理器和电源管理域安全管理器,分别反映了电池备份域核心
域和电源管理域安全系统的状态。这些不同区域安全系统的状态是相互独立的,其中一个安全状态转为 FAIL 并不
影响其他的安全状态。用户可以 ESCALATE_CONFIG 寄存器配置电池备份域安全监视器是否向电源域安全管理
器通报安全事件,一旦设置通报,在检测到安全事件时,全部安全管理器的安全状态都会转为 FAIL
● NSC_VIO_CFG 位域包含各个安全事件的通报使能位,置 1 时,NONSEC 模式下,安全管理器会通报
对应安全事件
● SEC_VIO_CFG 位域包含各个安全事件的通报使能位,置 1 时,SECURE 模式下,安全管理器会通报
对应安全事件
用户可以通过 EVENT 寄存器的各个标志位,查询是否发生安全事件通报。
BSEC 寄存器列表
70.3
BSEC 的寄存器列表如下:
BSEC base address: 0xF5040000
地址偏移
名称
描述
复位值
0x0000
SECURE_STATE
安全状态
0x00000000
0x0004
SECURE_STATE_CONFIG
安全状态机配置
0x00000000
0x0008
VIOLATION_CONFIG
安全违例配置
0x00000000
0x000C
ESCALATE_CONFIG
安全事件通报配置
0x00000000
0x0010
EVENT
事件通报状态
0x00000000
表 245: BSEC 寄存器列表
BSEC 寄存器描述
70.4
BSEC 的寄存器详细说明如下:
SECURE_STATE (0x0)
x
x
x
x
x
x
N/A
x
17
16
0
0
15
14
13
12
11
10
x
x
x
x
x
x
9
8
7
6
5
4
x
x
x
x
x
x
3
2
1
0
BATT_INS
x
18
RW
x
19
BATT_SEC
x
20
BATT_NSC
x
21
RW
x
22
RW
x
23
BATT_FAIL
x
24
RW
25
RSVD
26
N/A
27
ALLOW_SEC
28
RO
29
ALLOW_NSC
30
RSVD
31
RO
70.4.1
0
0
0
0
SECURE_STATE [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
985/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
电池备份域安全管理器 BSEC
描述
允许非安全状态
17
0: 系统安全状态不可进入或停留在非安全状态,此时从
ALLOW_NSC
INSPECT 跳转到非安全状态的请求会使状态机进入失败状态
1: 系统安全状态允许进入或停留在非安全状态
允许非安全状态
16
0: 系统安全状态不可进入或停留在安全状态,此时从 INSPECT
ALLOW_SEC
跳转到安全状态的请求会使状态机进入失败状态
1: 系统安全状态允许进入或停留在安全状态
状态机状态,写 1 请求进入失效状态
3
0: 状态机不处于失败状态
BATT_FAIL
1: 状态机处于失败状态
状态机状态
2
0: 状态机不处于非安全状态
BATT_NSC
1: 状态机处于非安全状态
状态机状态
1
0: 状态机不处于安全状态
BATT_SEC
1: 状态机处于安全状态
状态机状态
0
0: 状态机不处于检查状态
BATT_INS
1: 状态机处于检查状态
SECURE_STATE 位域
SECURE_STATE_CONFIG (0x4)
27
26
25
24
23
22
21
20
19
18
x
x
x
x
x
x
x
x
x
x
x
x
x
x
17
16
15
14
13
12
11
10
9
8
7
6
5
4
x
x
x
x
x
x
x
x
x
x
x
x
x
2
RW
N/A
LOCK
3
x
0
1
x
x
SECURE_STATE_CONFIG [31:0]
位域
名称
描述
状态机允许恢复锁定,锁定后锁定位会一同锁定,直至下一次复
3
LOCK
位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
986/1016
0
ALLOW_RESTART
28
RW
29
RSVD
30
RSVD
31
N/A
70.4.2
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
描述
允许状态机从 FAIL 回到 INSPECT
ALLOW_RESTAR
0
电池备份域安全管理器 BSEC
0: 不允许,只可以通过复位恢复状态机
T
1: 允许,软件可以把状态机从 FAIL 切换至 INSPECT
SECURE_STATE_CONFIG 位域
28
27
26
25
24
0
0
0
0
0
0
0
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
0
0
0
0
0
0
0
LOCK_SEC
15
RW
RW
RW
0
23
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
SEC_VIO_CFG
29
NSC_VIO_CFG
30
LOCK_NSC
31
VIOLATION_CONFIG (0x8)
RW
70.4.3
0
VIOLATION_CONFIG [31:0]
位域
名称
描述
事件非安全状态违例配置锁定,锁定后锁定位会一同锁定,直至
31
LOCK_NSC
下一次复位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为非安全状态事件向电池域违例,每一位代表一
个事件
0: 事件不向电池域违例
30-16
NSC_VIO_CFG
1: 事件向电池域违例
位 0:检测到毛刺
位 1:时钟停止
位 2:侵入检测
位 4:单向计数器满
事件安全状态违例配置锁定,锁定后锁定位会一同锁定,直至下
15
LOCK_SEC
一次复位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为安全状态事件向电池域违例,每一位代表一个
事件
0: 事件不向电池域违例
14-0
SEC_VIO_CFG
1: 事件向电池域违例
位 0:检测到毛刺
位 1:时钟停止
位 2:侵入检测
位 4:单向计数器满
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
987/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
电池备份域安全管理器 BSEC
描述
VIOLATION_CONFIG 位域
28
27
26
25
24
0
0
0
0
0
0
0
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
14
13
12
11
10
9
8
0
0
0
0
0
0
0
LOCK_SEC
15
RW
RW
RW
0
23
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
SEC_VIO_CFG
29
NSC_VIO_CFG
30
LOCK_NSC
31
ESCALATE_CONFIG (0xC)
RW
70.4.4
0
ESCALATE_CONFIG [31:0]
位域
名称
描述
事件非安全状态通报配置锁定,锁定后锁定位会一同锁定,直至
31
LOCK_NSC
下一次复位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为非安全状态事件向电池域通报,每一位代表一
个事件
0: 事件不向电池域通报
30-16
NSC_VIO_CFG
1: 事件向电池域通报
位 0:检测到毛刺
位 1:时钟停止
位 2:侵入检测
位 4:单向计数器满
事件安全状态通报配置锁定,锁定后锁定位会一同锁定,直至下
15
LOCK_SEC
一次复位
0: 未锁定,允许配置修改
1: 锁定,配置不可更改
配置事件是否作为安全状态事件向电池域通报,每一位代表一个
事件
0: 事件不向电池域通报
14-0
SEC_VIO_CFG
1: 事件向电池域通报
位 0:检测到毛刺
位 1:时钟停止
位 2:侵入检测
位 4:单向计数器满
ESCALATE_CONFIG 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
988/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
EVENT (0x10)
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
0
0
0
0
0
0
0
x
x
x
x
x
x
x
7
6
5
4
3
2
x
x
x
x
x
x
x
RO
N/A
RSVD
8
0
EVENT [31:0]
位域
名称
描述
事件状态,每一位代表一个事件,1 表示发生该事件
位 0:检测到毛刺
31-16
EVENT
位 1:时钟停止
位 2:侵入检测
位 4:单向计数器满
非安全状态事件通报
1
BATT_ESC_NSC
0:无事件通报
1:事件通报给电池域
安全状态事件通报
0
BATT_ESC_SEC
0:无事件通报
1:事件通报给电池域
EVENT 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
989/1016
1
0
BATT_ESC_SEC
28
RO
29
BATT_ESC_NSC
30
EVENT
31
RO
70.4.5
电池备份域安全管理器 BSEC
0
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
电池备份域监视器 BMON
电池备份域监视器 BMON
71
本章节描述了电池备份域监视器 BMON 的主要特性和功能。
特性总结
71.1
电池备份域监视器 BMON 是电池备份域安全管理器的一部分,它可以用来配置电池备份域的供电和时钟监
视电路,它的主要特性:
● 1 套毛刺检测电路
● 1 套时钟故障检测电路
● 禁止测试
功能描述
71.2
本章节描述电池备份域监视器 BMON 的功能。
71.2.1
芯片生命周期
电池备份域监视器包含电源和时钟故障检测电路,这些检测电路的作用是防止攻击者通过在电源和时钟上恶
意注入毛刺来使安全模块失效。
电池备份域监视器包含 1 套电源毛刺检测模块和 1 套时钟故障检测模块。
● 毛刺检测模块检测 VPMC 引脚上的电源输入以及 OSC32K 的时钟噪声
● 时钟故障检测模块检测外部时钟 OSC32K
MONITOR.GLITCH0 对应电源毛刺检测模块,可以通过 CONTROL 寄存器进行配置:
● CONTROL[ENABLE] 位置 0 时,检测模块关闭,置 1 时检测模块打开。
● CONTROL[ACTIVE] 位置 0 时,设置为被动检测,置 1 时,设置为主动检测
MONITOR.CLOKC0 对应时钟故障检测模块,可以通过 CONTROL 寄存器进行配置:
● CONTROL[ENABLE] 位置 0 时,检测模块关闭,置 1 时检测模块打开。
检测模块在发现异常时,作为安全事件通知电池备份域安全管理器 BSEC,BSEC 会根据配置予以响应。
71.2.2
测试端口配置
软件可通过设置电池备份域监视器的 TESET_MODE 寄存器的 DISABLE 可以用来主动禁止测试,以防止通
过测试模式获取电池域写入的密钥相关信息。该设置寄存器状态保留在电池备份域,具有自锁定功能,该设置的
复位条件和电池内存储的密钥相同。
71.3
BMON 寄存器列表
BMON 的寄存器列表如下:
BMON base address: 0xF504C000
地址偏移
名称
描述
复位值
0x0000
MONITOR[GLITCH0][CONTROL]
时钟和电源毛刺检测器 0 设置
0x00000000
0x0004
MONITOR[GLITCH0][STATUS]
时钟和电源毛刺检测器 0 状态
0x00000000
0x0010
MONITOR[CLOCK0][CONTROL]
时钟停止检测器 0 设置
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
990/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
0x0014
电池备份域监视器 BMON
名称
描述
复位值
MONITOR[CLOCK0][STATUS]
时钟停止检测器 0 状态
0x00000000
表 246: BMON 寄存器列表
71.3.1
BMON 寄存器描述
BMON 的寄存器详细说明如下:
MONITOR[CONTROL] (0x0 + 0x10 * n)
26
25
24
23
22
21
20
19
x
x
x
x
x
x
x
x
x
x
x
x
x
18
17
16
15
14
13
12
11
10
9
8
7
6
5
x
x
x
x
x
x
x
x
x
x
x
x
x
0
x
x
x
0
0
3
RW
N/A
x
4
2
1
0
ENABLE
27
RW
28
RSVD
29
N/A
30
RSVD
31
ACTIVE
71.3.2
MONITOR[CONTROL] [31:0]
位域
名称
描述
检测器工作模式选择.
4
0: 被动模式
ACTIVE
1: 主动模式
使能检测器
0
0: 检测器关闭
ENABLE
1: 检测器运行
MONITOR[CONTROL] 位域
71.3.3
MONITOR[STATUS] (0x4 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
RW
N/A
FLAG
RSVD
31
MONITOR[STATUS] [31:0]
位域
名称
描述
检测器状态
0
FLAG
0: 正常
1: 异常
MONITOR[STATUS] 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
991/1016
0
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
侵入检测模块 TAMP
侵入检测模块 TAMP
72
本章节描述了侵入检测模块 TAMP 的主要特性和功能。
特性总结
72.1
侵入检测模块 TAMP 是电池备份域安全管理器的一部分,它的主要特性:
● 支持多达 8 个侵入检测引脚
● 支持主动或被动侵入检测
● 支持侵入检测引脚配置数字滤波器
● 支持主动侵入检测配置多项式
功能描述
72.2
本章节描述侵入检测模块 TAMP 的功能。
72.2.1
侵入检测引脚配置
侵入检测模块支持多达 8 个侵入检测引脚。这 8 个引脚,最多可以配置为 4 对主动侵入检测引脚,或者 8 个
被动侵入检测引脚。
用户需要通过 TAMPx_CONTROL [ENABLE] 位打开侵入检测功能。
用户通过 TAMPx_CONTROL[ACTIVE] 位,配置侵入检测引脚的工作模式,
● 置 0 时,为被动模式,即 TAMP[2*x] 和 TAMP[2*x + 1] 这两个引脚都为被动侵入检测引脚
● 置 1 时,为主动模式。即 TAMP[2*x] 和 TAMP[2*x + 1] 这两个引脚组成一对主动侵入引脚
被动侵入检测模式是指,
成对的 2 个 TAMP 引脚都作为输入引脚,
监测侵入信号。
可以通过 TAMPx_CONTROL
[VALUE] 位配置侵入检测引脚的常态电平:
● 置 0 时,引脚检测到低电平代表正常,高电平代表侵入事件
● 置 1 时,引脚检测到高电平代表正常,低电平代表侵入事件
主动侵入检测模式是指,成对的 2 个 TAMPER 引脚一个作为输出,另一个作为输入。输出引脚持续输出特
定模式的序列,输入引脚持续监测,当收到数据序列与输出序列不一致时,代表侵入事件发生。
用户可以通过 TAMPx_POLY 寄存器配置输出数据序列的多项式,TAMPx_POLY 寄存器只能写一次,写入后
自动打开寄存器读保护。
侵入检测引脚可以配置数字滤波器,
TAMPx_CONTROL [BYPASS] 位置 0,
表示打开数字滤波器。
TAMPx_CONTROL
[FLITER] 位可以配置滤波器的长度。
TAMPx_CONTROL [LOCK] 位可以锁定寄存器的配置,一旦把该位置 1,寄存器配置只有到下一次电池备份
域复位后,才能再更改。将电池备份域断电均可复位侵入检测模块以及锁定寄存器,缺省状态下 RESETN 引脚也
可以复位侵入检测模块以及锁定寄存器,软件把 POR_CONFIG[RETENTION] 位置 1 后,侵入检测模块以及锁定
寄存器则不受 RESETN 引脚影响。
72.2.2
中断
一旦检测到侵入事件,TAMP_FLAG 寄存器的对应标志位会置 1,在侵入信号消除后,对标志位写 1 可以清
除标志位。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
992/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
侵入检测模块 TAMP
用户通过配置 IRQ_EN 寄存器,来打开 TAMPER 的中断,在 TAMP_FLAG 寄存器内的标志位置 1 时,如果
对应的 IRQ_EN 位也置 1,就能生成中断。IRQ_EN [LOCK] 位可以锁定寄存器的配置,一旦把该位置 1,寄存器
配置只有到下一次电池备份域上电复位 VBAT_POR 后,才能再更改。
TAMP 寄存器列表
72.3
TAMP 的寄存器列表如下:
TAMP base address: 0xF5050000
地址偏移
名称
描述
复位值
0x0000
TAMP[TAMP0][CONTROL]
侵入检测 0 控制寄存器
0x00000000
0x0004
TAMP[TAMP0][POLY]
侵入检测 0LFSR 多项式
0x00000000
0x0008
TAMP[TAMP0][LFSR]
侵入检测 0LFSR 移位寄存器
0x00000000
0x0010
TAMP[TAMP1][CONTROL]
侵入检测 1 控制寄存器
0x00000000
0x0014
TAMP[TAMP1][POLY]
侵入检测 1LFSR 多项式
0x00000000
0x0018
TAMP[TAMP1][LFSR]
侵入检测 1LFSR 移位寄存器
0x00000000
0x0020
TAMP[TAMP2][CONTROL]
侵入检测 2 控制寄存器
0x00000000
0x0024
TAMP[TAMP2][POLY]
侵入检测 2LFSR 多项式
0x00000000
0x0028
TAMP[TAMP2][LFSR]
侵入检测 2LFSR 移位寄存器
0x00000000
0x0030
TAMP[TAMP3][CONTROL]
侵入检测 3 控制寄存器
0x00000000
0x0034
TAMP[TAMP3][POLY]
侵入检测 3LFSR 多项式
0x00000000
0x0038
TAMP[TAMP3][LFSR]
侵入检测 3LFSR 移位寄存器
0x00000000
0x0080
TAMP_FLAG
侵入检测标志
0x00000000
0x0084
IRQ_EN
侵入检测中断使能
0x00000000
表 247: TAMP 寄存器列表
TAMP 寄存器描述
72.4
TAMP 的寄存器详细说明如下:
13
0
x
x
x
12
11
10
9
0
x
x
0
8
7
6
x
0
0
0
5
4
0
0
3
2
1
0
ENABLE
14
RW
0
15
ACTIVE
0
RW
0
16
RECOVER
x
N/A
x
17
RW
x
18
RW
x
19
RSVD
x
20
N/A
x
21
SPEED
x
22
RW
x
23
VALUE
x
24
RW
x
RW
0
25
RSVD
26
N/A
27
FILTER
28
RW
29
RSVD
30
LOCK
31
TAMP[CONTROL] (0x0 + 0x10 * n)
BYPASS
72.4.1
x
0
0
0
TAMP[CONTROL] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
993/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
侵入检测模块 TAMP
描述
锁定侵入检测设置
31
0: 设置可以更改
LOCK
1: 设置不可更改
旁路告警滤波器
20
0: 使用滤波器
BYPASS
1: 不使用滤波器
滤波器长度
0: 1 个周期
19-16
1: 2 个周期
FILTER
2: 4 个周期
...
被动模式下的期望值
9-8
位 0:低位期望值
VALUE
位 1:高位期望值
主动模式下变换速度
0: 1 次/秒
7-4
1: 2 次/秒
SPEED
...
15: 32768 次/秒
LFSR 出现 0 值时自动恢复
2
0: 不自动恢复
RECOVER
1: 自动恢复
模式选择
1
0: 被动模式
ACTIVE
1: 主动模式
使能
0
0: 禁止
ENABLE
1: 工作
TAMP[CONTROL] 位域
72.4.2
TAMP[POLY] (0x4 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
POLY
31
0
TAMP[POLY] [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
994/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
侵入检测模块 TAMP
描述
主动模式下的反馈多项式,寄存器只能一次性写入,写入后读出
31-0
值为 1.
POLY
多项式示例:0x80200003, 0x3ACB3D2D
TAMP[POLY] 位域
72.4.3
TAMP[LFSR] (0x8 + 0x10 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
WO
LFSR
31
0
TAMP[LFSR] [31:0]
位域
名称
31-0
LFSR
描述
主动模式下用于输出的移位寄存器,该寄存器只可写入,读出值
为0
TAMP[LFSR] 位域
72.4.4
TAMP_FLAG (0x80)
30
29
28
27
26
25
24
23
22
x
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
5
4
3
2
1
0
0
0
0
0
0
0
2
1
0
RW
N/A
FLAG
RSVD
31
x
TAMP_FLAG [31:0]
位域
名称
11-0
FLAG
描述
侵入标志位,每位代表一个侵入检测引脚,写 1 清
注意,只有侵入检测不到错误时,标志才有可能被清掉。
TAMP_FLAG 位域
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
IRQ_EN
LOCK
31
IRQ_EN (0x84)
RSVD
72.4.5
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
995/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
29
28
27
26
25
24
23
22
0
x
x
x
x
x
x
x
x
x
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
x
x
x
x
x
x
x
x
x
0
0
0
0
0
0
x
5
4
3
2
1
0
0
0
0
0
0
0
RW
N/A
30
RW
31
侵入检测模块 TAMP
IRQ_EN [31:0]
位域
名称
描述
锁定中断使能标志
31
LOCK
0: 允许更新中断使能
1: 不允许修改中断使能
中断使能,每一位控制一个侵入检测引脚
11-0
IRQ_EN
0: 禁止中断
1: 使能中断
IRQ_EN 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
996/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
单调计数器 MONO
单调计数器 MONO
73
本章节描述了单调计数器 MONO 的主要特性和功能。
特性总结
73.1
单调计数器 MONO 的主要特性:
● 48 位单调计数器
● 16 位高位值,由 OTP 载入
功能描述
73.2
单调计数器模块支持一个 48 位的单调计数器,计数器的值保存在 MONOL 和 MONOH 两个寄存器中。任何
对 MONOL 和 MONOH 寄存器的写操作,都会使单调计数器加 1。
单调计数器位于电池备份域,因此,只有 VBAT 上电复位 VBAT_POR 能重置这个计数器。如果用户使用独
立的电池对 VBAT 供电,那么在电池的耗尽或被人为拔除前,单调计数器可以保证提供一个单调递增,且不重复
的计数,并且此计数器和其他电池备份域外设一样,在芯片系统电源域,电源管理域掉电时,也能保持工作。
单调计数器溢出视作为电池备份域安全事件之一,支持生成对应中断。
单调计数器还支持 16 位高位值 EPOCH[15:0],从 OTP 载入,可由 MONOH[31:16] 读取。用户可以在发生
特殊事件时,通过烧录 OTP,防止计数器出现重复的数值。
MONO 寄存器列表
73.3
MONO 的寄存器列表如下:
MONO base address: 0xF5054000
地址偏移
名称
描述
复位值
0x0000
MONOL
单向计数器低位
0x00000000
0x0004
MONOH
单向计数器高位
0x00000000
表 248: MONO 寄存器列表
73.3.1
MONO 寄存器描述
MONO 的寄存器详细说明如下:
73.3.2
MONOL (0x0)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
COUNTER
31
0
MONOL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
997/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
31-0
COUNTER
单调计数器 MONO
描述
单向计数器低位,写入该寄存器会导致计数器加 1
MONOL 位域
MONOH (0x4)
30
29
28
27
26
25
24
0
0
0
0
0
0
0
0
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
RW
RW
EPOCH
31
COUNTER
73.3.3
0
MONOH [31:0]
位域
名称
31-16
EPOCH
15-0
COUNTER
描述
熔丝高位值
单向计数器高位,写入该寄存器会导致计数器加 1
MONOH 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
998/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
74
系统调试概述
系统调试概述
本章节介绍了本产品的调式模块。
Debug 调试系统符合 The RISC-V Debug Specification, Version 0.13 规范。Debug 调试系统包括 JTAG 接
口转换模块(DTM)和调试模块(DM)2 部分。DTM 通过标准 JTAG 接口对接外部调试器,可以把 JTAG 上收到
的调试指令转换成对 DM 模块的读写访问。调试模块 DM 集成了调试功能,可以暂停或者恢复 CPU 的运行,产
生复位,以及访问片上资源。
JTAG Pins
DTM
DMI
DM
Debug
Requests
CPU
System Bus
System
Memory Map
图 108: 调试系统框图
Debug 系统特性如下:
● 支持 4 线 JTAG 接口,符合 IEEE Std 1149.1
● 支持片外调试器通过 JTAG 接口转换模块连接 Debug 调试模块
● 支持处理器通过系统地址映射访问 Debug 调试模块
● 支持 2 个硬件断点
● 支持单步调试
● 支持 System Bus Access,调试接口可以作为总线主设备,可以不打断内核运行直接访问片上资源
● 支持 Debug 安全机制,可以开放,关闭或者锁定 Debug 调试接口,当 Debug 被锁定时,用户需要通过
安全码解锁。
本产品的 JTAG ID 为 0x1000563d。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
999/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
调试传输模块 DTM
调试传输模块 DTM
75
调试传输模块 (DTM)
该模块符合 RISCV0.13 版的定义,支持 IEEE1149.1 所定义的 JTAG 接口。指令长度为 5 位。
DTM 指令
75.1
INSTRUCTION 列表如下:
值
名称
描述
数据宽度
0x00
USERCODE
芯片识别号
32
0x01
IDCODE
芯片识别号
32
0x08
CLAMP
CLAMP 指令
404
0x09
EXTEST
EXTEST 指令
404
0x0A
SAMPLE/PRELOAD
SAMPLE/PRELOAD 指令
404
0x0B
HIGHZ
HIGHZ 指令
1
0x0F
AUTHEN
调试认证指令
32
0x10
DTMCS
DTM 控制寄存器
32
0x11
DMI
DMI 调试接口
41
0x1F
BYPASS
BYPASS 指令
1
表 249: DTM 指令列表
DTM 指令描述
75.2
INSTRUCTION 的详细说明如下:
75.2.1
USERCODE (0x0)
位域
名称
访问
描述
31-0
USERCODE
RO
芯片型号识别号
USERCODE 位域
75.2.2
IDCODE (0x1)
位域
名称
访问
描述
31-0
IDCODE
RO
用于调试系统识别号
IDCODE 位域
75.2.3
CLAMP (0x8)
位域
名称
访问
描述
403-0
BOUNDRY
RO
参阅 IEEE1149.1
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1000/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
访问
调试传输模块 DTM
描述
CLAMP 位域
75.2.4
EXTEST (0x9)
位域
名称
访问
描述
403-0
BOUNDRY
RO
参阅 IEEE1149.1
EXTEST 位域
75.2.5
SAMPLE/PRELOAD (0xA)
位域
名称
访问
描述
403-0
BOUNDRY
RO
参阅 IEEE1149.1
SAMPLE/PRELOAD 位域
75.2.6
HIGHZ (0xB)
位域
名称
访问
描述
0
BYPASS
RO
参阅 IEEE1149.1
HIGHZ 位域
75.2.7
AUTHEN (0xF)
位域
名称
访问
描述
调试认证指令,调试认证需要进行 8 次数据交换。
31-0
AUTH
RW
前 4 次将 128 位管芯跟踪数据传输到芯片外面,后
四次输入 128 位调试密钥。
AUTHEN 位域
75.2.8
DTMCS (0x10)
位域
名称
访问
描述
写 1 会复位 DTM,清除之前的访问状态。通常,只
17
DMIHARDRESET
W1
有在当前访问不可能完成的情况下(例如:访问过程
中发生了复位)才使用这一位。
16
DMIRESET
W1
写 1 清除错误标志,使 DTM 重试或结束一个访问。
为调试器提供信息,通知调试器 DMI 扫描后在
14-12
IDLE
RO
RunTest/Idle 中需停留的周期数,以减少繁忙的的情
况。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1001/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
访问
调试传输模块 DTM
描述
DMI 接口状态
0: 无错误
11-10
DMISTAT
RO
1: 保留
2: 操作数错误
3: DMI 忙时发出下一个访问
9-4
ABITS
RO
3-0
VERSION
RO
DMI 接口地址线宽度,读出值为 7
DTM 版本号。当前读出值为 0x1,表示符合 RISC-V
External Debug Support (TD003) V0.13.
DTMCS 位域
75.2.9
DMI (0x11)
位域
名称
访问
描述
40-34
ADDRESS
RW
DMI 的访问地址。
33-2
DATA
RW
通过 DMI 写入或从 DMI 读取的数据。
写入:
0:忽略数据和地址。
(无操作)
1:从地址读取。
(读)
2:将数据写入地址。
(写)
1-0
OP
RW
3:保留
读取:
0:上一操作成功完成。
1:保留
2:上一操作失败。
3:DMI 请求发生重叠。
DMI 位域
75.2.10
BYPASS (0x1F)
位域
名称
访问
描述
0
BYPASS
RO
参阅 IEEE1149.1
BYPASS 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1002/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
调试模块 DM
调试模块 DM
76
该模块符合 RISCV0.13 版的定义,具有 16x32bit 的程序缓冲器 (program buffer)。
调试模块内的寄存器有两种访问方式,CPU 通过系统总线访问或调试器通过 DTM 访问。两种访问方式具有
不同的内存映射。
76.1
系统内存映射
地址偏移
名称
描述
0x0000 - 0x007F
DEBUGROM
Debug ROM
0x0080 - 0x00BF
PROGBUF
Program Buffer 0–15
0x00C0 - 0x00CF
DATA
Abstract Data 0–3
0x00D0 - 0x01FF
RESERVED
Reserved for internal use
表 250: DM 系统内存映射
76.2
DMI 内存映射
地址偏移
名称
描述
复位值
0x0004
DATA[DATA0]
抽象数据 0
0x00000000
0x0005
DATA[DATA1]
抽象数据 1
0x00000000
0x0006
DATA[DATA2]
抽象数据 2
0x00000000
0x0007
DATA[DATA3]
抽象数据 3
0x00000000
0x0010
DMCONTROL
调试模块控制
0x00000000
0x0011
DMSTATUS
调试模块状态
0x004000A2
0x0012
HARTINFO
内核信息
0x002140C0
0x0013
HALTSUM
Halt Summary
0x00000000
0x0014
HAWINDOWSEL
内核阵列窗口选择
0x00000000
0x0015
HAWINDOW
内核阵列窗口
0x00000000
0x0016
ABSTRACTCS
抽象控制和状态
0x08000004
0x0017
COMMAND
抽象命令
0x00000000
0x0018
ABSTRACTAUTO
抽象命令自动执行
0x00000000
0x0020
PROGBUF[PROGBUF0]
程序缓冲 0
0x00000000
0x0021
PROGBUF[PROGBUF1]
程序缓冲 1
0x00000000
0x0022
PROGBUF[PROGBUF2]
程序缓冲 2
0x00000000
0x0023
PROGBUF[PROGBUF3]
程序缓冲 3
0x00000000
0x0024
PROGBUF[PROGBUF4]
程序缓冲 4
0x00000000
0x0025
PROGBUF[PROGBUF5]
程序缓冲 5
0x00000000
0x0026
PROGBUF[PROGBUF6]
程序缓冲 6
0x00000000
0x0027
PROGBUF[PROGBUF7]
程序缓冲 7
0x00000000
0x0038
SBCS
系统总线访问控制和状态
0x20040407
0x0039
SBADDRESS[SBADDRESS0]
系统总线地址 0
0x00000000
0x003A
SBADDRESS[SBADDRESS1]
系统总线地址 1
0x00000000
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1003/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
地址偏移
调试模块 DM
名称
描述
复位值
0x003B
SBADDRESS[SBADDRESS2]
系统总线地址 2
0x00000000
0x003C
SBDATA[SBDATA0]
系统总线数据 0
0x00000000
0x003D
SBDATA[SBDATA1]
系统总线数据 1
0x00000000
0x003E
SBDATA[SBDATA2]
系统总线数据 2
0x00000000
0x003F
SBDATA[SBDATA3]
系统总线数据 3
0x00000000
表 251: DM 寄存器列表
DM 寄存器描述
76.3
76.3.1
DATA (0x4 + 0x1 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DATA
31
0
DATA [31:0]
位域
名称
31-0
DATA
描述
从 DMI 接口和系统总线均可访问,用于外部调试器和处理器之间
的数据交换。
DATA 位域
0
15
14
13
12
11
10
0
0
0
0
x
x
x
x
x
x
9
8
7
6
5
4
0
x
x
x
x
x
x
3
2
0
0
0
0
0
DMCONTROL [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1004/1016
1
DMACTIVE
0
16
RW
0
17
NDMRESET
0
18
CLRRESETHALTREQ
0
19
RW
0
20
W1C
x
21
SETRESETHALTREQ
0
22
W1S
RW
x
23
RSVD
RSVD
HASEL
N/A
0
24
N/A
ACKHAVERESET
RW
0
25
HARTSEL
RSVD
26
RESUMEREQ
27
N/A
28
WO
29
HALTREQ
30
WO
31
DMCONTROL (0x10)
RW
76.3.2
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
调试模块 DM
描述
请求选中核心进入调试模式。写 1 时,若选中核心正在运行则进
31
入调试模式,已处于调试模式的内核不受影响。若请求恢复位为
HALTREQ
0,则写 0 对处于调试模式的内核没有影响。根据正在写入的
hartsel 和 hasel 的新值选择 Harts。
选中核心恢复运行。写 1 时,被选中的核心若处于调试状态则恢
30
复运行。若同时写入调试请求,则忽略恢复请求位。若同时写入
RESUMEREQ
hartsel 和 hasel,则使用新的选择。
28
ACKHAVERESET
26
HASEL
25-16
HARTSEL
写 1 将选中核心的 havereset 位。若同时写入 hartsel 和 hasel,
则使用新的选择。
选择当前选定 HART 的定义。
选择要调试的核心。
若 clrresethaltreq 为 0,则置位所有选中核心的复位调试请求。置
位后,选中的内核在下一次复位释放时进入调试状态。该位不自
SETRESETHALTR
3
动清零,需写入 clrresethaltreq 清零。若同时写入 hartsel 和
EQ
hasel,则使用新的选择。
清除所有选中的核心的复位调试请求。若同时写入 hartsel 和
CLRRESETHALT
2
REQ
hasel,则使用新的选择。
1
NDMRESET
调试模块以外的系统复位控制。
0
DMACTIVE
调试模块的复位控制。
DMCONTROL 位域
DMSTATUS (0x11)
0
0
0
1
0
1
0
2
0
0
DMSTATUS [31:0]
位域
名称
22
IMPEBREAK
19
ALLHAVERESET
指示全部选中的核心已复位单位确认。
18
ANYHAVERESET
指示有选中的核心已复位单位确认。
17
ALLRESUMEACK
指示全部选中的核心恢复运行。
16
ANYRESUMEACK
指示有选中的核心恢复运行。
描述
指示在程序缓冲区后保留字中是否有 EBREAK 指令。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1005/1016
1
0
1
0
VERSION
0
3
RO
0
DEVTREEVALID
0
HASRESETHALTREQ
0
RO
0
RO
0
AUTHBUSY
0
AUTHENTICATED
0
RO
0
RO
4
ANYHALTED
5
RO
6
ALLHALTED
7
ANYRUNNING
8
RO
9
RO
10
ALLRUNNING
11
RO
12
ALLUNAVAIL
13
ANYUNAVAIL
14
RO
15
RO
x
16
ANYNONEXISTENT
x
17
RO
RO
1
18
ANYRESUMEACK
x
19
ALLNONEXISTENT
x
20
RO
x
21
RO
x
N/A
x
22
ALLRESUMEACK
23
RO
x
24
ALLHAVERESET
x
25
ANYHAVERESET
x
26
RO
x
27
RO
28
RSVD
29
N/A
30
RSVD
31
IMPEBREAK
76.3.3
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
描述
ALLNONEXISTEN
15
指示全部选中的核心不存在。
T
ANYNONEXISTEN
14
调试模块 DM
指示有选中的核心不存在。
T
13
ALLUNAVAIL
指示全部选中的核心不可用。
12
ANYUNAVAIL
指示有选中的核心不可用。
11
ALLRUNNING
指示全部选中的核心正在运行。
10
ANYRUNNING
指示有选中的核心正在运行。
9
ALLHALTED
指示全部选中的核心处于调试模式。
8
ANYHALTED
指示有选中的核心处于调试模式。
7
AUTHENTICATED
6
AUTHBUSY
指示验证模块检查已通过。
指示验证模块处于繁忙状态。
HASRESETHALT
5
是否支持复位调试功能。
REQ
4
DEVTREEVALID
3-0
VERSION
设备树寄存器中的信息是否保存设备树的地址。
RISC-V 外部调试支持的版本。0x2 表示当前实现的版本为 0.13。
DMSTATUS 位域
HARTINFO (0x12)
22
x
x
x
0
0
21
20
19
0
x
18
RO
N/A
x
17
1
x
16
15
14
x
1
0
1
13
12
11
10
9
8
7
6
0
0
0
0
0
1
1
5
4
3
2
1
0
0
0
0
0
0
0
DATAADDR
23
RO
x
24
DATASIZE
x
25
RO
x
26
DATAACCESS
x
27
RO
28
RSVD
29
N/A
30
RSVD
31
NSCRATCH
76.3.4
0
HARTINFO [31:0]
位域
名称
23-20
NSCRATCH
描述
核心中调试寄存器数量
访问数据寄存器的方法。该字段的值为 0x1,表示调试模式下数
16
DATAACCESS
据寄存器通过在地址访问。
0:数据寄存器通过 CSR 寄存器访问。
1:数据寄存器通过地址访问。每个寄存器占 4 个字节。
15-12
DATASIZE
11-0
DATAADDR
数据寄存器个数。
总线访问时数据寄存器偏移量,有符号数。调试模式下用作
load/store 指令的偏移。
HARTINFO 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1006/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
76.3.5
调试模块 DM
HALTSUM (0x13)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
RW
N/A
HALT
RSVD
31
x
HALTSUM [31:0]
位域
名称
描述
0
HALT
位 0 包含 hart 0-hart 31 的 32 个暂停位的逻辑 OR。
HALTSUM 位域
HAWINDOWSEL (0x14)
30
29
28
27
26
25
24
x
x
x
x
x
x
x
x
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
x
x
x
x
x
x
x
x
0
0
0
0
0
0
0
x
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
RW
N/A
RSVD
31
HAWINDOWSEL
76.3.6
0
HAWINDOWSEL [31:0]
位域
名称
描述
14-0
HAWINDOWSEL
该寄存器选择在 hawindow 中可访问 hart 阵列掩码寄存器的 32
位部分。
HAWINDOWSEL 位域
76.3.7
HAWINDOW (0x15)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
HAWINDOW
31
0
HAWINDOW [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1007/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
位域
名称
调试模块 DM
描述
该寄存器提供对 hart 阵列掩码寄存器 32 位部分的 R/W 访问。窗
31-0
户的位置由 hawindowsel 确定。也就是说,位 0 表示 hart
HAWINDOW
(hawindowsel*32),而位 31 表示 hart(hawindowsel*32+31)。
HAWINDOW 位域
x
19
0
0
x
x
x
x
x
18
16
15
14
13
x
x
x
x
x
RSVD
RO
0
17
x
12
11
0
x
10
9
8
7
0
0
0
x
6
5
4
3
x
x
0
0
2
1
0
0
0
DATACOUNT
20
RO
21
RSVD
22
N/A
23
CMDERR
1
24
RW1C
0
25
RSVD
x
N/A
x
26
N/A
27
BUSY
28
RO
29
N/A
30
RSVD
31
ABSTRACTCS (0x16)
PROGBUFSIZE
76.3.8
1
ABSTRACTCS [31:0]
位域
名称
描述
28-24
PROGBUFSIZE
12
BUSY
程序缓冲区的大小,以 32 位字为单位。
指示正在执行抽象命令。
抽象命令的错误代码。置 1 后即保持,直到写入 1 时清零。清零
之前,不执行抽象命令。
0: 无:无错误
10-8
1:忙:抽象命令执行时写入了 command、abstractcs、
CMDERR
AbstractAuto 或读写了指令缓冲或数据寄存器。
2: 不支持:不支持的抽象命令。
3: 异常:执行时发生异常。
4:停止/恢复:核心状态错误,无法执行抽象命令。
4-0
数据寄存器的数量。
DATACOUNT
ABSTRACTCS 位域
76.3.9
COMMAND (0x17)
30
29
28
0
0
0
0
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
WO
WO
CONTROL
CMDTYPE
31
0
COMMAND [31:0]
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1008/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
调试模块 DM
位域
名称
描述
31-24
CMDTYPE
抽象命令类型。
23-0
CONTROL
该字段在执行不同的抽象命令时有不同的功能。
COMMAND 位域
ABSTRACTAUTO (0x18)
x
x
x
26
25
24
23
22
21
20
x
x
x
0
0
0
0
19
18
17
16
15
14
13
12
11
10
0
0
0
x
x
x
x
x
x
RW
N/A
x
9
8
7
6
5
4
3
2
0
x
x
x
x
x
x
0
0
1
0
0
0
AUTOEXECDATA
x
27
RW
28
RSVD
29
N/A
30
RSVD
31
AUTOEXECPROGBUF
76.3.10
ABSTRACTAUTO [31:0]
位域
名称
描述
当字段中的位为 1 时,对应指令缓冲读写访问将触发抽象命令的
AUTOEXECPROG
23-16
执行。
BUF
3-0
当字段中的位为 1 时,对应数据字的读写访问将触发抽象命令的
AUTOEXECDATA
执行。
ABSTRACTAUTO 位域
76.3.11
PROGBUF (0x20 + 0x1 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
DATA
31
0
PROGBUF [31:0]
位域
名称
31-0
DATA
描述
程序缓冲区。程序缓冲区 0-7 可读写,8-15 的值为 0x00100073
(EBREAK 指令)
。
PROGBUF 位域
76.3.12
SBCS (0x38)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1009/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
1
0
0
0
0
0
4
3
2
1
0
SBACCESS8
0
5
RO
0
6
SBACCESS16
0
7
SBACCESS32
0
8
RO
9
RO
10
SBACCESS64
11
SBASIZE
0
12
RO
0
13
RO
0
14
SBACCESS128
1
15
RO
0
16
SBERROR
0
17
RW1C
0
18
SBREADONDATA
0
19
SBAUTOINCREMENT
x
20
RW
x
RSVD
x
21
RW
x
N/A
0
22
SBACCESS
x
23
RW
x
24
SBBUSY
1
RO
0
25
SBREADONADDR
26
RO
27
RW
28
SBBUSYERROR
29
RW1C
30
SBVERSION
31
调试模块 DM
0
0
1
1
1
SBCS [31:0]
位域
名称
31-29
SBVERSION
22
SBBUSYERROR
21
SBBUSY
20
SBREADONADDR
描述
支持的系统总线访问版本。目前为 1,对应 RISC-V 外部调试规范
v0.13。
指示总线空闲之前发出了另一个访问命令。
系统总线忙。
写入后自动读取。
访问大小。
0:8 位
19-17
SBACCESS
1:16 位
2:32 位
3:64 位
4:128 位
16
15
SBAUTOINCREM
ENT
SBREADONDATA
每次系统总线访问后,内部地址的自动增加量。
从 sbdata0 读取自动触发系统总线读取(地址可递增)。
指示系统总线访问错误代码。写入 1 清零。
0:无错误
1:超时
14-12
SBERROR
2:地址不正确
3:数据对齐
4:不支持的访问大小
7:其他
系统总线地址的地址宽度。
11-5
SBASIZE
4
SBACCESS128
表示是否支持 128 位系统总线数据访问。
3
SBACCESS64
表示是否支持 64 位系统总线数据访问。
2
SBACCESS32
表示是否支持 32 位系统总线数据访问。
1
SBACCESS16
表示是否支持 16 位系统总线数据访问。
0
SBACCESS8
表示是否支持 8 位系统总线数据访问。
SBCS 位域
76.3.13
SBADDRESS (0x39 + 0x1 * n)
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1010/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RO
SBADDRESS
31
调试模块 DM
0
SBADDRESS [31:0]
位域
名称
描述
31-0
SBADDRESS
系统总线访问地址
SBADDRESS 位域
76.3.14
SBDATA (0x3C + 0x1 * n)
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RW
SBDATA
31
0
SBDATA [31:0]
位域
名称
31-0
SBDATA
描述
系统总线访问数据
SBDATA 位域
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1011/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
77
版本信息
版本信息
日期
版本
描述
Rev1.0
2022/06/28
正式版 Rev 1.0 发布。
Rev1.1
2022/07/08
Rev 1.1 发布。
更新 PINMUX 表格,更新 116BGA Ballmap 相关信息。
更新各章节寄存器列表章节,增加寄存器基地址信息。
更新 PWM 章节部分寄存器描述。
增加 DAC 章节寄存器描述。
Rev1.2
2022/07/18
Rev 1.2 发布。
更正存储器概述章节部分描述。
更新 PTPC 章节功能描述。
更新 TSNS 章节寄存器描述为中文。
更新 DAC 章节寄存器描述为中文。
Rev2.0
2022/11/25
Rev 2.0 发布。
更新手册的适用产品型号信息,增添 HPM6xxIxx2 等版本 2 产品型号信
息。
更新电源章节,VREFH 工作范围信息。
Rev2.1
2022/12/30
Rev2.1 发布:
更新 DRAM 章节名称为 FEMC,DRAM 相关信号名称更新为 FEMC,
FEMC 章节描述更新,增加外部 SRAM 控制器功能描述。
更正输入输出模块概述章节部分描述。
更正 PWM 章节部分描述。
更新 PINMUX 表格。
Rev2.2
2023/02/24
Rev2.2 发布:
更新 FEMC 章节寄存器描述。
更正存储器概述章节 FEMC 相关描述。
更新电源 VIO_B01 供电相关描述。
更新 PCFG 相关寄存器描述。
更正 PINMUX 表格。
增添 HPM6330ICE2 型号信息。
增添 LQFP80 封装 PINMUX 信息。
Rev2.3
2023/06/17
Rev2.3 发布:
更新 I2S 章节功能描述。
更新 DAO 章节功能描述。
更新 PDM 章节功能描述。
更正 SYSCTL 章节部分功能描述。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1012/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
日期
版本
描述
Rev2.4
2023/12/1
Rev2.4 发布:
更新封面的型号列表。
更新 SPI 章节功能描述。
更新 UART 章节功能描述。
更新 PWM 章节部分功能描述。
更新定时器综述章节功能描述。
Rev2.5
2024/05/13
Rev2.5 发布:
添加 VPMC 欠压检测 BOR 功能描述。
更新 PINMUX 表格。
表 252: 版本信息
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1013/1016
版本信息
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
78
免责声明
免责声明
上海先楫半导体科技有限公司(以下简称:
“先楫”
)保留随时更改、更正、增强、修改先楫半导体产品和/或
本文档的权利,恕不另行通知。用户可在先楫官方网站 https://www.hpmicro.com 获取最新相关信息。
本声明中的信息取代并替换先前版本中声明的信息。
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1014/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
表格目录
1
外设简称总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
寄存器描述缩写词列表
3
CSR 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4
Event Selectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5
PMPCFG [7:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6
PMPCFG 位域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7
CCTL Command Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8
CCTL Commands Which Access mcctldata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
9
CCTL Command Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
10
PMACFG [7:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
11
PMACFG 位域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
12
IRQ 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
13
MCHTMR 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
14
PLIC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
15
PLIC_SW 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
16
电源和接地引脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
17
电源管理相关 IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
18
时钟源选择及默认频率
19
功能时钟汇总 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
20
两级功能时钟选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
21
模块时钟列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22
BCFG 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
23
BPOR 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
24
BUTN 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
25
DCDC 低功耗状态控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
26
PCFG 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
27
PPOR 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
28
功能模块连接位表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
29
RETENTION 寄存器位表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
30
测量时钟选择表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
31
SYSCTL 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
32
PLLCTLV2 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
33
地址空间分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
34
OTP 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
35
命令数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
36
查询运行时环境 (query-rte) 命令数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
37
ROM 参数响应包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
38
活动外设信息包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
39
上次 ROM 启动状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
40
存储设备属性响应包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1015/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
41
配置存储 (configure-memory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
42
configure-memory 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
43
配置存储 (write-memory) - 命令 + 数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
44
配置存储 (write-memory) - 仅数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
45
write-memory 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
46
read-memory 命令数据桢 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
47
read-memory 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
48
read-memory 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
49
load-image 数据帧结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
50
load-image 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
51
erase 数据帧结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
52
erase 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
53
reset 数据帧结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
54
reset 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
55
生成固件 Blob(gen-fwblob) 数据帧结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
56
gen-fwblob 响应帧数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
57
gen-fwblob 回复的数据帧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
58
载荷包数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
59
确认包
60
USB 描述符
61
USB-HID 载荷包数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
62
USB-HID 确认包数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
63
固件容器头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
63
固件容器头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
63
固件容器头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
64
固件容器头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
65
配置信息块头 (Configure Info Block Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
66
配置信息头 (Configure Info Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
67
XPI NOR 配置选项 (XPI NOR Configuration Option) . . . . . . . . . . . . . . . . . . . . . . . . . . 241
68
XPI NOR 配置块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
69
XPI NOR 配置块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
70
唤醒验证信息 (Wake-up Check Info) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
71
OTP 解锁信息 (OTP Unlock Info) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
72
签名块头 (Signature Block Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
73
根密钥表头 (SRK Table Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
74
根密钥表项 (SRK Table Item) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
75
签名信息 (Signature Info) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
76
证书头部 (Certificate Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
77
固件 Blob(FW Blob) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
78
命令容器 (Command Container) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
79
命令容器头部 (Command Container Header) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
80
配置存储设备数据块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
81
写存储设备数据块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1016/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
82
擦除存储设备数据块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
83
复位数据块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
84
BootROM 相关的 OTP 映射表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
85
XPI0 引脚信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
86
XPI1 引脚信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
87
UART0 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
88
USB0 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
89
BOOT_MODE 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
90
BootROM 占用的寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
91
BootROM 内存映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
92
BootROM 生命周期编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
93
SOC IOMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
94
PMIC IOMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
95
BATT IOMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
96
ACMP 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
97
ADC0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
98
ADC1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
99
ADC2 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
100 CAN0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
101 CAN1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
102 DAC0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
103 DAOL 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
104 DAOR 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
105 ETH0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
106 FEMC 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
107 GPIO 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
108 GPTMR0 信号引脚
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
109 GPTMR1 信号引脚
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
110 GPTMR2 信号引脚
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
111 GPTMR3 信号引脚
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
112 I2C0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
113 I2C1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
114 I2C2 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
115 I2C3 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
116 I2S0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
117 I2S1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
118 PDM0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
119 PWM0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
120 PWM1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
121 SDC0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
122 SOC 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
123 SPI0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
124 SPI1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1017/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
125 SPI2 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
126 SPI3 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
127 SYSCTL 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
128 TRGM0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
129 TRGM1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
130 UART0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
131 UART1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
132 UART2 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
133 UART3 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
134 UART4 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
135 UART5 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
136 UART6 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
137 UART7 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
138 USB0 信号引脚
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
139 WDG0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
140 WDG1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
141 XPI0 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
142 XPI1 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
143 JTAG 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
144 PGPIO 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
145 PTMR 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
146 PUART 信号引脚
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
147 PWDG 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
148 SOC 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
149 BGPIO 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
150 PWR 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
151 SOC 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
152 TAMP 信号引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
153 启动配置表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
154 特殊功能引脚配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
155 IO 复位状态表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
156 IOC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
157 GPIO 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
158 GPIOM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
159 识别类型 OTP 字读写保护总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
160 安全类型 OTP 字读写保护总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
161 密钥类型 OTP 字读写保护总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
162 通用类型 OTP 字读写保护总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
163 OTP 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
164 FEMC 信号映射表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
165 FEMC DRAM 控制器信号说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
166 FEMC SRAM 控制器信号映射表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
167 FEMC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1018/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
168 SDXC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
169 DMA MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
170 FFA 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
171 FFA 中断请求
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
172 DMA 链式任务描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
173 DMA 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
174 DMAMUX 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
175 MBX 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
176 I2S 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
177 I2S 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
178 I2S 数据缓冲区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
179 I2S 中断请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
180 I2S 的 DMA 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
181 I2S 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
182 PDM 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
183 PDM 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
184 PDM 中断请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
185 PDM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
186 DAO 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
187 DAO 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
188 DAO 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
189 TRGM0_INPUT MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
190 TRGM1_INPUT MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
191 TRGM0_OUTPUT MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
192 TRGM1_OUTPUT MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
193 TRGM0_DMA MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
194 TRGM1_DMA MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
195 TRGM0_FILTER MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
196 TRGM1_FILTER MUX 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
197 PWM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
198 QEI 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
199 HALL 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
200 TRGM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
201 SYNT 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
202 GPTMR 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
203 WDG 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
204 RTC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
205 UART 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
206 I2S 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
207 SPI 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
208 从机模式支持的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
209 SPI 寄存器列表
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
210 I2C 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1019/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
211 CAN 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
212 CAN 位时间设定规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
213 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
213 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
213 软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
214 CAN 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
215 PTPC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
216 TDES0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
217 TDES1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
218 TDES2 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
219 RDES0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
220 RDES1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
221 RDES2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
222 RDES3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
223 RDES4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
224 RDES6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
225 RDES7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
226 ENET 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
227 USB 管脚说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
228 qhead 结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
229 dqh 结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
230 USB 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
231 ADC 抢占转换 DMA 数据缓冲区分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891
232 ADC16 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
233 ACMP 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
234 DAC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
235 TSNS 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
236 SDP 命令描述符格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
237 SDP 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
238 EXIP Key Wrap 数据汇总 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
239 EXIP Key Wrap 数据汇总 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
240 RNG 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
241 KEYM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
242 BKEY 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
243 PSEC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
244 PMON 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
245 BSEC 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985
246 BMON 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
247 TAMP 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
248 MONO 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
249 DTM 指令列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 000
250 DM 系统内存映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 003
251 DM 寄存器列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 004
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1020/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
252 版本信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
. 013
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1021/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
图片目录
1
系统架构框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
MCHTMR 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3
电源系统结构框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4
电源供电系统框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5
复位系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6
时钟系统框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7
ADC 功能时钟结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8
I2S 功能时钟结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
9
资源节点的链式关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
10
资源节点与 group/CPU 的链式关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
11
低功耗模式流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
12
BootROM 启动流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
13
XPI QSPI NOR FLASH CA 端口连接
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
14
XPI QSPI NOR FLASH CB 端口连接
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
15
XPI Octal NOR FLASH 连接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
16
XPI NOR 启动流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
17
XPI NOR 启动镜像布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
18
串行通信协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
19
启动镜像布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
20
签名块中各部分的布局
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
21
要被签名的固件头部分
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
22
通用 IO 外设复用功能选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
23
电源管理域 IO 外设复用功能选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
24
电池备份域 IO 外设复用功能选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
25
通用 IO GPIO 控制选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
26
电源管理域 IO GPIO 控制选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
27
电池备份域 IO GPIO 控制选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
28
读时序操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
29
写时序操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
30
AUTO REFRESH 时序操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
31
SELF REFRESH 时序操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
32
数据地址非复用模式写操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
33
数据地址非复用模式读操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
34
数据地址复用模式写操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
35
数据地址复用模式读操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
36
SD 初始化 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
37
SD 初始化 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
38
ADMA2 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
39
ADMA2 传输描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
40
命令描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1022/1016
1
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
41
ADMA3 描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
42
FFA 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
43
I2S 结构框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
44
音频采样率 Fs 定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
45
I2S 的时钟分频路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
46
I2S Philips 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
47
I2S MSB 对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
48
I2S LSB 对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
49
I2S PCM 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
50
I2S TDM Philips 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
51
I2S TDM MSB 对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
52
I2S TDM LSB 对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
53
I2S TDM PCM 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
54
PDM 结构框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
55
PDM 与麦克风的联接图示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
56
PDM_CLK 的时钟分频路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
57
PDM 的信号流图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
58
DAO 结构框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
59
DAO 输出去驱动喇叭 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
60
DAO 输出波形,当 CTRL[REMAP]=0 时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
61
DAO 输出波形,当 CTRL[REMAP]=1 时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
62
DAO 信号流图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
63
电机系统框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
64
PWM 定时器框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
65
PWM 的时间基准模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
66
PWM 计数器计数与重载、扩展重载标志位置位示意图 . . . . . . . . . . . . . . . . . . . . . . . . . 569
67
PWM 定时器的 PWM 生成模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
68
PWM 比较器对应计数器位域图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
69
PWM 计数器计数与重载、扩展重载标志位置位示意图 . . . . . . . . . . . . . . . . . . . . . . . . . 572
70
边沿对齐 PWM 生成示例图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
71
中心对齐相移 PWM 生成示例图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
72
双翻转 PWM 生成示例图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
73
PWM 输出控制示例图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
74
PWM 死区控制示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
75
正交编码器接口 QEI 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
76
正向旋转相位计数示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
77
反向旋转相位计数示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
78
相位计数溢出示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
79
Z 相输入同步示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
80
测速计数器和测速日志计数器计数示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
81
方向(PD)解码模式示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
82
上下(UD)解码模式示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
83
快照功能示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1023/1016
HPM6300 系列
基于 RISC-V 内核的 32 位高性能微控制器用户手册 Rev2.5
84
霍尔传感器 HALL 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
85
U, V, W 日志计数器示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
86
定时器框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
87
UART 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
88
SPI 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
89
SPI 主机模式传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
90
SPI 从机模式传输 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
91
I2C 框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
92
CAN 控制器数据流框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
93
CAN RXTX 位的时间定义图
94
CAN TBUF 寄存器写发送缓冲器和示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
95
CAN 接受筛选寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
96
CAN-CTRL 的回环模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
97
发送描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
98
接收描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
99
异步队列示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
100 qhead 示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
101 qtd 示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
102 dqhlist 示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
103 dqh 示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
104 dtd 示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
105 序列转换模式数据格式
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
106 抢占转换模式数据格式
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891
107 密钥管理总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
108 调试系统框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999
©2023 Shanghai HPMICRO Semiconductor Co., Ltd.
1024/1016