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

STM32H743. Нет ли у меня какой ошибки в тактировании?

4 минуты назад, MementoMori сказал:

Так я вам и сказал - его нужно просто указать, но на функции чтения и записи это не влияет.

На код функций чтения и записи это не вляиет, но может влиять на протокол обмена. Экономия одного лишь бита дает выигрыш в скорости передачи на 4% :) (шутка).

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


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

Ксения, не буду пока высылать вам свой код - я его корежить начал и у меня не все работает. Повторю свою рекомендацию - откройте пример для платы под соответствующий чип, на сайте ST они есть

 

А у меня пока вот какая странность- не могу нормально запустить DDR режим.

Что я делаю:

1. Включаю

s_command.Instruction       = QUAD_INOUT_FAST_READ_CMD; ( код 0xEB)
s_command.DdrMode           = QSPI_DDR_MODE_ENABLE;

Читается 0xFF;

А дальше самое интересное - нахожу в даташите от другой микросхемы MT25TL01G   команду QUAD_INOUT_FAST_READ_DTR_CMD; (0xED) - она для DDR режима.

Лезу в даташит на W25Q128 - там про нее ни слова.  Но пробую заменить команду 0xEB на 0xED.

И о чудо - все работает  

sborXfDz.png?download=1

но есть нюанс - смещено на 2 байта почему-то.

Тогда я игнорируя рекомендацию даташита от ST меняю  

QSPI_SAMPLE_SHIFTING_NONE

на 

QSPI_SAMPLE_SHIFTING_HALFCYCLE

Получаю смещение на 1 байт в обратную сторону

5l4r7LnV.png?download=1

 

Что делать?

 

 

Инициализация QSPI такая

QSPIHandle.Init.ClockPrescaler     = 6;
  QSPIHandle.Init.FifoThreshold      = 16;
  QSPIHandle.Init.SampleShifting     = QSPI_SAMPLE_SHIFTING_NONE;
  QSPIHandle.Init.FlashSize          = 23;
  QSPIHandle.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_7_CYCLE;
  QSPIHandle.Init.ClockMode          = QSPI_CLOCK_MODE_0;
  QSPIHandle.Init.FlashID            = QSPI_FLASH_ID_1;
  QSPIHandle.Init.DualFlash          = QSPI_DUALFLASH_DISABLE;

 

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


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

ЭВРИКА!

Надо было увеличить DUMMY_CYCLES  на 2!

 

Правда работает это почему-то только в MemoryMapped Mode. Обычное чтение в ДДР режиме читает с ошибками.

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


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

Может быть поможет...
Можете распечатать ответы вашего чипа и узнать, какие коды команд и с каким количством dummy cycles подерживаются.

Или делать по датиашиту.

JESD216.pdf

Изменено пользователем GenaSPB

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


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

Приехал осциллограф!  

Посмотрел я клок и вот что увидел.

На частоте 25 МГц ( один квадрат = 1 вольт, то есть минимум - 0.7 вольт, максимум 2.6 вольт)

YAbKc1EC.png?download=1

 

Поддаем газку - 35 МГц

2bZzLaU6.png?download=1

 

Амплитуда меняется мало, но сигнал съезжает вверх.

Щупы осциллографа включены в режим 1:10.

Важные моменты:

1. Прикосновение щупом немного портит сигнал.

2. Сигнал на разъеме практически идентичен сигналу на пине контроллера.

Что скажете, господа?

 

Отключение дисплея практически приводит сигнал в норму

4pVCocE9.png?download=1

 

Я уж было решил, что проблема  в самом дисплее, но не тут-то было.  Ставлю пиксельклок на 50 МГц

kPxMt6gh.png?download=1

 

Для сравнения - клок SDRAM на 50 МГц, SDRAM прекрасно работает

q1xmxAbk.png?download=1

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


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

14 minutes ago, aaarrr said:

Настройки пинов проверьте (OSPEED).

Вот же ж черт.....

Когда я разбирался со SDRAM, я специально полез в настроки и увидел, что калокуб настраивает пины на VeryHigh. Я решил, что этот момент у них продуман. И даже мысли не возникало когда были проблемы с дисплеем. Глянул - а там все в Low..... В принципе в этом тоже есть дальновидность разработчиков, в основном то проекты на мелких дисплеях, там частоты не более 10-15 МГц.

В общем, перенастроил я и вуаля

LLV2MCPT.png?download=1

 

 И дисплей заработал даже на 51 МГц.

 

В принципе хватает, но я решил достигнуть документированного в даташите максимума (для контроллера то ли 70, то ли 80 МГЦ).

И вот примерно на 53 МГц  отладчик теряет связь с контроллером и генерация пропадает.  Подобное отваливание я наблюдал и тогда, когда настраивал различные выходы (MCO1, PixelCLock) на очень низкие, менее 1 МГц частоты - дисконнект и даже после вырубания питания контроллер можно прошить только если нажать предварительно RESET, то есть какая-то глобальная проблема с тактированием. Что это может быть?

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


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

И QSPI заработало на 66 МГц!!! Уж ее то выходы зачем нужно было в Low?

Правда читается неправильно, но  у меня и на низких частотах была та же проблема, а это уже совсем другая история.

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


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

40 minutes ago, MementoMori said:

В принципе в этом тоже есть дальновидность разработчиков, в основном то проекты на мелких дисплеях, там частоты не более 10-15 МГц.

Да какая уж тут дальновидность, забыли тупо.

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


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

9 minutes ago, aaarrr said:

Да какая уж тут дальновидность, забыли тупо.

Насколько я знаю, если некая линия не предполагает высокочастнтных сигналов, то ее лучше настроить в LOW, дабы не звенела и не создавала помех, не так ли? 

Так вот до 30 МГц пиксельклока на линиях все в норме. А дисплею 800х480 30 МГц за глаза. А все их отладочные платы не более 472х280 (одна какая-то есть на 640х480)

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


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

16 minutes ago, MementoMori said:

Насколько я знаю, если некая линия не предполагает высокочастнтных сигналов, то ее лучше настроить в LOW, дабы не звенела и не создавала помех, не так ли? 

справедливо, но -

40 minutes ago, MementoMori said:

И QSPI заработало на 66 МГц!!! Уж ее то выходы зачем нужно было в Low?

Как есть профукали.

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


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

7 hours ago, aaarrr said:
7 hours ago, MementoMori said:

QSPI заработало на 66 МГц!!! Уж ее то выходы зачем нужно было в Low?

Как есть профукали

А вот тут категорически согласен) 

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


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

12 hours ago, aaarrr said:

Настройки пинов проверьте (OSPEED).

У меня ещё такой вопрос. Насколько можно верить осциллограф в плане формы сигнала? Выше я привёл осциллограмме клока sdram на 50 МГц, так вот звон на ней на порядок сильнее чем при моделирование в Hyperlynx на 90 МГц.  Может ли это быть результатом искажения сигнала у щупе? Провод то длинный.  

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


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

1 hour ago, MementoMori said:

Может ли это быть результатом искажения сигнала у щупе? Провод то длинный.

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

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


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

22 hours ago, aaarrr said:

Как есть профукали.

Кстати, из интереса создал проект в кубе для F746 и для H743. 

В первом случае qspi порты инициализирутся автоматом как VeryHigh, во втором - как Low.   Это атас, господа!!!!!!!!!!!!    А я еще, помните, удивлялся, что проблема странным образом появилась когда я на 743 камень перешел)))  Все искал отличия в работе qspi...

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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