ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
7 июня
1522647
IBAH (04.06.2025 20:41 - 20:46, просмотров: 2949)
Опять GD32F103, опять SPI. Пауза между прием между передачей байт, на приеме та же хня. Такое ощущение что флаг RXNE выставляется не после 8, а после 16 бит. Кто виноват и что делать? 
//
{//Настройка SPI
  //Peripheral clock enable 
  LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_SPI2);
  LL_SPI_InitTypeDef SPI_InitStruct = {0};
  //SPI2 parameter configuration
  SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
  SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;
  SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
  SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH;
  SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE;
  SPI_InitStruct.NSS = LL_SPI_NSS_SOFT;
  SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2;
  SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST;
  SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;
  SPI_InitStruct.CRCPoly = 10;
  LL_SPI_Init(SPI2, &SPI_InitStruct);
  
  LL_SPI_Enable(SPI2);
  LL_SPI_ReceiveData8(SPI2);//сбрасываем флаг приема
  }

//Чтение байта

static inline unsigned char W5500_Read8(void)

{

LL_SPI_TransmitData8(SPI2, 0);//Отправляем запрос

while(LL_SPI_IsActiveFlag_RXNE(SPI2)==0){;}//ожидаем ответ

return LL_SPI_ReceiveData8(SPI2);//считываем ответ, сбрасываем флаг приема

}


//Запись байта

static inline void W5500_Write8(unsigned char byte)

{

LL_SPI_TransmitData8(SPI2, byte);//Отправляем запрос

while(LL_SPI_IsActiveFlag_RXNE(SPI2)==0){;}//ожидаем ответ

LL_SPI_ReceiveData8(SPI2);//сбрасываем флаг приема

return;

}


В Маин.с

while(!0)//Main infinite loop

{

W5500_Write8(0xF0);

//W5500_Write8(0xF0);

//W5500_Read8();



}



//


Сигнал SCK