晓枫VS枯叶 发表于 2015-10-31 11:16:05

【NUCLEO-L476RG开发】SI4463无线传输

       最近换取了一块STM32L476的Nucleo板,之前看了相关资料,在保证高性能的情况下还能实现功耗的均衡,应该可以应用于现在大力推广的物联网平台。也借着这个机会尝尝鲜,在无线数据传输上试用下,将其应用于之前购买了几个Sub-GHz的无线模块,SI4463就是其中之一,现在流行的无线都属于2.4G频段的如WIFI、BLE、zigbee,而这个SI4463是1GHz频率内的无线模块,休眠电流只有不到1uA,其相关电气特性如下:


SI4463还支持调频、支持无线唤醒、带FIFO、带CRC校验、支持最大20dB输出功率以及最高1Mbps的传输速率等优异特性,更多参数请参照数据手册,本次使用的模块其接口如下:


主要连接的几个IO是VCC、GND、SDN、nSEL、MOSI、MISO、SCK、IRQ(未使用中断模式),由于STM32L476没有标准库,只能使用最新的HAL库,使用cubemx配置,主要使用的是厂家提供的例程移植过来的,使用硬件SPI驱动,实际测试L476的SPI本可以最高40M速率,但是无法驱动SI4463,只能以4分频20M的速度驱动,cubemx的相关配置在下面PDF里,现在cubemx可以直接生产PDF和txt文档,可读性很高,但是最近升级4.11之后导致二次生成的IAR工程会把之前用户添加进去的文件给删除掉,记得这个之前也出现过,不知道ST的工程师又把这个BUG重现出来了,希望尽快提供升级修复这个BUG。

配置SI4463时会需要一个软件WDS生成配置代码,其使用教程可以看官方给出的文档,还有其寄存器说明也要看官方给出的API手册,总的来说文档还是比较详细的。SI446X_SPI_INIT();
SI446X_RESET( ); //SI446X 模块复位
SI446X_CONFIG_INIT( ); //寄存器初始化,寄存器来自WDS配置的头文件
SI446X_SET_POWER( 0x7F ); //将输出功率配置为最大
SI446X_START_RX( 0, 0, PACKET_LENGTH,8,8,8 ); //进入接收模式,参数定义详见API手册
SI446X_PART_INFO(pro_state);通过最后一个函数可以读出SI446x的相关版本信息,如图所示pro_state数组的第三位和第四位组合出的0X4463正好是芯片型号

SI446x_RX_Test();这个主要测试接收,发射是使用的另外一块板子,接收到的数据会通过串口发送给上位机,同时也会统计接收次数。

数据是随机发送的,所以比较乱,但是每次都只发了10个,数量还是对的。





peter001 发表于 2015-10-31 11:18:13

沙发,关注一下

Paderboy 发表于 2015-10-31 12:54:06

多谢分享。。。

limale 发表于 2015-10-31 14:43:32

我的板子到了也好好玩玩。

小小笼包 发表于 2015-10-31 16:07:25

:):):):):)顶顶顶

你好我好大家好! 发表于 2015-10-31 21:34:13

:):):):):):):):):)

aabird 发表于 2015-11-1 07:37:26

这个无线没用过,关注,支持,支持分享

#define 发表于 2015-11-1 12:09:10

:):):):):)

dsjsjf 发表于 2015-11-1 22:43:51

关注一下

me浩 发表于 2015-11-4 08:50:28

顶顶顶顶
页: [1] 2
查看完整版本: 【NUCLEO-L476RG开发】SI4463无线传输