WIZnet-io6Library如何使用

WIZnet-io6Library如何使用

Uncategorized, W6100, WIZnet 产品应用小例全系列, 博客, 应用, 物联网
概观 io6Library是一个IPv6集成库,可以轻松集成和管理使用WIZnet硬连线双TCP / IP堆栈控制器(WIZCHIP)产品系列的用户应用程序。 io6Library用于管理依赖于用户特定MCU的代码,因此用户无需根据用户MCU执行io6Library的移植操作。(有关更多信息,请参见如何使用) 内容 io6Library可分为以下三种类型。   Reigsters Defintion 通用寄存器:定义通用寄存器,如网络信息,模式,中断等。 套接字寄存器:定义SOCKET寄存器,如套接字模式,套接字通信,套接字中断等。 每个WIZCHIP I / O访问功能 基本I / O功能:通过WIZCHIP定义的HOST接口(SPI,BUS等)访问输入/输出的基本单元功能 公共寄存器访问功能:基于基本I / O功能访问公共寄存器的功能 SOCKET寄存器访问功能:基于基本I / O功能访问SOCKET寄存器的功能 WIZCHIP控制API,用于用户应用程序集成,管理和迁移 SOCKET API:与BSD SOCKET API一样,SOCKET API提供可以与socket socket commuuincation相关的函数集 额外的API:它提供支持用户应用程序集成的功能,无论WIZCHIP特定的Regiter / Memory,Address Map,Features等等。:对于User Application的小占用空间,可以使用WIZCHIP I / O Access功能替换它。       有关更多详细信息,请参阅io6Library.chm。 io6Library.chm可能不是最新的,所以请参考doxygen程序程序使用Doxyfile.dox项目制作的文档。如果您愿意,Doxygen程序可以将文档设置为chm,html或pdf。 目录 以太网络 WIZCHIP特定目录(EX> W6100 - w6100.h,c) SOCKET API:h,socket.c ioLibrary配置文件:wizchip_conf.h,wizchip_conf.c 互联网 用于IP配置的Protcols(EX> DHCP,DNS) 将添加一些协议 应用 应用程序套接字模式定义:Application.h Loopback:TCP,UDP Basic Skeleton Code,loopback.h,loopback.c io6Library用户可以通过在wizchip_conf.h中仅修改一些定义来立即使用它。有关更多信息,请参见如何使用。 如何使用 io6Library配置 定义wizchip_conf.h中定义的WIZCHIP的类型和接口,以满足您的预期用途。 选择要使用的硬连线双TCP / IP堆栈控制器。在下图中,选择蓝色框中的列表之一,并将其​​选定为_WIZCHIP_,如红框。 选择用户将用于WIZCHIP Access的主机接口(并行总线,串行总线模式等)。在下图中,选择蓝色框中的列表之一,并将其​​选定为_WIZCHIP_IO_MODE_,如红框。 仅当使用并行总线模式时,必须将HOST的存储区基地址设置为WIZCHIPCHIP,如红色框。                WIZCHIP PHY访问模式配置如下图所示,选择蓝色框中定义的以太网PHY访问模式的两种方法之一,并将其​​定义为红色框。 _PHY_IO_MODE_PHYCR_:它通过PHY命令和状态寄存器提供对WIZCHIP的以太网PHY的简单控制,如PHY操作模式和链路状态。 _PHY__IO_MODE_MII_:通过MDC / MDIO信号直接控制WIZCHIP PHY的以太网PHY寄存器。 为WIZCHIP I / O访问创建用户定义的功能 根据您的HOST界面自行创建基本的Access I / O功能。这是因为每个用户HOST的接口控制方法不同。所以,你应该成功。 例如,如果您使用STM32FXXX的SPI1定义以下内容并控制WIZCHIP   #定义 _WIZCHIP_IO_MODE_        _WIZCHIP_IO_MODE_SPI_VDM_   通过SPI接口创建基本单元功能,如WIZCHIP选择/取消选择,1字节读/写,临界区进入/退出等,如下所示。 通过SPI接口进行基本I / O访问功能,如WIZCHIP选择/取消选择,1字节读/写和临界区进入/退出,如下所示。 WIZCHIP选择/取消选择:用于设置/复位与WIZCHIP的CSn引脚相连的STM32FXXX的任何GPIO的功能 01 void your_wizchip_enable(void) 02 { 03 / * void HAL_GPIO_WritePin(GPIO_TypeDef * GPIOx,uint16_t GPIO_Pin,GPIO_PinState PinState)* / 04 HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_RESET) 05 } 06 07…
Read More

如何将固件写入W7500

