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