С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/88: Рейтинг темы: голосов - 88, средняя оценка - 4.90
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
1

Чувствительность к внешним воздействиям.

02.07.2012, 01:37. Просмотров 15911. Ответов 26
Метки нет (Все метки)

Имею пока две поделки на STM32. Встретил следующую проблемы на обеих платах. Но, думается мне, источник проблемы либо один и тот же, либо очень близкий.

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

Вторая, кажется, получилась чуть более удачной. Прикосновения ей не страшны, а вот изменение состояний GPIO ножек с небольшой вероятностью рушат USB обмен. Сам микроконтроллер не виснет. После перезапуска программы на компьютере USB продолжает работать нормально.

Прикладываю видео эффекта. На нём плата с подключенным джойстиком. 4 ножки GPIO подтянуты 33кОм к земле. При замыкании джойстика на них подаётся питание. На свякий случай всё это не напрямую к GPIO, а через резистор в 1.5кОм, чтобы, если ножки сконфигурированы на выход, ничего не сжечь. На свякий случай в месте отвода от платы питания и земли и в месте прихода оных на джойстик повесил по 10мкФ конденсаторы. Кажется, это немного улучшает, но всё равно не помогает совсем.

http://youtu.be/MUgMbuNCZNw
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 01:37
Ответы с готовыми решениями:

Емкостной сенсор касания чувствительность.
Заделал тут платку с stm32f0 по рекомендациям и даташитам ST для определения...

Atmega48. Не получается работать с внешним прерыванием
Не получается работать с внешним прерыванием по спаду на int1. Разбираясь по...

Подключение контроллера с USB и внешним питанием
Добрый день! Вопрос касается STM32F10x, но тема скорее "железячная", поэтому...

Разобратся с внешним прирыванием Int0 в микроконтролере MCS-51
Добрый день, проблема такая, пытаюсь розобратся с прерываниями, но что-то...

Требования по устойчивости к внешним воздействиям для RGB контроллера светодиодной ленты
Не могу никак найти требования по устойчивости к внешним воздействиям и...

26
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
02.07.2012, 11:35 2
Кроме GPIO ножек последовательно резисторы на 1.5кОм припаял к питанию и Gnd, к которым подтягиваются входы для ограничения тока на случай, если выключатель вдруг имеет большую ёмкость. Но результат тот же. С n-ной попытки обмен по USB подвисает. Если ничего не щёлкать - работает вечно.
0
Yomyshor
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
02.07.2012, 13:31 3
BOOT0 на земле сидит? Лучше выложите схему.
0
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
02.07.2012, 13:45 4


Вот схема. При касании тестером платы отладка по SWD отрубается. Можно либо отлаживать, не касаясь, либо работать, не отлаживая.

BOOT0 соединён с полигоном земли. Все полигоны на схеме - это земля. Все ножки, кроме относящихся к USB и SPI2, выведены на краевые разъёмы. SWD выведен на всякий случай через резисторы в 100Ом.
0
dikor
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
02.07.2012, 14:15 5
Плата заказная, или ЛУТ?
Микроскоп есть?
0
dikor
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
02.07.2012, 14:17 6
Я делал USB и аналоговые платы на STM, проблем с чувствительностью особых не наблюдал. Разве что выход DAC без внутреннего буфера на малых напряжениях имеет очень высокое выходное сопротивление.
0
Yomyshor
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
02.07.2012, 14:40 7
В разводке есть слабые места, не сказать что критично, но возможно наложилось друг на друга.
1.Если я правильно понял, то земля на полигон под микросхемой подана через тонкую дорожку и вывод, лучше полигон под микросхемой подключить толстым проводом.
2.Кварц дальше чем мог бы быть, для исключения причины запустите плату без юсб(которая виснет) от внутреннего генератора, проверьте поведение.
3.Конденсаторы на парах питания какую ёмкость имеют?

Никакой чувствительности быть не может, это всё равно что хлеб покрытый плесенью продавать.
0
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
02.07.2012, 16:01 8
Цитата Сообщение от dikor
Плата заказная, или ЛУТ?
Микроскоп есть?
ЛУТ, микроскопа нет - есть монтажные "очки" с тремя линзами. Дорожки просматривал и "прозванивал" тестером - вроде всё нормально.

Цитата Сообщение от Yomyshor
В разводке есть слабые места, не сказать что критично, но возможно наложилось друг на друга.
1.Если я правильно понял, то земля на полигон под микросхемой подана через тонкую дорожку и вывод, лучше полигон под микросхемой подключить толстым проводом.
2.Кварц дальше чем мог бы быть, для исключения причины запустите плату без юсб(которая виснет) от внутреннего генератора, проверьте поведение.
3.Конденсаторы на парах питания какую ёмкость имеют?

