123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- * CC2500 helper routines
- */
-
- #include <util/delay.h>
-
- #include "spi.h"
- #include "cc2500.h"
-
- void cc2500ReadRegisterMulti(uint8_t address, uint8_t data[], uint8_t length) {
- CS_off;
- spiWrite(address);
- for (uint8_t i = 0; i < length; i++) {
- data[i] = spiRead();
- }
- CS_on;
- }
-
- void cc2500WriteRegisterMulti(uint8_t address, const uint8_t data[], uint8_t length) {
- CS_off;
- spiWrite(CC2500_WRITE_BURST | address);
- for (uint8_t i = 0; i < length; i++) {
- spiWrite(data[i]);
- }
- CS_on;
- }
-
- void cc2500WriteReg(uint8_t address, uint8_t data) {
- CS_off;
- spiWrite(address);
- NOP();
- spiWrite(data);
- CS_on;
- }
-
- uint8_t cc2500ReadReg(uint8_t address) {
- uint8_t result;
- CS_off;
- address |= 0x80; // bit 7 =1 for reading
- spiWrite(address);
- result = spiRead();
- CS_on;
- return result;
- }
-
- void cc2500Strobe(uint8_t address) {
- CS_off;
- spiWrite(address);
- CS_on;
- }
-
- void cc2500ResetChip(void) {
- // Toggle chip select signal
- CS_on;
- _delay_us(30);
- CS_off;
- _delay_us(30);
- CS_on;
- _delay_us(45);
- cc2500Strobe(CC2500_SRES);
- _delay_ms(100);
- }
|