0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
HPM6364IPA2

HPM6364IPA2

  • 厂商:

    HPMICRO(先楫半导体)

  • 封装:

    LQFP144

  • 描述:

    32位MCU微控制器 LQFP144 20.00 x 20.00mm 3V~3.6V

  • 数据手册
  • 价格&库存
HPM6364IPA2 数据手册
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
HPM6364IPA2 价格&库存

很抱歉,暂时无法提供与“HPM6364IPA2”相匹配的价格&库存,您可以联系我们找货

免费人工找货
HPM6364IPA2
  •  国内价格
  • 1+37.69996

库存:10