watercici 发表于 2018-4-12 20:57:01

stm32f103rbt6的SPI通信

我想问两个问题:
1:SPI1,SPI2,SP3都是对应IO口的复用功能,是不是IO定了就只能选IO复用功能对应的那个SPI?
         我现在选的是PB13\PB14\PB15分别是SCK\MISO\MOSI,那我应该选哪个SPI呢?
2:我现在选的是SPI2,我的SPI通信,没有时钟,和数据输出,我用的是我之前调好的程序,就是换了板子就不行了?

Angel_YY 发表于 2018-4-12 21:29:59

PB13\PB14\PB15对应的SPI2
换了板子就不行了,如果确定程序没问题,就要考虑硬件问题了,不过我依然怀疑是软件配置的问题。

feixiang20 发表于 2018-4-13 01:39:58

估计是硬件问题,你重新换个板子重新设置参数看看呢,可以去查阅STM32F103的SPI通讯例程及详解等帖子作参考

wudianjun2001 发表于 2018-4-13 08:21:57

找个官方的例程修改,然后用示波器看波形

watercici 发表于 2018-4-13 08:29:28

Angel_YY 发表于 2018-4-12 21:29
PB13\PB14\PB15对应的SPI2
换了板子就不行了,如果确定程序没问题,就要考虑硬件问题了,不过我依然怀疑是 ...

好的,谢谢,我再看看程序。

watercici 发表于 2018-4-13 08:29:47

feixiang20 发表于 2018-4-13 01:39
估计是硬件问题,你重新换个板子重新设置参数看看呢,可以去查阅STM32F103的SPI通讯例程及详解等帖子作参考 ...

好的,谢谢

watercici 发表于 2018-4-13 08:30:09

wudianjun2001 发表于 2018-4-13 08:21
找个官方的例程修改,然后用示波器看波形

我找找看

watercici 发表于 2018-4-13 09:29:35

wudianjun2001 发表于 2018-4-13 08:21
找个官方的例程修改,然后用示波器看波形

您好,我还想问一下,SPI通信中初始化完成之后,到底用不用发送0xff来启动数据传输,还有就是初始化的时候我将片选信号置为无效,之后读写的时候才将片选信号拉低,那么如果用写0xFF来启动传输的话,这句是写在初始化中,还是写在每次读写时片选信号拉低之后呢?

dataozi 发表于 2018-4-13 11:55:24

选的是PB13\PB14\PB15分别是SCK\MISO\MOSI,应该是SPI1
SPI1的复用端口是
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
       
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;//这个是片选线
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);

换板子不能用的原因你先查一下硬件,再看一下SPI的最大速度是多少,

watercici 发表于 2018-4-13 11:58:30

dataozi 发表于 2018-4-13 11:55
选的是PB13\PB14\PB15分别是SCK\MISO\MOSI,应该是SPI1
SPI1的复用端口是
GPIO_InitStructure.GPIO_Pin=GPI ...

等等,可是上面有人回复的是SPI2的复用啊,我用的芯片是STM32F103RBT的,到底是SPI1还是SPI2呢?
页: [1] 2
查看完整版本: stm32f103rbt6的SPI通信