嵌入式實操——基於RT1170 首板硬體之GPIO INPUT除錯(十四)

本文主要是透過遷移的思維,記錄本人初次使用NXP MCUXpresso SDK API進行BSP開發

前面調通了SDRAM Flash之後,接下來除錯GPIO 輸入功能,硬體設計如下所示

1。 首先閱讀原理圖

嵌入式實操——基於RT1170 首板硬體之GPIO INPUT除錯(十四)

2。 除錯過程

2。 1 引腳初始化

/** * @brief GPIO Input pin init * * @param [in] void * @param [out] None * * @return * * @history * 1。Date : 2021-5-27 14:25:57 * Author : panzidong * Modification : Created function */void bsp_input_init_config(void) { CLOCK_EnableClock(kCLOCK_Iomuxc); /* LPCG on: LPCG is ON。 */ CLOCK_EnableClock(kCLOCK_Iomuxc_Lpsr); /* LPCG on: LPCG is ON。 */ /* GPIO configuration of oIGN on GPIO_AD_03 (pin P15) */ gpio_pin_config_t oIGN_config = { 。direction = kGPIO_DigitalInput, 。outputLogic = 0U, 。interruptMode = kGPIO_NoIntmode }; /* Initialize GPIO functionality on GPIO_AD_03 (pin P15) */ GPIO_PinInit(GPIO9, 2U, &oIGN_config); /* GPIO configuration of BRAKE_DET_AD on GPIO_AD_15 (pin M14) */ gpio_pin_config_t BRAKE_DET_AD_config = { 。direction = kGPIO_DigitalInput, 。outputLogic = 0U, 。interruptMode = kGPIO_NoIntmode }; /* Initialize GPIO functionality on GPIO_AD_15 (pin M14) */ GPIO_PinInit(GPIO9, 14U, &BRAKE_DET_AD_config); /* GPIO configuration of CAN_ERR on IOMUXC_LPSR_SW_MUX_CTL_PAD_GPIO_LPSR_11 (pin T5) */ gpio_pin_config_t CAN_ERR_config = { 。direction = kGPIO_DigitalInput, 。outputLogic = 0U, 。interruptMode = kGPIO_NoIntmode }; /* Initialize GPIO functionality on IOMUXC_LPSR_SW_MUX_CTL_PAD_GPIO_LPSR_11 (pin T5) */ GPIO_PinInit(GPIO12, 11U, &CAN_ERR_config); IOMUXC_SetPinMux( IOMUXC_GPIO_AD_03_GPIO9_IO02, /* GPIO_AD_03 is configured as GPIO9_IO02 */ 0U); /* Software Input On Field: Input Path is determined by functionality */ IOMUXC_SetPinMux( IOMUXC_GPIO_AD_15_GPIO9_IO14, /* GPIO_AD_15 is configured as GPIO9_IO14 */ 0U); /* Software Input On Field: Input Path is determined by functionality */ IOMUXC_SetPinMux( IOMUXC_GPIO_LPSR_11_GPIO12_IO11, /* GPIO_LPSR_11 is configured as GPIO12_IO11 */ 0U); /* Software Input On Field: Input Path is determined by functionality */ IOMUXC_SetPinConfig( IOMUXC_GPIO_AD_03_GPIO9_IO02, IOMUXC_SW_PAD_CTL_PAD_PUE(0x0)); /*Forbidden Pull Down Pull Up*/ IOMUXC_SetPinConfig( IOMUXC_GPIO_AD_15_GPIO9_IO14, IOMUXC_SW_PAD_CTL_PAD_PUE(0x0)); /*Forbidden Pull Down Pull Up*/ IOMUXC_SetPinConfig( IOMUXC_GPIO_LPSR_11_GPIO12_IO11, IOMUXC_SW_PAD_CTL_PAD_PUE(0x0)); /*Forbidden Pull Down Pull Up*/}

2。 2 獲取電平

/** * @brief get oIGN input level * * @param [in] None * @param [out] None * * @return * * @history * 1。Date : 2021-5-27 9:48:47 * Author : panzidong * Modification : Created function */int bsp_input_oIGN_level(){ return GPIO_PinRead(INPUT_oIGN_GPIO, INPUT_oIGN_GPIO_PIN);}/** * @brief get BRAKE_DET_AD input level * * @param [in] None * @param [out] None * * @return * * @history * 1。Date : 2021-5-27 9:49:21 * Author : panzidong * Modification : Created function */int bsp_input_BRAKE_DET_AD_level(){ return GPIO_PinRead(INPUT_BRAKE_DET_AD_GPIO, INPUT_BRAKE_DET_AD_GPIO_PIN);}/** * @brief get CAN_ERR input level * * @param [in] None * @param [out] None * * @return * * @history * 1。Date : 2021-5-27 9:50:21 * Author : panzidong * Modification : Created function */int bsp_input_CAN_ERR_level(){ return GPIO_PinRead(INPUT_CAN_ERR_GPIO, INPUT_CAN_ERR_GPIO_PIN);}

3。 總結

在除錯GPIO時,雖然可以正常獲取到GPIO的高低電平,但是輸入電平為高時,測量引腳電平只有1。7V。

最後透過斷開引腳的禁用引腳的上下拉解決。

IOMUXC_SetPinConfig( IOMUXC_GPIO_AD_03_GPIO9_IO02, IOMUXC_SW_PAD_CTL_PAD_PUE(0x0)); /*Forbidden Pull Down Pull Up*/ IOMUXC_SetPinConfig( IOMUXC_GPIO_AD_15_GPIO9_IO14, IOMUXC_SW_PAD_CTL_PAD_PUE(0x0)); /*Forbidden Pull Down Pull Up*/ IOMUXC_SetPinConfig( IOMUXC_GPIO_LPSR_11_GPIO12_IO11, IOMUXC_SW_PAD_CTL_PAD_PUE(0x0)); /*Forbidden Pull Down Pull Up*/