Can the NRF52840 support a baudrate of 921600 on RS485?

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

Parents
  • 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.

Reply
  • 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.

Children
No Data
Related