Uncategorized, WIZnet 产品应用小例全系列, WIZnet产品, 博客, 应用, 物联网
将固件写入WIZwiki-W7500有四种方法。 使用CMSIS-DAP(拖放) 使用CMSIS-DAP(通过Keil uVision5) 转到ISP工具手册和程序下载 使用SWD调试器 二进制示例: 硬件测试和环回二进制(WIZwiki-W7500默认二进制):下载 LED Blink binary:下载 串行输出二进制:下载 使用CMSIS-DAP(拖放) 1.将USB电缆连接到WIZwiki-W7500时,PC被识别为可移动磁盘。可移动磁盘名称为MBED。 2.您“拖放”或将固件复制到可移动磁盘,固件写入进度已完成。 3.完成固件写入后,打开以检查可移动磁盘。 4.如果可移动磁盘中存在“fail.txt”文件,则表示写入固件失败。 5.按下WIZwiki- W7500的重置按钮(SW1)后,请重复步骤2中的步骤。 使用CMSIS-DAP调试器 CMSIS-DAP也支持USB电缆和调试器。您需要设置Flash算法以在Keil中使用CMSIS-DAP调试器。 To Follow 点击顶部菜单中的“Flash”,然后打开“配置Flash工具”。选择“CMSIS-DAP Debugger”,在顶层菜单上设置“Debug”。 单击“实用程序”,然后选择“CMSIS-DAP调试程序”。打开“设置”菜单并取消选中“调试”菜单中的“SWJ”。然后确认在SW设备上设置的“ARM CoreSight SW-DP”。 在Debug菜单栏旁边,单击'Flash Download'并在下载功能中设置'Erase Full Chip',在RAM中设置'0x20000000到0x4000'用于算法,在编程算法上添加'W7500_128KB_FLASH'。用下图检查后,单击“确定”。 将固件下载到WIZwiki-W7500。您可以在底部检查完整消息和CMSIS-DAP调试器。点击“调试图标”或按Ctrl + F5进行调试。 参考 设置Flash算法 使用ISP W7500 ISP计划 转到ISP工具手册和程序下载 当W7500处于启动模式时,可以通过ISP进行固件写入,因为WIZwiki-W7500内置了ISP标头。由于ISP标头支持UART信号,因此您需要一个转换器,如TTL到RS232或TTL到USB,以便连接到您的PC。 请参考下面的框图设置。 To Follow 1.运行“W7500_ISP(20xxxxxx).exe”。 2. 要使WIZwiki-W7500进入启动模式,请在按下SW2,BOOT开关的同时供电一次。 3.从“串行端口”中选择连接到ISP标头的设备,然后单击“打开”。如果您成功进入引导模式,则会在窗口底部的状态栏上打印“Serial Open Complete”消息。 在点击ISP工具的打开按钮之前,我们建议您在其他终端窗口中进行测试。 使用终端窗口打开串口后,输入大写“U”。如果它处于ISP模式,您可以看到返回的字符。 4.单击“浏览”以选择二进制文件。 5.单击“ISP Start”按钮,然后执行固件写入。 6.固件写入完成后,将弹出如下窗口。 如何将外部SWD调试器连接到WIZwiki-W7500 此页面显示如何使用外部SWD调试器在WIZwiki-W7500中编写和调试固件。当您需要调试固件时,您有两种方法。一种是使用外部SWD调试器进行调试,另一种是使用CMSIS-DAP调试器。在此页面中,仅发布如何使用SWD调试器调试固件。 使用SWD调试器 您可以在WIZwiki-W7500和Debugger Sel Jumper中间找到SWD Header,上面有三个上限。 然后在Debugger Sel Jumper中打开J3,J4,J5跳线帽。 现在,您的WIZwiki-W7500已准备好连接SWD调试器。 连接ULINK调试器和SWD标头。此时,请注意匹配引脚号。 在Keil中设置Flash算法和ULINK调试器并 在WIZwiki-W7500上下载。然后,您可以检查成功消息。 参考 如何设置Flash算法 文章来源:http://wizwiki.net/wiki/doku.php?id=products:wizwiki_w7500:start_getting_started:write_firmware
Read More

如何调试WIZwiki-W7500

