日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32F407通过FSMC连接W5100S进行TCP网络通信

發布時間:2023/12/29 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F407通过FSMC连接W5100S进行TCP网络通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

STM32F407通過FSMC連接W5100S進行TCP網絡通信
一、W5100S硬件
1.HS-NM5100SA模塊
模塊廠家:成都浩然電子http://www.hschip.com
HS-NM5100SA以太網絡控制器接口模塊是將W5100S與必要的外圍元器件集成在一塊電路板上,為客戶提供便利應用的產品。
1. 它保持了W5100S的全部功能和性能;
2. 將W5100S與MCU接口(SPI接口和并行總線接口)通過排針引出;
3. RJ-45座內部集成網絡變壓器,網線可直接與模塊連接;
4. RJ-45上的指示燈可以指示W5100S的以太網連接狀態;
5. 直流3.3V供電;
6. 嚴格的老化測試保證產品優質的品質。


2.設置通信模式
模塊集成了總線模式和SPI模式,通過W5100S的MOD[3~0]進行選擇

模塊背面有電阻用來設置總線模式或SPI模式,設置方式如下圖:

模塊原理圖

二.與單片機連接
使用單片機FSMC通信接口與W5100S模塊連接
包括:

  • 13根FSMC線(8根數據線+2根地址線+讀/寫/片選)
  • 1根W5100S硬件復位線
  • 3.3V供電

    單片機FSMC配置復用模式
  • //FSMC初始化 //STM32F407 FSMC管腳接線信息 // *W5100S *STM32F407 // DAT0 FSMC_D0 PD14 //數據 // DAT1 FSMC_D1 PD15 // DAT2 FSMC_D2 PD0 // DAT3 FSMC_D3 PD1 // DAT4 FSMC_D4 PE7 // DAT5 FSMC_D5 PE8 // DAT6 FSMC_D6 PE9 // DAT7 FSMC_D7 PE10 // WRn FSMC_NWE PD5 //寫 // RDn FSMC_NOE PD4 //讀 // CSn FSMC_NE1 PD7 //片選 // M0SI_AD0 FSMC_A16 PD11 //地址線 // MISO_AD1 FSMC_A17 PD12 void FSMC_Init(void) //2018-07-17 //FSMC初始化13個引腳 D0~7 A16/17 NOE NWE NE1 {GPIO_InitTypeDef GPIO_InitStructure;FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;FSMC_NORSRAMTimingInitTypeDef Timing; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE,ENABLE);//使能PD,PE時鐘 RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE);//使能FSMC時鐘 /* Data lines configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14| GPIO_Pin_15| GPIO_Pin_0| GPIO_Pin_1;//D0 D1 D2 D3GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//復用輸出GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9| GPIO_Pin_10;//D4 D5 D6 D7GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化 /* Address lines configuration */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11| GPIO_Pin_12;//A16 A17GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化 /* NOE and NWE configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5;//NOE NWEGPIO_Init(GPIOD, &GPIO_InitStructure);//初始 /* NE1 configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;// NE1GPIO_Init(GPIOD, &GPIO_InitStructure);//初始GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FSMC);// D0GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FSMC);// D1GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);// D2GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);// D3 GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FSMC);// D4GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FSMC);// D5GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FSMC);// D6GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FSMC);// D7 GPIO_PinAFConfig(GPIOD,GPIO_PinSource11,GPIO_AF_FSMC);// A16GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_FSMC);// A17 GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC);// NOE 讀信號 GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC);// NWE 寫信號GPIO_PinAFConfig(GPIOD,GPIO_PinSource7,GPIO_AF_FSMC);// NE1 片選 //寄存器FSMC_BTR*配置 讀取時序//寄存器FSMC_BWTR*配置 寫入時序Timing.FSMC_AddressSetupTime = 8;//10 //0~15 //地址建立時間(ADDSET)T:1個HCLK 1/168M=6ns //W5100s需要1個SYS_CLK=1/25M=40nsTiming.FSMC_AddressHoldTime = 0; //0~15 //地址保持時間(ADDHLD)僅模式D使用 Timing.FSMC_DataSetupTime = 16; //16 //1~256 //數據建立時間為16個HCLK 6ns*16=96ns //W5100S最大需要3個SYS_CLK+5ns=125nsTiming.FSMC_BusTurnAroundDuration = 0; //0~15 //總線周轉時間Timing.FSMC_CLKDivision = 0; //2~16 //時鐘分頻比Timing.FSMC_DataLatency = 0; //2~17 //數據延遲Timing.FSMC_AccessMode = FSMC_AccessMode_A; //模式A //位29:28 ACCMOD 模式A/B/C/D//寄存器FSMC_BCR1 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;// 這里我們使用NE FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; //位1 MUXEN 不復用數據地址FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM; //位3:2 MTYP FSMC_MemoryType_SRAM; //存儲器類型SRAM FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; //位5:4 MWID 存儲器數據寬度為16bit FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable; //位8 BURSTEN 禁止突發使能位 (僅對同步突發有效)FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; //位9 WAITPOL NWAIT低電平有效(僅對突發模式有效)FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable; //位15 ASYNCWAIT異步協議時不考慮NWAIT信號FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; //位10 WRAPMOD 環回突發模式/未使能 (僅在突發模式下有效) FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;//位11 WAITCFG NWAIT在等待周期之前有效 FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //位12 WREN FSMC寫使能FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; //位13 WAITEN 禁止NWAIT信號 FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //位14 EXTMOD 不考慮FSMC_BWTR(寫入時序寄存),即讀寫使用相同時序FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //位19 CBURSTRW 在異步模式下進行寫入操作FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &Timing; //讀寫時序 //寄存器FSMC_BTR*配置 讀取時序FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &Timing; //寫時序 //寄存器FSMC_BWTR*配置 寫入時序FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); //初始化FSMC配置FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); // 使能BANK1 }

    W5100S復位引腳配置成輸出模式

    //W5100S復位引腳 PA12 #define W5100S_RSTn GPIO_Pin_12 #define W5100S_RSTn_PORT GPIOA #define W5100S_RSTn_CLK RCC_AHB1Periph_GPIOA //初始化W5100S復位引腳 W5100S_RSTn void Reset_GPIO_Config(void) //初始化W5100S復位引腳 {GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(W5100S_RSTn_CLK, ENABLE);//掛載外設時鐘 GPIO_InitStructure.GPIO_Pin = W5100S_RSTn; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //設置最高輸出速率GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出 GPIO_Init(W5100S_RSTn_PORT, &GPIO_InitStructure);//GPIO_SetBits(W5100S_RSTn_PORT, W5100S_RSTn); //高電平}

    三、程序源碼
    STM32F407源碼已上傳到我的資源https://download.csdn.net/download/sgjiajia/13122385點擊進入
    STM32F407通過FSMC連接W5100S進行網絡通信.rar
    包含TCP_Server服務器模式和TCP_Client客戶端模式

    總結

    以上是生活随笔為你收集整理的STM32F407通过FSMC连接W5100S进行TCP网络通信的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。