0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >智能家居 > 基于stm32f103cbt6主控芯片的si4463模块的自组网终端设备解决方案

基于stm32f103cbt6主控芯片的si4463模块的自组网终端设备解决方案

2017-07-18
类别:智能家居
eye 1455
文章创建人 拍明


应用领域:智能家居

方案类型:成品

主控芯片:stm32f103cbt6

方案概述

此设备为自组网中的终端单元,主控芯片为stm32。主要包括si4463的RF射频模块,串口模块。设备上电后,自动加入到网关设备,可以实现RS232和485数据的无线传输。设备与设备之间的通信距离可达2公里(空旷地测试),传输速率最大可达2MBbps。

基于stm32f103cbt6主控芯片的si4463模块的自组网终端设备解决方案.jpg

STM32F103

STM32F系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。

该系列芯片按片内Flash的大小可分为三大类:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。

芯片集成定时器,CAN,ADC,SPI,I2C,USB,UART,等多种功能。

MCU简介

内核

--ARM 32位的Cortex-M3

--最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHZ(DhrystONe2.1)

--单周期乘法和硬件除法

存储器

--从16K到512K字节的闪存程序存储器(STM32F103XXXX中的第二个X表示FLASH容量,其中:“4”=16K,“6”=32K,“8”=64K,B=128K,C=256K,D=384K,E=512K)

--最大64K字节的SRAM

电源管理

--2.0-3.6V供电和I/O引脚

--上电/断电复位(POR/PDR)、可编程电压监测器(PVD)

--4-16MHZ晶振振荡器

--内嵌经出厂调教的8MHz的RC振荡器

--内嵌带校准的40KHz的RC振荡器

--产生CPU时钟的PLL

--带校准的32KHz的RC振荡器

低功耗

--睡眠、停机和待机模式

--Vbat为RTC和后备寄存器供电

模数转换器

--2个12位模数转换器,1us转换时间(多达16个输入通道)

--转换范围:0至3.6V

--双采样和保持功能

--温度传感器

DMA

--2个DMA控制器,共12个DMA通道:DMA1有7个通道,DMA2有5个通道

--支持的外设:定时器、ADC、SPI、USB、IIC和UART

--多达112个快速I/O端口(仅Z系列有超过100个引脚)

--26/37/51/80/112个I/O口,所有I/O口一块映像到16个外部中断;几乎所有的端口均可容忍5V信号

调试模式

--串行单线调试(SWD)和JTAG接口

--多达8个定时器

--3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入

--1个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器

--2个看门狗定时器(独立的和窗口型的)

--系统时间定时器:24位自减型计数器

--多达9个通信接口:

2个I2C接口(支持SMBus/PMBus)

3个USART接口(支持ISO7816接口,LIN,IrDA接口和调制解调控制)

2个SPI接口(18M位/秒)

CAN接口(2.0B主动)

USB 2.0全速接口

计算单元

CRC计算单元,96位的新批唯一代码

封装

ECOPACK封装

应用

STM32F103R8T6是ST旗下的一款常用的增强型系列微控制器,适用于:

电力电子系统方面的应用

电机驱动

应用控制

医疗

手持设备

PC游戏外设

GPS平台

编程控制器(PLC)

变频器

扫描仪

打印机

警报系统

视频对讲

暖气通风

空调系统

LED 条屏控制


Si4463芯片

一、芯片介绍

Silicon Labs 的 Si4463芯片是高性能的低电流收发器,其覆盖了 119MHz 至 1050 MHz 的 Sub-1GHz频段。还是 EZRadioPRO 系列的一部分,该系列包含覆盖各种应用的完整发射器、接收器和收发器产品线。所有器件都具有杰出的灵敏度 -126 dBm,同时实现了极低的活动和休眠电流消耗。

Si4463芯片.png

二、功能实现

1、Si4463引脚说明 

Si4463有20个引脚,主要引脚功能可以分为两大类:硬件引脚和软件引脚。硬件引脚主要由电源、射频部分组成,软件引脚主要分为SPI、芯片使能以及GPIO。硬件引脚在原理图、PCB设计部分需要注意,此处主要是介绍芯片的程序操作,硬件部分就此带过。下表列举了si4463的21个引脚(包括芯片正下方的Exposed pad引脚)的具体引脚号和功能简述:


Si4463引脚说明 .png

Si4463引脚说明 .png

2、功能实现 

1)SPI操作  芯片的12-15脚为SPI引脚,最大支持速率达到10MHz.芯片支持标准的SPI总线协议,操作方便。  整个芯片的所有SPI操作都可以分成两种方式:写命令和读数据。SPI操作最需要注意的一点是芯片状态,因为芯片不可能随时随地处在SPI就绪状态,所以每次操作SPI时必须读取芯片的当前状态(CTS),确保操作成功。

CTS读取流程.png

图 CTS读取流程

写命令的流程如下:

 写命令.png

图 写命令

Si4463至少有28条命令ID,每个命令都有不同的含义,有的可以直接操作芯片执行各项功能,有的可以读取芯片各种状态。上述的读取CTS也是其中一种命令。命令内容详情可参阅Siliconlabs官方文档“AN633.pdf” 读数据流程如下:

读数据 .png

图 读数据 

有部分命令是读取命令,写完命令后可读出该命令规定的相应字节数据,如上图,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()); //读取芯片状态,返回芯片信息 } 3)发送模式 发送函数比较简单,在初始化结束后只需填数据至TXFIFO,并使能发送,Si4463会自动完成发送功能,在发送完成后产生中断信号(nIRQ引脚)或置位中断状态寄存器,因此在程序实现中可以采用查询方式或中断方式实现发送,具体流程如下:

发送函数流程图.png

发送函数流程图

4)接收模式 接收模式与发送类似也有两种方式可以实现,从产品角度或MCU资源方面考虑,一般不选用查询方式, 5)休眠模式 Si4463低功耗有两种方式:休眠模式以及关断模式,两者的功耗分别为30nA和50nA。休眠模式以关断模式之间的主要区别在于寄存器状态,关断后所有寄存器数据丢失,重新上电需要再次初始化,而休眠模式能够保持,具体使用可根据实际需求自行选择。 至于程序操作,这两种方式都较为简单:关断只需将SDN引脚拉高;休眠需执行寄存器操作: void SI446X_CHANGE_STATE( uint8 state) //改变芯片状态 { uint8 cmd[2]; cmd[0] = CHANGE_STATE; //芯片状态 cmd[1] = state&0x0F; SI446X_CMD( cmd, 2 ); }

三、配置说明     

Si4463的参数配置主要采用WDS软件进行配置,设置好相应的内容后生成一个参数宏定义的头文件,在程序中只需将该头文件中的参数以相应的命令写入射频芯片即可完成配置。 

配置说明.png

1、频率和功率

频率和功率.png

图中标注的几处为必须配置的参数,具体参数芯片数据手册。

2、RF参数

RF参数.png

接收端的调制方式、速率、频偏以及带宽必须与发射端匹配,否则无法接收

3、数据包参数 数据包主要有引导码、同步字、数据域以及CRC构成,每项都可选可去,为保证数据可靠接收,同时减少不必要的数据接收,引导码和同步字就十分必要,这两部分中的内容可以自由配置,此处就不细述,具体可参见芯片数据手册以及WDS使用指南。数据域有几种模式,可单域也可多域,一般选用变长发送模式时采用双域,前一域帧长,后一域数据。CRC模式也可采用分域校验和整体校验,一般选用整体,最后两个直接为CRC结果校验由硬件完成,校验通过标志可通过配置设定在这两个直接中任意直接的高位或低位。

blob.png

4、中断配置 

芯片有一个中断引脚,可对应3个中断寄存器,共计22中不同中断状态。在正常发送、接收中一般只用以下3个中断:发送完成、接收、CRC异常,其余中断对应的具体说明可参见芯片用户指导。

中断配置.png

5、GPIO和快速寄存器配置 

Si4463有4个GPIO引脚外加一个NIRQ和SDO引脚可进行自由配置,具体功能参见用户指导,一般会选用两个引脚作为射频开关的控制引脚,如下图:

GPIO和快速寄存器配置.png

快速寄存器主要用于快速读出芯片的某些状态或寄存器值,相对于直接操作普通寄存器,速度要更快,更节省MCU资源,具体配置可根据实际使用进行配置,如RSSI、芯片工作状态等都是比较常用的。 


 四、问题总结

1、发送功率与功耗 Si4463的发送功率可调,功率越大功耗自然越大,尤其是超过15dBm后发射功率每增加一点,功耗会增加很多,下图是理论参数(横坐标是电流):

Si4463的发送功率.png

实际使用中发现模块功率很难达到20dBm,经过测试排查,发现发射功率受供电电压影响也较大,下图是最大发射功率与供电电压之间的关系:

最大发射功率与供电电压之间的关系.png

这也就是造成我们传感器电源波动测试中发射功率不足的主要原因。

2、发射死机问题 2.1现象 无线模块(加天线)在以20dBm发送时出现发送失败现象,程序死在等待发送完成处,接收端无法收到数据; 去除天线,以任何功率、速率都能成功发射; 降低发送功率,低于10dBm时也能正常发射; 模块选用的是32M晶振,程序配置成30M时能发射且不死(中心频率有一定偏移) 出现假死现象概率很高,最频繁时能达到每4~5个包就挂一次!

 2.2、测试

 1)不加天线20dBm发送时SPI波形

不加天线20dBm发送时SPI波形.png

2)加天线时20dBm发射SPI波形(异常)

加天线时20dBm发射SPI波形(异常).png

读取CTS时每次都回复 0x00。

加天线时20dBm发射SPI波形(异常).png

2.3 问题分析 加上天线后射频芯片处于大功率工作状态,发送数据时采用查询方式进行扫描发送完成,及易导致射频芯片操作异常,尤其是还存在中断操作,故芯片死机概率较高。 2.4 解决方案: 方案一:整个程序中在写操作Si4463时不允许被中断(禁止中断),并且增加异常监测,连续发射异常或超时后需重新初始化射频芯片。此方案能够解决这以问题,但是对整个产品来说牺牲是很大的,禁止中断完全有可能导致各种异常,故不是最佳方案。 方案二:采用中断方式监测发送完成、接收等状态,产生相应中断后再读取状态,尽量避免持续操作射频芯片,但同时也需要增加芯片异常监测。实测该方案完全避免了模块死机问题,属于较为理想的方案。




责任编辑:Davia

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: stm32f103

相关资讯