This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

maximum baudrate nrf52 slower than BLE 5.0

Hi, we're starting to plan an update to BLE 5.0 (specifically the double bandwidth feature) on a product using the nRF521832 connected to an STM32. We were just testing increasing our internal communication speed, and realised the nRF52 is limiting us to "Up to 1 Mbps baudrate"

That's slower than the net OTA bandwidth of ~1.4Mbps!

Any chance we could double that? My suggestions would be:

  1. using 8x oversampling rather than 16x?
  2. utilising a faster clock (PCLK32M) when available?

Thanks!

PS: we'll be outputting the nordics clock on a GPIO to drive the clock input on the STM32, so clock drift between the two devices should not be an issue for us ;-)

Parents
  • Hi

    I can't think of any easy and reliable way to achieve serial communication higher than 1MBaud if you only have 2 GPIO's available.

    With 3 GPIO's you could do uni-directional SPI up to 4MHz at least (bi-directional if you have 4 GPIO's).

    Do you really need to transfer data continuously at a rate higher than 1Mbps?
    Keep in mind that 1.4Mbps is the absolute maximum bandwidth, and in practical use the actual bandwidth is likely to be lower than this. By optimizing the application for a lower bandwidth you will have some bandwidth left over for retransmission, making the link more reliable and the data rate more consistent.

    Best regards
    Torbjørn Øvrebekk

  • Unless I misunderstand your suggestions they would both require us to make hardware changes to the chip, it's not something we can change in software. In other words I would disagree it's an easy thing to do ;)

    In my experience with other micro controllers, 8x oversampling is a very common setting for the uart peripheral, 16x being the default. That setting being a single bit in a register, on the STM32 it is the OVER8 bit in the USARTx_CR1 register. So if you have such a register, then it should be a simple solution, but yeah, if your peripheral hardware doesn't have that, then I agree: not quite so easy :-)

    Same with the second suggestion: often it's possible to configure what clock source the peripheral should use, or the other way round: what frequency the peripherals' clock should get. But since often several peripherals share a clock, I'd understand if this suggestion is more difficult...

    I get that to make sure the soft device runs 100% smooth it's best not to expose every bit of hardware capability to the user, but the 8x Oversampling bit, if it exists, in my opinion should not cause any harm!

    That said: Good point and thanks for the info on the iPhone's max speed: was that measured with the iPhone 8 or X (should both have BLE 5.0) and if yes, with what connection interval? 30ms, 15ms or including the "HID" trick to bring it down to 11.25ms?

    Thanks again

Reply
  • Unless I misunderstand your suggestions they would both require us to make hardware changes to the chip, it's not something we can change in software. In other words I would disagree it's an easy thing to do ;)

    In my experience with other micro controllers, 8x oversampling is a very common setting for the uart peripheral, 16x being the default. That setting being a single bit in a register, on the STM32 it is the OVER8 bit in the USARTx_CR1 register. So if you have such a register, then it should be a simple solution, but yeah, if your peripheral hardware doesn't have that, then I agree: not quite so easy :-)

    Same with the second suggestion: often it's possible to configure what clock source the peripheral should use, or the other way round: what frequency the peripherals' clock should get. But since often several peripherals share a clock, I'd understand if this suggestion is more difficult...

    I get that to make sure the soft device runs 100% smooth it's best not to expose every bit of hardware capability to the user, but the 8x Oversampling bit, if it exists, in my opinion should not cause any harm!

    That said: Good point and thanks for the info on the iPhone's max speed: was that measured with the iPhone 8 or X (should both have BLE 5.0) and if yes, with what connection interval? 30ms, 15ms or including the "HID" trick to bring it down to 11.25ms?

    Thanks again

Children
No Data
Related