原创
转载请注明出处,侵权必究
1、RS9113简介
RS9113-N00-D1C是Redpine Signals推出的一款支持2.4/5GHz的WIFI模组。
2、SPI通信代码移植
2.1 移植源代码到工程
第1步,加入binary到工程
RS9113.NBZ.WC.GEN.OSI.1.6.6\host(包含at、binary和sapis三个文件夹)中除了binary文件夹都删除,复制到MCU工程文件夹下。
这个RS9113.NBZ.WC.GEN.OSI.1.6.6是Redpine官方提供的源代码。1.6.6表示的是版本号。
第2步,工程文件夹添加
在Manage Projects Items -> Project Items -> Groups中添加以下三个文件夹。
第3步,添加文件
WLAN_CORE中添加 \RS9113.NBZ.WC.GEN.OSI.1.6.8\host\binary\apis\wlan\core\src中所有c文件
WLAN_HAL中添加 \RS9113.NBZ.WC.GEN.OSI.1.6.8\host\binary\apis\intf\spi\src中的文件(用于SPI相关)和 \FreeRTOS_F4_Demo\host\binary\apis\hal\src中所有文件。
WLAN_APP 中添加 \RS9113.NBZ.WC.GEN.OSI.1.6.8\host\binary\apis\wlan\ref_apps\src中除了rsi_wifi_state_mc.c的所有文件。
第4步,添加路径。
在Keil工程中添加路径。
..\host\binary\apis\hal\include;
..\host\binary\apis\intf\spi\include;
..\host\binary\apis\wlan\core\include;
..\host\binary\apis\wlan\ref_apps\include
第5步,添加宏定义
rsi_global.h中添加
#define WLAN_ENABLE 1
rsi_api.h中添加SPI接口宏(默认就有,如果没有就添加一下)
#define RSI_INTERFACE RSI_SPI
第6步,编译和修改warning和error
主要包括:
- 函数声明的时候,函数参数括号内没有加void
第二行是正确的。
void rsi_interrupt_handler();
void rsi_interrupt_handler(void);
- 中断处理函数
屏蔽掉函数内的处理。
void rsi_interrupt_handler(void)
{
//中断不在这里处理
// rsi_app_cb.pkt_pending = RSI_TRUE;
// rsi_irq_disable();
}
- 类型不匹配
char改成uint8
和rsi_uSocket 类型不匹配的就强制转化为rsi_uSocket
- 声明函数
uint8* rsi_itoa(uint32 val, uint8 *str)函数没有声明,找到后,在相应的h文件中声明。
2.2 修改底层硬件
第1步,移植SPI配置
第2步,修改rsi_spi_recv和rsi_spi_send
第3步,移植复位IO
第4步,移植中断
rsi_app_cb.pkt_pending = 1;//RSI_TRUE;
2.3 封装自己的函数
1、开始测试
WIFI_BOOT()
char WIFI_BOOT(void)
{
/*清除Buff数据*/
rsi_app_cb.pkt_pending=0;
memset(&rsi_app_cb, 0, sizeof(rsi_app_cb));
/*检查SPi是否和模块正常通讯*/
/*检查SPI IO 硬件是否正常*/
RspCode = rsi_sys_init();
if(RspCode != 0)
{
return 1;
}
/*加载BOOT*/
do{ //GPIO_Bypass
RspCode = rsi_waitfor_boardready();
if((RspCode < 0) && (RspCode != -3))
return 1;
}while(RspCode == -3);
/*选择固件*/
RspCode = rsi_select_option(RSI_HOST_BOOTUP_OPTION);
if(RspCode < 0)
return 1;
/*等待card read Rsp=0x89*/
RspCode=Read_PKT();
if(RspCode!=0x89||rsi_app_cb.error_code!=0)
{
//TODO
return 1;//Hard_reset();
}
return 0;
}
2、连接硬件
3、rsi_sys_init能正常执行
说明移植成功。
欢迎关注我的微信公众号
互联网矿工