使用状态流建模蓝牙低能耗链路层
这个例子展示了如何使用一个独立的Stateflow®图表来建模蓝牙®低能量(BLE)链路层中的状态机。
蓝牙技术是一种无线接口,旨在取代连接便携式和固定电子设备的电缆。蓝牙特殊兴趣小组行业联盟为这项技术定义了两组标准:蓝牙低能耗(BLE)和蓝牙基本速率/增强数据速率(BR/EDR)。BLE器件的特点是低功耗和低成本。这些设备的工作无线电频率范围为2.4000 GHz到2.4835 GHz。工作频带分为40个信道,每个信道的带宽为2 MHz。用户数据包的传输通道为0 ~ 36。广告数据包在通道37、38、39传输。
BLE协议栈的功能分为三个主要层:
控制器层包括低能物理层(PHY)、链路层(LL)和控制器侧主控制器接口(HCI)。由这个例子建模的状态机是BLE协议栈的这一部分的链路层的一部分。
主机层包括主机端HCI、逻辑链路控制和适应协议(L2CAP)、属性协议(ATT)、通用属性配置文件(GATT)、安全管理器协议(SMP)和通用访问配置文件(GAP)。这一层还包含BLE网格堆栈,它由广告承载、网络、下层传输、上层传输、访问、基础模型和模型层组成。
应用程序配置文件和服务层(APP)是定义使用配置文件并实现蓝牙应用程序之间互操作性的用户界面。
有关更多信息,请参见蓝牙技术概述(蓝牙工具箱),蓝牙协议栈(蓝牙工具箱),蓝牙Mesh组网(蓝牙工具箱)。
确定BLE设备的工作模式
在BLE协议栈中,链路层管理无线电的状态,以定义设备的角色为发布者或扫描器。该层直接与PHY层连接,PHY层使用三个发布通道(37、38和39)来传输和接收数据包。
在本例中,是独立的状态流图sf_bluetooth.sfx
定义链路层的工作模式。图表有三种状态:备用
,广告
,扫描
。最初,备用
State为active,表示设备处于空闲状态。在下一个时间步骤中,图表将过渡到广告
或扫描
状态,这取决于本地数据的值TxData
。此值表示主机层中是否有来自广告承载方的数据可用于传输。
如果有可用数据,则图表转换为广告
状态。当此状态为激活状态时,设备在三个发布通道中循环,并在每个通道中传输相同的数据包。图表仍在广告
状态为广告间隔,然后返回备用
状态。广告间隔被分为三个检查点时间戳,分别对应于三个广告通道。在本例中,广告间隔至少由20毫秒组成,检查点时间戳分别为1毫秒(通道37)、9毫秒(通道38)和17毫秒(通道39)。
如果没有可用数据,则图表将转换到扫描
状态。当此状态为活动状态时,PHY层被动地扫描其中一个广告通道以获取新数据。如果PHY层收到一个数据包,链路层将它传递给广告承载层。图表仍在扫描
状态,然后返回到备用
状态。此时,如果仍然没有可用的数据,图表将选择一个新的广告渠道并开始另一个扫描间隔。在本例中,扫描间隔为50毫秒。
模拟BLE链路层
这个脚本sf_bluetooth_demo.m
创建一个BLE链路层对象bleLinkLayer
并模拟广告载体上10秒的网状通信。链接层对象依赖于独立的图表sf_bluetooth.sfx
用于控制逻辑和链路层队列对象bleQueue
用于存储来自广告承载者的数据。
该模拟由10,000个时间步组成。每个时间步表示链路层对象的执行(对应于1毫秒的模拟时间),通常由以下步骤组成:
如果链路层队列不为空,则读取数据包。队列中的数据表示链路层从广告承载层获得的广告数据包。
设置图表数据的值
TxData
并执行独立图表。在这一步中,图表确定设备是充当广告商还是扫描仪。如果图表在
广告。传输
状态,使用从链路层队列中读取的数据生成BLE链路层发布通道协议数据单元(PDU)。PDU代表PHY层的传输。有关生成和配置广告通道PDU的详细信息,请参见bleLLAdvertisingChannelPDU
(蓝牙工具箱)和bleLLAdvertisingChannelPDUConfig
(蓝牙工具箱)。
有两种例外情况:
每隔1000个时间步,脚本在执行链路层对象之前将数据推入链路层队列。该数据表示链路层从广告承载层获得的广告数据包。
每隔2500个时间步,脚本生成一个BLE链路层广告通道PDU,它表示PHY层接收到的广告数据包。然后脚本执行链接层对象。如果图表在
扫描
状态,链路层对象尝试解码PDU,如果解码成功,将PDU传递给广告承载层。有关PDU解码的更多信息,请参见bleLLAdvertisingChannelPDUDecode
(蓝牙工具箱)。
模拟完成后,脚本输出一个摘要,其中列出链路层传输和接收的数据包和字节数。
链路层发送的pdu数:27链路层发送的pdu数:702链路层接收的pdu数:4链路层接收的pdu数:112
在模拟过程中,图表动画提供了算法运行时行为的可视化指示。注意,图表动画会降低性能。为了减少示例的运行时间,请在运行脚本之前关闭图表。
另请参阅
bleLLAdvertisingChannelPDU
(蓝牙工具箱)|bleLLAdvertisingChannelPDUDecode
(蓝牙工具箱)|bleLLAdvertisingChannelPDUConfig
(蓝牙工具箱)
相关的话题
- 创建作为MATLAB对象执行的状态流程图
- 通过脚本和模型执行状态图对象
- 蓝牙技术概述(蓝牙工具箱)
- 蓝牙协议栈(蓝牙工具箱)
- 蓝牙Mesh组网(蓝牙工具箱)
- 蓝牙报文结构(蓝牙工具箱)