OpenEdv-开源电子网

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

硬件SPI驱动,管脚有问题

[复制链接]

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-2-11
在线时间
4 小时
发表于 2015-6-30 11:14:59 | 显示全部楼层 |阅读模式
5金钱
软件SPI已经学懂。硬件SPI却出了点问题:

使用STM32F103C8T6驱动硬件SPI时,
发现:
管脚设置成复用推挽输出时,没有输出波形。
然而:
管教设置成推挽输出时,仅MISO、NSS管脚输出波形。其他两个管脚没有波形
问题:
1、GPIO初始化是一起初始化的,为什么出现不同的现象?
2、为什么设置成复用推挽输出、复用开漏输出都不能产生波形?


产生波形:



发现,只有RES有信号(设置推挽输出)

而将这几个管脚设置成推挽输出时,波形图为:

这样的情况是为什么??
需要大神详细解答啊!!尤其原子哥,这个问题折腾我快四天了、、、、跪谢!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-6-30 11:26:47 | 显示全部楼层
http://www.openedv.com/posts/list/54694.htm
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-2-11
在线时间
4 小时
 楼主| 发表于 2015-6-30 17:33:47 | 显示全部楼层
回复【2楼】烟酒不沾:
---------------------------------
我已经改过了,还是不行。

 GPIO_InitTypeDef GPIO_InitStructure;
 SPI_InitTypeDef SPI_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE );

  GPIO_InitStructure.GPIO_Pin   =  GPIO_Pin_5| GPIO_Pin_7 ;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure );

  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_4 |GPIO_Pin_6 ;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure );

  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 ;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure );

  SPI_InitStructure.SPI_Direction     = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode          = SPI_Mode_Master;
  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_FirstBit      = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; 
  SPI_Init(SPI1, &SPI_InitStructure);

  SPI_Cmd(SPI1, ENABLE);                       // ????SPIx
  SPI_ReadWrite_Byte(SPI1,0xff);
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5788
金钱
5788
注册时间
2013-11-22
在线时间
1213 小时
发表于 2015-6-30 21:26:37 | 显示全部楼层
MOSI   MISO  SCK   复用推挽输出
片选CS 推挽输出  
参考下mini开发板的 SPI例程
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-2-11
在线时间
4 小时
 楼主| 发表于 2015-6-30 21:50:47 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
在上面2楼贴出来的程序中,已经是这样设置了。还是不可以的。
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5788
金钱
5788
注册时间
2013-11-22
在线时间
1213 小时
发表于 2015-6-30 22:09:11 | 显示全部楼层
回复【5楼】赵大鳖:
---------------------------------
PA6脚  你设置的是浮空输入
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-2-11
在线时间
4 小时
 楼主| 发表于 2015-6-30 22:17:58 | 显示全部楼层
回复【6楼】lycreturn:
---------------------------------
void SPI1_GPIO_Initial(void)  
{
  GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE);

  GPIO_InitStructure.GPIO_Pin   =  GPIO_Pin_5| GPIO_Pin_7 |GPIO_Pin_6 ;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure );

  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_4 ;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure );

  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 ;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure );

  SPI_InitStructure.SPI_Direction     = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode          = SPI_Mode_Master;
  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_FirstBit      = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; 
  SPI_Init(SPI1, &SPI_InitStructure);

  SPI_Cmd(SPI1, ENABLE);                       // ????SPIx

SPI_ReadWrite_Byte(SPI1,0xff);

}

/********************************************************************
** ??????????SPI2_Init
** ??????????SPI2??????????
** ??????????
** ·? ?? ????
** ???ü???÷??
*********************************************************************/
void SPI2_GPIO_Initial( void)  
{
  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE);

  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_14|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure );


GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 ;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure );

}

已经改过了。还是不行
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5788
金钱
5788
注册时间
2013-11-22
在线时间
1213 小时
发表于 2015-6-30 22:54:27 | 显示全部楼层
回复【7楼】赵大鳖:
---------------------------------
仿真是什么效果呢
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-2-11
在线时间
4 小时
 楼主| 发表于 2015-6-30 23:01:18 | 显示全部楼层
在六楼配置的情况下。是没有波形的。全部为低电平
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-28 04:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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