在雅特力AT32F403ZGT6开发板上验证SPI1引脚重映射

1、引脚定义

#define FLASH_SPI               SPI1
#define SPIx_RCC_CLK            RCC_APB2PERIPH_SPI1
#define SPIx_GPIO_RCC_CLK       RCC_APB2PERIPH_GPIOB
#define SPIx_PIN_NSS            GPIO_Pins_7
#define SPIx_PORT_NSS           GPIOB
#define SPIx_PIN_SCK            GPIO_Pins_3
#define SPIx_PORT_SCK           GPIOB
#define SPIx_PIN_MISO           GPIO_Pins_4
#define SPIx_PORT_MISO          GPIOB
#define SPIx_PIN_MOSI           GPIO_Pins_5
#define SPIx_PORT_MOSI          GPIOB

2、使用SPI1引脚重映射

使能SPI1和GPIOB时钟

RCC_APB2PeriphClockCmd(SPIx_RCC_CLK | SPIx_GPIO_RCC_CLK, ENABLE);

使能APB2线AFIO时钟

RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_AFIO, ENABLE);

禁用JTAG引脚时钟复用

GPIO_PinsRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

使能SPI引脚重映射

GPIO_PinsRemapConfig(GPIO_Remap01_SPI1, ENABLE);

3、初始化引脚配置和SPI配置


  /* Configure SPI_FLASH pins*/
  GPIO_InitStructure.GPIO_Pins =  SPIx_PIN_MOSI;
  GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_10MHz; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(SPIx_PORT_MOSI, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pins = SPIx_PIN_MISO;
  GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_10MHz;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(SPIx_PORT_MISO, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pins = SPIx_PIN_NSS;
  GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_10MHz;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;
  GPIO_Init(SPIx_PORT_NSS, &GPIO_InitStructure);  

  GPIO_InitStructure.GPIO_Pins =  SPIx_PIN_SCK;
  GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_10MHz; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(SPIx_PORT_SCK, &GPIO_InitStructure);

  FLASH_CS_HIGH();
  /* SPI_FLASH configuration ------------------------------------------------------*/
  SPI_InitStructure.SPI_TransMode = SPI_TRANSMODE_FULLDUPLEX;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2EDGE;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_HIGH;
  SPI_InitStructure.SPI_CPOLY = 0;
  SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB;
  SPI_InitStructure.SPI_FrameSize = SPI_FRAMESIZE_8BIT;
  SPI_InitStructure.SPI_MCLKP = SPI_MCLKP_8;
  SPI_InitStructure.SPI_NSSSEL = SPI_NSSSEL_SOFT;
  SPI_InitStructure.SPI_Mode = SPI_MODE_MASTER;
  SPI_Init(FLASH_SPI, &SPI_InitStructure);

  /* Enable SPI module */
  SPI_Enable(FLASH_SPI, ENABLE);

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值