之前做过CC3100 现在就做RS9113,
易用性:CC3100完胜。
两个WIFI模块都可以通过SPI接口来控制,但是我用的时候,发现其实有很大的区别,
CC3100 官方提供的是simple link 光听名字就比较简单,而RS9113官方提供的是WiSeConnec软件框架,
最直观的体现在: RS9113提供了一个rsi_app_cb_t;结构体,这个结构体包括了几乎所有RS9113用到的配置、数据、过程变量等。而CC3100就没有这个一个结构体,所有的操作都是分散操作的。
比如UDP通信来说,
RS9113的rsi_app_cb_t结构体rsi_app_cb.rsi_strApi.uSocketFrame.socketFrameSnd.moduleSocket 规定了UDP的信息,包括协议版本、端口号等,而CC3100就比较传统,它提供了类似标准socket编程,sl_open sl_socket sl_blind, sl_send等函数,让人看了有一个种似曾相似的感觉。
而RS9113就比较陌生了,UDP是在片子初始化的时候就根据rsi_app_cb_t全局结构体就建立好了,后面直接用就是了,也提供了几个函数,rsi_send_data,rsi_send_ludp_data(),居然一个socket发送分成了2个函数实现,一个TCP,一个UDP,从这个角度来看,RS9113太落后了,
总结一个:
看似RS9113比较高大上,使用了一个全局变量结构量,完全是参考高端编程的方法,但是这个是一个单片机的简单应用,有点杀鸡用牛刀了,费了这么大劲,关键是用户体验并不好,用想用好RS9113,用户要适应RS9113的多种特殊函数,而CC3100就比较人性化,类socket标准编程的方法用法完全感觉不到违和感,一切都这么的自然。
我猜测:
RS9113是有USB接口的型号的,用的是nlink软件架构,我猜测rs9113为了节约成本,减少工作量,WiSeConnec、n_link两个软件架构,这两种完全不同的应用场合,一个MCU 一个APU, 估计是复用的太多了,所以才感觉用着这么突兀,而CC3100生来就是为了专用低功耗物联网, 经过了TI的精心优化,所以用着才上手快。
REDPINE公司介绍
总部位于加州圣何塞的Redpine Signals公司是一家无线半导体和系统解决方案公司,专注于为下一代无线应用提供创新,超低功耗和高性能产品。
Redpine成立于2001年,是业内第一家在2007年底推出超低功耗单流802.11n芯片组的公司。同样,2009年,Redpine率先在当时新兴的M2M市场中采用自带802.11abgn模块。2013年,Redpine推出了世界上第一个物联网(IoT)市场的多协议无线芯片组,其中包括双频段Wi-Fi,双模式BT 4.1,802.11p和802.15.4 / ZigBee。Redpine创造了多种产品基于该芯片组,包括n-Link(托管),Connect-io-n(嵌入式),WiSeConnect(高级嵌入式),WiSeMCU(带集成MCU的嵌入式模块)和WaveCombo(V2X连接)模块。Redpine提供的技术和产品涵盖Connected World / IoT(工业,医疗,汽车,可穿戴设备,连接家庭,智能能源,楼宇自动化和实时定位),移动和网络市场中的多个细分市场。
Redpine技术涵盖了完整的端到端无线解决方案(802.11 abgn,双模蓝牙4.1,802.15.4 / ZigBee /线程,802.11p,MCU,集成安全),并在OFDM,MIMO,嵌入式处理器架构和低功耗技术。该公司的产品包括经过认证的(符合法规和协议的)不同子系统的硬件和软件,以便为系统集成商提供灵活性并易于集成。这种一站式方案使Redpine能够以最优的价格提供最佳的无线解决方案,以满足客户的需求。
时间一长CC3100的程序都忘了,现在分析一下:
首先把use.h里面的函数填充一下, 顾名思义, use.h一定是用户来定义的, 里面是一些最低层的spi收发,uart收发函数,中断处理等 要求用户来实现,因为这部分TI是不会给你实现的,因为TI公司不知道你用的什么MCU,这部分与MCU底层紧密相连。
cc3100_init()初始化,这个是simplelink提供的,直接调用就可以了,不要问为什么(有时候看程序不不求甚解更好), 里面会调用止面的spi_init()函数, 初始化没问题,会返回成功,如果有问题,则死循环。
剩下的就是BSD socket编程了。简单不?
rs9113 软件分析
也初始化, 不过初始化前首先把rsi_app_cb_t这个结构体先赋初值了。rsi_init_struct(&rsi_app_cb.rsi_strApi);
然后就在deal_wifi_link()中周期性循环调用处理WIFI收发的数据。