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.

[参考译文] CCS/MSP-EXP430G2:两个 MSP430G2553 Launchpad 之间使用 nRF24L01+进行通信时遇到问题

Guru**** 2587365 points
Other Parts Discussed in Thread: MSP430G2553

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/593307/ccs-msp-exp430g2-facing-problem-communication-between-two-msp430g2553-launchpad-using-nrf24l01

器件型号:MSP-EXP430G2
主题中讨论的其他器件:MSP430G2553

工具/软件:Code Composer Studio

我想使用 nRF224L01+在两个"MSP430G2553" Launchpad 之间进行无线通信。 下面 列出了发射器和接收器的程序。 我使用的 是"GitHub - SPIILIS/msprf24:用于 MSP430微控制器系列的 nRF24L01+库"库。 两个程序中都没有显示错误。问题是我的程序 LED 应该亮起、但没有发生任何情况。 请为我提供一些指导。

这些发送器和接收器代码来自以 Test_Programs 形式提供的库。 我还提供了该计划标题的链接

#include
#include "msprf24.h"
#include "nrf_userconfig.h"
#include "stdint.h"
volatile unsigned int user;
int main()
uint8_t addr[5];
uint8_t buf[32];
WDTCTL = WDTHOLD | WDTPW;
DCOCTL = CALDCO_16MHz;
BCSCTL1 = CALBC1_16MHz;
BCSCTL2 = DIVS_1; // SMCLK = DCOCLK/2
// SPI (USCI)使用 SMCLK、首选 SMCLK < 10MHz (nRF24 = 10MHz 时的 SPI 速度限制)
//用于状态的红色、绿色 LED
P1DIR |= 0x41;
P1OUT &=~0x41;
用户= 0xFE;
nRF24L01+库配置变量的/*初始值*/
RF_CRC = RF24_EN_CRC | RF24_CRCO;// CRC 被启用、16位
rf_addr_width   = 5;
RF_SPED_POWER  = RF24_SPED_1Mbps | RF24_POWER_0dBm;
RF_CHANNEL     = 120;
msprf24_init(); //默认关闭所有 RX 管道
msprf24_set_pipe_packetsize (0、32);
msprf24_open_pipe (0、1); //打开 pipe#0、启用增强型 ShockBurst 以接收 Auto-ACK
    //注意:PIPE#0在收发器硬件中被硬编码为要接收的 TX 节点的指定"管道"
    //自动 ACK。  这不必与 RX 侧使用的管道编号相匹配。
//发送到'rad01'(0x72 0x61 0x64 0x30 0x31)
msf24_standby();
用户= msf24_current_state ();
ADDR[0]= 0xDE;ADDR[1]= 0xAD;ADDR[2]= 0xBE;ADDR[3]= 0xEF;ADDR[4]= 0x00;
w_tx_addr (addr);
W_Rx_addr (0、addr); //管道0接收自动应答、自动应答被发送回 TX addr、因此 PTX 节点
      //需要侦听管道#0上的 TX addr 以接收它们。
