|
CMX869B automodem, не договариваются по скорости |
|
|
|
Mar 11 2014, 07:36
|
Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999

|
Приветствую, коллеги. Завожу связь между двумя модемами cmx869B. Завёл все нужные мне протоколы в ручном режиме. А вот в автоматическом режиме с QAM модуляцией ни как. Судя по регистру QAM status, всё застопоривается когда модемы начинают договариваться о скорости обмена. Опишу что я наблюдаю на линии и в регистрах. Есть 2 модема настроенных как Отвечающий (Answer) и Вызывающий (Calling). 1. Включаю отвечающий модем. Он начинает слать в линию тон 2100 Гц являющийся ответным и при этом в его QAM status регистре мы наблюдаем событие о том что он шлёт этот самый тон. Если в этот момент подключить к нему вызывающий модем, то в его QAM status регистре мы увидим что он детектирует этот тон. Вроде бы всё как надо. Однако через несколько секунд после включения, сигнал меняется на 2 сложенных синусоиды частотами примерно 2900 Гц и 610 Гц. И если уже с таким сигналом подключить к вызывающему модему, то ответный тон детектирован им не будет. 2. Далее, не важно с чистым ответным тоном либо с теми 2 синусоидами, в обоих модемах, и в ответном и в вызывающем в QAM status регистре по очереди возникают сообщения: детектирована V.32 преамбула (V.32 preamble detected) и Повторное начало настройки (Emergency retrain started). Оба сообщения относятся к режиму Настройки скорости (Training / Rate negotiation) что я так же вижу в этом регистре.
И второй пункт зацикливается. Что делать не допераю. Может что сделать нужно, но вроде же это автоматический режим. У кого какие комментарии? Может кто что подскажет?
Сообщение отредактировал Ruslan-maniak - Mar 11 2014, 07:44
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 25)
|
Mar 12 2014, 02:14
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Ruslan-maniak @ Mar 12 2014, 03:00)  QAM status register в обоих модемах по очереди принимает следующее значение: 0b0100110000000100 (обнаружена V.32 преамбула, сигнал/шум ещё не определено, режим установления скорости (Training / Rate negotiation)) 0b0101010000000100 (аварийно начата новая настройка (Emergency retrain started), сигнал/шум ещё не определено, режим установления скорости (Training / Rate negotiation))
Уровни приёма передачи задавал разные, но картина не менялась. Но если честно я не сильно разбираюсь в этом вопросе, если есть что посоветовать - с удовольствием выслушаю.
На самых низких уровнях иногда отвечающий модем выдаёт, что "carrier lost". Используется 2-проводное или 4-проводное подключение? В моем случае используется 2-проводное, особое внимание настройке дифф-системы, поскольку при высоких уровнях передачи, собственный заворот забивает полезный сигнал. Инициализация: TMR => 0xF016; //Start-Stop -10,5 dB V.32b, V.32, V.22b, V.22 QAM AutoModem RMR => 0xF036; //Start-Stop -10,5 dB V.32b, V.32, V.22b, V.22 QAM AutoModem QMCR => mode_mdm ? 0x001F : 0x0017;//mode_mdm ? Answer_mode : Calling_mode может дело в бите F в регистре QMCR, обратите на него внимание. "In V.32 or V.32 bis Automodem modes: If F is set to 1 a faster but less accurate echo cancellation training algorithm is used." Ну и процедура retrain по таймеру.
|
|
|
|
|
Mar 12 2014, 04:41
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Ruslan-maniak @ Mar 12 2014, 05:32)  Но я так полагаю что ретрэйн мне пока не интересен? Пока модем хотя бы раз не установил связь. Ведь так? Не совсем так, retrain - это принудительно заставить модем возобновить попытку соединения. Цитата Вот кстати при уровне -10.5 дБ, и происходит "carrier lost". У Вас 2-проводное соединение? Смотрите обвязку аналоговой части. На каком расстоянии включены модемы? Если на столе, то -10.5 Дб достаточно чтобы установить соединение что называется "влет" с качеством "Very good; could increase rate or retrain" или "Good". У себя наблюдаю именно такую картину.
|
|
|
|
|
Mar 12 2014, 05:08
|
Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999

