打印
[AT32F403/403A]

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

[复制链接]
709|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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脚,由软件代码去拉

使用特权

评论回复
5
1021256354|  楼主 | 2023-10-9 11:23 | 只看该作者
muyichuan2012 发表于 2023-10-8 15:56
CS也可以remap成其他引脚(如下图),但也可以使用软件CS,即使用任意IO作为CS脚,由软件代码去拉
...

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

使用特权

评论回复
6
muyichuan2012| | 2023-10-9 11:37 | 只看该作者
也可以使用软件CS,即,使用任意IO作为CS脚,由软件代码去

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

148

主题

642

帖子

3

粉丝