Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

外设清单与覆盖情况

crates/hisi-riscv-hal/src/*.rs 下的全部驱动模块。基地址取自各模块的 doc 注释/常量或 safety.rs 断言;标 “—” 者源文件头未列。“芯片“列:默认构建为 chip-ws63,标注 BS21 的模块仅在 chip-bs21 下编译。

完整 API 见 HAL API 总览;驱动如何新增见 新增一个外设驱动

驱动模块表

模块外设 / IP芯片基地址主驱动类型示例覆盖裸板自检
gpioGPIO(19 引脚,3 块)两者0x4402_8000/9000/A000Input/Output/Flex/AnyPin/Ioblinkygpio_irq
ulp_gpioULP GPIO(8 引脚 GPIO107-114)两者0x5703_0000UlpGpioPin<MODE>
uartUART0/1/2(16C550)两者0x4401_0000/1000/2000Uart<T>uart_hello
i2cI2C 主机 v150(I2C0/1)WS63— (SCL 24 MHz)I2c<T>i2c_scanasync_bus⚠️ 需从机
i2c_v151I2C DesignWare SSI v151BS210x5208_3000 + idx*0x1000I2c<T>Speed⚠️ 需从机
spiSPI 主机 DesignWare SSI v151(SPI0/1)两者— (SSI_CLK 160 MHz)Spi<T>Configspi_loopbackasync_bus✅(QEMU 环回)
dmaDMA(MDMA) + SDMA v151两者MDMA 0x4A00_0000、SDMA 0x520A_0000DmaDriver<T>dma_loopback
pwmPWM(8 通道,32 位)两者PwmChannel
timer定时器(3× 32 位)两者— (24 MHz)TimerDriverTimerModetimer_irqasync_delay
tcxoTCXO 64 位自由计数两者0x4400_04C0TcxoDriver(embassy-time 间接)
time计时(Instant/Duration/Rate,基于 TCXO)两者TCXO 0x4400_04C0Instant/Duration多处间接
wdt看门狗(24 位降计数)两者0x4000_6000(lock magic 0x5A5A5A5AWatchdogreset_demo 间接
rtcRTC v100(48 位)WS63— (32768 Hz)RtcDriver
rtc_v150RTC v150(64 位)BS21RTC0 0x5702_4100RtcMode
lsadc低速 ADC v154WS630x4400_C000LsAdcAdcConfigasync_bus
gadc13 位 GADC v153BS21digital 0x5703_6000Gadc⚠️
tsensor温度传感器(10 位)WS63— (code 114..896)TempSensor
i2sI2S / PCM 音频WS63I2sDriverI2sConfig⚠️ 需外设
pdmPDM 麦克风前端 v150BS210x5208_E000Pdm⚠️ 需外设
keyscan键矩阵扫描器 v150BS210x5208_D000KeyscanKeyEvent⚠️ 需接线
qdec正交解码器 v150BS210x5200_0200Qdec⚠️ 需接线
usbUSB 2.0 OTG(DWC2 device)BS210x5800_0000UsbSpeed/UsbError⚠️ 需主机
sfcSPI Flash 控制器WS630x4800_0000(safety.rs)SfcDriverBusConfig
efuseeFuse / OTP v151WS63STS+0x2C / CTL+0x30 / data+0x800EfuseDriver✅(只读)
km密钥管理 KLAD/RKPWS63—(KEYSLOT_COUNT=8)KmDriver
pke公钥引擎(RSA/ECC/SM2)WS63PkeDriver
spacc安全加速器(AES/SM4/HASH)WS63Crypto 0x4410_0000(safety.rs)SpaccDriver
trngTRNG(FRO 熵源)WS63TrngDriverTrngError
trng_v1TRNG v1BS210x5200_9000TrngTrngError
system系统控制(时钟/复位/电源)WS63CHIP_RESET 0x4000_2110SystemResetReasonreset_demo
clock外设时钟门控参考(CLDO_CRG)WS63Peripheral 枚举(多处间接)n/a
clock_init时钟初始化 / PLL 切换WS63HW_CTL 0x4000_0014SystemClocksTcxoFreq(多处间接)
delay忙等阻塞延时两者Delayblinky 间接
interrupt自定义 local 中断控制器(无 PLIC)两者CSR LOCIEN0..2 0xBE0..2Prioritygpio_irqtimer_irq
io_config引脚复用配置WS63(多处间接)
safety编译期 MMIO/timer 断言(无外设)WS63MMIO 0x4000_0000..0x5704_0000PeripheralIndex/GpioPinIndexn/an/a
asynchasync 胶水(block_on/IrqSignalWS63 (async)IrqSignalasync_*n/a
embassyembassy-time Driver两者 (embassy)TCXO + TIMERembassy_*

裸板自检:✅ 可在裸板上自验(无需外接器件);⚠️ 需外接器件/接线/从机;n/a 非外设驱动。

DMA 控制器

控制器标记类型基地址通道
主 DMA / MDMADma00x4A00_00000–3
安全 DMA / SDMASdma00x520A_00000–3(逻辑 8–11)

Peripherals 实例(WS63,chip-ws63,35 个)

SYS_CTL0SYS_CTL1GLB_CTL_MCLDO_CRGIO_CONFIGGPIO0GPIO1GPIO2ULP_GPIOUART0UART1UART2I2C0I2C1SPI0SPI1PWMI2SLSADCDMASDMASFC_CFGTIMERWDTRTCTCXOTSENSOREFUSESPACCPKEKMTRNGRF_WB_CTLSHARE_MEM_CTLFAMA_REMAP

Peripherals 实例(BS21,chip-bs21,28 个)

GLB_CTL_MGPIO0GPIO4ULP_GPIOUART0UART2I2C0/I2C1SPI0SPI2PWMDMASDMATIMERWDTRTCTCXOTRNGGADCKEYSCANQDECPDMUSB

全部 PAC 外设均有 HAL 封装。寄存器行为以 fbb_ws63 / fbb_bs2x C SDK 为 ground-truth。