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.

[参考译文] CC2650STK:具有 Contiki 的传感器控制器软 UART

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

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/567025/cc2650stk-sensor-controller-soft-uart-with-contiki

器件型号:CC2650STK
主题中讨论的其他器件:CC2538

大家好!

我一直在尝试将由 Sensor Controller Studio 生成的库存号 RTOS "UART 仿真"代码与基于 Contiki 的项目集成在一起。

*。-我第一次尝试使用 stock Contiki 电源控制后、几乎在执行我的 SC 代码后就会在重新引导循环中结束。

*。-然后我添加了 LPM_MODULE (softual_module、NULL、NULL、LPM_domain_Periph); 还有 一个 lpm_register_module (&sultuart_module);在我的初始代码上、至少 MCU 不会重新启动、我能够从基于 SC 的 UART 中获得几个字符、但只有两三个字符可以传输、每个字符都会增加损坏的可能性。

*。-然后我禁用了 RF 以查看 RF/通信代码中是否有可能干扰的东西... 但没有变化...  

*。-然后、我测试了一个更激进的想法、对 Contiki 的 LPM 代码(CPU/cc26xx-cc13xx/lpm.h /.c)进行了一些更改 、以禁用所有功能、例如在具有 LPM_CONF_ENABLE 定义的 cc2538上执行的操作。 结果:LPM 被禁用时、现在我在 SC-UART 上获得6-10个正常字符。 有一些进展。。

*。-然后我尝试禁用中断:完全没有更改。  

*。-接下来尝试禁用 RX/ALERT 回调代码以查看它是否有用:它不起作用。  

现在、我没有想法来测试哪些因素会干扰我的消息的 TX。  

有什么想法吗?

当前测试代码如下所示:  

LPM_MODULE (softual_module、NULL、NULL、LPM_domain_Periph);

/*------------------ //
process_thread (cc26xx_my_process、EV、data)
{

process ();
//关闭无线电以查看是否有助于
NETSTACK_RDC.off (0);
printf ("CC26XX test v26\n");
//在 RX
sultuart_event 的警报回调中使用= process_rdc.off (process v26\n");//自 lalloc tual_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_event_lest


// AUX 域访问
scifOsalEnableAuxDomainAccess ();
//我的警报回调
scifOsalTaskAlertCallback (&uartAlertCallback);

scifInit (&scifDriverSetup);
//启动 UART 仿真器 scifOsalTaskTasksOnceCallback
(&uartAlertCallback);scifeInit (&sciftDriverSetup

);//启动 UART (USCiftudeRX (USCiftud_UartxeRX) 1

) 1 (在 UartxeRTUxeRTUARTxeRTUARTxRFIdx (UARTx10/ UARTx10/ UARTxeRTUARTxeRTUARTxeRTUCTR);1) 0 (在 UARTxRFIdx (在 UARTx10/ UARTxEFF_RTUARTxEFF_RTUARTx (UARTxEFFTx





//启用事件(半满 RX FIFO 或10位周期超时
scifUartSetEventMask (BV_SCIF_UART_ALERT_RX_FIFO_UP_UPLOW_THR | BV_SCIF_UART_ALERT_RX_BYTE_TIMEOUT);


scifUartTxPutChars ("Hello hello halls?\r\n"、25);

TIA!

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

    好的、小小的更新。

    阅读此帖子后:
    e2e.ti.com/.../1949275

    以及 Contiki 邮件列表上的注释:
    sourceforge.net/.../

    当我通过 aux_ctrl_register_consumer ()进入低功耗状态时、我继续更改初始化代码并为 AUX 时钟添加一个注册。

    这样就启用了电源管理和所有功能、重新启动时没有问题、但我仍然只能从 SC UART 仿真中获得大约6-8个字符的"未损坏"。

    奇怪的是、SC UART 仿真 RX 的工作方式很有魅力。 完全没有损坏问题。

    初始化代码现在如下所示:

    静态 aux_consumer_module_t uart_aux ={
    NULL、AUX_WuC_SMPH_clock | AUX_WuC_AIODIO0_CLOCK |
    AUX_WuC_AIODIO1_CLOCK | AUX_WuC_TIMER_CLOCK |
    AUX_WuC_ANAIF_CLOCK | AUX_WuC_TDCIF_CLOCK |
    AUX_WADI_OSCCTRL_CLOCK | AUX_WuC_TDC_CLOCK | AUX_WuC_UC_CLOCK
    | AUX_---
    
    
    //
    process_thread (cc26xx_my_process、EV、data)
    {
    
    process_begin ();
    printf ("CC26XX test v43\n");
    //要在 RX
    sultuart_event = process_alloc_event ()的警报回调中使用;
    
    ti_lib_sys_ctrl_power_evalthering();
    
    //停止 SC。
    TI_lib_aON_wuc_aux_image_invalid ();
    
    //现在以全速运行所有时钟。
    TI_lib_prcm_inf_clock_configure_set (PRCM_clock_DIV_1、PRCM_run_mode);
    ti_lib_prcm_inf_clock_configure_set (PRCM_clock_DIV_1、PRCM_SLEEP_MODE);
    ti_lib_prcm_inf_clock_configure_set (PRCM_clock_DIV_1、PRCM_clock_clock_set) PRCM_DEEP_SLEEP_MODE);
    //时钟资源
    aux_ctrl_register_consumer (_UART_aux);
    AUXBV CClockFreqReq (AUX_WuC_CLOCK _HIFREQ);
    AUX9600 WUCPowerCtrl (AUX_WuC_POWER_ACTIVE);
    AUXBULL_Power_UP
    (AUXV 域访问
    
    
    
    
    仿真器(AUXIFTCALLBAUTCALLBAULES/自动启动);
    AUXIFTCALLBAUTCALLAC/自动
    
    
    启动/自动启动/自动启动/自动启动/自动启动/自动启动/自动启动/自动启动
    //启用 RX (启用起始位检测之前需要10个空闲位周期)
    scifUartSetRxFifoThr (SCIF_UART_RX_FIFO_MAX_COUNT / 2);
    scifUartSetRxTimeout (10 * 2);
    scifUartSetRxEnableEventReqIdleCount (10 * 2);scifUart_RX_Half_EART_UARTxFERT
    
    
    (SCIF_RX_RX_TIMEOUT)
    ;scif_ENT_UARTxIF_RX_TIMEOUT (10 * UART_UART_UARTxIF_RX_TIMEOUT);SCIF_TIMEOUT (SCIF_ENT_W/ UART_UART_WLET (SCIF_RX_TIMEOUT UART_WTOOT_RX_TIMEOUT
    
    这是一个长字符串\r\n、47);
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、我也只能从 RX 事件处理中执行 SC UART TX;如果我执行由按下按钮触发的 TX、就不会产生单个字符。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我之前发布的最后一个代码确实像通过传感器控制器在 Contiki 中进行 UART 仿真一样工作。


    我的 TX 损坏问题? 正在调试连接到 UART 仿真引脚的 USB<->UART 接口;将其替换为另一个接口,即使是同一芯片组也是如此;以及 voilá!

    它确实运行完美、因此 aux_ctrl_register_consumer()确实可以防止 SC 上所需时钟的任何断电。


    我包含了所有 AUX 时钟、我认为必须将其修整为 UART 代码使用的时钟、但它确实起作用。