Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.08.2009, 20:11
|
|
Прописка
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
|
Сопряжение периферии с ПК
Доброго времени суток, форумчане!
Посоветуйте как поступить, требуется сопрячь по USB МК и ПК.
Исходные данные:
Имеется 2 вида информации, назовем их потоком А и потоком В. Поток А, размером 10МБайт, собранный за конечный интервал времени, когда ПК спал.
Поток В размером 4кБайта, получаемых за 1 сек. (В-поток реального времени). Все это "хозяйство" требуется передавать в ПК по требованию ПК. В ПК информация потоков А и В обрабатывается разными программами. Скорость передачи 12 МБит/сек.
Теперь о системном уровне. Есть несколько вариантов передачи.
Первый и самый простой - использовать 2 устройства и "долбить" каждым свой поток. Сердито и просто, но 2 устройства.
Второй- использовать 1 устройство, в нем делать своего рода микширование или мультиплексирование данных. Очень подходит для решения задачи. Но тут свои "заморочки":
1) Если передавать "фиксированную" длину, например по 256 байт, хорошо укладывается оба потока (частями, около 200 байт потока А и 20-32 байт потока В), но после окончания передачи потока А будет долбить 200 байт пустоты.
2) Сделать "плавающую" длину, в начале передаем скажем длиной 256 байт, а после передачи потока А уходим на "короткую" по 32 байта.
В любом случае потоки А и В дополняются признаками для их отождествления.
Теперь о главном, аппаратно-программная часть МК может решиться хорошо. А что делать с дровами и софтом? В любом случае их надо писать. Так что проще написать на фиксированную длину? Или огорошить себя такой головной болью и биться с плавающей длиной? 8O
Спасибо всем, кто откликнется.
|
|
|
|
03.08.2009, 20:34
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
Ну сделайте комбо-девайс, два ЮАРТа, например, или HID+mass storage, или ЮАРТ+свой драйвер, или... короче вариантов масса. На каком МК хотите делать?
__________________
Если ты читаешь это - значит тебе нечем заняться...
|
|
|
|
03.08.2009, 20:39
|
|
Прописка
Регистрация: 01.08.2009
Сообщений: 142
Сказал спасибо: 6
Сказали Спасибо 38 раз(а) в 14 сообщении(ях)
|
Я с USB вообще бы связываться не советовал, по моему лучше будет LPT + COM (по крайней мере с софтом никаких проблем)
|
|
|
|
03.08.2009, 21:51
|
|
Вид на жительство
Регистрация: 05.01.2007
Адрес: Украина, г. Макеевка
Сообщений: 408
Сказал спасибо: 229
Сказали Спасибо 62 раз(а) в 52 сообщении(ях)
|
Не понимаю, зачем скорость передачи 12 Мбит/с? Если я не ошибаюсь то для передачи 4 Кбайта в сек необходимо скорость в 32 кбитс, ну пусть еще туда добавите конрольную сумму и еще какую ниибудь инфу, в любом случае 115200 достаточно будет с головой. Т.е. обычный com, ну а если Вы товарищ решили всеже только USB, то думаю FT232 Вам в помощь, да и у него скорость будет куда по выше чем 115200.
По поводу 2 потоков, то если я правильно понял, то у Вас один идет постоянно, а второй по сути должен сливатся на ПК один раз за определенный период. Тогда предлагаю сделать так. В момент очередной передачи второго потока, вы в паузы когда не передаете основной поток, вставляете сегменты второго, а когда передадите, то передаете признак конца. и того при скорости в 115200 Вы можете передать, грубо около 10 Кбайт, думаю за какой промежуток времени Вы сможете передать полностью второй поток, посчитаете сами. В общем думаю идея ясна. Удачи.
|
|
|
|
03.08.2009, 22:51
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
ИМХО, если с разными потоками работают разные программы, то один UART им поделить между собой трудно будет, придется сильно исхитряться.
Цитата:
|
Я с USB вообще бы связываться не советовал, по моему лучше будет LPT + COM (по крайней мере с софтом никаких проблем)
|
Это почему лучше? Для программиста оно конечно да, гораздо проще, а вот для конечного пользователя все наоборот, к тому же, не забывайте, что эти интерфейсы уже вымерли в ноутбуках, и стремятся к вымиранию в десктопах.
__________________
Если ты читаешь это - значит тебе нечем заняться...
|
|
|
|
03.08.2009, 22:59
|
|
Вид на жительство
Регистрация: 05.01.2007
Адрес: Украина, г. Макеевка
Сообщений: 408
Сказал спасибо: 229
Сказали Спасибо 62 раз(а) в 52 сообщении(ях)
|
Абсолютно с Вами согласен, но автор темы не уточняет как будут эти данные обрабатыватся, поэтому и предложил. А вообще думаю, нужно немного конкретизировать. Но чистый COM или LPT однозначно нет.
|
|
|
|
03.08.2009, 23:55
|
|
Прописка
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
|
Сообщение от vdlab
|
Ну сделайте ... два ЮАРТа, например, или HID+mass storage, или ЮАРТ+свой драйвер, или...
|
Увы по скорости не проходят ни хид, ни виртуальный СОМ.... Это было первоначально,а когда посчитал время - понял что "невпишусь"
Сообщение от vdlab
|
На каком МК хотите делать?
|
AT90USD1287
|
|
|
|
04.08.2009, 00:15
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
Почему же не проходят? HID, насколько помню, позволяет передать до 64 кбит/сек., для первого, низкоскоростного потока хватит. В крайнем случае можно перейти на вирт. СОМ порт, там скорости побольше.
Все остальное время можно заниматься bulk передачей второго потока, вполне ИМХО для этого подходит mass storage класс - все равно эти данные где то хранятся.
Не знаю как у Атмела, не особо интересовался, у микрочипа на сайте есть множество аппнот по таким комбо-девайсам, вполне можно подсмотреть идею, как это реализовать.
__________________
Если ты читаешь это - значит тебе нечем заняться...
|
|
|
|
04.08.2009, 00:17
|
|
Прописка
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
|
Сообщение от N_i_k_o_p_o_l
|
Не понимаю, зачем скорость передачи 12 Мбит/с?...
|
Скорость такая нужна для того чтобы "быстро" (важно)передать данные потока А (10 МБайт), а после завершения слива можно и на меньших скоростях.
Сообщение от N_i_k_o_p_o_l
|
думаю за какой промежуток времени Вы сможете передать полностью второй поток, посчитаете сами.
|
В описании про USB сказано, что хост обращается к периферии с интервалом 1 мс. Если длина пакета 256 байт,то время t=(10MBt/256)*1*exp-3=40,96 секунд. Другие (медленные) скоростя просто неприемлемы. Повторюсь скорость нужна для заливки потока А!!!
Сообщение от N_i_k_o_p_o_l
|
Удачи.
|
Премного благодарен, и Вам всех благ
|
|
|
|
04.08.2009, 00:23
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
Вы забываете про служебный трафик, а так же про время, необходимое МК на подготовку данных.
__________________
Если ты читаешь это - значит тебе нечем заняться...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:27.
|
|