stm32f4例程如下
- /* Includes ------------------------------------------------------------------*/
- #include "main.h"
- #include "usart.h"
- #include "delay.h"
- #include "spi.h"
- #include "socket.h" // Just include one header for WIZCHIP
- #include "string.h"
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- #define SOCK_TCPS 0
- #define DATA_BUF_SIZE 2048
- /* Private macro -------------------------------------------------------------*/
- uint8_t gDATABUF[DATA_BUF_SIZE];
- uint8_t testDATABUF[52] = {0x78,0x75,0x6e,0x6a,0x69,0x00,0x34,0x84,0xef,0x40,0x82,0x01,0x76,0x0f,0x7d,0x04
- ,0x01,0x1c,0x63,0xc2,0xe0,0x00,0x84,0xff,0xbd,0x05,0x17,0x21,0x10,0x50,0x32,0x00
- ,0xfc,0x17,0x01,0x64,0x01,0x02,0x64,0x05,0x2b,0xc8,0xba,0x64,0x05,0x2b,0xcd,0xa8,0x4d,0xff,0xda,0xbf};
- // Default Network Configuration
- wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x08, 0xdc,0x11, 0x11, 0x11},
- .ip = {192, 168, 1, 07},
- .sn = {255,255,255,0},
- .gw = {192, 168, 0, 1},
- .dns = {8,8,8,8},
- .dhcp = NETINFO_STATIC };
- /* Private variables ---------------------------------------------------------*/
- /* Private function prototypes -----------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- void platform_init(void); // initialize the dependent host peripheral
- void network_init(void); // Initialize Network information and display it
- /****************************************************
- 函數名: main
- 形參: 無
- 返回值: 無
- 函數功能: 主函數
- ****************************************************/
- int main(void)
- {
- uint8_t tmp;
- uint16_t len=0;
- uint8_t memsize[2][8] = {{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
- uint8_t DstIP[4]={192,168,1,100};
- uint16_t DstPort=6000;
- //Host dependent peripheral initialized
- platform_init();
- // First of all, Should register SPI callback functions implemented by user for accessing WIZCHIP
- /* Critical section callback */
- reg_wizchip_cris_cbfunc(SPI_CrisEnter, SPI_CrisExit); //注冊臨界區函數
- /* Chip selection call back */
- #if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_
- reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);//注冊SPI片選信號函數
- #elif _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_
- reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect); // CS must be tried with LOW.
- #else
- #if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SIP_) != _WIZCHIP_IO_MODE_SIP_
- #error "Unknown _WIZCHIP_IO_MODE_"
- #else
- reg_wizchip_cs_cbfunc(wizchip_select, wizchip_deselect);
- #endif
- #endif
- /* SPI Read & Write callback function */
- reg_wizchip_spi_cbfunc(SPI_ReadByte, SPI_WriteByte); //注冊讀寫函數
- /* WIZCHIP SOCKET Buffer initialize */
- if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memsize) == -1){
- printf("WIZCHIP Initialized fail.\r\n");
- while(1);
- }
- /* PHY link status check */
- do{
- if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1){
- printf("Unknown PHY Link stauts.\r\n");
- }
- }while(tmp == PHY_LINK_OFF);
- /* Network initialization */
- network_init();
-
- while(1)
- {
- switch(getSn_SR(SOCK_TCPS)) // 獲取socket0的狀態
- {
- case SOCK_INIT: // Socket處于初始化完成(打開)狀態
- connect(SOCK_TCPS,DstIP,DstPort);
- break;
- case SOCK_ESTABLISHED: // Socket處于連接建立狀態
- if(getSn_IR(SOCK_TCPS) & Sn_IR_CON)
- {
- setSn_IR(SOCK_TCPS, Sn_IR_CON); // Sn_IR的CON位置1,通知W5500連接已建立
- }
- //send datapack
- send(SOCK_TCPS,testDATABUF,52);
- delay_ms(1000);
- /*
- // 數據回環測試程序:數據從上位機服務器發給W5500,W5500接收到數據后再回給服務器
- len=getSn_RX_RSR(SOCK_TCPS); // len=Socket0接收緩存中已接收和保存的數據大小
- if(len)
- {
- recv(SOCK_TCPS,gDATABUF,len);
- printf("%s\r\n",gDATABUF);
- send(SOCK_TCPS,gDATABUF,len);
- } */
- break;
- case SOCK_CLOSE_WAIT: // Socket處于等待關閉狀態
- disconnect(SOCK_TCPS);
- break;
- case SOCK_CLOSED: // Socket處于關閉狀態
- socket(SOCK_TCPS,Sn_MR_TCP,5000,0x00); // 打開Socket0,打開一個本地端口
- break;
- }
- }
- }
- /**
- * @brief Intialize the network information to be used in WIZCHIP
- * @retval None
- */
- void network_init(void)
- {
- uint8_t tmpstr[6];
- ctlnetwork(CN_SET_NETINFO, (void*)&gWIZNETINFO);
- ctlnetwork(CN_GET_NETINFO, (void*)&gWIZNETINFO);
- // Display Network Information
- ctlwizchip(CW_GET_ID,(void*)tmpstr);
- printf("\r\n=== %s NET CONF ===\r\n",(char*)tmpstr);
- printf("MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n",gWIZNETINFO.mac[0],gWIZNETINFO.mac[1],gWIZNETINFO.mac[2],
- gWIZNETINFO.mac[3],gWIZNETINFO.mac[4],gWIZNETINFO.mac[5]);
- printf("SIP: %d.%d.%d.%d\r\n", gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]);
- printf("GAR: %d.%d.%d.%d\r\n", gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]);
- printf("SUB: %d.%d.%d.%d\r\n", gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]);
- printf("DNS: %d.%d.%d.%d\r\n", gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]);
- printf("======================\r\n");
- }
- /**
- * @brief Loopback Test Example Code using ioLibrary_BSD
- * @retval None
- */
- void platform_init(void)
- {
- SystemInit();//系統時鐘初始化
- USART_Configuration();//串口1初始化
- //Config SPI
- SPI_Configuration();
- //延時初始化
- delay_init(168);
- }
復制代碼
Keil代碼下載:
W5500_TCPClient.7z
(457.4 KB, 下載次數: 29)
2022-9-13 23:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|