Перейти к содержанию
    

самый быстрый сетевой чип ?

Так оно и сейчас уже очень даже вкусно. Только почему-то все производители просто считают своим долгом засунуть эзернет в стоногий корпус, куда блин с такой плюшкой. БГА был бы поменьше, конечно, но это вообще космос.

 

 

Может кто-нибудь объяснить, почему эстээмовский SPI клинит, если только отправлять данные и не вычитывать принятые данные каждый раз после отправки ?

Подумал. Если второй SPI включить слейвом параллельно, то можно будет через один SPI передавать, через другой принимать. Возможно, поможет.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил SPI - работает адекватно. Проблема, похоже в w5200 - м.б. не успевает принимать (или отправлять) данные и хочет паузу между ними. Будете смеяться, вот такая шняга работает.

 

void SPI1_SendByte(uint8_t byte)
{
//	while (!(SPI1->SR & SPI_I2S_FLAG_TXE));
SPI1->DR = byte;
while (!(SPI1->SR & SPI_I2S_FLAG_RXNE));

//	Delay_us(1);

asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");

asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");

asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");

//	(uint8_t)SPI1->DR;
}

 

Если при отправке ждать готовности передатчика, а не приемника - не работает. Если нопов четырнадцать, а не пятнадцать - не работает. Скорость передачи поднялась стабильно до 38К+ Шаманство и магия какие-то, а не программирование.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выше наврал, с w5200 все ок - проверял пошагово в отладчике, а там конечно задержки.

Очевидно, баг в STM.

Примерно вот такой код для проверки, MISO подключен к MOSI

 

	uint8_t i;
	for(i = 11; i < 14; i++)
	{
		while (!(SPI1->SR & SPI_I2S_FLAG_TXE));
		SPI1->DR = i;
		Delay_us(1);
	}

	while ((SPI1->SR & SPI_I2S_FLAG_RXNE))
		i = SPI1->DR;
	while (!(SPI1->SR & SPI_I2S_FLAG_TXE));
	SPI1->DR = (uint8_t)123;
	while (!(SPI1->SR & SPI_I2S_FLAG_RXNE));
	if (SPI1->DR != (uint8_t)123)
		STM_EVAL_LEDOn(LED5);

 

Задержка после отправки зависит не от времени, а должна быть пропорциональна тактовой частоте-1 SPI, иначе зажигается LED5 (считывается ноль)

 

STM32F407

VGT6 A

HPAEX VG

KOR HP 123

 

 

Поскольку стала понятна причина, добавил ядру частоты до 216MHz и 7 тактов ожидания - теперь летит 48K+ пакетов. Почти сколько нужно.

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дрыганьем ножек вручную (без SPI) удалось достичь 19.6К, незнание ассемблера ARM не позволяет оптимизировать код дальше

На 72MHz тактовой, с 2 тактами ожидания, PCLK2==Div1 10 нопов с SPI - 23,2К

 

 

зы: 100 пиновый LQFP на первый взгляд не входит. Кто-нить паяет БГА вручную, есть проблемы ?

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LM3S со встроенным PHY

 

Вся линейка ушла в NRND :crying:

 

http://e2e.ti.com/search/default.aspx#q=Lm...0&pi24906=1

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Таки запустил код в RAMе, скорость почему-то? стала меньше, чем из флеша, и самое необъяснимое, FLASH_SetLatency, почему-то, влияет на выполнение, на 168MHz требует три дополнительных цикла ожидания иначе виснет. Получается, что скорость RAM тоже ограничена, на 3+1 такта, вместо 7+1 для флеша. Если я прав, то получается, что STM32F4 - чисто маркетинговая разводка.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...