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.

关于28035的AIOMUX1的应用



在28035例程中,我在这将AIOMUX定义为IO功能,将IO分别加电压时,没有定义其为ADC输入引脚,为何还有正确的采样值呢?岂不是定义IO和ADC都一样了?还是说我哪个地方又没有注意到,谢谢指正!

 GpioCtrlRegs.AIOMUX1.bit.AIO2 = 0;    // Configure AIO2 for A2 (analog input) operation
    GpioCtrlRegs.AIOMUX1.bit.AIO4 = 0;    // Configure AIO4 for A4 (analog input) operation
    GpioCtrlRegs.AIOMUX1.bit.AIO6 = 0;    // Configure AIO6 for A6 (analog input) operation
    GpioCtrlRegs.AIOMUX1.bit.AIO10 = 0;   // Configure AIO10 for B2 (analog input) operation
    GpioCtrlRegs.AIOMUX1.bit.AIO12 = 0;   // Configure AIO12 for B4 (analog input) operation
    GpioCtrlRegs.AIOMUX1.bit.AIO14 = 0;   // Configure AIO14 for B6 (analog input) operation

  • 向28035的80个引脚的第16个引脚ADCINA2/COMP1A/AIO2外加1v的模拟量,经过AdcResult.ADCRESULT0数字量为1240,所以说是正确的,

    AdcRegs.ADCSOC0CTL.bit.CHSEL = 2; //set SOC0 channel select to ADCINA4
    AdcRegs.ADCSOC1CTL.bit.CHSEL = 2;

    我疑问是无论GpioCtrlRegs.AIOMUX1.bit.AIO2 = 0;还是GpioCtrlRegs.AIOMUX1.bit.AIO2 = 2;采样结果都正确呢,

    我配置成GpioCtrlRegs.AIOMUX1.bit.AIO2 = 0;即将AIOMUX1配置成IO口功能了,此口应该不能采样了啊,结果为何还能采样正确?这是我的疑问,请帮我解惑!谢谢

  • 刚在system control user guide 中确认了一下,当AIO功能使能的时候,并不会禁止输入到ADC的通过,只不过AIO模块能够去控制这个IO口。

    Eric

  • 多谢指点啊,搞明白了。我现在准备调试CLA,但是对其如何调试现在不明白。

    我下载的28035例程,DSP2803x_examples\cla_adc,我在中断函数中cla1_isr2()打断点,为何进不了呢,硬件设置也正确,采样有结果。

    我想问下如何进入到CLA.ASM函数中进行单步调试呢,请大侠们指点迷津。我应用的ccs3.3升级版。

    这个例程中:

    // This interrupt occurs when CLA Task 2 completes
    interrupt void cla1_isr2()
    {
    AdcRegs.ADCINTFLGCLR.bit.ADCINT2 = 1; // Clear ADCINT2 flag reinitialize for next SOC
    PieCtrlRegs.PIEACK.all = 0xFFFF;
    }

    是不是在ADCIN2中断发生时就会进入CLA.asm程序?

  • 1. 你应该先仔细看一下CLA 的user guide, 看完之后再调试例程。

    2. CLA是一个协处理核,也可以看成是一个中断处理的内核。ADC产生一个中断信号,可以触发CLA执行一个任务,CLA执行完任务后,可以产生一个中断给CPU,也即使cla1_isr2.

    3. 要调试CLA,需要connect CLA, 然后load symbol 到CLA中, 要单步调试的话,CLA需要设置软件断点,如下程序

    interrupt void Cla1Task1 ( void )
    {
    //Local Variables

    //Code
    __mdebugstop();//断点
    yn = xn*S1_B[0] + W2[1];
    W2[0] = xn*S1_B[1] + yn*S1_A[1] + W1[1];
    W2[1] = W2[0];
    W1[0] = xn*S1_B[2] + yn*S1_A[2];
    W1[1] = W1[0];
    // __mnop();
    // __mnop();
    // __mnop();
    }

    Eric

  • CLA也可以用C语言编写吗,Mdebugstop和Mstop功能是否一样的,您能否给一个CLA文档,我在ti网站上找不到,具体怎么cla的文档。谢谢

  • of course 可以用C语言编程,使用CCSv5.5. Mdebugstop和Mstop功能是一样的,只不过是在C还是在汇编而已。

    CLA 文档就是F28035的主页下面的user guide中。

    ERIC

  • 能否给推荐一个关于cla汇编指令的文档啊,例程中比如,这些真的搞不懂MSTOP , MDEBUGSTOP , MBCNDD, MCCNDD  or MRCNDD 

  • 里面有CLA的培训资料:
    http://processors.wiki.ti.com/index.php/C2000_Archived_Workshops#C2000_Piccolo_Multi-Day_Workshop_-_Revision_2.1_December_2010_.28ExpKit_F28035.3B_CCSv4.2.3B_DSP.2FBIOS_5.41.29