update metro m7

This commit is contained in:
hathach 2023-02-02 21:13:51 +07:00
parent 3129bf90a6
commit 1a810e53ec
No known key found for this signature in database
GPG key ID: F5D50C6D51D17CBA
4 changed files with 53 additions and 51 deletions

View file

@ -61,7 +61,7 @@ void board_init(void)
SNVS->LPCR |= SNVS_LPCR_GPR_Z_DIS_MASK;
#ifdef LED_PINMUX
IOMUXC_SetPinMux(LED_PINMUX, 0U);
IOMUXC_SetPinMux(LED_PINMUX, 0);
IOMUXC_SetPinConfig(LED_PINMUX, 0x10B0U);
gpio_pin_config_t led_config = { kGPIO_DigitalOutput, 0, kGPIO_NoIntmode };
@ -69,15 +69,15 @@ void board_init(void)
#endif
#if NEOPIXEL_NUMBER
IOMUXC_SetPinMux( NEOPIXEL_PINMUX, 0U);
IOMUXC_SetPinConfig( NEOPIXEL_PINMUX, 0x10B0U);
IOMUXC_SetPinMux(NEOPIXEL_PINMUX, 0);
IOMUXC_SetPinConfig(NEOPIXEL_PINMUX, 0x10B0U);
gpio_pin_config_t neopixel_config = { kGPIO_DigitalOutput, 0, kGPIO_NoIntmode };
GPIO_PinInit(NEOPIXEL_PORT, NEOPIXEL_PIN, &neopixel_config);
#endif
#ifdef BUTTON_PIN
IOMUXC_SetPinMux(BUTTON_PINMUX, 0U);
IOMUXC_SetPinMux(BUTTON_PINMUX, 0);
gpio_pin_config_t button_config = { kGPIO_DigitalInput, 0, kGPIO_IntRisingEdge, };
GPIO_PinInit(BUTTON_PORT, BUTTON_PIN, &button_config);
#endif
@ -87,6 +87,14 @@ void board_init(void)
#endif
}
void board_teardown(void)
{
// no GPIO deinit for GPIO: LED, Neopixel, Button
#if TUF2_LOG
LPUART_Deinit(UART_DEV);
#endif
}
void board_usb_init(void)
{
// Clock
@ -123,7 +131,7 @@ void board_dfu_init(void)
_dfu_mode = true;
#ifdef LED_PWM_PINMUX
IOMUXC_SetPinMux(LED_PWM_PINMUX, 0U);
IOMUXC_SetPinMux(LED_PWM_PINMUX, 0);
IOMUXC_SetPinConfig(LED_PWM_PINMUX, 0x10B0U);
CLOCK_SetDiv(kCLOCK_AhbDiv, 0x2); /* Set AHB PODF to 2, divide by 3 */
@ -348,10 +356,11 @@ void board_uart_init(uint32_t baud_rate)
{
#ifdef UART_DEV
// Enable UART when debug log is on
IOMUXC_SetPinMux(UART_TX_PINMUX, 0U);
IOMUXC_SetPinMux(UART_RX_PINMUX, 0U);
IOMUXC_SetPinConfig(UART_TX_PINMUX, 0x10B0u);
IOMUXC_SetPinMux(UART_RX_PINMUX, 0);
IOMUXC_SetPinMux(UART_TX_PINMUX, 0);
IOMUXC_SetPinConfig(UART_RX_PINMUX, 0x10B0u);
IOMUXC_SetPinConfig(UART_TX_PINMUX, 0x10B0u);
lpuart_config_t uart_config;
LPUART_GetDefaultConfig(&uart_config);
@ -376,22 +385,9 @@ void board_uart_init(uint32_t baud_rate)
int board_uart_write(void const * buf, int len)
{
#ifdef UART_DEV
uint8_t const* buf8 = (uint8_t const*) buf;
int count = 0;
while(count < len)
{
if (LPUART_GetStatusFlags(UART_DEV) & kLPUART_TxDataRegEmptyFlag)
{
LPUART_WriteByte(UART_DEV, *buf8++);
count++;
}
}
LPUART_WriteBlocking(UART_DEV, (uint8_t const*) buf, (size_t) len);
return len;
#else
(void) buf; (void) len;
return 0;
#endif

View file

@ -35,25 +35,25 @@
// LED
//--------------------------------------------------------------------+
#define LED_PINMUX IOMUXC_GPIO_03_GPIOMUX_IO03
#define LED_PORT GPIO1
#define LED_PIN 3
#define LED_STATE_ON 1
#define LED_PINMUX IOMUXC_GPIO_03_GPIOMUX_IO03
#define LED_PORT GPIO1
#define LED_PIN 3
#define LED_STATE_ON 1
#define LED_PWM_PINMUX IOMUXC_GPIO_03_FLEXPWM1_PWM1_B
#define LED_PWM_BASE PWM1
#define LED_PWM_MODULE kPWM_Module_1
#define LED_PWM_CHANNEL kPWM_PwmB
#define LED_PWM_PINMUX IOMUXC_GPIO_03_FLEXPWM1_PWM1_B
#define LED_PWM_BASE PWM1
#define LED_PWM_MODULE kPWM_Module_1
#define LED_PWM_CHANNEL kPWM_PwmB
//--------------------------------------------------------------------+
// Neopixel
//--------------------------------------------------------------------+
// Number of neopixels
#define NEOPIXEL_NUMBER 1
#define NEOPIXEL_PINMUX IOMUXC_GPIO_00_GPIOMUX_IO00
#define NEOPIXEL_PORT GPIO1
#define NEOPIXEL_PIN 0
#define NEOPIXEL_NUMBER 1
#define NEOPIXEL_PINMUX IOMUXC_GPIO_00_GPIOMUX_IO00
#define NEOPIXEL_PORT GPIO1
#define NEOPIXEL_PIN 0
//--------------------------------------------------------------------+
// Button
@ -69,34 +69,34 @@
// USB UF2
//--------------------------------------------------------------------+
#define USB_VID 0x239A
#define USB_PID 0x00E1
#define USB_MANUFACTURER "Adafruit"
#define USB_PRODUCT "Metro M7 iMX RT1011"
#define USB_VID 0x239A
#define USB_PID 0x00E1
#define USB_MANUFACTURER "Adafruit"
#define USB_PRODUCT "Metro M7 iMX RT1011"
#define UF2_PRODUCT_NAME USB_MANUFACTURER " " USB_PRODUCT
#define UF2_BOARD_ID "MIMXRT1011-Metro-revA"
#define UF2_VOLUME_LABEL "METROM7BOOT"
#define UF2_INDEX_URL "https://www.adafruit.com/product/4950"
#define UF2_PRODUCT_NAME USB_MANUFACTURER " " USB_PRODUCT
#define UF2_BOARD_ID "MIMXRT1011-Metro-revA"
#define UF2_VOLUME_LABEL "METROM7BOOT"
#define UF2_INDEX_URL "https://www.adafruit.com/product/4950"
//--------------------------------------------------------------------+
// UART
//--------------------------------------------------------------------+
#define UART_DEV LPUART1
#define UART_RX_PINMUX IOMUXC_GPIO_09_LPUART1_RXD
#define UART_TX_PINMUX IOMUXC_GPIO_10_LPUART1_TXD
#define UART_DEV LPUART1
#define UART_RX_PINMUX IOMUXC_GPIO_09_LPUART1_RXD
#define UART_TX_PINMUX IOMUXC_GPIO_10_LPUART1_TXD
//--------------------------------------------------------------------+
// ESP32 Co-Processors
//--------------------------------------------------------------------+
#define ESP32_GPIO0_PINMUX IOMUXC_GPIO_SD_05_GPIO2_IO05
#define ESP32_GPIO0_PORT GPIO2
#define ESP32_GPIO0_PIN 5
#define ESP32_GPIO0_PINMUX IOMUXC_GPIO_SD_05_GPIO2_IO05
#define ESP32_GPIO0_PORT GPIO2
#define ESP32_GPIO0_PIN 5
#define ESP32_RESET_PINMUX IOMUXC_GPIO_AD_07_GPIOMUX_IO21
#define ESP32_RESET_PORT GPIO1
#define ESP32_RESET_PIN 21
#define ESP32_RESET_PINMUX IOMUXC_GPIO_AD_07_GPIOMUX_IO21
#define ESP32_RESET_PORT GPIO1
#define ESP32_RESET_PIN 21
#endif /* BOARD_H_ */

View file

@ -78,8 +78,13 @@
#define BOARD_UART_BAUDRATE 115200
// Init basic peripherals such as clock, led indicator control (gpio, pwm etc ..)
// This API does not init usb which is only init if DFU is entered
void board_init(void);
// opposite to board_init(), reset all board peripherals. Is called before jumping to application
// TODO force this API in the future
void board_teardown(void) __attribute__ ((weak));
// Reset board, not return
void board_reset(void);

View file

@ -73,6 +73,7 @@ int main(void)
if ( !check_dfu_mode() )
{
TU_LOG1("Jump to application\r\n");
if (board_teardown) board_teardown();
board_app_jump();
while(1) {}
}