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