Перейти к содержанию
    

SPI1 в GD32F207 не получается запустить

Пытаюсь запустить обмен по 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас использован remap портов для него надо еще AFIO тактировать. Но на SPIEN это бы не повлияло. 

Я думаю вы тут напутали с нумерацией SPI. Приведите ее в порядок. В какой IDE дебажите и какой проц там выбран не STM32 ли?

По какому адресу смотрите SPIEN в отладке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...