|
RTL8316(RTL8326) <->I2C<->uCU, не могу установить связь |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Jan 7 2009, 08:19
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
У меня, к сожалению, конкретно до 16ти...24хпортовых RTL руки не дошли, так что могу посоветовать предположительное направление плясок... Вы ж в курсе, что после сброса RTL сначала вычитывает (ну или пытается вычитывать) данные из EEPROM, а только потом переходит в режим Serial-CPU Access? Посмотрите осциллографом как быстро это происходит. По даташиту - ~10мс чтение епрома, ~24мс - тест ОЗУ, потом инициализация ОЗУ (неизвестно сколько), потом инициализация внутренних регистров и только потом готовность к обмену по I2C. Кстати, еще может быть неприятный вариант, что надо будет ставить или эмулировать EEPROM, потому как без нее может не инициализироваться дальнейший обмен по I2C - врать не буду, но где-то такой глюк был  ЗЫ Кстати, а не очередной ли полууправляемый свич для пионернетов Вы задумали? Вообще-то, я бы обратил свое внимание на IP1726 (ну или, может, что-то есть более свежее) - там Spanning tree пакеты не летят сквозь свич, а могут быть оттранслированны на CPU-порт для обработки. Т.е. на IP1726 можно реализовать Spanning Tree, а на RTL - нет. А это очень полезно.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 7 2009, 08:42
|

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

|
Цитата(Rst7 @ Jan 7 2009, 15:19)  Вы ж в курсе, что после сброса RTL сначала вычитывает (ну или пытается вычитывать) данные из EEPROM, а только потом переходит в режим Serial-CPU Access? Посмотрите осциллографом как быстро это происходит. По даташиту - ~10мс чтение епрома, ~24мс - тест ОЗУ, потом инициализация ОЗУ (неизвестно сколько), потом инициализация внутренних регистров и только потом готовность к обмену по I2C. Да, в курсе. Даташит весь прокурил. Вчера у меня был первый наскок на этот чип. Цитата(Rst7 @ Jan 7 2009, 15:19)  Кстати, еще может быть неприятный вариант, что надо будет ставить или эмулировать EEPROM, потому как без нее может не инициализироваться дальнейший обмен по I2C - врать не буду, но где-то такой глюк был  Я уже тоже к этому склоняюсь. Сегодня попробую залить ЕЕПРОМ и попробовать еще раз потыкаться. Цитата(Rst7 @ Jan 7 2009, 15:19)  ЗЫ Кстати, а не очередной ли полууправляемый свич для пионернетов Вы задумали? Вообще-то, я бы обратил свое внимание на IP1726 (ну или, может, что-то есть более свежее) - там Spanning tree пакеты не летят сквозь свич, а могут быть оттранслированны на CPU-порт для обработки. Т.е. на IP1726 можно реализовать Spanning Tree, а на RTL - нет. А это очень полезно. Задумал, но только не я  Это заказ - сделать мониторинг такого чипа по SNMP.
--------------------
|
|
|
|
|
Jan 7 2009, 09:04
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Это заказ - сделать мониторинг такого чипа по SNMP. Вот прям так и сформулировали? А по RRCP стыдно забрать состояния? Цитата Сегодня попробую залить ЕЕПРОМ и попробовать еще раз потыкаться. Может пригодится генератор прошивок. Накопан где-то на просторах толи инета, толи в закромах nag.ru
RTL8326_EEPROM_cfg__Ver_1.7.zip ( 48.51 килобайт )
Кол-во скачиваний: 282
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 7 2009, 10:28
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата RRCP работает только в пределах одного сегмента сети и секюрити в нем нет никакого. О, таки пионернет  Только там цепляют гирлянды неуправляемых свичей и при этом хотят задешево контролировать состояние железяк. Я вот к чему про RRCP разговор завел. Врядли Вы будете целиком разрабатывать и изготавливать такой свич. Скорее всего - это будет китайский донор с прикрученной своей железякой. А тут оптимально минимум вмешательства в схему свича. Тогда я бы поступил так. В свич впаивается EEPROM - обычно, на плате место есть. Т.е. минимум гемора. В прошивке разрешается RRCP только на один порт, в который втыкается Ваш девайс, являющийся мостом RRCP-SNMP. Кстати, не забываем реализовывать полноценный SNMPv3, раз уж так секурности хотят  Гм... Написал - аж самому понравилось. Надо поговорить с товарищем-сетевиком, не нужна ли ему такая приблуда, задешево
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 7 2009, 11:30
|

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

|
Цитата(Rst7 @ Jan 7 2009, 17:28)  О, таки пионернет  Только там цепляют гирлянды неуправляемых свичей и при этом хотят задешево контролировать состояние железяк. Я вот к чему про RRCP разговор завел. Врядли Вы будете целиком разрабатывать и изготавливать такой свич. Скорее всего - это будет китайский донор с прикрученной своей железякой. А тут оптимально минимум вмешательства в схему свича. Тогда я бы поступил так. В свич впаивается EEPROM - обычно, на плате место есть. Т.е. минимум гемора. В прошивке разрешается RRCP только на один порт, в который втыкается Ваш девайс, являющийся мостом RRCP-SNMP. Кстати, не забываем реализовывать полноценный SNMPv3, раз уж так секурности хотят Гм... Написал - аж самому понравилось. Надо поговорить с товарищем-сетевиком, не нужна ли ему такая приблуда, задешево  Я ничего изготавливать не собираюсь  Мне предложили написать ПО для такой штуки. Заказчики тоже ничего изготавливать не собираются, по крайней мере сейчас. Пока нужно лишь сделать управление к существующему оборудованию. SNMP у меня есть. Мой собственный самописный. Испытан на ARM SAM7X и AVR ATmega128 (без внешней памяти). Я думаю им виднее, как реализовывать девайс, раз они с этим общаются, бо вроде не дураки. А мое дело маленькое
--------------------
|
|
|
|
|
Jan 7 2009, 17:33
|

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

