微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 26407x7 + scs +uart

26407x7 + scs +uart

时间:10-02 整理:3721RD 点击:

大家好

最近在做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);

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top