WG7310(WLAN+Bluetooth+FM)芯片在.Net MF中的应用

简介:

WG7310芯片是Ti推出的一款芯片,集成了WLAN、Bluetooth、FM等功能(最近又推出了四合一的芯片,把GPS功能也集成了进去),由于以前在.Net MF上的一些工作是基于Ti DM335开发板上的,所以开发.Net MF系统的WiFi功能就选用了WG7310芯片。

 

 

芯片的技术指标如下:

功能规格:WLAN + Bluetooth+FM Combo 无线模块

主芯片厂牌:TI (Texas Instrument)

主芯片编号:WL1271 One Chip

支持协议:IEEE 802.11 b/g/n, Bluetooth 2.0/2.1+ EDR,FM

支持频道: 2.4 GHz

支持频宽:11Mbps (11b), 54Mbps (11g), 150Mbps(11n),4Mbps (BT)

连结接口:SDIO (WLAN), UART (BT)

操作系统:Windows CE /6.0, Linux 2.4/2.6,Android;

 

由于前期一直在做MSN Direct相关的工作,介入Wifi开发相对比较晚,前期SDIO、Wifi底层驱动的移植工作已有同事基本完成,后续工作主要为AP扫描、AP连接(无密码、WEP、WAP1、WAP2)及.Net MF库接口开发,此外还需完成一个相对完整的示例程序。

下面一一简单介绍一下WG7310如何在.Net MF中使用的。

WG7310芯片开发板与DM335开发板的连接关系如下:

 

 

逻辑架构层次图如下:

 

 

WG7310芯片集成有自己的CPU系统,借助运行其上的程序通过SDIO和DM335开发板进行交互(这一点和Ti推出的CC2430Zigbee芯片类似,集成了51内核,通过串口与外界交互),由于WG7310芯片的片上Flash太小,所以需要通过外界把系统所需要的三个系统文件(firmware.bin、nvs_map.bin、tiwlan.ini)下载到该芯片上去,最初这三个文件放在.Net MF的文件系统中,考虑到受资源所限,并不是所有的.Net MF系统都含有文件系统,所以在Flash上开辟了一个Custom区,专门存放这三个文件。

这三个文件可以通过我以前开发的Flash远程读写 工具进行部署(如下图)。

 

 

在Native代码中,通过如下函数就可以提取文件内容:

 
  1. int TI_fileloader()  
  2.  
  3. {    
  4.  
  5.    TiFileInfo  *fileinfo = (TiFileInfo*) private_malloc(512);    
  6.  
  7.    if(fileinfo==NULL) return -1;  
  8.  
  9.    if(CustomBlock_Read(0,(UINT8 *)fileinfo,512)==FALSE)   return -2;  
  10.  
  11.    if(fileinfo ->Flag != 0xFEDE7722 || fileinfo->FileNum!=3) return -3;  
  12.  
  13.    UINT8 *bytData=(UINT8 *)private_malloc(fileinfo->FileSize);  
  14.  
  15.    if(bytData==NULL) return -4;  
  16.  
  17.    if( CustomBlock_Read(fileinfo->HeadSize,bytData,fileinfo->FileSize)==FALSE)   return -5;  
  18.  
  19.    int Num=0;  
  20.  
  21.    for(int i=0;i<fileinfo->FileNum;i++)  
  22.  
  23.    {  
  24.  
  25.         if(hal_stricmp(fileinfo->Item[i].Name,"firmware.bin") == 0)  
  26.  
  27.         {  
  28.  
  29.             g_file_loader.firmware_buffer = (UINT8*)bytData +fileinfo->Item[i].Addr;  
  30.  
  31.             g_file_loader.firmware_length = fileinfo->Item[i].Size;  
  32.  
  33.               Num++;  
  34.  
  35.         }  
  36.  
  37.           if(hal_stricmp(fileinfo->Item[i].Name,"nvs_map.bin") == 0)  
  38.  
  39.         {  
  40.  
  41.             g_file_loader.nvs_buffer = (UINT8*)bytData +fileinfo->Item[i].Addr;  
  42.  
  43.             g_file_loader.nvs_length = fileinfo->Item[i].Size;  
  44.  
  45.              Num++;  
  46.  
  47.           }  
  48.  
  49.           if(hal_stricmp(fileinfo->Item[i].Name,"tiwlan.ini") == 0)  
  50.  
  51.         {  
  52.  
  53.             g_file_loader.ini_buffer = (UINT8*)bytData +fileinfo->Item[i].Addr;  
  54.  
  55.             g_file_loader.ini_length = fileinfo->Item[i].Size;  
  56.  
  57.               Num++;  
  58.  
  59.         }          
  60.  
  61.    }  
  62.  
  63.    if(Num!=3) return -6;    
  64.  
  65.    return 0;  
  66.  
  67. }  
  68.  

注:CustomBlock块的读写非.Net MF官方标准功能,是我另行扩展的。

.Net MF的上层Wifi库由于还处在研发阶段,远没有定型,所以这里就不公开了,基本功能就是AP扫描,AP连接。

