本帖最后由 ArterySW 于 2022-5-7 19:29 编辑
FAQ0092 SPI3 引脚设置方法
Questions:如何设置 SPI3 引脚?
Answer:
需要开启对应 GPIO 时钟、开启复用时钟、将 IO 配置为复用功能、设置重映射等相应的操作。
以 AT32F403 为例,将 PA15/PB3/PB4/PB5 作为 SPI3 主机使用,需要设置如下:
//开启 GPIOA、GPIOB 时钟、开启复用时钟、开启 SPI3 时钟
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_SPI3_PERIPH_CLOCK, TRUE);
//设置 PA15、PB3、PB5 为复用输出,如果 NSS 选择软件方式控制,则 PA15 设置为推挽输出
gpio_init_type gpio_initstructure;
gpio_default_para_init(&gpio_initstructure);
/* spi3 nss pin */
gpio_initstructure.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_initstructure.gpio_mode = GPIO_MODE_MUX;
gpio_initstructure.gpio_pins = GPIO_PINS_15;
gpio_init(GPIOA, &gpio_initstructure);
/* spi3 mosi pin */
gpio_initstructure.gpio_pins = GPIO_PINS_5;
gpio_init(GPIOB, &gpio_initstructure);
/* spi3 sck pin */
gpio_initstructure.gpio_pins = GPIO_PINS_3;
gpio_init(GPIOB, &gpio_initstructure);
//设置 PB4 为输入
/* spi3 miso pin */
gpio_initstructure.gpio_pull = GPIO_PULL_NONE;
gpio_initstructure.gpio_mode = GPIO_MODE_INPUT;
gpio_initstructure.gpio_pins = GPIO_PINS_4;
gpio_init(GPIOB, &gpio_initstructure);
//设置重映射
gpio_pin_remap_config(SWJTAG_MUX_100, TRUE);
以 AT32F403A 为例,将 PA4/PC10/ PC11/ PC12 作为 SPI3 主机使用,需要设置如下:
//开启 GPIOA、GPIOC 时钟、开启复用时钟、开启 SPI3 时钟
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_SPI3_PERIPH_CLOCK, TRUE);
//设置 PA4、PC10、PC12 为复用输出,如果 NSS 选择软件方式控制,则 PA4 设置为推挽输出
gpio_init_type gpio_initstructure;
gpio_default_para_init(&gpio_initstructure);
/* spi3 nss pin */
gpio_initstructure.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_initstructure.gpio_mode = GPIO_MODE_MUX;
gpio_initstructure.gpio_pins = GPIO_PINS_4;
gpio_init(GPIOA, &gpio_initstructure);
/* spi3 mosi pin */
gpio_initstructure.gpio_pins = GPIO_PINS_12;
gpio_init(GPIOC, &gpio_initstructure);
/* spi3 sck pin */
gpio_initstructure.gpio_pins = GPIO_PINS_10;
gpio_init(GPIOC, &gpio_initstructure);
//设置 PC11 为输入
/* spi3 miso pin */
gpio_initstructure.gpio_pull = GPIO_PULL_NONE;
gpio_initstructure.gpio_mode = GPIO_MODE_INPUT;
gpio_initstructure.gpio_pins = GPIO_PINS_11;
gpio_init(GPIOC, &gpio_initstructure);
//设置重映射
gpio_pin_remap_config(SPI3_GMUX_0011, TRUE);
类型:MCU 应用
适用型号:AT32F403,AT32F403A,AT32F407,AT32F435,AT32F437, AT32F425
主功能:SPI3
次功能:无 |