Uncategorized, WIZnet 产品应用小例全系列, WIZnet产品, 博客, 应用, 物联网
在WIZwiki-W7500上,有SWD Header和CMSIS-DAP来调试WIZwiki-W7500。首先,您需要设置Flash算法以使用调试。此页面显示如何设置Flash算法以及如何使用ULINK Debugger和CMSIS-DAP Debugger。 设置Flash算法 下载 W7500 128KB Flash项目:下载 W7500 128KB Flash文件:下载 To Follow 下载附件并解压缩。然后你可以找到一个文件夹和一个文件。在“W7500_flash_algo_mdk”文件夹中,打开项目并“构建”。 构建后,您可以检查项目文件夹中生成的文件。返回'W7500_128_Flash'文件夹并将'W7500_128_FLM'闪存算法文件复制到Keil的Flash文件夹中。 C:\ Keil_v5 \ ARM \闪光  使用ULINK调试器 要使用ULINK Debugger,您应该通常使用cap来解除SWD Debugger Sel Jumper的断开连接。不要忘记连接USB电缆为电路板供电。 To Follow 您可以在WIZwiki-W7500和Debugger Sel Jumper中间找到SWD Header,上面有三个上限。 然后在Debugger Sel Jumper中打开J3,J4,J5跳线帽。 现在,您的WIZwiki-W7500已准备好连接SWD调试器。 连接ULINK调试器和SWD标头。此时,请注意匹配引脚号。 点击顶部菜单中的“Flash”,然后打开“配置Flash工具”。选择“ULINK2 / ME Cortex Debugger”,在顶层菜单上设置“Debug”。 单击下一个Debug的'Utilities',然后选择'CMSIS-DAP Debugger'。打开“设置”菜单,在顶部菜单的“调试”中取消选中“SWJ”。然后确认在SW设备上设置的“ARM CoreSight SW-DP”。 点击“Flash下载”。在下载功能中设置'擦除全芯片',在RAM中输入'0x20000000到0x4000'用于算法,并在编程算法上添加'W7500_128KB_FLASH'。与下图比较后,单击“确定”。 将固件下载到WIZwiki-W7500。您可以在底部查看完整消息和ULINK Debugger。点击“调试图标”或按Ctrl + F5进行调试。 使用CMSIS-DAP调试器 CMSIS-DAP也支持USB电缆和调试器。您需要设置Flash算法以在Keil中使用CMSIS-DAP调试器。 To Follow 点击顶部菜单中的“Flash”,然后打开“配置Flash工具”。选择“CMSIS-DAP Debugger”,在顶层菜单上设置“Debug”。 单击“实用程序”,然后选择“CMSIS-DAP调试程序”。打开“设置”菜单并取消选中“调试”菜单中的“SWJ”。然后确认在SW设备上设置的“ARM CoreSight SW-DP”。 在Debug菜单栏旁边,单击'Flash Download'并在下载功能中设置'Erase Full Chip',在RAM中设置'0x20000000到0x4000'用于算法,在编程算法上添加'W7500_128KB_FLASH'。用下图检查后,单击“确定”。 将固件下载到WIZwiki-W7500。您可以在底部检查完整消息和CMSIS-DAP调试器。点击“调试图标”或按Ctrl + F5进行调试。 下载多个项目时 对于使用W7500芯片的WIZ750SR代码,分别存在Boot和App项目。因此,在遵循先前的解释时存在问题。无论您使用哪种调试器,您只需要注意以下设置。 To Follow 对于一般配置,请按照前面的说明进 点击顶部菜单中的“Flash”,然后打开“配置Flash工具”。 点击点击菜单中的“实用工具”。 并选择“您的调试器”。 打开旁边的“设置”菜单,然后点击点按菜单中的“Flash下载”。 仅在下载功能中设置“擦除扇区”,“程序”,“验证”。 在编程算法中单击W7500 128KB FLASH并填入[开始] [大小]框。您可以从目标信息中获取[开始]地址和[大小],如下图所示。如果输入正确,请单击“确定”。 其余步骤可以遵循先前的描述。 如何切换应用程序和启动以进行调试 您只需要重置您想要的设备和调试! 文章来源:http://wizwiki.net/wiki/doku.php?id=products:wizwiki_w7500:start_getting_started:debugging_w7500#set_flash_algorithm
Read More

如何使用Keil为W7500创建新工程

Uncategorized, WIZnet 产品应用小例全系列, WIZnet产品, 博客, 应用, 物联网
介绍 本应用笔记是为W7500 MCU制作KEIL项目的教程。本文档将逐步介绍如何为W7500制作项目和bin文件,以便您轻松跟进。 步骤1.下载并安装KEIL5! 下载MDK-ARM v5:https://www.keil.com/download/product/ 安装说明,请参阅链接:http://wizwiki.net/wiki/doku.php?id=products:w7500:documents:appnote:install_uvision 步骤2.下载W7500库 您可以从WIZnet的Github存储库下载W7500库:https://github.com/Wiznet/W7500 步骤3.制作工作空间!并将W7500库移动到工作区! 在此示例中,它是D:\ workspace \ project \ Library 步骤4.执行KEIL5并制作新项目 点击 New uVision Project.... 选择项目保存文件夹,然后选择项目名称。在此示例中,D:\ workspace \ project \ W7500_test \ W7500_Test.uvproj 步骤5. W7500启动代码和系统代码设置 回到项目。您需要制作与右侧显示的图像相同的文件夹 根据以上图片顺序配置; 并以同样的方式... CMSIS文件夹包括D:\ workspace \ project \ Libraries \ CMSIS \ Device \ WIZnet \ W7500 \ Source \ system_W7500.c文件 W7500_Periphs文件夹包含要使用的外围设备。 而User文件夹必须包含main.c等。 我们来做main.c 单击Add New Item to the Group。 选择C文件并使用“main”命名,然后单击“Add”。 包括w7500x.h标题但是......你应该显示红色X,因为你没有路径。 步骤6.设置包含路径 点击 Options for Target... 在C \ C ++中选择“Include Paths”,然后单击文件夹图标并单击以"..."图标; 设置包含路径: D:\workspace\project\Libraries\CMSIS\Device\WIZnet\W7500\Include D:\workspace\project\Libraries\W7500x_stdPeriph_Driver\inc D:\workspace\project\Libraries\CMSIS\Include 步骤7.内存设置 点击 "Options for Target..." 单击“Target”点击并使用上图中显示的值进行设置 然后单击“Linker”点击并选中【Use Memory Layout from Target Dialog】 步骤8.选择要使用的外围设备 点击 "Options for Target..." 单击“C / C ++”点击并在“Define”字段中添加CORTEX_M0 USE_STDPERIPH_DRIVER。 步骤9.设置用户程序以使用创建的bin文件 点击"Options for Target..." 单击“User”点击并选中“Run User Programs After Build/Rebuild”部分中的“Run #1 ”并按顺序编写此命令[fromelf --bin -o“[email protected]”“#L”] DAP使用bin文件。 步骤10.编译示例 让我们在D:\ workspace \ project \ Projects \ Peripheral_Examples \ GPIO \ Blink_LED中编译示例代码。这个折叠包括main.c, W7500x_conf.h,W7500x_it.c和W7500x_it.h,你应该将这四个文件复制到D:\ workspace \ project \ W7500_Test(我的项目文件夹) 并将W7500x_gpio.c复制到W7500_Periphs文件夹中以使用gpio外设…
Read More
WIZnet可控机器人手臂

WIZnet可控机器人手臂

Uncategorized, WIZnet 产品应用小例全系列, 应用, 物联网
使用以太网远程控制机器人手臂       硬件: Arduino UNO和Genuino UNO WIZnet WIZ750SR-TTL-EVB套件 通用机器人手臂 项目简介: 如果您想与串行设备通信,那么可能最大电缆长度是主要障碍。标准波特率的最大电缆长度可以是50英尺。您可以通过牺牲数据速率来进一步增加电缆长度。而且现在大多数PC都没有串口。以太网到串行转换器可能是上述问题的理想解决方案。您可以通过以太网端口高速传输数据到串行设备。电缆长度可达100米或更长。 在这个项目中,我使用WIZnet的串行到以太网(S2E)设备(WIZ750SR)来控制3D打印的机械臂。这是一个概念项目,手臂的容量非常有限。我使用开源处理环境开发了一个Windows应用程序,用于从我的台式PC控制手臂。 首先,我使用WIZnet的S2E配置工具配置WIZnet设备,如下所示(注意IP地址和端口号)。WIZnet设备配置为TCP服务器。串行通信的波特率应为115200(忽略图像上的速率)。 然后我将3.3V USB FTDI转换器连接到WIZ750SR以检查串行通信。我用PuTTY来测试通信。 我打开两个PuTTY窗口,一个作为Telnet客户端,另一个作为串行客户端。 串行通信检查成功后,通过TX和RX引脚将Arduino板连接到WIZ750SR。 为了将WIZ750SR与Arduino板连接,可以安全地使用电平转换器,因为WIZ750SR工作在3.3V,Arduino工作在5V。在这里,我连接了WIZ750SR和Arduino板之间的电平转换器。电平转换器的高压侧必须与Arduino连接,并且电平转换器的低压侧必须与WIZ750SR连接。 我用Arduino NANO和Arduino UNO测试了WIZ750SR器件。 为了通过以太网从我的PC控制机器人手臂,我使用Processing开发了一个桌面应用程序。处理是使用虚拟COM端口向Arduino发送数据。 虚拟COM端口或虚拟串行端口是传统软件应用程序期望连接到串行设备端口(COM端口)但由于物理上缺少可用串行端口而无法连接时的理想解决方案。相反,我们重新配置计算机以通过局域网或Internet发送串行端口数据,就像通过真正的串行端口一样。当遗留应用程序将数据发送到串行COM端口时,它实际上是通过TCP / IP网络传输的,然后从网络传输到您的遗留应用程序 - 并且是presto! - 我们有一个虚拟串口或虚拟COM端口。 要了解有关虚拟COM端口的详细信息(它们如何工作以及如何配置),请查看链接:https://www.netburner.com/learn/how-to-create-a-virtual-serial-port/ 要为PC设置虚拟COM端口,您将需要第三方工具。您可以将WIZ VSP用于此目的。我使用了NetBurner的另一个工具。我从这里下载了NetBurner虚拟COM端口工具,并按如下方式配置它: 在将虚拟COM端口配置为COM20之后,我开发了一个Processing程序,使用WIZ750SR以图形方式与Arduino机械臂进行交互。要运行处理代码,您需要为Processing添加ControlP5 GUI库。从这里下载库: http ://www.sojamo.de/libraries/controlP5/ 请注意COM端口号,它必须是您使用NetBurner创c建的虚拟COM端口号。 Processing程序的图形输出如下: 从五个滑块我可以非常平稳地控制机器人手臂的五个伺服电机的旋转。 应用程序的完整源代码附加到代码部分。 下图显示了PC,WIZ750SR和Arduino之间的连接。 这款微型机器人手臂采用3D打印,设计文件可在Thingiverse中使用。我用五个伺服电机来控制手臂。伺服电机连接到Arduino数字引脚。 使用以太网可以远距离控制手臂。无需在PC中安装串口。 文章来源:https://create.arduino.cc/projecthub/taifur/wiznet-controlled-robotic-arm-871744?ref=search&ref_id=wiznet&offset=1
Read More

基于STM32和W5500实现AirPlay音频播放

