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

Questions about micro-esb

Hi everyone, Just a brief introduction about my system, I am currently working on Brain computer Interface which was funded by NSF. In our system we have Sense electronics which will provide 10k samples/sec on each of 8 channels. I Integrated micro-esc to our system firmware. I have some questions regarding micro-esc,

  1. There is this parameter called payload_length in general RF parameters, I don't understand the significance of that variable. Can you explain what was the significance of Payload_length, it was pre-coded as 61 in the github code and in example code tx_payload_length is initialized as 8 for sending 5 bytes data. I don't understand in what relation we need to put tx_payload_length.

  2. What is the maximum buffer we can initialize so that packets won't drop? For example for my system i need 256 bytes tx buffer and i initialize tx mode as manual i.e., whenever TX FIFO is non empty and radio is idle packets will sent automatically. So with how much frequency we can fill up tx buffer for data integrity and higher data rate and what is maximum timing interval where tx transaction is done?

  3. we initialized useb_fifo_size as 8. So are there 8 tx fifos or one fifo of 8 bytes size?

  • Hi,

    Q1: µESB is based on the Enhanced Shockburst protocol that was first implemented on our nRF24L-series parts. You can find more information about this in the nRF24L01+ datasheet, or by checking out our blog: devzone.nordicsemi.com/.../

    µESB can also differ from the "Enhanced Shockburst" implementation, as the nRF51-series can send up to 254 bytes in one RF payload, while the nRF24L-series could do 32 byte max. If backwards compatibility is needed, then you should set the define "UESB_CORE_MAX_PAYLOAD_LENGTH" to 32 byte max.

    This variable only sets the maximum length, but it also allows you to send a value from 1 to "UESB_CORE_MAX_PAYLOAD_LENGTH" at any given RF-pipe, but only if you have initialized the library with protocol "UESB_PROTOCOL_ESB_DPL". This is the most common mode to use.

    You can also set the library to use static length, so that it always sends the same amount of bytes in your payload, but this is a restriction that normally used only when having backwards compatibility with older nRF products.

    Q2: The buffer size and packet drop does not have a correlation, other than you send more data through your link. It's the overall link integrity/signal strength that drives this. I would recommend testing how many packets that you get per second (use the RTC in 1 s interval for instance) and see if this is an accepted data throughput for your application.

    Q3: This configuration sets the amount of buffers x size_of_max_payload. This means that you can upload 8 TX packets.

    Cheers, Håkon

  • Thanks for reply Hakon, I am just wondering that is there any particular connection interval time for ESB_DPL 2MPS configurations? I understand UESB_CORE_MAX_PAYLOAD_LENGTH. Anyways thanks for your explination but in the code base there is another variable called payload_length in general RF paramenters github.com/.../micro_esb.h How we need to select the payload_length parameters.

  • Ah, sorry for misunderstanding. This is a bug. This should be set to "UESB_CORE_MAX_PAYLOAD_LENGTH" to ensure that the max. size set in fw equals the size set in the radio registers.

  • Fixed this on github. Thanks for pointing it out. Have a nice weekend:)

  • @hakon

    I was trying to understand how acknowledge mechanism works on micro esb. we are trying to work micro-esb as bi directional communication protocol.

    This code snippet is transmit function in micro-esb.c in github. image description.

    how to enable acknowledment? and can you explain on_radio_disabled_esb_dpl_tx_noack event and how auto tx mode works?

Related