ZHDA287 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商标

数据流示例

场景 A:主机向目标写入 5 个字节

  1. 主机通过 COM 端口发送 HELLO
  2. tud_cdc_rx_cb() 将数据加入队列
    1. usb2spi_pushTask()
    2. 队列 [H, E, L, L, O],长度=5
  3. 主循环:usb2spi_popTask ()
    1. 从队列中获取任务
    2. SPI 写入:data=[H,E,L,L,O]
    3. DMA 传输到 SPI TX FIFO
  4. SPI 硬件执行
  5. SPI_0_INST_IRQHandler()
    1. DL_SPI_IIDX_DMA_DONE_TX:DMA 已完成
    2. DL_SPI_IIDX_TX_EMPTY:传输完成
    3. fifoCompleteRead() 标记任务已消耗

场景 B:主机从目标读取 64 个字节

  1. SPI 目标器件有数据,将 GPIO 拉至高电平
  2. GPIO 中断触发
    1. SPISlaveDataReady = true
  3. 主循环检测:spi2usb_pushTask ()
    1. 刷新 SPI RX/TX FIFO
    2. 设置 DMA 发送:发送虚拟数据(时钟生成)
    3. 设置 DMA 接收:SPI 接收数据至缓冲区
    4. 开始 SPI 传输(64 个字节)
  4. SPI 硬件执行
  5. SPI_0_INST_IRQHandler()
    1. DL_SPI_IIDX_DMA_DONE_RX:接收到所有数据
    2. fifoCompleteWrite (&gSPI2USBTask) 并标记为 USB 传输准备就绪
  6. 主循环:spi2usb_popTask ()
    1. 向 USB 发送 64 个字节
    2. fifoCompleteRead() 标记任务已完成
  7. 主机通过 COM 端口接收 64 个字节