Hello all, Im trying to send a packet from CC2500 + MSP430F2013 to Ez430-RF2500 using the CC1100/2500 Code Library (slaa325a).In the Ez430-RF2500 it works fine, but in the CC2500 + MSP430F2013 it doesnt work and in this last configuration I ve fixed all in the library im using except the "GDO0" cause i really dont know where i can joint it(i didnt have much Pins MSP430F2013). The code is compiled well and i can run it as well, but the radio doesnt send anything to the Ez430-RF2500. my question is: do you have any ideas about this problem??So please help me.RegardsAndrea
Hi.
Since you have the ez430-rf2500 did you manage to get a successful communication between the two rf2500t boards?
When i tried the slaa325a library i noticed that most of the time the data were corrupted and the device didn't behave exactly as expected. I also found out that some TI notes pointed out some of the problems of the library ( i didn't find where or how though ).
From what i remember about that library is that while issuing the commands over the spi, the interrupts aren't blocked and thus, i suspect, they can get corrupted. Did you manage to solve that problem? If not, probably you should check that out.
Regards.
JD
Hi, thanks a lot, the two rf2500t boards work perfectly with that library, but i vent understood the part about the interrupts: can you explain it better? when the CC2500 + MSP430F2013 arrive to the function void RFSendPacket(char *txBuffer, char size)" , on the rf2500t board' side nothing happens.
Andrea TI Hi, thanks a lot, the two rf2500t boards work perfectly with that library,
Hi, thanks a lot, the two rf2500t boards work perfectly with that library,
the led it is supposed to switch each time you push the button. In my case, the led sometimes switched, sometimes blinked, sometimes did nothing at all. If in your case it works fine well...
lucky you :)
Andrea TI but i vent understood the part about the interrupts: can you explain it better?
If you look at the code related to the spi primitives you may notice that there's nothing that prevent an ISR from switching the context of the primitive itself. That means that an external event a glitch o anything else, may trigger an interrupt, and thus an interrupt service routine, which will corrupt the transmission over the spi, and the command given to the CC2500.
If you look at the mrfi layer of the SimpliciTI, you may notice that most of the spi primitives contains 4 macro preprocessors, two of them, at the beginning of the routine, store the interrupt state and disable all the interrupts, the other two, at the end, restore the interrupt state, and enable the interrupt again. Those macro prevent an interrupt from triggering during the transmission over the spi, avoiding the corruption of the command given to the CC2500.
Another proof of that may be ( I'm not so sure about that ) the fact that if you step through the code by means of the debugger, the device lock itself when reaching the waiting loops.
Andrea TI when the CC2500 + MSP430F2013 arrive to the function void RFSendPacket(char *txBuffer, char size) , on the rf2500t board side nothing happens. Since you receive something when you transmit using the rf2500t, but you do not if you transmit using the MSP430F2013, you may try to step through the code to see what happening in both cases. I'm afraid i can't be very helpful on this matter since i'm not an expert, but you may need to check which pins have been used to connect the cc2500 to the MSP430F2013, and verify that the preprocessor macros have been adjusted properly and accordingly to the pinout. Regards. JD.
Andrea TI when the CC2500 + MSP430F2013 arrive to the function void RFSendPacket(char *txBuffer, char size) , on the rf2500t board side nothing happens.
Since you receive something when you transmit using the rf2500t, but you do not if you transmit using the MSP430F2013, you may try to step through the code to see what happening in both cases. I'm afraid i can't be very helpful on this matter since i'm not an expert, but you may need to check which pins have been used to connect the cc2500 to the MSP430F2013, and verify that the preprocessor macros have been adjusted properly and accordingly to the pinout.
JD.
yes, i've disable Interrupt, I/O ecc.. before RFSetting and now works!
It is working perfectly.
Thank you very much.
Regards, Andrea
Glad to hear that...
HI HI! :D Erm I also doing something similar to your coding. >.< if you don't may I ask you how to transfer data from your MCU to CC2500 and then transmit to eZ430 RF2500?
Which code should I debug? I also looking at the slaa325a.
THANK YOU!
HI HI! :D Erm I also doing something similar to your coding. >.< if you don't mind I ask you how to transfer data from your MCU to CC2500 and then transmit to eZ430 RF2500?
you need add this code: WDTCTL = WDTPW + WDTHOLD; // Stop WDT //input_data=P1IN; //Read only register P1OUT = 0x00; // The outputs are low P1SEL = 0x00; // Peripheral module function: I/O function is selected. P1DIR = 0x01; // 1 -> Output; 0 -> Input; P1REN = 0x00; // Pullup/pulldown resistor disabled P1IES = 0x00; // Interrupt Edge Select Registers P1IE = 0x00; // Disable all PORTx interrupts P1IFG = 0x00; // Clear all interrupt flags //input_data=P2IN; //Read only register P2OUT = 0x00; // The outputs are low P2SEL = 0x00; // Peripheral module function: I/O function is selected. P2DIR = 0x00; // 1 -> Output; 0 -> Input P2REN = 0x00; // Pullup/pulldown resistor disabled P2IES = 0x00; // Interrupt Edge Select Registers P2IE = 0x00; // Disable all PORTx interrupts P2IFG = 0x00; // Clear all interrupt flagsbefore the SPI comunication with the radio .. // 5ms delay to compensate for time to startup between MSP430 and CC1100/2500 __delay_cycles(5000); TI_CC_SPISetup(); // Initialize SPI port TI_CC_PowerupResetCCxxxx(); // Reset CCxxxx writeRFSettings(); // Write RF settings to config reg TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen);//Write PATABLEecc...