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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Вызов мастера в I2C чип LPC2131
singlskv
сообщение Jan 10 2009, 19:47
Сообщение #16


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jan 10 2009, 22:27) *
Повторяю медленно и печально - это честные OD на выход.
вобще-то я задавал вопрос не чтоб указать на Вашу неточность а чтоб выяснить как оно на самом деле...
Но Вы совсем запутали...,
что из этого верно ?
- "это честные OD на выход."
- "На свежих LPC, правда, разумно таким сделали только один из 2-3 I2C портов."

то есть для LPC2103 таки I2C0 честный а I2C1 не совсем ?
Цитата
В отличие от Atmel-овских чипов.
А у AVR разьве не честный OD ?
Go to the top of the page
 
+Quote Post
Папа Карло
сообщение Jan 10 2009, 19:55
Сообщение #17


Частый гость
**

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Ох лучше бы вы мне подсказали, почему ведущий запрашивает больше данных чем есть в ведомом.
Хотя по прерываниям и статусу ведомый уже перестаёт реагировать на запросы.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 10 2009, 20:09
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Jan 10 2009, 22:47) *
что из этого верно ?
- "это честные OD на выход."
- "На свежих LPC, правда, разумно таким сделали только один из 2-3 I2C портов."

Оба утверждения верны.
Цитата
то есть для LPC2103 таки I2C0 честный а I2C1 не совсем ?

Первый эмулирует OD только если запрограммирован, как I2C. Нулевой по жизни OD, что позволяет исключить подсаживание им I2C шины и при отсутствии питания чипа. У обсужаемого 21xx оба I2C c железным OD, чем и было вызвано мое замечание в ответ на предупреждение об "опасности сжечь"....
Цитата
А у AVR разьве не честный OD ?

По крайней мере у тех, с которыми имел дело - нет. У них и I2C тоже только похожий.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 10 2009, 20:24
Сообщение #19


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Папа Карло @ Jan 10 2009, 22:55) *
Ох лучше бы вы мне подсказали, почему ведущий запрашивает больше данных чем есть в ведомом.
Хотя по прерываниям и статусу ведомый уже перестаёт реагировать на запросы.
Не выясняя подробности Вашей реализации, могу предположить что NACK(Not ACK) Вы выставляете на последнем
байте, а нужно на предпоследнем...


Цитата(zltigo @ Jan 10 2009, 23:09) *
Первый эмулирует OD только если запрограммирован, как I2C. Нулевой по жизни OD, что позволяет исключить подсаживание им I2C шины и при отсутствии питания чипа.
как Вы все-таки уклончиво отвечаете.. smile.gif
Но суть понятна, для LPC2103 только I2C0 честный OD.
Цитата
По крайней мере у тех, с которыми имел дело - нет. У них и I2C тоже только похожий.
Только похожий ? "Эмуляция" OD ?
Как Вы себе представляете MultiMaster без честной OD ??? А он там реализован вроде как полностью...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 10 2009, 21:05
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Jan 10 2009, 23:24) *
Только похожий ? "Эмуляция" OD ?
Как Вы себе представляете MultiMaster без честной OD ??? А он там реализован вроде как полностью...

Я уже перестал понимать, что Вы не понимаете sad.gif. Вы совсем не понимаете, что "обычный" трехстабильный выход из-за наличия паразитного p-n перехода с высоколегированной области стока выходного p-канального транзистора на подложку чипа засадит шину. Поскольку ограничивает уровень на шине уровнем напряжения питания контроллера + ширина запрещенной зоны кремния.... При отсутствии питания это гарантированная неработоспособность. Честный OD, естественно, "верхнего" транзистора не имеет, как класс и этой проблемы нет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 10 2009, 21:24
Сообщение #21


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jan 11 2009, 00:05) *
я надеюсь что к моим умозаключениям про LPC2103 и их i2c вопросов нет ?
Цитата
Я уже перестал понимать, что Вы не понимаете sad.gif. Вы совсем не понимаете, что "обычный" трехстабильный выход из-за наличия паразитного p-n перехода с высоколегированной области стока выходного p-канального транзистора на подложку чипа засадит шину. Поскольку ограничивает уровень на шине уровнем напряжения питания контроллера + ширина запрещенной зоны кремния.... При отсутствии питания это гарантированная неработоспособность. Честный OD, естественно, "верхнего" транзистора не имеет, как класс и этой проблемы нет.
Очень красиво Вы все описали, только какое это имеет отношение к AVR ?
Я обычно вдумчиво читаю в таких сомнительных местах... smile.gif :
• SCL/ADC5 – Port C, Bit 5
SCL, Two-wire Serial Interface Clock: When the TWEN bit in TWCR is set (one) to enable the
Two-wire Serial Interface, pin PC5 is disconnected from the port and becomes the Serial Clock
I/O pin for the Two-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress
spikes shorter than 50 ns on the input signal, and the pin is driven by an open drain driver
with slew-rate limitation.
PC5 can also be used as ADC input Channel 5. Note that ADC input channel 5 uses digital
power.
• SDA/ADC4 – Port C, Bit 4
SDA, Two-wire Serial Interface Data: When the TWEN bit in TWCR is set (one) to enable the
Two-wire Serial Interface, pin PC4 is disconnected from the port and becomes the Serial Data
I/O pin for the Two-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress
spikes shorter than 50 ns on the input signal, and the pin is driven by an open drain driver
with slew-rate limitation.

