最近使用了433MHZ的模块进行了一个通信项目,选用的是SX1208模块,对接了RTOS和Linux两个操做系统,使用心得以下:linux
1. 首先要拿来datasheet看一遍,通揽一下它的功能。能够获得一些信息,好比缓存
2.由于它这个datasheet东西不少,物理层的不少参数也能够调整。因此拿现成的代码拿来修改比较快,能够大大加快开发进度。在网上找到了相似的代码,把它看懂一遍而后重写。发现它里面有一个逻辑有问题,死循环读取TX中断脚的电平来判断数据有没有发送完,我在RTOS上面仍是能够正常跑的,可是linux下面就挂死了,由于中断里面不能卡过久的(while死循环), 会把linux内核搞疯掉的。因此仍是要进行中断和TX线程作分离的。对于RST脚是必定要用到的, 否则会不稳定。底层的缓存队列也要搞好。dom
下图是中断脚的映射关系,通常来讲,DIO0就能够搞定了。性能
3.当底层TRX代码弄好,性能测试完毕以后,就开始本身写一个MAC协议了。固然这个MAC协议参考下WiFi的帧格式,把WiFi协议精简作一下就行了。本身实现完这个MAC的时候作一下压力测试,TRX同时打,跑了几天还算稳定的,跑的时候要用不一样的datarate跑,收集下原始数据,这个阶段是比较重要的,由于协议设计的很差会把速率拖慢的。。要注意的MAC层是必定要作random backoff,否则根据实测结果是会陷入死区,数据永远发送不成功。实测四五个SX1208在环境里面跑数据彻底是没问题的。固然不要给它太大的数据吞吐量,原本就不是为了性能而准备的。额外提一下,AES加密和物理头过滤必定要作,否则别人收到你的数据就很差了。作一下也不难的,由于是硬件实现,因此没有负担。和WiFi配网相似,这里也要作一个私有的配网。加入按钮和LED以后也能够很简单地作起来,实测OK。测试
4.当MAC层实现好以后就能够作应用层了。这个就是各自发挥的步骤了,再也不赘述。对于linux下面须要作成驱动,对于buildroot来讲能够放在一个软件包里面搞成ko的形式,比较方便,这样就不要去编译内核了。对于应用来讲,这个模块占用了RST,中断和SPI 四个脚以后脚可能不够用,拿一个芯片作一下GPIO扩展,老板说买74HC595,那就买个直插的74HC595(便宜),本身焊个电路,修改下外设代码,一天内也很快能够搞定了。加了这个芯片还能够多出几个脚,等之后产品形态变了再使用也不迟。ui
5.硬件上来讲,拿到的模块没有屏蔽壳,验证,焊接,吹电路容易搞坏仍是要当心一点,这个东西须要天线匹配。让硬件PCB弄好,最后拿矢网搞定一下。加密
6.展望:这东西有好几个信道能够用,后面考虑在Master端作下跳频,也就是auto channel selection功能。spa