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.

[参考译文] TMDSEVM6678:可以#39;t 使 SPI DMA 正常工作!

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/587255/tmdsevm6678-can-t-get-the-spi-dma-work

器件型号:TMDSEVM6678

您好!

我正在尝试让 ADC 板在4线模式下通过 SPI 向评估板发送数据。  以 SPI DMA 环回为例、将其更改为只通过 SPI 向 ADC 发送一个字是行不通的、我无法找出原因。  运行代码后、我看不到任何时钟或片选信号、它会卡在"Test_EDMA"函数中来自 DMA 的发送中断的 while 环路中。  似乎什么都没有发生。  我不确定是应该在 SPICLK 引脚上看到连续时钟、还是只能看到一个时钟、但我仍然看不到任何东西、我不知道如何调试。  这是我正在运行的代码;

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define TEST_ACNT 2
#define TEST_BCNT 1
#define TEST_CCNT 1

#define TEST_SYCTYPE_AB 1
#define TEST_SYCTYPE_A 0

#define BUF_SIZE TEST_BCNT

UINT16 dstBuf[2];
UINT16 srcBuf[2]={0、0x80};

typedef volatile CSL_SpiRegs * CSL_SpiRegsOvly;

void Trigger_EDMA_channels'(void)
{
//


触发通道 CSL_edma3nL





、UCC32_chtchtchine_chtch4、UCC32_chtine_tchtchine_tandtch4 (void);1、UCC32_chtchtchtchtchine_tchine_tchine_tchine_tchine_tand_chine_tandtandtchine_tand_deCM4 (void) 1、1、1、1、1、tinchinchinch


// EDMA 模块初始化
CSL_edma3Init (NULL);

// EDMA 模块打开
hModule = CSL_edma3Open (&moduleObj、CSL_TPCC_1、NULL、&EdmaStat);


// SPI Tx 信道打开- Tx (SPIXEVT)的通道2
chParam.regionNum = CSL_EDMA3_REGION;
chSetup.que = CSL_EDMA3_QE_0;
chParam.chaNum = CSL_EDMA3_CHA_2;

hChannel0 = CSL_edma3ChannelOpen (&ChObj0、CSL_TPCC_1、&chParam、&EdmaStat);
chSetup.paramNum = chParam.chaNum;/CSL_EDMA3_CHA_2;
CSL_edma3HwChannelSetupParam (hChannel0、chSetup.paramNum);

// SPI Rx 通道打开- Rx (SPIREVT)的通道3
chParam.regionNum = CSL_EDMA3_REGAL_GLOBAL;
chSetup.que = CSL_EDMA3_QE_0;
chParam.chaNum = CSL_EDMA3_Cha_3;

hChannel1 = CSL_edma3ChannelOpen (&ChObj1、CSL_TPCC_1、&chParam、&EdmaStat);
chSetup.paramNum = chParam.chaNum;/CSL_EDMA3_CHA_3;
CSL_edma3HwChannelSetupParam (hChannel1、chSetup.paramNum);

//参数句柄打开
//打开所有句柄并保持
其就绪 paramHandle0 = CSL_edma3GetParamHandle (hChannel0、CSL_EDMA3_Cha_2、&EdmaStat);
paramHandle1 = CSL_edma3GetParameterHandle (hChannel1、CSL_EDMA3_CHA_3、&EdmaStat);


paramSetup.aCntbCnt = CSL_EDMA3_CNT_make (test_ACNT、(test_BCNT));
paramSetup.srcDstBIDx = CSL_EDMA3_BIDX_make (test_ACNT、0);
paramSetup.srcDstCidx = CSL_EDMA3_paramX_make (0、Cnt);paramSetup
= test_CCNT;
paramSetup.option = CSL_EDMA3_OPT_make (false、false、false、true、CSL_EDMA3_CHA_2、CSL_EDMA3_TCC_NORMAL、\
CSL_EDMA3_FIFOWIDTH_NONE、false、CSL_EDMA3_SYNC_A、CSL_EDMA3_ADDRMODE_INCR、CSL_EDMA3_ADDRMODE_INCR);

paramSetup.srcAddr =(uint32)(srcBuf);
paramSetup.dstAddr =(uint32)&((((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIDAT0);
paramSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_make (CSL_EDMA3_LINK_NULL、0);paramL_edma3Setup

(paramHandle0);param0

paramSetup.aCntbCnt = CSL_EDMA3_CNT_make (test_acNT、test_bcNT);
paramSetup.srcDstBIDx = CSL_EDMA3_BIDX_make (0、test_ACNT);
ccsSetup.srcDstCidx = CSL_EDMA3_paramX_make (0、0、0);CIDESDP.Cnt.Setup.srcDstCidx = CSL_paramX.paramX_make
= test_CCNT;
paramSetup.option = CSL_EDMA3_OPT_make (false、false、false、true、CSL_EDMA3_CHA_3、CSL_EDMA3_TCC_NORMAL、\
CSL_EDMA3_FIFOWIDTH_NONE、false、CSL_EDMA3_SYNC_A、CSL_EDMA3_ADDRMODE_INCR、CSL_EDMA3_ADDRMODE_INCR);
paramSetup.srcAddr =(uint32)&((((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIBUF);


paramSetup.dstAddr =(uint32) dstBuf;

paramSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_make (CSL_EDMA3_LINK_NULL、0);

CSL_edma3ParamSetup (paramHandle1、&paramSetup);
Trigger_EDMA_channels ();
}

Test_EDMA (void


)等待中断/(void)















void Ipr.region = CSL_EDMA3_REGISE_GLOBAL;regionIpr.intr = 0;regionIpr.intrh = 0;// do{CSL_edma3GetHWStatus (hModule、CSL_EDMA3_QUEST_INTRPEND、&regionIpr);while (regionIpr.intr & 0x08)!= 0x08);// channel_EDMA3_QUEST_INTREND (0x04);while (regionIpr.intr

CSL_FINST (hModule->regs->TPCC_Secr、TPCC_TPCC_Secr_SECR2、RESETVAL);
CSL_FINST (hModule->regs->TPCC_Secr、TPCC_TPCC_Secr_SECR3、RESETVAL);CSL_FINN (h 模



块1);CSL_DMANE (3


void Setup_SPI (void)
{
/*重置 SPI */
(((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIGCR0=
CSL_SPI_SPIGCR0_RESET_IN_RESET< SPIGCR0=
CSL_SPI_SPIGCR0_RESET_OUT_ON_RESET< SPIGCR1=
<CSL_SPI_SPIGCR1_CLKMOD_SHIFT|
CSL_SPI_SPIGCR1_MASTER_MASTER< SPIPC0=
CSL_SPI_SPIPC0_SOMIFUN_SPI<<CSL_SPI_SPIPC0_SOMIFUN_SHIFT|
CSL_SPI_SPIPC0_SIMOFUN_SPI<<CSL_SPI_SPIPC0_SIMOFUN_SHIFT|
<CSL_SPI_SPIPC0_CLKFUN_SHIFT|
CSL_SPI_SPIPC0_SCS0FUN0_SPI< SPIGCR1 |=
CSL_SPI_SPIGCR1_LOOP_DISABLE< SPIDAT1=
CSL_SPI_SPIDAT1_DFSEL_FORMAT0< SPIFMT[0]=
<CSL_SPI_SPIFMT_WAITENA_SHIFT|
<CSL_SPI_SPIFMT_SHIFTDIR_SHIFT|
<CSL_SPI_SPIFMT_POLARITY_SHIFT|
<CSL_SPI_SPIFMT_PHASE_SHIFT|
0x1<<CSL_SPI_SPIFMT_PRESCALE_SHIFT|
0x10< SPIINT0 =
CSL_SPI_SPIINT0_ENABLEHIGHZ_ENABLEHIG0_ENABLEHIGHZ_SHIFT|CSL_SPIINT0_OVRNINT_SPINT_ENABLE_SPIC0_SPINT_SPIRINT_SPINT_SPICT_SPINT_SPINT_SPICT_SPINT_SPINT_SPINT_SPICT_SPINT_SPINT_SPICT_SPINT_SPINT_SPICT_SPINT_SPINT_SPICT_SPICT_ENA|_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPINT_SPICT_SPICT_SPINT_SPINT_SPINT_SPINT_SPICT_SPICT_SPINT_SPICT_SPINT_SPINT_SPICT_SPICT_SPICT_SPINT_SPINT_SPINT_SPICT_SPICT_SPICT_SPICT_SPICT_SPICT_





SPIGCR1|=
CSL_SPI_SPIGCR1_ENABLE_ENABLE< SPIINT0 |=
CSL_SPI_SPIINT0_DMAREQEN_ENABLE< SPIFLG & 0x00000200));

//while (!((((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIFLG & 0x00000100);

}


void main (void)
{

//设置 EDMA for SPI transfer
Setup_EDMA ((UINT32) srcBuf、(UINT32)

)/SPI


transfer status 和配置中断/tma/tma/dma/enable transfer completion
TEST_EDMA ();

//关闭 EDMA 通道/模块*/
close_EDMA ();


printf ("测试结束\n");

}

当我真的被骗了时,能有人帮我吗?  我感谢您的任何回应。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还尝试将芯片选择设置为高电平有效和低电平有效:
    (((CSL_SpiRegsOvly) CSL_SPI_Regs)->SPIDEF=<CSL_SPI_SPIDEF_CSDEF0_SHIFT;

    它根本不会改变任何东西。 检查 SPI 寄存器的一切似乎都与预期的一样、除了 SPIFLG 上的传输缓冲器空位变为高电平并且从不清除。 如果您有任何调试建议、请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我迫切需要一些帮助!

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

    专家似乎在想什么。 我的经验是使用 C6748而不是 C6678。 一些猜测。 不应在 SPI TX 和 Rx 寄存器上递增。 应设置 FIFO 宽度以匹配 SPI 数据宽度。

    paramSetup.aCntbCnt = CSL_EDMA3_CNT_make (TEST_ACNT、(TEST_BCNT));
    paramSetup.srcDstBIDx = CSL_EDMA3_BIDX_make (test_ACNT、0);
    paramSetup.srcDstCidx = CSL_EDMA3_CIDX_make (0、0);
    paramSetup.cnt = TEST_CCNT;
    paramSetup.option = CSL_EDMA3_OPT_make (
    CSL_EDMA3_ITCCH_DIS、
    CSL_EDMA3_TCCH_DIS、
    CSL_EDMA3_ITCINT_DIS、
    CSL_EDMA3_TCINT_EN、
    CSL_EDMA3_CHA_2、 /*TCC*/
    CSL_EDMA3_TCC_NORMAL、
    CSL_EDMA3_FIFOWIDTH_16BIT、
    CSL_EDMA3_STATIC_DIS、
    CSL_EDMA3_SYNC_A、
    CSL_EDMA3_ADDRMODE_CONST、/* DAM*/
    CSL_EDMA3_ADDRMODE_INCR);/* SAM*/
    paramSetup.dstAddr =(uint32)&((((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIDAT0);
    paramSetup.srcAddr =(uint32)(srcBuf);
    paramSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_make (CSL_EDMA3_LINK_NULL、0);
    CSL_edma3ParamSetup (paramHandle0、paramSetup);
    
    paramSetup.aCntbCnt = CSL_EDMA3_CNT_make (TEST_ACNT、TEST_BCNT);
    paramSetup.srcDstBIDx = CSL_EDMA3_BIDX_make (0、TEST_ACNT);
    paramSetup.srcDstCidx = CSL_EDMA3_CIDX_make (0、0);
    paramSetup.cnt = TEST_CCNT;
    paramSetup.option = CSL_EDMA3_OPT_make (
    CSL_EDMA3_ITCCH_DIS、
    CSL_EDMA3_TCCH_DIS、
    CSL_EDMA3_ITCINT_DIS、
    CSL_EDMA3_TCINT_EN、
    CSL_EDMA3_CHA_3、 /*TCC*/
    CSL_EDMA3_TCC_NORMAL、
    CSL_EDMA3_FIFOWIDTH_16BIT、
    CSL_EDMA3_STATIC_DIS、
    CSL_EDMA3_SYNC_A、
    CSL_EDMA3_ADDRMODE_INCR、/* DAM*/
    CSL_EDMA3_ADDRMODE_CONST);/* SAM*/
    paramSetup.dstAddr =(uint32) dstBuf;
    paramSetup.srcAddr =(uint32)&((((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIBUF);
    paramSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_make (CSL_EDMA3_LINK_NULL、0);
    CSL_edma3ParamSetup (paramHandle1、paramSetup);
    

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

    非常感谢 Norman 的回答。  虽然您的建议非常有价值、但它并没有改变我的应用程序的行为、至少我可以看到。  

    我已经让应用程序以某种方式运行到了末尾(我不知道如何、我想 ESR 寄存器的标志打开了、并且在我对电路板进行下电上电后将其清除!)、但我仍然看不到来自 SPI 的任何信号。  我认为可能有一个字节太短、以至于我会在示波器上错过它、因此我使 BCNT 5从更大的源缓冲区读取更多数据、这使它再次停留在 while 环路上以进行中断!  有什么想法吗?

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

    我回顾了我的 C6748 SPI EDMA 代码、您的原始设置是正确的。 忽略我在上一篇文章中所说的话。 对此非常抱歉。 这就是我使用的方法:

    #define TEST_ACNT 2 /* 1=8位或2=16位字*/
    #define TEST_BCNT 1 /*字数*/
    #define TEST_CCNT 1
    
    paramSetup.aCntbCnt = CSL_EDMA3_CNT_make (test_ACNT、test_BCNT);
    paramSetup.srcDstBIDx = CSL_EDMA3_BIDX_make (test_ACNT、0);/*src+=ACNT、dst+=0*/
    paramSetup.srcDstCidx = CSL_ADDRK;* 0、0、0* paramSYNC_0、0*
    = test_CCNT;
    paramSetup.option = CSL_EDMA3_OPT_make (
    CSL_EDMA3_ITCCH_DIS、
    CSL_EDMA3_TCCH_DIS、
    CSL_EDMA3_ITCINT_DIS、
    CSL_EDMA3_TCINT_EN、
    CSL_EDMA3_CHA_2、 /*TCC*/
    CSL_EDMA3_TCC_NORMAL、
    CSL_EDMA3_FIFOWIDTH_NONE、
    CSL_EDMA3_STATIC_DIS、
    CSL_EDMA3_SYNC_A、
    CSL_EDMA3_ADDRMODE_INCR、/* DAM*/
    CSL_EDMA3_ADDRMODE_INCR);/*SAM*/
    paramSetup.dstAddr =(uint32)&((((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIDAT1);/*是 SPIDAT0*/
    paramSetup.srcAddr =(uint32)(srcBuf);
    paramSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_make (CSL_EDMA3_LINK_NULL、0);
    CSL_edma3ParamSetup (paramHandle0、&Setup);paramSetup.aparambCnt
    
    = CSL_EDMA3_CNT_make (test_ACNT、test_BCNT);
    paramSetup.srcDstBIDx = CSL_EDMA3_BIDX_make (0、test_ACNT);/*src+=0、dst+=ACNT*/
    paramSetup.srcDstCidx = CSL_ADDRK 0、0、0*使用 SYNC_0
    = test_CCNT;
    paramSetup.option = CSL_EDMA3_OPT_make (
    CSL_EDMA3_ITCCH_DIS、
    CSL_EDMA3_TCCH_DIS、
    CSL_EDMA3_ITCINT_DIS、
    CSL_EDMA3_TCINT_EN、
    CSL_EDMA3_CHA_3、 /*TCC*/
    CSL_EDMA3_TCC_NORMAL、
    CSL_EDMA3_FIFOWIDTH_NONE、
    CSL_EDMA3_STATIC_DIS、
    CSL_EDMA3_SYNC_A、
    CSL_EDMA3_ADDRMODE_INCR、/* DAM*/
    CSL_EDMA3_ADDRMODE_INCR);/*SAM*/
    paramSetup.dstAddr =(uint32) dstBuf;
    paramSetup.srcAddr =(uint32)&((((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIBUF);
    paramSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_make (CSL_EDMA3_LINK_NULL、0);paramL_edma3Setup
    (param1);param1
    

    我使用 SPIDAT1代替 SPIDAT0、因为 CSHOLD、WDEL、CSNR 似乎不适用于 SPIDAT0。

    这条线路可能会引起问题、因为它可能会触发传输。

    (((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIDAT1=
    <CSL_SPI_SPIDAT1_DFSEL_SHIFT;
    

    您需要对 SPIDAT1寄存器的某些部分执行字节写入操作、以避开 TXDATA 部分。

    我不是该处理器的家族。 因此、这些问题可能是愚蠢的。 您是否为 SPI 控制器启用了电源和时钟? 是引脚的引脚多路复用还是门控? 是否确定引脚未短接? 您能否将引脚重新分配为 GPIO 并进行切换?

    这就是我得到的所有东西。 希望一些专家能发表意见。

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

    在我的 C6748代码中、启用 SPI DMA 中断时 DMA 启动。 这条线可能太早了。

    (((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIINT0 |=
    <CSL_SPI_SPIINT0_DMAREQEN_SHIFT;
    

    我认为它应该在等待循环周围启用和禁用、例如、

    (((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIINT0 |=
    CSL_SPI_SPIINT0_DMAREQEN_ENABLE< SPIINT0 &=
    ~(CSL_SPI_SPIINIT0_DMAREQEN_ENABLE<<CSL_SPI_SPIINT0_DMAREQEN_SHIFT);
    

    但是、我使用了一个中断处理程序。 轮询可能不同。

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

    非常感谢 Norman。  我已经尝试过这些配置的许多不同组合、似乎什么都不起作用。  回到原始设置后、我也不会得到相同的行为、这令人沮丧。  现在的问题是、我的 SER 和 EMR 标志会在 SPIINT0_DMAREQEN_ENABLE 之后立即开启。  我尝试了以下行:

    CSL_edma3 HwChannelControl (hChannel0、CSL_EDMA3_CMD_CHANNEL、空); 

    运气差。  它仅在硬复位后清除!  我不太理解是什么触发了这些错误。  如果您对此有任何意见、我将不胜感激。

    另外、您是否会共享您的代码以了解如何处理中断、而不是轮询。

    非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的代码适用于 C6748/StarterWare。 它不适用于 C6678/CSL。 就我所说的、您的参数设置看起来是正确的。 事件编号和通道编号看起来不错。 您在引脚上看不到任何内容、这一事实表明这可能是硬件问题。 您是否尝试过定向轮询 IO? 无 EDMA 或中断。 只需进行 SPI 设置并写入 SPIDAT1或 SPIDAT1即可查看引脚是否有任何输出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Norman。 我尚未尝试简单的 SPI 设置。 我今天要这么做。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    所有事情都是以前完成的。 我进行了一些搜索。 您的 SPI 代码似乎是从此线程派生出来的:

    e2e.ti.com/.../170614

    查看 Steven Ji 的一篇文章、他在其中附加了4670.EDMA_SPI.zip。
    Xinwei shi 的以下回复验证了它在 C6678 EVM 板上的工作原理。

    Steven 的代码和您在第一篇帖子中的代码之间存在一些关键差异。
    - DMA 通常对缓冲器有严格的对齐要求。 Steven 使用#pragma 与8个字节对齐(我认为)。 您的代码将与 uint16或2个字节对齐。 DMA 控制器不喜欢您的地址、它将生成错误。 也就是说,该文档指出,如果 SAM oir DAM 为1,则存在对齐要求。 我想您将其设为0。 没关系。
    - Steven 似乎对 global_address()进行了一些地址转换

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

    非常感谢 Norman。  我确实按照 Steven 在该帖子中的建议将缓冲区更改为与.ddrdata 段中的8个字节对齐。  现在、我看到我的数据进入 SPIDAT0寄存器、但现在它似乎卡在那里、EMR 和 SER 寄存器表明 DMA 被错过。  我 现在还得到了一个 BITERRFLG、这是出于某种原因。 因此、我猜问题是 ADC 和硬件的接收点。  我将详细介绍它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通常、SPI 主器件无法判断从器件是否存在。 无论从器件是否存在、都应运行代码。 轮询 Tx 和 Rx 事件时可能需要小心、因为顺序通常不可预测。 您拥有的任何循环都应同时处理 Tx Before Rx、Rx Before Tx 或 Tx/Rx。

    您是否未修改过使用 Stevens 代码? 他的代码假定有特定的顺序、但我认为该顺序适合您的处理器 C6678。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Norman 的全力支持。  我想我现在已经把它挂起了。  为了更新它是否对任何人有用、我遇到的许多问题之一是在参数设置的 opt 字段中禁用静态位并链接到 NULL、这为我提供了 SER 标志。  由于我只想传输一个字、所以我必须设置静态。  

    此外、根据评估模块手册、我的 SPI 设置应该使用 CS1 (SCS0FUN1)引脚而不是 CS0:

    /*在4引脚 SCS 模式下配置 SPI */
    (((CSL_SpiRegsOvly) CSL_SPI_regs)->SPIPC0=
    CSL_SPI_SPIPC0_SOMIFUN_SPI<<CSL_SPI_SPIPC0_SOMIFUN_SHIFT|
    CSL_SPI_SPIPC0_SIMOFUN_SPI<<CSL_SPI_SPIPC0_SIMOFUN_SHIFT|
    <CSL_SPI_SPIPC0_CLKFUN_SHIFT|
    CSL_SPI_SPIPC0_SCS0FUN1_SPI<<CSL_SPI_SPIPC0_SCS0FUN1_SHIFT; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    真是个好消息。 感谢您发布您的解决方案。 我看到过相同类型的 EDMA 错误、但我忽略了这些错误、因为传输本身似乎正常工作。 现在我知道了。

    在您的上一篇帖子中、单击"已验证"或"已解决"按钮、以获得满意的绿色轮廓并在主题中进行标记。 也为您提供了一些论坛要点。