Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
您好!
我想使用三个 EDMA3通道。 我使用以下代码请求通道。
// EDMA 变量
EDMA3_DRV_Handle hEDMA;
EDMA3_DRV_RESULT EDMA_RESULT = EDMA3_DRV_SOK;
uint32_t EDMA_ID = 0;
EDMA3_DRV_PaRAMRegs EDMA_PARAM_1 ={0、0、0、0、0、0、0、0、0};
EDMA3_DRV_PaRAMRegs EDMA_PARAM_2 ={0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0};
EDMA3_DRV_PaRAMRegs EDMA_PARAM_3 ={0、0、0、0、0、0、0、0、0、0、0、0、0};
//初始化 EDMA
hEDMA = edma3init (EDMA_ID、&EDMA_RESULT);
//向 Resource Manager 请求通道1
uint32_t EDMA_TCC_1 = EDMA3_DRV_TCC_ANY;//传输完整代码(TCC)
uint32_t EDMA_Chid_1 = EDMA3_DRV_DMA_CHANNEL;//通道 ID
EDMA_RESULT = EDMA3_DRV_requestChannel (hEDMA、&EDMA_Chid_1、&EDMA_TCC_1、(EDMA3_RM_EventQueue) 0、NULL、 null);
if (EDMA_RESULT = EDMA3_DRV_SOK){
printf ("DMA 通道%d 请求成功。\n"、EDMA_Chid_1);
} 否则{
printf ("DMA 通道%d 请求失败、代码为#%d!\n"、EDMA_Chid_1、EDMA_Result);
}
//从 Resource Manager UINT32_t
EDMA_TCC_2 = EDMA3_DRV_TCC_ANY 请求通道2;//传输完整代码(TCC)
uint32_t EDMA_Chid_2 = EDMA3_DRV_DMA_CHANGE_ANY;//通道 ID
EDMA_RESULT = EDMA3_DRV_requestChannel (hEDMA、&EDMA_Chid_2、&EDMA_TCC_2、(EDMA3_RM_EventQueue) 0、NULL、 null);
if (EDMA_RESULT = EDMA3_DRV_SOK){
printf ("DMA 通道%d 请求成功。\n"、EDMA_Chid_2);
} 否则{
printf ("DMA 通道%d 请求失败、代码为#%d!\n"、EDMA_Chid_2、EDMA_Result);
}
//向 Resource Manager 请求通道3
uint32_t EDMA_TCC_3 = EDMA3_DRV_TCC_ANY;//传输完整代码(TCC)
uint32_t EDMA_Chid_3 = EDMA3_DRV_DMA_CHANNEL;//通道 ID
EDMA_RESULT = EDMA3_DRV_requestChannel (hEDMA、&EDMA_Chid_3、&EDMA_TCC_3、(EDMA3_RM_EventQueue) 0、NULL、 null);
if (EDMA_RESULT = EDMA3_DRV_SOK){
printf ("DMA 通道%d 请求成功。\n"、EDMA_Chid_3);
} 否则{
printf ("DMA 通道%d 请求失败、代码为#%d!\n"、EDMA_Chid_3、EDMA_Result);
}
仅分配两个通道(Chid_1和 Chid_2)、第三个通道(chID3)存在错误-132 (EDMA3_DRV_E_DMA_CHANNE_CHANNE_NAVAIL)。
DMA 通道0请求成功。 DMA 通道1请求成功。 DMA 通道1002请求失败、代码#-132!
我正在使用:
- CCSv7.3
- Processor SDK RTOS v04.02.00
- 编译器 TI v8.1.4
- EDMA3 LLD v 2.12.5。
如何申请三个 EDMA3通道?