и даташиту я увы верю больше чем Вам...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 10 2009, 21:34
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Jan 11 2009, 00:24) *
и даташиту я увы верю больше чем Вам...

Надо не "верить", а банально хоть чего-нибудь понимать. Вы не можете понять разницу между tri-state выходом эмулирующим open-drain у Atmel и реальным open-drain в применении к I2C шине sad.gif, но это как-бы не мои проблемы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 10 2009, 21:40
Сообщение #23


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jan 11 2009, 00:34) *
Надо не "верить", а банально хоть чего-нибудь понимать. Вы не можете понять разницу между tri-state выходом эмулирующим open-drain у Atmel и реальным open-drain в применении к I2C шине sad.gif, но это как-бы не мои проблемы.
Я Вас уже просил объяснить работу MultiMaster на "эмулируемых" open-drain,
ну вот и объясните как оно будет работать...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 10 2009, 22:01
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Jan 11 2009, 00:40) *
ну вот и объясните как оно будет работать...

Еще раз, но уж точно последний - для уровней на шине I2C не превышающих текущее напряжение питание контроллера точно так-же, как и настоящий OD требуемый для I2C.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 10 2009, 22:26
Сообщение #25


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jan 11 2009, 01:01) *
Еще раз, но уж точно последний - для уровней на шине I2C не превышающих текущее напряжение питание контроллера точно так-же, как и настоящий OD требуемый для I2C.
А в чем собственно разница ? только в том что LPC при питании 3,3V имеет 5V толерантные входы ?
вот для LPC:
VI input voltage 5 V tolerant I/Opins
[5][6] -0.5 +6.0 V
other I/O pins [5] -0.5 VDD + 0.5[7] V

вот для AVR:
VIH Input High Voltage except XTAL1 and RESET pins
VCC = 2.7V - 5.5V 0.6 VCC (2) VCC + 0.5 V

ну и в чем принципиальная разница кроме толерантности LPC к 5V ?

Давайте четко определим предмет спора.
в посте №20 Вы заявили что у AVR в режиме I2C работает "верхний" драйвер,
я же утверждаю что его там нет...
как будем проверять ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 10 2009, 22:54
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Jan 11 2009, 01:26) *
в посте №20 Вы заявили что у AVR в режиме I2C работает "верхний" драйвер,

Не говорите глупости, тем более не приписывайте их мне. Я говорил, то что говорил. Цитирую:
Цитата
"обычный" трехстабильный выход из-за наличия паразитного p-n перехода с высоколегированной области стока выходного p-канального транзистора на подложку чипа засадит шину. Поскольку ограничивает уровень на шине уровнем напряжения питания контроллера + ширина запрещенной зоны кремния.... При отсутствии питания это гарантированная неработоспособность. Честный OD, естественно, "верхнего" транзистора не имеет, как класс и этой проблемы нет.

Где тут про "работает"? Просто присутствует и ввиду его присутствия имеется паразитный диод на подложку создающий проблемы.
Цитата
Вы не можете понять разницу между tri-state выходом эмулирующим open-drain у Atmel и реальным open-drain в применении к I2C шине , но это как-бы не мои проблемы.

Все. Утомился от многократного повторения элементарного.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 10 2009, 23:09
Сообщение #27


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jan 11 2009, 01:54) *
Просто присутствует и ввиду его присутствия имеется паразитный диод на подложку создающий проблемы.
Диод есть,никто и не спорит, но наличие диода это еще не 3-state...
Проблемы на шине без питания вызывать может.
Но OD там честный... с учетом диода конечно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 10 2009, 23:53
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Jan 11 2009, 02:09) *
Диод есть,никто и не спорит, но наличие диода это еще не 3-state...
Проблемы на шине без питания вызывать может.
Но OD там честный... с учетом диода конечно.

Так, до Вас начало доходить. Продолжим - нет он не честный. Честный он (у производителей придерживающизся спецификации I2C ) такой:
Цитата
I2C0 input/output. Open-drain output (for I2C-bus compliance).
Open-drain 5 V tolerant digital I/O pad, compatible with I2C-bus 400 kHz specification. This pad requires an external pull-up to provide
output functionality. When power is switched off, this pin connected to the I2C-bus is floating and does not disturb the I2C lines.

А про другие I2C совместимые (тоже имеющиеся на борту того-же контроллера):
Цитата
I2C1 input/output (this is not an open-drain pin). Open-drain configuration applies only to I2C function on that pin.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 11 2009, 03:37
Сообщение #29


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Папа Карло @ Jan 10 2009, 12:06) *
Объясните пожалуйста, как мне сделать, чтоб ведущий прекратил приём при окончании символов в буфере ведомого ?

Сделать соответвующий протокол... Который будет следовать хотя бы трем основным пунктам:

1. Слейв первым байтом шлет длину сообщения, если нечего слать - соответвенно первым байтом шлет 0.
2. Мастер посылает NACK перед приемом последнего байта.
3. Когда слать больше нечего (сообщение полностью отправлено), Слейв всегда шлет GAP символ 0xA5 до тех пор пока мастер выдает ACK.
(выделенное - должно быть реализовано обязательно!)

т.о. даже если слейву вообще нечего слать, минимальная I2C транзация будет состоять минимум из двух символов - 0x0 (длина) и GAP (т.к. мастер перед приемом первого символа всегда выдает ACK).

По Вашему коду, конкретно по состояниям 0xA8 и 0xB8:
Код
case 0xA8:
case 0xB8://Data transmitted, ACK received
        if(i2c_size--)                  // if got no more data to send not last data byte transmitted
            {
            I2C0DAT = *i2c_data++;      // send next data byte
            I2C0CONSET = 0x04;//
            }
        else
            {
            I2C0CONCLR = 0x04;//
            i2c_stat   = 0;             //
            i2c_size = 0;
            }
break;

поменяйте на:

Код
case 0xA8: // SLA+R (slave transmitter start)

    if(!i2c_size)                 // NO DATA TO SEND?
        I2C0DAT = 0;          // Notify Master - we have no data
    else
        I2C0DAT = i2c_size;   // send message len
    I2C0CONSET = 0x04;            // enable ACK for data byte
    break;

case 0xB8: //Data transmitted, ACK received

    if(!i2c_size)              // NO DATA TO SEND?
        I2C0DAT = 0xA5;          // MUST send GAP data byte
    else
    {
        i2c_size--;
        I2C0DAT = *i2c_data++; // send next data byte
    }
    I2C0CONSET = 0x04;             // enable ACK for data byte
    break;




Цитата(singlskv @ Jan 10 2009, 21:47) *
А у AVR разьве не честный OD ?

Не честный - во всех AVR. В обесточенном состоянии садят шину через защитные диоды (МК питается от шины sad.gif ).
Go to the top of the page
 
+Quote Post
Папа Карло
сообщение Jan 11 2009, 11:32
Сообщение #30


Частый гость
**

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Цитата(defunct @ Jan 11 2009, 06:37) *
т.о. даже если слейву вообще нечего слать, минимальная I2C транзация будет состоять минимум из двух символов - 0x0 (длина) и GAP (т.к. мастер перед приемом первого символа всегда выдает ACK).


По вашему выходит, что минимальная транзакция будет довольно большая.
Но если ведомый не выставит на шину АА, что готов, то минимальная будет гораздо меньше, всего из 2 посылок, начало передачи статус 08 и конец передачи статус 0х48.
Может там ещё подводные камни есть ?

А что такое GAP и как на него должен Мастер реагировать ?

Посмотрел статусы в ДШ и складывается впечатление, что при начале приёма Мастером Ведомый уже не может прервать приём у Мастера.
АА Мастер смотрит только после пересылки адреса ведомого.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 5th July 2025 - 16:49
Рейтинг@Mail.ru


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