This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:ADC DMA 问题

Guru**** 2472780 points
Other Parts Discussed in Thread: HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/985071/tms570lc4357-adc-dma-problem

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

你(们)好

我实现 ADC - DMA。 DMA BTC 中断工作正常、我的 ADC 对话工作正常。 但 L2RAM 中的目标缓冲区无法填满。 在调试模式下、当我挂起程序并再次运行时、我会在目标缓冲区中看到 ADC 值、但当我再次挂起时、缓冲区完全为空。 我出了什么问题?

/* DMA 配置*/
g_dmaCTRL dmaCtrl;
dmaEnable();
dmaReqAssign (DMA_CH0、DMA_REQ10);
dmaCtrl.Sadd = 0xFF3E0000U;//源地址- ADC1组1的 FIFO
dmaCtrl.DADD =(uint32) adcDMAData;//目标地址
dmaCtrl.CHCTRL = 0;//在这之后触发通道,在这种情况下不会触发其它通道
dmaCtrl.FRCNT = 2;//帧计数
dmaCtrl.ELCNT = 32;//元素数量- 6个要读取的 ADC 值
dmaCtrl.ELDOFFSET = 0;//元素目标偏移
dmaCtrl.ELSOFFSET = 0;//元素源偏移
dmaCtrl.FRDOFFSET = 1;//帧目标偏移
dmaCtrl.FRSOFFSET = 0;//帧源偏移
dmaCtrl.PORTASGN = PORTB_READ_PORTA_WRITE;//Porta
dmaCtrl.RDSIZE = ACCESS_32_BIT;//读取大小
dmaCtrl.WRSIZE = ACCESS_32_BIT;//写入大小
dmaCtrl.tType = block_transfer;//transfer type - frame_transfer/block_transfer
dmaCtrl.ADDMODERD = ADDR_INC1;//地址模式读取
dmaCtrl.ADDMODEWR = ADDR_INC1;//地址模式写入:Addr_Fixed/ADDR_INC1/ADDR_OFFSET
dmaCtrl.AUTOINIT = AUTOINIT_ON;//自动初始化
dmaSetCtrlPacket (DMA_CH0、dmaCtrl);
dmaSetChEnable (DMA_CH0、DMA_HW);
dmaEnableInterrupt (DMA_CH0、BTC、DMA_INTA);

/* ADC DMA 配置*/

adcREG1->G1DMACR =(uint32)((uint32) 64U <<16U)|//g1_blocks 9位
(uint32)(((uint32) 0U << 3U)|//dma_g1_end 1位
(uint32)(((uint32) 1U << 2U)|//BLK_Xfer 1位
(uint32) 1U;//dma_en 1位

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅此主题:

    e2e.ti.com/.../rm57x-dma-adc-memory-behavior

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你王。

    我错过了 MCU 具有高速缓存的机会。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的问题是否已解决?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、非常感谢。

    我正在使用 FreeRTOS 和 halcogen 配置   写回缓存中的 MPU 区域。 我在通写 的 HL_SYS_MPU.asm 文件中将缓存类型更改为直写。 如果不更改生成的文件、我找不到任何解决方案、因此我手动更改缓存类型。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的告知