2024-06-20 09:23 PM
I am trying to get BLE_LDD_DataRate demo to work, it just sits there with nothing different from pressing SW1 on 1 board and SW2 on second. Don't have a 3rd board at the moment.
The description seems to indicate LED's will toggle, but nothing.
I know that "nothing" is not much information to work with, but any ideas out there? Has anyone ran this demo?
2024-06-25 05:17 PM
Works with newer firmware download.
Now, is there a manual that describes details of BLE LLD?
(UM2804 does not have enough information)
2024-06-26 12:08 AM
UM2804 is the only official documentation for BLE LLD.
What additional information are you looking for?
2024-07-02 01:23 PM
I want to create a synchronous link between a few systems. The “master” defines the timing by sending a packet and then waiting for an ack that will contain data. I want the “slave” to be able to calculate the time from receiving the packet until the next expected packet. It can then wait in low power rather than be actively receiving all the time.
I need to make a list of action packets on the master with fixed frame lengths. Transmit is fixed enough, but I am not sure about receive. Will the receive callback occur just after the packet is actually received, or will it generate a packet or timeout event at the end of the receive window?
On the slave side, I need to match the timing with respect to total duration of a cycle as well as the phase when receive is possible.
There is a bit in the action packet for TIMESTAMP_POSITION which sounds promising. Apparently it can measure from either the start of the received packet or the end of it. This is where the trail runs cold. What does it measure with respect to, and how do I get both ends of that value? I thought maybe it is just on the RTC, but that does not seem to be the case.
The NS_EN bit also seems interesting, but aside from automatically sending a response not much is said. I have not been able to receive this automatic response. So, what would the timing be for the automatic response? Can it contain data?
2024-07-11 12:08 AM
The timestamp value is sent to M4 core through the action packet callback but on M4 side the value is not managed/used. On M0 side, the timestamps correspond to the value of the timer inside the BLE core, this value is in machine time unit. There would need to be modifications to the stack to be able to use this and it would not add much information - it is basically the 'current time' in M0 units.
NS_EN is ignored by the M0 core.
The closest you can get to the functionality you described is to transmit the used WakeupTime from the master (in an individual message or as part of another packet) and use this to calculate the sleep time for the slave with some margin. If you are not using WakeupTime, then the packets should be sent quickly enough that entering sleep is not worth it.
You can start e.g. from the BLE_LLD_Lowpower example and add the wakeup times to the userPayload and make a similar application for the receiver side where you will use the timer server to go to sleep as shown here.