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.

[参考译文] TMS570LS1224:ADC 和 SPI 示例不起作用

Guru**** 2539500 points
Other Parts Discussed in Thread: TMS570LS1224

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1082588/tms570ls1224-adc-and-spi-example-not-working

部件号:TMS570LS1224

我尝试在 TMS570LS1224器件中实施 ADC 代码和 SPI 代码。 SPI 代码正在运行,但当我尝试在 CCS 调试中查看表达式窗口时,ADC 不提供数据。

但如果我单独运行 ADC 代码或 SPI 代码,我根本不会遇到任何问题。

如果我需要在将 SPI 和 ADC 代码组合在一起的同时更改任何内容,请告诉我。

代码:

/*用户代码开始(0)*/
/*用户代码结束*/

/*包括文件*/

#include "sys_common.h"

/*用户码开始(1)*/
#include "ibspi.h"(#include "ibspi.h")
#include "adc.h"
#include "sci.h"
#包括"Gio.h"
#include "system.h"
/*用户代码结束*/

/**@fn void main (void)
*  @应用程序主要功能简介
*  @请注意,默认情况下此函数为空。
*
*  此功能在启动后调用。
*  用户可以使用此功能来实施应用程序。
*

/*用户代码开始(2)*/
/*用户代码结束*/
//uint16计数= 3;
adcData_t ADC_DATA[12];


Int main (无效)

/*用户码开始(3)*/

   UINT32 ch_count=0;
   UINT32 id   =0;
   UINT32值=0;

   UINT16_t reset []= { 0XD000, 0XD000, 0XD000, 0XD000}; //重置所有状态寄存器

 hetInit();
   gioInit();
   mibspiInit();/*初始化 SPI */
   //命令执行流
   //重置-->开始-->写入 C5 --> C5数据-->写入 C3 --> C3数据-->停止-->读取 C5 -->读取 C3 -->读取 C3

  mibspiSetData (mibspiREG1,0,重置);                  //将数据设置为 mibspiREG1寄存器
  mibspiTransfer (mibspireG1,0);                        //开始从 mibspireG1寄存器传输数据
  While (!(mibspiIsTransferComplete (mibspireG1,0))));    //检查传输是否已完成,然后仅发送下一组数据

While (1)(同时)
       {
       /*...等待并读取转换计数*/
                 while ((adcIsConversionComplete (adcREG1,adcGROUP1)=0);
                 ch_count = adcGetData (adcREG1,adcGROUP1,&ADC_DATA[2]);

                 CH_COUNT = CH_COUNT;
                 /*转换结果:                                      */
                 /* ADC_DATA[0]->应具有 Group1通道1 */的转换
                 /* ADC_DATA[1]->应具有 Group1通道2 */的转换

                 ID   = ADC_DATA[2].id;
                 值= ADC_DATA[2].value;




       };

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

    您好, Sakthi-san,

    当您同时运行 SPI 和 ADC 时,代码是否会运行到 While (1)循环中? 代码是否在 while (1)循环中的某个位置挂起?

    您在哪里执行 ADC 初始化并启动 ADC?

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

    是的,代码在之间停止。 我忘记了将 adcInit 包括在内,并开始在我以前的代码中进行转换。 请找到随附的修订代码。

    代码:

    /*用户代码开始(0)*/
    /*用户代码结束*/

    /*包括文件*/

    #include "sys_common.h"

    /*用户码开始(1)*/
    #include "ibspi.h"(#include "ibspi.h")
    #include "adc.h"
    #include "sci.h"
    #包括"Gio.h"
    #include "system.h"
    /*用户代码结束*/

    /**@fn void main (void)
    *  @应用程序主要功能简介
    *  @请注意,默认情况下此函数为空。
    *
    *  此功能在启动后调用。
    *  用户可以使用此功能来实施应用程序。
    *

    /*用户代码开始(2)*/
    /*用户代码结束*/
    //uint16计数= 3;
    adcData_t ADC_DATA[12];

    Int main (无效)

    /*用户码开始(3)*/

       UINT32 ch_count=0;
       UINT32 id   =0;
       UINT32值=0;

       UINT16_t reset []= { 0XD000, 0XD000, 0XD000, 0XD000}; //重置所有状态寄存器
       
       hetInit();
       gioInit();
       mibspiInit();/*初始化 SPI */
       adcInit();
       
       adcStartConversion (adcREG1,adcGROUP1);
       //命令执行流
      

      mibspiSetData (mibspiREG1,0,重置);                  //将数据设置为 mibspiREG1寄存器
      mibspiTransfer (mibspireG1,0);                        //开始从 mibspireG1寄存器传输数据
      
       While (1)(同时)
           {
           /*...等待并读取转换计数*/
                     while ((adcIsConversionComplete (adcREG1,adcGROUP1)=0);
                     ch_count = adcGetData (adcREG1,adcGROUP1,&ADC_DATA[2]);

                     CH_COUNT = CH_COUNT;
                     /*转换结果:                                      */
                     /* ADC_DATA[0]->应具有 Group1通道1 */的转换
                     /* ADC_DATA[1]->应具有 Group1通道2 */的转换

                     ID   = ADC_DATA[2].id;
                     值= ADC_DATA[2].value;




           };
    /*用户代码结束*/

    }