Thread 中讨论的其他器件: MSP430F5438A、 SMARTRXEBK
工具与软件:
大家好!
我使用 pic32cm5164ls60100处理 CC125、我需要通过 cc125传输数据的基本示例代码
谢谢。
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.
工具与软件:
大家好!
我使用 pic32cm5164ls60100处理 CC125、我需要通过 cc125传输数据的基本示例代码
谢谢。
SW 可在此处找到:
使用 SmartRF Studio 生成 CC1125的设置。
BR
Siri
你好、Siri、
感谢您的答复
我从上面的链接下载了工程、但导入工程时 CCS 中没有发生
您能告诉我使用 SPI 只通过 CC1125发送数据而不使用任何中断的步骤吗?
我不熟悉射频通信。
祝你一切顺利
Sudhir
您可以查看 CC112x_ease_link_tx.c 文件、其中显示了一个关于如何传输数据包的非常简单的示例。
您需要实施的必要步骤如下:
初始化您的 MCU
使用从 SmartRF Studio 导出的 SPI 寄存器(在 cc112x_ease_link_reg_config.h 中找到的设置)初始化无线电
将数据写入您的 TX FIFO
选通 STX。
SPI 函数位于此处:
\source\components\targets\trxeb_msp430f5438a
必须移植到您的 MCU
Siri
你好、Siri、
感谢您的回复、
我按照您的指令 操作、但我的 cc1125不会生成中断并卡在 while (packetSemaphore!= isr_action_required);
我还检查了示波器 GPIO 2是否继续保持3.3V
现在我使用 SMARTRXEBK、我有2个 SMARTRXEBK。
但我的一个朋友通过使用该代码给出了一个示例代码、我得到了一些结果。
这是我在频谱分析仪上不断得到的结果, 我不知道这是数据或其他东西。

