Report
4 years, 4 months ago.

KL25Z: pinmap not found for peripheral

Hello, I'm trying to get my RF24 board to work with my KL25Z, and I am using the code below, but it appears to not run at all. When I look at the serial output (screen Unix) all I get is "pinmap not found for peripheral". Any ideas?

code

 #include "mbed.h"
#include "nRF24L01P.h"

Serial pc(PTE22, PTE23); // tx, rx

nRF24L01P my_nrf24l01p(PTB3, PTB2, PTB1, PTC1, PTC2, PTB0);    // mosi, miso, sck, csn, ce, irq

//DigitalOut myled1(LED1);
//DigitalOut myled2(LED2);

int main() {

// The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
//  "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
//  only handles 4 byte transfers in the ATMega code.
#define TRANSFER_SIZE   4

    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
    int txDataCnt = 0;
    int rxDataCnt = 0;

    my_nrf24l01p.powerUp();

    // Display the (default) setup of the nRF24L01+ chip
    pc.printf( "nRF24L01+ Frequency    : %d MHz\r\n",  my_nrf24l01p.getRfFrequency() );
    pc.printf( "nRF24L01+ Output power : %d dBm\r\n",  my_nrf24l01p.getRfOutputPower() );
      pc.printf( "nRF24L01+ Data Rate    : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
   pc.printf( "nRF24L01+ TX Address   : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
    pc.printf( "nRF24L01+ RX Address   : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );

    pc.printf( "Type keys to test transfers:\r\n  (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );

    my_nrf24l01p.setTransferSize( TRANSFER_SIZE );

    my_nrf24l01p.setReceiveMode();
    my_nrf24l01p.enable();

    while (1) {

        // If we've received anything over the host serial link...
        if ( pc.readable() ) {

            // ...add it to the transmit buffer
            txData[txDataCnt++] = pc.getc();

            // If the transmit buffer is full
            if ( txDataCnt >= sizeof( txData ) ) {

                // Send the transmitbuffer via the nRF24L01+
                my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );

                txDataCnt = 0;
            }

            // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
         //   myled1 = !myled1;
        }

        // If we've received anything in the nRF24L01+...
        if ( my_nrf24l01p.readable() ) {

            // ...read the data into the receive buffer
            rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );

            // Display the receive buffer contents via the host serial link
            for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {

                pc.putc( rxData[i] );
            }

            // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
        //    myled2 = !myled2;
        }
    }
}
Comment on this question

2 Answers

4 years, 4 months ago.

This normally means you are using the wrong pins, or even the wrong board for the compiler. Check you are compiling for the correct board.

According to MBED, I am using the right board. As for the pins, I am using the card that came with the KL25z

posted by Keaton Burleson 06 Apr 2015
4 years, 4 months ago.

Hi,
I think that PTB0 can not be used for interrupt.
For interrupt, use PTAx or PTDx.
For more details please refer to RM
http://cache.freescale.com/files/32bit/doc/ref_manual/KL25P80M48SF0RM.pdf

Although it may not be necessary usually I use
PTD3 for miso
PTD2 for mosi
PTD1 for sclk
and use PTD0, PTD5, PTA13 for other control pins.

moto

Thanks moto, this got me working, now I need to get it sending data, as the Arduino (client to the RF24) isn't receiving any data.

posted by Keaton Burleson 06 Apr 2015

You need to log in to post a question