查看: 6658|回复: 11

STM32F373 SPI无输出

[复制链接]

该用户从未签到

发表于 2013-6-17 03:44:48 | 显示全部楼层 |阅读模式
分享到:
各位,今天做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 */
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2013-6-17 03:51:04 | 显示全部楼层
使用示波器和逻辑分析仪,MOSI/MISO/SCK都为高电平
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2019-4-2 16:02
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-6-17 11:00:21 | 显示全部楼层
    先按例程搞一搞,目前只看到你的初始化,你不去读写对应的数据寄存器是看不到有数据和脉冲的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 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);
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-6-17 15:41:50 | 显示全部楼层
    请对照我的历程
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-2 16:02
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-6-17 15:49:06 | 显示全部楼层
    设置SPI前,SPI_Cmd(SPI1, DISABLE);  用了吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2013-6-17 16:12:10 | 显示全部楼层
    xiaopaohu123 发表于 2013-6-17 15:49
    设置SPI前,SPI_Cmd(SPI1, DISABLE);  用了吗?

    没有,这个很必要吗,我试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2013-6-17 16:14:02 | 显示全部楼层
    xiaopaohu123 发表于 2013-6-17 15:49
    设置SPI前,SPI_Cmd(SPI1, DISABLE);  用了吗?

    没有,这个很必要吗,我试试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-2 16:02
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-6-17 16:16:41 | 显示全部楼层
    最好试一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 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 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-24 14:57 , Processed in 0.193727 second(s), 32 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.