Jump to content

    

Общий USB-драйвер для win

1 hour ago, jcxz said:

a) Объясните как SPI подключить к ПК?

b) Я выше писал - почти все пины заняты, а SPI-ные - так точно все.

a) Сделать XOR клоков с данными (можно программно проксорить, но на удвоенной частоте, и вывести только данные, без клоков, на одну ногу) и в ethernet разъём, у 10BASE-T нет многоуровневой кодировки на физическом уровне, как у 100/1000, можно сказать "TTL", хоть и немного дифференциальный, второй провод пожалуй можно приподнять на полловину напряжения резисторами, с другой стороны провода в сетевой карте всё равно трансформатор есть. Ну или часть оставшихся XORов от "энкодера" манчестера на 74HC86 использовать как инвертор.

б) Их же там 6 штук SPI, да ещё и вроде каждый на больше чем на один пин умеет мапиться. Но если прям все заняты тогда конечно ничего не поделать.

45 minutes ago, Rst7 said:

Не хватит двух D-триггеров для декодирования манчестера. Да еще и не в каждом камне SPI умеет в слейв на 10М.

Хватит, с детектором фронтов на XOR, и с задержкой на 1.5 такта на RC цепочке.

Подключал так к msp430g2553+74HC74+74HC86 к езернету в обе стороны, хоть и half duplex, у него клоки spi слэйва к процессору вообще никак не привязаны. приходилось правда таймером измерять частоту ethernet и программно подкручивать частоту DCO процессора, чтобы за время приёма пакета (~200-300 байт максимум, там памяти всего 512байт :)) разница частот больше чем на один байт не разбежалась, иначе процессор либо терял байт, либо читал дважды, так как он на приёме ничего кроме

while(1) *data++=SPIRXBUFF; 

делать не успевал и даже из этого цикла приходилось выходить подменяя адрес возврата на стэке в прерывании от таймера.

Очень всё криво конечно, но ведь just for fun, а не для нормального использования, и как-то работало даже.

Ну и ТСу возможно только на выход хватит, если для отладки.

Share this post


Link to post
Share on other sites
Just now, _pv said:

Хватит, с детектором фронтов на XOR, и с задержкой на 1.5 такта на RC цепочке.

Ну так уже не 2 D-триггера ;)

Повторюсь, основная проблема заключается в том, что большинство камней сильно ограничены по максимальной частоте SCK в режиме Slave.

5 minutes ago, _pv said:

так как он на приёме ничего кроме

while(1) *data++=SPIRXBUFF; 

делать не успевал

Там же вроде 16МГц, что, все так печально? Вроде ж 6 тактов надо на саму пересылку, ну плюс еще тест и цикл. А всего есть 12.8 такта, вроде должно хватить.

Share this post


Link to post
Share on other sites
26 минут назад, _pv сказал:

a) Сделать XOR клоков с данными (можно программно проксорить, но на удвоенной частоте, и вывести только данные, без клоков, на одну ногу)

А какой смысл? Какой смысл надевать трусы через голову, если можно надеть нормально потратить на порядок больше усилий и получить на порядок хуже результат, если можно сделать проще и быстрее???

Я не понимаю - за что вы агитируете? в чём смысл ваших предложений???  :wacko2:

26 минут назад, _pv сказал:

б) Их же там 6 штук SPI, да ещё и вроде каждый на больше чем на один пин умеет мапиться.

Там не 6 SPI, а 6 USIC-ов. Разница большая. Кроме того в устройстве есть куча других функций, занимающих ноги.

Share this post


Link to post
Share on other sites

 

2 minutes ago, jcxz said:

Я не понимаю - за что вы агитируете? в чём смысл ваших предложений???  :wacko2:

я ни за что не агитирую, просто предложил ещё одну возможность вытащить 10Мбит в ПК не через УСБ.

да, получается немного через жопу, но зато без граблей с драйверами USB со стороны ПК.

Share this post


Link to post
Share on other sites
1 hour ago, Rst7 said:

Там же вроде 16МГц, что, все так печально? Вроде ж 6 тактов надо на саму пересылку, ну плюс еще тест и цикл. А всего есть 12.8 такта, вроде должно хватить.

На передачу do SPITXBUFF=*data++; while(--num); укладывался в 8 тактов, если не ошибаюсь, а на приём в обратную сторону там были какие-то особенности косвенной адресации у MSP430, и этот бесконечный цикл даже без счётчика получался уже 10 тактов и соответственно частота 12.5МГц, за два дополнительных такта которые можно было бы впихнуть, всё равно ничего не успеть проверить, а на таймер в режиме захвата была подана линия данных через диод и RC цепочку, так что он сразу и частоту передатчика с другой стороны измерял (через длительность пакета) для подстройки своей и заодно сообщал что пакет закончился.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now