tag 标签: 8686

相关博文
  • 热度 15
    2014-5-13 14:09
    1452 次阅读|
    0 个评论
    STM32 WiFi 开发板                                                                   ____ 智能家居、物联网开发平台 提供全部源码,方便开发者移植到其他平台,缩短您的产品研发时间! 详细地址: http://item.taobao.com/item.htm?id=37041990599   【主要应用】 1. 可与手机直连通讯,控制家用设备,包括插线板,开关等 2. 接2.4G模块或者433M模块,实现互联网到智能家居的控制 3. 板子带有红外接收,发射,可用来控制电视,空调,机顶盒等 4. 配套安卓手机演示软件及源码   【开发板硬件资源】 1. 带有一个mini USB 接口,可以用来开发USB相关功能。 2. 1个JTAG 接口, 3个按键,用于测试 3. 带红外接收头,发射LED接口(可用来遥控电视,空调等) 4. 带有Camera接口 5. 带有继电器控制及接线端子,可用来控制家用电源插座 6.带有LED指示,控制指示、工作指示、通讯指示 7. 带有2个RS232,可以用来做调试,通讯 8. 主控芯片所有外围都已接出,方便扩展,与2.4G模块,433MHz通讯模块通讯   一板在手,多重功能! STM32 WiFi开发板、STM32 USB开发板、物联网、智能家居开发   购买地址: http://item.taobao.com/item.htm?id=36717707052
  • 热度 26
    2012-4-4 12:15
    2806 次阅读|
    1 个评论
    作者:下家山(转载,请注明) 这里所说的电源管理主要是说:怎样降低功耗,也即省电! 怎样最有效的省电呢?Marvell把其分成了两部分来处理: IDLE状态(station没有链上AP),链接状态(station链上AP)。 (约定STA:表示station即wifi-card,AP表示access point,如无线路由器,PS:power save mode) 一:链接状态下省电 我们来见识一下Marvell8686到底能省多少电?下面是我的实验结果。 注:在连接上AP前提下。  命令 动作 电流 无 无 150mA Power on Rx ---ping 77mA(最大) Power on --(不动作) 14mA(最大) Power off Rx-----ping 150mA Power off Tx----iperf 160mA/162mA Power off Rx----iperf 152mA Power on Tx----iperf 142.2mA Power on Rx----iperf 152.1~153mA  1:POWER SAVE 命令 先说链接状态:在链接状态我们通过命令 Iwconfig eth1 power on   进入PS mode 而通过 Iwconfig eth1 power off 退出PS mode (注意:此命令仅在链接状态才有效,即如果STA没有连上AP则此命令无效) 这两个命令都是通过命令CMD_802_11_PS_MODE 0x0021来实现的,只不过在0x0021命令中还含有两个子命令,他们分别是:        PS_CMD_ENTER 0x0030 ,Iwconfig eth1 power on时其实就是执行的这个子命令;        PS_CMD_EXIT 0x0031,Iwconfig eth1 power off其实执行的就是这个子命令。 2:省电原理        我们执行Iwconfig eth1 power on命令就进入了PS mode,那么802.11是怎么来具体实现的呢?      当host驱动向firmware发送了此命令后,host不能送任何数据和命令到firmware了。因为,firmware一旦进入了PS mode ,许多硬件块就被关掉了(这些硬件块包括:hardware MAC(Media Access Controll),baseband processor(基带处理器),RF chip(射频芯片))。        这样就可以大大节省功耗。 3.进入PS mode后还可以传数据吗?        通过实验发现,在执行Iwconfig eth1 power on命令后,STA 与AP的链接并没有丢失。下面是我连上AP,执行Iwconfig eth1 power on,执行Iwconfig eth1 power off三个阶段的ping 结果。 /cybertan # ./auto.sh insmod sdio.ko insmod sd8686.ko helper_name=./firmware/helper_sd.bin fw_name=./firmware/sd8686.bin ./iwconfig eth1 essid sip ifconfig eth1 192.168.200.102 netmask 255.255.255.0 ./iwconfig eth1 bit 48M ping 192.168.200.1 PING 192.168.200.1 (192.168.200.1): 56 data bytes 64 bytes from 192.168.200.1: seq=0 ttl=64 time=7.176 ms 64 bytes from 192.168.200.1: seq=1 ttl=64 time=2.496 ms 64 bytes from 192.168.200.1: seq=2 ttl=64 time=2.507 ms  --- 192.168.200.1 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 2.496/4.059/7.176 ms  /cybertan # ./iwconfig eth1 power on /cybertan # ping 192.168.200.1 PING 192.168.200.1 (192.168.200.1): 56 data bytes 64 bytes from 192.168.200.1: seq=0 ttl=64 time=705.401 ms 64 bytes from 192.168.200.1: seq=1 ttl=64 time=12.633 ms 64 bytes from 192.168.200.1: seq=2 ttl=64 time=28.207 ms 64 bytes from 192.168.200.1: seq=3 ttl=64 time=47.442 ms 64 bytes from 192.168.200.1: seq=4 ttl=64 time=66.524 ms 64 bytes from 192.168.200.1: seq=5 ttl=64 time=93.352 ms 64 bytes from 192.168.200.1: seq=6 ttl=64 time=110.181 ms 64 bytes from 192.168.200.1: seq=7 ttl=64 time=135.511 ms  --- 192.168.200.1 ping statistics --- 8 packets transmitted, 8 packets received, 0% packet loss round-trip min/avg/max = 12.633/149.906/705.401 ms /cybertan # ./iwconfig eth1 power off /cybertan # ping 192.168.200.1 PING 192.168.200.1 (192.168.200.1): 56 data bytes 64 bytes from 192.168.200.1: seq=0 ttl=64 time=2.397 ms 64 bytes from 192.168.200.1: seq=1 ttl=64 time=2.414 ms 64 bytes from 192.168.200.1: seq=2 ttl=64 time=2.377 ms  --- 192.168.200.1 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 2.377/2.396/2.414 ms        通过这个实验我发现,在执行iwconfig eth1 power on 后,可以传数据和命令。        这不跟“当host驱动向firmware发送了此命令后,host不能送任何数据和命令到firmware了”这句话矛盾吗? 4:如何保持链接        STA进入PS mode后还是可以传输数据的,其与AP的链接并没有断开。那么,STA是怎样与AP保持这种链接的呢?        原来,STA进入PS mode 是间隙的,也就是STA隔一段时间就会“自动醒”来(这种醒来时自动的)。他醒来干什么呢?        他会去收AP是否给他发了对他有用的数据。如果有有用的数据就会进行处理,处理完后他又会进入PS mode 。        STA就是通过这种“间隙“来保持与AP的链接的。 5.间隙时间多长?        那么这个间隙是多长时间呢?        在命令CMD_802_11_PS_MODE (0x0021)中,有两个参数        NumDtims  LocalListenInterval          第一个参数NumDtims表示firmware睡眠的DTIM intervals数量,其范围为 和0xFFFE。设置到0表示保持当前值不变。设置到0xFFFE,此项不取作用,唤醒间隙由listern interval控制。(设置到1表示:睡眠时间不超过1个DTIM intervals;设置到大于1表示:则在每个DTIM intervals的结束自动醒来,个人理解 )        第二个参数,LocalListenInterval指示Listen interval(侦听间隙,此值在连上AP时已设置CMD_802_11_ASSOCIATE 0x0050)。其值范围 。如果设置为0,表示保持连接时设置的值不变,其他值将覆盖原先的值(在链接时设置的值)。如果第一个参数”NumDtims”大于1(不等于0xFFFE),或者Listen Interval的值大于DTIM period(这里DTIM  period与DTIM interval同义,个人理解),Listern Interval不取作用。        STA的睡眠时间可以等价于Listern Interval时间。Listen Interval按照如下算法执行:    。当Listen Interval等于DTIM interval或DTIM interval的倍数                 --STA 在每个DTIM到来时唤醒firmware。               。当Listen Interval比一个DTIM interval少(如,DTIM=10, Listen Interval=3) --DTIM count 编号如:0,9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,0 --STA在DTIM count=0,3,6,9时唤醒。               。当Listen Interval大于一个DTIM interval                 --STA在DTIM count=0时唤醒(Listen Interval具体值不取作用)               。当Listen Interval等于Listern Interval的倍数时 --Listen Interval不取作用,STA在特定的DTIM interval时唤醒firmware。 6.DTIM interval是多少?        DTIM interval的数值来自AP,因为STA是间隙侦听AP不过来的beacon,而AP只是在间隔多少个beacon才发送DTIM,这个间隔就是DTIM interval。这个值要看AP的设置。下面就是其中的一种:   这里,DTIM interval为133,即AP每隔133个beacon发送一个DTIM。这里我们还可以看到,beacon interval为100,即AP每隔100ms(毫秒)发送一个beacon。 二.IDLE状态下的省电        IDLE(STA没有连上AP)状态下的省电模式。        (有时间做实验看能省多少电)        此状态下省电,firmware将进入deepsleep mode。相关命令 Iwpriv eth1 deepsleep 1 使能deepsleep mode(此命令没有回应) Iwpriv eth1 deepsleep 0 禁能deepsleep mode Iwpriv eth1 deepsleep 2 显示当前deepsleep设置 进入deepsleep模式后,host 将不能访问设备(不能与firmware通信),直到我们的驱动去唤醒他(firmware)。        那么,我们怎么去唤醒他呢?        Marvell有专门的命令来设置唤醒firmware的方法     *GPIO4:(marvell不同的芯片也许不一样,marvell8686和wm664都是这个脚)。当GPIO4从高到低,然后保持高的状态(当然低位要保持一段时间,具体时间我没有查证到) *这个命令的设置必须在发送deepsleep命令之前,不然就唤不醒了。 【当然,如果你不设置其唤醒方法,也不用担心进入了deepsleep后不能醒来,因为marvell默认方式下的唤醒方法为command interrupt(SPI和SDIO接口方式)。】 转载:请注明,作者,下家山   请尊重原创!      
  • 热度 22
    2012-4-4 12:12
    2296 次阅读|
    0 个评论
      作者:下家山 (转载,请注明作者,请尊重原创) 三.关于睡眠        在marvell文档里面把睡眠与省电放在一起讲的(其实睡眠就是一种省电),我这里特意把他们挑出来,有便于更清晰的去理解。        在marvell8686(marvell其他芯片)中,我把其睡眠分成如下类:   1  Host睡眠        这里的host有点不好理解,也可以理解成卡片里面的那个CPU(ARM9核),本人认为是说我们的驱动,host driver,host睡眠就是驱动可以不管marvell8686,去做其他的事情。 ① 对应的命令 CMD_802_11_HOST_SLEEP_CFG(0x43) 在marvell 驱动中属于私有命令,例:               iwpriv ethX hscfg Condition ]               (也有这种形式      iwpriv ethX hostsleepcfg Condition ])               命令解析               ●Condition必选, 置低160ms 当host醒来时记得删除host sleep 配置参数。 如果此命令被执行,firmware讲不会接受任何其他命令。 ②.如何醒来 假设我们执行iwpriv eth1 hscfg 2 5 0xa0 当firmware从其他PC处接收到一个ping包,则GPIO 将会有一个160ms的低跳变。Host将会根据这个跳变得到唤醒。 问题:如果只有一个参数是如何唤醒iwpriv eth1 hscfg 2              **? ③.如何激活           此命令仅仅是配置,他还需要激活。那么如何激活呢?        Firmware在任何时候接收到CMD_802_11WAKEUP_CONFIRM或CMD_802_11_DEEP_SLEEP时将激活hostsleep 配置命令。 2.Firmware睡眠 ①.Firmware连上AP状态下睡眠             参见上面。 ②.Firmware没有连上AP状态下的睡眠        参见上面。 结束   转载:请注明,作者,下家山   请尊重原创!