You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于i.MX 8ULP M33核心启用DSP域TPM3、lpSPI2及PCC2总线的问询

i.MX 8ULP M33核心激活DSP域及PCC2总线的方法

针对仅使用M33核心、无需A35/Linux的场景,要访问DSP域的TPM3和lpSPI2,需按以下步骤操作:

1. 激活DSP域的电源与时钟

DSP域默认处于断电复位状态,需通过SCU(System Controller Unit)和PMIC配置激活:

  • PMIC供电配置:根据配套PMIC(如PF3000)的寄存器,使能DSP域对应的电源轨(例如PF3000的REG3或对应DSP供电通道),确保电压满足规格要求。
  • SCU复位与时钟使能:
    • 写入SCU的SRC_DSP_REG0寄存器,清除DSP域复位:SRC_DSP_REG0 |= (1 << 0)
    • 使能DSP域时钟:SRC_DSP_REG0 |= (1 << 1)
      注:寄存器地址和位定义需参考i.MX 8ULP官方参考手册(RM),不同版本可能存在差异。

2. 配置PCC2总线

PCC2是DSP域的外设时钟控制器,需先激活自身时钟,再配置目标外设的时钟:

  • 激活PCC2总线时钟:写入SCU的PCC2_CTRL寄存器,使能PCC2时钟:PCC2_CTRL |= (1 << 0)
  • 配置TPM3时钟:
    找到PCC2下的PCC_TPM3寄存器,选择合适的时钟源(如IPG_CLK),并使能外设时钟:
    PCC_TPM3 &= ~(0x7 << 24); // 清除原有时钟源选择
    PCC_TPM3 |= (0x1 << 24); // 选择IPG_CLK作为时钟源
    PCC_TPM3 |= (1 << 30);   // 使能TPM3时钟
    
  • 配置lpSPI2时钟:
    同理操作PCC_LPSPI2寄存器:
    PCC_LPSPI2 &= ~(0x7 << 24);
    PCC_LPSPI2 |= (0x1 << 24);
    PCC_LPSPI2 |= (1 << 30);
    

3. 配置M33对DSP域外设的访问权限

若M33启用了MPU/MMU,需将DSP域外设的地址空间映射为可访问:

  • 确认TPM3、lpSPI2的基地址(例如TPM3为0x402D0000,lpSPI2为0x402E0000,以官方RM为准)
  • 配置M33的MPU区域,将该地址范围设置为可读写、无缓存、无特权限制的属性,确保M33能直接访问外设寄存器。

注意事项

  • 操作顺序必须严格遵循:PMIC供电 → SCU复位释放 → 时钟使能 → PCC配置 → MPU映射
  • 所有寄存器操作需在M33的特权模式下执行
  • 若使用RTOS,需将上述初始化代码放在外设驱动初始化之前完成

内容的提问来源于stack exchange,提问作者Charchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:03:19