|
|
  |
ATXMEGA и USB |
|
|
|
Sep 16 2013, 06:23
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
На сколько я представляю (больше по старым AT90USBxxx) частоту сначала делят прескайлером до 2 МГц, а уж только потом подают на блок USB, у которого есть своя PLL. Причем, это приходится делать даже тогда, когда, казалось бы, основная частота вполне подходящая. Казалось бы, бери 16 МГц да умножай на 3, - вот тебе и 48 МГц. Ан нет - сначала эти 16 МГц поделят на 8, чтобы получить 2 МГц, а уж только потом USB превратит их в нужные ей 48 МГц.
Как теперь это сделано на XMega точно не знаю, но судя по тому, что там тоже стоит USBCTRL с делителями 1, 2, 4, 8, 16, 32, то похоже, что тут тоже надо делить до 2 МГц, т.к. иначе зачем стоит делитель, а не умножитель?
|
|
|
|
|
Sep 16 2013, 09:31
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Цитата(Xenia @ Sep 16 2013, 13:23)  ...а уж только потом подают на блок USB, у которого есть своя PLL Спасибо за ответ. Была такая мысль, а именно мысль - а зачем же там делитель... Не могу только найти в даташите регистр PLL для USB. Может плохо смотрю? Цитата(Duhas @ Sep 16 2013, 14:25)  на сколько я помню как раз таки встроенный 32МГц генератор с помощью DFLL догоняют до 48 МГц, хотя вероятно возможны варианты. Ну не только 32 МГц встроенный, также 2 МГц'вый Или быть может достаточно 1) Поделить частоту прескайлером 2) В CLK.USBCTRL выбрать USB clock source -> PLL 3) В USB.CTRLA выбрать Speed Select (Bit 6) Ну и включить USB? В любом случае буду сейчас пробовать
--------------------
|
|
|
|
|
Sep 16 2013, 13:47
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Xenia @ Sep 16 2013, 12:23)  На сколько я представляю... Вы, как обычно, сначала, пишите, потом думаете... Извините за грубость, но соседний топик тому подтверждение. Цитата(Дмитрий_Мигачев @ Sep 16 2013, 17:49)  Пока не фига не работает.. Почитайте внимательно даташит на контроллер. Раздел System Clock and Clock Options->Overview, рисунок The clock system, clock sources, and clock distribution
Там все наглядно показано.
--------------------
|
|
|
|
|
Sep 17 2013, 04:26
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Цитата(prottoss @ Sep 16 2013, 20:47)  [/b]Там все наглядно показано. К сожаление, наверное я туповат, я не понимаю как мне получить 48 МГц из PLL, если из того же PLL идет 32 МГц для ЦПУ.
--------------------
|
|
|
|
|
Sep 17 2013, 05:08
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(ArtemKAD @ Sep 16 2013, 21:38)  Оттуда следует, что запустить USB можно и на разогнанном и подстроенном 32МГц RC-генераторе. Т.е. теоретически можно вообще без кварца? Кто-то такое пробовал? Atmel AVR1017: XMEGA - USB Hardware Design RecommendationsЦитата The 12Mbit/s USB FS signal rate specification requires 0.25% accuracy. In addition, the data recovery mechanism requires an internal Ч4 oversampling mechanism. Thus, the device should be able to generate an accurate, 48MHz signal clock to the USB module. To ensure proper signal quality, the Atmel AVR XMEGA provides different ways to generate the 48MHz oversampling frequency: • External crystal and the on-chip PLL • Internal RC oscillator The most convenient method is to use the on-chip, 32MHz RC oscillator calibrated at 48MHz. To ensure 0.25% signal rate accuracy, the internal RC oscillator should be auto-calibrated using an internal DFLL. This solution allows the external BOM cost to be reduced (no need for an external crystal). NOTE The USB module for XMEGA requires a minimum 12MHz CPU clock to send and receive data. Be sure to configure the XMEGA system clock with a minimum 12MHz clock when using the USB module. This clock can be stopped when USB is in suspend mode.
|
|
|
|
|
Sep 17 2013, 05:56
|
Местный
  
Группа: Участник
Сообщений: 227
Регистрация: 13-04-07
Пользователь №: 27 018

