Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ========================================
- *
- * Copyright YOUR COMPANY, THE YEAR
- * All Rights Reserved
- * UNPUBLISHED, LICENSED SOFTWARE.
- *
- * CONFIDENTIAL AND PROPRIETARY INFORMATION
- * WHICH IS THE PROPERTY OF your company.
- *
- * ========================================
- */
- #include <project.h>
- #define R_REGISTER 0x00 // 0000 0000 - logically OR with a register address
- #define W_REGISTER 0x20 // 0010 0000 - logically OR with a register address
- #define R_RX_PAYLOAD 0x61 // 0110 0001
- #define W_TX_PAYLOAD 0xA0 // 1010 0000
- #define CONFIG 0x00
- //#define EN_AA 0x01
- //#define EN_RXADDR 0x02
- #define SETUP_AW 0x03
- //#define RF_CH 0x05
- //#define RF_SETUP 0x06
- #define STATUS 0x07
- //#define RX_ADDR_P0 0x0A
- //#define TX_ADDR 0x10
- #define RX_PW_P0 0x11
- #define FIFO_STATUS 0x17
- #define DUMMYDATA 0x55 // 0101 0101 - just so it doesn't look like anything else
- #define RX_DR 0x40 // from STATUS register
- #define RX_EMPTY 0x01 // from FIFO_STATUS register
- int main()
- {
- uint8 spiData[2]; // array for SPI commands
- uint8 data[3]; // up to 3 payloads in RX FIFO
- int dataSize; // actual size of data
- uint8 fifoStatus;
- int i;
- CyGlobalIntEnable;
- SPI_Start();
- spiData[0] = W_REGISTER | CONFIG;
- spiData[1] = 0x3F;
- SPI_SpiUartPutArray(spiData, 2); // reflect RX_DR interrupt as IRQ pin active low, enable 2-byte CRC, power-up, RX mode
- spiData[0] = W_REGISTER | SETUP_AW;
- spiData[1] = 0x03;
- SPI_SpiUartPutArray(spiData, 2); // 5 byte address
- spiData[0] = W_REGISTER | RX_PW_P0;
- spiData[1] = 0x01;
- SPI_SpiUartPutArray(spiData, 2); // 1 byte of payload
- CE_Write(1); // enable chip = start listening
- for(;;){
- if (IRQ_Read() == 0) { // if there's an RX_DR interrupt, meaning data is received
- CE_Write(0); // stop listening
- dataSize=0;
- do {
- spiData[0] = R_RX_PAYLOAD;
- spiData[1] = DUMMYDATA;
- SPI_SpiUartPutArray(spiData, 2); // read payload
- data[dataSize]=SPI_SpiUartReadRxData(); // throw payload into array
- dataSize++;
- spiData[0] = R_REGISTER | FIFO_STATUS;
- spiData[1] = DUMMYDATA;
- SPI_SpiUartPutArray(spiData, 2);
- fifoStatus = SPI_SpiUartReadRxData();
- } while ((fifoStatus & RX_EMPTY) == 0); // do until RX FIFO empty
- spiData[0] = STATUS;
- spiData[1] = RX_DR;
- SPI_SpiUartPutArray(spiData, 2); // clear interrupt
- for (i=0; i<dataSize; i++) { // process received data
- LED_Write(data[i]);
- }
- CE_Write(1); // start listening again
- }
- }
- }
- /* [] END OF FILE */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement