- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Si4463芯片使用小结Si4463芯片使用小结.doc
Si4463芯片使用小结
一、芯片介绍 Silicon Labs 的 Si4463芯片是高性能的低电流收发器,其覆盖了 119MHz 至 1050 MHz 的 Sub-1GHz频段。还是 EZRadioPRO 系列的一部分,该系列包含覆盖各种应用的完整发射器、接收器和收发器产品线。所有器件都具有杰出的灵敏度 -126 dBm,同时实现了极低的活动和休眠电流消耗。
二、功能实现
1、引脚说明
Si4463有20个引脚,主要引脚功能可以分为两大类:硬件引脚和软件引脚。硬件引脚主要由电源、射频部分组成,软件引脚主要分为SPI、芯片使能以及GPIO。硬件引脚在原理图、PCB设计部分需要注意,此处主要是介绍芯片的程序操作,硬件部分就此带过。下表列举了si4463的21个引脚(包括芯片正下方的Exposed pad引脚)的具体引脚号和功能简述:
表1 Si4463引脚简述
Si446xPin NumberPin NamePin FunctionExposed pad, 18GNDGround6, 8VDDSupply input2,3Rxp,Rxnused for Rx4,7Tx,TXRampused for Tx16,17Xin,Xoutcrystal11NIRQInterrupt output, active low1SDNShutdown input, active high15NSELSPI select input12SCLKSPI clock input14SDISPI data input13SDOSPI data output9GPIO0GPIO10GPIO1GPIO19GPIO2GPIO20GPIO3GPIO
2、功能实现
1)SPI操作
芯片的12-15脚为SPI引脚,最大支持速率达到10MHz.芯片支持标准的SPI总线协议,操作方便。
整个芯片的所有SPI操作都可以分成两种方式:写命令和读数据。SPI操作最需要注意的一点是芯片状态,因为芯片不可能随时随地处在SPI就绪状态,所以每次操作SPI时必须读取芯片的当前状态(CTS),确保操作成功。
图 CTS读取流程
写命令的流程如下:
图 写命令
Si4463至少有28条命令ID,每个命令都有不同的含义,有的可以直接操作芯片执行各项功能,有的可以读取芯片各种状态。上述的读取CTS也是其中一种命令。命令内容详情可参阅Siliconlabs官方文档“AN633.pdf”
读数据流程如下:
图 读数据
有部分命令是读取命令,写完命令后可读出该命令规定的相应字节数据,如上图,SDI在写完0x44读取到CTS信号后,写入0x00(空操作命令)来读取回复字,切忌用有效命令操作(会导致数据异常)!
2)初始化
Si4463不支持上电自动复位功能,因此每次上电后都需认为给出初始化操作,具体可参见下述代码:
void SI446X_RESET( void ) //Si4463复位函数
{
SI_SDN_HIGH( ); //SDN引脚拉高,芯片关断
waitus(10); //延时10us
SI_SDN_LOW( ); //SDN引脚拉低,芯片使能
SI_nSEL_HIGH( ); //nSEL引脚拉高,禁止SPI片选,释放SPI
waitms(5); //延时5ms,芯片自动复位
}
在芯片重新复位后可以对芯片进行相应的配置。写配置信息有两种方式,其一查询器件手册,对每一个寄存器进行直接配置;其二,按顺序写入配置信息数组,该数组在头文件中进行定义,而头文件可由Siliconlabs公司的配置软件WDS生成。我们选择方法二,具体操作后面细述。
uint8 Si4463_init( void )
{
SI446X_RESET( ); //SI446X 模块复位
SI446X_CONFIG_INIT( ); //SI446X 模块初始化配置函数
SI446X_INT_STATUS( Si446x_CMD_Buf ); //清除中断状态
SI446X_EN_INT(SI446X_INT_STAUS); //使能中断
SI446X_START_RX( Rx_channel, 0, PACKET_LENGTH,0,0,3 ); //开接收
return (Si4463_diagnose()); //读取芯片状态,返回芯片信息
文档评论(0)