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

Проблемы с SPI интерфейсом

2 часа назад, onic777 сказал:

то может все же стоит посмотреть внимательнее огрызок кода ?!!! 


 // **************************************
// *  Do One SPI Exchange
// **************************************
byte TFT_SPI (byte data)
{
    if (timeOut)
    {
        timeOut--;
    }
    return USART_SpiTransfer(TFT_USART, data);
}

 

И на что же тут смотреть???   :scratch_one-s_head:

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


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

To jcxz

На что смотреть? Издеваетесь? На функцию

USART_SpiTransfer(TFT_USART, data);

которой как вы утверждаете нигде нет! Вы же сами писали, что в представленном ОГРЫЗКЕ КОДОВ главной функции SPI обмена нигде нет?!!! И вообще, что это за неуважительное отношение к коллегам? Что за терминология "ОГРЫЗКИ КОДОВ"? 

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


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

Несколько слов о задержках!

В процедуре инициализации установлено после команды 0х01 задержка примерно 10 mS (Must be 6 mS) and after command 0x11 set delay 130 mS (must be 121 mS).

Увы! Результат = 0!!! Ничего не изменилось!

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


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

9 часов назад, onic777 сказал:

To jcxz

На что смотреть? Издеваетесь? На функцию

Похоже это вы издеваетесь. Или троллите....

9 часов назад, onic777 сказал:

USART_SpiTransfer(TFT_USART, data);

которой как вы утверждаете нигде нет! Вы же сами писали, что в представленном ОГРЫЗКЕ КОДОВ главной функции SPI обмена нигде нет?!!!

Видимо я слепой.... :umnik2: 

Укажите номер строки, начиная с которой эта функция якобы находится в том, что вы прислали.

 

9 часов назад, onic777 сказал:

И вообще, что это за неуважительное отношение к коллегам? Что за терминология "ОГРЫЗКИ КОДОВ"? 

Подайте жалобу в комитет защиты ёжиков...

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


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

22 минуты назад, jcxz сказал:

Укажите номер строки, начиная с которой эта функция якобы находится в том, что вы прислали.

Вы что, издеваетесь? Это же функция из КУБа! Ее каждый должен узнавать в лицо и работает она всегда правильно. Ее по определению невозможно заставить работать неправильно. А если не верите - вы жертва пропаганды! :crazy::biggrin: 

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


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

Маркировка контроллера (чип), ревизия на рабочих и сбойном, одинаковые ?

("Вы проигнорировали мой вопрос . . . " )    :)))

Quote

Подайте жалобу в комитет защиты ёжиков...

Я уже обращался. Пустая трата времени.  

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


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

1 час назад, Сергей Борщ сказал:

Вы что, издеваетесь? Это же функция из КУБа! 

В самом первом сообщении ТС писал:

16.05.2022 в 11:07, onic777 сказал:

Я имею 3 разные платы контроллеров (EFM32GG332) и 3 разные платы контроллеров (EFM32GG380)

т.е. - вроде не STM32.

Или....... неужто Куб уже и до SiLabs-а добрался??!  :shok:

 

PS: Вроде как оба EFM32GG332, EFM32GG380 - это Cortex-M3 (without FPU). И в то же время в присланном исходнике имеется такой "перл":

void GLCD_VBandClear (unsigned NUM, unsigned x0,unsigned y0,unsigned x1,unsigned y1)
{
unsigned dx,dy,ddx;
unsigned xx0,xx1;
unsigned i,m;

  GLCD_Direction (USE_HORIZONTAL);
  dx = (unsigned)fabs(x1-x0);
  dy = (unsigned)fabs(y1-y0);
...

Зачем-то(?) использована плавучка, там где вообще нафиг не нужна. Уж не говоря о том, что на Cortex-M3 будет программная эмуляция (тормоза), так ещё и возможны проблемы с ошибками округления на операциях unsigned->float->unsigned. И, соответственно - неверная работа функции. Автор сего творения просто на ровном месте разложил потенциальные грабли.

Быдлокод детектед? :crazy:

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


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

USART_SpiTransfer(TFT_USART, data);

Тут вроде норм., ф-ия из SDK-API Silabs. Работает с буферизацией и "синхронно".

 

Spoiler

image.thumb.png.dd72eaf7d7817942825018292bec3e2d.png

 

https://docs.silabs.com/gecko-platform/latest/emlib/api/efm32g/group-usart

 

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


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

3 часа назад, jcxz сказал:

Или....... неужто Куб уже и до SiLabs-а добрался??!  :shok:

Даю уроки вангования. Оплата пивом :crazy::

3 часа назад, k155la3 сказал:

Тут вроде норм., ф-ия из SDK-API Silabs. Работает с буферизацией и "синхронно".

 

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


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

4 hours ago, jcxz said:

неужто Куб уже и до SiLabs-а добрался??!

Уже лет как 8 (или больше). Но со стороны Осло добирался.

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


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

Добрейший вам Всем денек, Дорогие коллеги!

Мой вопрос успешно разрешился, так что тему можно считать закрытой!

Во-первых, еще раз перерыл интернет, и наткнулся на статью https://eax.me/stm32-ili9341/ "Использование TFT-дисплеев на базе ILI9341 с тачскрином", которая еще раз подтолкнула меня к мысли о том, что моя проблема связана с питанием, ну или с уровнями сигналов. Автор статьи в одном месте пишет "Важно! ILI9341 не понимает 5-и вольтовую логику от слова совсем". Пяти вольт у меня, как вы помните, нет в интерфейсе, но я все же взялся опять за осциллограф... Проверка всех используемых сигналов ничего особенного не дала. Тогда я написал маленькую функцию, которая последовательно устанавливает и сбрасывает уровни каждого из используемых в интерфейсе битов по 10000 тысяч раз. Ну то так, для удобства наблюдения. И вот стал я смотреть каждый из сигналов в течение достаточно большого времени - несколько десятков секунд... Питание контроллера 3,3В от достаточно мощного LDO (600мА). И на сигнале SCLK заметил с помощью цифрового осциллографа медленное изменение уровня в сторону увеличения!!! Сперва очень незначительное 3,34В, 3,35В, это все примерно за 10-12 S, но потом начались более существенные свачки от 3,1 до 3,7В. Хотя и взятся такому напряжению вроде бы как не откуда...

И я не "мудрствуя лукаво" включил воздуходувку и снял контроллер (EFM32GG332F1024). Поставил другой! Включил! И обомлел! Все заработало! Попробовал с этой платой все имеющиеся дисплеи - все работает! Вот такие пироги!

С этими контроллерами я имею дело уже лет 6, но такой случай у меня первый... Установил шт 60... (и EFM32GG332F1024. и EFM32GG380F1024). Очень хорошие контроллеры. И потребление в рабочем режиме у меня 3-4 мА не считая потребления дисплея... 

 

Всем участникам обсуждения большое спасибо за советы!!!

 

Строки функции 114-125

Маркировка контроллера и серия одинаковые, партия куплена в Остине (USA) года 4 назад.

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

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


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

46 minutes ago, onic777 said:

. . .  но потом начались более существенные скачки от 3,1 до 3,7В. Хотя и взяться такому напряжению вроде бы как не откуда...

Ну, наличие подключенного USB "дает шанс". А уплывание - подгулявшая где-то "земля". Из причнно-следственных связей, или контроллер был "подпаленный", или дефект самоликвидировался при выпайке  чипа.

Контроллер ILI9341 допускает максимум 3.3 В по входам при питании 3В.

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


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

Еще раз привет!

Снятый контроллера жалко - $13!!! :cray: Поэтому я его хорошо "вымочил" в спирте, высушил, и решил еще помучать! Взял имеющуюся в избытке плату от другого проекта и поставил туда контроллер! Написал небольшую тестовую программку с перебором всех битов, которые барахлили в предыдущем случае и начал тестировать! Пока вроде никаких увеличений напряжения на выводах не заметил... Но буду продолжать тестировать еще несколько дней. Просто запущу непрерывно работать... Результат опишу позже! Скорее всего действительно была "плавающая" пайка! Хотя я всегда проверяю пайку контроллера да и всего остального под микроскопом и  все выводы MCU проверяю на отрыв при сдвиге... 

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


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

30 minutes ago, onic777 said:

. . . Хотя я всегда проверяю пайку контроллера да и всего остального под микроскопом и  все выводы MCU проверяю на отрыв при сдвиге... 

Даже при просмотре под микроскопом нет гарантии что все будет видно (замыкания между выводами мс). Был случай, проверил пайку визуально до включения (паял не я, заводская), плата не идет. Начали проверять по полной программе, нашли осциллографом-тестером замыкание между выводами. Смотрю через микроскоп - ничего. Проверяю тестером - кз. В мс начал высматривать на повышенной кратности. Оказалось между выводами перемычка из тончайшей нитки от "штамповки" вывода (держалась не на припое, а на металле вывода).

В тесте желательно режим тестирования на кз смежных выводв мс.

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


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

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

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

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

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

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

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

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

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

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