博客, 物联网
※已刊登在“无线电”1月刊上  基于STM32和W5500实现AirPlay音频播放 作者:常席正,魏文龙   AirPlay是苹果公司推出的一套无线音视频解决方案,我们手里的iPhone、iPad甚至是Apple Watch等设备还有电脑上的iTunes都支持AirPlay。使用AirPlay可以方便的使移动设备的音频流,视频流可以投射到音箱和显示设备上,而无需蓝牙设备的配对过程。但是支持AirPlay功能的音响设备普遍都比较昂贵,而且家里的3.5毫米的插口的老音箱也没有利用起来,本着“喜新不厌旧,改造旧物发挥余热”的精神,我开始了新一轮的折腾。 我的想法是用嵌入式方案STM32+W5500的方式实现AirPlay协议,并使用I2S接口接PCM5102A音频模块来实现音频播放。于是马上上网查资料,发现成熟的方案还不太多,现有的方案都是在linux或者windows上运行的,精挑细选之后选择了https://github.com/juhovh/shAirPlay这个AirPlay开源项目作为参考,主要是该代码是用C语言实现移植到stm32比较方便。 在开始之前我们有必要先了解一下AirPlay, AirPlay是苹果公司收购airtunes后,在airtunes协议的基础上增加了视频,照片的传输,从而变为完整的AirPlay协议。AirPlay可以将iPhone 、iPad、iPod touch 等iOS 设备上的包括图片、音频、视频及镜像传输到支持AirPlay协议的设备中播放,实现随时随地的无线流媒体传输。在我们的这个项目中,我们只需要实现AirPlay协议中的音频流部分。AirPlay的实现过程中包含多个子协议,其中有的协议是完全标准的,有一部分协议苹果公司进行了一些修改,有的则是完全私有的。 Multicast DNS:用于发布服务,启动后,在iOS的控制中心菜单中就能看到支持AirPlay的设备列表; HTTP / RTSP / RTP:用于流媒体服务,传输音视频数据,进行播放控制等; NTP:网络时间协议,用于时间同步; FAirPlay DRM加密协议:用于进行数据加密,这个是完全私有的加密协议。 开始工作前我们需要进行一些前期准备,如下图: 图1 硬件框图及接线 iPhone用来播放音乐,并通过Airplay协议发送音频流。W5500EVB是WIZnet的W5500开发板,其中的W5500除了包含以太网的MAC和PHY外,还内置了硬件的TCP/IP协议栈,是目前比较常用的以太网方案。我们使用W5500EVB作为服务器接收并解码音频数据,开发板的操作可以参考http://www.w5500.com中的例程。PCM5102A音频模块可以将解码后的音频数据进行播放。经过分析后我们要实现AirPlay音频播放主要是实现以下三个方面: iPhone在网络中发现Airplay设备(W5500EVB)并建立连接; W5500EVB接收并解码音频数据; W5500EVB通过I2S接口将音频传送到PCM5102A音频模块; 接下来我们将分别实现这三个步骤: 1、发现Airplay设备并建立连接 AirPlay发现设备是基于mDNS协议(Multicast DNS)实现,iPhone与W5500EVB需要连入同一网络且W5500EVB要加入组播组224.0.0.251:5353才可以接收mDNS报文。W5500EVB收到iPhone发出的Querry查询报文后回复Response报文,报文的内容可以参考文档《Unofficial AirPlay Protocol Specification》(http://nto.github.io/AirPlay.html),下方为mDNS设备发现和设备注册代码: 1 uint8 mdns_query(uint8 s, uint8 * name,uint8* rname) 2 { 3     uint8 ip[4]; 4     uint16 len, port; 5     switch (getSn_SR(s)) { 6     case SOCK_CLOSED:/*打开SOCKET并加入组播组224.0.0.251*/ 7         setDIPR(s,DIP);/* 设置目标IP 224.0.0.251*/ 8         setDHAR(s,DHAR);/*设置目标MAC 01:00:5e:00:00:FB */ 9         setDPORT(s,DPORT);/*设置目标端口5353*/ 10         socket(s, Sn_MR_UDP, 5353,Sn_MR_MULTI);/*打开SOCKET并加入组播组*/ 11         break; 12     case SOCK_UDP: 13         if ((len = getSn_RX_RSR(s)) > 0) { 14             if (len > MAX_DNS_BUF_SIZE) { 15                 len = MAX_DNS_BUF_SIZE; 16             } 17             len = recvfrom(s, BUFPUB, len, ip, &port); 18             /*检查收到报文的flag确定报文是否为查询报文*/ 19             if ((BUFPUB[2]&0x80)==0) { 20                 len = mdns_makeresponse(0,name,rname,BUFPUB,MAX_DNS_BUF_SIZE); 21                 sendto(s, BUFPUB, len, DIP,DPORT); 22             } 23         } 24         break; 25…
Read More

轻松实现Lua脚本控制W5500

