搜索
bottom↓
回复: 16

SPI1重映射后不正常!

[复制链接]

出0入0汤圆

发表于 2009-10-31 12:52:47 | 显示全部楼层 |阅读模式
DX,我使用STM32的SPI1时,直接用PA5\PA6\PA7正常,但是改用重映射为PB3,PB4,和PB5后就是不正常了
使用示波器测试波形,PA5,PA7都有,PB5有,PB3和PB4没有,谁知道怎么回事啊?参考STM32官方手册,SPI1不能
重映射和I2C1一起用,我也关掉I2C1的时钟了,还是不行!

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2009-10-31 16:29:02 | 显示全部楼层
需要打开AFIO的时钟。

出0入0汤圆

 楼主| 发表于 2009-10-31 22:43:20 | 显示全部楼层
DX:我打开了AFIO时钟,同时用JLINK看AFIO寄存器,SPI1确实显示已经Remap了,但是还是不行啊!谢谢!

出0入0汤圆

 楼主| 发表于 2009-11-1 22:38:34 | 显示全部楼层
其他TX没有对SPI1重映射过吗?非常着急请大家帮我谢谢!~

出0入0汤圆

发表于 2009-11-2 16:05:50 | 显示全部楼层
GPIO脚配置了复用模式了吗?

出0入0汤圆

 楼主| 发表于 2009-11-2 22:43:09 | 显示全部楼层
to:yugen,当然对GPIO配置了复用,具体程序如下:
void SPI_FLASH_Init(void)
{
  SPI_InitTypeDef  SPI_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;


  /* Enable SPI1 and GPIO clocks */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIO_CS | RCC_APB2Periph_SPI1, ENABLE);

//SPI1口重映射
  GPIO_PinRemapConfig(GPIO_Remap_SPI1,ENABLE);

  /* Configure SPI1 pins: SCK, MISO and MOSI */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  //PB4外部已经加10kb电阻上拉
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* Configure I/O for Flash Chip select ,PD2*/
  GPIO_SetBits(GPIO_CS, GPIO_Pin_CS);//置为高
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_CS;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIO_CS, &GPIO_InitStructure);

  /* Deselect the FLASH: Chip Select high */
  SPI_FLASH_CS_HIGH();

  /* SPI1 configuration */
        SPI_Cmd(SPI1, DISABLE); //必须要有才能改变MODE
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI1, &SPI_InitStructure);

  /* Enable SPI1  */
  SPI_Cmd(SPI1, ENABLE);
}

出0入0汤圆

发表于 2009-11-3 09:09:10 | 显示全部楼层
由Datasheet可知,PB3,PB4同时也是SPI3,TIM2,TIM3,TRACE,I2C1这些外设的引脚,这些外设也要关闭或重映射。

出0入0汤圆

 楼主| 发表于 2009-11-3 13:05:18 | 显示全部楼层
to yugen:具体应该如何实现呢?我对SPI1重映射后没有使能TIM3和TIM2,只使能了SPI1,TIM3和TIM2都是在其基本功能使能的,TIM2用了PA0,PA1,PA2,TIM3用了PB0,PB1,TIM4用了PB6,PB7。至于关闭JTAG,我倒是使用了GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable | GPIO_Remap_SPI1,ENABLE)这个函数,也不行。

出0入0汤圆

发表于 2009-11-3 13:43:43 | 显示全部楼层
试试这样:
使用GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
测试时把这几个脚上的其他外设全部关闭(除了SWD),这样只测试SPI1映射。
Jlink使用SW方式进行调试。

出0入0汤圆

 楼主| 发表于 2009-11-3 15:17:33 | 显示全部楼层
SPI1重映射也要使用GPIO_PinRemapConfig(GPIO_Remap_SPI1,ENABLE)啊?您的意思是不重映射吗?我使用了GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable | GPIO_Remap_SPI1,ENABLE)这个函数,就是SPI1重映射,同时关闭JTAG啊!这样用我试了,还是不行啊!

出0入0汤圆

发表于 2009-11-14 23:20:10 | 显示全部楼层
顶下 请高手帮忙,我也是遇到了这个问题的。原来的SPI1可用,想用8路AD采集数据时,需要映射SPI1了,结果就是不能用。
原来的程序改成 SPI2也不能正常使用,搞晕了。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SPI1,ENABLE);

出0入0汤圆

发表于 2010-5-8 16:56:37 | 显示全部楼层
到底能不能用啊,搞死人了

出0入0汤圆

发表于 2014-10-20 10:35:40 | 显示全部楼层
亲测,OK
把GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable | GPIO_Remap_SPI1,ENABLE);
改成    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
          GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE);

出0入0汤圆

发表于 2014-12-17 14:28:20 | 显示全部楼层
用了“qingaixww”的方法,或另用SWJ_CFG[2:0]=100,我的spi1映射成功可以和AVR单片机通信了,感谢。

出0入0汤圆

发表于 2015-6-15 16:59:21 | 显示全部楼层
编辑原因,重复下一条了

出0入0汤圆

发表于 2015-6-15 16:59:37 | 显示全部楼层
qingaixww 发表于 2014-10-20 10:35
亲测,OK
把GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable | GPIO_Remap_SPI1,ENABLE);
改成    GPIO_Pi ...

我靠,每次遇到难题到阿莫这都能解决,牛逼

出0入0汤圆

发表于 2017-2-8 00:38:17 | 显示全部楼层
感謝“qingaixww”的方法,解決問題!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-5 04:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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