由于Wifi的开发相对复杂,远不是一句两句话所能说清的,特别是WPA1和WPA2功能,需要了解很多协议和过程,不仅考验你的C++功底,更考验你的逻辑思维能力。相关思路和代码这里就不细说了,下面仅展示一下相关的应用示例(对WG7310芯片开发感兴趣的朋友我们可以通过邮件和MSN进行更深入的交流)。

 

 

注:

(1)、示例程序所采用的图形库采用我开发的System.Windows.Forms库,非系统自带的WPF库。

(2)、DM335开发板的显示通过AV输出(见图一),无触摸或鼠标键盘输入,所以相关控制和输入通过我开发的插件进行控制,请参见《让PC成为MF的鼠标键盘》。

(3)、上述截图通过我开发远程截图工具进行截取的。

 

随着Wifi驱动的开发成功,下一步将深入研究Zigbee通信协议(其实Zigbee协议在.Net MF V4.0版本就含有相关源码,不过是基于托管代码),这样.Net MF外部通信接口除蓝牙外,几乎囊括了我们所常见的通信接口,如串口、网口、Wifi、Zigbee、I2C、SPI、SDIO、USB等。必要时我们还可以让.Net MF原生支持Modbus Rtu、Modbus TCP、PPI、CP243等通信协议,这样在物联网时代,用户只需几行C#代码(无需具备嵌入式开发技术),就可以让自己的设备轻松入网,这对.Net MF来说,是一个非常诱人的应用场景。

 







本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/321209,如需转载请自行联系原作者

相关文章
|
芯片 物联网 内存技术
WG7310(WLAN+Bluetooth+FM)芯片在.Net MF中的应用
WG7310芯片是Ti推出的一款芯片,集成了WLAN、Bluetooth、FM等功能(最近又推出了四合一的芯片,把GPS功能也集成了进去),由于以前在.Net MF上的一些工作是基于Ti DM335开发板上的,所以开发.Net MF系统的WiFi功能就选用了WG7310芯片。
696 0
|
网络协议
【STM32 .Net MF开发板学习-27】GPRS通信实现
GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输。我们基于.NET Micro Framework 4.1平台,开发了YFSoft.Hardware.GPRS库,通过该库,用户简单调用相关接口,就可以实现GPRS通信。
1020 0
|
网络协议
【.Net MF网络开发板研究-06】以太网转串口
有的模块还支持直接用TCP或UDP进行连接,不同端口号对应不同的串口,这样编程可以达到一个比较高的数据吞吐量(我在上个公司用Moxa 5630模块开发隧道广告的数据通信时,就遇到类似问题,也就是最大限度地提高单位时间的数据吞吐量)。
643 0
.Net Micro Framework研究—MF驱动继电器
年前张欣有一个比较好的想法,想用Digi的MF板驱动一个小型继电器,这样就可以用MF直接控制家中的小功率220V的电器了
566 0
【树莓派+.NET MF打造视频监控智能车】控制篇(.NET MF)
一般情况下一个驱动器可以驱动两路马达,而驱动一个马达一般需要两路信号,通过控制两路PWM的输出,来控制马达的转速和方向。我们这款小车选用的是一个带光电隔离,高功率的一个驱动器,一路马达,需要三路IO控制,其中2路是控制方向,一路输出PWM控制小车的转速。
662 0
【STM32 .NET MF开发板学习-29】摄像头蓝牙图像远程获取
目前M3的开发板,虽然前段时间可以支持WPF了,但是SRAM毕竟还是有限,所以从串口摄像头直接获取的jpg图像,并不能在LCD屏上显示出来(在模拟器上没有这个问题,可以直接呈现),所以我借助蓝牙接口,把另一个串口获取的图像数据发送到一台带蓝牙的PC上,PC上的程序否则实现数据接收,并把图像呈现出来。
706 0
|
芯片
【STM32 .Net MF开发板学习-09】AD模拟量采集
AD/DA输入输出、PWM及其它底层硬件控制,.Net Micro Framework官方底层驱动代码及上层C#库并没有对这些功能进行封装,所以要想添加这类硬件的控制接口,需要从下到上进行全方位设计。
610 0
|
前端开发
【.Net Micro Framework PortingKit - 06】设置芯片时钟
上两篇《修改启动代码&重写向量表》《SRAM初始化&设置NVIC中断表偏移》文章中,我们设置了中断向量表,初始化了RAM,并重设了向量表的地址,本篇文章是相对重要的一篇,我们将设置芯片时钟
555 0
|
C# 内存技术
【玩转.Net MF – 06】为Cortex-M3打造轻量级TinyGUI(上)
Microsoft .Net Micro Framework 官方UI库为WPF,针对320*240的LCD而言,至少额外需要150K以上RAM才能基本运行。
678 0
【STM32 .Net MF开发板学习-02】GPIO测试
示例很简单,主要是按钮和LED灯的测试,红牛和EM-STM3210E的按钮和LED有所不同,所以有针对性的对二者pin都做了定义(这些信息,你可以直接看开发板相对应的原理图,很容易就可以获得相关Pin脚的定义)。
475 0