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.

初学 tms320f28035 遇到adc相关的问题

 a=AdcResult.ADCRESULT0>>4;       scia_xmit(a); 

 b=AdcResult.ADCRESULT0<<4;       scia_xmit(b);

拟采用这个语句将adc采集的信息通过串口通信在串口调试助手上显示,结果是如结果寄存器中的值为0EA1时,想让其显示值为EA10,但显示会是EA 10 EA  10  EA EA 10 10 等不是想要的结果

谢谢

  • 能详细说一下吗? 没太看明白。

    你直接看一下AdcResult.ADCRESULT0 这个寄存器里面的数据就可以了。

    然后在观察窗口输入a 和b, 就分别知道a和b的值了

    输出的结果就应该是a和b

  • 谢谢

    但我是想通过串口通讯将adc 转的值直接在串口调试助手上显示

    在 寄存器中看知道,我将转的值进行比较后出现了上面的问题  

     通过串口显示实时结果这个思路没错吧

  • scia_xmit(a); 发送的是低八位,SCITXBUF是个8位的寄存器;

  • 根据你所说,看到的结果寄存器中值是0EA1,然后执行

     a=AdcResult.ADCRESULT0>>4;       scia_xmit(a); 

     b=AdcResult.ADCRESULT0<<4;       scia_xmit(b);

    串口助手得到的结果就是EA 10;

    如果要得到0E A1,应该是

     a=AdcResult.ADCRESULT0>>8;       scia_xmit(a); 

     b=AdcResult.ADCRESULT0;       scia_xmit(b);

    函数scia_xmit(a)是发送结果寄存器的低八位,对于16位数据需要先进行移位、或&0xff 等处理 

  • 谢谢  

    我发现用那种方法得到的结果不稳定,得到0EA1   0E A1  不难这个我已经实现了

    但用这个方法得到的结果会出现重复的值 如0E 0E 0E A1 0E A1 A1等

    我后来准备写一个类似于printf 的函数解决这个问题  直接调用printf函数会显示0x2b12  超过了0x1000的存储范围

    我又发了个帖子

    TMS320F28035 adc转换结果在电脑上显示

    那里有我准备参考的程序