ZHCUCF1 October 2024
直接存储器存取 (DMA) 模块支持通过 UART 和 SPI 总线进行通信,并以极低的 CPU 带宽负载实现与 MSPM0L2228 之间的数据包传输。
两个 DMA 通道用于通过 SPI 总线与 ADS131M03 进行通信:DMA 通道 0 用于向 ADS131M03 发送数据,DMA 通道 1 用于同时接收来自 ADS131M03 的数据。一旦从 ADS131M03 接收到一个完整的数据包,就会生成 DMA 完成中断 并触发必要的传输后处理,例如 CRC 验证和将数据包反汇编为电压和电流原始 ADC 值。
DMA 通道 2 用于接收来自 PC GUI 的 UART 数据,每个 DLT-645 数据包的第 14 个字节包含 PC GUI 发送的总数据包长度(因为数据包长度可能会随数据包动态变化)。UART 数据由 HAL_startUARTDMAReceive() 函数处理,方法是在第 14 个字节处设置初始预期 DMA 长度。对第 14 个字节进行解码后,UART DMA 传输长度值便会更新,现在等于 DLT-645 协议数据包的其余部分(总长度 - 14),以字节为单位。因为 DMA 在 UART 数据包结束时再次触发,所以一共可以通过两个中断来接收 PC GUI 数据包。