OpenEdv-开源电子网

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

spi问题求高手解答

[复制链接]

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
发表于 2014-4-20 09:33:52 | 显示全部楼层 |阅读模式
这里针是对SPI2的初始化


void SPIx_Init(void)

 RCC->APB2ENR|=1<<3;   //PORTB时钟使能  
 RCC->APB1ENR|=1<<14;    //SPI2时钟使能
 //这里只针对SPI口初始化
 GPIOB->CRH&=0X000FFFFF;
 GPIOB->CRH|=0XBBB00000; //PB13/14/15复用     
 GPIOB->ODR|=0X7<<13;    //PB13/14/15上拉


问题1:pb13  14  15不都是直接连的sck  miso mosi 吗  为什么还要复用?
问题2:就算复用了,为什么没有开启辅助时钟??
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-7-31
在线时间
1 小时
发表于 2014-4-20 10:25:16 | 显示全部楼层
回复【楼主位】傻子:
---------------------------------
这是STM32的IO口有8种工作模式,配置SPI内部总线输出模式是  复用开漏输出
回复 支持 反对

使用道具 举报

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
 楼主| 发表于 2014-4-20 10:34:52 | 显示全部楼层
回复【2楼】a2582006460:
回复【楼主位】傻子: --------------------------------- 这是STM32的IO口有8种工作模式,配置SPI内部总线输出模式是  复用开漏输出
---------------------------------
是不是只有在配置片内外设时才用复用?
回复 支持 反对

使用道具 举报

18

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-7-31
在线时间
1 小时
发表于 2014-4-20 10:48:15 | 显示全部楼层
回复【3楼】傻子:
---------------------------------
在STM32中选用IO模式 
 (1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 
(2)带上拉输入_IPU——IO内部上拉电阻输入 
(3)带下拉输入_IPD—— IO内部下拉电阻输入  
(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电  
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能 
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的 
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)  
(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

1)作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。 
2)作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。  
3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。 
4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。  
5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块
回复 支持 反对

使用道具 举报

18

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-7-31
在线时间
1 小时
发表于 2014-4-20 10:55:08 | 显示全部楼层
回复【3楼】傻子:
---------------------------------
不知道你理解了不,本人也是小菜鸟一只,
一般常用的就是
    普通IO口——推挽输出
    按键输入——浮空输入
    内部SPI ——复用功能的开漏输出(I2C我都是软件模拟)
你可以看看STM32的中文参考手册GPIO配置。
回复 支持 反对

使用道具 举报

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
 楼主| 发表于 2014-4-20 11:58:16 | 显示全部楼层
回复【5楼】a2582006460:
回复【3楼】傻子: --------------------------------- 不知道你理解了不,本人也是小菜鸟一只, 一般常用的就是     普通IO口——推挽输出     按键输入——浮空输入     内部SPI ——复用功能的开漏输出(I2C我都是软件模拟) 你可以看看STM32的中文参考手册GPIO配置。
---------------------------------
不错,,但是spi复用模式为什么没有开辅助时钟??
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-10 04:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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