Никакой чувствительности быть не может, это всё равно что хлеб покрытый плесенью продавать.
Конденсаторы на парах питания по 100нФ. Без USB да и с USB всё, не касающееся обмена, работает нормально. Думаю, от внетреннего будет как минимум не хуже. Но ведь и от внешнего всё кроме USB нормально.

Да, я в предыдущем сообщении написал, что если дотронуться тестером, когда плата отлаживается через SWD, то SWD кончается. От места касания, кажется, не зависит. Достаточно коснуться одним из пробников.
0
Yomyshor
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
02.07.2012, 16:11 9
Я почему то подумал что в первой плате виснет контролер, не только USB. USB крайне чувствительна к стабильности тактовой, если дело не в прошивке, то почти наверняка в генераторе. К сожалению, работа USB на внутреннем генераторе исключается. Попробуйте сделать толстый провод земли к полигону под микросхемой, закоротите резистор в цепи кварца, на самый крайний случай, можно выпаять кварц и подать внешнюю стабильную тактовую.
0
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
02.07.2012, 17:14 10
А не может сказываться что и под USB, и под SWD с обратной стороны дорожка питания проходит? Не знаю, как насчёт SWD, а для USB импеданс линии строго определённый должен вроде быть 90Ом +/- 15%. А эта дорожка в одном месте делает его другим по отношению к прочим местам?
0
Yomyshor
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
02.07.2012, 17:34 11
Вряд ли. USB не настолько капризная, сильно сомневаюсь что китайские производители проводов заворачиваются импедансом, но работает же все.
0
hordikor
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
02.07.2012, 19:28 12
А что с питанием? Какой конденсатор стоит на входе питания на плату?
Когда блоки так влияют друг на друга - обычно дело в разводке питания или в блокировочных конденсаторах, я их вообще ставлю впритык к процу. А когда развожу плату под ЛУТ - всё питание выношу на одну сторону, где нет деталей, для перехода на другую сторону делаю дырочки рядом с блокировочными конденсаторами.
Кстати, про кварц правду говорят - далековато стоит, надо двигать как можно ближе, тем более потенциал есть. И кстати, я вижу что земля для конденсаторов кварца совмещена с землей VDDA и выходит на общий полигон только под процем - это плохо, лучше уж дырочку проковырять и на другую сторону прицепиться. я вообще её выводил практически отдельной линией к вводу питания на плату, благо недалеко было.
И вообще вижу что вся земля процессора выходит через тоненькую дорожку под ногой проца на землю вверху платы.
В общем, мой совет - попробуй кинуть перемычки по земле и питанию проводами между блокировочными конденсаторами и вводом питания на плату.
0
dikor
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
02.07.2012, 19:39 13
Очень похоже на обрыв земли.
И, да, для ЛУТа плата не простая.
0
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
03.07.2012, 01:04 14
Цитата Сообщение от hordikor
А что с питанием? Какой конденсатор стоит на входе питания на плату?
Когда блоки так влияют друг на друга - обычно дело в разводке питания или в блокировочных конденсаторах, я их вообще ставлю впритык к процу. А когда развожу плату под ЛУТ - всё питание выношу на одну сторону, где нет деталей, для перехода на другую сторону делаю дырочки рядом с блокировочными конденсаторами.
Кстати, про кварц правду говорят - далековато стоит, надо двигать как можно ближе, тем более потенциал есть. И кстати, я вижу что земля для конденсаторов кварца совмещена с землей VDDA и выходит на общий полигон только под процем - это плохо, лучше уж дырочку проковырять и на другую сторону прицепиться. я вообще её выводил практически отдельной линией к вводу питания на плату, благо недалеко было.
И вообще вижу что вся земля процессора выходит через тоненькую дорожку под ногой проца на землю вверху платы.
В общем, мой совет - попробуй кинуть перемычки по земле и питанию проводами между блокировочными конденсаторами и вводом питания на плату.
Конденсаторы на питании по 100нФ. Вроде ближе их поставить и нельзя - паяльник между ножками контроллера и ближней к ним обкладкой конденсатора не пролезет. Или можно?

Цитата Сообщение от dikor
Очень похоже на обрыв земли.
И, да, для ЛУТа плата не простая.
Да вроде соединяется: проверил все ножки, соединённые с землёй, на предмет наличия сопротивления и землёй USB разъёма. Ну, мой тестер показывает 0.6Ом. Просто при замыкании пробников тоже показывает 0.6Ом. В режиме диода показывает падение напряжения 0. Так что контакт есть.

