OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6449|回复: 9

STM32F030F4P6 SPI1配置问题

[复制链接]

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-28
在线时间
62 小时
发表于 2016-8-31 08:47:51 | 显示全部楼层 |阅读模式
1金钱
各位坛友,我的STM32F030F4P6 SPI配置不知道哪里出了问题,还请帮忙一起看一下

SPI.rar

1.11 KB, 下载次数: 665

最佳答案

查看完整内容[请看2#楼]

终于可以正常使用了,谢谢坛友们的交流和讨论,贴出代码,供大家以后参考
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-28
在线时间
62 小时
 楼主| 发表于 2016-8-31 08:47:52 | 显示全部楼层

终于可以正常使用了,谢谢坛友们的交流和讨论,贴出代码,供大家以后参考
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11561
金钱
11561
注册时间
2014-4-1
在线时间
1318 小时
发表于 2016-8-31 09:32:23 | 显示全部楼层

你最好把相关内容贴出来,可以提高回帖的兴趣。
下载、打开都怪麻烦的。

回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-28
在线时间
62 小时
 楼主| 发表于 2016-8-31 10:09:46 | 显示全部楼层
xuande 发表于 2016-8-31 09:32
你最好把相关内容贴出来,可以提高回帖的兴趣。
下载、打开都怪麻烦的。

好的,我刚刚又改了点东西,还是不行,不知怎么回事
void SPI_Config( void )
{
  SPI_InitTypeDef SPI_InitTypeStruct;
  GPIO_InitTypeDef GPIO_InitTypeStruct;
  
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1,ENABLE);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_0);  //SCK
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_0);  //MISO
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_0);  //MOSI

  GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitTypeStruct.GPIO_OType=GPIO_OType_OD;
        GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
        GPIO_InitTypeStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_Level_3;
  GPIO_Init(GPIOA,&GPIO_InitTypeStruct);

        SPI_I2S_DeInit(SPI1);
  SPI_InitTypeStruct.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;
        SPI_InitTypeStruct.SPI_CPHA=SPI_CPHA_2Edge;
        SPI_InitTypeStruct.SPI_CPOL=SPI_CPOL_High;
        SPI_InitTypeStruct.SPI_CRCPolynomial=7;
        SPI_InitTypeStruct.SPI_DataSize=SPI_DataSize_8b;//8λ
        SPI_InitTypeStruct.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//è«Ë«1¤
        SPI_InitTypeStruct.SPI_FirstBit=SPI_FirstBit_MSB;  //¸ßλÔúǰ
        SPI_InitTypeStruct.SPI_Mode=SPI_Mode_Master;//Ö÷»úÄ£ê½
        SPI_InitTypeStruct.SPI_NSS=SPI_NSS_Soft;  //èí¼tCSDÅoÅ
  SPI_Init(SPI1,&SPI_InitTypeStruct);
  SPI_RxFIFOThresholdConfig(SPI1,SPI_RxFIFOThreshold_QF);
  SPI_Cmd(SPI1, ENABLE);
}
回复

使用道具 举报

15

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2013-11-4
在线时间
112 小时
发表于 2016-8-31 12:08:44 | 显示全部楼层
配置SPI也要看你的外围器件时序,你可以试试先让STM32发送(比如0x55),然后用示波器测量发送引脚有没有数据出来,可以判断出发的数据是否正常,如果发数据没问题,接收的话问题就不大。
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-28
在线时间
62 小时
 楼主| 发表于 2016-8-31 14:17:29 | 显示全部楼层
一棵葱 发表于 2016-8-31 12:08
配置SPI也要看你的外围器件时序,你可以试试先让STM32发送(比如0x55),然后用示波器测量发送引脚有没有数 ...

嗯嗯,谢谢,现在发送的数没有问题,就是接收不到数据,要么全是0xFF,要么全是0x00
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2016-4-12
在线时间
28 小时
发表于 2016-8-31 16:47:11 | 显示全部楼层
读不到回复很可能是在发送时第一位没有写“1”!看你读的器件而已了
读写第一位是不一样的!
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-28
在线时间
62 小时
 楼主| 发表于 2016-8-31 16:50:37 | 显示全部楼层
嗯嗯,读时最高位为0,写时最高位为1,请问有没有可能跟端口的配置有关系?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-8-31 20:50:25 | 显示全部楼层
帮顶
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-28
在线时间
62 小时
 楼主| 发表于 2016-8-31 21:54:28 | 显示全部楼层
[mw_shl_code=c,true]void SPI_Config( void )
{
  SPI_InitTypeDef SPI_InitTypeStruct;
  GPIO_InitTypeDef GPIO_InitTypeStruct;
  
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1,ENABLE);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_0);  //SCK
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_0);  //MISO
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_0);  //MOSI

  GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitTypeStruct.GPIO_OType=GPIO_OType_OD;
        GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
        GPIO_InitTypeStruct.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_Level_3;
  GPIO_Init(GPIOA,&GPIO_InitTypeStruct);

        SPI_I2S_DeInit(SPI1);
  SPI_InitTypeStruct.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;
        SPI_InitTypeStruct.SPI_CPHA=SPI_CPHA_1Edge;
        SPI_InitTypeStruct.SPI_CPOL=SPI_CPOL_High;
        SPI_InitTypeStruct.SPI_CRCPolynomial=7;
        SPI_InitTypeStruct.SPI_DataSize=SPI_DataSize_8b;//8λ
        SPI_InitTypeStruct.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//è«Ë«1¤
        SPI_InitTypeStruct.SPI_FirstBit=SPI_FirstBit_MSB;  //¸ßλÔúǰ
        SPI_InitTypeStruct.SPI_Mode=SPI_Mode_Master;//Ö÷»úÄ£ê½
        SPI_InitTypeStruct.SPI_NSS=SPI_NSS_Soft;    //èí¼tCSDÅoÅ
  SPI_Init(SPI1,&SPI_InitTypeStruct);
  SPI_RxFIFOThresholdConfig(SPI1,SPI_RxFIFOThreshold_QF);
  SPI_Cmd(SPI1, ENABLE);
}[/mw_shl_code]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 23:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表