Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 5 months ago.
RN2483
This question is relevant to any project trying to bridge a platform's built in USB to UART controller with a second on board UART.
Quote:
In my case, I'm trying to type AT style commands on a computer connected by USB to a NXP FRDM microcontroller that exposes UART0 (hardwired to USB) as well as UART1 on pins PTC3(RX) and PTC4(TX) connected to a LoRa IC:
FRDM-KL25Z Platform document
RN2483 IC device datasheet
Missing text output from second connected UART
#include "mbed.h" Serial Conn(USBTX, USBRX); Serial Lora(PTC4, PTC3); int main() { Conn.baud(57600); // 57600 baud is specified in the Lora.baud(57600); // Microchip RN2483 datasheet Conn.printf("RN2483 Communication!\r\n"); // This works Lora.printf("sys get ver\r\n"); // This fails? No text returned. // Try passing characters while(1) { if(Conn.readable()) { Lora.putc(Conn.getc()); } if(Lora.readable()) { Conn.putc(Lora.getc()); } } }
Question
This seems logically correct, and providing the 'PTC[34]' parameters to a RN2483 mbed library correctly communicates with the IC's UART and prints characters in my serial console. So why isn't anything appearing in my serial console when I manually configure (and avoid the RN2483 lib) two serial connections?
Answer
This problem was solved by properly capturing line ending characters and remapping to CR+LF which is what the IC device expects to terminate all command sequences. I may post more information (like a program) later.
1 Answer
6 years, 8 months ago.
Serial.printf works a bit weird. This is how I did it.
#include "mbed.h" Serial lora(D8,D2); Serial pc(USBTX,USBRX); int main() { lora.baud(57600); pc.baud(57600); pc.printf("HelloWorld!\n"); char str[64] = "sys get ver\r\n\0"; int i=0; while(str[i]!='\0') { lora.putc(str[i]); i++; } while(1) { if(lora.readable()) { pc.putc(lora.getc()); } } }