|
Цитата(ArtemKAD @ Sep 17 2013, 01:38)  Оттуда следует, что запустить USB можно и на разогнанном и подстроенном 32МГц RC-генераторе. Т.е. теоретически можно вообще без кварца? Кто-то такое пробовал? DFU bootloader такое пробует и не плюется.. и как уже посоветовали - читайте документацию, товарищи, тем более что у атмела она вполне приятная и читаемая
|
|
|
|
|
Sep 17 2013, 13:39
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Дмитрий_Мигачев @ Sep 17 2013, 10:26)  К сожаление, наверное я туповат, я не понимаю как мне получить 48 МГц из PLL, если из того же PLL идет 32 МГц для ЦПУ. Нет не туповат. На самом деле не это не возможно. Дело все в том, что делители в XMEGA могут делить только на степень двойки, в то время как отношение 16 МГц и 48 МГц равно 1 к 3. Есть два пути: 1. Использовать для тактирования USB кварц а для тактирования ЦПУ - встроенный генератор 32 МГц. 2. Использовать для тактирования USB кварц и тактировать ЦПУ от 24 МГц. Я не рассматриваю пути с разными извратами типа разгона встроенного генератора. Сам использую в проекте кварц на 7,3728 МГц, так как использую еще и USART. PLL умножает на 13 и имеет выходную частоту 95,8464 МГц. Дальше для USB делим на 2 (47,9232 МГц) а для ЦПУ на 4 (23,9616 МГц).
--------------------
|
|
|
|
|
Sep 18 2013, 03:49
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Цитата(prottoss @ Sep 17 2013, 20:39)  Сам использую в проекте кварц на 7,3728 МГц, так как использую еще и USART. PLL умножает на 13 и имеет выходную частоту 95,8464 МГц. Дальше для USB делим на 2 (47,9232 МГц) а для ЦПУ на 4 (23,9616 МГц). Спасибо большое, понял. Наверное действительно пойду путем как говорит Duhas, ибо сам в даташите вычитал что RC генератора для USB целей за глаза Да, Duhas Вам тоже спасибо, мне просто иногда нужен "волшебный пинок" в правильном направлении ))
--------------------
|
|
|
|
|
Sep 18 2013, 10:19
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Пока запустить не удалось. Разбираюсь. Кстати контроллер у меня ATXMEGA128A1U. В документации LUFA версии 130901 написано: Цитата Early silicon revisions of the ATXMEGA128A1U are incompatible with LUFA, due to their various errata relating to the USB controller Как узнать какая у меня ревизия ( после названия контроллера на микросхеме есть только цифры 1311 ), и с какими ревизиями не совместима LUFA, в документации этого не нашел. Микроконтроллеры куплены пол года назад, думаю что ревизия не должна быть старой. Кстати, пришла мысль в голову, что возможно нет поддержки в ядре (gentoo linux) Выхлоп dmesg: Код [24379.985684] hub 1-1.4.1:1.0: state 7 ports 4 chg 0000 evt 0004 [24379.986251] hub 1-1.4.1:1.0: port 2, status 0101, change 0001, 12 Mb/s [24380.090367] hub 1-1.4.1:1.0: debounce: port 2: total 100ms stable 100ms status 0x101 [24380.101357] hub 1-1.4.1:1.0: port 2 not reset yet, waiting 10ms [24380.163288] usb 1-1.4.1.2: new full-speed USB device number 119 using ehci-pci [24380.175245] hub 1-1.4.1:1.0: port 2 not reset yet, waiting 10ms [24380.237154] usb 1-1.4.1.2: device descriptor read/64, error -32 Т.е вроде как какое-то новое full-speed устройство обнаруживается, но вот последний error чтото не нравится
Сообщение отредактировал Дмитрий_Мигачев - Sep 18 2013, 10:28
--------------------
|
|
|
|
|
Sep 18 2013, 20:26
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Скажите, а вот выходят даташиты, у каждого из которых тоже есть номер ревизии, - эта ревизия имеет отношение к ревизии микросхемы? Сейчас, например, последний даташит на ATxmega128A1U/64A1U маркирован ревизией "E". А у zombi на чипах уже ревизия "L". Даже завидки берут  . А, если не имеет отношения (счет ревизиям разный на чипах и даташитах), то откуда все вы черпаете информацию о том, что в данном чипе было исправлено, а что нет? Тем более что с ростом ревизии у чипа ошибки исправляются, тогда как в даташите Errata может только расти. P.S. Заглянуть под брюхо своей ATxmega128A1 (без U) я не могу - она припаяна (не мной)  . Но есть у этого семейства такой регистр - MCU.REVID. Читается, как обычный регистр (не fuse). Вот что про него написано в мануале: Цитата REVID – Revision ID Bit 7:4 – Reserved. These bits are unused and reserved for future use. Bit 3:0 – REVID[3:0]: Revision ID. These bits contains the device revision. 0 = A, 1 = B, and so on. Только что прочла у себя этот бит - в нем число 7. Считаю буквы по порядку: 0 = A 1 = B 2 = C 3 = D 4 = E 5 = F 6 = G 7 = H (это моя, ура!)
|
|
|
|
|
Sep 19 2013, 03:17
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Цитата(Duhas @ Sep 18 2013, 22:57)  а зачем вам собственно LUFA? разве нет в ASF примера CDC устройства ? Интернеты сказали, что она лучше по всем параметрам
--------------------
|
|
|
|
|
Sep 19 2013, 04:57
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Цитата(zombi @ Sep 19 2013, 02:36)  Можно на пузе посмотреть. У моих ревизия "L". Да, у меня тоже L
--------------------
|
|
|
|
|
Sep 19 2013, 12:40
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(zombi @ Sep 19 2013, 03:04)  Срочно меняйте это старьё на !!! Не пожалеете. Цитата(Дмитрий_Мигачев @ Sep 19 2013, 07:17)  Интернеты сказали, что она лучше по всем параметрам Я и сама знаю, что A1U лучше, чем A1, но плата у меня не самодельная, а у Olimex купленная ( AVR-PX128A1). А уж сменить МК, да еще в таком корпусе, и на уже готовой плате, - это целая эпопея. Трудности на этом пути сильно превосходят мои возможности  . А вот готовых плат на A1U я что-то не вижу, даже у самого Atmel'а. Ни у кого из присутствующих нет желания подарить мне платку с A1U?  Или хотя бы продать по себестоимости?
|
|
|
|
|
Sep 19 2013, 15:43
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Xenia @ Sep 19 2013, 15:40)  Ни у кого из присутствующих нет желания подарить мне платку с A1U?  Без проблем. Для экспериментов делал. Сейчас просто валяются. Питание разведено и почти все остальные все пины на гребёнки выведены. В Киеве.
|
|
|
|
|
Sep 23 2013, 08:58
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Обнаружил небольшие косячки в своем коде. Исправил и увидел импульсы прямоугольные с разным чередованием на осциллографе. Но что-то к сожалению пока все равно не так. Когда моя плата подключена к компьютеру, он даже из-за этого после биоса не загружается, видимо постоянно с USB чтото опрашивает. В логах такое: CODE [ 1338.314407] usb 1-1.3.3: new full-speed USB device number 10 using ehci-pci [ 1343.307366] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1343.307375] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1348.300453] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d80 [ 1348.300461] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1353.293663] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1353.293672] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1353.356599] usb 1-1.3.3: device descriptor read/64, error -110 [ 1358.450522] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1358.450557] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1363.443483] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1363.443495] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1368.436695] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1368.436711] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1368.447682] hub 1-1.3:1.0: port 3 not reset yet, waiting 10ms [ 1368.509598] usb 1-1.3.3: device descriptor read/64, error -110 [ 1368.621441] hub 1-1.3:1.0: port 3 not reset yet, waiting 10ms [ 1368.683355] usb 1-1.3.3: new full-speed USB device number 11 using ehci-pci [ 1373.676439] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1373.676447] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1378.669525] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1378.669554] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1383.662611] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d82 [ 1383.662619] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1383.673610] hub 1-1.3:1.0: port 3 not reset yet, waiting 10ms [ 1383.735513] usb 1-1.3.3: device descriptor read/64, error -110 [ 1388.829456] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d80 [ 1388.829491] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1393.822417] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d80 [ 1393.822452] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1398.815629] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80400d80 [ 1398.815665] usb 1-1.3.3: khubd timed out on ep0in len=0/64 [ 1398.826617] hub 1-1.3:1.0: port 3 not reset yet, waiting 10ms [ 1398.888532] usb 1-1.3.3: device descriptor read/64, error -110 [ 1399.051306] usb 1-1.3.3: new full-speed USB device number 12 using ehci-pci [ 1404.044389] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80008d80 [ 1404.044542] usb 1-1.3.3: khubd timed out on ep0out len=0/0 [ 1409.238195] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80008d82 [ 1409.238224] usb 1-1.3.3: khubd timed out on ep0out len=0/0 [ 1409.438656] usb 1-1.3.3: device not accepting address 12, error -110 [ 1409.449908] hub 1-1.3:1.0: port 3 not reset yet, waiting 10ms [ 1409.511824] usb 1-1.3.3: new full-speed USB device number 13 using ehci-pci [ 1414.504902] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80008d80 [ 1414.504937] usb 1-1.3.3: khubd timed out on ep0out len=0/0 [ 1419.698710] usb 1-1.3: clear tt buffer port 3, a0 ep0 t80008d82 [ 1419.698744] usb 1-1.3.3: khubd timed out on ep0out len=0/0 [ 1419.899174] usb 1-1.3.3: device not accepting address 13, error -110 [ 1419.899457] hub 1-1.3:1.0: unable to enumerate USB device on port 3 [ 1419.899685] hub 1-1.3:1.0: state 7 ports 4 chg 0000 evt 0008 Быстрое гугление пока не дало результата в поиске ошибки. Сейчас на месяц вынужден прерваться на другой важный проект, но эту задачу все равно рано или поздно решу.
Сообщение отредактировал IgorKossak - Sep 23 2013, 11:25
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
--------------------
|
|
|
|
|
Sep 30 2013, 09:27
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 6-03-06
Пользователь №: 15 008

|
Цитата(Duhas @ Sep 18 2013, 19:57)  а зачем вам собственно LUFA? разве нет в ASF примера CDC устройства ? Использую данную библиотеку и по ней есть вопрос: иногда проект входит в режим, когда прерывание ISR(USB_BUSEVENT_vect) вызывается постоянно, а не с 1 мс периодичностью, с заходом в udd_ctrl_interrupt_error() в часть: // Underflow only managed for control endpoint прямо внутрь: if (udd_control_in_underflow()) { udd_ctrl_underflow(); } не могу понять, почему флаг опустошения постоянно формируется... посоветуете что-нибудь по этому поводу?
|
|
|
|
|
Nov 2 2013, 17:43
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 27-09-12
Пользователь №: 73 712

|
USB сложен. У меня тоже проблема: периодическое нарушение работы экспериментального девайса после отключения холодильника на кухне.  Проходит импульс по питанию. Но суть не в импульсе, а в том что работа USB не восстанавливается полностью, а должна вроде? Ну типа прислать Clear Feature для проблемной конечной точки и т.д.
|
|
|
|
|
Nov 14 2013, 03:20
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Цитата(piroman @ Nov 3 2013, 00:43)  USB сложен. У меня тоже проблема: периодическое нарушение работы экспериментального девайса после отключения холодильника на кухне.  Проходит импульс по питанию. Но суть не в импульсе, а в том что работа USB не восстанавливается полностью, а должна вроде? Ну типа прислать Clear Feature для проблемной конечной точки и т.д. Я все больше начинаю задумываться, что может быть не стоит в серьезных проектах браться за USB. Но с другой стороны смущает, что на новых материнках все реже встречается rs-232 P.S. Вот даже не знаю, что дальше делать. Главный инженер говорит давай USB. Я ему объяснил чем USB плох, он говорит может тогда wifi или bluetooth, тоже кажется в промыленных условиях не совсем надежно, данных надо гнать не много, но нужна хорошая надежность и обязательно гальваническая развязка с компьютером. Если например гальваническую развязку RS-232 сделать не проблема, скорости небольшие через оптопары, то USB я так понимаю там даже при передаче 1 байта, частота передачи все равно большая (?????). Есть в наличии WIFI модуль WF121-A-v1, входные данные по UART на выходе радиоканал. Или все-таки надо отстаивать мнение что RS-232 самое надежное??
Сообщение отредактировал Дмитрий_Мигачев - Nov 14 2013, 04:59
--------------------
|
|
|
|
|
Nov 14 2013, 06:46
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Дмитрий_Мигачев @ Nov 14 2013, 07:20)  Я все больше начинаю задумываться, что может быть не стоит в серьезных проектах браться за USB. Но с другой стороны смущает, что на новых материнках все реже встречается rs-232 В промышленных условиях нужно использовать не USB, а тот же RS232 или RS485. Оптически развязанная версия RS232 - это "токовая петля" ("Current Loop", она же "CL"). Если скорости позволяют, конечно. Покупаете качественный компьютер и мультипортовку от той же MOXA. Ну или промышленный компьютер покупаете с соотв. портами. USB для серьезных применений не годится. То, что "на современных материнках нет COM-портов" - не аргумент. Это офисные компьютеры, вот COM - портов там и нет. Для офисных - да, сгодится и USB. Но не более того. P.S. Если позволяют скорости - я бы однозначно отстаивал один из вариантов RS232. Только мультипортовку качественную купите ... P.P.S. Вам, кстати, на какое расстояние нужно данные передавать ?
|
|
|
|
|
Nov 14 2013, 08:05
|
Частый гость
 
Группа: Участник
Сообщений: 110
Регистрация: 28-02-06
Из: Россия г. Омск
Пользователь №: 14 784

|
Цитата(kovigor @ Nov 14 2013, 13:46)  В промышленных условиях нужно использовать не USB, а тот же RS232 или RS485. Оптически развязанная версия RS232 - это "токовая петля" ("Current Loop", она же "CL"). Если скорости позволяют, конечно. Покупаете качественный компьютер и мультипортовку от той же MOXA. Ну или промышленный компьютер покупаете с соотв. портами. USB для серьезных применений не годится. То, что "на современных материнках нет COM-портов" - не аргумент. Это офисные компьютеры, вот COM - портов там и нет. Для офисных - да, сгодится и USB. Но не более того.
P.S. Если позволяют скорости - я бы однозначно отстаивал один из вариантов RS232. Только мультипортовку качественную купите ... P.P.S. Вам, кстати, на какое расстояние нужно данные передавать ? 2 -3 метра, не более P.S. А нет ли сейчас тенденции вытеснения RS-232 не только с офисных компьютеров??? Все любят сэкономить, и мы не исключение  Для наших целей порой за глаза материнки на каком-нибудь intel atom, они тоже иногда встречаются без RS-232. И как дела обстоят с передачей большого количества информации в ПК, через что для надежности?
Сообщение отредактировал Дмитрий_Мигачев - Nov 14 2013, 08:09
--------------------
|
|
|
|
|
Nov 14 2013, 09:31
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Дмитрий_Мигачев @ Nov 14 2013, 12:05)  Все любят сэкономить, и мы не исключение  Для наших целей порой за глаза материнки на каком-нибудь intel atom, они тоже иногда встречаются без RS-232. Вы готовы к проблемам, связанным с потерей связи через USB в самый неподходящий момент ? Готовы нести за это ответственность ? Если да, то пользуйтесь USB. Если нет - не экономьте, и применяйте для ответственных задач соотв. аппаратуру. Если произойдет авария, никто, поверьте, не похвалит вас за то, что вы сэкономили 200 баксов на оборудовании.
|
|
|
|
|
Nov 14 2013, 16:43
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(kovigor @ Nov 14 2013, 22:06)  RS232 надежнее USB на порядок из-за своей простоты (как минимум). 1. Если говорить о линиях связи, то RS232 и USB одинаково просты - в обоих интерфейсах необходимо минимум три провода - земля и две линии данных. 2. Если говорить о помехозащищенности, то как раз RS232 проигрывает USB во многом. Плюсы USB - дифф. пара, NRZI, жесткий протокол, при чем на железном уровне. У RS232 - единственная защита - бит четности/паритета. 3. Если говорить о стоимости, то на сегодняшний момент стоимость приемопередатчика для USB дешевле, т.к. он обычно встроен в микроконтроллер. Для RS232 нужно ставить внешний драйвер. 4. Если говорить о программном уровне, то у USB он относительно сложный по сравнению с RS232, что компенсируется надежностью самого протокола в пользу USB. Для тех кто понимает USB нет проблем создать такой интерфейс в своей программе. Если Ваш личный опыт общения с USB неприятный, не значит что он таков у всех. Опять же ИМХО - RS232 - в промышленности давно уже раритет как по помехоустойчивости так и по скорости передачи данных. По поводу вышесказанного про холодильники. Возможно, проблема не в USB а в том, что плата не верно разведена.
--------------------
|
|
|
|
|
Nov 15 2013, 13:27
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(ArtemKAD @ Nov 15 2013, 04:53)  Крайне спорное утверждение. Это бесспорное утверждение Цитата(ArtemKAD @ Nov 15 2013, 04:53)  Главная защита RS232 это громадные по сравнению с USB зоны гистерезиса плюс большие допуски по времени фронтов. Главный недостаток RS232 - передача сигналов относительно земляного провода. В промышленности однозначно используется передача данных по дифф. паре, не зависимой от земли. Любой интерфейс, использующий дифф. пару (в том числе и USB), т.е. симметричный, на порядок помехоустойчив чем RS232. По этому RS232 давно уже в серьезных приложениях не применяют. USB, кстати, и был разработан как замена для RS232. Цитата(ArtemKAD @ Nov 15 2013, 04:53)  RS232 свободно работает и больше 100м. Работает. Только на "золотом" кабеле и на ооочень маленькой скорости. Никто его на таких длинах не использует, потому как для таких длин есть симметричные RS422/485.
--------------------
|
|
|
|
|
Nov 15 2013, 15:26
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 27-09-12
Пользователь №: 73 712

