1021256354 发表于 2023-10-8 14:46

SPI4 主机配置如何配置???

403A,,,,,,SPI4主机模拟配置,映射到PB7,8,9,上,CS必须是PB6么?其他引脚能做cs用么?????
remap以后,求教

1021256354 发表于 2023-10-8 14:52

void spigpio_config(void)
{
gpio_init_type gpio_initstructure;

        crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
        crm_periph_clock_enable(CRM_GPIOE_PERIPH_CLOCK, TRUE);
        crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK, TRUE);
        crm_periph_clock_enable(CRM_SPI4_PERIPH_CLOCK, TRUE);
       
gpio_default_para_init(&gpio_initstructure);
       
/* spi4 sck pin */
gpio_initstructure.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
//gpio_initstructure.gpio_pull         = GPIO_PULL_UP;
gpio_initstructure.gpio_mode         = GPIO_MODE_MUX;

gpio_initstructure.gpio_pins = GPIO_PINS_7;
gpio_init(GPIOB, &gpio_initstructure);
/* spi4 mosi pin */
gpio_initstructure.gpio_pins = GPIO_PINS_9;
gpio_init(GPIOB, &gpio_initstructure);
/* spi4 miso pin */
gpio_initstructure.gpio_pull         = GPIO_PULL_NONE;
gpio_initstructure.gpio_mode         = GPIO_MODE_INPUT;
gpio_initstructure.gpio_pins = GPIO_PINS_8;
gpio_init(GPIOB, &gpio_initstructure);



/* spi4 CS/RST pin */
gpio_initstructure.gpio_pull         = GPIO_PULL_UP;
gpio_initstructure.gpio_mode         = GPIO_MODE_OUTPUT;
gpio_initstructure.gpio_pins = GPIO_PINS_0 | GPIO_PINS_1 ;
gpio_init(GPIOE, &gpio_initstructure);

/* int pin */
gpio_initstructure.gpio_pull         = GPIO_PULL_UP;
gpio_initstructure.gpio_mode         = GPIO_MODE_INPUT;
gpio_initstructure.gpio_pins = GPIO_PINS_2;
gpio_init(GPIOE, &gpio_initstructure);

        gpio_pin_remap_config(SPI4_GMUX_0010,TRUE);
       
gpio_bits_write(GPIOE,GPIO_PINS_0,TRUE);
gpio_bits_write(GPIOE,GPIO_PINS_1,TRUE);

}



void spi_config(void)
{
        spi_init_type spi_init_struct;
       
        spigpio_config();
       
        crm_periph_clock_enable(CRM_SPI4_PERIPH_CLOCK, TRUE);
        spi_default_para_init(&spi_init_struct);
        spi_init_struct.transmission_mode = SPI_TRANSMIT_FULL_DUPLEX;
        spi_init_struct.master_slave_mode = SPI_MODE_MASTER;
        spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_64;
        spi_init_struct.first_bit_transmission = SPI_FIRST_BIT_MSB;
        spi_init_struct.frame_bit_num = SPI_FRAME_8BIT;
        spi_init_struct.clock_polarity = SPI_CLOCK_POLARITY_LOW;
        spi_init_struct.clock_phase = SPI_CLOCK_PHASE_2EDGE;
        spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE;
        spi_init(SPI4, &spi_init_struct);

        spi_enable(SPI4, TRUE);
}

1021256354 发表于 2023-10-8 14:53

SPI4 发送命令
                while(spi_i2s_flag_get(SPI4, SPI_I2S_TDBE_FLAG) == RESET);
                spi_i2s_data_transmit(SPI4, d);
                while(spi_i2s_flag_get(SPI4,SPI_I2S_RDBF_FLAG ) == RESET);
                return spi_i2s_data_receive(SPI4);

muyichuan2012 发表于 2023-10-8 15:56

CS也可以remap成其他引脚(如下图),但也可以使用软件CS,即使用任意IO作为CS脚,由软件代码去拉

1021256354 发表于 2023-10-9 11:23

muyichuan2012 发表于 2023-10-8 15:56
CS也可以remap成其他引脚(如下图),但也可以使用软件CS,即使用任意IO作为CS脚,由软件代码去拉
...

GMUX选择0010或者0011,默认cs是PB6,还能用其他脚代替么?

muyichuan2012 发表于 2023-10-9 11:37

也可以使用软件CS,即,使用任意IO作为CS脚,由软件代码去
页: [1]
查看完整版本: SPI4 主机配置如何配置???