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

求助:

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参数也不行。

谢谢了!

17 个回复

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

    非常感谢您对TI论坛的支持,如果回复解决了问题,请帮忙点击“确认此为答案”,谢谢

     

  • 回复 Viki Shi:

    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;
    }

    多谢了

  • 回复 user4461669:

    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

    非常感谢您对TI论坛的支持,如果回复解决了问题,请帮忙点击“确认此为答案”,谢谢

     

  • 回复 Viki Shi:

    Dear Viki:

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

  • 回复 Viki Shi:

    Execution code的执行问题已经解决,谢谢,就是输出方波问题怎么回事
  • 回复 user4461669:

    正在等待同事的回复,稍后会来更新

    非常感谢您对TI论坛的支持,如果回复解决了问题,请帮忙点击“确认此为答案”,谢谢

     

  • 回复 user4461669:

    对于问题1, 不是很清楚你的应用目的,是否能详述一下,或者是否可以提供步骤让我可以复现?

    非常感谢您对TI论坛的支持,如果回复解决了问题,请帮忙点击“确认此为答案”,谢谢

     

  • 回复 Viki Shi:

    我现在就是希望用DAC在一个模拟输出口上输出一个电平,目前在io23上输出,外面只接示波器,

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

  • 回复 user4461669:

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

    非常感谢您对TI论坛的支持,如果回复解决了问题,请帮忙点击“确认此为答案”,谢谢

     

  • 回复 Viki Shi:

    您好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)对结果没有帮助。