|
По поводу холодильника. Сижу за компьютером, плату с USB проверяю, для ускорения процесса помеху по сети создаю вкл/выкл бытового вентилятора. В компьютерных динамиках слышно "ЩЁЛК"! У меня корпус ограничен в габаритах, не могу я там фильтров дополнительных поставить. Я ж энергию беру с сетевого адаптера 12 В. 3 штуки попробовал разных ентих адаптеров. На самом простом - сбоит почти каждый раз, а на других ничего вроде - редко. В худшем случае всё ж продолжает работать, акромя USB - приходится реконнектить. Тяжко разбираться, кабы был у мени аппаратный USB-протоколёр. Вообще, реально этот импульс по питанию подавить напрочь? Он, как я понимаю, короткий и мощный. Использую цепочку TVS-диод на 14В -> ферритовую бусину -> LM78L33 c керамическими кондёрами -> TVS-диод на 5В -> XMEGA c USB. У нас тут модернизировали одно старое устройство с RS232 на max232. Убрали max232 c обвязкой, добавили 2 оптрона+FT232RL = модный USB + опторазвязка.
|
|
|
|
|
Nov 15 2013, 23:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364

|
Цитата(prottoss @ Nov 15 2013, 16:27)  Любой интерфейс, использующий дифф. пару (в том числе и USB), т.е. симметричный, на порядок помехоустойчив чем RS232. ШАС, разогнались... USB имеет никакой гистерезис отсюда и его помехоустойчивость ниже плинтуса. Это устройство, не смотря на все ухищрения, реагирует буквально на каждый чих. Цитата(prottoss @ Nov 15 2013, 16:27)  Работает. Только на "золотом" кабеле и на ооочень маленькой скорости. Никакого "золотого" кабеля - на 100м RS232 работает практически на всём. Вот если надо больше - вот там уже возникают вопросы.
|
|
|
|
|
Nov 20 2013, 18:03
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 27-09-12
Пользователь №: 73 712

