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/CC3120MOD:CC3120MOD

Guru**** 1796780 points
Other Parts Discussed in Thread: TMS320C6657, CC3100, CC3120, CC31XXEMUBOOST, CC3120MOD, CC3100SDK, BOOSTXL-CC3120MOD
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/866278/ccs-cc3120mod-cc3120mod

器件型号:CC3120MOD
主题中讨论的其他部件:TMS320C6657CC3100CC3120CC31XXEMUBOOST、、 CC3100SDK、、 MSP432P401R

工具/软件:Code Composer Studio

您好、Tim

我的主机是 TMS320C6657、通过 UART 连接到3120MOD。

我使用的是最新的 SDK。

我做了以下工作:

根据 SWRU455.pdf、我们向  user.h 添加了"#define SL_IF_TYPE_UART"

2.我们修改了 cc_PAL.c:

fd_t SPI_Open (char *ifName、
无符号长整型标志)

CSL_GpioHandle hGpio;
uint8 pinNum = 15;

hGpio = CSL_GPIO_open (0);

CSL_GPIO_setPinDirOutput (hGpio、pinNum);
(void) platform_delay (50);

hGpio = CSL_GPIO_open (0);

CSL_GPIO_setOutputData (hGpio、pinNum);


返回(1);

INT SPI_CLOSE (FD_t FD)

CSL_GpioHandle hGpio;
uint8 pinNum = 15;

hGpio = CSL_GPIO_open (0);

CSL_GPIO_setPinDirOutput (hGpio、pinNum);
(void) platform_delay (50);

hGpio = CSL_GPIO_open (0);

CSL_GPIO_clearOutputData (hGpio、pinNum);

返回(0);

INT SPI_READ (FD_t FD、
unsigned char *pBuff、
int len)

int i=0;
uint8_t buf1[1];

while (1)

if (platform_UART_read (&buf1[0]、100)== Platform_eok)

pBuff[i]=buf1[0];
i++;

其他

if (i!=0)
中断;


返回㈠;

INT SPI_Write (FD_t FD、
unsigned char *pBuff、
int len)

int i=0、write_size = 0;

write_size = len;

for (i=0;<len;i++))

platform_UART_write (pBuff[i]);

返回(WRITE_SIZE);

3.在 main.c 中:

evm_init();

platform_UART_init();
platform_UART_set_baudate (115200);

RetVal = sl_Start (0、0、0);

4.在 main.c 中,我们观察到:RetVal =1

请帮助我们进行分析。 故障在哪里?  

此致、

