你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2613|回复: 2

SPI映射问题

[复制链接]

7

主题

78

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-7-26 15:05:51 | 显示全部楼层 |阅读模式
各位大侠,请问spi的映射应该如何配置呢,我尝试了n次,英文文档里的spi映射接口貌似不对,因为我没用映射时一切正常,用映射后就不对了,真么回事额
void SPIx_Init(void)
{
 //(2) 
 SPI_InitTypeDef  SPI_InitStructure;
 GPIO_InitTypeDef GPIO_InitStructure;
 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD
                                                                  |RCC_APB2Periph_SPI1|RCC_APB2Periph_AFIO, ENABLE );   
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
 GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE);
 //(3)
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOB, &GPIO_InitStructure);
 
 //(4)
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;  //SPI CS
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //通用推挽输出
 GPIO_Init(GPIOD, &GPIO_InitStructure);
 GPIO_SetBits(GPIOD,GPIO_Pin_2);
 //(5)
 
 //(6)
 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
 SPI_InitStructure.SPI_Mode = SPI_Mode_Master;  //设置SPI工作模式:设置为主SPI
 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;  //设置SPI的数据大小:SPI发送接收8位帧结构
 SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;  //选择了串行时钟的稳态:时钟悬空高
 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //数据捕获于第二个时钟沿
 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;  //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;  //定义波特率预分频的值:波特率预分频值为256
 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
 SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC值计算的多项式
 SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
 
 //(7)
 SPI_Cmd(SPI1, ENABLE); //使能SPI外设
 
 SPIx_ReadWriteByte(0xff);//启动传输  
}  
  这配置哪里出问题了么?太纠结了...求大神指教...
<
回复

使用道具 举报

2

主题

240

回帖

0

蝴蝶豆

中级会员

最后登录
2020-8-11
发表于 2012-7-26 15:31:55 | 显示全部楼层

RE:SPI映射问题

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE);
在这两句之前添加
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO , ENABLE);
这句就可以了,一定要在映射之前设置,否则工作不正常.
回复 支持 反对

使用道具 举报

7

主题

78

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2012-7-28 16:16:55 | 显示全部楼层

回复:SPI映射问题

回复第 2 楼 于2012-07-26 15:31:55发表:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE);
在这两句之前添加
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO , ENABLE);
这句就可以了,一定要在映射之前设置,否则工作不正常. 

这句我已经加上了,发表帖子的时候行语句弄得太长了,没显示全,不好意思啊,这样的还是不行,一开始没用映射完全正常,使用映射后spi口不正常工作了,
www.amobbs.com/thread-3674252-1-1.html
我的问题和连接中这位大侠的一样,很纠结啊...
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版