STM32F407通过SPI连接W5100S进行TCP网络通信
STM32F407通過SPI連接W5100S進行網絡通信
一、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模式,設置方式如下圖:
模塊原理圖
二.與單片機連接
使用單片機SPI1接口與W5100S模塊連接
包括:
單片機SPI配置復用模式,片選信號配置成輸出模式
//SPI1初始化 配置成主機模式 //SPI1 RCC_APB2=84M void W5100S_SPI_Init(void) {SPI_InitTypeDef SPI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA時鐘 RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE);/* Configure SPIy pins: SCK, MISO and MOSI */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //PA5/6/7GPIO_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(GPIOA, &GPIO_InitStructure);GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_SPI1); //PA5復用為 SPI1GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_SPI1); //PA6復用為 SPI1GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_SPI1); //PA7復用為 SPI1/*Init CS*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA, GPIO_Pin_4);/* SPI Config -------------------------------------------------------------*/SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //時鐘空閑狀態為低電平SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;//時鐘的第1個跳變沿SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//波特率預分頻SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_InitStructure.SPI_CRCPolynomial = 7;SPI_Init(SPI1, &SPI_InitStructure);SPI_Cmd(SPI1, ENABLE);//使能SPI外設 }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/13130744點擊進入
STM32F407通過W5100S進行網絡通信.rar
例程包括:SPI模式和FSMC總線模式
包含TCP_Server服務器模式和TCP_Client客戶端模式
僅需通過修改自定義參數選擇SPI模式或FSMC總線模式
總結
以上是生活随笔為你收集整理的STM32F407通过SPI连接W5100S进行TCP网络通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机二级access知识点题库,计算机
- 下一篇: 拉梅系数以及雅克比行列式