谢谢!

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

    您好!

    要使用 CC3120的 UART 接口、我建议您查看 CC3100主机驱动程序的 MSP430端口。 CC3120主机驱动程序没有使用 UART 的现有端口、但上面提到的端口具有 UART 支持。 该端口可在 CC3100 SDK 中找到: http://www.ti.com/tool/download/CC3100SDK

    CC3120和 CC3100主机驱动程序非常相似、因此您应该能够将其用作如何使用 CC3120实施 UART 的指南。 现在看一下您的情况、最大的问题可能是您尝试将 SPI 函数重写为 UART、而正确的方法是创建全新的本机 UART 函数以执行必要的读取/写入。

    我建议您将 CC3100 UART 驱动程序端口与当前拥有的端口进行比较,因为从 sl_Start()获取 Role_Unknown 通常是由于您的移植代码中存在错误。

    如果您需要更多说明或对移植 CC3120主机驱动程序有其他疑问、请告诉我。

    此致、

    Michael

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

    您好,

    首先、感谢您的回复。  

    今天、我们购买了 CC31XXEMUBOOST,并  加电、我们可以接收 wifi 信号、 但对于我们自己的电路板、我们无法获取信号。

    我们想知道 CC3120MOD 要求我们进行初始化吗? 如何操作?

    真诚地感谢您。

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

    您好!

    1) 1) 您提到的端口 在中  

    C:\ti\CC3100SDK_1.3.0\cC3100-SDK\platform\msp430f5529lp\uart.c?

    2) 2)现在,我们只是尝试通过路径。  我们只使用3线、 使用查询而不中断。 那么、,UART 函数是否可以简单地写入?

    此致!

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

    您好!

    是的、UART 接口函 数位于 SDK 的 C:\ti\CC3100SDK_1.3.0\cC3100-SDK\platform\msp430f5529lp\uart.c 路径中。

    建议您实施完整的5线拓扑、因为这将减少将来出现问题的可能性。 有关移植主机驱动程序的资源、请参阅此处的 Jan 文章:

    https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/p/869418/3216110#3216110

    有关移植 CC3120主机驱动程序的一些有用的近期讨论也可以在此处找到:

    https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/t/860385

    此致、

    Michael

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

    您好!

    现在我使用 CC31XXEMUBOOST+BOOSTXL-CC3120MOD和 UART (Board_UART1)作为主机接口。

    我完成了以下操作:

    在 main.c 中、我 初始化 Board_UART1并启用它、然后发送  {0xff、0xee、0xdd、0xbb、0x21、0x43、0x34、0x12}、我可以接收以"0xba、0xdc、0xcd、0xab"开头的回复 "。 我认为 UART 到 CC3120MOD 很好。

    int main (空)

    int32_t RetVal;
    unsigned char outbuf[8]={0xff、0xee、0xdd、0xbb、0x21、0x43、0x34、0x12};
    unsigned char inbuf[28]={0};
    unsigned char inbuf1[28]={0};
    int i = 0;
    int ret = 0;
    char cChar;
    /*调用驱动程序初始化函数*/
    Board_initGeneral();

    /*启动 NoRTOS */
    NoRTOS_START();

    GPIO_init();

    UART_INIT();

    WIFI_INIT();

    InitTerm();

    sl_DeviceEnable();

    for (i=0;i<8;i++)

    UART_writePolling (uartHandle、&outbuf[i]、1);


    for (i=0;i<28;i++)

    UART_readPolling (uartHandle、&cChar、1);


    inbuf[i]= cChar;

    2,然后,我将 main.c 编辑为:

    GPIO_init();

    UART_INIT();

    WIFI_INIT();

    //InitTerm ();

    //sl_DeviceEnable();

    RetVal =sl_Start (NULL、NULL、NULL);

    函数 sl_Start() 没有返回,然后是 STEP DEBUG,返回到 device.c 第183行:

    verify_RET_OK (_SlDrvWaitForInternal观察 事件(ObjIdx、
    init_complete_timeout、
    sl_opcode_device_INITCOMPLETE);

    请给我 一些方向 a。

    非常感谢

    此致、

    WCY

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

    您好!

    其他一些  问题  

    verify_RET_OK (_SlDrvWaitForInternal观察 事件(ObjIdx、
    init_complete_timeout、
    sl_opcode_device_INITCOMPLETE);

    跟踪如下:

    sl_Start()  

    _SlDrvWaitForInternalAppo()

    _SlDrvSyncObjWaitForever

    SemaphoreP_PEND

    真诚地感谢您!

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

    您好!

    您仍在使用 TMS320C6657 作为平台吗? 我不确定您在提及您现在正在使用 CC31XXEMUBOOST 以及 Board_UART1接口时所做的更改。

    至于 sl_Start()卡滞,驱动程序似乎正在等待来自 CC3120的异步响应。 当您发出 sl_Start()命令时,器件将初始化,然后在初始化完成后使用成功或错误代码进行响应。

    如果驱动程序卡在异步响应上、可能会发生以下情况之一:

    1.同步对象未正确实现。 我会仔细检查您的信标和互斥量函数是否正确执行。

    2.主机 MCU 未正确处理 h_IRQ 线路及其中断。 我会使用逻辑分析仪或示波器来确保 CC31xx 正将 IRQ 线路置为有效、并且您的器件正被正确触发。

    sl_Start()可能还有另一个原因不起作用,但这两个原因是最典型的。 请检查这些可能的原因、并告诉我您发现了什么。

    此致、
    Michael

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

    您好!

    很抱歉我迟到了!

    首先、 我现在  不 使用 TMS320C6657。

    作为测试、现在我 将使用 CC31XXEMUBOOST+BOOSTXL-CC3120MOD 、并将板上的串行端口(定义为 Board_UART1)用作主机接口。

    我将尽快检查上述内容。

    问题、请:

     如果 我的同步对象未被正确执行。如何  确定 我的信标和互斥量函数是否被正确执行?

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

    您好!

    您如何测试 CC3120? CC31XXEMUBOOST 没有 MCU、只提供 COM 端口接口来连接 PC 进行编程、测试和调试。 您在 PC 上运行什么测试设备?

    我建议您使用无线电工具来测试该连接。 它应可与您的开箱即用设置配合使用: http://www.ti.com/tool/CC3XXXRADIOTEST

    为了确定是否实现了同步对象、我建议将您的实现与 SDK 中提供的实现进行比较。 您还可以单步执行程序、查看同步对象是否按预期运行。

    此致、

    Michael

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

    您好!

    很抱歉、写错了。

    我有两块板:  

    MSP432P401R LaunchPad。 它具有一个 MCU (MSP432)。 如图所示:

    BOOSTXL-CC3120MOD  、CC3120MOD 现已推出。

    这两个板可以成对插入。

    非常感谢!

    WCY

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

    您好!

    如果您同时使用 MSP432P4 Launchpad 和 CC3120MOD BoosterPack、则这是受支持的组合、应能够通过 SDK +插件开箱即用。

    因此、如果您下载 cc3120插件: http://www.ti.com/tool/SIMPLELINK-WIFI-CC3120-SDK-PLUGIN

    您应该可以找到许多可在 CCS 中直接导入和构建的 MSP432P4示例。 您是否尝试运行过这些示例?

    此致、
    Michael

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

    您好!

    是的、我尝试运行一些示例。 全部成功。

     根据这些示例、我尝试将 SPI 接口更改为 UART 接口。

    但失败了、如上所述。

    此致、

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

    您好!

    基于示例"/trigger_mode_MSP_EXP432P401R_nortos_ccs"、我尝试 将 SPI 接口更改为 UART 接口。

    我:

    1) 1)在 user.h 中添加"#define SL_IF_TYPE_UART";

    2)修改 user.h,如下所示:

      #define SL_IfOpen              UART_Open  

      #define SL_IfClose              UART_Close

       #define SL_IfRead              UART_READ

       #define SL_IfWrite              UART_Write

    3) 3)在 cc_pal.c 中、添加上述4个函数:

       

    fd_t UART_Open (char *ifName、
    无符号长整型标志)


    UART_Params uartParams;

    /*初始化 WiFi 驱动程序*/
    WIFI_INIT();

    /*如果无法初始化设备,则使用错误代码将其取消。*/
    if (curDeviceConfiguration =空)

    返回(-1);

    UART_PARAMS_INIT (uartParams);

    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.readReturnMode = UART_return_full;
    uartParams.readEcho = UART_ECHO_OFF;
    uartParams.baudrate = 115200;

    uartHandle = UART_OPEN (Board_UART1、uartParams);
    if (uartHandle ==空)

    // UART_open 失败
    while (1)



    UART_CONTROL (uartHandle、UART_CMD_RXDISABLE、空);


    if (NULL =uartHandle)

    返回(-1);

    其他

    返回((fd_t) uartHandle);

    int uart_close (fd_t fd)

    UART_Close (uartHandle);
    返回(0);

    INT UART_READ (FD_t FD、
    unsigned char *pBuff、
    int len)

    int i=0;
    字符 ch;
    int ret = 0;

    //__disable_interrupt ();

    while (<len)

    #ifdef UART_NONPOLLING
    RET = UART_READ (uartHandle、&ch、1);
    其他
    RET = UART_readPolling (uartHandle、&ch、1);
    #endif
    如果(ret!= UART_STATUS_ERROR)

    pBuff[i]=ch;
    i++;

    其他

    if (i!=0)
    中断;


    //_enable_interrupt ();
    返回㈠;


    INT UART_Write (FD_t FD、
    unsigned char *pBuff、
    int len)

    int i=0、write_size = 0;

    write_size = len;

    for (i=0;<len;i++))

    #ifdef UART_NONPOLLING
    UART_WRITE (uartHandle、&pBuff[i]、1);
    其他
    UART_writePolling (uartHandle、&pBuff[i]、1);
    #endif

    返回(WRITE_SIZE);

    4) 4)然后运行、结果如上文所述 、2020年1月17日凌晨2:56

    请:
    非常感谢!