ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
8 июня
1522829 Топик полностью
IBAH (05.06.2025 15:24, просмотров: 117) ответил IBAH на Опять GD32F103, опять SPI. Пауза между прием между передачей байт, на приеме та же хня. Такое ощущение что флаг RXNE выставляется не после 8, а после 16 бит. Кто виноват и что делать?
Всем спасибо! Кажись победил! Путём научного тыка в бубен родил такой код. Правда пришлось добавить еще одну функцию, занятость SPI. Немножко придется поправить обмен. 
//
//Чтение байта
static inline unsigned char W5500_Read8(void)
  {
  LL_SPI_TransmitData8(SPI2, 0x00);//Начинаем обмен
  while(!LL_SPI_IsActiveFlag_RXNE(SPI2)){;}//ожидаем ответ  
  return LL_SPI_ReceiveData8(SPI2);//считываем ответ, сбрасываем флаг приема
  }
//Запись байта
static inline void W5500_Write8(unsigned char byte)
  {
  while(LL_SPI_IsActiveFlag_TXE(SPI2) == 0){;} //Ожидаем готовности
  LL_SPI_TransmitData8(SPI2, byte);//Отправляем данные
  return;
  }
//Занятость SPI
static inline void W5500_WaitReady(void)
  {
  LL_SPI_ReceiveData8(SPI2);//Очищаем флаг RXNE
  while(!LL_SPI_IsActiveFlag_RXNE(SPI2)){;}//Ожидаем готовности
  LL_SPI_ReceiveData8(SPI2);//Очищаем флаг RXNE
  }


//Тест


while(!0)//Main infinite loop

{

W5500_Write8(0xA0);W5500_Write8(0xF0);W5500_Write8(0xA0);

W5500_WaitReady();

W5500_Read8();W5500_Read8();

__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();

__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();

__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();

}


//

Результат