Part Number:LAUNCHXL-CC1310Other Parts Discussed in Thread:CC1310
How does the program keep the serial port working synchronously while keeping the radio working?
(各位大牛!程序是如何实现在 保持无线电工作的状态下 同步保持串口工作的呢?)
Kevin Qiu1:
radio和UART使用不同的内核,M0 用于 RF 内核,M3用于用户应用程序,因此可以独立工作
,
LanYi:
Hello, yes.
Thank you very much for your reply.
That's what the document says.
I do the function implementation based on the official library.
However, I can't let m3 and M0 work separately in the program code, and M3 can handle when there is data sending and receiving (M0 needs data interaction)/ (ㄒoㄒ)/~~
Is there an example of this?
(您好,是的。非常感些您的回复。文档也是这么说的 。我是基于官方提供的库的基础上去做功能实现。可是我无法在程序代码里让M3与M0各自单独工作,且在有数据收发时(需要M0进行数据交互)M3可以处理。/(ㄒoㄒ)/~~
请问这个有示例嘛?)
,
Kevin Qiu1:
M3与M0不是完全独立的,RF命令是从 M3内核调度的。
用户不需要关心两个核的具体通信过程,这在带有RF功能的例程中已经实现了
rtos版本中有更多的例程:C:\ti\simplelink_cc13x0_sdk_4_20_01_03\examples\rtos\CC1310_LAUNCHXL
,
LanYi:
您好~ 根据您的建议,我又理了理自己现有的思路,且进行了测试。
在例程中 M3调用M0,使能射频工作除了easylink示例是超时退出外(本身是不想它退出),其它的设置基本由下面这个函数:
//extern RF_EventMask RF_runCmd(RF_Handle h, RF_Op *pOp, RF_Priority ePri, RF_Callback pCb, RF_EventMask bmEvent); 去实现RF,除了数据发送RF_EventMask可以不设置,即用即发送且退出外。当使用其进入接收模式时RF_EventMask有对应的设置,发现有“RF_EventModulesUnlocked (1 << 29) ///< As part of the boot process, the CM0 has opened access to RF core modules and memories”这一设置 ,且争对接收有多种模式设置。然而都是阻塞/死等(意思就是程序一旦调用这个函数 打开M0工作程序就堵塞在这儿了)。我尝试更该了多种模式的切换,然而没有一种是M3调度RF工作后,RF继续工作,而M3可以干别的,程序可以继续执行的。
┭┮﹏┭┮臣妾做不到,求大牛深度讲解~
,
LanYi:
多线程去运行时,我知道 可以各自实现自己的功能。但是由于我想要做的功能很简单,所以是不带系统,从而应该是无法使用多线程的吧?
,
LanYi:
回归正题 我依旧还是很疑惑 写进M3的程序里 是如何实现调用RF进入接收模式后,程序能继续往下执行从而去处理其它的事情的?
,
Kevin Qiu1:
RF_runCmd是阻塞的,尝试使用RF_postCmd替换它,参考:
https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_1GHz_681746
,
LanYi:
您好~ 我看到他的写法了。且进行了测试。分析来说存在丢包的问题,当然这个丢包问题与周期时间有关。他的串口是基于RF接收成功后进行的写操作,这样来说是不影响他射频与串口的分步处理的。修改RF_EventMask为RF_EventRxEntryDone确实不会造成阻塞,但是可以将其看成进入RF退出RF再退出再进入。。。丢包问题需要慎重考虑。
,
LanYi:
且当 串口开启进入读写操作时,串口配置参数里基本是阻塞的,哪怕是说明文档里的非阻塞回调,从而当外部串口未连接,串口工作是处于等待或阻塞的。所以 当串口读写与RF在同一个while(1)内时RF_EventMask为RF_EventRxEntryDone不会造成阻塞,但是串口也是阻塞了 RF新一轮的开启。。。这个我也做了测试,当然也不知道自己做的对不对。但是串口配置能修改的状态也就两个,我也不知道是否有其它的配置操作让串口可以和RF的一样(开启就关闭。。。好奇怪的样子)。。所以我才一直寄托于M0独立工作,M3只是调度了M0,调度完就不再影响写进M3程序的下一步执行。M0有数据接收就触发/上报就好~
,
Kevin Qiu1:
nortos下没有太多的可操作空间
LanYi 说:我也不知道是否有其它的配置操作让串口可以和RF的一样(开启就关闭
开启就关闭是什么意思
,
LanYi:
鉴于我找不到解决的办法,“nortos下没有太多的可操作空间 ”真是个不幸的消息~哭叽叽~
“开启就关闭”:就是RF调用时,RF_EventMask为RF_EventRxEntryDone,给的解释是Rx queue data entry changing state to Finished。我给理解为开启了又关闭了。。。。(*Φ皿Φ*),因为它是放在死循环内,生命周期很短~
,
Kevin Qiu1:
uart也可以使用uart open和close API开启和关闭,但应该不能实现你说的相互独立工作的功能
,
LanYi:
大神 你知道cc1310 nortos 低功耗是咋实现的嘛?
我是自唤醒的,无法使用Power_shutdown();从而外部唤醒实现低功耗。
我使用了sleep();待机模式?常处在2mA。。。
我又尝试了Power_sleep();到电源策略来 降低功耗。。。但是 我不知Power_sleep(uint_fast16_t sleepState);的参数sleepState该给啥。。。当然也不知是否会降低功耗。。。
大神 你知道cc1310 nortos 低功耗是咋实现的嘛?
,
Kevin Qiu1:
这是另一个问题了,为方便论坛管理,请为此重开一个新帖
,
LanYi:
嗯嗯 已重新开贴~ ❀期待大佬上线❀
e2echina.ti.com/…/cc1310-cc1310-nortos
,
Kevin Qiu1:
已回复,将关闭这个帖子