zoukankan      html  css  js  c++  java
  • 嵌入式实操----基于RT1170 首板硬件之GPIO INPUT调试(十四)

    本文主要是通过迁移的思维,记录本人初次使用NXP MCUXpresso SDK API进行BSP开发

    前面调通了SDRAM Flash之后,接下来调试GPIO 输入功能,硬件设计如下所示

    1. 首先阅读原理图

    在这里插入图片描述

    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*/
    
  • 相关阅读:
    38. Count and Say(C++)
    35. Search Insert Position(C++)
    29. Divide Two Integers(C++)
    c++读取utf-8格式中英文混合string
    一种局部二值化算法:Sauvola算法
    Ubuntu 1804 本地显示远程服务器文件
    caffe 预训练 或者Fine-Tuning 操作
    caffe/blob.hpp:9:34: fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录
    转载---LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
    [leetcode-921-Minimum Add to Make Parentheses Valid]
  • 原文地址:https://www.cnblogs.com/lianghong881018/p/15169574.html
Copyright © 2011-2022 走看看