|
Цитата(Rst7 @ Jan 8 2009, 00:02)  Ну надо же поддержать беседу С другой стороны, не задай Вы вопрос про I2C, мне бы, может быть, и не пришла бы в голову идея моста RRCP<->Чтото_вменяемое. Из чужого вопроса надо же и отвечающему извлекать какую-нибудь пользу. Так что лично я попробую немного денег заработать на продаже таких мостов пионернетам. Благо, подходящая дешевая железяка как раз мною мелкосерийно производится. Добавить в нее такой функционал - как 2 пальца. Ага, прикольно  Кстати, задал заказчикам вопрос, сначала обокакали RRCP но потом почесали затылки - думают... связи с чипом по I2C по прежнему не устанавливается. Хоть и подсунул ему прошитую EEPROM, которую он прочитал.
--------------------
|
|
|
|
|
Jan 7 2009, 17:53
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата связи с чипом по I2C по прежнему не устанавливается. А на осциллограммах пакетов от камня в RTL ничего криминального не видно? Все подтяжки на месте? Цитата но потом почесали затылки - думают... А то. Идея знатная. Особенно, когда она объединяется сразу с пинговалкой и ребутером этого свича. Вполне полезный функционал за $20. Щас мои заказчики и трейдеры от праздников отойдут (заказчики - для уточнения, почем брать будут, трейдеры - для покупки какого-нибудь пациента на RTL8316/26 для тестов) и приступлю. Несколько рекомендаций на будущее, когда связь поднимете и приступите собственно к основному этапу: а) Не забудьте в свой стек вставить стрип vlan-тегов. А то можно случайно управление потерять, если тегированные пакеты полетят на порт Вашей железяки. Такая ситуация легко может случиться при некорректной конфигурации свича. б) Лично я бы блокировал возможность отключения порта, в котором будет сидеть Ваша железяка, через управление. Правда, для этого прийдется парсить данные для посылки в RTL прямо на железке, но это требует только аккуратности в написании кода, никаких суперхитростей тут нет.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 8 2009, 13:56
|

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

|
Так и не могу достучаться до железяки. В данный момент есть две тестовые платы с МК AVR ATmega128 на борту, через которые хочу произвести связь со свитчем. На одной плате имеется датчик температуры DS1621, который опрашивается периодически с интервалом в 2 секунды. Кроме того, есть связь с микросхемами EEPROM 24LC04 установленными на платах свитчей. Сами свитчи опрашиваются в цикле с интервалом в 1 секунду. Прочитал в даташите на RTL8316B и RTL8326, что на линии SDA уже есть встроенный в чип резистор подтяжки. Пробовал и отпаивать все резисторы, и ставить на одну линию, и на вторую и на обе. Менял номиналы, частоту шины... Связаться ни как не получается  Идей новых пока ни каких на ум не приходит. Привожу ниже код чтения свитча: Код ... #define TWI_READ 0x01 /* Data transfer direction READ */ ... #define RTL83X6_I2C_ADDR 0xA8 ... BOOL RTL83x6_Read(UINT16 addr, P_UINT16 pdata) { UINT8 lo, hi; INT i = 100; while(--i) { while(1) { if(FALSE == TWI_Start() || FALSE == TWI_Addr(RTL83X6_I2C_ADDR | TWI_READ) || FALSE == TWI_Put(LOBYTE(addr)) || FALSE == TWI_Put(HIBYTE(addr)) || FALSE == TWI_Get(&lo, TRUE) || FALSE == TWI_Get(&hi, TRUE)) break; TWI_Stop(); TC0_DelayMS(2); *pdata = MAKEUINT16(hi, lo); return TRUE; } TWI_Reset(); TC0_DelayMS(5); } return FALSE; }
--------------------
|
|
|
|
|
May 11 2009, 22:20
|
Группа: Новичок
Сообщений: 1
Регистрация: 11-05-09
Пользователь №: 48 923

|
Реально кому-нибудь удалось прочитать регистры rtl8316b по i2c ?
|
|
|
|
|
May 12 2009, 07:48
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Да, давно уже все прочитано А у меня - RRCP  - http://cbsie.dyndns.info/WWW/rrcp.htmlКстати, а в чем грабли, в двух словах? Вроде глянул на драйвер, кроме пляски под названием SW_Reset никакого криминала не видать, I2C в чистом виде... Или я что-то пропустил?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Feb 9 2011, 07:37
|
Местный
  
Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410

|
Поделюсь идеями по поводу I2C. 1. После STOP надо обязательно дернуть клок SCL 1 раз вниз-вверх при SDA=1. Иначе RTL отвечает только на первый запрос, все последущие он игнорирует. 2. При записи регистра последний NACK от RTL лучше не контролировать, т.к. при этом процент успешных записей гораздо выше. 3. Возможно это ошибки в разводке платы, но регистры записываются и читаются не гарантированно. После записи лучше прочитать содержимое, давать несколько попыток на успешную запись. Так и не понял от чего это зависит, менял и задержки и тактовую частоту - примерно одна и та же картина, около 20% ошибок доступа. В исходниках protoss кажется есть ошибка - в функции SW_Put, SDA ставится в 0 и потом читается ACK с шины, естественно он всегда будет 0: Код /* Get ACK(NACK) */ ClrSDA(); Delay(); SetSCL(); Delay(); i = RTL83X6_PIN & RTL83X6_SDA; ClrSCL(); Delay(); return i;
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|