Uncategorized, 博客, 应用, 物联网
※已刊登在“无线电”12月刊上轻松实现Lua脚本控制W5500 作者:孔东明,张博 1、引言 Lua是巴西里约热内卢天主教大学里的一个研究小组于1993年基于标准C开发的一个轻量级的嵌入式脚本语言,其设计目的是为了将传统嵌入式程序“编写→编译→链接→运行”的复杂过程简化为“编写→运行”两个环节,从而为嵌入应用程序提供灵活的扩展和定制功能。 Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。一个完整的Lua解释器不过200K,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。 2、项目背景 随着物联网的快速发展,传统的工控、电力、银行机、闸机甚至家电等设备也纷纷加入了连接互联网大军。工厂的车床需要把运行数据实时上传至PLC,水表、电表、燃气表实现了远程抄录,点验钞机可以实时将RMB的冠字号上传至银行数据库,停车场无人值守,家里的窗帘用某猫精灵很方便的进行语音控制…… 小编在一家做网络通信设备的公司上班,领导要求基于现有的串口转以太网模块开发出一款支持用户使用Lua语言进行二次开发的串口转以太网模块,项目工期1个月。小编刚刚毕业4个月,没有多少项目经验,只是在学校玩过ARM M3的开发板,C语言自我感觉勉强及格,以太网技术基本小白一枚,对如何实现用户使用Lua语言“二次开发”更是一窍不通。但是任务时间紧迫,再难也要搞定,要不然没有奖金就要勒紧裤腰带了。 接到项目当晚就去找度娘商讨对策。经过一番搜索,方才大致了解了什么是Lua,什么是脚本语言,为什么客户要二次开发。用户在使用串口转以太网模块时,由于应用场景的不同及嵌入式产品资源的限制,需要灵活的调用模块的各项功能去实现差异化应用,而传统的模块只能实现既定的功能,因此支持二次开发的产品应用范围将大为拓展。而用户二次开发输入的代码肯定是无法执行传统的“编写→编译→链接→运行”这整个过程,脚本语言将这个过程简化为“编写→运行”就可以完美的解决了这个问题,Lua便是一款最佳的嵌入式脚本语言。 原理理顺了,如何落实便成了当务之急,我需要先做一个Demo来模拟整个过程。我找来了之前开发串口转以太网模块用到的以太网开发板W5500EVB,如下图。W5500EVB是由ST的STM32F103RC+W5500网络芯片构成,STM32F103内部256K的Flash足以容纳最大200K的Lua驱动。W5500是一颗以太网接口芯片,它用全硬件逻辑门电路搭建了一整套全硬件TCP/IP协议栈,发送数据时单片机只需将用户数据通过SPI发送至W5500,W5500内部会自动完成数据TCP/IP封包,并发送至网口,接收数据时W5500内部自动完成解包,仅将MCU关心的用户数据提交。W5500内含8路完全独立的硬件Socket,这意味着W5500可以同时运行8个上层应用程序,而且传输速率互不影响,不会像软件协议栈那样线程增加,速度明显降下来。W5500内部还集成了MAC和PHY,符合了接入以太网的所有条件,对于刚刚接触以太网的攻城狮来说,是一款简单易上手的网络接口芯片。 图 1 W5500EVB 我想象中的Demo是这样的:用户通过Web网页向W5500EVB提交一段能让W5500EVB连接到TCP服务器的Lua脚本代码,W5500EVB解析出来这段代码后通过已经运行的Lua虚拟机中的Lua接口函数来解释用户代码要实现的功能,最后 W5500EVB按照用户代码中的参数连接到一个指定的TCP服务器实现以太网数据通信。这个过程可以参考W5500官网提供的HTTP Server和TCP Client的例程。 图 2 实施方案原理图 3、准备工作 (1)安装编译环境:Keil V5.11 (2)硬件:W5500EVB、Jlink调试器 (3)驱动:Lua最新驱动V5.3.2 4、宿主C部分 4.1 加载驱动 驱动包括STM32F103RC的单片机驱动、W5500以太网部分驱动以及Lua驱动。STM32F103RC驱动不必多说,W5500驱动和Lua驱动如下图所示,均可以在对应官网下载到。                                           图 3 W5500驱动                                                                                    图 4 Lua驱动-V5.3.2 4.2 初始化部分 初始化部分包括STM32初始化及W5500初始化,Lua在用的时候才需要初始化。 01 /******* STM32初始化********/ 02 Systick_Init(72); 03 RCC_Configuration(); 04 GPIO_Configuration(); 05 Timer_Configuration(); 06 NVIC_Configuration(); 07 USART1_Init(); 08 at24c16_init(); 09 10 /******* W5500初始化********/ 11 printf("W5500 Config....\r\n"); 12 Reset_W5500();                  //重启W5500 13…
Read More

W5100S与其他产品差异对比

应用, 新闻, 物联网
W5100S ,W5500,W5100差异对比         型号 参数 W5500 W5100 W5100S  内部架构 全硬件TCP / IP协议栈+ MAC + PHY 全硬件TCP / IP协议栈+ MAC + PHY 全硬件TCP / IP协议栈+ MAC + PHY MCU交互接口 高速SPI SPI,并行总线 SPI,并行总线 SOCKET数 8 4 4 收发缓存 32KB 16KB 16KB MAX速率(Mbps)的 15 25 25 掉电模式 √ X √ 混合模式 Ø Ø Ø 工作温度 -40℃-85℃ -40℃-85℃ -40℃-85℃ 自动极性转换 X √ √ 内置的全硬件TCP \ IP协议 TCP,UDP,IPv4中,ARP,ICMP,IGMP版本/ V2,PPPOE WOL √ X √ 封装工艺 48LQFP 7×7(毫米) 80 LQFP 10×10(毫米) 48 LQFP 7×7(mm) 48 QFN 7×7(mm) W5100S相比于W5500各有千秋,两者都具有很高的性价比,具体对比详情如下。 内部架构:均为全硬件TCP / IP协议栈+ MAC + PHY MCU交互接口:W5100S支持并行总线+高速SPI接口/ W5500仅支持高速SPI接口 插座数:W5100S 4个独立插座/ W5500 8个独立插座 收发缓存:W5100S共16KB收发缓存/ W5500共32KB收发缓存 工作温度:均为工业级以太网芯片-40℃〜85℃ MAX速率:W5100S MAX 25Mbps / W5500 MAX 15Mbps 性能功耗:W5100S采取全新工艺,相比W5500功耗更低 极性转换:W5100S支持自动极性转换/ W5500不支持自动极性转换 封装工艺:W5100S 48引脚LQFP和QFN无铅封装/ W5500 48引脚LQFP无铅封装                       结论: W5100S在使用并行总线接口时,其性能比W5500更优秀。 在保证需求在4个插座之内时,W5100S的选择要优于W5500。 而在对速率要求不是特别高的情况下,且对插槽要求高于4个,建议选择W5500使用 W5100S的详细信息可参考以下链接:https ://www.iwiznet.cn/products/network-chip/w5100s/
Read More

WIZnet—W5100S震撼来袭

新闻, 物联网
概述: W5100S是一款高性能的单芯片网络接口芯片,内部集成全硬件的TCP / IP协议栈,以太网MAC和10BASE-T / 100BASE-TX以太网控制器。主要应用于高集成,高稳定,高性能和低成本的嵌入式系统中。 使用W5100S,用户MCU可以方便的处理IPv4的TCP,UDP,ICMP,IGMP,ARP,PPPOE等各种TCP / IP协议.W5100S分别拥有8KB的发送缓存和接收缓存,可以最大限度地减少MCU的开销。主机还可以同时使用W5100S的4个独立的硬件插座,并基于每个硬件套接字开发独立的互联网应用。 W5100S支持SPI接口和并行系统总线接口。它还提供低功耗/低热量设计,WOL(Wake On LAN),以太网PHY掉电模式等。 W5100S使基于W5100改进的低成本网络接口芯片。引脚封装,方便产品小型化。 引脚图: 结构图: 特点 支持全硬件TCP / IP协议: TCP,UDP,WOL,ICMP,IGMPv1 / v2,IPv4,ARP,PPPoE 支持4个独立的插座 支持SOCKET-less指令:        ARP-请求,PING-请求 支持以太网掉电模式和主时钟选通节能模式 支持基于UDP的网络唤醒(WOL)功能 支持SPI和并行总线接口 高速SPI接口(MODE 0/3) 系统总线接口(2位地址线和8位数据线) 内置共计16K字节的发送/接收缓存 集成10Base-T / 100Base-TX以太网PHY 支持以太网自动协商(全/半双工,10 Base-T / 100 Base-TX) 支持自动MDIX功能(只在以太网自动协商模式下支持) 不支持IP分片功能 工作电压:3V(I / O兼容5V信号电压) 网络指示灯(全/半双工,链接指示,10Mb / 100Mb指示,传输指示) 48管脚LQFP封装和QFN封装(无铅,7x7mm,0.5mm间距) 应用 W5100S可用于多种嵌入式应用产品,包括: -   原基于W5100开发的各种应用,无需更改固件 -   家用网络设备:机顶盒,PVRs,数字媒体适配器 -   串口转以太网:访问控制,LED显示器,无线AP等 -   并口转以太网:POS/金融打印机,复印机 -   USB转以太网:存储设备,网络打印机 -   GPIO转以太网:家用网络传感器 -   安防系统:DVRs,网络照相机,终端机 -   工业和楼宇自动化 -   医用检测设备 -   嵌入式服务器 -   物联网IOT应用及IOT云应用  
Read More

基于W5500实现的考勤系统

WIZnet 产品应用小例全系列, 博客, 物联网
概述 工具:W5500EVB,RC-522射频模块,蜂鸣器模块 编译环境:keil5 目的:通过W5500EVB讲读取到的IC卡信息上传到后台数据库,后台处理后实现浏览器端登录浏览用户打卡信息。 后台接收到相应的数据后开始处理数据并实现在浏览器端显示IC卡的ID以及绑定客户的用户名,打卡时间,签到状态等信息。该系统还添加有用户注册,登录,密码找回等功能。 过程 整个系统的实现主要分为以下两部分: 如图1所示,模块驱动及数据上传; 2,后台数据处理及前端显示; 整个系统的前端显示可通过浏览器注册,登录,添加和查询用户信息,密码找回,生产用户的Excel表格等。下面分别介绍两个部分的实现过程。   模块驱动及数据上传 该部分的实现相对简单,网上有很多关于RC-522的驱动代码,我就不在赘述了。这里主要说一下读取到卡的ID以后的操作。在这之前还要先讲一下单片机的网络连接方案。 网络连接方案有很多,例如传统的软件TCP / IP协议栈方案;较新的硬件的TCP / IP协议栈方案;软件协议栈代码量较大,对工程师来说工作量也相对较大硬件协议栈较为简单,只需要将要发送的数据交给网络芯片处理就行了。数据的发送和接收都有该芯片来实现。我们只需在应用层传输/读取数据就行了。 硬件协议栈的方案是由WIZnet的首次提出,并成功推出以太网芯片系列.W5500EVB就是采用以STM32RCT6为主控芯片加W5500以太网芯片的方案来实现网络接入的功能。 设备在读取到卡的ID以后将ID数据封装打包以后交给W5500,W5500将数据通过HTTP协议将数据发送给后台服务器并接收服务器返回的响应报文。成功发送和响应后蜂鸣器会发出50ms的响声来提示数据上传成功。如不成功则会发出100ms的响声来提示数据上传错误。数据上传的代码如下: 其中post_data_to_server()函数是将ID数据打包成HTTP报文的格式。Send函数是W5500的官方库函数用来执行数据的发送。getSn_RX_RSR()函数是读取SOCKET的接收缓存来判断是否有数据需要接收,这里是来接收HTTP服务器的响应报文。 以上就实现了IC卡数据读取和上传的功能,下面说一下后台服务器和前端实现的部分。   后台数据处理及前端显示  2、后台数据处理及前端显示 该系统的后台服务器的环境搭建采用的是 该系统的后台服务器的环境搭建采用的是Apache + php+ MySQL组合,该组合非常适合开发中小型的web应用,开发的速度比较快。本系统中在硬件设备将卡的ID数据上传到服务器以后,服务器接收并将数据与数据库中的数据进行对比,然后更新与此ID对应的用户信息。浏览器再向服务器发出请求报文,服务器将数据库中的数据发送给浏览器并显示。 根据上面说的在设备上传数据之前我们需要先将卡的ID插入到数据库中,而且还要在已登录的状态下插入、查看、删除数据。再加上权限设置,这样才算是一个相对较完整的系统设置。 首先我们在phpMyAdmin中新建自己的数据库,如图: 其中company是注册用户是所填写的用户信息; Record是用来存储用户所添加的员工打卡签到的信息; Register是用来存储用户添加的员工信息; Test是存储用户员工的签到状态; Time是存储签到时间; Uaccount是存储用户的账户信息; 以上字段是用来存储用户的各项数据和信息的,浏览器在向服务器请求数据的时候服务器会从这里将对应的数据取出交给浏览器并显示。 服务器部分的功能是由服务器脚本语言PHP来编写实现的。首先我们要写一个系统注册和登陆的页面,然后将注册信息存储在数据库,这样下次登陆就可以直接比对数据库来判断是否为有效用户。如图为注册登陆界面: 注册登陆成功以后就可进入签到信息列表界面,该界面用来显示用户所添加的员工信息的签到状态。因为刚注册所以我们要先添加员工信息。 如图点击用户管理中心进入员工信息界面: 在该界面我们可查看、添加、修改、删除员工信息以及添加上下班时间。在完善这些信息后浏览器将这些数据信息发送给服务器,服务器再将这些数据插入到数据库中。上图中的信息列表、员工列表都是在完善员工信息和签到信息以后服务器从数据库中拿出发送到浏览器显示的结果。 这些工作完成以后服务器就可以接受来自设备上传的卡ID数据并将改数据与数据库中的已记录数据进行对比进而执行相应的操作。 此外该系统还有密码找回、生产Excel报表、用户搜索等功能。关于密码找回在登陆界面点击忘记密码然后填写注册时的邮箱就可通过邮件来重新设置自己的登陆密码;如图: 关于生产报表点击了信息列表页面的生成报表就可以直接下载系统自动生成的员工信息列表;该过程是由服务器自动完成,服务器向数据库索要用户员工信息然后生成Excel表格;如图: 关于用户搜索是在浏览器部分输入用户员工姓名信息,浏览器将这些数据提交给服务器,服务器再将这些数据与数据库中的数据进行对比然后将该员工的信息以表格的形式显示在浏览器页面,如图: 以上就是关于后台处理数据及前端浏览器显示的全部过程,到此整个系统的后台处理就完成了,我们可以通过浏览器登陆查看相关数据信息。 关于考勤系统的总结: 该系统主要有注册,登陆,密码找回,添加员工信息,设置签到时间,查看/修改/删除员工信息,查看员工签到信息以及搜索的功能。在实现这些功能的开发过程中主要运用PHP服务器脚本语言和MySQL的数据库语言以及HTML浏览器脚本语言来完成数据在数据库和服务器以及浏览器之间的传输。在浏览器显示的代码中还添加了CSS代码来修改HTML标签的样式以增强浏览器端显示的可视性。
Read More