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配置復用模式
void FSMC_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure
;FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure
;FSMC_NORSRAMTimingInitTypeDef Timing
; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD
|RCC_AHB1Periph_GPIOE
,ENABLE
);RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC
,ENABLE
); GPIO_InitStructure
.GPIO_Pin
= GPIO_Pin_14
| GPIO_Pin_15
| GPIO_Pin_0
| GPIO_Pin_1
;GPIO_InitStructure
.GPIO_Mode
= GPIO_Mode_AF
;GPIO_InitStructure
.GPIO_OType
= GPIO_OType_PP
;GPIO_InitStructure
.GPIO_Speed
= GPIO_Speed_100MHz
;GPIO_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
;GPIO_Init(GPIOE
, &GPIO_InitStructure
);GPIO_InitStructure
.GPIO_Pin
= GPIO_Pin_11
| GPIO_Pin_12
;GPIO_Init(GPIOD
, &GPIO_InitStructure
); GPIO_InitStructure
.GPIO_Pin
= GPIO_Pin_4
| GPIO_Pin_5
;GPIO_Init(GPIOD
, &GPIO_InitStructure
); GPIO_InitStructure
.GPIO_Pin
= GPIO_Pin_7
;GPIO_Init(GPIOD
, &GPIO_InitStructure
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource14
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource15
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource0
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource1
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOE
,GPIO_PinSource7
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOE
,GPIO_PinSource8
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOE
,GPIO_PinSource9
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOE
,GPIO_PinSource10
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource11
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource12
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource4
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource5
,GPIO_AF_FSMC
);GPIO_PinAFConfig(GPIOD
,GPIO_PinSource7
,GPIO_AF_FSMC
);Timing
.FSMC_AddressSetupTime
= 8;Timing
.FSMC_AddressHoldTime
= 0; Timing
.FSMC_DataSetupTime
= 16; Timing
.FSMC_BusTurnAroundDuration
= 0; Timing
.FSMC_CLKDivision
= 0; Timing
.FSMC_DataLatency
= 0; Timing
.FSMC_AccessMode
= FSMC_AccessMode_A
; FSMC_NORSRAMInitStructure
.FSMC_Bank
= FSMC_Bank1_NORSRAM1
;FSMC_NORSRAMInitStructure
.FSMC_DataAddressMux
= FSMC_DataAddressMux_Disable
; FSMC_NORSRAMInitStructure
.FSMC_MemoryType
=FSMC_MemoryType_SRAM
; FSMC_NORSRAMInitStructure
.FSMC_MemoryDataWidth
= FSMC_MemoryDataWidth_8b
; FSMC_NORSRAMInitStructure
.FSMC_BurstAccessMode
=FSMC_BurstAccessMode_Disable
; FSMC_NORSRAMInitStructure
.FSMC_WaitSignalPolarity
= FSMC_WaitSignalPolarity_Low
; FSMC_NORSRAMInitStructure
.FSMC_AsynchronousWait
=FSMC_AsynchronousWait_Disable
; FSMC_NORSRAMInitStructure
.FSMC_WrapMode
= FSMC_WrapMode_Disable
; FSMC_NORSRAMInitStructure
.FSMC_WaitSignalActive
= FSMC_WaitSignalActive_BeforeWaitState
;FSMC_NORSRAMInitStructure
.FSMC_WriteOperation
= FSMC_WriteOperation_Enable
; FSMC_NORSRAMInitStructure
.FSMC_WaitSignal
= FSMC_WaitSignal_Disable
; FSMC_NORSRAMInitStructure
.FSMC_ExtendedMode
= FSMC_ExtendedMode_Disable
; FSMC_NORSRAMInitStructure
.FSMC_WriteBurst
= FSMC_WriteBurst_Disable
; FSMC_NORSRAMInitStructure
.FSMC_ReadWriteTimingStruct
= &Timing
; FSMC_NORSRAMInitStructure
.FSMC_WriteTimingStruct
= &Timing
; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure
); FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1
, ENABLE
);
}
W5100S復位引腳配置成輸出模式
#define W5100S_RSTn GPIO_Pin_12
#define W5100S_RSTn_PORT GPIOA
#define W5100S_RSTn_CLK RCC_AHB1Periph_GPIOA
void Reset_GPIO_Config(void)
{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网络通信的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。