Procházet zdrojové kódy

update(port/kinetis): add MCXA156 support

Signed-off-by: sakumisu <1203593632@qq.com>
sakumisu před 10 měsíci
rodič
revize
6378fb88d0
2 změnil soubory, kde provedl 15 přidání a 5 odebrání
  1. 1 1
      port/kinetis/README.md
  2. 14 4
      port/kinetis/usb_glue_mcx.c

+ 1 - 1
port/kinetis/README.md

@@ -10,7 +10,7 @@ Modify USB_NOCACHE_RAM_SECTION
 #define USB_NOCACHE_RAM_SECTION __attribute__((section(".NonCacheable")))
 ```
 
-- MCXC444/MCXA153 (device only)
+- MCXC444/MCXA153/MCXA156 (device only)
 - MCXN947
 
 ### MM32

+ 14 - 4
port/kinetis/usb_glue_mcx.c

@@ -32,6 +32,13 @@ void USB_ClockInit(void)
     CLOCK_EnableClock(kCLOCK_Usb0Fs);
     CLOCK_EnableUsbfsClock();
 }
+#elif defined(MCXA156_H_)
+#define USBD_IRQ USB0_IRQHandler
+void USB_ClockInit(void)
+{
+    RESET_PeripheralReset(kUSB0_RST_SHIFT_RSTn);
+    CLOCK_EnableUsbfsClock();
+}
 #else
 #error "Unsupported MCU with Kinetis IP"
 #endif
@@ -49,15 +56,14 @@ void usb_dc_low_level_init(uint8_t busid)
     uint8_t irqNumber;
 
     uint8_t usbDeviceKhciIrq[] = USB_IRQS;
-    irqNumber                  = usbDeviceKhciIrq[0];
+    irqNumber = usbDeviceKhciIrq[0];
 
     /* Install isr, set priority, and enable IRQ. */
     NVIC_SetPriority((IRQn_Type)irqNumber, 3);
     EnableIRQ((IRQn_Type)irqNumber);
 
     USB_OTG_DEV->USBTRC0 |= USB_USBTRC0_USBRESET_MASK;
-    while (USB_OTG_DEV->USBTRC0 & USB_USBTRC0_USBRESET_MASK)
-        ;
+    while (USB_OTG_DEV->USBTRC0 & USB_USBTRC0_USBRESET_MASK);
 
     USB_OTG_DEV->USBTRC0 |= USB_USBTRC0_VREGIN_STS(1); /* software must set this bit to 1 */
     USB_OTG_DEV->USBCTRL = 0;
@@ -67,7 +73,11 @@ void usb_dc_low_level_init(uint8_t busid)
 void usb_dc_low_level_deinit(uint8_t busid)
 {
     USB_OTG_DEV->CONTROL &= ~USB_CONTROL_DPPULLUPNONOTG_MASK;
-    DisableIRQ((IRQn_Type)USB0_FS_IRQn);
+    #if defined(MCXN947_CM33_CORE0_H_)
+        DisableIRQ((IRQn_Type)USB0_FS_IRQn);
+    #else
+        DisableIRQ((IRQn_Type)USB0_IRQn);
+    #endif
 }
 
 void usbd_kinetis_delay_ms(uint8_t ms)