Настройка Ethernet. Отправка UDP пакета средствами.

This commit is contained in:
MaD_CaT
2024-09-05 13:23:32 +03:00
parent 1bcc48e71b
commit 4c7517be0d
5 changed files with 35378 additions and 35168 deletions

View File

@@ -31,7 +31,7 @@ extern "C" {
/* Private includes ----------------------------------------------------------*/ /* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
#include <string.h>
/* USER CODE END Includes */ /* USER CODE END Includes */
/* Exported types ------------------------------------------------------------*/ /* Exported types ------------------------------------------------------------*/
@@ -59,7 +59,7 @@ void Error_Handler(void);
/* Private defines -----------------------------------------------------------*/ /* Private defines -----------------------------------------------------------*/
/* USER CODE BEGIN Private defines */ /* USER CODE BEGIN Private defines */
#define ISA_BASE_RD 0x60000000U #define ISA_BASE_RD 0x60000000U
#define ISA_BASE_WR 0x60200000U #define ISA_BASE_WR 0x60400000U
/* USER CODE END Private defines */ /* USER CODE END Private defines */
#ifdef __cplusplus #ifdef __cplusplus

View File

@@ -53,6 +53,7 @@ static void MX_FMC_Init(void);
/* USER CODE BEGIN PFP */ /* USER CODE BEGIN PFP */
void write_isa(uint16_t addr, uint16_t data); void write_isa(uint16_t addr, uint16_t data);
uint16_t read_isa(uint16_t addr); uint16_t read_isa(uint16_t addr);
void sock_init(struct udp_pcb * pcb);
/* USER CODE END PFP */ /* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/ /* Private user code ---------------------------------------------------------*/
@@ -67,7 +68,6 @@ uint16_t read_isa(uint16_t addr);
int main(void) int main(void)
{ {
/* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */
/* USER CODE END 1 */ /* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/ /* MCU Configuration--------------------------------------------------------*/
@@ -90,24 +90,32 @@ int main(void)
MX_GPIO_Init(); MX_GPIO_Init();
MX_LWIP_Init(); MX_LWIP_Init();
MX_FMC_Init(); MX_FMC_Init();
/* USER CODE BEGIN 2 */
/* USER CODE BEGIN 2 */
struct udp_pcb * pcb = udp_new();
sock_init(pcb);
const char* msg = "hello world1234";
struct pbuf *p = pbuf_alloc(0, 100, PBUF_RAM);
uint32_t br_addr = ipaddr_addr("10.1.1.5");
u16_t dst_port = 50000U;
p->len = strlen(msg);
p->tot_len = p->len;
strcpy(p->payload, msg);
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Infinite loop */ /* Infinite loop */
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while (1) while (1)
{ {
MX_LWIP_Process(); MX_LWIP_Process();
//write_isa(0x100, 0x1111); //write_isa(0x110, 0x5555);
//write_isa(0x102, 0x1111); //write_isa(0x108, 0xaaaa);
//read_isa(0x1); //read_isa(0x2);
read_isa(0x1); //read_isa(0x4);
read_isa(0x4);
//read_isa(0x8);
//read_isa(0x10);
//read_isa(0x20);
err_t errok = udp_sendto(pcb, p, (ip_addr_t*)&br_addr, dst_port);
HAL_Delay(100);
read_isa(0x4);
} }
/* USER CODE END WHILE */ /* USER CODE END WHILE */
} }
@@ -167,7 +175,6 @@ static void MX_FMC_Init(void)
/* USER CODE END FMC_Init 0 */ /* USER CODE END FMC_Init 0 */
FMC_NORSRAM_TimingTypeDef Timing = {0}; FMC_NORSRAM_TimingTypeDef Timing = {0};
FMC_NORSRAM_TimingTypeDef ExtTiming = {0};
/* USER CODE BEGIN FMC_Init 1 */ /* USER CODE BEGIN FMC_Init 1 */
@@ -188,7 +195,7 @@ static void MX_FMC_Init(void)
hsram1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS; hsram1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
hsram1.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE; hsram1.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
hsram1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE; hsram1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
hsram1.Init.ExtendedMode = FMC_EXTENDED_MODE_ENABLE; hsram1.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE; hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE; hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY; hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
@@ -202,15 +209,8 @@ static void MX_FMC_Init(void)
Timing.DataLatency = 17; Timing.DataLatency = 17;
Timing.AccessMode = FMC_ACCESS_MODE_A; Timing.AccessMode = FMC_ACCESS_MODE_A;
/* ExtTiming */ /* ExtTiming */
ExtTiming.AddressSetupTime = 15;
ExtTiming.AddressHoldTime = 15;
ExtTiming.DataSetupTime = 255;
ExtTiming.BusTurnAroundDuration = 15;
ExtTiming.CLKDivision = 16;
ExtTiming.DataLatency = 17;
ExtTiming.AccessMode = FMC_ACCESS_MODE_A;
if (HAL_SRAM_Init(&hsram1, &Timing, &ExtTiming) != HAL_OK) if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK)
{ {
Error_Handler( ); Error_Handler( );
} }
@@ -251,14 +251,23 @@ static void MX_GPIO_Init(void)
} }
/* USER CODE BEGIN 4 */ /* USER CODE BEGIN 4 */
void sock_init(struct udp_pcb * pcb)
{
uint32_t ipaddr = ipaddr_addr("10.1.1.69");
u16_t port = 50069U;
err_t errok = udp_bind(pcb, (ip_addr_t*)&ipaddr, port);
return;
}
uint16_t read_isa(uint16_t addr) uint16_t read_isa(uint16_t addr)
{ {
return *(uint16_t*)(ISA_BASE_RD + addr); return *(uint16_t*)(ISA_BASE_RD + (addr << 1));
} }
void write_isa(uint16_t addr, uint16_t data) void write_isa(uint16_t addr, uint16_t data)
{ {
*(uint16_t*)(ISA_BASE_WR + addr) = data; *(uint16_t*)(ISA_BASE_WR + (addr << 1)) = data;
} }
/* USER CODE END 4 */ /* USER CODE END 4 */

