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

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

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

芯片的技术指标如下:

功能规格:WLAN + BluetoothFM 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开发相对比较晚,前期SDIOWifi底层驱动的移植工作已有同事基本完成,后续工作主要为AP扫描、AP连接(无密码、WEPWAP1WAP2)及.Net MF库接口开发,此外还需完成一个相对完整的示例程序。

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

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

 

2

逻辑架构层次图如下:

 

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

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

 

4

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

int TI_fileloader()

{ 

   TiFileInfo  *fileinfo = (TiFileInfo*) private_malloc(512); 

   if(fileinfo==NULL) return -1;

   if(CustomBlock_Read(0,(UINT8 *)fileinfo,512)==FALSE)   return -2;

   if(fileinfo ->Flag != 0xFEDE7722 || fileinfo->FileNum!=3) return -3;

   UINT8 *bytData=(UINT8 *)private_malloc(fileinfo->FileSize);

   if(bytData==NULL) return -4;

   if( CustomBlock_Read(fileinfo->HeadSize,bytData,fileinfo->FileSize)==FALSE)   return -5;

   int Num=0;

   for(int i=0;i<fileinfo->FileNum;i++)

   {

        if(hal_stricmp(fileinfo->Item[i].Name,"firmware.bin") == 0)

        {

            g_file_loader.firmware_buffer = (UINT8*)bytData +fileinfo->Item[i].Addr;

            g_file_loader.firmware_length = fileinfo->Item[i].Size;

              Num++;

        }

          if(hal_stricmp(fileinfo->Item[i].Name,"nvs_map.bin") == 0)

        {

            g_file_loader.nvs_buffer = (UINT8*)bytData +fileinfo->Item[i].Addr;

            g_file_loader.nvs_length = fileinfo->Item[i].Size;

             Num++;

          }

          if(hal_stricmp(fileinfo->Item[i].Name,"tiwlan.ini") == 0)

        {

            g_file_loader.ini_buffer = (UINT8*)bytData +fileinfo->Item[i].Addr;

            g_file_loader.ini_length = fileinfo->Item[i].Size;

              Num++;

        }       

   }

   if(Num!=3) return -6; 

   return 0;

}

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

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

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

 

5

注:

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

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

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

 

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

相关文章
|
4月前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
185 10
|
5月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
2月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
132 2
|
4月前
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
176 6
|
5月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
475 3
|
5月前
|
缓存 Java API
【揭秘】.NET高手不愿透露的秘密:如何让应用瞬间提速?
【8月更文挑战第28天】本文通过对比的方式,介绍了针对 .NET 应用性能瓶颈的优化方法。以一个存在响应延迟和并发处理不足的 Web API 项目为例,从性能分析入手,探讨了使用结构体减少内存分配、异步编程提高吞吐量、EF Core 惰性加载减少数据库访问以及垃圾回收机制优化等多个方面,帮助开发者全面提升 .NET 应用的性能和稳定性。通过具体示例,展示了如何在不同场景下选择最佳实践,以实现更高效的应用体验。
68 3
|
5月前
|
前端开发 JavaScript 开发工具
跨域联姻:React.NET——.NET应用与React的完美融合,解锁前后端高效协作新姿势。
【8月更文挑战第28天】探索React.NET,这是将热门前端框架React与强大的.NET后端无缝集成的创新方案。React以其组件化和虚拟DOM技术著称,能构建高性能、可维护的用户界面;.NET则擅长企业级应用开发。React.NET作为桥梁,使.NET应用轻松采用React构建前端,并优化开发流程与性能。通过直接托管React组件,.NET应用简化了部署流程,同时支持服务器端渲染(SSR),提升首屏加载速度与SEO优化。
121 1
|
5月前
|
存储 缓存 安全
.NET 在金融行业的应用:高并发交易系统的构建与优化之路
【8月更文挑战第28天】在金融行业,交易系统需具备高并发处理、低延迟及高稳定性和安全性。利用.NET构建此类系统时,可采用异步编程提升并发能力,优化数据库访问以降低延迟,使用缓存减少数据库访问频率,借助分布式事务确保数据一致性,并加强安全性措施。通过综合优化,满足金融行业的严苛要求。
68 1
|
5月前
|
大数据 开发工具 开发者
从零到英雄:.NET核心技术带你踏上编程之旅,构建首个应用,开启你的数字世界探险!
【8月更文挑战第28天】本文带领读者从零开始,使用强大的.NET平台搭建首个控制台应用。无论你是新手还是希望扩展技能的开发者,都能通过本文逐步掌握.NET的核心技术。从环境搭建到创建项目,再到编写和运行代码,详细步骤助你轻松上手。通过计算两数之和的小项目,你不仅能快速入门,还能为未来开发更复杂的应用奠定基础。希望本文为你的.NET学习之旅开启新篇章!
46 1