主题中讨论的其他器件: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位