user37307: Good evening, I'm trying to establish serial communication between an Arduino UNO/Nano (ATMega328P) and a SP1ML-868 RF radio module (http://www.st.com/en/wireless-connectivity/sp1ml.html). I can talk to the radio with an FTDI breakout board, connected directly to my PC, but I can't do it with the Arduino.
As the radio is 3.3V and the Arduino is 5V, I tried to use the logic level converter from Sparkfun in the RX/TX lines, but that didn't work as well.
Any idea as to what I might be doing wrong? Thanks!
EDIT
I was able to talk to the radio by uploading a blank sketch to my Arduino and using only the RX/TX pins and the FTDI chip on the board. When I configure the Serial port (i.e. Serial.begin), this no longer works, which leads me to believe the problem is in the ATmega USART configuration. For some weird reason, this only works when the Arduino RX is connected to the module RX, and TX with TX.
As requested, below is the simple serial echo code I'm using, and an image with the wiring. This assumes the normal RX->TX and vice-versa connection. The module is powered through wires underneath its breakout board (3.3v).

void setup(){
  Serial.begin(115200);
}

void loop(){
  while(Serial.available() > 0){
    Serial.print((char)Serial.read());
  }
}



user37307: Not an answer to my question per-se, but I was able to solve my problem.
As mentioned on my comment on the last answer, the SP1ML module's serial communication is handled through an ARM microcontroller. So I got my hands on an Arduino Due, which has an ARM Cortex M3 MCU, and uploaded a serial echo code similar to the one on my question, only now using Serial3 to talk to the module:

void setup(){
  Serial.begin(9600);    // Connected to PC
  Serial3.begin(115200); // Connected to SP1ML, Rx-Tx connection
}
void loop(){
  if (Serial.available() > 0){
    Serial3.write(Serial.read()); // Echo to SP1ML
  }
  if (Serial3.available() > 0){
    Serial.write(Serial3.read()); // Echo to serial monitor 
  }
}

I tried the exact same code on an Arduino Mega (same pins, ATmega2560 MCU) and it didn't work.
Obviously the MCUs are very different, but I have no idea one works and the other doesn't. A wild guess would be that the word sizes are different. In the Atmega, the word size is 16-bits, and in the ARM, the word size is 32-bits.

37307: <p>Good evening, I'm trying to establish serial communication between an Arduino UNO/Nano (ATMega328P) and a SP1ML-868 RF radio module (<a href="http://www.st.com/en/wireless-connectivity/sp1ml.html" rel="nofollow noreferrer">http://www.st.com/en/wireless-connectivity/sp1ml.html</a>). I can talk to the radio with an FTDI breakout board, connected directly to my PC, but I can't do it with the Arduino.</p>

<p>As the radio is 3.3V and the Arduino is 5V, I tried to use the logic level converter from Sparkfun in the RX/TX lines, but that didn't work as well.</p>

<p>Any idea as to what I might be doing wrong? Thanks!</p>

<p><strong>EDIT</strong><br>
I was able to talk to the radio by uploading a blank sketch to my Arduino and using only the RX/TX pins and the FTDI chip on the board. When I configure the Serial port (i.e. Serial.begin), this no longer works, which leads me to believe the problem is in the ATmega USART configuration. For some weird reason, this only works when the Arduino RX is connected to the module RX, and TX with TX.</p>

<p>As requested, below is the simple serial echo code I'm using, and an image with the wiring. This assumes the normal RX->TX and vice-versa connection. The module is powered through wires underneath its breakout board (3.3v).</p>

<p><pre><code>
void setup(){
  Serial.begin(115200);
}</p>

<p>void loop(){
  while(Serial.available() > 0){
    Serial.print((char)Serial.read());
  }
}
</pre></code></p>

<p><a href="https://i.stack.imgur.com/RxZfy.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RxZfy.jpg" alt="enter image description here"></a></p>
 37307: <p>Not an answer to my question per-se, but I was able to solve my problem.<br>
As mentioned on my comment on the last answer, the SP1ML module's serial communication is handled through an ARM microcontroller. So I got my hands on an Arduino Due, which has an ARM Cortex M3 MCU, and uploaded a serial echo code similar to the one on my question, only now using Serial3 to talk to the module:</p>

<p><pre><code>
void setup(){
  Serial.begin(9600);    // Connected to PC
  Serial3.begin(115200); // Connected to SP1ML, Rx-Tx connection
}<br>
void loop(){
  if (Serial.available() > 0){
    Serial3.write(Serial.read()); // Echo to SP1ML
  }
  if (Serial3.available() > 0){
    Serial.write(Serial3.read()); // Echo to serial monitor 
  }
}
</pre></code></p>

<p>I tried the exact same code on an Arduino Mega (same pins, ATmega2560 MCU) and it didn't work.<br>
Obviously the MCUs are very different, but I have no idea one works and the other doesn't. A wild guess would be that the word sizes are different. In the Atmega, the word size is 16-bits, and in the ARM, the word size is 32-bits.</p>
