This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Question about high speed ADC usage

Hi,

I need to send an audio signal through BLE connection of nRF51822 module, this signal need to quantized and sampled at rate of minimum 8000 sample/second by ADC, i configured the minimum connection interval to 9 ms but the sampling still very low and far from required, i try to decrease the interval below 9 ms but the connection failed. is there any way to increase the sampling rate?

Thanks for your help in this issue

Regards

Parents
  • #define 	BLE_GAP_CP_MIN_CONN_INTVL_MIN   0x0006
    

    That's in 1.25ms intervals so 7.5ms is the absolute minimum. That's per BTLE spec.

    I don't understand why you refer to increasing 'the sampling rate', doesn't seem like the ADC sampling rate is your problem, it's the BTLE transfer throughput. How are you sending the data, in what sized packets? There's a theoretical maximum of 6 packets per connection interval (I don't recall where that comes from) but it's stated in other questions that many implementations are limited to 4. if you're sending 20 bytes per packet, at 9ms connection interval that's around 8kB/second, if you're only sending one byte per packet, it's about 450 b/second.

    And what's on the other end of this link? Just because you request a minimum connection interval of 7.5ms, doesn't mean the master on the other side lets you have it.

  • 10 bits is 2 bytes, not 4. Don't tell me you're converting to ASCII and sending strings are you? You have a max 20 byte payload per packet, if we assume the 4 packets per connection is correct and 9ms is the min connection interval then you have 444 packets a seconds, if you send one sample per packet then yes you get 444 sample/second.

    But you can do much better. If you send the 10 bit readings as 2-bytes, but you send 10 of them in each packet (2 x 10 = 20 bytes) you can get 4,440 samples per second. But you can do better. 20 bytes is 160 bits, if you pack all the information in 10 bits at a time you can send 16 samples per packet, now you're on 7,104 samples per second. If you can get the connection interval down to the minimum of 7.5ms, that's 8533 samples a second.

    That relies on an awful lot of variables being EXACTLY right however.

Reply
  • 10 bits is 2 bytes, not 4. Don't tell me you're converting to ASCII and sending strings are you? You have a max 20 byte payload per packet, if we assume the 4 packets per connection is correct and 9ms is the min connection interval then you have 444 packets a seconds, if you send one sample per packet then yes you get 444 sample/second.

    But you can do much better. If you send the 10 bit readings as 2-bytes, but you send 10 of them in each packet (2 x 10 = 20 bytes) you can get 4,440 samples per second. But you can do better. 20 bytes is 160 bits, if you pack all the information in 10 bits at a time you can send 16 samples per packet, now you're on 7,104 samples per second. If you can get the connection interval down to the minimum of 7.5ms, that's 8533 samples a second.

    That relies on an awful lot of variables being EXACTLY right however.

Children
No Data
Related