ZHDA282 September   2026 MSPM0G5117 , MSPM0G5187

 

  1.   1
  2. 1 说明
  3. 2 所需外设
  4. 3 兼容器件
  5. 4 设计步骤
  6. 5 设计注意事项
  7. 6 软件流程图
  8. 7 应用代码
  9. 8 数据流示例
  10. 9 其他资源
  11. 10商标

设计步骤

  1. 在 SysConfig 中设置 TinyUSB 模块。添加一个 CDC 实例 (CDC_0)。SysConfig 会自动分配三个端点:通知 IN (EP_IN2)、数据 IN (EP_IN1) 和数据 OUT (EP_OUT1)。
  2. 配置 USB 时钟树。两个平台使用不同的时钟路径。在 MSPM0G5187 上:使能 PLL 和 USB FLL,将 UDIV 设置为 2,并选择 HSCLKMUX_SYSPLL0。在 MSPM0C5116 上:仅使能 USB FLL(无需 PLL),将 UDIV 设置为 2,并选择 HSCLKMUX_USBFLL。
  3. 在 SysConfig 中设置 I2C 模块。
    1. 启用 I²C 控制器模式。
    2. 在 MSPM0G5187 上将总线速度设置为快速模式增强版 (1MHz),或在 MSPM0C5116 上将总线速度设置为快速模式 (400kHz)。
    3. 将 DMA event1 触发器配置为 CONTROLLER_RXFIFO_TRIGGER,并在固定地址到块地址 模式下分配 DMA_CH0。
    4. 将 DMA event2 触发器配置为 CONTROLLER_TXFIFO_TRIGGER,并在块地址到固定地址 模式下分配 DMA_CH0。
    5. 在“Interrupt Configuration”选项卡中,启用 EVENT1_DMA_DONE、EVENT2_DMA_DONE 和 NACK 中断。
  4. 在 SysConfig 中设置 GPIO 模块。
    1. 添加一个名为 I2C_SIGNAL 的输入 GPIO 引脚,将其配置为带下拉电阻的上升沿中断。此引脚连接到 I2C 目标器件的数据就绪输出。
    2. 启用输入中断。在 MSPM0G5187 上,将该 GPIO 映射到中断组 1。
      void GROUP1_IRQHandler(void)
      {
          switch (DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1)) {
              case GPIO_INT_IIDX:
                  switch (DL_GPIO_getPendingInterrupt(GPIO_PORT)) {
                      case GPIO_I2C_SIGNAL_IIDX:
                          // Slave signaled data ready - set flag for main loop
                          i2ctargetDataReady = true;
                          break;
      
                      default:
                          break;
                  }
                  break;
      
              default:
                  break;
          }
      }
      在 MSPM0C5116 上,直接使用 GPIOB 中断。
      void GPIOB_IRQHandler(void)
      {
          switch (DL_GPIO_getPendingInterrupt(GPIO_PORT)) {
              case GPIO_I2C_SIGNAL_IIDX:
                  // Slave signaled data ready - set flag for main loop
                  i2ctargetDataReady = true;
                  break;
      
              default:
                  break;
          }
      }
  5. 在 SysConfig 中设置 SysTick。使能 SysTick 并设置与 CPU 频率匹配的周期:MSPM0G5187 (80MHz) 设为 80000 个周期,MSPM0C5116 (48MHz) 设为 48000 个周期。这两个设置值均可产生 1ms 的周期。TinyUSB 的 board_millis() 需要此 1ms 周期。