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

How to Advertising and Scan at the same time

I am now using 52832 to do a project, need to send a BLE broadcast package first, and then start scan, what examples can I refer to?

Attachment is my TX/RX process,and I need to implement the device B image description

  • The exact timing doesn't make much sense and you might get some troubles catching exactly 2ms delay but it should be possible after some fight with the code and testing. When it comes to dual roles you just need to implement both GAP Peripheral and Observer/Central. There are dual BLE role examples in the SDK, you might like BLE relay but in the end you will probably arrive to your own FW code just slightly inspired by these...

  • Thank you, my project is a similar beacon application, the difference is that after the device sends a beacon, it needs to receive a reply (to execute some commands).

  • I do understand it but why exactly 2ms? All BT stacks I've seen can multiplex Tx/Rx much faster so letting it on them and just run both roles in parallel should do the job.

  • Nice. So you are defining your own radio timing so you are not really interested about BLE. This almost looks like you want to write your won radio protocol. If you want to stay with BLE and you want to use Nordic stack (Soft Device) - which will save you like 6-12 months of life - then you need to accept natural timings in there. These mean that you can run dual roles and switches between Tx/Rx will be little more complex but in general much much much faster then 1ms. To be specific for Device B:

    • Use any BLE multirole example for inspiration, but in fact you will run one GAP Peripheral/Broadcaster and one GAP Central/Observer role. (1/x)...
  • ...(2/2)

    • If you set 100% scanning duty cycle for Observer or if you synchronize Adv. interval with Scnanning interval then you should see Soft Device to do Peripheral task (that's short Tx + if your advertisement is scannable then also short Rx, however gap between them is 150us as defined in BT SIG Core spec) and right after it (much faster then 1ms)observer's Rx window starts (which is no way how to really "see" it so you can only imagine it happens;) - length depends on duty cycle you set.

    I don't see any problem in implementing this (however I still don't understand where these arbitrary 1ms/2ms gaps are coming from and why;)

Related