本帖最后由 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 GPIOMiCO GPIO结构体定义,举例如下:
- typedef enum
- {
- MICO_SYS_LED,
- MICO_RF_LED,
- BOOT_SEL,
- MFG_SEL,
- EasyLink_BUTTON,
- STDIO_UART_RX,
- STDIO_UART_TX,
- FLASH_PIN_SPI_CS,
- FLASH_PIN_SPI_CLK,
- FLASH_PIN_SPI_MOSI,
- FLASH_PIN_SPI_MISO,
-
- MICO_GPIO_2,
- MICO_GPIO_8,
- MICO_GPIO_9,
- MICO_GPIO_12,
- MICO_GPIO_14,
- MICO_GPIO_16,
- MICO_GPIO_17,
- MICO_GPIO_18,
- MICO_GPIO_19,
- MICO_GPIO_27,
- MICO_GPIO_29,
- MICO_GPIO_30,
- MICO_GPIO_31,
- MICO_GPIO_33,
- MICO_GPIO_34,
- MICO_GPIO_35,
- MICO_GPIO_36,
- MICO_GPIO_37,
- MICO_GPIO_38,
- MICO_GPIO_MAX, /* Denotes the total number of GPIO port aliases. Not a valid GPIO alias */
- MICO_GPIO_NONE,
- } mico_gpio_t;
复制代码
不同MCU 的 GPIO管脚映射到 MiCO GPIO,举例如下:
- const platform_gpio_t platform_gpio_pins[] =
- {
- /* Common GPIOs for internal use */
- [MICO_SYS_LED] = { GPIOB, 13 },
- [MICO_RF_LED] = { GPIOB, 8 },
- [BOOT_SEL] = { GPIOB, 1 },
- [MFG_SEL] = { GPIOB, 0 },
- [EasyLink_BUTTON] = { GPIOA, 1 },
- [STDIO_UART_RX] = { GPIOA, 3 },
- [STDIO_UART_TX] = { GPIOA, 2 },
- [FLASH_PIN_SPI_CS ] = { GPIOA, 15 },
- [FLASH_PIN_SPI_CLK ] = { GPIOB, 3 },
- [FLASH_PIN_SPI_MOSI] = { GPIOA, 7 },
- [FLASH_PIN_SPI_MISO] = { GPIOB, 4 },
-
- /* GPIOs for external use */
- [MICO_GPIO_2] = { GPIOB, 2 },
- [MICO_GPIO_8] = { GPIOA , 2 },
- [MICO_GPIO_9] = { GPIOA, 1 },
- [MICO_GPIO_12] = { GPIOA, 3 },
- [MICO_GPIO_14] = { GPIOA, 0 },
- [MICO_GPIO_16] = { GPIOC, 13 },
- [MICO_GPIO_17] = { GPIOB, 10 },
- [MICO_GPIO_18] = { GPIOB, 9 },
- [MICO_GPIO_19] = { GPIOB, 12 },
- [MICO_GPIO_27] = { GPIOA, 12 },
- [MICO_GPIO_29] = { GPIOA, 10 },
- [MICO_GPIO_30] = { GPIOB, 6 },
- [MICO_GPIO_31] = { GPIOB, 8 },
- [MICO_GPIO_33] = { GPIOB, 13 },
- [MICO_GPIO_34] = { GPIOA, 5 },
- [MICO_GPIO_35] = { GPIOA, 11 },
- [MICO_GPIO_36] = { GPIOB, 1 },
- [MICO_GPIO_37] = { GPIOB, 0 },
- [MICO_GPIO_38] = { GPIOA, 4 },
- };
复制代码
2.2 MiCO I2CMiCO I2C结构体定义
- typedef enum
- {
- MICO_I2C_1,
- MICO_I2C_MAX, /* Denotes the total number of I2C port aliases. Not a valid I2C alias */
- MICO_I2C_NONE,
- } mico_i2c_t;
复制代码
将不同MCU的 I2C 映射到 MiCO I2C
- const platform_i2c_t platform_i2c_peripherals[] =
- {
- [MICO_I2C_1] =
- {
- .port = I2C1,
- .pin_scl = &platform_gpio_pins[MICO_GPIO_17],
- .pin_sda = &platform_gpio_pins[MICO_GPIO_18],
- .peripheral_clock_reg = RCC_APB1Periph_I2C1,
- .tx_dma = DMA1,
- .tx_dma_peripheral_clock = RCC_AHB1Periph_DMA1,
- .tx_dma_stream = DMA1_Stream7,
- .rx_dma_stream = DMA1_Stream5,
- .tx_dma_stream_id = 7,
- .rx_dma_stream_id = 5,
- .tx_dma_channel = DMA_Channel_1,
- .rx_dma_channel = DMA_Channel_1,
- .gpio_af = GPIO_AF_I2C1
- },
- };
复制代码
0
|
|
|
|