TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F:低功耗配置怎样失能模拟串口

如题,由于CC2640R2F仅有一路硬件串口,因此为了打印日志,我加了一个模拟串口,现在要做调整整个模块的功耗,不知道怎样在空闲时关闭模拟串口。

还有就是我感觉不知从何下手,比如,关闭串口的函数应该写在哪里,是写在power manager模块中的哪里吗?

希望有过来人的大神能给点详细的指点。

谢谢啦 😀

YiKai Chen:

基本上就可以在你要打印日志前啟動串口,打印完後去关闭串口

z z46:

回复 YiKai Chen:

我是模仿CC2652R1的Uartlog写的,打印日志放在idlefunction里面,即只有程序idle了,才会调用打印函数打印缓冲区内的数据,同时放在idlefunction里面的还有Power_idleFunc,这种模式下,我怎么判断模拟串口是否空闲并且这个函数应该加在哪里呢 TIFreeRTOS让我不知道低功耗的一些配置 该放在哪里,因为task里面也在用,是放在idlefunction里面吗,还是放在powermanager的某个fnx里面

z z46:

回复 YiKai Chen:

大神,看到麻烦回答下

Viki Shi:

是用的SCS模拟UART吗?可以在数据打印结束后调用scifUartStopEmulator()关闭串口

z z46:

回复 Viki Shi:

是用SCS模拟的,但是不是实时打印的,是把所有待打印数据存在buffer中,然后flush函数放在idle task里,打印直接所有buffer为空,这样的话要怎么做呢?我今天尝试了在flush 函数中加入关闭函数和初始化函数,但是不行,打印一会就不打印了,功能不对,函数如下:

void sc_uartLog_flush()
{
#if (defined(xdc_runtime_Log_DISABLE_ALL) && (xdc_runtime_Log_DISABLE_ALL == 0)) || !defined(xdc_runtime_Log_DISABLE_ALL)unsigned int key;/* Local copy of current event record. To keep atomic section short. */uartLog_EventRec curRec;SCUartLog_init();SC_Log_info0("Stop Emulator.");/* In the Idle function (this) send all messages. Will be preempted. */while(!uartLog_evBufIsEmpty){/* Atomic section while manipulating the buffer. */key = Hwi_disable();/* Extract oldest and move tail */curRec = uartLog_evBuf[uartLog_tail];uartLog_tail = (uartLog_tail + 1) % SC_UARTLOG_NUM_EVT_BUF;if (uartLog_tail == uartLog_head){uartLog_evBufIsEmpty = true;}/* Let the others play. */Hwi_restore(key);/* Prepare log string from record, and print to UART. */sc_uartLog_doPrint(&curRec);}scifUartStopEmulator();#endif
}

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F:低功耗配置怎样失能模拟串口
分享到: 更多 (0)