Hi,
I was wondering if its possible for NRF52840 chip can work on RS485 @ 921600 baudrate? If not, is there a work around we can implement?
Kind Regards,
Keegan
Hi,
I was wondering if its possible for NRF52840 chip can work on RS485 @ 921600 baudrate? If not, is there a work around we can implement?
Kind Regards,
Keegan
You might also keep in mind that for reliable communication at 921600 baud both crystal-derived high-frequency clock and the correct baud rate divisor will be required, particularly if talking to non-nRF52 devices. If the link only has nRF52840 devices then the divisor doesn't matter (if they all use the same divisor), but other 3rd-party RS485 devices will be affected particularly on longer packets.
// Transmit works up to 7.999MBaud, Receive works up to 1MBaud as it uses /16 sampling
// ----------Documentation-------------- ---Calculated--------
// Register Required Actual Ok? Register Actual
// =========== ======== ======= ====== ========== ========
{0x0F000000, 921600, 941176, " No", 0x0EBEE000, 921600},
{0x10000000, 1000000, 1000000, " -", 0x10000000, 1000000},
here's the error details:
// --------Calculated------------------- ---------------Documentation---------------
// Required Register Actual Error Register Required Actual Error Ok?
// ======== =========== ======== ======= =========== ======== ======== ======= ====
// 921600, 0x0EBEE000, 921600, +0.000% 0x0F000000, 921600, 941176, +2.124%, No,
// 1000000, 0x10000000, 1000000, +0.000% 0x10000000, 1000000, 1000000, +0.000%, -,
Perhaps try both and see if there is any affect.
You might also keep in mind that for reliable communication at 921600 baud both crystal-derived high-frequency clock and the correct baud rate divisor will be required, particularly if talking to non-nRF52 devices. If the link only has nRF52840 devices then the divisor doesn't matter (if they all use the same divisor), but other 3rd-party RS485 devices will be affected particularly on longer packets.
// Transmit works up to 7.999MBaud, Receive works up to 1MBaud as it uses /16 sampling
// ----------Documentation-------------- ---Calculated--------
// Register Required Actual Ok? Register Actual
// =========== ======== ======= ====== ========== ========
{0x0F000000, 921600, 941176, " No", 0x0EBEE000, 921600},
{0x10000000, 1000000, 1000000, " -", 0x10000000, 1000000},
here's the error details:
// --------Calculated------------------- ---------------Documentation---------------
// Required Register Actual Error Register Required Actual Error Ok?
// ======== =========== ======== ======= =========== ======== ======== ======= ====
// 921600, 0x0EBEE000, 921600, +0.000% 0x0F000000, 921600, 941176, +2.124%, No,
// 1000000, 0x10000000, 1000000, +0.000% 0x10000000, 1000000, 1000000, +0.000%, -,
Perhaps try both and see if there is any affect.