Настройка 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

@@ -53,6 +53,7 @@ static void MX_FMC_Init(void);
/* USER CODE BEGIN PFP */
void write_isa(uint16_t addr, uint16_t data);
uint16_t read_isa(uint16_t addr);
void sock_init(struct udp_pcb * pcb);
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
@@ -67,7 +68,6 @@ uint16_t read_isa(uint16_t addr);
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
@@ -90,24 +90,32 @@ int main(void)
MX_GPIO_Init();
MX_LWIP_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 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
/* USER CODE BEGIN WHILE */
while (1)
{
MX_LWIP_Process();
//write_isa(0x100, 0x1111);
//write_isa(0x102, 0x1111);
//read_isa(0x1);
read_isa(0x1);
read_isa(0x4);
//read_isa(0x8);
//read_isa(0x10);
//read_isa(0x20);
//write_isa(0x110, 0x5555);
//write_isa(0x108, 0xaaaa);
//read_isa(0x2);
//read_isa(0x4);
err_t errok = udp_sendto(pcb, p, (ip_addr_t*)&br_addr, dst_port);
HAL_Delay(100);
read_isa(0x4);
}
/* USER CODE END WHILE */
}
@@ -167,7 +175,6 @@ static void MX_FMC_Init(void)
/* USER CODE END FMC_Init 0 */
FMC_NORSRAM_TimingTypeDef Timing = {0};
FMC_NORSRAM_TimingTypeDef ExtTiming = {0};
/* 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.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
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.WriteBurst = FMC_WRITE_BURST_DISABLE;
hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
@@ -202,15 +209,8 @@ static void MX_FMC_Init(void)
Timing.DataLatency = 17;
Timing.AccessMode = FMC_ACCESS_MODE_A;
/* 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( );
}
@@ -251,14 +251,23 @@ static void MX_GPIO_Init(void)
}
/* 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)
{
return *(uint16_t*)(ISA_BASE_RD + addr);
return *(uint16_t*)(ISA_BASE_RD + (addr << 1));
}
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 */

View File

@@ -134,11 +134,13 @@ static void HAL_FMC_MspInit(void){
PD4 ------> FMC_NOE
PD5 ------> FMC_NWE
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_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_15;
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
@@ -243,11 +245,13 @@ static void HAL_FMC_MspDeInit(void){
PD4 ------> FMC_NOE
PD5 ------> FMC_NWE
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
|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_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
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_12|GPIO_PIN_13