11回答

1收藏

STM32F373 SPI无输出

#开源分享 #开源分享 7431 人阅读 | 11 人回复 | 2013-06-17

各位,今天做SPI实验,怎么弄都没有输出,请问是怎么回事?
GPIO_InitTypeDef GPIO_InitStructure;
        SPI_InitTypeDef  SPI_InitStructure;
       
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;     //MOSI ??????????
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     //SCK  ??????????
        GPIO_Init(GPIOC, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;     //SCK  ??????????
        GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Connect PXx to SPI_SCK */
        GPIO_PinAFConfig(GPIOC, GPIO_Pin_7, GPIO_AF_5);
        /* Connect PXx to SPI_MISO */
        GPIO_PinAFConfig(GPIOC, GPIO_Pin_8, GPIO_AF_5);
        /* Connect PXx to SPI_MOSI */
        GPIO_PinAFConfig(GPIOC, GPIO_Pin_9, GPIO_AF_5);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                                     //NSS  ???????¨?????ì????  
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC, GPIO_Pin_6);
       
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//??spi ??
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//?÷
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//??????
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//CPOL=1?±???ü????
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//CPHA=2 ??????????2??
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//??nss ??????
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;//??spi ?????

        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//???????°
        SPI_InitStructure.SPI_CRCPolynomial = 7;//????CRC ????
        SPI_Init(SPI1, &SPI_InitStructure);//?????
        SPI_RxFIFOThresholdConfig(SPI1, SPI_RxFIFOThreshold_QF);//??????
        SPI_Cmd(SPI1, ENABLE); /*!< SD_SPI enable */
分享到:
回复

使用道具 举报

回答|共 11 个

倒序浏览

沙发

woshi2

发表于 2013-6-17 03:51:04 | 只看该作者

使用示波器和逻辑分析仪,MOSI/MISO/SCK都为高电平
板凳

xiaopaohu123

发表于 2013-6-17 11:00:21 | 只看该作者

先按例程搞一搞,目前只看到你的初始化,你不去读写对应的数据寄存器是看不到有数据和脉冲的
地板

woshi2

发表于 2013-6-17 15:31:25 | 只看该作者

xiaopaohu123 发表于 2013-6-17 11:00
先按例程搞一搞,目前只看到你的初始化,你不去读写对应的数据寄存器是看不到有数据和脉冲的 ...

一直调用这个函数发送0x0a
uint8_t SPI1Byte(uint8_t byte)
{
        /*????·????????÷??*/
        while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);
    /*·???????×???*/
        SPI_SendData8(SPI1, byte);
        /* ?????????????÷???§*/
        while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET);
        return SPI_ReceiveData8(SPI1);
}
5#

青风

发表于 2013-6-17 15:41:50 | 只看该作者

请对照我的历程
我的淘宝店:http://qfv5.taobao.com/
6#

xiaopaohu123

发表于 2013-6-17 15:49:06 | 只看该作者

设置SPI前,SPI_Cmd(SPI1, DISABLE);  用了吗?
7#

woshi2

发表于 2013-6-17 16:12:10 | 只看该作者

xiaopaohu123 发表于 2013-6-17 15:49
设置SPI前,SPI_Cmd(SPI1, DISABLE);  用了吗?

没有,这个很必要吗,我试试
8#

woshi2

发表于 2013-6-17 16:14:02 | 只看该作者

xiaopaohu123 发表于 2013-6-17 15:49
设置SPI前,SPI_Cmd(SPI1, DISABLE);  用了吗?

没有,这个很必要吗,我试试
9#

xiaopaohu123

发表于 2013-6-17 16:16:41 | 只看该作者

最好试一下
10#

woshi2

发表于 2013-6-17 19:29:46 | 只看该作者

xiaopaohu123 发表于 2013-6-17 16:16
最好试一下

SPI一开始怎么都不输出任何信号,SCK/MOSI/MISO都为高电平,花了两个通宵的时间,找问题。最终发现GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_5);中GPIO_PinSource7写成GPIO_Pin_7了,泪奔啊!改过来就好了。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条