Jump to content

    
MementoMori

Прошивка QSPI из Keil.

Recommended Posts

Нашел я и у себя ошибку. команда write enable посланная spi флэшке не срабатывала. А не срабатывала она из за того что была описана так

static void WriteEnable(void)
{
	CS_LOW();
	SPI1->DR=WREN;			//WREN=0x06
	while((SPI1->SR&SPI_SR_BSY)==SPI_SR_BSY)	{}
	CS_HIGH();
}

а нужно так

static void WriteEnable(void){
	CS_LOW();
	SPI1->DR=WREN;			//WREN=0x06
	while(!(SPI1->SR&SPI_SR_TXE)) {}
	while((SPI1->SR&SPI_SR_BSY)==SPI_SR_BSY)	{}
	CS_HIGH();
}

Этот бит BSY не сразу ставиться при записи очередного байта в регистр DR. 2 такта шины APB нужно. Но в проекте у меня это срабатывала. А когда кейлу  эти функции подсовывал то нет. В итоге когда собрал проект с оптимизацией 3 то и в проекте перестало работать с этого места начал копать и набрел на эту задержку флага. Видимо без оптимизации успевал устанавливаться. Короче в любом случае если один байт посылается сначала проверять флаг TXE и следом за ним уже BSY.

Share this post


Link to post
Share on other sites

Перешел c F746 на H743

Убил некоторое время на переделку алгоритма и основного кода. 

Заработало — и чтение и запись и алгоритм для прошивки.
Только что-то не хочет у меня QSPI работать на частоте выше 33 МГц.   Немного спасает конечно DDR режим, но все равно медленно.
На F7 я запускал, если мне не изменяет память, на 100 МГц или около того.
Сейчас я настраиваю HCLK на 200 МГц, работает только с clockPrescaler=5.  (получается 200/(5+1) =33)
Память W25Q128, две микросхемы в режиме DualFlash
 
Я так понял они тактирование изменили, судя по схеме в Cube.
Даже  в коде для отладочной платы у них есть такие вот строки
/* ClockPrescaler set to 1, so QSPI clock = 200MHz / (1+3) = 50MHz */
  QSPIHandle.Init.ClockPrescaler     = 3;
  QSPIHandle.Init.FifoThreshold      = 16;
  

Я не пойму, они что ли капитулировали и признали недееспособность QSPI выше 50 МГц?

У кого какой опыт в использовании H7+QSPI? 

Share this post


Link to post
Share on other sites

Приветствую всех. Совсем недавно меня столкнули с H743. Сразу необходимости  исполнения кода из QSPI причем память NAND w25n01gv, Код вроде научился частично исполнять из примера QSPI_ExecuteInPlace, но это не совсем то, потому что входит в точку выполнения вроде по адресу 0x9000000, но сам BSP_LED_Toggle исполняет из 0x8000000 (со смещением соответственно), у  меня вопрос, как понять или почитать про Scatter-ы, мне нужно основной большой код положить в SPI, только вот засунуть его туда пока не получается.

Вообще пытался понять как их пишут. Но походу у меня нет таких "веществ", под которыми их придумывали...

Share this post


Link to post
Share on other sites
30.01.2020 в 23:02, Forger сказал:

Открывайте папку Keil\ARM\Flash\

находите наиболее подходящий вариант, переделываете под себя, пересобираете, заливаете туда же

 

https://arm-software.github.io/CMSIS_5/Pack/html/flashAlgorithm.html

Пробовал добавлять свой алгоритм, сделал пак, но этот пак добавляет устройство

image.thumb.png.089025fe7de4d3aa1953f3771d9d582f.png

А не в список:

image.png.9cc25dcb3ea8f28086da54bcf7a3cf62.png

Дайте пожалуйста правильное направление... А то я по ходу где-то свернул не туда.

 

Share this post


Link to post
Share on other sites
1 час назад, LEXis-MegaVolt сказал:

Дайте пожалуйста правильное направление...

Попробуйте поступить радикально - откажитесь от всей этой дури и разбирайтесь/пишите сами на регистрах. Будет мучительно очень больно, но по-моему так зато что-то получится. Сам сейчас пробую тоже самое. Вот человек задал вопрос тут:

29.03.2020 в 21:16, MementoMori сказал:

У кого какой опыт в использовании H7+QSPI? 

И ему никто и ничего так и не ответил с тех пор. Хотя вроде все есть и за несколько "кликов мышью" можно готовый проект с кодом наклепать. Но так никто и не ответил.

Share this post


Link to post
Share on other sites
On 3/30/2020 at 12:16 AM, MementoMori said:

У кого какой опыт в использовании H7+QSPI? 

Использовал QSPI с STM32H750 на 100МГц SDR. Писал на регистрах.

Share this post


Link to post
Share on other sites
4 часа назад, AleksBak сказал:

Попробуйте поступить радикально - откажитесь от всей этой дури и разбирайтесь/пишите сами на регистрах. Будет мучительно очень больно, но по-моему так зато что-то получится. Сам сейчас пробую тоже самое. Вот человек задал вопрос тут:

Проблема не в том на чем напишу, а в том чтобы зашивать код во флеш подключенную через qspi отладчику надо знать как работать с этой флешей - нужен Flash Loader, как инициализировать, на каких ногах, тайминги, размеры кода и банок. А для этого надо или использовать то что есть, что мне неподходит по схеме, или писать свое. Вот я и спрашиваю куда я не туда пошел при запихивании поддержки лоадера в Кейл?

Share this post


Link to post
Share on other sites
2 hours ago, LEXis-MegaVolt said:

Вот я и спрашиваю куда я не туда пошел при запихивании поддержки лоадера в Кейл?

Уже ранее в этой теме всё описано

Keil5\ARM\Flash\...

Смотрите примеры и делаете под свой H743 и w25n01gv

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.