From 71fa26d2ce777c5520513e6b3baa6d8906d9d107 Mon Sep 17 00:00:00 2001 From: Dino Tinitigan Date: Mon, 23 Oct 2017 11:32:20 -0700 Subject: [PATCH] Set a baud rate limit for cdc-acm internally -set a baud rate limit for cdc-acm due to the limitation of Inter Processor Mailbox --- cores/arduino/CDCSerialClass.cpp | 7 ++++++- cores/arduino/CDCSerialClass.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cores/arduino/CDCSerialClass.cpp b/cores/arduino/CDCSerialClass.cpp index 0ba6418b..c059cea8 100644 --- a/cores/arduino/CDCSerialClass.cpp +++ b/cores/arduino/CDCSerialClass.cpp @@ -86,8 +86,13 @@ void CDCSerialClass::begin(const uint32_t dwBaudRate, const uint8_t config) } -void CDCSerialClass::init(const uint32_t dwBaudRate, const uint8_t modeReg) +void CDCSerialClass::init(uint32_t dwBaudRate, const uint8_t modeReg) { + /* Set a max internal baud rate due to the limitation of the + * Inter Processor Mailbox */ + if(dwBaudRate > 115200) + dwBaudRate = 115200; + /* Set a per-byte write delay approximately equal to the time it would * take to clock out a byte on a standard UART at this baud rate */ _writeDelayUsec = 8000000 / dwBaudRate; diff --git a/cores/arduino/CDCSerialClass.h b/cores/arduino/CDCSerialClass.h index fb859d40..74eb7b3b 100644 --- a/cores/arduino/CDCSerialClass.h +++ b/cores/arduino/CDCSerialClass.h @@ -63,7 +63,7 @@ class CDCSerialClass : public HardwareSerial }; protected: - void init(const uint32_t dwBaudRate, const uint8_t config); + void init(uint32_t dwBaudRate, const uint8_t config); uart_init_info *info; uint32_t _writeDelayUsec;