引言
目前,WLAN作为一种实现宽带无线IP接入的典型方式,由于其接入速率高、架构使用灵便、可支持移动计算、系统费用低及可扩展性较好等优点,越来越受到人们的青睐。本文将详细介绍一款支持802.11a/b/g协议的高速基带芯片,以及它在通信系统中的典型应用设计,包括硬件设计和驱动开发。
WT6104CLVG功能介绍
WT6104CLVG是北京六合万通微电子技术有限公司生产的无线基带控制芯片。它是一款高度集成的无线局域网芯片,完整实现IEEE标准所规定的802.11a/b/g基带信号处理、协议处理以及各种附加增强功能模块。完全支持802.11b/g和802.11a所要求的各种调制方式,能够完整提供协议规定的1Mbps~54Mbps传输速率。该芯片还提供了大量的安全和加密算法,例如AES、TKIP、WEP、WPI等。针对移动设备的特点,它提供多种工作模式,其工作频率为40MHz,有效地降低了功耗。它能够与多种RF无缝集成,并提供了多种主机接口,如Cardbus、MiniPCI、Memory接口。该芯片内部主要功能模块包括MAC、基带、ADC/DAC以及RF接口。向上提供HCI接口,向下提供RF和SPI配置接口。各模块功能如下:MAC模块完成了媒体接入层所规定的所有协议,其中包括安全和加密算法协议;基带模块完全支持802.11b和802.11a所要求的所有调制方式;ADC/DAC是低功耗、单通道、差分输入/输出器件,内部集成采样/保持放大器。芯片具有节能功能,采用模拟电源3.3V、数字电源1.8V的双电源供电。芯片内部集成了44KB的存储单元。
无线模块硬件电路设计
WT6104CLVG与主控制器的接口设计
本设计的主控制器采用三星公司的S3C241O。通过TST_MOD[2:0]=3b:010将芯片设置为Memory接口工作模式,直接和S3C2410的数据、地址、控制总线连接。P_AD_OUT_[15:0]接S3C2410的低16位数据总线D[15:0];P_AD_OUT_[31:16]接低16位地址总线A[15:0];P_CBEN_[1:0]总线高低字节使能,低有效,分别接nWBE[1:0]引脚;P_CBEN_[3:2]分别接nWE、nOE引脚。P_IDSEL片选信号接nGCS2引脚,P_INIT接EINT9外部中断引脚。具体连接电路如图1所示。
WT6104CLVG与RF收发器的接口设计
RF芯片采用络达科技公司的AL2230S。它是一款支持802.11b/g无线协议的收发芯片。
WT6104CLVG通过RF接口和AL2230S连接。SHDN_OUT RF使能控制信号接AL2230S的PLLON引脚。A_RX_ENA、A_TX_ENA接收、发送通道使能信号分别接RXON、TXON引脚。PA_PE_11A、PA_PE_11G为802.11a/g模式使能信号,一起接PAON引脚。B[6:0]收发控制信号线接AL2230S的GC[7:1]引脚。TR_SW、TR_SW_BAR为收发切换控制信号。RF_CS片选信号接AL2230S的LE引脚。RF_SCLK、RF_SD_OUT为IIC接口信号线,分别接AL2230S的CLK、DATA引脚,具体连接如图2所示。WT6104CLVG通过IIC接口来配置AL2230S。
基带芯片和RF收发芯片分开虽然增加了设计难度,但是设计起来更加灵活,可以根据需要选择发射功率大的收发芯片,从而增加数据的传输距离。
无线模块驱动软件设计
此设计采用微软的嵌入式操作系统Windows CE,下面详细介绍以WT6104CLVG芯片为核心的无线网卡的NIC驱动程序设计。
Windows CE平台下的网络驱动模型
Windows CE.NET引入了NDIS(网络驱动程序接口规范,Network Driver Interface Specification)。NDIS支持以太网(802.3)、802.11、IrDA、WAN以及令牌环网(802.5)微端口。NDIS库将网络硬件抽象为网络驱动程序。NDIS也说明了网络驱动程序间的标准接口,因此,它将用来管理硬件的底层驱动程序抽象为上层驱动程序,NDIS支持以下几种类型的网络驱动程序:微端口驱动程序、中间层驱动程序、协议驱动程序。
Windows CE平台下无线局域支持组件配置
在WinCE平台下要支持802.11x无线网络,除需要注册NIC驱动之外,还要将以下组件添加到内核:
1)Wired Local Area Network[802.3,802.5] (SYSGEN_ETHERNET=1)
2)Wireless LAN[802.11]-Automatic Configuration and 802.1x(SYSGEN_ETH_80211=1)
3)Wireless Access Point[802.11]Support(SYSGEN_WIFI_AP=1)
4)Networking Utilities[ipConfig,Ping,Route](SYSGEN_NETUTILS=1)
5)TCP/IP(SYSGEN_TCPIP=1)
6)Core Server Support(SYSGEN_SERVICES=1)
7)Web Server[HTTPD](SYSGEN_HTTPD=1)
8)"Cisco 802.11b PC Card".SYSGEN_ETH_CISCO=1
WT6104CLVG和RF的初始化以及NIC驱动程序设计
主控制器通过WT6104CLVG的Memory接口实现其初始化和数据的发送和接收。对AL2230S可以通过IIC接口进行初始化配置和控制。该系统针对WT6104CLVG芯片开发了基于WinCE的NDIS微端口驱动程序,它负责与WT6104CLVG通信,完成协议包数据的收发。在驱动程序中向NDIS_MINIPORT_CHARACTERISTICS结构体变量WTChar赋值了一系列在驱动中实现的、为微端口向上提供的一组入口函数(MiniportXxx函数)的指针,然后调用系统函数NdisMRegister Miniport,向NDIS注册这些函数,并同时调用系统函数NdisMRegister Interrupt,向NDIS注册一个系统中断。具体源程序代码就不在此详述了。
数据包的具体发送流程见图3(接收流程与此相似)。
WT6104CLVG NIC驱动程序的注册
WT6104CLVG NIC驱动程序的注册需要在platform.reg注册表文件中添加以下几项(其中,WTWLAN.DLL为驱动编译以后生成的动态库):
[HKEY_LOCAL_MACHINE\Comm\WTWLAN]
"DisplayName"="WLAN802.11"
"Group"="NDIS"
"ImagePath"="WTWLAN.dll"
[HKEY_LOCAL_MACHINEComm\WTWLANkLinkage]
"Route"=multi_sz:"WTWLAN1"
[HKEY_LOCAL_MACHINECommWTWLAN1]
"DisplayName"="WLAN 802.11"
"Group"="NDIS"
"ImagePath"="WTWLAN.dll"
[HKEY_LOCAL_MACHINE\Comm\WTWLAN1Parms]
"BusNumber"=dword:0
"BusType"=dword:0
"InterruptNumber"=dword:26
"IoBaseAddress"=dword:0xa2000000
"Transceiver"=dword:3
"CardType"=dword:1
"sysintr"=dword:26
"NetworkAddress"="001217534633"
[HKEY_LOCAL_MACHINE\Comm\WTWLAN1Parms\TcpIp]
"EnableDHCP"=dword:1
"DefaultGateway"="10.0.0.138"
"LLInterface"=""
"UseZeroBroadcast"=dword:0
"IpAddress"="10.0.0.125"
"Subnetmask"="255.255.255.0"
"DNS"="10.0.0.1"
"AutoCfg"=dword:00000001
[HKEY_LOCAL_MACHINE\Comm\TcpipLinkage]
"Bind"="WTWLAN1"