嗨,我正在尝试使用 dma 作为分散/收集发送数据。我的目的是使用 flexI2S 发送数据(例如 120 字节的数组)。
我希望 dma 在 120 个字节自动完成时再次发送相同的数组,而循环中没有任何触发。
我查看了 S32DS 上的“edma_transfer_s32k146”项目。该项目未配置为从 flex 模块发送数据。
我无法通过将 scatterGatherEnable 变量设置为 true 并为 scatterGatherNextDescAddr 提供目录地址来做我想做的事情。
对于我想做的事情,您认为这个程序缺少什么?(S32K116 处理器对此有任何限制吗?您有执行此操作的示例项目吗?不管是 FlexI2C、FlexSPI 还是其他什么。)
另外,我在 flex 模块中添加了配置,如下所示:
const flexio_i2s_master_user_config_t flexio_i2s1_MasterConfig0 = {
. driverType = FLEXIO_DRIVER_TYPE_DMA ,
. 波特率= 725000UL ,
. 位宽= 8U ,
. txPin = 4U , //PTD2
. rxPin = 5U , //PTD3
. sckPin = 0U , //PTD0
. wsPin = 1U , //PTD1
. 回调=空
. 回调参数= NULL ,
. rxDMAChannel = 1U ,
. txDMAChannel = 0U
};
此外,如果我在 while 循环中通过 FLEXIO_I2S_DRV_MasterGetStatus() 检查后使用“FLEXIO_I2S_DRV_MasterSendData”函数发送数据,则 flex 模块会成功发送数据。但我需要的是创建一个无缝的 I2S 时钟信号。