Skip to content

Commit 6f25f79

Browse files
committed
feat(port/kinetis): add mm32f5 support
Signed-off-by: sakumisu <1203593632@qq.com>
1 parent 9a26c50 commit 6f25f79

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

port/kinetis/usb_dc_kinetis.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,15 @@ int usb_dc_init(uint8_t busid)
108108

109109
int usb_dc_deinit(uint8_t busid)
110110
{
111+
USB_OTG_DEV->INTEN = 0;
112+
USB_OTG_DEV->CTL &= ~USB_CTL_USBENSOFEN_MASK;
113+
114+
memset(&g_kinetis_udc[busid], 0, sizeof(g_kinetis_udc[busid]));
115+
116+
USB_OTG_DEV->BDTPAGE1 = (uint8_t)((uintptr_t)&g_kinetis_bdt[busid] >> 8);
117+
USB_OTG_DEV->BDTPAGE2 = (uint8_t)((uintptr_t)&g_kinetis_bdt[busid] >> 16);
118+
USB_OTG_DEV->BDTPAGE3 = (uint8_t)((uintptr_t)&g_kinetis_bdt[busid] >> 24);
119+
111120
usb_dc_low_level_deinit(busid);
112121
return 0;
113122
}
@@ -421,7 +430,7 @@ void USBD_IRQHandler(uint8_t busid)
421430
usbd_event_ep_in_complete_handler(busid, ep_idx | 0x80, g_kinetis_udc[busid].in_ep[ep_idx].actual_xfer_len);
422431
} else {
423432
kinetis_start_transfer(busid, ep_idx | 0x80, g_kinetis_udc[busid].in_ep[ep_idx].xfer_buf,
424-
MIN(g_kinetis_udc[busid].in_ep[ep_idx].xfer_len, g_kinetis_udc[busid].in_ep[ep_idx].ep_mps));
433+
MIN(g_kinetis_udc[busid].in_ep[ep_idx].xfer_len, g_kinetis_udc[busid].in_ep[ep_idx].ep_mps));
425434
}
426435
} else {
427436
g_kinetis_udc[busid].out_ep[ep_idx].xfer_buf += bc;
@@ -432,7 +441,7 @@ void USBD_IRQHandler(uint8_t busid)
432441
usbd_event_ep_out_complete_handler(busid, ep_idx, g_kinetis_udc[busid].out_ep[ep_idx].actual_xfer_len);
433442
} else {
434443
kinetis_start_transfer(busid, ep_idx, g_kinetis_udc[busid].out_ep[ep_idx].xfer_buf,
435-
MIN(g_kinetis_udc[busid].out_ep[ep_idx].xfer_len, g_kinetis_udc[busid].out_ep[ep_idx].ep_mps));
444+
MIN(g_kinetis_udc[busid].out_ep[ep_idx].xfer_len, g_kinetis_udc[busid].out_ep[ep_idx].ep_mps));
436445
}
437446
}
438447

port/kinetis/usb_glue_mm32.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <stdio.h>
2+
#include <string.h>
3+
4+
#include "mm32_device.h"
5+
#include "hal_rcc.h"
6+
#include "usbd_core.h"
7+
8+
void usb_dc_low_level_init(uint8_t busid)
9+
{
10+
/* Select USBCLK source */
11+
// RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div1);
12+
RCC->CFGR &= ~(0x3 << 22);
13+
RCC->CFGR |= (0x1 << 22);
14+
15+
/* Enable USB clock */
16+
RCC->AHB2ENR |= 0x1 << 7;
17+
18+
#define USB_DEVICE_INTERRUPT_PRIORITY (7U)
19+
NVIC_SetPriority((IRQn_Type)USB_OTGFS_IRQn, USB_DEVICE_INTERRUPT_PRIORITY);
20+
NVIC_EnableIRQ(USB_OTGFS_IRQn);
21+
}
22+
23+
void usb_dc_low_level_deinit(uint8_t busid)
24+
{
25+
RCC->AHB2ENR &= ~(0x1 << 7);
26+
}
27+
28+
void USB_OTGFS_IRQHandler(void)
29+
{
30+
USBD_IRQHandler(0);
31+
}
32+
33+
void usbd_kinetis_delay_ms(uint8_t ms)
34+
{
35+
//delay_ms(ms);
36+
}

0 commit comments

Comments
 (0)