NXP MCU 技术论坛
直播中

费加罗

8年用户 820经验值
私信 关注
[问答]

S32K116如何通过连续DMA使用flexI2S发送数据?

嗨,我正在尝试使用 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 时钟信号。

更多回帖

发帖
×
20
完善资料,
赚取积分