|
Ребята, оказывается есть большая проблема с USB CDC. Кратко суть: после прохождения помехи по USB, драйвер usbser.sys перестаёт слать BULK IN. Вот тут обсуждается.
|
|
|
|
|
Nov 21 2013, 12:18
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(kovigor @ Nov 21 2013, 00:53)  Даже обсуждать не хочу. USB не годится для работы в сложной помеховой обстановке ... Еще Вам раз намекаю - если Вы не умеете работать с USB - не делайте поспешных выводов и не вводите народ в заблуждение. Цитата(Alex11 @ Nov 21 2013, 02:14)  Да там и вне больших помех проблем миллион. Основная (и она же не дает работать при сильных помехах) - это полное отсутствие обработки ошибок у Микрософта в драйверах USB. Уронить машину в синий экран тривиальной ошибкой в дескрипторе - раз плюнуть. И в других местах то же самое. 1. Обработка основных ошибок в USB идет на аппаратном уровне. 2. Не используйте продукты от Microsoft в ответственных приложениях.
--------------------
|
|
|
|
|
Nov 21 2013, 13:32
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(kovigor @ Nov 21 2013, 19:05)  Кстати, вам не кажется странным, почему я не нападаю, например, на PCI, на ETHERNET, на PCI Express ? Загадка: Найдите два лишних термина: PCI, ETHERNET, PCI Express. Цитата(kovigor @ Nov 21 2013, 19:05)  Кстати, вам не кажется странным, почему я не нападаю, например, на PCI, на ETHERNET, на PCI Express ? Очевидно Вы эти интерфейсы не знаете совершенно. Цитата(kovigor @ Nov 21 2013, 19:05)  А только лишь на USB ? А ? Может, все-таки не во мне дело ? Возможно, не в Вас, а от вспышек на Солнце Но это не бросает тень на USB, как признанный во всем мире интерфейс. И это признание от ника kovigor совершенно не зависит. Цитата(kovigor @ Nov 21 2013, 19:05)  Так продукты-то не мои ! Примерно одинаковые по качеству результаты демонстрируют изделия самых разных производителей. Можно список производителей?
--------------------
|
|
|
|
|
Feb 24 2014, 22:53
|
Участник

Группа: Участник
Сообщений: 60
Регистрация: 23-07-09
Пользователь №: 51 492

|
Читаю тему так, случайно. И никто не обмолвился про "надежность" в другом плане, а именно в разъёмах... Если усб есть в промышленности, может есть и "особые" гнезда и вилки usb, которые нормально работают, фиксируются и т.д? Если нет - пусть дома сидит такой интерфейс.
|
|
|
|
|
Jul 8 2014, 08:15
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(Falkon_99 @ Jul 8 2014, 10:19)  да, есть поддержка host (OTG) только в контроллере AT90USB1287. Кто нибудь работал с ним? Есть ли библиотеки для работы с USB ? Или не заморачиватся и использовать STM32 контроллеры, на которые есть куча примеров ? Если нужен USB HOST, то стоит сразу использовать STM32 или подобное. Очень уж слабое ядро AT90 для таких задач...
|
|
|
|
|
Jul 8 2014, 09:06
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Falkon_99 @ Jul 8 2014, 10:19)  да, есть поддержка host (OTG) только в контроллере AT90USB1287. Кто нибудь работал с ним? Есть ли библиотеки для работы с USB ? Или не заморачиватся и использовать STM32 контроллеры, на которые есть куча примеров ? Я работала, с AT90USB647 (у него тоже есть OTG, только памяти вдвое меньше). Однако использовала его исключительно, как девайс, а не хост, поскольку последнее в мои задачи не входило. Среди относящихся к данной теме демок известно это: at90usb128-demo-cdc-1_0_3.zip at90usb128-demo-host-cdc-1_0_1.zip at90usb128-otg-dual_role-toggle-1_0_0-doc.zip AT90USB128 Generic demo of the Dual role Embedded Host-Device Library.zip Лично я начинала с первой (at90usb128-demo-cdc-1_0_3.zip), переделав ее на свой AT90USB647 (т.к. специально для AT90USB647 такой демки не было). Девайс и хост режимы преключаются там изменением в файле Atmel\at90usb128-demo-cdc\at90usb128\demo\cdc\conf\config.h по умолчанию там стоит: //! Possible values ENABLE or DISABLE #define USB_HOST_FEATURE DISABLED #define USB_DEVICE_FEATURE ENABLED А если нужно переключить на хост, меняешь оба дефайна на противоположные. Вам, вероятно, лучше подойдет at90usb128-otg-dual_role-toggle-1_0_0-doc.zip , но я не разбиралась, чем он отличается от at90usb128-demo-cdc-1_0_3.zip , т.к. на беглый взгляд они выглядят одинаково. Все эти архивы по имени можно сыскать на других сайтах, а в крайнем случае они есть у меня. Контролер AT90USB647 произвел на меня очень хорошее впечателение, несмотря на обширную эррату. И я даже загрустила, когда Atmel, поторопившись объявить о переходе AT90USBxxx на ATMegaxxxU6, взял свои слова назад (информация появилась в даташите ревизии H, а в ревизии K уже исчезла). Так они и остались в серии AT90, что обидно. Цитата(Falkon_99 @ Jul 8 2014, 10:19)  Или не заморачиватся и использовать STM32 контроллеры, на которые есть куча примеров ? Если архитектура AVR вашему сердцу не близка  , то я соглашусь с Копейкиным о целесообразности делать ставку на STM32F контроллеры, а не закладывать в проект AT90USB1287, тем паче, что сама компания Atmel не рекомендует его дальнешее применение. Тем не менее, не соглашусь с его мнением, что ядро AT90 очень уж слабое для таких задач. Ядро у них, конечно, по нынешним временам сильным не назовешь (16 МГц предел), однако сама по себе передача по каналу USB не требует от ядра какой-то особенной производительности, поскольку сам трансфер производится аппаратно. Там даже буферы для обмена сделаны на памяти, более быстрой чем остальное ОЗУ, и работают они от частоты PLL, а не так, как вся остальная память (соответственно этому, этих буферов в адресном пространстве не видно, а заполнение и опустошение их происходит через соответствующие USB-регистры).
|
|
|
|
|
Jul 8 2014, 09:57
|

Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010

