庆科社区
直播中

agdhun

9年用户 470经验值
擅长:可编程逻辑 嵌入式技术 EDA/IC设计 处理器/DSP 接口/总线/驱动 RF/无线
私信 关注

【MiCOKit试用体验】+ MiCO 外设资源定义与映射实现

本帖最后由 agdhun 于 2015-9-28 15:51 编辑

本文摘自mico.io
  • MiCO 系统将不同MCU的外设硬件资源,如GPIO,ADC,I2C等做了统一定义
    • MiCO外设资源的 结构体定义在: Board/板级型号/platform.h中
    • MiCO外设资源对应MCU资源的映射实现在: Board/板级型号/platform.c中

对应的资源定义和映射内容,以MiCO GPIO和MiCO I2C为例说明,如下:
(说明:其它资源定义与映射关系,请参考MiCO SDK中的Board/板级型号/platform.h和platform.c内容)

2.1 MiCO GPIO
MiCO GPIO结构体定义,举例如下:
  1. typedef enum
  2. {
  3.     MICO_SYS_LED,
  4.     MICO_RF_LED,
  5.     BOOT_SEL,
  6.     MFG_SEL,
  7.     EasyLink_BUTTON,
  8.     STDIO_UART_RX,  
  9.     STDIO_UART_TX,  
  10.     FLASH_PIN_SPI_CS,
  11.     FLASH_PIN_SPI_CLK,
  12.     FLASH_PIN_SPI_MOSI,
  13.     FLASH_PIN_SPI_MISO,

  14.     MICO_GPIO_2,
  15.     MICO_GPIO_8,
  16.     MICO_GPIO_9,
  17.     MICO_GPIO_12,
  18.     MICO_GPIO_14,
  19.     MICO_GPIO_16,
  20.     MICO_GPIO_17,
  21.     MICO_GPIO_18,
  22.     MICO_GPIO_19,
  23.     MICO_GPIO_27,  
  24.     MICO_GPIO_29,
  25.     MICO_GPIO_30,
  26.     MICO_GPIO_31,
  27.     MICO_GPIO_33,
  28.     MICO_GPIO_34,
  29.     MICO_GPIO_35,
  30.     MICO_GPIO_36,
  31.     MICO_GPIO_37,
  32.     MICO_GPIO_38,
  33.     MICO_GPIO_MAX, /* Denotes the total number of GPIO port aliases. Not a valid GPIO alias */
  34.     MICO_GPIO_NONE,
  35. } mico_gpio_t;
不同MCU 的 GPIO管脚映射到 MiCO GPIO,举例如下:
  1. const platform_gpio_t platform_gpio_pins[] =
  2. {
  3.   /* Common GPIOs for internal use */
  4.   [MICO_SYS_LED]                      = { GPIOB,  13 },
  5.   [MICO_RF_LED]                       = { GPIOB,  8 },
  6.   [BOOT_SEL]                          = { GPIOB,  1 },
  7.   [MFG_SEL]                           = { GPIOB,  0 },
  8.   [EasyLink_BUTTON]                   = { GPIOA,  1 },
  9.   [STDIO_UART_RX]                     = { GPIOA,  3 },  
  10.   [STDIO_UART_TX]                     = { GPIOA,  2 },  
  11.   [FLASH_PIN_SPI_CS  ]                = { GPIOA, 15 },
  12.   [FLASH_PIN_SPI_CLK ]                = { GPIOB,  3 },
  13.   [FLASH_PIN_SPI_MOSI]                = { GPIOA,  7 },
  14.   [FLASH_PIN_SPI_MISO]                = { GPIOB,  4 },

  15.   /* GPIOs for external use */
  16.   [MICO_GPIO_2]                       = { GPIOB,  2 },
  17.   [MICO_GPIO_8]                       = { GPIOA , 2 },
  18.   [MICO_GPIO_9]                       = { GPIOA,  1 },
  19.   [MICO_GPIO_12]                      = { GPIOA,  3 },
  20.   [MICO_GPIO_14]                      = { GPIOA,  0 },
  21.   [MICO_GPIO_16]                      = { GPIOC, 13 },
  22.   [MICO_GPIO_17]                      = { GPIOB, 10 },
  23.   [MICO_GPIO_18]                      = { GPIOB,  9 },
  24.   [MICO_GPIO_19]                      = { GPIOB, 12 },
  25.   [MICO_GPIO_27]                      = { GPIOA, 12 },  
  26.   [MICO_GPIO_29]                      = { GPIOA, 10 },
  27.   [MICO_GPIO_30]                      = { GPIOB,  6 },
  28.   [MICO_GPIO_31]                      = { GPIOB,  8 },
  29.   [MICO_GPIO_33]                      = { GPIOB, 13 },
  30.   [MICO_GPIO_34]                      = { GPIOA,  5 },
  31.   [MICO_GPIO_35]                      = { GPIOA, 11 },
  32.   [MICO_GPIO_36]                      = { GPIOB,  1 },
  33.   [MICO_GPIO_37]                      = { GPIOB,  0 },
  34.   [MICO_GPIO_38]                      = { GPIOA,  4 },
  35. };

2.2 MiCO I2C
MiCO I2C结构体定义
  1. typedef enum
  2. {
  3.     MICO_I2C_1,
  4.     MICO_I2C_MAX, /* Denotes the total number of I2C port aliases. Not a valid I2C alias */
  5.     MICO_I2C_NONE,
  6. } mico_i2c_t;
将不同MCU的 I2C 映射到 MiCO I2C
  1. const platform_i2c_t platform_i2c_peripherals[] =
  2. {
  3.   [MICO_I2C_1] =
  4.   {
  5.     .port                         = I2C1,
  6.     .pin_scl                      = &platform_gpio_pins[MICO_GPIO_17],
  7.     .pin_sda                      = &platform_gpio_pins[MICO_GPIO_18],
  8.     .peripheral_clock_reg         = RCC_APB1Periph_I2C1,
  9.     .tx_dma                       = DMA1,
  10.     .tx_dma_peripheral_clock      = RCC_AHB1Periph_DMA1,
  11.     .tx_dma_stream                = DMA1_Stream7,
  12.     .rx_dma_stream                = DMA1_Stream5,
  13.     .tx_dma_stream_id             = 7,
  14.     .rx_dma_stream_id             = 5,
  15.     .tx_dma_channel               = DMA_Channel_1,
  16.     .rx_dma_channel               = DMA_Channel_1,
  17.     .gpio_af                      = GPIO_AF_I2C1
  18.   },
  19. };

回帖(2)

mameng

2015-9-15 17:58:49
重点写一写实际操作
举报

chengjia213

2015-9-16 22:42:17
搞不懂```太乱了````````````````
举报

更多回帖

发帖
×
20
完善资料,
赚取积分