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.

[参考译文] OMAPL138B-EP:处理器论坛、EDMA 剂量不能与乳化剂 XDS200配合使用

Guru**** 1135610 points
Other Parts Discussed in Thread: OMAP-L138
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1248189/omapl138b-ep-processors-forum-edma-dose-not-work-with-emulater-xds200

器件型号:OMAPL138B-EP
主题中讨论的其他器件:OMAP-L138

您好  

 目前、我正在 使用  具有 CCS7和没有 RTOS 的 OMAPL138ZWT 调试旧项目。  

 EDMA 是 McBSP1的2个 EDMA 通道、用于读取和写入 ADC 模块。  

ADC 值最终将存储在一个数组 ADCIN 中、其他函数只能使用 ADCIN 中的数据。

我检查了整个项目中只有一个用于 DAC 初始化的函数、如下文所示、它在初始化阶段被调用一次。  

它在我们的现有电路板中运行多年、但当我尝试使用仿真器 XDS200进行调试时、无法从该阵列中读取数据。  

它始终显示为0、但我在  存储器中检查了 DRR 0x01D11000、而有数据但非零。

它似乎 EDMA 无法正常工作。  

不清楚为什么?  提前感谢。  

流动是我们的准则。

___________________

volatile unsigned int ADCIN[16]={0、0、0、0、0、0、0、0、0、0、0、0、0、0};
volatile unsigned int ADCOUT[16]={0、0、0、0、0、0、0、0、0、0、0、0、0、0};

空 DmaInit (空)
{
/*应用程序提供的数据参数*/
// unsigned int chType = EDMA3_CHANNEL_TYPE_DMA;
unsigned int chNumR = EDMA3_CHA_MCBSP1_RX;
unsigned int tccNumR = EDMA3_CHA_MCBSP1_RX;
unsigned int chNumT = EDMA3_CHA_MCBSP1_TX;
unsigned int tccNumT = EDMA3_CHA_MCBSP1_TX;
// unsigned int edmaTC = EDMA3_TC_PI1;
unsigned int syncType = EDMA3_SYNC_A;
// unsigned int trigMode = EDMA3_TRIG_MODE_EVENT;
unsigned int evtQ = 0;/*使用的事件队列*/
unsigned int evtQ1 = 1;/*使用的事件队列*/
EDMA3CCPaRAMEntry ParamSet、paramSet1;
无符号 int RetVal、retVal1 = 0u;

无符号 short acnt = MAX_acount_adcData;
无符号短整型 bcnt = MAX_BCOUNT_ADcData;
无符号短整型 ccnt = MAX_CCCOUNT_ADcData;
/*
**在 DSP 处理器中启用 IRQ 中断。
*/
// SetupINTCInt ();

EDMA3Init (SOC_EDMA30CC_0_REGS、evtQ);
EDMA3Init (SOC_EDMA30CC_0_REGS、evtQ1);

//注册 Edma3Interrupts ();

/* ST1_ADDR->bitval.cpl = 0;*//* DP 间接寻址*/

/* ADC 通道*/

// ADCOUT[0]= 0x2008;/*0000 0000 0000 1000;CH0,AVdd =3.3V*/
// ADCOUT[1]= 0x2008;/*0000 0000 1000;CH0,AVdd =3.3V*/
// ADCOUT[2]= 0x2008;/*0000 0000 0000 1000;CH0,AVdd =3.3V*/

// ADCOUT[3]= 0x2108;/*0000 0001 0000 1000:CH2,AVdd = 3.3V*/
// ADCOUT[4]= 0x2108;/*0000 0001 0000 1000:CH2,AVdd = 3.3V*/
// ADCOUT[5]= 0x2108;/*0000 0001 0000 1000:CH2,AVdd = 3.3V*/

ADCOUT[0]= 0x0008;/*0000 0000 0000 1000;CH0,AVdd =3.3V*/
ADCOUT[1]= 0x0008;/*0000 0000 0000 1000;CH0,AVdd =3.3V*/
ADCOUT[2]= 0x0008;/*0000 0000 0000 1000;CH0,AVdd =3.3V*/

ADCOUT[3]= 0x0108;/*0000 0001 0000 1000:CH2,AVdd = 3.3V*/
ADCOUT[4]= 0x0108;/*0000 0001 0000 1000:CH2,AVdd = 3.3V*/
ADCOUT[5]= 0x0108;/*0000 0001 0000 1000:CH2,AVdd = 3.3V*/

ADCOUT[6]= 0x0208;/*0000 0010 0000 1000:CH4,AVdd = 3.3V*/
ADCOUT[7]= 0x0208;/*0000 0010 0000 1000:CH4,AVdd = 3.3V*/
ADCOUT[8]= 0x0208;/*0000 0010 0000 1000:CH4,AVdd = 3.3V*/

ADCOUT[9]= 0x0308;/*0000 0011 0000 1000:Ch6,AVDD = 3.3V*/
ADCOUT[10]= 0x0308;/*0000 0011 0000 1000:Ch6,AVdd = 3.3V*/
ADCOUT[11]= 0x0308;/*0000 0011 0000 1000:Ch6,AVDD = 3.3V*/



/*请求 DMA 通道和 TCC */
RetVal1 = EDMA3RequestChannel (SOC_EDMA30CC_0_REGS、EDMA3_CHANNEL_TYPE_DMA、
chNumT、tccNumR 和 evtQ1);

/*通道5到 McBSP 发送器*/
如果(true == retVal1)
{
/*使用传输特定信息填充参数集*/
paramSet1.srcAddr =(unsigned int)&ADCOUT;
paramSet1.destAddr =(unsigned int) DXR;

paramSet1.aCnt =(unsigned short) acnt;
paramSet1.bCnt =(unsigned short) bcnt;
paramSet1.cCnt =(unsigned short) ccnt;
/*设置 SRC/DES 索引*/
paramSet1.srcBIdx =(short) acnt;
paramSet1.destBIdx = 0;
if (syncType == EDMA3_SYNC_A)
{
//*同步传输模式*/
paramSet1.srcCIdx =(short) 0;
paramSet1.destCIdx =(简短描述) 0;

否则
{
/* AB 同步传输模式*/
paramSet1.srcCIdx =((short) acnt *(short) bcnt);
paramSet1.destCIdx =((short) acnt *(short) bcnt);

paramSet1.linkAddr = size_ParamSet *(PAR_LINK_START + 1);//(unsigned short) 0xFFFFu;
paramSet1.bCntReload =(unsigned short) 0u;
paramSet1.opt = 0u;
/* src 和 dest 处于 INCR 模式*/
paramSet1.opt &= 0xFFFFFFFCu;
/*对 TCC 进行编程*/
paramSet1.opt |=((tccNumR << EDMA3CC_OPT_TCC_SHIFT)和 EDMA3CC_OPT_TCC);
paramSet1.opt |=(EDMA3CC_OPT_TCCMOD_EARLY << EDMA3CC_OPT_TCCMOD_SHIFT);

/*启用中间和最终传输完成链*/
paramSet1.opt |=(1 << EDMA3CC_OPT_ITCCHEN_SHIFT);
paramSet1.opt |=(1 << EDMA3CC_OPT_TCCHEN_SHIFT);

if (syncType == EDMA3_SYNC_A)
{
paramSet1.opt &= 0xFFFFFFFBu;

否则
{
/* AB 同步传输模式*/
paramSet1.opt |=(1 << EDMA3CC_OPT_SYNCDIM_SHIFT);

/*现在,写入参数集。 */
EDMA3SetPaRAM (SOC_EDMA30CC_0_regs、chNumT、&paramSet1);
//将链接参数设置到存储器中
EDMA3SetPaRAM (SOC_EDMA30CC_0_REGS、(PAR_LINK_START + 1)、&paramSet1);


/*请求 DMA 通道和 TCC */
RetVal = EDMA3RequestChannel (SOC_EDMA30CC_0_REGS、EDMA3_CHANNEL_TYPE_DMA、
chNumR、tccNumR 和 evtQ);

/*通道4至 McBSP 接收器*/
如果(true == RetVal)
{
/*使用传输特定信息填充参数集*/
paramSet.srcAddr =(unsigned int) DRR;
paramSet.destAddr =(unsigned int)&ADCIN;

ParamSet.aCnt =(unsigned short) acnt;
ParamSet.bCnt =(unsigned short) bcnt;
ParamSet.cCnt =(unsigned short) ccnt;
/*设置 SRC/DES 索引*/
paramSet.srcBIdx = 0;
paramSet.destBIdx =(short) acnt;
if (syncType == EDMA3_SYNC_A)
{
//*同步传输模式*/
paramSet.srcCIdx =(短) 0;
paramSet.destCIdx =(简短描述) 0;

否则
{
/* AB 同步传输模式*/
ParamSet.srcCIdx =((short) acnt *(short) bcnt);
paramSet.destCIdx =((short) acnt *(short) bcnt);

paramSet.linkAddr = size_ParamSet *(PAR_LINK_START);//(unsigned short) 0xFFFFu;
ParamSet.bCntReload =(unsigned short) 0u;
paramSet.opt = 0u;
/* src 和 dest 处于 INCR 模式*/
paramSet.opt &= 0xFFFFFFFCu;
/*对 TCC 进行编程*/
paramSet.opt |=((tccNumR << EDMA3CC_OPT_TCC_SHIFT)和 EDMA3CC_OPT_TCC);//链接 DMA 通道5

/*启用中间和最终传输完成链*/
// ParamSet.opt |=(1 << EDMA3CC_OPT_ITCCHEN_SHIFT);
// ParamSet.opt |=(1 << EDMA3CC_OPT_TCCHEN_SHIFT);

if (syncType == EDMA3_SYNC_A)
{
paramSet.opt &= 0xFFFFFFFBu;

否则
{
/* AB 同步传输模式*/
paramSet.opt |=(1 << EDMA3CC_OPT_SYNCDIM_SHIFT);

/*现在,写入参数集。 */
EDMA3SetPaRAM (SOC_EDMA30CC_0_regs、chNumR、&ParamSet);
//将链接参数设置到存储器中
EDMA3SetPaRAM (SOC_EDMA30CC_0_REGS、(PAR_LINK_START)、&ParamSet);


// EDMA3EnableTransfer (SOC_EDMA30CC_0_REGS、chNumR、EDMA3_TRIG_MODE_EVENT);

EDMA3EnableTransfer (SOC_EDMA30CC_0_REGS、chNumT、EDMA3_TRIG_MODE_EVENT);//使用 McBSP 接收事件来触发 ADC 写入和读取

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

    您好!

    抱歉、我们无法再支持 OMAP-L138的裸机软件开发。 请参阅 此公告 并在其中找到综合资源。

    此致、

    建中市

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

    您好、 建中。

    感谢您的通知。

    但我认为、虽然我们在使用芯片 OMAP-L138、但它仅发挥了 DSP 的功能。   

    实际上、在 CCS 项目中、我们也 选择了目标 LCDKC6748、因此基本来说、它被用作 DSP 6748。  

    在本例中、它是与其他常见的6000系列 DSP 相似吗? 比如6713?

    谢谢。

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

    您好、Vincent:

    已了解您之前在使用 C6748 DSP、但我们也无法再支持 C674x/C67x 的软件开发。

    此致、

    建中市