文档内容:RF4463芯片手册研读,重点寻找可设置调制方式、码元速率等变量的寄存器
时间节点:2014/10/28
一、 芯片重要知识概述
1、SI4463功能模块
SI4463芯片是一款高性能的低电流收发器,其频率范围是142~1050MHz,它的功能模块图如下所示:
上图中右侧可以看到SPI接口的配置引脚,用户通过SPI接口去控制芯片的内部寄存器实现对无线数据发送、接收和RF参数设置等功能。整体工作流程如下:
A:SI446x芯片是时分复用传输的,交替地传输和接受数据包;
B:接受数据时,使用单一混频器将FSK/GFSK或OOK/ASK等信号变为低的中频频率;
C:通过一个高性能的ADC和可编程的增益放大器,信号进一步的被变到数字域;
D:解调数据通过读取64byte的RX FIFO,将它经过可编程GPIO口或者SPI接口传送至系统MCU;
E:发送与接受不同时操作,所以共同使用本地一个高精度的振荡器(LO-Local Oscillator)
F:SI446x和MCU、晶振一起协同工作。
2、MCU读流程
MCU读取芯片时,要经过下面几个步骤:
A:先向SI446x发送ReadCommand;
B:再从SI446x读取CTS(Clear To Send);
C:当CTS为FFh时,读数据准备发送。
上述时序相关的操作,在后期的程序编写中都会很好的体现到。
二、 芯片内部参数配置
与单片机通信的应用编程接口(API)是内嵌在SI446x芯片中的。API被划分成了两个部分,即命令(Command)与属性(Property)。命令用于控制芯片和改变它的状态,属性一般为默认的配置,不是经常地更改。
由于SI4463芯片内部包含中多的Command和Property,下面只就一些重要的进行阐述,别的都大同小异。
1、相关命令详解
A:Power UP
程序运行的第一步就是使用API对无线收发芯片进行上电操作,这时候就需要使用命令——Power UP。通过上一章节的第二小节,可知上电操作在收到CTS之后完成。这个Command的定义如下:
从上述表格中可得,先通过API发送0x02,紧接着的6bytes内容如上。其中XTAL_OPTIONS的TCXO用于设置内部的XO是否被使用;XO_FREQ指的是内部TCXO的值或者外部晶振的值。一个实际的设置参数如下,后面的文档中也会详细的讲述这个参数的意义。
对比上述参数和表格可以知道,我们TCXO为0,即使用外部的晶振,且外部晶振值为0x01c9c380=30MHz。
B:READ_CMD_BUFF
用于读CTS和命令回复,由上一章节的时序图可知,发送一个指令后面都需要回复一个CTS,这个命令就需要跟在别的一些命令后面发送。
这个CMD的值为0x44。如下述一个程序段。
每进行一个操作后面都会跟上一个WaitforCTS,即发送Cmmand 0x44。
2、相关属性详解
A:MODEM_MOD_TYPE
该属性用于选择OOK、FSK、4FSK、GFSK等调制模式等,它的属性命令为0x2000
MOD_SOURCE[1:0]默认值为0表示数据源为FIFO,MOD_TYPE[2:0]默认为0x2表示调制方式为2FSK。
B:MODEM_DATA_RATE_2/1/0
一共包含三个属性,即序号为0x2003、0x2004、0x2005的三个属性。
三个属性构成了对调制数据速率的定义DR[23:0]=0x0f4240=1Mbps。
3、属性配置更改
在Commad配置中只要将相应的Command对应的编号发送至SPI接口即可实现相应的功能,那Property配置需要做哪些工作呢?下面以程序中实际的代码来阐述。
如程序中定义了这样一个Property,第一个byte为0x11。
在Command配置表中有如下:
所以我们需要设置Property的时候,首先需要发送Command 0x11。
第二个到第四个byte为0x20,0x0c,0x00。
在Property配置表中有如下:
上述3个byte中0x0c=12表示的是此次设计的Property个数,0x2000就为它设置Property的起点位置,即MODEM_MOD_TYPE。后面的byte就是写入这些Property的值了。
我们依据上述程序中设置的值和上一小节所讲述的内容来推断工程所采用的调制方式和调制数据速率。
数据段第一个byte为0x03,表示调制方式为2GFSK。
MODEM_DATA_RATE的Property从0x2003开始,所以数据段第四个byte开始表示数据速率,即DR[23:0]=0x0012c0=4.8kbps.
后续文档会进一步的根据Silicon Labs公司提供的WDS配置软件进一步根据工程参数生成相应的Command和Property值。