|
СС1101 + STM32F = отлично, СС1101 + STM32L = сплошные проблемы |
|
|
|
Oct 9 2013, 05:13
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 13-07-12
Пользователь №: 72 746

|
Всем привет. Столкнулся со следующей проблемой.
Есть 5 плат абсолютных близнецов по разводке радиочасти, на которых установлена CC1101. На 3 платах ей рулит STM32L на 2 - STM32F100.
На платах с STM32F получена дальность связи в помещении около 35 метров, уровень приема сигнала на расстоянии 1,5 метра -40дБ, данные отлично передаются и принимаются.
На платах c STM32L дальность связи не превышает 5 метров, уровень приема сигнала на расстоянии в 1,5 метра - 95дБ, как следствие - огромное количество пакетов с неверной контрольной суммой
Заменил на заведомо работающих платах STM32F на STM32L и все повторилось -95дБ и 5 метров.
В чем может быть проблема? Контроллеры пин-ту-пин совместимы, радиочасть на платах идентична, но при использовании STM32L результаты многократно хуже, условия проведения замеров также идентичны как и драйвер для работы с CC1101.
Прошу помощи в решении данной проблемы.
|
|
|
|
|
Oct 9 2013, 11:20
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 13-07-12
Пользователь №: 72 746

|
Цитата(HardEgor @ Oct 9 2013, 12:21)  Либо связь по питанию между процессором и модулем , либо наводки по эфиру от умножителя частоты процессора. Еще могут быть какие-нибудь эффекты от того что программ STM32 и STM32L разные. Связь по питанию одинакова на обоих процах, ввиду их совместимости, помех по питанию не обнаружено Драйвер для процов одинаков, как и конфиг самой CC1101 Умножитель частоты .... оба проца тактируются от внутреннего источника, частота 16 МГц, частота. стабильна и не плавает
|
|
|
|
|
Oct 9 2013, 11:40
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (D1mconK @ Oct 9 2013, 14:20)  Но вы ведь и сами понимаете, что чудес не бывает. Процессоры разные, какими бы совместимыми они ни были заявлены. Возможно с L начинает звенеть ваш стабилизатор, звенеть на таких частотах, которых вы не видите вашим осциллографом. Возможно звенеть начинают цепи питания CC1101. У вас на питании около CC1101 параллельно обычным висят небольшие (сотни пик) емкости для больбы с ВЧ помехами по питанию? Возможно у L больше (или наоборот меньше) скорость нарастания напряжений на портах и что-то в CC1101 записывается со сбоем. Возможно у L на выходы наводится помеха от PLL, которая через соединенные с CC1101 ноги портов попадает в CC1101 и как-то хитро резонирует с ее внутренними сигналами. Можно повесить емкости на несколько десятков-сотню пик на информационные линии между STM32 и CC1101 чтобы задавить такие наводки. Кроме вас тут никто не сможет разобраться. Надо брать и постепенно исключать одно предположение за другим. Методом проб.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 9 2013, 15:30
|

Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-08-10
Из: Кишинев
Пользователь №: 58 967

|
Привет! Такое явление я замечал даже на одном и том же установленном процессоре C8051F432 + Si4432B1 при работе процессора на разных частотах. При работе на частоте внешнего кварца 11.0592МГц (для связи по UART c GPS модулем на скорости 9600 без ошибок) работа радиоканала была несколько хуже, чем при переводе процессора на тактовую частоту 48MHz от встроенного генератора с умножителем (12MHz * 4). Явление наблюдалось неоднократно на нескольких десятках одинаковых плат... Вот такие пироги... Цепи питания проверялись "осциллом" с полосой 250MHz. На плате стоят очень мощные блокирующие конденсаторы. Обильные земляные полигоны. Радиоканал и GPS модуль питаются от отдельных стабилизаторов c мощными фильтрами... Все бы было хорошо, я вы с удовольствием работал на 48MHz (сэкономил бы внешний кварц с обвязкой и, соответственно, место на плате), да и пиковая производительность проца при этом достигает 48 MIPS!!! , но увы - при этом не могу обеспечить безошибочный прием данных по UART от GPS на стандартной скорости 9600.
--------------------
Regards, Oleg Nicolaiciuc (onic777)
|
|
|
|
|
Oct 10 2013, 17:22
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Точный номинал рабочей частоты ? Используется один канал или выбирается из нескольких ? Если из нескольких, то одинакова ли картина на разных каналах ? Спектроанализатор в доступной близости есть ? Цитата(Onic777 @ Oct 9 2013, 19:30)  Цепи питания проверялись "осциллом" с полосой 250MHz. На плате стоят очень мощные блокирующие конденсаторы. Обильные земляные полигоны. Радиоканал и GPS модуль питаются от отдельных стабилизаторов c мощными фильтрами... Что есть "мощные блокирующие конденсаторы" ? (hint - частота собственного резонанса зависит от емкости и вовсе не случайно в связной аппаратуре не злоупотребляют емкостью, а ставят, скажем, 1000 pF, а то и целый выводок - 20, 100, 1nF, 10 nF).
|
|
|
|
|
Oct 15 2013, 10:50
|

Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-08-10
Из: Кишинев
Пользователь №: 58 967

