SAMR30和SAMR21是Microchip提供的内置了ARM Coretex-M0+ CPU的无线收发器,SAMR30支持Sub-1GHZ,SAMR21支持2.4GHZ,他们都可以被用于Microchip的MiWi无线收发协议。 MiWi是一种私有协议,可以看作是一种轻量级的Zigbee协议,他的特点有:自定义,自组网,自主可控。自定义的意思是数据收发是一种透传模式,用户自己定义数据收发内容来适应应用场景。自组网就是和Zigbee一样的概念,MiWi协议提供了和Zigbee一样的星形和Mesh组网,同时还支持应用较为简单的P2P网络。自主可控的意识是MiWi的代码和open source的,没有封装的库文件。 在MiWi的应用中,由于MiWi代码提供的API中没有提供关于设置传输速率(Data Rate)和发射功率(Transmission Power)的API函数,那么一个常见的问题是如何设置或者修改SAMR30和SAMR21的传输速率和发射功率? 下面主要以功率更低,距离更远,抗干扰性更好的SAMR30来说明如何配置。 配置传输速率 SAMR30支持BPSK和O-QPSK两种调制方式,支持的传输速率非常宽泛,从20kbps到1000kbps。下表列出了SAMR30的调制方式和其相应支持的速率。 SAMR30的MiWi 示例代码(从Microchip Studio的ASF得到示例代码)中,默认使用的是BPSK-40的调制方式和传输速率。 修改时,找到phy.c这个文件,然后找到函数PHY_Init(),里面有一行代码是用来配置寄存器TRX_CTRL_2(0x0C)寄存器的,代码复制如下: phyWriteRegister(TRX_CTRL_2_REG,(1<<RX_SAFE_MODE)|(1<<ALT_SPECTRUM)| (0<<BPSK_OQPSK)|(1<<SUB_MODE)); phyWriteRegister(RF_CTRL_0_REG,PWR_BPSK_OFFSET); 修改这一行代码来修改TRX_CTR_2的内容,就可以配置成不同的调制方式和传输速率。 具体到在不同的传输速率下如何设置这个寄存器的每一个bit,可以参考这个表。 对于SAMR21修改的方法是一样的,只是SAMR21只支持O-QPSK调制下的4中传输速率250kbps, 500kbps, 1000kbps, 2000kbps。速率比SAMR30要快,因为他是工作在2.4GHZ的。 SAMR21的TRS_CTRL_2寄存器的低3bit代表OQPSK_DATA_RATE,列表如下: 配置发射功率 配置发射功率时,代码的修改位置一样,也是在phy.c文件的PHY_Init()函数,修改的寄存器是PHY_TX_PWR(0x05)寄存器。 关于SAMR30,PHY_TX_PWR寄存器值所对应的功率,参考下表: 从上表可以看出,SAMR30支持的发送功率从-25dBm到+11dBm。 关于SAMR21,PHY_TX_PWR寄存器值所对应的功率,参考下表: SAMR21没有内置PA boost的功能,支持的发射功率从-17dBm到+4dBm。
|