Loopback测试软件AX1用户手册 V3.1

博客
点击:[wpdm_package template='link-template-default-wdc' id='9377'] 1. 什么是AX1 AX1程序是基于windows的PC程序,用来评估 iinChip™的性能,也即是wiznet的硬件TCP/IP芯片。 AX1通过网络与iinChip™评估板和TCP/IP协议连接,首先,TCP/IP协议发送可选的包或者文件到iinChip™评估板,其次,它检查返回的数据包或者文件,发送包或者文件。最后,测量发送和接收速度。 AX1的功能如下: 测试TCP协议 测试UDP协议 2. 安装 你可以通过iinChip™评估板产品包里的CD或者wiznet的主页(http://www.wiznet.co.kr),来安装AX1。 AXI安装过程如下: (1)       执行“AXInstallVX.X.exe” 文件名里的‘VX.X’代表AX1的版本。目前,最新的版本是3.1。你可以通过wiznet的主页得到最新版本。 图2.1 执行AX1安装过程 (2) 确定AX1程序的安装目录 图2.2 确定AX1程序的安装目录 (3) 在“项目管理组”选择注册名字 图2.3选择项目管理组 (4) 如果你完成AX1的安装准备工作,开始安装。   图2.4开始安装 (5) AX1程序安装完成  图2.5 AX1程序安装完成 3 使用方法 3.1 系统配置 让我们看看安装AXI程序的测试PC机以及iinChip™评估板的系统构成。 测试接口包括如下两种类型 LAN(局域网)接口 WAN(广域网)接口 首先,局域网接口在同一个网络中建立,你可以连接测试PC机和iinChip™评估板通过一对一的直接连接,或者通过HUB间接连接。在直接连接中,必须用到交叉UTP线缆。如果用到HUB,需要用到直接UTP线缆。图3.1是一个局域网接口的系统组成例子。 图3.1 局域网接口的系统组成例子 局域网中的同一段网络,表示测试PC机和iinChip™评估板具有相同的网络信息,也就是说,如果iinChip™评估板的源IP地址是192.168.0.2,网关IP地址是192.168.0.1,子网掩码是255.255.255.0,那么测试PC机的网关IP地址和子网掩码值应该和iinChip™评估板的一样。 换句话说,iinChip™评估板的源IP地址是192.168.0.2,网关IP地址与局域网处于同一个网络中,通过广域网接口意思是通过Internet连接,测试PC机和iinChip™评估板不在同一段网络中。图3.2是广域网接口的系统组成例子。  图3.2 广域网接口系统组成 3.2 如何测试 如果已经搭建测试环境,在测试PC机上执行AX1程序,图3.3是AX1程序执行窗口。   图3.3 AX1程序执行窗口 为了便于理解AX1不同的函数,请参考表3.1和表3.2。 表3.1 AX1程序的菜单描述 菜单 子菜单 描述 File Open 打开回环测试的文件 About 选择版本信息 Exit 退出程序 TCP Listen 在TCP服务器模式下,等待iinChip™评估板的连接 Connect 在TCP客户端模式下,连接iinChip™评估板 Send 通过建立的TCP连接,发送随即包 Close 关闭TCP连接 UDP Open 打开UDP连接 Send 通过打开的UDP连接,发送随即包 Close 关闭打开的UDP连接 CPUTICK CPUTICK 为了测量回环速度,需同步CPU时钟。 这个过程需要5S。 <注意> 仅支持英特尔相关的CPU。如果是AMD的cpu,我们不保证准确的回送速度。 表3.2  AX1程序的工具图标描述 工具图标 描述 file:///C:/Users/j/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png 通过TCP连接,文件回环一次的时间 file:///C:/Users/j/AppData/Local/Temp/msohtmlclip1/01/clip_image016.png 通过UDP连接,文件回环一次到用户选择的目的地址的时间 file:///C:/Users/j/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png 通过TCP连接,文件回送用户指定的次数 file:///C:/Users/j/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png 通过UDP连接,文件回送用户指定的次数 file:///C:/Users/j/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png 通过TCP或者UDP连接,文件回送无限次 file:///C:/Users/j/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png 停止重复回送测试 3.2.1 TCP服务器测试 TCP服务器按如下工作方式 AX1程序:TCP回送服务器 iinChip™评估板:TCP回送客户端 (1)   点击菜单TCP〉Listen 图3.4  TCP服务器监听 (2)   选择服务器的监听端口  图3.5 服务器端口选择 (3)   等待iinChip™评估板连接步骤(2)中设立的监听端口。 (4)   在TCP回送服务器模式下,操作iinChip™评估板。 参考iinChip™评估板手册,设置iinChip™评估板。 (5)   完成于iinChip™评估板的连接。 图3.6 测试PC机和iinChip™评估板完成连接 (6)   通过TCP连接,回送包或者文件。 3.2.1.1  TCP包回送 随即包通过建立的TCP连接,回送一次到iinChip™评估板。 (1)   点击菜单TCP〉Send 图3.7  TCP包回送 (2) …
Read More

在Nucleo STM32F401RE上使用SPI DMA方式提高W5500传输速率

博客
WIZnet W5500 支持高达 80MHz SPI 时钟,所以用户可用 MCU来提供一个最大传输速率的高速以太网SPI通讯。本文中,我将展示如何用STM32 MCU来让W5500达到最大传输速率。 当使用来自STMicro的Cortex M3/M4产线的32位处理器,以太网传输速率可以在使用SPI通讯模式事产生最大变化。我将比较使用SPI标准模式和SPI DMA模式的不同传输速率。 组成 MCU : Nucleo STM32F401RE 以太网控制器 : WIZnet WIZ550io(内嵌 W5500) 引脚连接 MCU与WIZnet WIZ550io之间的引脚连接,请参见下表。 首先,连接电源线。 其次,连接SPI信号。连接SCS 引脚到GPIOA_Pin12,因为我将用软件方法处理它。 第三,连接 RSTn 引脚到 GPIOA_Pin11 来复位WIZ550io. 最后, 用GPIOA_pin1这个引脚连接到W550io的RDY引脚上完成初始化. RSTn 引脚和 RDY 引脚的连接并不至关重要,但是连上更稳定. 怎样实现SPI协议  SPI 协议控制W5500和在SPI标准模式及SPI DMA模式是相同的。然而,这两种模式之间的不同是,在SPI总线的数据之间的空闲时间。 用于W5500的SPI协议在WIZnet ioLibrary中W5500.c中提供,具有如下功能。 WIZCHIP_READ(uint32_t AddrSel) WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb) WIZCHIP_READ_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) 当SPI DMA 模式未使用时, 内部函数调用标准SPI 读/写函数,比如下面的WIZCHIP_READ_BUF() 功能。 #if !defined (SPI_DMA) WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); for(i = 0; i < len; i++) pBuf[i] = WIZCHIP.IF.SPI._read_byte(); 当使用 SPI DMA 模式时,准备命令数据,由地址和操作码组成,称作 SPI_DMA_READ() 函数。 #else spi_data[0] = (AddrSel & 0x00FF0000) >> 16; spi_data[1] = (AddrSel & 0x0000FF00) >> 8; spi_data[2] = (AddrSel & 0x000000FF) >> 0; SPI_DMA_READ(spi_data, pBuf, len); #endif 正如在“如何在STM32F2xx or STM32F4xx中使用SPI…
Read More

