Browse Source

edit:优化以太网传输卡顿功能

wulianwei 21 hours ago
parent
commit
e20baad16e

+ 4 - 4
code/algorithm/emg_util.c

@@ -446,10 +446,10 @@ void emg_denoised(float *emg_raw, int length, int fs, float *emg_denoised) { //
 
     // Bidirectional second-order section filtering (zero-phase bandpass filtering)
     filtfilt_sos(emg_raw, emg_denoised, length, sos, 2); // 确保 sos 系数数组在 emg_util.h 中也是 float 类型
-//   for(i=0;i<length;i++)
-//   {
-//       emg_denoised[i]=emg_denoised[i]/1000;
-//   }
+   for(i=0;i<length;i++)
+   {
+       emg_denoised[i]=emg_denoised[i]/1.5;
+   }
     // Wavelet denoising (using sym4)
    // denoise_emg_wavelab(emg_denoised, length, fs, emg_denoised);
 }

+ 2 - 2
code/business/handle_bus.c

@@ -96,8 +96,8 @@ void handleSign(unsigned char *s, unsigned short sl)
         emg_denoised(cd4, dataCount, 1000, fd4);
         sd4 = fd4;
     }
-    lwip_udp_send_gui_signal2(cd1,fd1,cd3,cd4, fm->sign,dataCount);
-    //lwip_udp_send_vofa4(cd1, fd1 , cd3 ,cd4 , dataCount);
+    lwip_udp_send_gui_signal2(cd1,cd2,cd3,cd4, fm->sign,dataCount);
+//    lwip_udp_send_vofa4(cd1, cd2 , cd3 ,cd4 , dataCount);
     free(fdata);
 }
 

+ 1 - 1
code/device/lwip.c

@@ -31,7 +31,7 @@ void init_ip(void);
 void lwip_device_init(void)
 {
     EthernetInit(); //ÒÔÌ«ÍøÍâÉèÅäÖÃ
-    //init_ip();
+//    init_ip();
     //udp_bind(gui_udp_pcb, IP_ADDR_ANY, 3000);
 }
 

+ 2 - 2
code/hal/nim_uart.c

@@ -330,8 +330,8 @@ static void UART2Isr()
         rxData = UARTCharGetNonBlocking(SOC_UART_2_REGS);
         if (UART_CONSOLE_BASE == SOC_UART_2_REGS)
         {
-//            ConsoleRecvFill(rxData);
-            enqueueFromUart(rxData); // Ìí¼Óµ½¶ÓÁÐ
+            ConsoleRecvFill(rxData);
+//            enqueueFromUart(rxData); // Ìí¼Óµ½¶ÓÁÐ
         }
         else
         {

+ 3 - 5
code/lib/lwip/ports/am1808/netif/sitaraif.c

@@ -314,6 +314,7 @@ sitaraif_transmit(struct sitaraif *sitaraif, struct pbuf *pbuf) {
   else {
     curr_bd = txch->active_tail;
     curr_bd->next = active_head;
+    //while((curr_bd->flags_pktlen & EMAC_BUF_DESC_EOQ) != EMAC_BUF_DESC_EOQ);
     if(curr_bd->flags_pktlen & EMAC_BUF_DESC_EOQ) {
       /* Write the Header Descriptor Pointer and start DMA */
       EMACTxHdrDescPtrWrite(sitaraif->emac_base, (unsigned int)(active_head), 0);
@@ -753,22 +754,20 @@ sitaraif_tx_inthandler(struct netif *netif) {
   struct txch *txch;
   struct sitaraif *sitaraif; 
   volatile struct emac_tx_bd *curr_bd, *next_bd_to_process;  
-  
   sitaraif = netif->state; 
   txch = &(sitaraif->txch);
     
   next_bd_to_process = txch->next_bd_to_process;
   
   curr_bd = next_bd_to_process;
-  
   /* Check for correct start of packet */
   while((curr_bd->flags_pktlen) & EMAC_BUF_DESC_SOP) {
     
     /* Make sure that the transmission is over */
     while((curr_bd->flags_pktlen & EMAC_BUF_DESC_OWNER)
           == EMAC_BUF_DESC_OWNER);
-   
-    /* Traverse till the end of packet is reached */ 
+
+    /* Traverse till the end of packet is reached */
     while(((curr_bd->flags_pktlen) & EMAC_BUF_DESC_EOP) != EMAC_BUF_DESC_EOP) {
        curr_bd = curr_bd->next;
     }
@@ -790,7 +789,6 @@ sitaraif_tx_inthandler(struct netif *netif) {
     
     /* Acknowledge the EMAC and free the corresponding pbuf */
     EMACTxCPWrite(sitaraif->emac_base, 0, (u32_t)curr_bd);
-
     pbuf_free((struct pbuf *)curr_bd->pbuf);
 
     LINK_STATS_INC(link.xmit);

+ 1 - 1
code/lib/lwip/src/core/ipv4/ip_frag.c

@@ -769,7 +769,7 @@ ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest)
      * when allocated.
      */
     netif->output(netif, rambuf, dest);
-    delay_us(300);//保证DMA发送完数据包
+    delay_us(500);//保证DMA发送完数据包
     IPFRAG_STATS_INC(ip_frag.xmit);
 
     /* Unfortunately we can't reuse rambuf - the hardware may still be

+ 29 - 0
main.c

@@ -11,6 +11,7 @@
 #define ASCII_NUM_IDX                  (48u)
 extern int flag ;
 void DeviceInit();
+void ConsoleTest();
 
 int main()
 {
@@ -21,6 +22,7 @@ int main()
         InitWatchTime();
         touch_task();
         HlxMain();
+        //ConsoleTest();
     }
 }
 
@@ -55,3 +57,30 @@ void DeviceInit()
     HlxInit();
 }
 
+void ConsoleTest()
+{
+   ConsoleRecvWait(10);
+   if(ConsoleRecvFlag() == REV_OK)
+   {
+       unsigned char* rdata =  ConsoleRecvData();
+       int rlen = ConsoleRecvLen();
+       //ConsolePuts(rdata, -1);
+       if(rlen<20)
+       {
+           lwip_udp_send_gui(rdata, rlen);
+       }
+       else
+       {
+          char sdata[2000];
+          int i = 0;
+          for(i = 0;i<sizeof(sdata);i++)
+          {
+              sdata[i]=i%255;
+          }
+          lwip_udp_send_gui(sdata, sizeof(sdata));
+       }
+       ConsoleRecvClear();
+
+   }
+}
+