|
Спасибо, архитектура AVR ближе, поэтому и смотрю в их сторону. Но знаний по USB не достаточно, поэтому паралельно просматриваю STM32, где куча примеров в сети... С другой стороны, те кто пробовал USB в STM32, в один голос твердят, что слишком уж запутано там всё, и новичку проще начать осваивать USB на других контроллерах. Вот и дилема... А вообще, задача простейшая, необходимо подключить USB флешку, и работать с файловой системой!
|
|
|
|
|
Jul 8 2014, 11:21
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Копейкин @ Jul 8 2014, 13:30)  ... буферы конечно выделены и тактируются от PLL, но ещё ведь вопрос обработки данных. Как функция AT90 ещё нормально, но хост должен быть готов к трансферу каждую мс - может и не успеть. Хост ничего такого делать не должен, поскольку именно он - активное начало в трансфере. Только хост может обратиться к девайсу и чего-то от него потребовать, а девайс обязан дать ответ не позднее, чем наступит таймаут. Более того, даже при всем своем желании девайс не имеет возможности вызвать хост или хотя бы подать ему какой-то сигнал без вопроса с его стороны, даже когда девайсу это очень нужно. В этом смысле USB чуточку похож на I2C, где мастер может быть только один, и именно он управляет всей шиной. Поэтому быть хостом просто лепота  , поскольку никто тебя не подгоняет: не можешь шевелиться быстро - шевелись медленно. Ну, а обработка данных - совершенно иной вопрос, а потому и не должен обсуждаться в отношении разницы хост-девайс. Цитата(Falkon_99 @ Jul 8 2014, 13:57)  Спасибо, архитектура AVR ближе, поэтому и смотрю в их сторону. Но знаний по USB не достаточно, поэтому паралельно просматриваю STM32, где куча примеров в сети... С другой стороны, те кто пробовал USB в STM32, в один голос твердят, что слишком уж запутано там всё, и новичку проще начать осваивать USB на других контроллерах. USB, на мой взгляд, можно только использовать, а освоить его невозможно  . Т.е. если честно разбираться в спецификации, то можно просто рехнуться. Поэтому народ обычно берет чужой готовый пример, а затем модифицирует его под свои цели. А то и вовсе использует целиком, не вникая в смысл алгоритма. Цитата(Falkon_99 @ Jul 8 2014, 13:57)  А вообще, задача простейшая, необходимо подключить USB флешку, и работать с файловой системой! Ничего себе простейшая. Да это очень трудная задача!  Сама файловая система невразумительна - приходится чужой код вживлять, поскольку самой такого не написать. А разговор с флешкой - отдельная премудрость. Я сама до сих пор файловую систему освоить не могу, хотя уже больше 10 лет с AVR-ками вожусь. Ну, работает она у меня, хоть кровь из носу.
|
|
|
|
|
Jul 8 2014, 14:22
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(Xenia @ Jul 8 2014, 15:21)  Хост ничего такого делать не должен, поскольку именно он - активное начало в трансфере. Только хост может обратиться к девайсу и чего-то от него потребовать, а девайс обязан дать ответ не позднее, чем наступит таймаут. Более того, даже при всем своем желании девайс не имеет возможности вызвать хост или хотя бы подать ему какой-то сигнал без вопроса с его стороны, даже когда девайсу это очень нужно. В этом смысле USB чуточку похож на I2C, где мастер может быть только один, и именно он управляет всей шиной. Поэтому быть хостом просто лепота sm.gif, поскольку никто тебя не подгоняет: не можешь шевелиться быстро - шевелись медленно. Если мне не изменяет память, то, согласно спецификации, хост должен опрашивать девайс не реже, чем девайс заявил в дескрипторе, обычно единицы миллисекунд. Обмен типа interrupt вообще с интервалом 1 или 2 мс, не помню точно. SW библиотеки хоста требуют таймер, периодом в 1 мс. Хотя, для самодельной системы, если нет потока данных, может и нет смысла всё строго соблюдатью
|
|
|
|
|
Jul 9 2014, 09:27
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Копейкин @ Jul 8 2014, 18:22)  Если мне не изменяет память, то, согласно спецификации, хост должен опрашивать девайс не реже, чем девайс заявил в дескрипторе, обычно единицы миллисекунд. Обмен типа interrupt вообще с интервалом 1 или 2 мс, не помню точно. SW библиотеки хоста требуют таймер, периодом в 1 мс. Хотя, для самодельной системы, если нет потока данных, может и нет смысла всё строго соблюдать. Верно, 1 мс, если это "full-speed". Однако это требование установили от балды, поскольку ниоткуда эта цифра не вытекает. В спецификации USB 2.0 сказано: "The Host Controller produces SOF tokens at a period of 1 ms when operating with full-speed devices, and at a period of 125 μs when operating with high-speed devices." Т.е. это чистая условность, которую даже девайс не может попросить изменить в передаваемых хосту дескрипторах (я там такого поля даже не нашла). Тем не менее, 1 мс это не так уж мало, чтобы у любой из AVR возник по этому повод напряг. Обычно даже часовой таймер запускают с периодом на 1 мс и прерывания по нему успевают обрабатывать. Короче говоря, если девайс успевает реагировать на запросы хоста за 1 мс, то почему бы хосту должно быть трудно выдавать эти запросы с той же скоростью? Т.е. здесь я протестую против положения, что AVR, якобы, может справиться с работой только в качестве девайса, а работа в качестве хоста им не под силу. Тем более, что прием и передача потребляют практически одинаковое количество ресурсов.
|
|
|
|
|
Jul 9 2014, 13:01
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(Xenia) Т.е. это чистая условность, которую даже девайс не может попросить изменить в передаваемых хосту дескрипторах (я там такого поля даже не нашла). Поле bInterval дескриптора Endpoint 1 байт. Цитата Interval for polling endpoint for data transfers. Expressed in frames or microframes depending on the device operating speed (i.e., either 1 millisecond or 125 μs units). Да я не собирался ругать AVR. Сам на них много чего делаю. Но USB-хост делать не стал-бы. Думаю дальше спорить не будем  правда?
|
|
|
|
|
Jul 9 2014, 18:08
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Копейкин @ Jul 9 2014, 17:01)  Да я не собирался ругать AVR. Сам на них много чего делаю. Но USB-хост делать не стал-бы. Думаю дальше спорить не будем  правда? Я бы тоже USB-хост делать не стала бы, не важно на чем  . Скажите, а как все-таки делают хосты на 3-вольтовых контроллерах? Ведь вроде бы по стандарту положено, чтобы USB был 5-ти вольтовым. Где он возьмет 5 вольт для Ubus, чтобы кормить девайсов? Да и у большинства современных контроллеров даже толерантности к 5-ти вольтам нет. У AT90 таких проблем нет, поскольку они сами пятивольтовые, а как решается вопрос совместимости 3-вольтового хоста и 5-вольтовых девайсов?
|
|
|
|
|
Jul 10 2014, 07:32
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(Xenia) Скажите, а как все-таки делают хосты на 3-вольтовых контроллерах? Ведь вроде бы по стандарту положено, чтобы USB был 5-ти вольтовым. Где он возьмет 5 вольт для Ubas, чтобы кормить девайсов? Да и у большинства современных контроллеров даже толерантности к 5-ти вольтам нет. У AT90 таких проблем нет, поскольку они сами пятивольтовые, а как решается вопрос совместимости 3-вольтового хоста и 5-вольтовых девайсов? 1) Линии D+ и D- не 5-вольтовые, а существенно меньше, и могут принимать несколько значений. Поэтому 3,3 или 5 вольт питание - неважно. 2) Для USB3 есть спец. микросхемы физического уровня ULPI<-> USB 3) Хост должен обладать собственным мощным 5-вольтовым источником - никуда не деться... Это питание, через ключи с токовой защитой, а в последнее время, часто просто через термопредохранители (самовосстанавливающиеся) подаётся на питание - линию VBUS. Для USB3 можно посмотреть ISP1705AET Цитата The ISP1705 can transmit and receive USB data at high speed (480 Mbit/s), full speed (12 Mbit/s) and low speed (1.5 Mbit/s), and provides a pin-optimized, physical layer front-end attachment to the USB host, peripheral or OTG controller with Single Data Rate (SDR) or Dual Data Rate (DDR) ULPI link
|
|
|
|
|
Jul 10 2014, 13:31
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(Xenia) Но не погорит ли 3-вольтовый МК, если ему подадут 5-вольт на линии D+ и D-? Максимальное напряжение на выводах D+ и D- м.б. 3,6 вольта, при штатном использовании. Большее напряжение можно только принудительно подать, в обход USB. Тем не менее, защита от статики обычно имеет верхнюю опору VBUS, так что при кратковременной подаче +5 вольт сгореть не должны.
|
|
|
|
|
Jul 10 2014, 15:55
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Копейкин @ Jul 10 2014, 17:31)  Максимальное напряжение на выводах D+ и D- м.б. 3,6 вольта, при штатном использовании. Большее напряжение можно только принудительно подать, в обход USB. Кажется, я поняла причину своих опасений. Это я по аналогии с Xmega, где линии D- и D+ являются альтернативными функциями порта D (буква D там и там - просто случайность), подумала, что и у AT90 это так. Ведь ничто не мешает контроллеру использовать порт по прямому назначению. Вот и испугалась, что AT90 тоже может выставить на этом порту высокий уровень, чем и повредить присоединенным к его линиям USB другим устройствам, толерантности к 5-вольтам не имеющим. Полезла в даташиты и обнаружила, что у AT90 линии D- и D+ не являются портами. Т.е. подать на них 5 вольт, в результате програмистской ошибки, на них невозможно. Правда у AT90USB82/162 эти линии совмещены с линиями I2C (SDA и SCL), но это не страшно, т.к. там "открытый коллектор".
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|