时光虫子 发表于 2016-5-6 22:37:33

STM32F030C8T6 SPI1问题

STM32F030C8T6SPI1 引脚PA4(SPI1_NSS)
PA5(SPI1_SCK)
PA6(SPI1_MISO)
PA7(SPI1_MOSI)

程序是在F103移植过去的,没有反应,在论坛找了一个SPI例子,里面用的是PB3-PB4-PB5改了一下引脚定义成我自己的也是没有反应,
是不是不能用着几个引脚上的SPI啊
PA4(SPI1_NSS)
PA5(SPI1_SCK)
PA6(SPI1_MISO)
PA7(SPI1_MOSI)

发表于 2016-5-7 09:01:06

楼主有没有配置对应IO的AF功能?最好把SPI的初始化代码贴出来。

时光虫子 发表于 2016-5-7 09:30:56

void SPI1_InitConfig(void)
{
        GPIO_InitTypeDefGPIO_InitStructure;
        SPI_InitTypeDef   SPI_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,   ENABLE);
       RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,    ENABLE);
       GPIO_PinAFConfig(GPIOA, GPIO_PinSource5,GPIO_AF_0);                        // 配置PA5 复用功能
      GPIO_PinAFConfig(GPIOA, GPIO_PinSource6,GPIO_AF_0);                        // 配置PA6 复用功能
   GPIO_PinAFConfig(GPIOA, GPIO_PinSource7,GPIO_AF_0);                        // 配置PA7 复用功能

        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_4;//SPI CS
        GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
//        GPIO_SetBits(GPIOA,GPIO_Pin_4);       
        SetNSS();


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_DOWN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

//        GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);

       
        //SPI CONFIGURATION
        SPI_InitStructure.SPI_Direction   = SPI_Direction_2Lines_FullDuplex;         
        SPI_InitStructure.SPI_DataSize      = SPI_DataSize_8b;
        SPI_InitStructure.SPI_CPOL          = SPI_CPOL_High;
        SPI_InitStructure.SPI_CPHA          = SPI_CPHA_2Edge;
        SPI_InitStructure.SPI_NSS         = SPI_NSS_Soft;   
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
        SPI_InitStructure.SPI_FirstBit      = SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial = 7;                                
        SPI_InitStructure.SPI_Mode          = SPI_Mode_Master;
        SPI_Init(SPI1, &SPI_InitStructure);
       
        //
        SPI_NSSInternalSoftwareConfig(SPI1, SPI_NSSInternalSoft_Set);
        SPI_RxFIFOThresholdConfig(SPI1, SPI_RxFIFOThreshold_QF);
        SPI_Cmd(SPI1, ENABLE); /* SPI enable */
       
       
}

时光虫子 发表于 2016-5-7 09:31:16

安 发表于 2016-5-7 09:01
楼主有没有配置对应IO的AF功能?最好把SPI的初始化代码贴出来。

初始化应该没有问题

modu8888 发表于 2016-5-7 16:54:09

楼主调试的怎么样了?
我最近在搞F1的应用,也要操作SPI等等,

你为什么不用STM32CubeMX?

发表于 2016-5-7 18:01:42

监听一下波形,看看有没有输出。注意NSS引脚是否拉低。

时光虫子 发表于 2016-5-7 19:33:28

modu8888 发表于 2016-5-7 16:54
楼主调试的怎么样了?
我最近在搞F1的应用,也要操作SPI等等,



没有用过这个软件,看到很多人都在用,改天下载看看

时光虫子 发表于 2016-5-7 19:34:33

安 发表于 2016-5-7 18:01
监听一下波形,看看有没有输出。注意NSS引脚是否拉低。

NSS片选是低电平,我在看看

pener 发表于 2016-5-8 23:37:18

外设时钟打开不对

alisa123 发表于 2016-5-9 09:03:10

ybhuangfugui 发表于 2016-5-8 23:53
关于SPI读写FLASH:https://www.stmcu.org.cn/module/forum/thread-606019-1-1.html

之前没有自己调试过spi,请问有关于两块MCU的SPI通讯的讲解吗??可否分享学习?谢谢
页: [1] 2
查看完整版本: STM32F030C8T6 SPI1问题