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

Нашел я и у себя ошибку. команда 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.

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


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

Перешел 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? 

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


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

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

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

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


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

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

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

 

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


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

1 час назад, LEXis-MegaVolt сказал:

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

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

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

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

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

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


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

On 3/30/2020 at 12:16 AM, MementoMori said:

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

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

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


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

4 часа назад, AleksBak сказал:

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

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

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


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

2 hours ago, LEXis-MegaVolt said:

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

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

Keil5\ARM\Flash\...

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

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


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

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

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

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

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

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

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

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

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

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