OpenEdv-开源电子网

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

我在STM32F4初始化SPI遇到一个奇怪的问题,我一使能配置好的SPI,MSTR就从1跳变才成0了

[复制链接]

16

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2011-8-12
在线时间
6 小时
发表于 2012-2-9 17:41:50 | 显示全部楼层 |阅读模式

void SPIx_Init(void)

 SPI_InitTypeDef  SPI_InitStructure;

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); //APB2时钟使能 SPI1 (挂在APB2总线上)

 //SPI端口复用初始化,配置成主机模式
 /* Configure SPI1 pins: SCK, MISO and MOSI */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; //管脚SPI复用 (STM32F4为: PA5(SPI1_SCK),PA6(SPI1_MISO),PA7(SPI1_MOSI)
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;     //复用
 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   //推挽
 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;   //上拉
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度 
 GPIO_Init(GPIOA, &GPIO_InitStructure);  //按照GPIO_InitStructure指定的参数初始化管脚

 //SPI模块配置
 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //SPI设置为双线双向全双工
 SPI_InitStructure.SPI_Mode = SPI_Mode_Master;   //设置为主SPI
 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;  //SPI发送接收八帧的数据结构
 SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;  //选择串行时钟的稳态:时钟悬空高
 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //时钟捕获于第二个时钟沿
 SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;  //SPI_NSS_Hard;//SPI_NSS_Soft //指定了 NSS 信号由硬件(NSS管脚)还是软件(使用 SSI位)管理
 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;  //波特率预分频值为256
 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;  //数据传输从MSB位开始
 SPI_InitStructure.SPI_CRCPolynomial = 7;  //CRC计算的多项式

 SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStructure中指定的参数初始化SPIx寄存器

 SPI_Cmd(SPI1, ENABLE);

}

用ST LINK 仿真,执行到最后一句SPI_Cmd(SPI1, ENABLE); MSTR就从1变成0了,我需要用主机模式去访问SD卡啊,怎么会变成0呢,那不是变成从机模式了? 我用printf来查看寄存器,也是同样的结果。换成SPI2,也是同样的结果。M3同样的配置方法MSTR就不会置0,SD卡也就能初始化成功了。为什么呢?

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

使用道具 举报

33

主题

489

帖子

6

精华

金牌会员

Rank: 6Rank: 6

积分
1565
金钱
1565
注册时间
2011-12-10
在线时间
4 小时
发表于 2012-2-9 18:16:19 | 显示全部楼层
回复【楼主位】SEASON3:
---------------------------------
兄弟,你去看一下芯片手册就知道了,NSS 信号要设置成软件管理。
学习交流请加Q群:242876057(STM32F4交流群)
回复 支持 反对

使用道具 举报

16

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2011-8-12
在线时间
6 小时
 楼主| 发表于 2012-2-10 08:42:08 | 显示全部楼层
回复【2楼】骤雨龙元:
---------------------------------
我也怀疑是这个问题,试过设成软件管理没解决,可能我哪里不细心了,最近断网回头联系你。
回复 支持 反对

使用道具 举报

16

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2011-8-12
在线时间
6 小时
 楼主| 发表于 2012-2-10 08:55:05 | 显示全部楼层
回复【2楼】骤雨龙元:
---------------------------------
硬件模式主机NSS接高电平不是也是可以解决么?但我试了不行啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-10 08:56:54 | 显示全部楼层
回复【2楼】骤雨龙元:
---------------------------------
不能硬件管理NSS么?有bug?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

33

主题

489

帖子

6

精华

金牌会员

Rank: 6Rank: 6

积分
1565
金钱
1565
注册时间
2011-12-10
在线时间
4 小时
发表于 2012-2-10 10:36:21 | 显示全部楼层
“当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式”                 你看一下SSOE位是否被设置为0了(0:禁止在主模式下SS输出,该设备可以工作在多主设备模式)。
学习交流请加Q群:242876057(STM32F4交流群)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-10 12:32:19 | 显示全部楼层
回复【6楼】骤雨龙元:
---------------------------------
STM32F4xx有中文数据手册了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

33

主题

489

帖子

6

精华

金牌会员

Rank: 6Rank: 6

积分
1565
金钱
1565
注册时间
2011-12-10
在线时间
4 小时
发表于 2012-2-10 13:28:23 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
没有
学习交流请加Q群:242876057(STM32F4交流群)
回复 支持 反对

使用道具 举报

16

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2011-8-12
在线时间
6 小时
 楼主| 发表于 2012-2-10 13:57:43 | 显示全部楼层
回复【6楼】骤雨龙元:
---------------------------------
恩,我换成软件模式没问题了,但是通过SPI写命令到SD卡还是响应失败,郁闷的。
回复 支持 反对

使用道具 举报

16

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2011-8-12
在线时间
6 小时
 楼主| 发表于 2012-2-10 13:59:12 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
没有中文RM,USB库也没出来,官方的那个什么EVAL什么板子的例程貌似都没出来完,但F4跟F1,F2什么的编程区别不大,数据手册区别也不大。DSP什么的特殊的东西没用过。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-10 14:01:50 | 显示全部楼层
哦.后续在玩.你们先探路啊...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 11:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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