|
Цитата(rx3apf @ Oct 10 2013, 20:22)  Точный номинал рабочей частоты ? Используется один канал или выбирается из нескольких ? Если из нескольких, то одинакова ли картина на разных каналах ? Спектроанализатор в доступной близости есть ?
Что есть "мощные блокирующие конденсаторы" ? (hint - частота собственного резонанса зависит от емкости и вовсе не случайно в связной аппаратуре не злоупотребляют емкостью, а ставят, скажем, 1000 pF, а то и целый выводок - 20, 100, 1nF, 10 nF). По питанию стоят 100uF (tantal) + 1.0 + 10n + 100p в соответствие с рекомендациями PDF PS частота 433.95 канал 1...
--------------------
Regards, Oleg Nicolaiciuc (onic777)
|
|
|
|
|
Oct 15 2013, 19:54
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Да, такой выбор конденсаторов неплох (я, впрочем, на такой частоте обхожусь несколькими 0.1 uF, результат не страдает). [offtopic on] А вот с проблемой приема 9600 при тактовой 48 MHz - неужели в этом контроллере настолько плохо с выбором коэффицинта деления для UART ? И, в конце концов, при такой тактовой можно было бы приемник сделать просто на ICP таймера (если есть, конечно), я на AVR при на порядок меньшей тактовой так делал, потому что основной UART был занят... [offtopic off]
|
|
|
|
|
Oct 16 2013, 04:08
|

Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-08-10
Из: Кишинев
Пользователь №: 58 967

|
Цитата(rx3apf @ Oct 15 2013, 22:54)  А вот с проблемой приема 9600 при тактовой 48 MHz - неужели в этом контроллере настолько плохо с выбором коэффицинта деления для UART ? [offtopic off] Приветствую! Да с коэффициентами деления как раз все нормально, можно делить и делить!!! Только вот коэффициент ошибки UART при этом не нулевой, а 0,16%, а для моей задачи это не допустимо! GPS выдает строковые данные 1 раз в секунду, т.е. если словил ошибочную посылку - очередную поймаешь, в лучшем случае, через 1 секунду!!!
--------------------
Regards, Oleg Nicolaiciuc (onic777)
|
|
|
|
|
Oct 16 2013, 09:25
|

Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-08-10
Из: Кишинев
Пользователь №: 58 967

|
Цитата(Сергей Борщ @ Oct 16 2013, 10:15)  Вообще-то UART способен принимать при разнице скоростей до 10%, а с вашей ошибкой скорости ошибок быть не должно вообще. Приветствую! Что-то я такого не встречал... Наверное не там лазил! А зачем же тогда многие производители микроконтроллеров рекомендуют использовать специальные (зачастую - внешние, т. е. дополнительные) для UART кварцевые резонаторы типа 11,0592 или 22,1184, при этом на борту имеется встроенные высокоточные генераторы 12МГц, дающие ошибку 0,26%. И вообще, какой смысл тогда вычислять ошибку менее 1%, ну или 5%.... ??? Просто у меня очень большая напряженка со временем. Мне отводится всего 1 минута, за время которой я с гарантией должен успеть как минимум 3 раза считать с GPS модуля 4 текстовые строки, обработать их, структурировать данные, зашифровать их в радиофрейм и передать на землю, а потом получить уведомление о приеме, и в случае ошибки, успеть повторить как минимум 1 раз!!! Вот и решили не рисковать и поставить внешний кварц 11,0592, и из-за него пожертвовать производительностью, площадью платы, весом и стоимостью изделия... Но за совет спасибо! Попробую поработать от 48MHz...
--------------------
Regards, Oleg Nicolaiciuc (onic777)
|
|
|
|
|
Oct 16 2013, 09:44
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(Onic777 @ Oct 16 2013, 16:25)  А зачем же тогда многие производители микроконтроллеров рекомендуют использовать специальные (зачастую - внешние, т. е. дополнительные) для UART кварцевые резонаторы типа 11,0592 или 22,1184, при этом на борту имеется встроенные высокоточные генераторы 12МГц, дающие ошибку 0,26%. И вообще, какой смысл тогда вычислять ошибку менее 1%, ну или 5%.... ??? Потому что коэффициенты делителей целые двоичные, вот и подгоняют частоту кварца к скоростям передачи чтобы было проще делить и получить разные необходимые скорости. Вот здесь есть цифры разбросов http://www.gaw.ru/html.cgi/txt/doc/micros/...mega_a/21_7.htm
|
|
|
|
|
Oct 16 2013, 11:04
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Onic777 @ Oct 16 2013, 12:25)  при этом на борту имеется встроенные высокоточные генераторы 12МГц, дающие ошибку 0,26%. Во всем диапазоне температур и напряжений питания? И вместе с ошибкой округления коэффициента деления суммараная ошибка не будет превышать 5% (у устройства на другом конце провода может быть погрешность в другую сторону)? В таком случае этот генератор можно использовать для тактирования UARTа. QUOTE (Onic777 @ Oct 16 2013, 12:25)  кварцевые резонаторы типа 11,0592 или 22,1184 Потому что в их UARTах тактовая частота еще делится на 8 или 16. Вот с учетом этого деления из 12МГц никак не получается нужная скорость с допуском 5%. А те производители, которые умеют ставить на вход UART делители с дробным коэффициентом пишут "при использовании UART можно пользоватьтся внутренним высокостабильным RC-генератором".
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|