关于GD32E230C8T6的SPI0配置中的问题

[复制链接]
 楼主| 一点点0321 发表于 2022-11-20 14:41 | 显示全部楼层 |阅读模式
和ra-01模块SPI无法通信
  1. static void SpiInit( void )
  2. {   
  3.         rcu_periph_clock_enable(RCU_GPIOA);
  4.         rcu_periph_clock_enable(SPI_CLK);    //PA5,PA6,PA7
  5.     /* SPI0 GPIO config: NSS/PA4 SCK/PA5, MISO/PA6, MOSI/PA7 */
  6.     gpio_af_set(GPIOA, GPIO_AF_0, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6| GPIO_PIN_7);
  7.     gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_4| GPIO_PIN_5 | GPIO_PIN_6| GPIO_PIN_7);
  8.     gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4| GPIO_PIN_5 | GPIO_PIN_6| GPIO_PIN_7);
  9.         //gpio_mode_set (GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_6);
  10.         spi_parameter_struct  spi_init_struct;
  11.         spi_i2s_deinit(SPI_INTERFACE);
  12.         spi_struct_para_init(&spi_init_struct);
  13.         /* SPI0 parameter config */
  14.     spi_init_struct.trans_mode =     SPI_TRANSMODE_FULLDUPLEX;         //SPI在全双工通讯中接收/发送数据
  15.     spi_init_struct.device_mode = SPI_MASTER;;                                            //SPI为主机模式且SWNSS=1
  16.     spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;;                                //SPI使用8位数据帧格式
  17.     spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE;    //在SPI为空闲状态时,CLK引脚拉低,且"在第1个时钟跳变沿时开始采集第1位数据"
  18.     spi_init_struct.nss = SPI_NSS_SOFT;                                                            //使用NSS软件模式:NSS电平取决于SWNSS位;
  19.     spi_init_struct.prescale = SPI_PSC_8 ;                                                    //SPI时钟预分频器值为8
  20.     spi_init_struct.endian = SPI_ENDIAN_MSB;;                                                //先发送最高位
  21.     spi_init(SPI_INTERFACE, &spi_init_struct);                                                                //使用spi_init_struct结构参数初始化SPI0   
  22.         spi_enable(SPI_INTERFACE);               //使能SPI0
  23.         //spi_i2s_interrupt_enable(SPI0, SPI_I2S_INT_TBE);
  24.     //spi_i2s_interrupt_enable(SPI0, SPI_I2S_INT_RBNE);
  25.         //nvic_irq_enable(SPI0_IRQn,1);
  26. }
  27. void SX1276HALInit( void )
  28. {
  29.     rcu_periph_clock_enable(RCU_GPIOA);
  30.         rcu_periph_clock_enable(RCU_GPIOB);
  31.         gpio_bit_set(GPIOA,GPIO_PIN_4);
  32.         SpiInit();
  33.         //配置复位引脚
  34.         gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
  35.     gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
  36.         gpio_bit_set(GPIOB,GPIO_PIN_11);
  37.     // Configure DIO0
  38.     //gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
  39.     //gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
  40.     // Configure DIO1
  41.     //gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
  42.     //gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
  43.         // Configure DIO3
  44.     //gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
  45.     //gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
  46.         // Configure DIO4
  47.     //gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
  48.     //gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);}
  49.     }
  50. //spi发送和接收函数
  51. uint8_t SpiInOut(uint8_t outData )
  52. {
  53.       uint8_t return_tmp = 0x00;
  54.             /* loop while data register in not emplty */
  55.         while(RESET == spi_i2s_flag_get(SPI0,SPI_FLAG_TBE));
  56.         /* send byte through the SPI1 peripheral */
  57.         spi_i2s_data_transmit(SPI0,outData);
  58.         //printf("%d\n",outData);
  59.             /* wait to receive a byte */
  60.         while(RESET == spi_i2s_flag_get(SPI0,SPI_FLAG_RBNE));  
  61.         /* return the byte read from the SPI bus */
  62.         return_tmp = spi_i2s_data_receive(SPI0);        //此处读不到数据
  63.     return ((uint8_t)(return_tmp & 0xff));
  64. }
断点运行发现spi读不到数据 sck初始化使能后一直高电平 miso 一直高电平 mosi 没有电压我的解答思路和尝试过的方法和ra-01 正常通信
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

480

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部