|
Да, 2-проводное. Просто он у меня не перестаёт устанавливать связь, по этому я и говорю что пока нужды в ретрэйне нет. Я даже осциллографом вижу на линии как секунд 6 шлётся какая-то информация, затем секунд 5 - пауза и всё по новой. И так без конца. Хорошо, посмотрю аналоговую часть. сейчас у меня, грубо говоря, код выглядит следующим образом: Код SetRegister(0xE0, 0x0180); SetRegister(0xE0, 0x0100); SetRegister(0xE1, 0xF016); SetRegister(0xE2, 0xF036); SetRegister(0xEA, 0x0017); // SetRegister(0xEA, 0x001F); - здесь в зависимости от модема (опрашивающий, отвечающий)
while(1) { Qamstatus = GetQamModemStatusRegister(); } Задержки и проверки в коде не стал отображать.
Сообщение отредактировал Ruslan-maniak - Mar 12 2014, 05:09
|
|
|
|
|
Mar 12 2014, 07:12
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Ruslan-maniak @ Mar 12 2014, 08:08)  Да, 2-проводное. Просто он у меня не перестаёт устанавливать связь, по этому я и говорю что пока нужды в ретрэйне нет. Я даже осциллографом вижу на линии как секунд 6 шлётся какая-то информация, затем секунд 5 - пауза и всё по новой. И так без конца. Хорошо, посмотрю аналоговую часть. сейчас у меня, грубо говоря, код выглядит следующим образом: Можно перевести в режим TX single Tone, и измерить уровень в линии, уровень заворота, а также чувствительность приемника, если генерить, например, 2100Hz.
|
|
|
|
|
Mar 13 2014, 02:07
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Ruslan-maniak @ Mar 13 2014, 03:03)  Попробую раздобыть схему (там всё сложно). Да всю не надо, только участок обвязки аналоговой части. Цитата На -10.5 почти всегда на 2ой-3ей попытке настройки скорости происходит carrier lost в отвечающем модеме. Хм. Вот это и смущает.
|
|
|
|
|
Mar 14 2014, 02:16
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Ruslan-maniak @ Mar 14 2014, 04:25)  А кстати, по поводу ретрэйна по таймеру - это просто для профилактики связи? А с какой периодичностью вы совершаете ретрэйн? Retrain по факту не установления связи (T=120 с или если количество неподтвержденных посылок превысило порог). Если связь есть, никакого retrain. Контроль по потоку данных. Цитата И ещё один вопрос: получается модемы сами выбирают максимально возможную скорость при данном качестве связи? На то он и автомодем. Цитата Просто у меня за 10 секунд связь скатывается до 4800 Бод - наблюдаю это в QAM status регистре. Не наблюдал такого, связь стабильная 14400. Со сторонним модемом, как установилась 9600 (определяется сторонним модемом, в этом режиме он на такой же модем не поднимает выше 9600), так и стоит как вкопанная.
|
|
|
|
|
Feb 26 2015, 14:09
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(Ruslan-maniak @ Feb 25 2015, 11:25)  Хочу снова поднять эту тему. Пытаюсь связать 2 модема по протоколу V.22 bis (не QAM). Но не могу понять как их настроить. Перепробовал разные вариации с High и Low band и RX и TX settings. Но так ничего и не получилось. И нигде не могу найти данных как правильно нужно настроить модем для работы в этом протоколе. Подскажите кто знает. Serial data from the USART is fed to the FSK modulator if V.21, V.23, Bell 103 or Bell 202 mode has been selected, or to the QAM modulator for V.22 bis, V.22, V.32 bis and V.32 modes.
|
|
|
|
|
Feb 27 2015, 03:57
|
Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999

|
Извините, перепутал. Я имел в виду: связать 2 модема по протоколу V.22 bis (НЕ АВТОМОДЕМ). Я так полагаю USART в моём случае это SPI? Давайте я приведу настройки которые использую: 1)первый модем генеральный регистр Код genConfig.Equalise = ENABLE_EQUALISE_GenEqualiseCMX869B; genConfig.InputGain = RXBN_OPEN_CIRCUIT_GenInputGainCMX869B; genConfig.PaternDetect = STANDART_PATERN_DETECT_GenPaternDetectCMX869B; genConfig.Loopback = LOOPBACK_DISABLE_GenLoopbackCMX869B; genConfig.Character = CHARACTER_1_GenCharacterCMX869B; genConfig.RelayDrive = RDRVN_PULL_TO_VDD_GenRelayDriveCMX869B; genConfig.PowerUp = NORMAL_POWER_GenPowerUpCMX869B; genConfig.Reset = NORMAL_GenResetCMX869B; genConfig.Irqnen = IRQN_PIN_ENABLE_GenIrqnenCMX869B; настройка отправки Код txConfig.Mode = V_22_BIS_HIGH_MODE_TxRxModeCMX869B; txConfig.Level = L_10_5_DB_LEVEL_TxRxLevelCMX869B; txConfig.GuardTone = NO_TX_GUARD_TONE_TxGuardToneCMX869B; txConfig.Scrambler = DISABLE_SCRAMBLER_ScramblerCMX869B; txConfig.DataFormat = START_STOP_NO_PARITY_TxDataFormatCMX869B; txConfig.DataSize = DATA_8_BITS_TxRxDataSizeCMX869B; 2) второй модем генеральный регистр - такой же как в первом настройка приёма Код rxConfig.Mode = V_22_BIS_LOW_MODE_TxRxModeCMX869B; rxConfig.Level = L_10_5_DB_LEVEL_TxRxLevelCMX869B; rxConfig.AutoEqualise = DISABLE_AUTO_EQUALISE_RxAutoEqualiseCMX869B; rxConfig.Scrambler = DISABLE_SCRAMBLER_ScramblerCMX869B; rxConfig.DataFormat = START_STOP_NO_OVERSPEED_RxDataFormatCMX869B; rxConfig.DataSize = DATA_8_BITS_TxRxDataSizeCMX869B; В результате в линии прослеживается аналоговый сигнал при отправке. Но принимающий модем вообще ничего не видит.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|