最近在开发si4463射频解调模块,网上基于单次收发的实列很多,但是基于收发一体且实现跳频的资料少之又少,因此对于自己的开发经验做了点综合,以便于往后开发相同项目,也望给大家提供帮助,下面进入正题:至于模块功能等不多做说明,可自行前往官网下载[https://www.silabs.com/documents/public/data-sheets/Si4463-61-60-C.pdf]
这里是我自己整理的文件,包括芯片手册、API手册,以及不完整代码个每个API以及属性的大致解释,反正就是花了较长时间整理的结果文档及其源码
这款芯片,官方提供了专用命令实现对芯片寄存器的读写,同时也提供了配置的相关寄存器的值,软件下载官网https://cn.silabs.com/wireless/proprietary/ezradiopro-sub-ghz-ics/device.si4463
对于控制时序采用简单SPI时序,相对于IIC简单太多了,这里不多做介绍,其实只要弄懂了芯片API手册每个命令ID的含义以及其需要读写的字节流就可以轻松应对了,而在所有命令ID里面,最难的我觉得莫过于设置属性的命令了,也就是 ***
- SET_PROPERTY***命令了,其命令字节流如下:
我个人找了很久都没找到这里的GROUP,NUM_PROTS,START_PROTS到底是啥鬼,请教了公司的博士大佬,但是由于大哥不会下代码,也没找到这个含义到底是啥,因为在数据手册还是API手册都没有提供这几个参数申明,但是在研究了 - Common Properties的序号时发现了一个小规律:
不知道你发现没
没发现再仔细看NUMBER和NAME栏有何关联
这还看不出开,那也不怪你,确实太隐晦了,芯片方生怕你会用,Number的高四位和Name有何关联,不就是都一样嘛! GLOBAL开头的,序号高位为0x00,INT也就是中断组都是0x01,这可不是巧合,经过深思熟虑总结出了Number的高位就是GROUP也就是这个属性所在的组,而低四位就是该属性在这个组中的位置,到此SET_PROPERTY命令ID不就迎刃而解了嘛,而其他字节NUM_PROPS就是你要在这个组中设置多少个属性的值,START_PROP为从哪个属性开始设置,而DATA就是你要写入的值了,我个人觉的最难的就是这个命令ID,其他的命令要啥给啥。
还有一个最需要注意的就是你每次操作一个命令之前都必须读取CTS确保你上个命令已经生效,但是这里我还有一个疑问就是到底这个CTS是读取当前命令的CTS还是上个命令的CTS,原因就是每个命令的返回字节流中都包含了CTS位,我的疑问就是这个CTS到底能不能代表当前命令已经生效
对于跳频接收通过官方配置软件生成一个.h文件,只需要在你的代码中添加即可,注意的是官方生成的文件的预定义里面都已经包含了设置属性命令的所需要的所有字节流,然后再接收的时候传入你的接收频率即可,由于最近转了另一个项目,暂时滞后了,后续会推出完整项目。当然由已经实现的大佬也可以写写经验供我们这些小菜鸡参考