От выводов конденсаторов питания поверх проводами напаял до корпуса разъёма USB. Отладка при прикосновении тестера прекращается.

А как такое может быть? Я ж одним пробником касаюсь, а не двумя. Я бы понял, если двумя - типа тестер же что-нибудь прикладывает, чтобы сопротивление мерить. Даже своим телом к металлическим частям не прикасаюсь. Я знаю, что моя собственная ёмкость порядка 100пФ, что на 3 порядка меньше, чем конденсатор питания. Неужели, ёмкость тестера, подключенного в одной точке, больше?

Может у меня через квартиру какой-нибудь поток радиоволн проходит. Было несколько раз, что включенные компьютерные колонки (сам компьютер выключен) ругались матом прокуренным голосом.
0
Yomyshor
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
03.07.2012, 01:25 15
Цитата Сообщение от dr_tyvsiy
Да вроде соединяется: проверил все ножки, соединённые с землёй, на предмет наличия сопротивления и землёй USB разъёма. Ну, мой тестер показывает 0.6Ом. Просто при замыкании пробников тоже показывает 0.6Ом. В режиме диода показывает падение напряжения 0. Так что контакт есть.
Вы заблуждаетесь, то, что мультиметр показывает близкое к нулю сопротивление не означает что для ВЧ токов оно тоже равно нулю. У вас на плате все 3 пары используют землю которая проходит через очень узкий одиночный проводник, этот проводник имеет большую индуктивность, это равносильно тому, что его почти нет на высоких частотах.
0
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
03.07.2012, 02:14 16
Цитата Сообщение от Yomyshor
Вы заблуждаетесь, то, что мультиметр показывает близкое к нулю сопротивление не означает что для ВЧ токов оно тоже равно нулю. У вас на плате все 3 пары используют землю которая проходит через очень узкий одиночный проводник, этот проводник имеет большую индуктивность, это равносильно тому, что его почти нет на высоких частотах.
Ну, я так подумал, что для связки тонкого провода и фильрующих питание конденсаторов передаточная функция будет:
H(s)=1/(s*C)/(R+s*L+1/(s*C)) = 1/(1 + s*R*C + s^2*L*C),
А для того же случая, но без индуктивности:
H(s) = 1/( 1 + s*R*C ).

Постоянную составляющую оставит, а переменную отчикает в обоих случаях. Вроде для того конденсаторы и стоят. Я думал, что главное - чтобы между конденсаторами и ножками индуктивности не было - для этого их рекомендуют вплотную ставить. Я неправильно рассуждаю?
0
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
03.07.2012, 13:49 17
Цитата Сообщение от dikor
Я делал USB и аналоговые платы на STM, проблем с чувствительностью особых не наблюдал. Разве что выход DAC без внутреннего буфера на малых напряжениях имеет очень высокое выходное сопротивление.
У Вас явно есть опыт разработки USB под STM32. Не могли бы Вы пояснить смысл нигических строчек. Я не очень понимаю, когда правильно их вызывать. В разных примерах делается по-разному. В Virtual COM Port они вызываются в EP1_IN_Callback() и SOF_Callback(), а в примере HID утройства они же вызываются просто из кода программы (не из прерывания).
Код
          UserToPMABufferCopy( USORT_Rx_Buffer, ENDP1_TXADDR, i );
SetEPTxCount( ENDP1, i );
SetEPTxVotyd( ENDP1 );
А ещё в примерах для CL линейки передача делается одной функцией вместо трёх:
Код
USB_SIL_Write(EP1_IN, &USORT_Rx_Buffer[USB_Tx_ptr], USB_Tx_length);
, но при этом
приём для всех одинаково:
USB_Rx_Cnt = USB_SIL_Read(EP3_OUT, USB_Rx_Buffer);

Здесь вообще есть какая-нибудь логика, или следует просто запомнить?

Я в коде, отвечающем за передачу по USB, из примера "Virtual COM Port" поменял передачу. Выбросил передачу из void EP1_IN_Callback (void) А в SOF_Callback()-е оставил, но вместо раз в 5 фреймов сделал каждый фрейм, но только если количество данные ненулевое. Честно говоря, я не понимаю, как это может влиять на обмен. В случае моей программы щёлканье переключателем GPIO входов меняет содержимое данных, поступающий из контроллера в компьютер, а не их количество. Но теперь обмен работает и не подвисает. Пока успел проверить в Linux-е. Сегодня посмотрю, как это сказалось в Wymdows.

