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.

[参考译文] CCS/CC2650MODA:CC2650MODA

Guru**** 2578945 points
Other Parts Discussed in Thread: CC2650MODA, CC2650, BLE-STACK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/590171/ccs-cc2650moda-cc2650moda

器件型号:CC2650MODA
Thread 中讨论的其他器件: CC2650SYSBIOSMSP432P401RBLE-STACK

工具/软件:Code Composer Studio

您好!

我一直在使用 CC2650Moda 并尝试使用 GPIO 引脚来打开/关闭非板载 LED。 我使用的示例是 Code Composer Studio、TI-RTOS CC2650 Launchpad 中的示例。 GPIO 写入(引脚、开/关)不工作。 此外、我使用以下命令启用了引脚:

const PIN_Config BoardGpioInitTable[]={
 ioID_6     | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull | PIN_DRVSTR_MAX、

我不确定我无法使用 GPIO 写入命令控制 LED 的原因是什么、如果有人帮助我如何打开/关闭板外 LED、我将不胜感激。

提前感谢您的观看、

Farinaz

这是我正在使用的 PWM 代码:

 * ==== pwmled.c ===
 *
/* XDCtools 头文件*/
#include
#include

/* BIOS 头文件*/
#include
#include

/* TI-RTOS 头文件*/
#include
#include

/*示例/板头文件*/
#include "Board.h"

#include          //已添加此行

#define TASKSTACKSIZE  512

#include "driverlib/gpio.h"             //已添加此行

Task_Structsk0Struct;
uint16 tsk0Stack[TASKSTACKSIZE];
Task_Handle 任务;



/*
 * ==== pwmLEDFxn ===
 * 任务会定期增加板载 LED 的 PWM 占空比。
 *
空 pwmLEDFxn (UARg arg0、UARg arg1、UARg arg2、UARg arg3)

   PWM_Handle pwm1;
   PWM_Handle pwm2;
   PWM_Handle pwm3;
   PWM_Handle pwm4;
   PWM_Handle pwm5;

   PWM_PARAMS 参数;
   uint16_t  pwmPeriod = 30000;     //周期和占空比、以微秒为单位
   uint16_t  Duty = 80;
   uint16_t  dutyInc = 10;

   PWM_PARAMS_INIT (params);
   params.dutyUnits = PWM_Duty_US;
   params.dutyValue = 0;
   params.periodUnits = PWM_PERIOD_US;
   params.periodValue = pwmPeriod;
   pwm1 = PWM_OPEN (Board_PWM0、params);
   pwm2 = PWM_OPEN (Board_PWM1、params);
   pwm3 = PWM_open (Board_PWM2、params);
   pwm4 = PWM_OPEN (Board_PWM3、params);
   pwm5 = PWM_OPEN (Board_PWM4、params);


   if (pwm1 = NULL){
       System_abort ("Board_PWM0 did not open");
   }
   PWM_START (pwm1);
   PWM_START (pwm2);
   PWM_START (pwm3);
   PWM_START (pwm4);
   PWM_START (pwm5);

   /*循环永远递增 PWM 占空比*/
   while (1){
       PWM_setDuty (pwm1、占空比);
       PWM_setDuty (pwm2、Duty);
       PWM_setDuty (pwm3、占空比);
       PWM_setDuty (pwm4、占空比);
       PWM_setDuty (pwm5、Duty);

       Duty =(Duty + dutyInc);
       if (Duty =pwmPeriod ||(!Duty)){
           dutyInc =- dutyInc;
       }

       Task_sleep ((UINT) arg0);
   }


  /*=========== main ==== *

int main (空)

   Task_Params tskParams;

   /*呼叫板初始化功能。*/
   Board_initGeneral();
   Board_initGPIO();
   Board_initPWM();


    /*构造 LED 任务线程*/
   Task_Params_init (&tskParams);
   tskParams.STACKSIZE = TASKSTACKSIZE;
   tskParams.stack =&tsk0Stack;
   tskParams.arg0 = 50;
   Task_construct(&tsk0Struct,(Task_FuncPtr) pwmLEDFxn、&tskParams、NULL);

   /*获取实例句柄*/
   任务= Task_handle (&tsk0Struct);

 
   /*打开用户 LED*/
   GPIO_WRITE (IOID_6、1);
   GPIO_WRITE (IOID_3、0;
   GPIO_WRITE (IOID_5、1);


   //System_printf ("启动示例\n 系统提供程序设置为 SysMin。 "
   //             "停止目标以查看 ROV 中的任何 SysMin 内容。\n");

    /*SysMin 仅在调用 flush 或 exit 时才会打印到控制台*/

   system_flush();
   /*启动 BIOS*/
   BIOS_start();

   返回(0);

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

    您是否更改了项目的电路板定义? 转至 Project -> Properties -> Build -> ARM Compiler -> Advanced Options -> Predefined Symbols 并将 CC2650LAUNCHXL 更改为 BOOSTXL_CC2650MA。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、

    感谢你的答复。 我遵循了这些步骤、但它不起作用。  在"预定义符号"部分中、我有一个预定义名称、它是 CCS、我在其中添加了 BOOSTXL_CC2650MA。 配置为 Debug (Active)。

    GPIO_WRITE 命令 (IOID_2、Board_LED_ON)仍然无法正常工作。

    此致、

    Farinaz

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

    您好、Farinaz、

    您开始的项目的名称是什么?

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

    我要使用的项目是 CCS 中的示例,它是用于 CC26XX 的 TI-RTOS --- 开发工具--- CC2650-LAUNCHXL --- 驱动程序示例--- PWM 示例--- PWM LED。 我知道该示例适用于 CC2650 Launchpad、但我将所有的引脚更改为 CC2650MA。

    这是编辑后的头文件的一部分。

    /*分立式输出*/
    #define Board_RLED                 IOID_4
    #define Board_GLED                 IOID_2
    #define Board_LED_ON               1.
    #define Board_LED_OFF              0
    //#define LED_ON                   1    //已添加
    //#define LED_OFF                   0    //已添加

    /*离散输入*/
    #define Board_BTN1                 PIN_Unassigned
    #define Board_BTN2                 PIN_Unassigned

    /* UART 板*/
    #define Board_UART_RX              IOID_1         /* RXD */
    #define Board_UART_TX              IOID_0         /* TXD */
    #define Board_UART_CTS             PIN_Unassigned        //* CTS */
    #define Board_UART_RTS             PIN_Unassigned      // RTS */

    /* SPI 板*/
    #define Board_SPI0_MISO            IOID_12         /* RF1.20 */
    #define Board_SPI0_MOSI            IOID_11         /* RF1.18 */
    #define Board_SPI0_CLK             IOID_10        // RF1.16 */
    #define Board_SPI0_CSn             PIN_Unassigned
    #define Board_SPI1_MISO            PIN_Unassigned
    #define Board_SPI1_MOSI            PIN_Unassigned
    #define Board_SPI1_CLK             PIN_Unassigned
    #define Board_SPI1_CSn             PIN_Unassigned

    /* I2C */
    #define Board_I2C0_SCL0            IOID_4
    #define Board_I2C0_SDA0            IOID_5

    /* SPI */
    #define Board_SPI_FLASH_CS         IOID_9
    #define Board_flash_CS_on          0
    #define Board_FLASH_OFF         1.

    /*通用 Booster Pack */
    #define Board_DIO0                 IOID_0
    #define Board_DIO1_RFSW            IOID_1
    #define Board_DIO12                IOID_12
    #define Board_DIO15                IOID_15
    #define Board_DIO16_TDO            IOID_5
    #define Board_DIO17_TDI            IOID_6
    #define Board_DIO21                IOID_21
    #define Board_DIO22                IOID_22


    #define Board_DIO23_ANALOG         IOID_23
    #define Board_DIO24_ANALOG         IOID_24
    #define Board_DIO25_ANALOG         IOID_25
    #define Board_DIO26_ANALOG         IOID_26
    #define Board_DIO27_ANALOG         IOID_27
    #define Board_DIO28_ANALOG         IOID_28
    #define Board_DIO29_ANALOG         IOID_29
    #define Board_DIO30_ANALOG         IOID_30

    /* Booster Pack LCD (430BOOST - Sharp96修订版1.1)*/
    #define Board_LCD_CS               IOID_24 // SPI 芯片选择
    #define Board_LCD_EXTCOMIN         IOID_12 //外部 COM 反转
    #define Board_LCD_ENABLE           IOID_22 // LCD 使能
    #define Board_LCD_POWER            IOID_23 // LCD 功率控制
    #define Board_LCD_CS_ON            1.
    #define Board_LCD_CS_OFF           0

    /* PWM 输出*/
    #define Board_PWMPIN0                      Board_RLED
    #define Board_PWMPIN1                      Board_GLED
    #define Board_PWMPIN2                      IOID_3
    #define Board_PWMPIN3                      IOID_5
    #define Board_PWMPIN4                      IOID_6
    #define Board_PWMPIN5                      PIN_Unassigned
    #define Board_PWMPIN6                      PIN_Unassigned
    #define Board_PWMPIN7                      PIN_Unassigned

    Marie H.、感谢您的帮助!

    此致、

    Farinaz

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

    您能否尝试从项目中删除 board.h、CC2650_LAUNCHXL.c 和 CC2650_LAUNCHXL.h、然后将 board.h、BOOSTXL_CC2650MA.c 和 BOOSTXL_CC2650MA.h 从位置 C:\ti_tirtos_cc13xx_cc26xx_2_20_01_08\products\tidrivers_cc13xx_cc26xx_cc13xx_cc26xx_cc10_cc20_ccsxL_10\tisor_c10\tidr20_cc5001_c10_ccs_c10\tis\tid_c10_10_
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、

    感谢你的帮助。 我删除了 CC2650_launch 的 c 和 h 文件并添加了 BOOSTXL_CC2650、但仍然无法正常工作。 此外,我在 CCS 中收到1条警告,即:宏"BOOSTXL_CC2650MA"的重新定义不兼容。 此外,我还编辑了预定义的符号。 我的 CCS 页面如下图所示:

    此外、为了阐明我的设置、我将 MSP432P401R LaunchPad 用作调试器 XDS110 USB 调试器和 CC2650模块 Booster Pack。 这两者通过 JTAG 电缆进行连接。使用 CC2650的目的是使用蓝牙和针对我和朋友设计的定制 PCB 进行编程。

    提前感谢您抽出宝贵的时间参与我们的工作。

    此致、

    Farinaz

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

    您是否为 CC2650MODA 供电?

    您可以通过将其安装在 launchpad 上来实现此目的(请阅读本页的底部段落: dev.ti.com/.../BOOSTXL-CC2650MA.html )。

    或者、您可以连接相应的引脚而无需安装。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、

    感谢您的回复。

    是的、我正在为 CC2650MODA 供电。 我正在使用 M3。

    我知道我可以同时使用 MSP431P401 LaunchPad 和 CC2650MA。 但我的计划是使用 CC2650独立设备、并使用 XDS110 USB 电缆单独对其进行编程。

    我使用的 PWM 代码为:

    *==== pwmled.c ===
    *
    /* XDCtools 头文件*/
    #include
    #include

    /* BIOS 头文件*/
    #include
    #include

    /* TI-RTOS 头文件*/
    #include
    #include

    /*示例/板头文件*/
    #include "Board.h"
    #include "GPIOCC26XX.h"(我添加了此行以查看它是否有用、但它不起作用)



    #define TASKSTACKSIZE 512

    Task_Structsk0Struct;
    uint8 tsk0Stack[TASKSTACKSIZE];
    Task_Handle 任务;

    /*
    *==== pwmLEDFxn ===
    *任务会定期增加板载 LED 的 PWM 占空比。
    *

    空 pwmLEDFxn (UARg arg0、UARg arg1、UARg arg2、UARg arg3、UARg arg4)

    PWM_Handle pwm1;
    PWM_Handle pwm2;
    PWM_Handle pwm3;
    PWM_Handle pwm4;
    PWM_Handle pwm5;

    PWM_PARAMS 参数;
    uint16_t pwmPeriod = 30000;//周期和占空比、以微秒为单位
    uint16_t Duty = 80;
    uint16_t dutyInc = 10;

    PWM_PARAMS_INIT (params);
    params.dutyUnits = PWM_Duty_US;
    params.dutyValue = 0;
    params.periodUnits = PWM_PERIOD_US;
    params.periodValue = pwmPeriod;
    pwm1 = PWM_OPEN (Board_PWM0、params);
    pwm2 = PWM_OPEN (Board_PWM1、params);
    pwm3 = PWM_open (Board_PWM2、params);
    pwm4 = PWM_OPEN (Board_PWM3、params);
    pwm5 = PWM_OPEN (Board_PWM4、params);

    if (pwm1 = NULL){
    System_abort ("Board_PWM0 did not open");

    PWM_START (pwm1);
    PWM_START (pwm2);
    PWM_START (pwm3);
    PWM_START (pwm4);
    PWM_START (pwm5);

    //循环永远递增 PWM 占空比
    while (1){
    PWM_setDuty (pwm1、占空比);
    PWM_setDuty (pwm2、Duty);
    PWM_setDuty (pwm3、占空比);
    PWM_setDuty (pwm4、占空比);
    PWM_setDuty (pwm5、Duty);

    Duty =(Duty + dutyInc);
    if (Duty =pwmPeriod ||(!Duty)){
    dutyInc =- dutyInc;


    Task_sleep ((UINT) arg0);




    /*
    *==== main ====
    *

    int main (空)

    Task_Params tskParams;

    /*呼叫板初始化功能。 *
    Board_initGeneral();
    Board_initGPIO();
    Board_initPWM();


    /*构造 LED 任务线程*/
    Task_Params_init (&tskParams);
    tskParams.STACKSIZE = TASKSTACKSIZE;
    tskParams.stack =&tsk0Stack;
    tskParams.arg0 = 50;
    Task_construct(&tsk0Struct,(Task_FuncPtr) pwmLEDFxn、&tskParams、NULL);

    /*获取实例句柄*/
    任务= Task_handle (&tsk0Struct);

    /*打开用户 LED */
    GPIO_WRITE (IOID_3、Board_LED_OFF);
    GPIO_WRITE (IOID_5、0);
    GPIO_WRITE (IOID_6、Board_LED_OFF);

    system_printf ("启动示例\n 系统提供程序设置为 SysMin。 "
    "停止目标以查看 ROV 中的任何 SysMin 内容。\n");

    /* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
    system_flush();

    /*启动 BIOS */
    BIOS_start();

    返回(0);



    它可以正常工作、但不执行 GPIO_WRITE 命令。 我需要该命令才能打开/关闭 LED。 本节不起作用:

    /*打开用户 LED */
    GPIO_WRITE (IOID_3、Board_LED_OFF);
    GPIO_WRITE (IOID_5、0);
    GPIO_WRITE (IOID_6、Board_LED_OFF);

    提前感谢您的参与和考虑!
    此致、
    Farinaz

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

    您好、Farinaz、

    通过 BoosterPack 查看电路板(C:\ti\simplelink\ble_sdk_2_02_01_18\src\boards\BOOSTXL_CC2650MA、假设您使用的是 BLE-Stack 2.2.1)。 我看到:

    #define GPIO_TOGGLE (n)
    
    #define GPIO_WRITE (n、m) 

    被定义为死代码、因此它们将编译为不执行任何操作。 由于您使用的是 TI-RTOS、因此我建议您不要使用这些宏、而是使用 PIN 驱动程序。

     

    要开始使用 PIN 驱动程序,我建议您执行以下操作,删除 GPIO_*相关的#include 语句,并将其替换为:

     

    #include 
    
    #include 

    建立一个引脚表结构(现在可以在主文件中为全局结构):

     

    PIN_Config ledPinTable[]={
    
    ioID_6 | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull | PIN_DRVSTR_MAX、
    
    ioID_6 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、
    
    PIN_TERMINATE
    
    }; 

    打开引脚(在初始化时执行此操作)

    ledPinHandle = PIN_OPEN (&ledPinState、ledPinTable);
    
    if (!ledPinHandle){
    
    System_abort ("初始化板 LED 引脚时出错");
    
    } 

    然后使用以下 API 修改 PIN 状态

    PIN_setOutputValue (ledPinHandle、Board_LED0、Board_LED_OFF); 

     

    您可以在(C:\ti_tirtos_cc13xx_cc26xx_2_20_01_08\examples\TI\CC2650_LAUNCHXL_pinInterrupt)中看到更多的 PIN 驱动程序示例(再次假设 BLE-Stack 2.2.1使用 TI-RTOS)。