OpenEdv-开源电子网

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

SPI读SD卡时,什么SPI的四个引脚为什么要加上拉啊!

[复制链接]

11

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-7-9
在线时间
0 小时
发表于 2012-7-14 21:06:13 | 显示全部楼层 |阅读模式
我在看例说stm32的SD卡实验时,发现SPI的四个引脚全加上拉了,书中只提了一句,不是很明白为什么啊,我那4个引脚不时都设置推换输出了么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-14 21:55:05 | 显示全部楼层
是设置推挽输出么?
 贴代码出来看看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2012-7-12
在线时间
13 小时
发表于 2012-7-16 08:36:58 | 显示全部楼层
SD卡输出是不是OC的?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-16 11:36:49 | 显示全部楼层
不是OC,是复用功能。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-7-9
在线时间
0 小时
 楼主| 发表于 2012-7-17 11:36:03 | 显示全部楼层
回复【4楼】正点原子:
不是OC,是复用功能。
---------------------------------
谢谢原子老大,我回来又多测试了几回,发现有时候不行,有时候行,不知道是不是不稳定!
回复 支持 反对

使用道具 举报

11

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-7-9
在线时间
0 小时
 楼主| 发表于 2012-7-17 11:46:52 | 显示全部楼层
u8 SD_Init(void)
{  
    u8 r1;      // 存放SD卡的返回值
    u16 retry;  // 用来进行超时计数
    u8 buff[6];
    //设置硬件上与SD卡相关联的控制引脚输出
//避免NRF24L01/W25X16等的影响
RCC->APB2ENR|=1<<2;       //PORTA时钟使能 
GPIOA->CRL&=0XFFF000FF; 
GPIOA->CRL|=0X00033300;//PA2.3.4 推挽      
GPIOA->ODR|=0X7<<2;    //PA2.3.4上拉 
..............
void SPIx_Init(void)
{  
RCC->APB2ENR|=1<<2;       //PORTA时钟使能   
RCC->APB2ENR|=1<<12;      //SPI1时钟使能 
   
//这里只针对SPI口初始化
GPIOA->CRL&=0X000FFFFF; 
GPIOA->CRL|=0XBBB00000;//PA5.6.7复用      
GPIOA->ODR|=0X7<<5;    //PA5.6.7上拉

SPI1->CR1|=0<<10;//全双工模式
SPI1->CR1|=1<<9; //软件nss管理
SPI1->CR1|=1<<8;  

SPI1->CR1|=1<<2; //SPI主机
SPI1->CR1|=0<<11;//8bit数据格式
SPI1->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1
SPI1->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1  
SPI1->CR1|=7<<3; //Fsck=Fcpu/256
SPI1->CR1|=0<<7; //MSBfirst   
SPI1->CR1|=1<<6; //SPI设备使能
SPIx_ReadWriteByte(0xff);//启动传输  
}   
不过我发现你的代码和硬件都上拉了!
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2012-3-4
在线时间
0 小时
发表于 2012-7-17 18:00:03 | 显示全部楼层
上拉在很多情况下是没问题的。

输出推挽情况下,加上拉在理论上应该是没关系的。只是在输出低电平的时候,会耗电。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-17 20:09:04 | 显示全部楼层
2,3,4全部输出高,是为了防止不同SPI器件相互干扰.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 19:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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