реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> RTL8316(RTL8326) <->I2C<->uCU, не могу установить связь
Rst7
сообщение Jan 7 2009, 18:16
Сообщение #16


Йа моск ;)
******

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



Цитата
Все на месте. Чип просто не откликается.


Т.е. даже на байт адреса (самый первый после START) нет ACK?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 7 2009, 18:26
Сообщение #17


Гуру
******

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



Цитата(Rst7 @ Jan 8 2009, 01:16) *
Т.е. даже на байт адреса (самый первый после START) нет ACK?
Нет


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 8 2009, 13:56
Сообщение #18


Гуру
******

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



Так и не могу достучаться до железяки. В данный момент есть две тестовые платы с МК AVR ATmega128 на борту, через которые хочу произвести связь со свитчем. На одной плате имеется датчик температуры DS1621, который опрашивается периодически с интервалом в 2 секунды. Кроме того, есть связь с микросхемами EEPROM 24LC04 установленными на платах свитчей. Сами свитчи опрашиваются в цикле с интервалом в 1 секунду. Прочитал в даташите на RTL8316B и RTL8326, что на линии SDA уже есть встроенный в чип резистор подтяжки. Пробовал и отпаивать все резисторы, и ставить на одну линию, и на вторую и на обе. Менял номиналы, частоту шины...
Связаться ни как не получаетсяsad.gif Идей новых пока ни каких на ум не приходит.
Привожу ниже код чтения свитча:
Код
...
#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;
}


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 18 2009, 11:46
Сообщение #19


Гуру
******

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



Цитата(prottoss @ Jan 8 2009, 20:56) *
Так и не могу достучаться до железяки...
Так и достучалсяsmile.gif Правда, I2C пришлось делать софтовый, потому как в данных чипах он не совсем такой как надоsmile.gif Во избежание пропадания охоты у Rst7 использовать RRCP оставлю секрет не раскрытым.


--------------------
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 18 2009, 12:28
Сообщение #20


Йа моск ;)
******

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



Цитата
Во избежание пропадания охоты у Rst7 использовать RRCP оставлю секрет не раскрытым


Уже не отобъете. Я уже сделал мост RRCP<->HTTP smile.gif Потому как мне проще доработать любой серийный свич путем запайки одной епромки на предусмотренное место и больше никаких проводов. Так что можете расказывать.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 18 2009, 13:01
Сообщение #21


Гуру
******

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



Цитата(Rst7 @ Jan 18 2009, 19:28) *
Уже не отобъете. Я уже сделал мост RRCP<->HTTP smile.gif Потому как мне проще доработать любой серийный свич путем запайки одной епромки на предусмотренное место и больше никаких проводов. Так что можете расказывать.
Да, здесь проводов больше. 2 на i2C, 2 питание, 4 собственно сеть. За то на много больше возможностей и нет глюков. Все регистры как на ладони...
Все равно не расскажуsmile.gif После секса с RTL8316B - это - святоеsmile.gif


--------------------
Go to the top of the page
 
+Quote Post
xend
сообщение May 11 2009, 22:20
Сообщение #22





Группа: Новичок
Сообщений: 1
Регистрация: 11-05-09
Пользователь №: 48 923



Реально кому-нибудь удалось прочитать регистры rtl8316b по i2c ?
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 12 2009, 07:34
Сообщение #23


Гуру
******

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



Цитата(xend @ May 12 2009, 06:20) *
Реально кому-нибудь удалось прочитать регистры rtl8316b по i2c ?
Да, давно уже все прочитаноsmile.gif
Прикрепленные файлы
Прикрепленный файл  rtl83x6.I2Cdriver.rar ( 1.73 килобайт ) Кол-во скачиваний: 44
 


--------------------
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 12 2009, 07:48
Сообщение #24


Йа моск ;)
******

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



Цитата
Да, давно уже все прочитано


А у меня - RRCP smile.gif - http://cbsie.dyndns.info/WWW/rrcp.html

Кстати, а в чем грабли, в двух словах? Вроде глянул на драйвер, кроме пляски под названием SW_Reset никакого криминала не видать, I2C в чистом виде... Или я что-то пропустил?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Itch
сообщение Feb 9 2011, 07:37
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 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;

Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 07:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016