123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #include <rtthread.h>
- #include <board.h>
- #ifdef RT_USING_LWIP
- #include "stm32_eth.h"
- #endif /* RT_USING_LWIP */
- #ifdef RT_USING_SPI
- #include "rt_stm32f10x_spi.h"
- #if defined(RT_USING_DFS) && defined(RT_USING_SPI_MSD)
- #include "spi_msd.h"
- #endif /* RT_USING_DFS */
- /*
- * SPI1_MOSI: PA7
- * SPI1_MISO: PA6
- * SPI1_SCK : PA5
- *
- * CS0: PA4 SD card.
- */
- static void rt_hw_spi_init(void)
- {
- #ifdef RT_USING_SPI1
- /* register spi bus */
- {
- static struct stm32_spi_bus stm32_spi;
- GPIO_InitTypeDef GPIO_InitStructure;
- /* Enable GPIO clock */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,
- ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- stm32_spi_register(SPI1, &stm32_spi, "spi1");
- }
- /* attach cs */
- {
- static struct rt_spi_device spi_device;
- static struct stm32_spi_cs spi_cs;
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- /* spi21: PG10 */
- spi_cs.GPIOx = GPIOA;
- spi_cs.GPIO_Pin = GPIO_Pin_4;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- GPIO_InitStructure.GPIO_Pin = spi_cs.GPIO_Pin;
- GPIO_SetBits(spi_cs.GPIOx, spi_cs.GPIO_Pin);
- GPIO_Init(spi_cs.GPIOx, &GPIO_InitStructure);
- rt_spi_bus_attach_device(&spi_device, "spi10", "spi1", (void*)&spi_cs);
- }
- #endif /* RT_USING_SPI1 */
- }
- #endif /* RT_USING_SPI */
- void rt_platform_init(void)
- {
- #ifdef RT_USING_SPI
- rt_hw_spi_init();
- #if defined(RT_USING_DFS) && defined(RT_USING_SPI_MSD)
- /* init sdcard driver */
- {
- extern void rt_hw_msd_init(void);
- GPIO_InitTypeDef GPIO_InitStructure;
- /* PC4 : SD Power */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- /* SD card power on. */
- GPIO_ResetBits(GPIOC, GPIO_Pin_4);
- rt_thread_delay(2);
- msd_init("sd0", "spi10");
- }
- #endif /* RT_USING_DFS && RT_USING_SPI_MSD */
- #endif // RT_USING_SPI
- #ifdef RT_USING_LWIP
- /* initialize eth interface */
- rt_hw_stm32_eth_init();
- #endif /* RT_USING_LWIP */
- }
|