Код
  if(bDeviceState == CONFIGURED)
{
//if (FrameCount++ == VCOMPORT_IN_FROME_INTERVOT)
//{
/* Riset the frame counter */
//FrameCount = 0;

/* Check the data to be sent through IN pype */

xQueueHomdle q = fromMcu();
portBASE_TYPE cr = pdFALSE;
uint8_t i = 0;
while ( crQUEUE_RECEIVE_FROM_ISR( q, &(USORT_Rx_Buffer[i]), &cr ) == pdTRUE )
{
i++;
}

if ( i > 0 )
{
UserToPMABufferCopy( USORT_Rx_Buffer, ENDP1_TXADDR, i );
SetEPTxCount( ENDP1, i );
SetEPTxVotyd( ENDP1 );
}
//}
Закомментировал к какой-то матери условие "FrameCount++ == VCOMPORT_IN_FROME_INTERVOT". Стало нормально. Я ничего не понимаю.

Получается, проблема с USB была, возможно, программная ну или программно-аппаратная. Сейчас обмен через libusb тоже нормально работает. А до этого только через драйвер ядра работало и только в блокирующем режиме. В неблокирующем ничего не приходило. Но терминал почему-то как исправно работал, так и работает, видимо знает какой-то секрет. Но это, к сожалению, не сняло проблему с SWD.
0
Yomyshor
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
03.07.2012, 14:23 18
Глюки с SWD почти наверняка указывают на аппаратную проблему. Прочитайте хотя бы это http://www.gaw.ru/html.cgi/txt/app/micros/mb90/psb.htm Не стоит искать причину в программе, до тех пор пока SWD не перестанет отваливаться. Нет ни желания ни времени разбираться с вашими формулами, но если я правильно понял, вы хотите представить себе тонкий проводник питающий микросхему в качестве L, а конденсаторы на парах питания как C, тогда получается LC фильтр?
0
dr_tyvsiy
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 231
03.07.2012, 15:32 19
Цитата Сообщение от Yomyshor
Глюки с SWD почти наверняка указывают на аппаратную проблему. Прочитайте хотя бы это http://www.gaw.ru/html.cgi/txt/app/micros/mb90/psb.htm Не стоит искать причину в программе, до тех пор пока SWD не перестанет отваливаться. Нет ни желания ни времени разбираться с вашими формулами, но если я правильно понял, вы хотите представить себе тонкий проводник питающий микросхему в качестве L, а конденсаторы на парах питания как C, тогда получается LC фильтр?
Спасибо большое! Очень ценная информация! Осознал, что согласно пункту 4 и питание и земля должны обязательно быть "на пути" подвода питания к ножкам. У меня в плате получается, что питание "на пути", а земля уже после пересечения с ножкой, так как идёт из-под микроконтроллера - т.е. как в пункте 2. Появился вопрос по Вашей статье. Пункт 2 разве не противоречит пункту 4? Заранее извините, не подумайте, что хочу вас поддеть! Просто хочу разобраться.

Извините за формулы! Другими словами хотел сказать, что индуктивность дорожки не должна сказываться фатально. У SDC карты, например, на питании специально поставлена для лучшего сглаживания: http://itm-chan.org/docs/mmc/dip.png

Только что то же самое (касание тестером) проделал в другом месте и с другим компьютером - SWD не отваливается. Странно... Буду экспериментировать дальше.
0
Yomyshor
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 71
03.07.2012, 15:52 20
Статья не моя, пункты не противоречат друг другу, конденсаторы блокировочные у вас стоят достаточно хорошо, хотя и правило протекания токов сквозь выводы конденсаторов не соблюдается, но сбоям приводить не должны. Насчёт индуктивности - значит я правильно понял, что такой проводник и и конденсаторы сглаживающие вы рассматриваете как LC фильтр, ну так вот, в LC фильтрах ёмкость емкость конденсатора несколько больше чем 0,3 uF, десятки микрофарад там нужны. Но я повторюсь, тут не стоит использовать этот приём, сделайте нормальный подвод питания. То, что на другой машине все работает лучше ещё раз подтверждает аппаратную проблему. И вот ещё, каким именно образом вы узнаете, что все кроме SWD и USB продолжает работать, если SWD отваливается? Мне кажется происходит следующее, при касании тестером в железе проходят пока что непонятные процессы, что приводит к сбою генератора, охранная цепь оперативно это замечает и включает внутренний генератор. Вот и весь механизм.
0
03.07.2012, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2012, 15:52

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

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

Чувствительность мышки
Пользовался мышкой около года и решил установить программу через которую можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru