Marvell88W8686的SPI主控接口

88w8686 是一款低成本、低功耗,支持IEEE 802.11a/g/b MAC/基带/射频(RF)无线局域网标准的片上系统,设计支持IEEE 802.11a/g标准的6、 9、12、18、24、36、48、54M 有效数据速率,和IEEE 802.11 b 标准的1、2、5.5、11 M 数据速率。88w8686 提供IEEE802.11/802.11 b 标准直接序列扩散光谱(DSSS),802.11a/ g 正交频分复用(OFDM)基带调制,媒体访问控制(MAC),CPU,内存,主机接口,直接转换收音机,无线局域网射频(RF)功能相结合的单一集成芯片。

88w8686 核心功能单元,通过一个高通量互联系统相互连接,如图所示。

88W8686 配备了一个完全集成的射频到基带收发器工作在2.4 GHz 的ISM 的802.11g/b端口WLAN应用和5 GHz的UNII WLA 802.11a的无线电波段的无线电波段。该收发器架构包括Marvell的第二代,专门设计用于手机通信。蜂窝频段发射杂散音,噪音和接收干扰被设计在其中。

在手机中由于非常低的频谱发射接收频段,设备不会干扰手机接收和发送高 功率移动电话传输信号。为了获得最佳性能,接收路径上集成的LNA 和AGC 增益调整无缝控制基带功能。整个接收路径已超过90 分贝电压增益。

综合发射机正交基带信号转换,然后为2.4 GHz 和5 GHz 无线电频带传输提供外部功率放大器的RF 信号。

本振频率产生一个完全集成的可编程频率合成器,无需任何外部元件。环路 带宽优化相位噪声和动态效能集中在该芯片上。出于安全考虑,88W8686 支持IEEE 802.11i 安全标准,通过实施高级加密标准(AES)/计数器模式CBC - MAC 协议(CCMP),有线等效保密(WEP)临时密钥完整性协议(TKIP)安全机制。为视频,语音,和多媒体应用,88W8686 支持802.11e 的质量服务(QoS)。还支持蓝牙共存接口。88W8686 支持一个通用的SPI(G - SPI)和SDIO 主机接口,采用QFN 封装或倒装芯片封装。

#88W8686 G-SPI主控接口#

88W8686主机接口单元(Host Interface Unit,HIU)连接几个主机接口总线单元到设备(指88W8686)的内部总线上。每个HIU和其他HIU是通过共享到内部总线的连接,但88W8686每次只允许一个HIU被激活。

88W8686的HIU支持G-SPI(通用的SPI)接口和SDIO接口。它支持一个通用的、半双工(half-duplex)、DMA辅助(DMA-assisted)的SPI接口,允许一个主控制器使用通用的SPI协议来访问WLAN设备(指88W8686)。G-SPI接口包含了外部SPI总线和内部共享总线之间的接口电路,如图所示:

88W8686在SPI总线上表示为设备,主机单元能够直接访问G-SPI寄存器和通过使用BARs(Base Address Register,基地址寄存器)和DMA引擎来访问设备的共享内存。

SPI单元支持通用的SPI接口协议,工作速率可达50MHz,此接口支持下面的功能:

  1. SPI单元总线设备操作
  2. SPI单元寄存器读写
  3. 对内部CPU产生中断
  4. 对外部SPI主控制器产生中断(比如S3C2451的SPI控制器)
  5. 通过DMA访问内部共享内存
  6. 对电源管理单元产生唤醒中断

G-SPI接口信号描述#

88W8686复位后,紧接着使用下面配置输入引脚来设置参数,但是在88W8686复位到一定时间之后,这些引脚立刻改为变他们通常的功能,比如GPIO[5]就作为通常的功能使用。如果要设置一个配置位为0,通过连接一个阻值为100 kΩ的下拉电阻,比如:

如果要设置一个配置位为1,则不需要接外部电路

88W8686的配置引脚如下图所示:

接下来看G-SPI接口引脚的说明:

#G-SPI接口功能描述#

G-SPI接口的标准G-SPI物理总线上支持多种简单的地址/数据协议,这些协议通过地址的位数和数据的顺序来区分。

每次通讯由主机通过拉低SCSn信号来发起,从机在检测到SCSn有效(低电平)之后,在每个SCLK的上升沿锁存SDI引脚上输入的数据。当从机要输出数据时,在SCLK的下降沿送出数据。SCLK输入信号在每次通讯的开始和结束都为低电平,中断输入信号SINTn由设备发送给主机(比如S3C2451的SPI主控制器)

##通讯时延(transaction delay)##

第一个数据块是从主机发送到设备(从机)的,这个数据块包含一个地址和读/写标志,地址的最高位(MSB)如果为0表示读,如果为1表示写。

  • 写操作时延(write Write Transaction Delay)

    对于写操作,写操作的数据段紧跟着地址段,地址和数据段之间,不需要主机产生低时钟脉冲。

  • 读操作时延(read Write Transaction Delay)

    读操作时,在总线上地址段之后和数据段之前要求有一些时延。这些时延表现为TDDR(time delay read register,读寄存器时延)TDRP(timedelay read port,读端口时延),这些时延表示设备需要需要一些时间来准备有效数据给主机。

有两种方式来建立这些时延:

  • 第一种:主机通过发送一定数量的虚拟时钟周期(a known number of dummyclock cycles)到设备来创建读操作时延,这些虚拟时钟周期定义在延迟读寄存器(delay readregister)中,也就是说主机要发送的虚拟时钟周期数量由延迟读寄存器的值来定,下面来看此寄存器的定义:

由上图可知Delay Method的值由SPU Bus Mode寄存器(offset 0x70[2]=1)的Delay_Method位的值来决定,下面来看此寄存器的定义:

SPU(SPI host interface unit)表示SPI主机接口单元。

  • 第二种:通过主机在地址段和数据段之间保持(holding)低时钟信号至少一段时间来创建读操作时延(the delay is created bythe host holding the clock signal low for a minimum period of time between the addressand data phases),此模式通过设置0x70[2]=0来选择。

在读操作的数据段区间,主机继续提供时钟脉冲和同时驱动数据到SDI输入引脚或从SDO输出引脚读取数据。

##数据传输##

主机经常访问G-SPI单元的配置寄存器,为了访问内部内存空间,一些寄存器被定义为端口寄存器。当访问端口寄存器时,从机使用相应的基地址寄存器(BAR)和DMA引擎来从内部内存空间读取数据,或是写入数据内部内存空间。

主机和从机间的每一次传输都是突发模式(一个地址后面跟着多个数据),在读或写完所要求数量的数据后,主机通过拉高SCSn引脚来结束此次传输。

###端口寄存器访问####

主机读端口寄存器时,对于突发模式的数据长度没有限制(除了内部总线的有效地址范围限制之外)。主机写端口寄存器时,对突发模式的数据长度唯一要求是:长度是DWORDS的倍数。

端口寄存器(I/O端口,命令端口,数据端口)被用来访问内部32-bit存储空间和总是32-bit对齐访问。每个端口寄存器都有一个相应的BAR用来读写(BAR作为一个指针指向要读写的内存空间的开始物理地址)。内存也只能32-bit对齐访问,这通过向相应的BAR写入32-bit对齐的数据来是实现,在访问期间,第16bits数据总线最先出现在总线上。

  • 写数据到端口寄存器

    写数据到端口寄存器,就是依次填满起始位置在BAR的连续的32-bit内存空间。当从从机的数据和命令端口读数据时,DMA引擎连续填充FIFO知道剩余空间不足8个DWORDs。当写数据到设备时,拉高SCSn信号脚来清空FIFO。

  • 从端口寄存器读数据

    当从设备的I/O端口读数据时,可以选择DMA引擎是执行单一读或是突发模式读。突发模式读与读端口和命令端口一样,单一模式读让DMA引擎在内部总线上指向单个DWORD访问。单一模式读通讯必须在返回数据的第一或是第二个16-bit块之后终止。

###配置寄存器访问###

当主机访问端口寄存器之外的其他寄存器时,突发模式长度必须限制在一个16-bit的数,或是如果地址是以DWORD边界对齐的两个16-bit数。当内部总线的单元访问G-SPI接口寄存器,则必须是单个DWORD或是更小来访问。

G-SPI除了端口寄存器之外的接口寄存器,都能以16-bit边界对齐的方式读或是写。当单个16-bit word被读出或写入,通讯可以被终止。

##G-SI时钟频率##

G-SPI时钟频率不能大于内部总线时钟频率的2.5倍,内部总线时钟频率

##数据格式##

总共有16个有效数据格式,下面9个数据格式是可用的:

  • 所有4读数据格式,在地址段和数据段之间的延迟时间,时钟信号保持为低电平。
  • 所有4个写数据格式。
  • 1个读数据格式,在地址段和数据段之间的延迟时间,时钟信号切换为固定数量的周期。

每种读写操作类型都有两种地址长度,要么是8-bit要么是16-bit,而每种地址长度对应有两种数据顺序。

###可编程的时钟周期延迟###

下面是Delay_Method=0的读数据格式,在这种模式下,tdr(r/p)的值代表最后一个地址位和第一个数据位之间的延时时间,这段时间内时钟信号SCLK保持为低电平。有两个不同的延时值,包括从G-SPI配置寄存器读取的值和从G-SPI端口寄存器读取的值。一旦读写操作指定的时延期满,有效的数据就从设备中发出。

  • 读数据格式

  • 写数据格式

###固定的时钟周期延迟###

下面是读数据格式的例子:

目前我们G-SPI驱动读数据格式就是采用这种格式。

##G-SPI接口寄存器内存空间##


本文章转自:http://blog.csdn.net/loongembedded/article/details/9067013