nRF905 Communication Issues

Hello,

I am a college student currently in my final year of school.  For my senior design project my group is designing and building a wireless weather station.  We are using two nRF905's as our transmitter and receiver.  On our transmitter circuit, we have multiple meteorological sensors input to a Microchip PIC16F877A.  The microcontroller outputs to two Texas Instruments SN74LVC245AN transceiver logic level shifters to obtain 3.3v logic to input to our nRF905.  On our receiver circuit, we have essentially the reverse setup...nRF905 receives the wireless transmission and sends to our two Texas Instruments SN74LVC245AN transceiver logic level shifters to obtain 5v logic to input to our PIC microcontroller. 

Here is our issue, with our nRF905, we are able to write to it, however we are only able to read from our rf configuration register.  Regardless from what instruction set we use; we are only able to read from our configuration register.  We have verified that we are sending the correct instructions by using a logic analyzer.  We have also verified that our nRF905 is good by swapping out several and obtaining the same results multiple times.  When we read from our configuration register, the input data continues to loop configuration register values.  We are hoping the issue is simply something being overlooked, as we are only students using the nRF905.  

We are also looking for nRF905 libraries in C language, as we were unable to find anything in specifically C online.  Does Nordic have any example code or demonstration code available in C for the nRF905? 

Included are screenshots of our logic analyzer capturing data from instruction 0x20.  Using this instruction, we plan on writing to the transmitter payload register.  Here, the nRF905 is only outputting portions of our configuration values in semi-random order.  This occurs for every instruction set.  Any ideas how to access any other register values or what issues may be occuring?

Thank you, we appreciate your time and consideration, 

Thomas

Parents
  • Hi,

    Not much development has been done on the nRF905 for quite some years, we don't have any SDK that is specific for the nRF905. A collegue have made a small example that show how an nRF52 can interface an nRF905, it's a "mock-up", but maybe it can still be useful in your case, to see if you might have missed something (timing or configuration).

    The nRF905 is controlled over the SPI interface, and a very simplistic protocol on top. The "noack" operation should work for both RX and TX operation. 

    It is based upon SDK v11, and should be unzipped in location: \nRF5_SDK_11.0.0_89a8197\examples\peripheral\ if you want to compile it.

    You'll need 2 x nRF905 modules and 2 x nRF52-DK for this to work "as-is". The digital peripherals, like UART/SPI/TWI, can be output on any available GPIO in the nRF5x-series, so you can change the pin-out in the example code that I provided to fit your needs:

    #define NRF905_CLK     26
    #define NRF905_MOSI    2
    #define NRF905_MISO    25
    #define NRF905_CSN     27
    #define NRF905_DR      24 // input, active high
    #define NRF905_AM      23 // input, active high
    #define NRF905_CD      22 // input, active high
    #define NRF905_PWR_UP  20 // output, active high
    #define NRF905_TRX_CE  19 // output, active high
    #define NRF905_TXEN    30  // output, '1' = TX, '0' = RX 

    Wires can then be connected from the nRF905 module to the nRF52-DK, and determine in the firmware loaded onto the nRF52832 if the 905 is a receiver or transmitter.

    Kenneth

    spim_nrf905.zip

Reply
  • Hi,

    Not much development has been done on the nRF905 for quite some years, we don't have any SDK that is specific for the nRF905. A collegue have made a small example that show how an nRF52 can interface an nRF905, it's a "mock-up", but maybe it can still be useful in your case, to see if you might have missed something (timing or configuration).

    The nRF905 is controlled over the SPI interface, and a very simplistic protocol on top. The "noack" operation should work for both RX and TX operation. 

    It is based upon SDK v11, and should be unzipped in location: \nRF5_SDK_11.0.0_89a8197\examples\peripheral\ if you want to compile it.

    You'll need 2 x nRF905 modules and 2 x nRF52-DK for this to work "as-is". The digital peripherals, like UART/SPI/TWI, can be output on any available GPIO in the nRF5x-series, so you can change the pin-out in the example code that I provided to fit your needs:

    #define NRF905_CLK     26
    #define NRF905_MOSI    2
    #define NRF905_MISO    25
    #define NRF905_CSN     27
    #define NRF905_DR      24 // input, active high
    #define NRF905_AM      23 // input, active high
    #define NRF905_CD      22 // input, active high
    #define NRF905_PWR_UP  20 // output, active high
    #define NRF905_TRX_CE  19 // output, active high
    #define NRF905_TXEN    30  // output, '1' = TX, '0' = RX 

    Wires can then be connected from the nRF905 module to the nRF52-DK, and determine in the firmware loaded onto the nRF52832 if the 905 is a receiver or transmitter.

    Kenneth

    spim_nrf905.zip

Children
No Data
Related