26407x7 + scs +uart
大家好
最近在做2640 uart部分,想功耗低一些就是用了scs
协议栈:BLE_STACK_2_2_1
IAR :7.70.1
用SCS生成了uart的代码驱动,导入了我的工程中新建了一个任务(线程)
但是广播+串口部分测量电流为850 - 870ua
我想加一个中断,如果使用串口的话就中断打开串口。如果不使用就中断关闭串口
请问一下如何关闭scs产生的串口
谢谢
SCS中的UART模拟器用的是bit bang协议,是通过API由主程序配置和控制的,你可以用scifUartStopEmulator()这个API
谢谢您的回答。
使用这个api可以关闭串口,但是我关闭后打不开了。
这个要怎么解决,重启可以,但是这样不方便。
有没有什么方便的方法吗?
谢谢
关闭后如果还需要开启,则需调用scifResetTaskStructs 来重启内部任务
你好 Viki Shi
谢谢您百忙之中抽出时间来回复我的问题。
还有最有一个问题希望您能解答一下
void scifResetTaskStructs(uint32_t bvTaskIds, uint32_t bvTaskStructs)
这个函数有两个参数,看了注释之后还是不是太懂,这里的bv我理解是BV(n)这个数值
TaskIds这里我找到
scif.h 中有此定义
/// UART Emulator: Task ID
#define SCIF_UART_EMULATOR_TASK_ID 0
所以我认为第一个参数为BV(0)
第二个参数及不太理解了 还希望您能解答一些,谢谢。
相信这可以解决很多人的问题
我也在e2e上面找到了这部分的问题,但是还没有解决
谢谢
附件是我的生成的scs生成的uart文件
谢谢
不好意思,没有上传完全。
这个是完整的
现在解决问题了
不仅仅要调用启动的函数,还要重新开启串口。
这样成功了,不知道是否正确,还希望各位大神指正。
这是我测量的结果:
广播:84.4 -127.3ua
连接上: 455 - 490ua
启动串口 + 连接:1.064 -1.079ma
启动串口 + 连接: 906 - 969 ua
关闭后启动scs串口的代码为
scifResetTaskStructs(BV(SCIF_UART_EMULATOR_TASK_ID),BV(SCIF_STRUCT_CFG));
scifExecuteTasksOnceNbl(BV(SCIF_UART_EMULATOR_TASK_ID));
scifUartSetBaudRate(115200);
scifUartSetRxTimeout(20);
scifUartSetRxEnableReqIdleCount(1);
scifUartRxEnable(1);
scifUartSetEventMask(BV_SCIF_UART_ALERT_RX_BYTE_TIMEOUT);