This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2340R5: using PBE_BLE5_REGDEF_API_RXRAW to receive a standard BLE advertising packet

Part Number: CC2340R5

Tool/software:

revisiting an earlier unresolved issue....

i'm implementing a more optimized (albeit specialized) variant of the RCL driver....  i'm generally familiar with its internal design, having single-stepped through its code when running some stock examples....

as you might imagine, my code is ultimately "bare-metal" -- talking directly to registers defined in your .h files....

starting with the proprietary 250K PHY and the "generic" patches, i'm able to transmit/receive packets of my own format....  beside using my own RX program, i can receive these packets using SmartRF Studio....

as a next step, i've moved to the 1M PHY....  again, i'm able to transmit/receive packets....

at this point, i'm still using the "generic" PBE | MCE | RFE patches -- though at different frequencies....  internally, i'm using the PBE_GENERIC_REGDEF_API_{TX,RX} commands to initiate transmit/receive operations....

so far, so good!!!!

from here, i used the same 1M PHY but with the "BLE5" PBE | MCE | RFE patches....  the goal is to transmit/receive packets which i'll form following the BLE standard...  internally, i'm now using the PBE_BLE5_REGDEF_API_{TX,RX}RAW commands to initiate transmit/receive operations....  since these are standard BLE packets, i've done all the extra setup -- whitening, CRC, access address, etc....

at this point, i can "advertise" standard BLE packets -- as verified by a packet sniffer, my phone, SmartRF Studio, etc !!!!

the next step, of course, is to receive standard BLE advertising packets -- which is where i'm currently stuck....

i'm aware of the PBE_BLE5_REGDEF_API_ADV command, which i've used initially; but i then discovered that i could transmit the same standard packet using PBE_BLE5_REGDEF_API_TXRAW directly....

and while i'm also aware of the PBE_BLE5_REGDEF_API_SCAN command, i'm looking for a more general solution through PBE_BLE5_REGDEF_API_RXRAW....

i realize this is **NOT** a typical use-case....  (send me a private message for more details)....  thoughts on how to proceed???

one step that might also help:  SmartRF Studio loads a small SRAM-based image onto my target CC23xx when performing a TX or RX test....  when using the BLE 1M PHY, i see lots and lots of BLE packets coming in over channel 37 -- not only from my test program, but from lots of other things in the house!!!!   if then switch my own "adversting" program to use (say) channel 17, i can likewise see my own packets using SmartRF Studio configured for this channel instead....

whatever code has been loaded into the SRAM of the receiving CC23xx is clearly doing the trick!!!!  would it be possible to obtain access to this code "as is"????

  • Hi Bob,

    Thank you for reaching out. I will look into this and get back to you as soon as possible. In the meantime, to confirm, you are doing a pure-bare metal BLE application and the current step you are trying to complete is scanning a regular BLE application correct? Could you also share the SDK you are working on?

    Best Regards,

    Jan

  • Hi Bob,

    I reached out to our R&D experts and they have commented that it should be completely fine to use PBE_BLE5_REGDEF_API_OP_RXRAW to receive BLE packets and this is what is used by the RCL BLE Generic RX command handler. I suggest taking a look at the RCL_Handler_BLE5_genericRx in source/ti/drivers/rcl/handlers/ble5.c as a good reference of how to implement the RX on your side as this should do what you are looking for.

    Best Regards,

    Jan

  • are there any sample programs in the SDK which actually **use** this API???  single-stepping through the code of a working program would help....

  • Hi Bob,

    There aren't any specific example that specifically showcase this, but the RCL_Handler_BLE5_genericRx  code should essentially do this same general functionality.

    Best Regards,

    Jan