但问题是、当我尝试使用 SMART Studio RF 在另一个 SMARTRXEBK 上接收这个传输数据时、我没有得到任何结果。
但是、当我使用 SMARTRXEBK SMART RF Studio 进行发送和接收时、我可以进行接收和发送、但使用代码在频谱分析仪上获得信号。
下面是我的代码
cc112xSpiReadReg (CC112X_PARTNUMBER、&Device_id、1);//读取设备 ID CC1125 = 0x58
if (Device_id == 0x58)
{
P4OUT 并且=~BIT0;// LED1打开
Crystal_freq.ver = 0x01;
}
crystal_freq.id = Device_id;
// trxDetectRfCrystalFrequency (&Crystal_freq);
TxSpiCmdStrobe (CC112X_SRES);//重置无线电
registerConfig();
unsigned char writeByte=0x06;
// manualCalibration();
cc112xSpiWriteReg (CC112X_IOCFG2、&writeByte、1);
cc112xSpiReadReg (CC112X_IOCFG2、_RED、1);
//--------------- Rx
// trxSpiCmdStrobe (CC112X_Sidle);//理想
cc112xSpiWriteReg (CC112X_IOCFG3、&gpioConfigSlave[0]、4);
延迟(60000);
manualCalibration();
延迟(60000);
calibrateRCOsc();
延迟(60000);
TxSpiCmdStrobe (CC112X_SRX);
cc112xSpiWriteReg (CC112X_PKT_CFG0、0x40、1);// PKT_CFG =无限数据包模式
cc112xSpiWriteReg (CC112X_PKT_LEN、0x00、1);// PKT_Lenight 256
tx_buff[0]=00;
for (i=1;i<(Buff_Size + 1);i++)
{
tx_buff[i]='a';
}
TxSpiCmdStrobe (CC112X_SFTX);//刷新 Tx 缓冲区
/
cc112xSpiWriteTxFifo (Tx_buff、(Buff_Size + 1));
//选通 TX 发送数据包
TxSpiCmdStrobe (CC112X_STX);
TX_buff[0]= Buff_Size + 1;
for (i=1;i<(Buff_Size + 1);i++)
{
tx_buff[i]="B";
}
TxSpiCmdStrobe (CC112X_SFTX);//刷新 Tx 缓冲区
delay (60000);//
cc112xSpiWriteTxFifo (Tx_buff、(Buff_Size + 1));
TxSpiCmdStrobe (CC112X_SFTX);//刷新 Tx 缓冲区
cc112xSpiWriteReg (CC112X_PKT_CFG0、0x20、1);// PKT_CFG =无限数据包模式
cc112xSpiWriteReg (CC112X_PKT_LEN、0x30、1);// PKT_Lenight 256
tx_buff[0]=48;
适用于(I=1;I<49;I++)
{
tx_buff[i]="C";
}
TxSpiCmdStrobe (CC112X_SFTX);//刷新 Tx 缓冲区
delay (60000);//
cc112xSpiWriteTxFifo (Tx_buff、49);
TxSpiCmdStrobe (CC112X_SFTX);//刷新 Tx 缓冲区
trxSpiCmdStrobe (CC112X_Sidle);
祝你一切顺利
Mayank
请遵循我的建议、了解代码需要执行的操作。
由于您使用的是我们的 EMS、因此我们知道硬件是好的、所以问题必须与软件有关。
我完全不明白你在试图对发布的代码,混合无限数据包长度模式和可变数据包长度模式等做什么,我不知道你正在使用什么寄存器设置。
您应该测试一些类似如下的简单代码:
使用 SmartRF Studio 中的以下设置:
// Address Config = No address check
// Bit Rate = 1.2
// Carrier Frequency = 869.224854
// Deviation = 3.995895
// Device Address = 0
// Manchester Enable = false
// Modulation Format = 2-GFSK
// PA Ramping = true
// Packet Bit Length = 0
// Packet Length = 255
// Packet Length Mode = Variable
// Performance Mode = High Performance
// RX Filter BW = 15.625000
// Symbol rate = 1.2
// TX Power = 15
// Whitening = false
static const registerSetting_t preferredSettings[]=
{
{CC1125_IOCFG3, 0xB0},
{CC1125_IOCFG2, 0x06},
{CC1125_IOCFG1, 0xB0},
{CC1125_IOCFG0, 0x40},
{CC1125_SYNC_CFG1, 0x08},
{CC1125_DEVIATION_M, 0xA3},
{CC1125_MODCFG_DEV_E, 0x0A},
{CC1125_DCFILT_CFG, 0x1C},
{CC1125_FREQ_IF_CFG, 0x33},
{CC1125_IQIC, 0xC6},
{CC1125_CHAN_BW, 0x10},
{CC1125_MDMCFG0, 0x05},
{CC1125_SYMBOL_RATE2, 0x3F},
{CC1125_SYMBOL_RATE1, 0x75},
{CC1125_SYMBOL_RATE0, 0x10},
{CC1125_AGC_REF, 0x20},
{CC1125_AGC_CS_THR, 0x19},
{CC1125_AGC_CFG1, 0xA9},
{CC1125_AGC_CFG0, 0xCF},
{CC1125_FIFO_CFG, 0x00},
{CC1125_FS_CFG, 0x12},
{CC1125_PKT_CFG0, 0x20},
{CC1125_PKT_LEN, 0xFF},
{CC1125_IF_MIX_CFG, 0x00},
{CC1125_FREQOFF_CFG, 0x22},
{CC1125_FREQ2, 0x56},
{CC1125_FREQ1, 0xEC},
{CC1125_FREQ0, 0x28},
{CC1125_IF_ADC0, 0x05},
{CC1125_FS_DIG1, 0x00},
{CC1125_FS_DIG0, 0x5F},
{CC1125_FS_CAL0, 0x0E},
{CC1125_FS_DIVTWO, 0x03},
{CC1125_FS_DSM0, 0x33},
{CC1125_FS_DVC0, 0x17},
{CC1125_FS_PFD, 0x50},
{CC1125_FS_PRE, 0x6E},
{CC1125_FS_REG_DIV_CML, 0x14},
{CC1125_FS_SPARE, 0xAC},
{CC1125_XOSC5, 0x0E},
{CC1125_XOSC3, 0xC7},
{CC1125_XOSC1, 0x07},
};
#define PKTLEN 5
uint8 Tx_buff[PKTLEN + 1] = {0};
uint8 Rx_buff[PKTLEN + 1 + 2] = {0}; // Need to have room for length byte and 2 status bytes
trxSpiCmdStrobe(CC112X_SRES); // RESET Radio
registerConfig();
// if PARTVERSION is 0x21, do manual calibration (if this is the case, SETTLING_CFG should be set to 0x03 instead of 0x0B)
// manualCalibration();
// Implement packet length filtering to avoid overflow
// PKTLEN must no be larger than 128 - 3 = 125 to make sure that the comeplete payload + length byte + status bytes
// ha ve room in the FIFO
writeByte = PKTLEN;
cc112xSpiWriteReg(CC112X_PKT_LEN, &writeByte, 1);
//--------------------------------------------------------------
// TX:
//--------------------------------------------------------------
Tx_buff[0] = PKTLEN; // Length byte
for(i = 1; i < (PKTLEN + 1); i++)
{
Tx_buff[i] = 'A'; // Payload consiste of 0xAAAAAAAAAA
}
// Write the packet to the TX FIFO
cc112xSpiWriteTxFifo(Tx_buff, sizeof(Tx_buff));
// Strobe TX to send packet
trxSpiCmdStrobe(CC112X_STX);
// Wait for falling edge of GDO2
//--------------------------------------------------------------
//--------------------------------------------------------------
// RX:
//--------------------------------------------------------------
trxSpiCmdStrobe(CC112X_SRX);
// Wait for falling edge of GDO2
// Read the RX FIFO when a packet has been received
Siri