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.

CC1312 SCIF 与 ARM之间的数据交换问题

Other Parts Discussed in Thread: SYSCONFIG

求助:

SCS初始化代码如下:

compaSelectGpioInput(AUXIO_A_DACOUTPUT);

compaEnable(COMPA_PWRMODE_ANY);

refdacEnable(REFDAC_PWRMODE_ANY, REFDAC_REF_VDDS);

refdacStartOutputOnCompaIn(cfg.DACLEVELINITVALUE);

refdacWaitForStableOutput();

SCS执行代码如下:

refdacChangeOutputValue(input.DACLEVELSET);

refdacWaitForStableOutput();

用SCS做了关于DAC电平从模拟引脚输出的试验,又如下两个问题

1:用SCS仿真时,引脚输出电平可以随input.DACLEVELSET改变,但时一个330HZ,90%占空比的方波,这个是怎么回事?

2:生成代码到CCS里,调试发现只有第一次调用scifStopTasksNbl()时能设置input.DACLEVELSET有效,之后修改无效,貌似input.DACLEVELSET值是改变了,但是没有反映到输出电平,也就是说SCS的执行代码貌似没调用,求解。

       a)每次修改input.DACLEVELSET之前调用停止任务函数也无效,改用cfg参数也不行。

谢谢了!

  • 请提供一下所用sdk版本及具体例程
  • CCS  920 

    SDK  simplelink-cc13x2-26x2sdk-3-40-00-02

    SCS setup_sensor_controller_studio_2_6_0_132

    例程是在 portable-cc1312r1-launchxl-tirtos-ccs下修改的

    #include "mySCIFapp.h"  //包含scif.h文件
    //#include <unistd.h>
    //#include <stddef.h>

    // SCIF driver callback: Task control interface ready (non-blocking task control operation completed)
    void scCtrlReadyCallback(void)
    {
     }

    // SCIF driver callback: Sensor Controller task code has generated an alert interrupt
    void scTaskAlertCallback(void)
    {
    }

    void MySCInit()
    {
        // Initialize the SCIF operating system abstraction layer
        scifOsalInit();
        scifOsalRegisterCtrlReadyCallback(scCtrlReadyCallback);
        scifOsalRegisterTaskAlertCallback(scTaskAlertCallback);
        // Initialize the SCIF driver
        scifInit(&scifMyDriverSetup);
       // scifMyTaskData.dactast.input.DACLEVELSET =200;
        scifStartTasksNbl(1 << SCIF_MY_DACTAST_TASK_ID);
    }

    void MyDACValueSet(uint16_t value)
    {
        //uint16_t temp=0;
        // Stop the "DACTAST" Sensor Controller task
        if (scifWaitOnNbl(20000) != SCIF_SUCCESS) {
        }
        else if (scifStopTasksNbl(1 << SCIF_MY_DACTAST_TASK_ID) != SCIF_SUCCESS) {
        }

       scifMyTaskData.dactast.cfg.DACLEVELINITVALUE = value;
       scifMyTaskData.dactast.input.DACLEVELSET =value;
        // (Re)start the "DACTAST" Sensor Controller task
        if (scifWaitOnNbl(200000) != SCIF_SUCCESS) {

        }
        else if (scifStartTasksNbl(1 << SCIF_MY_DACTAST_TASK_ID) != SCIF_SUCCESS) {
        }
        //temp=scifMyTaskData.dactast.input.DACLEVELSET;
    }

    多谢了

  • SDK3.40 要求的CCS版本是9.3.0,能否升级到CCS9.3再测试一下?

    SimpleLink CC13x2 / CC26x2 SDK 3.40.00.02 was built & tested on a Windows host platform using the following Integrated Development Environments (IDEs) and components. Using an IDE or toolchain version not listed below may result in incompatibility issues with this SDK release. Refer to the individual component release notes in the Document Overview for each component’s supported code generation tools.
    •IAR Embedded Workbench: EWARM-8.32.2
    •TI Code Composer Studio: CCS-9.3.0
    •TI Code Generation Tools for Arm: 18.12.4.LTS
    •XDCTools: 3.60.02.34
    •SysConfig Standalone tool for IAR IDE: 1.3.1030
  • Dear Viki:

    谢谢您的支持,重新装CCS9.30后i现象还是一样,目前测试感觉SCS里写的Execution Code部分没有执行,不知道这部分代码是自动执行还是需要怎么设置调用?

  • Execution code的执行问题已经解决,谢谢,就是输出方波问题怎么回事
  • 正在等待同事的回复,稍后会来更新
  • 对于问题1, 不是很清楚你的应用目的,是否能详述一下,或者是否可以提供步骤让我可以复现?
  • 我现在就是希望用DAC在一个模拟输出口上输出一个电平,目前在io23上输出,外面只接示波器,

    去掉执行代码部分也一样。

  • 确认一下问题,你想输出一个电平,但是得到的却是一个方波,是这样吗?
    能否提供一下测试步骤,方便复现你的问题
  • 您好wiki,测试方法:

    采用LAUNCHXL-1312R1     REV:D  开发板

    采用SCS写入代码:见我替我贴第一条原始帖

    TASK RESOURCES 设置:  (run-time logging)        (analog pins (dio/aio  23))    (compa)     (reference DAC)     (RTC_Based excution scheduling)

    采用task testing: 加入 run execution code 运行,示波器显示幅值可调,但波形是方波,上面的(run time logging)和(rtc-based excuting scheduling)对结果没有帮助。

  • 上面提供的代码不够详细,没有上下文。 看上去像一组永远不会调用的函数(从现有代码看)。请问程序里如何跟SCS模块进行交互?是否这部分代码可以在任务测试中运行,而CM4中不行?那很可能是CM4部分缺失东西。能否提供一下SCS部分的代码?
  • SCS初始化代码如下:

    compaSelectGpioInput(AUXIO_A_DACOUTPUT);

    compaEnable(COMPA_PWRMODE_ANY);

    refdacEnable(REFDAC_PWRMODE_ANY, REFDAC_REF_VDDS);

    refdacStartOutputOnCompaIn(cfg.DACLEVELINITVALUE);

    refdacWaitForStableOutput();

    SCS执行代码如下:

    refdacChangeOutputValue(input.DACLEVELSET);

    refdacWaitForStableOutput();

    这些就是SCS里的代码,在SCS里调试的,输出在dio23上,想搞明白为什么软件设置直接输出示波器显示是方波,硬件调整可以将其解决变成直流。

    多谢了

  • 你在应用程序里有没有设置power constraints ?低功耗模式下DAC会停止运行。
    尝试一下设置"Power_setConstraint(2)"——禁止standby,看看是否有变化
  • 代码里添加这个函数没有效果。直接采用SCS调试(不涉及应用程序)的结果就是方波,不知道是SCS里什么地方没写对?(在SCS的Power and Clock settings里设置inital power mode为low power时,输出是一个带纹波的直流,纹波于正常模式的方波一直)

    辛苦了!!

  • 能否提供完整的代码?找实验室看下是否能复现你的问题
  • 上面就是SCS的全部代码

  • 这样吧,你直接跟实验室工程师交流吧,看看他还需要什么才能建立环境进行测试。地址在此:e2e.ti.com/.../888162