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.

CC2541: CC2541加PA只使用TX和RX

Part Number: CC2541
Other Parts Discussed in Thread: CC2590

有关CC2541加PA的程序设计方面有以下几个疑问(协议栈版本1.3.2)

1、协议栈中HCI_EXT_ExtendRangeCmd这个HCI指令默认是对P1_1、 P1_2、 P1_3这3个引脚都进行了设置吗?由于我们的硬件设计上只是将P1_2和P1_3用于PA  

P1_1引脚用于按键,所以会设置成上拉输入以此来检测下降沿 。所以想问一下如果只用P1_2、P1_3这两个引脚射频用应该怎样配置相应的寄存器。

2、命令行中的HAL_PA_LNA_CC2590这个宏如果不使能的话会不会对PA的设置有影响(只用P1_2、P1_3这两个脚)。

3、对于进入低功耗时如果没有执行HCI_EXT_ExtendRangeCmd这个指令及禁止HAL_PA_LNA_CC2590这个宏的前提条件下是否需要将P1_2、P1_3设置成普通IO并且设置成低电平使PA芯片处于低功耗状态。如果将P1_2、

P1_3这两个引脚由射频观察映射脚设置成普通IO需要进行哪些特殊的寄存器配置。

  • 您好,您这边可以参考这个文件

    www.ti.com/.../swru191f.pdf

  • hciStatus_t HCI_EXT_ExtendRfRangeCmd ( void )

    该命令配置CC254x自动控制TI CC2590 2.4-

    GHz射频前端设备。使用CC2590允许最大10 dBm的Tx输出功率(指定的BLE最大值),并提高Rx灵敏度。这种能力扩展了CC254x的射频范围。使用该命令时,除非重置CC254x,否则无法更改配置。自动控制

    CC2590是使用CC254x Observables实现的,CC254x Observables控制GPIO

    P1.2和P1.3。GPIO P1.1控制射频增益。使用此特性时,这些gpio不可用。您可以在com中使用此命令

    1 、GPIO P1.1控制射频增益是不是指将P1.1设置成普通输出IO对PA芯片进行增益控制呢?

    hciStatus_t HCI_EXT_SetRxGainCmd( uint8 rxGain )

    2、注意:当DTM通过调用HCI_LE_TestEndCmd或HCI_Reset结束时,发射机输出功率设置恢复为默认值0 dBm。

    这种情况是指会将P1.1设置成低电平吗?只要应用程序不调用HCI_LE_TestEndCmd、HCI_Reset这两条指令就不会执行这两条指令呢?

  • 3、通过仿真调试发现  执行HCI_EXT_ExtendRfRangeCmd ( void )这一指令之后发现以下寄存器的值发生了变化  

    RFC_OBS_CTRL0 = 0x68;
    RFC_OBS_CTRL1 = 0x6A;
    OBSSEL2 = 0xFB;
    OBSSEL3 = 0xFC;

    其中

    RFC_OBS_CTRL0 = 0x68;
    RFC_OBS_CTRL1 = 0x6A;

    这两个寄存器的值是参考哪个数据手册得到的与这个www.ti.com/.../swru191f.pdf数据手册的描述有些不一致。麻烦确认一下

  • hciStatus_t HCI_EXT_ExtendRfRangeCmd ( void )

    该命令配置CC254x自动控制TI CC2590 2.4-

    GHz射频前端设备。使用CC2590允许最大10 dBm的Tx输出功率(指定的BLE最大值),并提高Rx灵敏度。这种能力扩展了CC254x的射频范围。使用该命令时,除非重置CC254x,否则无法更改配置。自动控制

    CC2590是使用CC254x Observables实现的,CC254x Observables控制GPIO

    P1.2和P1.3。GPIO P1.1控制射频增益。使用此特性时,这些gpio不可用。您可以在com中使用此命令

    1 、GPIO P1.1控制射频增益是不是指将P1.1设置成普通输出IO对PA芯片进行增益控制呢?

    hciStatus_t HCI_EXT_SetRxGainCmd( uint8 rxGain )

    2、注意:当DTM通过调用HCI_LE_TestEndCmd或HCI_Reset结束时,发射机输出功率设置恢复为默认值0 dBm。

    这种情况是指会将P1.1设置成低电平吗?只要应用程序不调用HCI_LE_TestEndCmd、HCI_Reset这两条指令就不会执行这两条指令呢?

    这是您这边遇到的新的问题吗?

  • 标红的地方代表什么意思请问一下。

  • 就是为了突出显示,别无它意

  • A、对于此问题我这边目前的处理方式是先调用hciStatus_t HCI_EXT_ExtendRfRangeCmd ( void )这条指令  然后调用这条指令hciStatus_t HCI_EXT_SetRxGainCmd( uint8 rxGain ) 入口参数为 : HCI_EXT_RX_GAIN_HIGH 这时我观察到P1_1被设置成输出并且为高电平  然后我将P1_1设置成输入并且用来检测下降沿。在程序运行过程中没有出现过有程序指令将P1_1拉低的现象。程序由休眠状态到唤醒状态后重新执行上述步骤。目前测试来看没有出现异常现象。但是我无法确定当出现   :当DTM通过调用HCI_LE_TestEndCmd或HCI_Reset结束时,发射机输出功率设置恢复为默认值0 dBm。这种情形时会导致程序内部在P1_1引脚产生下降沿。而不是由外部按键产生的下降沿导致程序运行出错。

    B、对于此问题我有另一种预想的处理方式就是通过直接配置寄存器  只对P1_2  、 P1_3这两个脚配置为PA功能脚然后将 P1_1脚配置为普通输入引脚用于检测按键。但是我发现:

    RFC_OBS_CTRL0 = 0x68;
    RFC_OBS_CTRL1 = 0x6A;

    这两个寄存器所配置的结果我感到疑惑  所以提出了第三个问题。

    4、对于上述两种处理方式  您能给出一些建议吗。非常感谢。

  • 有关CC2541加PA的程序设计方面有以下几个疑问(协议栈版本1.3.2)

    1、协议栈中HCI_EXT_ExtendRangeCmd这个HCI指令默认是对P1_1、 P1_2、 P1_3这3个引脚都进行了设置吗?由于我们的硬件设计上只是将P1_2和P1_3用于PA  

    P1_1引脚用于按键,所以会设置成上拉输入以此来检测下降沿 。所以想问一下如果只用P1_2、P1_3这两个引脚射频用应该怎样配置相应的寄存器。

    2、命令行中的HAL_PA_LNA_CC2590这个宏如果不使能的话会不会对PA的设置有影响(只用P1_2、P1_3这两个脚)。

    3、对于进入低功耗时如果没有执行HCI_EXT_ExtendRangeCmd这个指令及禁止HAL_PA_LNA_CC2590这个宏的前提条件下是否需要将P1_2、P1_3设置成普通IO并且设置成低电平使PA芯片处于低功耗状态。如果将P1_2、

    P1_3这两个引脚由射频观察映射脚设置成普通IO需要进行哪些特殊的寄存器配置。

    您好,关于这个问题,您这边解决了吗

  • 建议您这边把问题整理到一起,统一发给我这边,这样的话便于我们E2E论坛的维护,希望您能理解,特别感谢。

  • 问题整理如下:

    问题1:协议栈在使能PA功能时会操作P1_1引脚  然而P1_1脚在我们的硬件上是用于按键检测的。如何使两者互不影响我这边有两种处理方式。其中方式B目前还没有实现。需要确认RFC_OBS_CTRL0、RFC_OBS_CTRL1这两个寄存器的配置值为多少。

    A、对于此问题我这边目前的处理方式是先调用hciStatus_t HCI_EXT_ExtendRfRangeCmd ( void )这条指令  然后调用这条指令hciStatus_t HCI_EXT_SetRxGainCmd( uint8 rxGain ) 入口参数为 : HCI_EXT_RX_GAIN_HIGH 这时我观察到P1_1被设置成输出并且为高电平  然后我将P1_1设置成输入并且用来检测下降沿。在程序运行过程中没有出现过有程序指令将P1_1拉低的现象。程序由休眠状态到唤醒状态后重新执行上述步骤。目前测试来看没有出现异常现象。但是我无法确定当出现   :当DTM通过调用HCI_LE_TestEndCmd或HCI_Reset结束时,发射机输出功率设置恢复为默认值0 dBm。这种情形时会导致程序内部在P1_1引脚产生下降沿。而不是由外部按键产生的下降沿导致程序运行出错。

    B、对于此问题我有另一种预想的处理方式就是通过直接配置寄存器  只对P1_2  、 P1_3这两个脚配置为PA功能脚然后将 P1_1脚配置为普通输入引脚用于检测按键。但是我发现:

    RFC_OBS_CTRL0 = 0x68;
    RFC_OBS_CTRL1 = 0x6A;

    问题2:对于两种方式是否合理,能否给出一些意见。

  • 好的 谢谢,我会进一步跟进您这边的问题,这需要一些时间。

  • 您好,您提出的这些问题,有工程师在跟进了,此查询将需要我们进行一些调查。请期待 5 月 1 日那一周的一些反馈。谢谢

  • 文档里说了“使用此特性时,这些gpio不可用” 建议您这边去按照说明文档去做一些操作,文档中不建议使用这个引脚,考虑到避免风险,最好切换到其他引脚

  • 就是因为io资源不够,所以才提出此问题。所以看这两种方式中哪一个更可行

  • 目前来看 都不推荐  datasheet 不推荐使用 您这边非得使用的话 出了不可预测的问题 你这边还得重新去解决问题

    不如一开始 就更改方案 

    两种方式的话 您这边只能自行测试了  我们不建议您这样去操作 谢谢

  • 这边可以再等一下 我跟这边的工程师反馈了 有没有什么好的方案给您这边建议 我只能去跟他们反应一下 希望尽可能的帮助到您这边

    但是这需要一些时间 

    请提供一下 您这边大概的产品更多要求的细节 以及生产产品数量还有它是用于新设计还是用于现有设计

  • 其它IO的话还有程序下载口没有使用就看用DD或者DC口做为按键检测输入口可不可行

  • 也不是说非要这么去使用,现在硬件上没有使用的引脚还剩3个一个是P03用于串口方便调试,还有就是DD、DC。主要是想和你那边确认一下有没有通过配置寄存器或者是分时复用去解决这个问题。如果实在不行我们可以更换硬件设计方案

  • 你直接更换硬件设计方案把 

    做项目一般都会预留一些io口 向你这样使用完的 以后你的项目如果想添加功能

    会很麻烦的 显然你的硬件设计不会满足项目需求的 后期项目肯定会进行升级 

    到时候去更换硬件 还不如现在一步到位

  • 可以的  不过还是想让你这边帮忙评估一下前面我提到的两个操作方式  尤其是第二种  因为目前我们已经投板打样了100套电路板回来小批量验证产品  另外假如将DD、DC这里两个引脚做为普通IO有没有什么风险呢  比如会误进入调试模式

  • 嗯嗯 您这边需要等一些时间 可能到五一之后了

  • 你正常配置不会误进入调试模式,反而配置成io口之后,会影响你进入调试模式应该

  • 你好,我问一下工程师确认过了吗?

  • 所采用的方法不是标准的,也没有在我们方面得到彻底的检验。 此外,我们建议将P1_1用作PA引脚,因为它具有20 mA的驱动能力。

    请参阅CC254x用户指南 https://www.ti.com/lit/swru191,零件数据表(https://www.ti.com/lit/ds/symlink/cc2540.pdf)和已发布的参考设计。