al_sv 0 7 октября, 2022 Опубликовано 7 октября, 2022 · Жалоба Пытаюсь запустить обмен по SPI1 (если считать от 0, как в документации на MCU) с Flash (25-й). Вот мой код: Сначала настройка GPIO: #define FLASH_SCK_Pin GPIO_PIN_3 #define FLASH_SCK_GPIO_Port GPIOD #define FLASH_CS_Pin GPIO_PIN_4 #define FLASH_CS_GPIO_Port GPIOD #define FLASH_MISO_Pin GPIO_PIN_14 #define FLASH_MISO_GPIO_Port GPIOB #define FLASH_MOSI_Pin GPIO_PIN_15 #define FLASH_MOSI_GPIO_Port GPIOB #define FLASH_MOSI_MISO_GPIO_Port GPIOB GPIO_InitPara GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = FLASH_MISO_Pin |FLASH_MOSI_Pin; GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ; GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP; GPIO_Init(FLASH_MOSI_MISO_GPIO_Port, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = FLASH_SCK_Pin; GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ; GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP; GPIO_Init(FLASH_SCK_GPIO_Port, &GPIO_InitStructure); uint32_t alt_func_spi2_sck = 0x00000001<<23; //SPI2_SCK remapped to PD3 GPIO_PinRemapConfig2(PCFR5, alt_func_spi2_sck, ENABLE); //!!!! GPIO_InitStructure.GPIO_Pin = FLASH_CS_Pin; GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ; GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP; GPIO_Init(FLASH_CS_GPIO_Port, &GPIO_InitStructure); SPI_FLASH_CS_HIGH(); затем настройка SPI: SPI_InitPara SPI_InitStructure; SPI_InitStructure.SPI_TransType = SPI_TRANSTYPE_FULLDUPLEX; SPI_InitStructure.SPI_Mode = SPI_MODE_MASTER; SPI_InitStructure.SPI_FrameFormat = SPI_FRAMEFORMAT_8BIT; SPI_InitStructure.SPI_SCKPL = SPI_SCKPL_LOW; SPI_InitStructure.SPI_SCKPH = SPI_SCKPH_1EDGE; SPI_InitStructure.SPI_SWNSSEN = SPI_SWNSS_SOFT; SPI_InitStructure.SPI_PSC = SPI_PSC_32; SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB; SPI_InitStructure.SPI_CRCPOL = 7; QSPI_IO34DRV(SPI2,DISABLE); SPI_Init(SPI2, &SPI_InitStructure); SPI_Enable(SPI2, ENABLE); (здесь SPI2 - потому что нумерация SPI в примерах GD ведется с 1) При просмотре SFR в дебаггере вижу, что функции SPI_Init и SPI_Enable не приводят к установке нужных битов в регистрах МК. В том числе бита SPIEN. В чем проблема, никто не сталкивался? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sverchok 1 7 октября, 2022 Опубликовано 7 октября, 2022 (изменено) · Жалоба А у вас включено тактирование SPI? Изменено 7 октября, 2022 пользователем Sverchok Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
al_sv 0 7 октября, 2022 Опубликовано 7 октября, 2022 · Жалоба Да, включено, перед указанными настройками выполняю настройку тактирования всей нужной периферии, в т.ч. SPI2: void RCC_Configuration(void) { RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA , ENABLE); RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOB , ENABLE); RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC , ENABLE); RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOD , ENABLE); RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOE , ENABLE); RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_AF , ENABLE); /* Enable PWR and BKP clocks - from RTC module*/ RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_PWR | RCC_APB1PERIPH_BKP, ENABLE); /* Enable USART2 APB clock */ RCC_APB2PeriphClock_Enable(RCC_APB1PERIPH_USART2, ENABLE); RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_CAN1, ENABLE); RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_SPI1, ENABLE); RCC_APB2PeriphClock_Enable(RCC_APB1PERIPH_SPI2, ENABLE); RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_TIMER2, ENABLE); ///From USB module??? } Кроме того, если пытаться настроить SPI0 (или SPI1 по коду) аналогичным образом, все настройки производятся! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anxigeros 1 7 октября, 2022 Опубликовано 7 октября, 2022 · Жалоба 1 час назад, al_sv сказал: RCC_APB2PeriphClock_Enable(RCC_APB1PERIPH_SPI2, ENABLE); Такой же косяк и с USART2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
al_sv 0 8 октября, 2022 Опубликовано 8 октября, 2022 (изменено) · Жалоба 12 hours ago, Anxigeros said: Такой же косяк и с USART2. Спасибо, понял Изменено 8 октября, 2022 пользователем al_sv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться