ZHDA287
September 2026
MSPM0G5117
,
MSPM0G5187
1
1
说明
2
所需外设
3
兼容器件
4
设计步骤
5
设计注意事项
6
软件流程图
7
应用代码
8
数据流示例
9
其他资源
10
商标
8
数据流示例
场景 A:主机向目标写入 5 个字节
主机通过 COM 端口发送
HELLO
tud_cdc_rx_cb() 将数据加入队列
usb2spi_pushTask()
队列 [H, E, L, L, O],长度=5
主循环:usb2spi_popTask ()
从队列中获取任务
SPI 写入:data=[H,E,L,L,O]
DMA 传输到 SPI TX FIFO
SPI 硬件执行
SPI_0_INST_IRQHandler()
DL_SPI_IIDX_DMA_DONE_TX:DMA 已完成
DL_SPI_IIDX_TX_EMPTY:传输完成
fifoCompleteRead() 标记任务已消耗
场景 B:主机从目标读取 64 个字节
SPI 目标器件有数据,将 GPIO 拉至高电平
GPIO 中断触发
SPISlaveDataReady = true
主循环检测:spi2usb_pushTask ()
刷新 SPI RX/TX FIFO
设置 DMA 发送:发送虚拟数据(时钟生成)
设置 DMA 接收:SPI 接收数据至缓冲区
开始 SPI 传输(64 个字节)
SPI 硬件执行
SPI_0_INST_IRQHandler()
DL_SPI_IIDX_DMA_DONE_RX:接收到所有数据
fifoCompleteWrite (&gSPI2USBTask) 并标记为 USB 传输准备就绪
主循环:spi2usb_popTask ()
向 USB 发送 64 个字节
fifoCompleteRead() 标记任务已完成
主机通过 COM 端口接收 64 个字节