while (1){
_DELAY_CYCLES (800000);
if (buf[0]='0'){buf[0]='1';buf[1]='0';}
否则{buf[0]='0';buf[1]='1';}
W_TX_PAYLOAD (32、buf);
msprf24_active_tx ();
LPM4;
if (RF_IRQ 和 RF24_IRQ_Fagged){
RF_IRQ &=~RF24_IRQ_Fagged;
msf24_get_IRQ_reason();
IF (RF_IRQ 和 RF24_IRQ_TX){
P1OUT &=~BIT0;//红色 LED 关闭
P1OUT |= 0x40; //绿色 LED 亮起
IF (RF_IRQ 和 RF24_IRQ_TXFAILED){
P1OUT &=~BIT6;//绿色 LED 关闭
P1OUT |= BIT0; //红色 LED 亮起
msprf24_IRQ_CLEAR (RF_IRQ);
用户= msprf24_get_last_reTrans发射();
返回0;

接收器代码:- link-"" https://github.com/spirilis/msprf24/blob/master/TESTPROGS/g2553/ike-uscia-rx.c "

#include
#include "msprf24.h"
#include "nrf_userconfig.h"
#include "stdint.h"
volatile unsigned int user;
int main()
uint8_t addr[5];
uint8_t buf[32];
WDTCTL = WDTHOLD | WDTPW;
DCOCTL = CALDCO_16MHz;
BCSCTL1 = CALBC1_16MHz;
BCSCTL2 = DIVS_1; // SMCLK = DCOCLK/2
// SPI (USCI)使用 SMCLK、首选 SMCLK < 10MHz (nRF24 = 10MHz 时的 SPI 速度限制)
//红色 LED 将是我们的输出
P1DIR |= BIT0+BIT6;
P1OUT &=~(BIT0+BIT6);
用户= 0xFE;
nRF24L01+库配置变量的/*初始值*/
RF_CRC = RF24_EN_CRC | RF24_CRCO;// CRC 被启用、16位
rf_addr_width   = 5;
RF_SPED_POWER  = RF24_SPED_1Mbps | RF24_POWER_0dBm;
RF_CHANNEL     = 120;
msf24_init();
msprf24_set_pipe_packetsize (0、32);
msprf24_open_pipe (0、1); //使用增强型 ShockBurst 打开 pipe#0
//设置我们的 RX 地址
ADDR[0]= 0xDE;ADDR[1]= 0xAD;ADDR[2]= 0xBE;ADDR[3]= 0xEF;ADDR[4]= 0x00;
w_rx_addr (0、addr);
//接收模式
if (!(RF24_queue_RXEMPTY & msprf24_queue_state ())){
flush_rx();
msprf24_active_rx();
LPM4;
while (1){
if (RF_IRQ 和 RF24_IRQ_Fagged){
RF_IRQ &=~RF24_IRQ_Fagged;
msf24_get_IRQ_reason();
IF (RF_IRQ 和 RF24_IRQ_RX || msf24_Rx_PEND()){
r_rx_payload (32、buf);
msprf24_IRQ_CLEAR (RF24_IRQ_RX);
用户= buf[0];
如果(buf[0]='0')
P1OUT &=~BIT0;
如果(buf[0]='1')
P1OUT |= BIT0;
如果(buf[1]='0')
P1OUT &=~BIT6;
如果(buf[1]='1')
P1OUT |= BIT6;
}否则{
用户= 0xFF;
LPM4;
返回0;

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请您澄清一下、

    "问题是我的程序 LED 应该亮起、但没有发生任何情况"

    什么是程序 LED? 这是一个您通过 MSP430控制或讨论对 MSP430进行编程的 LED。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Nima Eskandari"]

    请您澄清一下、

    "问题是我的程序 LED 应该亮起、但没有发生任何情况"

    什么是程序 LED? 这是一个您通过 MSP430控制或讨论对 MSP430进行编程的 LED。

    [/报价]

    是的、我将讨论 MSP430的编程。 在成功实施后、作为结果的计划中、我被指示为输出、但 LED 未亮起。 如上所述。 请指导我犯错的地方。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有两个 LED。 P1.6和 P1.0。 它们均已正确配置。哪个 LED 未亮起? Rx 和 TX 代码上的问题也是吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Nima Eskandari"]

    有两个 LED。 P1.6和 P1.0。 它们均已正确配置。哪个 LED 未亮起? Rx 和 TX 代码上的问题也是吗?

    [/报价]

     Tx 和 Rx 上的两个 LED 均未亮起。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    #include 
    #include "msprf24.h"
    #include "nrf_userconfig.h"
    #include "stdint.h"
    volatile unsigned int user;
    int main ()
    {
    uint8_t addr[5];
    uint8_t buf[32];
    WDTCTL = WDTHOLD | WDTPW;
    DCOCTL = CCASCL1MHz
    
    ;BC16MHZ = CC1MHZ;BC1MCL_TCL1;BC16MHZ // SMCLK = DCOCLK/2
    // SPI (USCI)使用 SMCLK,首选 SMCLK < 10MHz (nRF24的 SPI 速度限制= 10MHz)
    //红色 LED 将是我们的输出
    P1DIR |= BIT0+BIT6;
    P1OUT &=~(BIT0+BIT6);
    
    while (1
    
    ^)+BIT6
    }
    

    您能否尝试此代码并验证 LED 是否工作正常?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Nima Eskandari"]

    #include 
    #include "msprf24.h"
    #include "nrf_userconfig.h"
    #include "stdint.h"
    volatile unsigned int user;
    int main ()
    {
    uint8_t addr[5];
    uint8_t buf[32];
    WDTCTL = WDTHOLD | WDTPW;
    DCOCTL = CCASCL1MHz
    
    ;BC16MHZ = CC1MHZ;BC1MCL_TCL1;BC16MHZ // SMCLK = DCOCLK/2
    // SPI (USCI)使用 SMCLK,首选 SMCLK < 10MHz (nRF24的 SPI 速度限制= 10MHz)
    //红色 LED 将是我们的输出
    P1DIR |= BIT0+BIT6;
    P1OUT &=~(BIT0+BIT6);
    
    while (1
    
    ^)+BIT6
    }
    

    您能否尝试此代码并验证 LED 是否工作正常?

    [/报价]

    运行此代码后、两个 LED 均亮起。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、Chetan。 这表明 LaunchPad 和您的 LED 配置不是问题。 您需要检查 nrf_userconfig 的代码、以查看程序是否因该代码中的错误而停止。 这是第三方库。 仔细检查外部硬件连接。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Nima Eskandari"]

    好的、Chetan。 这表明 LaunchPad 和您的 LED 配置不是问题。 您需要检查 nrf_userconfig 的代码、以查看程序是否因该代码中的错误而停止。 这是第三方库。 仔细检查外部硬件连接。

    [/报价]

    非常感谢 Nima Esksndari 的全程支持。 阅读完您的回复 后、我对文件"nrf_userconfig"进行了一些更改、我的问题得到了解决。 再次感谢你们 !!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没问题。 我很高兴您的问题得到了解决。 我要关闭此主题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Chetan、我将开始使用 NRF24L01作为 TX、使用另一个 NRF24L01作为 RX 来发送 HTTP 软件包。 是否可以将 nrf_userconfig 文件发送给我以进行检查?.. 提前感谢。