Reference
Link and Throughput
The link is the bottleneck
The converters on this board are considerably faster than the path that carries their results to you. The 16-bit SAR converts at about 4.6 kSa/s and the internal ADC at up to 77 kSa/s, but the UART between the microcontroller and the HM-10 module runs at 115200 baud, and that is what you actually get:
| Sample format | Throughput |
|---|---|
| ASCII sample lines (default) | ~1.1 kSa/s |
| Compact binary | ~3.5 kSa/s |
Both figures are below the internal ADC’s conversion rate, and the slower one is below the SAR’s. No choice of acquisition path will make captures faster than this table allows. The sample format is the only control that moves the number.
Capture format tiers
The default format sends each sample as a human-readable ASCII line. It is robust, easy to debug from a terminal, and slow — a variable-length text line costs far more link time than the sample it carries.
The compact binary format replaces that with a fixed-length frame per sample and trades resolution for speed. On the SAR path it also shortens the conversion itself by asking fewer questions, so it is faster at both ends of the chain, not just on the wire.
| Tier | What you get |
|---|---|
| Full precision (default) | Full converter resolution, ASCII sample lines |
| Compact binary | Reduced resolution, fixed-length binary frames, roughly 4× the sample rate |
| AUTO | Picks the highest precision that can still finish the requested burst inside the timeout |
AUTO is the sensible default for exploratory work. Ask for a small burst and you keep full precision; ask for a large one and it steps down rather than letting the capture time out.
Note that the binary tier only applies to streaming captures. A single-sample request always replies in full-precision ASCII — there is nothing to gain from framing one value.
Integrity of a binary burst
BLE’s own link layer already checksums and retransmits at the air interface, so a corrupted byte is not the realistic risk. A dropped byte between the microcontroller and the BLE module is, and it would silently shift every subsequent frame boundary with no other symptom. A burst therefore ends with a trailer that lets the client verify the whole burst arrived intact — one extra byte per burst regardless of burst size, rather than a per-sample tax on exactly the tier that exists to be fast.
Reducing capture time
There are only two controls, in order of how much they help:
- Ask for fewer samples. Burst time is linear in sample count.
- Use the compact binary format, or AUTO. Roughly 3× over ASCII.
At ~3.5 kSa/s the link is in the same order of magnitude as the SAR’s own conversion rate. It is still the limiting factor, but it stops being the overwhelming one.
Updated · Full project report (PDF)