Выделение буферов TX и RX
Объект bt. использует два буфера данных - буфер передачи (TX) и буфер приёма (RX). У каждого буфера есть размер (то есть объём памяти). Эта память выделяется по запросу вашей программы. При первой загрузке устройства память ни под один буфер не выделена.
Память под буферы выделяется страницами. Страница - это 256 байт памяти. Выделение памяти под буфер выполняется в два шага: сначала нужно запросить конкретный объём (число страниц) методами bt.txbuffrq и bt.rxbuffrq, а затем выполнить само выделение методом sys.buffalloc, который применяется ко всем буферам всех объектов.
Фрагмент кода с выделением буферов для объекта bt. - вы уже видели его в разделе Запуск и включение интерфейса BLE:
bt.txbuffrq(1)
bt.rxbuffrq(1)
sys.buffalloc
Запрошенный объём памяти можно получить не всегда. Память - ресурс не бесконечный, и если вы уже запросили (и получили) 95% памяти платформы, то следующий запрос получит не больше 5%, даже если вы просили 10%.
Менять размер буферов можно, только если интерфейс BLE не включён (bt.enabled = 0 - NO).
На каждый буфер приходятся небольшие накладные расходы: не вся выделенная под буфер память доступна для данных. Каждому буферу требуется 33 байта для «внутренних служебных нужд». Поэтому если вы запросили (и получили) буфер из 2 страниц (256 * 2 = 512 байт), хранить в нём можно только 512 - 33 = 479 байт.
Текущий размер буферов TX и RX можно узнать из свойств bt.txbuffsize и bt.rxbuffsize (только чтение).