浅析TOE — TCP卸载引擎技术及应用

博客
TOE 是TCP Offload Engine,即TCP卸载引擎,也叫TCP减负引擎,它旨在使用网卡上集成专用处理器来转移并处理TCP数据包对主CPU请求的任务。TOE技术的实现方式是通过采用TOE芯片的专用网卡,将包括TCP协议在内的四层处理请示从主机处理器转移到网卡,相当于TOE网卡承担了主CPU处理TCP数据的绝大部分任务,减轻了CPU的负荷,其最终的结果是在加速网络响应的同时提高服务器的性能。   1、TOE技术的实现过程 图1  TOE网卡工作原理 TOE网卡主要工作过程如图1所示: (1)服务器A向服务器B传输数据; (2)A主机中的TCP栈向TOE网卡传输数据指针; (3)TOE网卡进行所有TCP协议处理工作并通过网络传递数据包; (4)B主机中的TOE网卡接收数据包,重排数据流并将之存放在内存中。 普通网卡则是先把数据包缓存到主机内存中,然后主机中的TCP协议栈重新组装数据流,最后把数据拷贝到应用程序[1]。 2、TOE网卡的优势 普通网卡用软件方式进行一系列TCP/IP相关操作,因此,会在三个方面增加服务器的负担,这三个方面是:中断处理、协议处理、数据复制。 2.1 协议处理 图2 TCP/IP卸载前后主CPU占用比例 当网络速度达到G(干兆)比特数量级时,主CPU就越来越繁忙,其中很大一部分处理负荷都是来自对TCP/IP协议的处理,例如对IP数据包的校验处理、对TCP数据流的可靠性和一致性处理,如图2所示。由于目前对TCP/IP协议进行处理都是采用通用CPU及其配套的系统结构,而这种体系下CPU的主要功能是进行通用计算,并非进行输入输出操作。因此在网络带宽和速度飞速发展的情况下,网络链路速度高于CPU对TCP/IP协议栈的处理速度将导致系统的输入输出系统成为网络瓶颈。 2.2 中断处理 传统的处理过程是:网络上每个应用程序在收发大量数据包时,要引发大量的网络I/O中断,对这些I/O中断信号进行响应,成了服务器的沉重负担。比如,一个典型的64Kbps的应用程序在向网络发送数据时,为了将这些数据装配成以太网的数据包,并对网络接收确认信号进行响应,要在服务器和网卡间触发60多个中断事件,这么高的中断率和协议分析工作量已经是相当可观的了。虽然某些网络操作系统具有中断捆绑功能,能够有效减少中断信号的产生,但却无法减少服务器和网卡间响应事件的处理总量。 TCP卸载引擎网卡的工作原理则不同。普通网卡处理每个数据包都要触发一次中断,TCP卸载引擎网卡则让每个应用程序完成一次完整的数据处理进程后才触发一次中断,显著减轻服务器对中断的响应负担。还是以64Kbps的应用程序为例,应用程序向网络发送数据全部完成后,才向服务器发送一个数据通道减负事件中断,数据包的处理工作由TCP卸载引擎网卡来做,而不是由服务器来做,从而消除了过于频繁的中断事件对服务器的过度干扰。网络应用程序在收发数据时,经常是同一数据要复制多份,在这种情形下,TCP卸载引擎网卡发挥的效益最明显。 2.3 数据复制 普通网卡通过采用支持校验功能的硬件和某些软件,能够在一定程度上减少发送数据的复制量,但却无法减少接收数据的复制量。对大量接收数据进行复制通常要占用大量的机器工作周期。普通网卡先将接收到的数据在服务器的缓冲区中复制一份,经系统处理后分配给其中一个TCP连接,然后,系统再将这些数据与使用它的应用程序相关联,并将这些数据由系统缓冲区复制到应用程序的缓冲区。TCP卸载引擎网卡在接收数据时,在网卡内进行协议处理,因此,它不必将数据复制到服务器缓冲区,而是直接复制到应用程序的缓冲区,这种“零拷贝”方式避免了网卡和服务器间的不必要的数据往复拷贝。 表1中列出了TOE技术的测试比较数据,可以明显看出TOE技术在吞吐率和收据收发对CPU占用方面的技术优势。   表1  TOE技术的测试数据 网络环境 吞吐率(Mb/s) 发送数据CPU消耗量 接收数据CPU消耗量 1GBE,TCP 769 0.5CPUs 1.2CPUs WSD SAN 891 0.2CPUs 0.2CPUs 10GBE,TCP 7700 0.5CPUs 12CPUs 10GBE,TOE 9000 0.5CPUs 0.5CPUs 3、TOE技术的限制因素 实际上TOE解决方案一直仅限于在8 KB或以上的环境中发送大型数据块的情况。通常,存储备份和检索系统及企业数据库均使用大型数据有效负载。此外TOE应用限制也有诸多限制:修改操作系统、依赖于特定TOE网卡等。 4、TOE技术的推广应用 Adaptec推出一种全新的网络加速卡。该产品将使高强度计算应用中的服务器性能得到提高。Adaptec网络加速器将TCP/IP处理进程从主机中卸载下来,使CPU的处理能力能够被更多地投入到网络化应用中。 WIZnet推出一系列以太网芯片,此系列芯片是一种TOE技术的新思路。以太网芯片,使用逻辑门电路实现全硬件TCP/IP协议栈,独立于MCU运作,负载所有TCP/IP协议栈的处理过程,可以极大减轻主CPU的TCP/IP处理负荷,减少I/O中断次数,传输速度的提高不再是难题,深受市场的青睐[2]。 参考文献 [1]《TOE技术以及TOE网卡的工作原理》 百度文库 [2]任宏.关于TOE技术的发展及概况的研究[J].INFRARED,2005,3:19-25 作者:David
Read More

用Arduino Ethernet远程唤醒电脑

博客
译自:http://ricardo-dias.com/2010/11/20/arduino-wakes-my-pc/ 我一直梦想着通过网络控制我房间里的一些物件。在电脑上看IPTV,开/关灯,遥控P2P下载...完成这些,我需要一个服务器-- 我的旧台式机倒是可以做到。当然,我不是故意晾着它 整天/周/月的...^^ 我需要在任何想要用的时候,找到复活它的办法。所以我想我可以用一个Arduino和以太网插板来发送 局域网唤醒包(来实现远程服务器开机)。   这个UdpRaw库可允许发送原始数据包,所以我要做的只是执行以下这个“魔法包(Magic Packet)” - 它由 6个0xFF及紧跟的16个目标MAC地址 组成。 byte wolMac[] = { 0x00,0x00,0x00,0x36,0x45,0xC1 }; 现在,我所需要的是在6*0xFF后复制MAC地址16次。我是这么做的: byte all[102]; int i,c1,j=0; for(i = 0; i < 6; i++,j++){   all[j] = 0xFF; } for(i = 0; i < 16; i++){   for( c1 = 0; c1 < 6; c1++,j++)     all[j] = wolMac[c1]; } 运行这些代码之后,所有的这些阵列将获得完整的魔法包,预备发送: UdpRaw.sendPacket(all,102,targetIp,targetPort); 所以测试的话,我琢磨出了一个简单的程序,当按下一个按钮时,包就发送了。然后呢,我在pin 2上用了一个中断。Arduino基本能保持对那个引脚的侦听,无论从低到高,都将执行特定功能。 搞定上面之后,我计划用Arduino来侦听网络端口,当它接收到一个指定的包序列后,就唤醒电脑。这样就能在世界的任何有角落叫启动我的服务器了!    这是全部的Arduino 代码: /* * Arduino WakeMyPc  * Ricardo Dias  * http://ricardo-dias.com/  *  * This sketch sends the "magic packet" to wake up  * a PC on Local Area Network when a push-button  * is pressed.  */ #include <Ethernet.h> #include <UdpRaw.h> // ARDUINO CONFIG byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Arduino MAC byte ip[] = { 192, 168, 1, 112 };…
Read More

OVAL-智能传感器.即时报警.

博客
革命性的传感器!保护人,动物以及你最在意的物品。你将如何利用它呢?   OVAL是一个智能、易用&多用途传感器。可以保护人和你最在意的物品。粘贴、穿戴或者放在任意想侦测的物品上,都可以侦测物品的运动,加速度,光照,水分,温度及接近度的变化。如果传感器被干扰,你将会在手机或邮件中接收到报警。在世界的任何角落,一触即发。 OVAL可以做什么? OVAL任何人都能用! 幕后故事 OVAL由一位父母创建,用以防止处方药及酒精的滥用。几年前,Rich Cosgrove十几岁的儿子在他的同龄人中显示出了对这些物质使用的猖獗。鉴于滥用这些药物的猖獗,以及如何潜在的导致其他药物的使用成瘾。Rich开始琢磨一个不被注意的方式来监视他们的药物和酒柜。如此,关于OVAL的创意就诞生了。 但是,它是怎样演变的呢... Rich找到了一位工程师帮助设计并开发此技术,之后不久找到了Lars Gerd Piwkowski。通过很多深夜对话,OVAL的idea开始得以进展。为什么要这么多功能,为什么不只做运动监控? Lars 开始在原型上研究,不到10个月就让OVAL传感器侦测物体运动、加速度、周围的光照、湿度、温度和接近度成为可能。这使OVAL拥有了上千种附加使用。不仅父母可以用这些传感器来让敏感、潜在的危险物品远离家庭,每个人都可以用OVAL来保护人,宠物以及他们在意的物品。 技术 OVAL传感器运动侦测的演示: OVAL传感器光度侦测的演示: OVAL传感器温度侦测的演示: OVAL传感器位置侦测的演示: 应用 看一个我们原型应用的快速演示: 我们正在重新设计应用来让用户体验更建议。这有一些来自我们设计的作品。 为什么我们需要您 首先,感谢您的时间,来浏览我们的项目。真心感谢。 到目前为止我们都是自己出资,专门投入了一年时间进行设计,研发,以及计划我们的营销以推出项目。 传感器本身已经完成。它是很实用的,并准备大量生产。我们会监督最后的OVAL生产运行;包括在DIGISYSTEMS的制造,装配,质量控制,在德国索林根。 我们正在寻求您的支持,以帮助我们完成最后的生产。其中包括与模具,生产,OVAL打包等相关内容。这个阶段,通过你们的帮助,我们能更准确的估算需要生产的OVAL的数量,以在最后的生产中有更低的成本。并且,我们将节省下来的费用以OVAL的折扣价返还给你。   更重要的是,参与这个策略,与您之间形成了一个论坛,以更好的倾听您关于如何改进OVAL的建议。我们欢迎大家的反馈及公开的讨论! 产品进度  OVAL资金长期目标 要达到我们的众酬目标,我们会制定一个长期目标,第一批我们会更早交货。拥有更多资金我们就可以扩大我们的队伍,在2014年12月尽早在这个假期让您及时拿到。 另外一个长期计划是,OVAL传感器要有不同的颜色,你可以定制你的套件。并且,今后,我们计划提供款式繁多的OVAL传感器(例如,反光材料+保护色)或者你上传的一个logo或设计。 认识我们的团队 风险与挑战 正如任何创新项目一样,在生产过程中挑战总是会出现。总的来说,我们的核心团队拥有数十年的实践,定制生产经验。这个经验贯穿了航电设备、软件工程、生物医学及消费电子的包装,注塑,模具的整个过程。我们已经进行了广泛的研究,建立了充分的全功能OVAL原型,测试并从消费者和技术专家那收到了持续的反馈。 我们与生产商维持长期的业务关系,与领先的消费电子公司合作。选定的厂商已经审查了我们的项目,原型及计划。他们期待与OVAL合作生产一个高质量、专业标准的产品。我们的生产时间表都是现实并课实现的。 我们有信心,如所述一样,在规定时间内交付OVAL。当然,在整个生产周期内,我们的支持者都会了解到我们的进程。 Oval下一步是什么? 欢迎来到Internet 3.0!传感器技术是下一步最重要的事,对于OVAL技术来说,是最好的时机! Internet 1.0 是关于电脑互联,Internet 2.0 通过社交网络将人与人联系在一起,Internet 3.0,物联网或说“IOT”,将世界剩余的部分连接网络。 Oval Digital的愿景是创造最大的IoT网络,搭建物,人以及网络之间的桥梁。实现快速,可靠,安全并经济的连接方式。 OVAL传感器仅仅是一个开始...当前的研发是: OVALnano - 一个超小 OVAL 传感器变形体,可保护你的小型的昂贵物品,比如 戒指,钱包,手镯,眼睛。 OVALmobi - 一个科移动的OVAL网关变形体,可以让你随时随地取得网络连接。 OVAL开发者计划 我们正在邀请软件开发者为OVAL传感器提出新的方式来与其他的可连接设备(室内&室外)一同工作。我们让你利用OVAL,提供这个工具给你,你可以集成并构建优秀的产品和应用。 我们的API服务于OVAL实时通信。访问你所有的OVAL传感器传经数据,比如运动情况,加速度,温度,光度,湿度及接近度。开/关闹钟功能,设置个人的阀值以防事件发生。我们计划同样集成IFTTT来创建个人菜谱。 我们将使用工业标准OAuth2.0和SSL进行身份验证及授权,提供一个API文档,例程及测试工具来快速编程。 问&答   如何设置我的系统? 很简单。将OVAL网关连接到你的家庭网络路由器/调制解调器上。然后将OVAL传感器去除,并放在离网关近些的位置。轻拍两次,它将自动连接你的系统。使用OVAL app或者一个网络浏览器,敲入网关背面印有的访问代码,你讲访问你的OVAL家庭网络;然后就可以设置你的传感器了。世界的任何角落都可以。就这样。 使用OVAL我需要一个智能手机吗 ? 不,智能手机对于OVAL不是必须的。你也可以通过任何网页浏览器来方位OVAL系统。除了在有报警时推送一个通知意外,OVAL也可以给任何电话发送一个短信。这包括非智能手机和普通的CDMA/GSM 手机。另外,OVAL可以通过邮箱通知你它的状态,或许甚至可以呼叫你的固话或者移动手机。 使用范围是? OVAL的使用范围高达1500平方英尺,这取决于你安置的环境。用任意无线设备,范围都取决于环境,包括你传感器与网关的距离。理论上讲,在实现无干扰的最佳天气下,OVAL可以覆盖1英尺半径的最大功率。 电池能持续多久? OVAL传感器电池在深度睡眠模式下,最久能续航10年。传感器可以设定为间隔2s-1个月的间隔唤醒(为了定位并接收更新数据)。每次传感器唤醒与网关通讯都要消耗电能。电池使用靠传感器功能的启用,例如运动,温度或者光度。当启用时,这些内部传感器就消耗一定量的电能。一个新的,廉价的,可替换的纽扣电池,OVAL传感器可与OVAL网关通讯超过100万次,直至电池耗尽。 怎样更换电池? 简单且快速。拿掉传感器后盖,更换电池。OVAL使用的是标准的硬币芯锂电池,在很多零售商店都能买到。 如果我们没有被通知打断,可以轻松停用OVAL吗? 是的,你可以用智能手机或者轻拍的特性来让报警通知禁用,或者完全禁用传感器。 OVAL可以在室外工作吗? OVAL传感器通过网关连入网络进行通讯。如果你想要在室外使用传感器,你可以使用OVAL移动网关(未来计划产品)或者其他存在的OVAL网络来访问你的OVAL传感器。 *更多FAQ和完整的技术参数可以在www.meetoval.com找到。 最后的感谢! 我们邀请你成为这个amazing商机的一部分,并加入OVAL家庭。 查看更多OVAL最新信息: www.meetoval.com 请支持我们的社交媒体! Facebook Twitter 如果你喜欢在这看到的东西,请帮我们扩散! 再次感谢!   点击:原文链接 翻译:Katrina
Read More

基于语音识别的微博签到系统

博客
语音识别与签到系统 近年来,语音识别在语音导航,室内设备控制,人际对话等方面得到了广泛的应用。 我们在今年第1期杂志《为设备添加社交网络功能》中,实现了W5500EVB自己发微博功能。试想如果我们把语音识别与微博签到结合起来,我们上班时,报上姓名,经识别后,摄像头为我们拍张照片,传到新浪微博,这样既能得到我们签到的时间,又能保证是本人签到,可靠高效,同时朋友通过微博能了解到我们上班时的状态,这样是不是很有意思呢? 今天要介绍的就是上面提到的,基于语音识别的微博签到系统,我们用摄像头ov2640拍照,LD3320做语音识别,然后W5500EVB把我们想说的话,以及照片发送到新浪微博。   基于语音识别的微博签到系统设计 (1)   开发板基本情况 a)  单片机:STM32F103RCT6,256K字节Flash,48K字节SRAM,2K字节EEPROM b)  以太网控制器:W5500,SPI接口与单片机相连 c)  电源:USB供电 (2)   开发工具: IARfor ARM v5.41,这是我们工程所使用的版本。如果使用不同版本的IAR,请对STM的库稍作调整。 (3)   语音识别:LD3320语音识别模块。 (4)   图像生成:OV2640摄像头。 (5)   其他 a)   新浪微博用户名和密码;如若没有,就赶快给你的设备申请一个吧! b)   一根Mini接口的USB线,如图1所示。 c)   一根网线。 d)   STM32芯片的串口程序烧录工具,STM官方提供的程序名为:Flash Loader Demo。 图1是系统实物图。 图1系统实物图 首先,我们了解一下整个程序流程,流程图由一个主流程图(见图2)和四个子流程图(图3,图4,图5,图6)组成。在STM32及ov2640初始化完成之后,将进行网络参数配置,根据自己网络的情况配置W5500的IP地址等网络参数,确保W5500能连接外网。然后配置LD3320语音模块,语音模块处于初始状态,将进行写入识别列表,启动语音识别过程,当我们对着麦克风说话的时候,LD3320检测到有语音输入,LD3320将进入中断,在中断中将把我们说的内容与寄存器里的词条比较,如果找到1-4个候选答案,返回“找到识别结果”状态,如果没有找到候选答案,返回“未找到识别结果”状态。在下一次循环中,LD3320如果是“找到识别结果”状态,将拍摄照片及发送微博,如果是“未找到识别结果”状态,将进入初始状态,如果是“正在识别”或者“识别错误”将重新检查LD3320的状态。各个子流程图描述的比较详尽,这里不再一一赘述。对于拍摄照片子流程图,我们需要了解jpg图片的数据格式,图片的前两个字节是0xff,0xd8,最后两个字节是0xff,0xd9,在中断程序接收图片数据的过程中,首先判断数据是不是前两个字节,如果是,保存数据,后面的数据是先保存,然后判断是不是数据结尾,直到接收成功。   图2 系统主流程图   图3写入识别列表函数流程图                        图4启动语音识别模式流程图     图5 拍摄照片流程图   图6发送微博流程图 以上四个子流程图,已清晰地给大家展示语音识别微博签到系统的整个工作流程,那么接下来就为大家揭开详细的制作过程。 LD3320介绍 1 通过快速而稳定的优化算法,完成非特定人语音识别,识别准确率95%。 2 不需要外接任何辅助的Flash芯片,RAM芯片和AD芯片,就可以完成语音识别功能。 3 每次识别最多可以设置50项候选识别句,每个识别句可以是单字,词组或短句,长度为不超过10个汉字或者79个字节的拼音串。识别句内容还可以动态编辑修改。 4 芯片内部已经准备了16位A/D转换器、16位D/A转换器和功放电路,麦克风、立体声耳机和单声道喇叭可以很方便地和芯片管脚连接。 5 支持并行和串行接口,串行方式可以简化与其他模块的连接。 在本系统中采用的LD3320模块如图7,LD3320芯片外部已经连接了麦克风,耳机接口,基本电路,只引出了我们需要的引脚。本系统采用串行方式,串行接口通过SPI协议和外部主CPU连接,首先要将MD接高电平,将SPIS接地,选定LD3320工作在串行模式,此时使用的管脚有:片选(SCS*)、SPI时钟(SDCK)、SPI输入(SDI)和SPI输出(SDO),中断引脚(INT),复位引脚(RST),时钟引脚(CLK),通过SPI接口,配置LD3320的工作模式,读取识别结果,图8,图9为SPI读写时序。当LD3320识别到有语音输入,INT引脚将产生中断,在中断处理函数中,读取识别结果,改变LD3320状态。 图7LD3320语音模块 图8  SPI方式读时序 图9 SPI方式写时序 在本系统中,OV2640输出JPEG压缩图像格式。MCU与OV2640的通信采用串行与并行结合,OV2640带有SCCB(Serial Camera Control Bus)双线串行接口,MCU通过SCCB接口配置和读取OV2640的信息;MCU通过并行总线的方式来接收OV2640的图像数据。Y(2..9)为8位MSB(MostSignificant Bit,最高有效位模式)并行总线,SDIO、SCLK为SCCB接口,PCLK为像素时钟输出管脚(每个周期从并行总线上输出一个像素),VSYNC为列同步输出管脚(每帧图像发生一次跳变),HERF为行参考输出管脚(每个周期总线从并行总线上输出一行图像数据)。系统的硬件电路连接简图如图10。 图10系统硬件电路连接简图 系统上电后,MCU配置OV2640的工作方式,初始化LD3320,然后检查LD3320的状态,当LD3320的状态是“找到识别结果”,开启OV2640中断,在OV2640准备好图像后,VSYNC会被拉高一段时间,MCU通过PCLK上升沿中断按字节接收图像数据,接收数据完成,关闭OV2640中断。然后向新浪微博发送已经写进程序里的自己想说的话和接收到的图片。接下来将对主要的程序块做介绍。   程序介绍 在《为你的设备添加社交网络功能》中,已经详细介绍了OV2640的初始化配置程序,本篇文章就不再赘述,图像数据缓存程序与本文稍有不同,这里简单介绍图像数据缓存程序。本文对LD3320的写入词条列表,启动语音识别,中断处理程序,发送微博程序做主要介绍。 图像数据缓存程序(摘至stm32f10x_it.c): void EXTI0_IRQHandler(void) { u8 temp; EXTI_ClearITPendingBit(EXTI_Line0);     //清除EXTI0线路挂起位  if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1)==0)return;//HREF管脚为低  temp=(u8)((GPIOC->IDR)>>8 & 0x00ff);    //读取一个字节图像数据 switch(jpg_flag)  { case 0:       if(temp==0xff)                      //图像数据以0xff 0xd8开头       { JPEGBuffer[0]=0xff; jpg_flag=1;       } break; case 1: if(temp==0xd8)       { JPEGBuffer[1]=0xd8; jpg_flag=2; JPEGCnt=2;       } else if(temp!=0xff) jpg_flag=0; break;…
Read More