本帖最后由 WANGZHONGWANG 于 2022-5-7 16:21 编辑
GD32F103 的SPI 就不发时钟信号,ST就行
spi_parameter_struct spi_init_struct;
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_SPI1);
/* SPI0_SCK(PA5), SPI0_MISO(PA6) and SPI0_MOSI(PA7) GPIO pin configuration */
gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13 | GPIO_PIN_15);
gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
/* SPI0_CS(PE3) GPIO pin configuration */
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);
/* chip select invalid*/
gpio_bit_set(GPIOB,GPIO_PIN_12);
/* SPI0 parameter config */
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
spi_init_struct.device_mode = SPI_MASTER;
spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;
spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;
spi_init_struct.nss = SPI_NSS_SOFT;
spi_init_struct.prescale = SPI_PSC_2;
spi_init_struct.endian = SPI_ENDIAN_MSB;
spi_init(SPI1, &spi_init_struct);
/* enable SPI0 */
spi_enable(SPI1);
void SPIv_WriteData(u8 Data)
{
/*unsigned char i=0;
for(i=8;i>0;i--)
{
if(Data&0x80)
{
GPIOB->BOR=GPIO_PIN_15; //1
}
else
{
GPIOB->BCR=GPIO_PIN_15; //1
}
GPIOB->BOR=GPIO_PIN_13; //1
GPIOB->BCR=GPIO_PIN_13; //0
Data<<=1;
}*/
while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_TBE));
SPI_DATA(1)=Data;
delay_ns(22);
}
|