Now the communication is more or less okay.
With ACK with Payload, two way communication can be done without change the role of PRX and PTX.
BUT: with send ACK with Payload length >= 18 bytes. the PRX won’t be able to receive anything. I’m not sure whether it’s a problem in Arduino+NRF24L01(PTX)
or the STM32+NRF24L01(PRX).
31/03/2014: The problem turns out to be with the Arduino Mega board I’m using, when I use Serial.print to print the ACK package out with baudrate == 115200, arduino will halt after a while. I don’t know what’s the cause of this behavior. I decreased the baudrate to 57600 and reduce the data to be printed out, I can receive ACK package with payload length up to 32 bytes. However, I need to test what will happen when the distance increases. Anyway, next step is to design the two-way protocol.
And as for performance, I’m using interrupt on Arduino, but still I need to wait at least 8ms before sending another packet, so that I’m not quite sure this way is much better than the PRX-TX-switch-role solution.
I will try to implement the switch role solution and compare to see the exact results. I’m okay with the performance of the ACK-WITH-PAYLOAD now, I don’t want to spend extract time for implement approach (for now). (Maybe I will try with pcDuino).
01/04/2014: Arduino+nRF24L01 + STM32
The first past for Arduino to retrieve MPU6050 data from STM32 is done.