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.
TI 同事,您好!
现在我们在使用 DMA 时遇到了问题。
我们正在为以下2个模块使用 DMA:
1. MCSPI
当我们只将 MCSPI 与 DMA 配合使用时,对于 TX 和 RX 来说 SPI 通信都可以,但当我们添加项目2 OSPI 并启用 Marco 时
在 OSPI 引导中,SBL_USE_DMA 则 SPI 通信为空。在 SPI_DMA.c 函数 SPI_DmaInitTxCh 中,由于以下的返回值返回 UDMA_EFAIL,因此该函数失败。
RetVal = UDMA_chOpen (drvHandle,txChHandle,chType,&chPrms);
那么,在这种情况下,DMA 通道是否会发生冲突? 或对这种情况的任何想法?
期待您的回复。
谢谢。
巴西
中西惠
添加信息:
SPI 通信失败,因为 SPI_Init 失败,代码链失败,如下所示:
SPI_Init-->SPI_DmaInitTxCh-->UDMA_chOpen 失败
您好,
请就此提供更多信息吗? 您使用的是哪个 SPI 实例? 您正在尝试在 DMA 模式下启用哪一个内核? 从 chOpen API 返回的错误是什么?
我们可能只是需要分配更多的渠道,但首先需要了解到底是什么问题。
此致,
布里耶什
您好,
我使用了 R5F 核心 MCU SPI0,是的,我想在 DMA 模式下同时启用 SPI 通信和 OSPI 引导,错误从 chOpen 函数返回“UDMA_EFAIL”。这里粘贴 SPI 配置供您参考。
const (结构 SPI_ConfigType_s,SPI_CONFIG_DATA) SpiDriver =
{
.maxChannels = 1U,
maxJobs = 1U,
最大序列= 1U,
最大黄细胞单位= 1U,
maxExtDevCfg = 1U,
.udmaInstId =(UINT32) UDMA_INST_ID_MCU_0,
.cacheWbINV =(SPI_CacheWbINV) NULL_PTR,
.cacheWb =(SPI_CacheWb) NULL_PTR,
.cacheInv =(SPI_CacheInv) NULL_PTR,
.channelCfg =
{
[0]=
{
通道 BufType = SPI_EB,
.dataWidth = 8U,
缺省 TxData = 0U,
最大 BufLength = 160U,
.transferType = SPI_MSB,
},
},
.job配置=
{
[0]=
{
.jobPriority = SPI_Job_Priority_0,
hwUnitId = SPI_UNIT_MCC_MCSPI0,
.SPI_JobEndNotification = SpiApp_McuMcspiJob0 EndNotification,
.channelPerJob = 1U,
.channelList =
{
[0]= 0U,
},
},
},
seqCfg =
{
[0]=
{
seqInterruptible =(uint8) true,
.SPI_SequenceEndNotification = SpiApp_McuMcspiSeq0 EndNotification,
.jobPerseq = 1U,
.joblist =
{
0U,
},
},
},
hwUnitCfg =
{
[0]=
{
hwUnitId = SPI_UNIT_MCC_MCSPI0,
.enabledmaMode =(布尔型) true,
dmaTxChIntrNum =82,
dmaRxChIntrNum =83,
},
},
extDevCfg =
{
[0]=
{
.mcspi =
{
.cssEnable =(uint16) TRUE,
csMode = SPI_Continuous,
cspolarity = SPI_LOW,
csIdleTime = SPI_DATADELAY_0,
.lkDivider = 11U,
clkMode = SPI_CLK_MODE_3,
txRxMode = SPI_TX_RX_MODE_Both,
.startBitEnable =(uint16) false,
.startBitLevel = SPI_LOW,
.ReceptionLineEnable = data_line_0_reception,
.transmissionLineEnable = data_line_1_transmission,
},
},
},
};
你好,布里耶什,
是否有更新?
巴西
西惠
添加更多信息:
1.在 chOpen API -> Sciclient_rmPsilPair API 中失败,返回值为 CSL_EFAIL。
2.如何 分配更多频道?
嗨 June Lee,Sihui Zhong,
我将在星期五之前了解这一点,并通过其他 DMA 通道与您联系。
此致,
布里耶什
你好,布里耶什,
是否有更新?
你好,June Lee,
如果您使用的是 Linux 引导流,请使用随附的 sysfw.itb 文件并检查 您是否能够使 OSPI 和 McSPI 在 DMA 启用模式下工作?
/CS-file/__key/communityserver-discussion-components-files/791/8231.sysfw.zip
如果您使用的是 SBL 启动流,请替换 ti-processor-sdk-RTos-j721e-EVM-EVM-EVM-EVM-EVM-EVM-EVM-EVM-EVM-08_00_04_00_37\packages \ti\drv\sciclient\soc\V1文件夹中的附加文件,运行“make sciclient_boardcfg -08_jcfg -00_ski_-08_packages” ,并从 SDK_trab__trab_-08_trab_-_trecons_-08-_trab_coti-08中重新生成所有驱动程序包,并从 SDK__trab__trab_trab_trab_-0700-__trab__-
基本上,我已将 MCU R5F 的块复制通道增加到4个。 因此,如果它使用块复制通道,它应该可以正常工作。
此致,
布里耶什
您好,布里耶什:
我使用了 SBL 引导流,我曾经尝试 过,但在调用 SPI_DmaInitTxCh -> UDMA_chOpen 时仍失败,它重新截断 了 CSL_EFAIL。
还有什么需要更新的吗?
添加信息:
我使用 SBL_cust_img_mcu1_0_release.tiimage 加载程序,我发现,如果我 使用 DMA 构建 SBL_cust_img_mcu1_0_release.tiimage,它应该会引导 UDMA_chOpen 故障,但当我 使用 DMA 构建 UDMA_chOpen 时,它将打开 UDMA_Open 成功。
你好,布里耶什,
您的解决方案是否缺少一些信息? 据我了解 ,0574.sciclient_5F00_defaultBoardcfg_5F00_rM.c 是要增加 MCM_0_R5的 DMA 资源块或通道,但我们仍需要在您提供的前提条件下(增加更多块后)更改 OSPI DMA 通道或 SPI 通信 DMA 通道以实现连接? 但是,我们如何改变 DMA 的渠道,您能否 提供更多建议?
如果有任何误解,请纠正我。
谢谢。
巴西
西惠
您好,布里耶什,
是否有更新?