View File

@@ -134,11 +134,13 @@ static void HAL_FMC_MspInit(void){
PD4 ------> FMC_NOE PD4 ------> FMC_NOE
PD5 ------> FMC_NWE PD5 ------> FMC_NWE
PD7 ------> FMC_NE1 PD7 ------> FMC_NE1
PE0 ------> FMC_NBL0
PE1 ------> FMC_NBL1
*/ */
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
|GPIO_PIN_15; |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
@@ -243,11 +245,13 @@ static void HAL_FMC_MspDeInit(void){
PD4 ------> FMC_NOE PD4 ------> FMC_NOE
PD5 ------> FMC_NWE PD5 ------> FMC_NWE
PD7 ------> FMC_NE1 PD7 ------> FMC_NE1
PE0 ------> FMC_NBL0
PE1 ------> FMC_NBL1
*/ */
HAL_GPIO_DeInit(GPIOE, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 HAL_GPIO_DeInit(GPIOE, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
|GPIO_PIN_15); |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1);
HAL_GPIO_DeInit(GPIOF, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 HAL_GPIO_DeInit(GPIOF, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_12|GPIO_PIN_13 |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_12|GPIO_PIN_13

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
#MicroXplorer Configuration settings - do not modify #MicroXplorer Configuration settings - do not modify
ETH.IPParameters=MediaInterface ETH.IPParameters=MediaInterface
ETH.MediaInterface=HAL_ETH_RMII_MODE ETH.MediaInterface=HAL_ETH_RMII_MODE
FMC.ExtendedMode1=FMC_EXTENDED_MODE_ENABLE FMC.ExtendedMode1=FMC_EXTENDED_MODE_DISABLE
FMC.IPParameters=WriteOperation1,ExtendedMode1 FMC.IPParameters=WriteOperation1,ExtendedMode1
FMC.WriteOperation1=FMC_WRITE_OPERATION_ENABLE FMC.WriteOperation1=FMC_WRITE_OPERATION_ENABLE
File.Version=6 File.Version=6
@@ -83,13 +83,15 @@ Mcu.Pin50=PD4
Mcu.Pin51=PD5 Mcu.Pin51=PD5
Mcu.Pin52=PD7 Mcu.Pin52=PD7
Mcu.Pin53=PG14 Mcu.Pin53=PG14
Mcu.Pin54=VP_LWIP_VS_Enabled Mcu.Pin54=PE0
Mcu.Pin55=VP_SYS_VS_Systick Mcu.Pin55=PE1
Mcu.Pin56=VP_LWIP_VS_Enabled
Mcu.Pin57=VP_SYS_VS_Systick
Mcu.Pin6=PF1 Mcu.Pin6=PF1
Mcu.Pin7=PF2 Mcu.Pin7=PF2
Mcu.Pin8=PF3 Mcu.Pin8=PF3
Mcu.Pin9=PF4 Mcu.Pin9=PF4
Mcu.PinsNb=56 Mcu.PinsNb=58
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32F429ZITx Mcu.UserName=STM32F429ZITx
@@ -142,6 +144,8 @@ PD7.Mode=NorPsramChipSelect1_1
PD7.Signal=FMC_NE1 PD7.Signal=FMC_NE1
PD8.Signal=FMC_D13_DA13 PD8.Signal=FMC_D13_DA13
PD9.Signal=FMC_D14_DA14 PD9.Signal=FMC_D14_DA14
PE0.Signal=FMC_NBL0
PE1.Signal=FMC_NBL1
PE10.Signal=FMC_D7_DA7 PE10.Signal=FMC_D7_DA7
PE11.Signal=FMC_D8_DA8 PE11.Signal=FMC_D8_DA8
PE12.Signal=FMC_D9_DA9 PE12.Signal=FMC_D9_DA9
@@ -320,6 +324,10 @@ SH.FMC_D8_DA8.0=FMC_D8,16b-d1
SH.FMC_D8_DA8.ConfNb=1 SH.FMC_D8_DA8.ConfNb=1
SH.FMC_D9_DA9.0=FMC_D9,16b-d1 SH.FMC_D9_DA9.0=FMC_D9,16b-d1
SH.FMC_D9_DA9.ConfNb=1 SH.FMC_D9_DA9.ConfNb=1
SH.FMC_NBL0.0=FMC_NBL0,2ByteEnable1
SH.FMC_NBL0.ConfNb=1
SH.FMC_NBL1.0=FMC_NBL1,2ByteEnable1
SH.FMC_NBL1.ConfNb=1
SH.FMC_NOE.0=FMC_NOE,Sram1 SH.FMC_NOE.0=FMC_NOE,Sram1
SH.FMC_NOE.ConfNb=1 SH.FMC_NOE.ConfNb=1
SH.FMC_NWE.0=FMC_NWE,Sram1 SH.FMC_NWE.0=FMC_NWE,Sram1