打印

关于STM32 SPI引脚配置的问题????

[复制链接]
8625|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_SPI1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  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_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI1, &SPI_InitStructure);
    SPI_SSOutputCmd(SPI1, ENABLE);//使能SPI1的SPI1_NSS(PA4)输出
  SPI_Cmd(SPI1, ENABLE);

配置的为主模式,PA6口不是MISO,上面的配置为什么是复用的推挽输出??(GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
)我是一个初学者,还请各位大哥帮帮忙,呵呵。
沙发
sunmonth| | 2010-1-22 15:41 | 只看该作者
MISO应该配备为输入

使用特权

评论回复
板凳
IJK| | 2010-1-22 16:31 | 只看该作者
STM32 SPI配置的为主模式,PA6口作为MISO,可以配置成GPIO_Mode_AF_PP,也可以配置成输入,都可以正常工作。类似的USART_RX,也都可以配置成GPIO_Mode_AF_PP或者输入。

这是目前的STM32让人记得迷惑的地方。

使用特权

评论回复
地板
香水城| | 2010-1-22 18:08 | 只看该作者
从功能上来说,MISO应该配置为输入模式才对,但为什么也可以配置为GPIO_Mode_AF_PP?请看下面的GPIO复用功能配置框图。

当一个GPIO端口配置为GPIO_Mode_AF_PP是,这个端口的内部结构框图如下:图中可以看到,片上外设的复用功能输出信号会连接到输出控制电路,然后在端口上产生输出信号。

但是在芯片内部,MISO是SPI模块的输入引脚,而不是输出引脚,也就是说图中的"复用功能输出信号"根本不存在,因此"输出控制电路"不能对外产生输出信号。

而另一方面看,即使在GPIO_Mode_AF_PP模式下,复用功能输入信号却与外部引脚之间相互连接,既MISO得到了外部信号的电平,实现了输入的功能。

STM32_GPIO_AF_PP.GIF (28.41 KB )

STM32_GPIO_AF_PP.GIF

使用特权

评论回复
5
dfsa| | 2010-1-22 20:16 | 只看该作者
还是很迷惑

使用特权

评论回复
6
sunmonth| | 2010-1-22 23:06 | 只看该作者
明白了,复用功能时,虽然设成输出,但连接的是spi,没有连接输出部分,和输入电路等效

使用特权

评论回复
7
btyang| | 2010-3-10 14:38 | 只看该作者
SPI_SSOutputCmd(SPI1, ENABLE);//使能SPI1的SPI1_NSS(PA4)输出
什么作用?

使用特权

评论回复
8
jy02326166| | 2013-1-28 14:34 | 只看该作者
香水城 发表于 2010-1-22 18:08
从功能上来说,MISO应该配置为输入模式才对,但为什么也可以配置为GPIO_Mode_AF_PP?请看下面的GPIO复用功 ...

好像明白了,那以后要配置复用输入,只需要配置成复用输出咯?

使用特权

评论回复
9
东方云滨| | 2013-3-27 10:22 | 只看该作者
这也困惑了我好久啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

27

帖子

1

粉丝