以IEEE802.15.4的CSMA/CA为例,其实IEEE802.11的也是一样的原理。那个什么复杂的流程图可以不用看了。
最核心的就是随机,其实用ALOHA协议的无线系统也可以借鉴这种模式。
所谓随机,就是无线系统每次有发射(数据包)任务时,先来一个随机延时,当然第一次随机延时很短。
延时这段时间内,CCA检测信道空闲。刚好在这个延时到达点时检测到空闲(可能不是一个时间点,而是一个backoff时间片段),就发射,如果不空闲,则重试。重试也是一个随机时间,只是这个随机范围会扩大(2倍扩大)。
CSMA的三个关键值,MinBE,MaxBE和NB,以IEEE802.15.4的为例,MinBE=3,MaxBE=5,NB =4。一个backoff的单位时间320us(也就是无线传输20个半字节的时间,IEEE802.15.4的基本传输单位是半字节)。
NB=4,也就是最多有4次检测CCA的机会。超过4次,就会算信道检测失败,这包数据帧就该扔掉。
MinBE=3,这个和第一次CCA的延时时间相。(2^3-1)=7,即在发射任务开始后第一次CCA,是在一个1~7的随机时间倍数乘以320us得到一个延时值。如果这个延时后检测CCA信道空闲,就可以获得发送通道发送信号出去。通过计算可以得到随机延迟时间为0.32ms~2.24ms这个范围。通过对一些设备的实测,发射前的CCA侦听时间也就在1ms左右。
然后第二次CCA,BE值加1,那么随机倍数就扩大到(2^4-1)=15,