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.

关于CC2530最大限度的降低功耗



home 1.2.2,关于降低功耗,有几个问题确认一下:

1.设置POWER_SAVING和RFD_RCVC_ALWAYS_ON to FALSE

2.按键轮询是不是比中断费电?

3.对下面几个参数设置有什么建议(终端需要接收数据)

-DPOLL_RATE=3000

-DQUEUED_POLL_RATE=100

-DRESPONSE_POLL_RATE=100

-DREJOIN_POLL_RATE=440

4.未用的IO如何设置为输入上拉或者输出,用哪个函数?在哪里设置?

Unused I/O pins should have a defined level and not be left floating. One way to do this is to leave the pin
unconnected and configure the pin as a general purpose I/O input with pull-up resistor. Alternatively the pin can be
configured as a general purpose I/O output

  • 1. 是的
    2. 按键轮询是比中断费电
    3. 看起來沒問題
    4. 未用的IO可以透過P0INP, P1INP, P2INP設置為tristate.
  • 补充一下:
    SDK 默认是是POLL机制,聂可以自己配置为interrupt
    在TI的提供按键drivers 里面HalKeyConfig配置是否使用中断。
  • 1&2、是的
    3、可根据应用需要调整,

    /* The number of milliseconds to wait between data request polls to the coordinator. */
    -DPOLL_RATE=1000

    /* This is used after receiving a data indication to poll immediately
    * for queued messages...in milliseconds.
    */
    -DQUEUED_POLL_RATE=100

    /* This is used after receiving a data confirmation to poll immediately
    * for response messages...in milliseconds
    */
    -DRESPONSE_POLL_RATE=100

    /* This is used as an alternate response poll rate only for rejoin request.
    * This rate is determined by the response time of the parent that the device
    * is trying to join.
    */
    -DREJOIN_POLL_RATE=440

    4、根据数据手册的GPIO寄存器操作
  • 1.如果协调器没有给终端发指令的时候,是不是只有DPOLL一直在POLL,
    而DQUEUED_POLL和DRESPONSE_POLL不POLL
    2.协调器在给终端发指令的时候,DPOLL会POLL到数据,此时DQUEUED_POLL和DRESPONSE_POLL也会工作,
    直到数据接收应答完毕,DQUEUED_POLL和DRESPONSE_POLL暂停工作,直到下次来新的数据再工作,
    不知这样理解对不对?
    3.DREJOIN_POLL_RATE在终端掉线的时候工作,这个频率如果改为1秒一次,会不会有问题?
    4.假如某个终端掉线后一直无法入网(重启该终端可以理解入网),我是否可以在软件里,
    设置为终端掉线一段时间后任然没有入网的话,手动去加网ZDApp_StartJoiningCycle?
    这个加网函数默认是加多长时间?还是调用后就一直加?还是根据DREJOIN_BACKOFF和DREJOIN_SCAN?
  • 1. 是的
    2. 是的
    3. 應該不會
    4. 根据DREJOIN_BACKOFF和DREJOIN_SCAN
  • 主要是我新增加的按键响应不了中断,例程自带的按键,改为中断可以工作,
    但是我也是仿照例程的按键增加按键的,不知道原因在哪,为什么不工作
  • 按鍵的問題在你另一個討論串 e2echina.ti.com/.../511710 回應了
  • 有的时候把协调器重启,发现有个别终端就再也连不上了(双方都开启NV)
    但是把该终端重启可以立即连上,是否可以设置为终端掉线一段时间后任然没有入网的话,手动去加网ZDApp_StartJoiningCycle
    这样设置能不能解决终端掉线无法恢复连接问题?
  • 根據我的經驗解決不了,建議要做SW reset
  • 1.软件复位是可以解决,但是体验不好,比说灯是开着的,灯内的模块掉线了,
    一直连不上,模块自动复位会导致灯灭了,另外灯都是挂的比较高,即使放按键也不好操作,
    只能通过软件去复位,要是能通过软件去把2530的网络状态重置而不会改变2530的IO口电平就好了
    这样即使2530掉线连不上,也能自行恢复
    2.AF_DATA_CONFIRM_CMD这个是什么?发送后对方给的应答到这里?
    如果应答是对方收到后通过AF_DataRequest应答的(接收方会在AF_INCOMING_MSG_CMD处理),
    是不是可以屏蔽AF_DATA_CONFIRM_CMD后面的处理代码?
  • 未用的IO可以透過P0INP, P1INP, P2INP設置為tristate,
    可以举个例子吗?不会弄,比如设置P0.3为tristate,
    怎么配置?另外这个放着放在哪里比较好
    GenericApp_Init里还是其他什么地方?
  • 1. 試試調用NLME_OrphanJoinRequest
    2. AF_DATA_CONFIRM_CMD可以接收APS ack,沒用可以屏蔽,但是留著也沒差吧?
    3. "P0INP|=BV(3);"设置P0.3为tristate
  • 2530例程默认的最多只能8个LED,我要用9个怎么办?
    下面的定义最多就8个LED
    #define HAL_LED_1 0x01
    #define HAL_LED_2 0x02
    #define HAL_LED_3 0x04
    #define HAL_LED_4 0x08
    #define HAL_LED_5 0x10
    #define HAL_LED_6 0x20
    #define HAL_LED_7 0x40
    #define HAL_LED_8 0x80