|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 7:21 pm
|
Страница 1 от 1
|
[ 9 мнения ] |
|
Въпрос за практически опит с I2C
| Автор |
Съобщение |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
 Въпрос за практически опит с I2C
Налага ми се да свържа датчик, с I2C интерфейс, но с опция за отдалечена връзка - мин 2м, макс 4м.
Не ми се ще да слагам втори процесор, само заради дължината на жицата.
Някой има ли практически опит с удължаване на I2C жиците.
Очевидно е, че трябва да се намали максималната честота, въпроса е с колко, и което е по-съществено, в кой момент настъпват фатални отражения по клока.
|
| Сря Авг 01, 2007 12:55 pm |
|
 |
|
stanleyhacker
Ранг: Новодошъл
Регистриран на: Чет Дек 02, 2004 7:22 pm Мнения: 140
|
дръж клока и данните по-разделени и честотата на 100кхз, няма да има никакви проблеми. Да и пулъпа може да го понамалиш на 3-4 кома
|
| Сря Авг 01, 2007 1:17 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Проблемът е общ и важи за всяка шина в която се ползва отворен колектор, т.е. не само I2C.
Всичко зависи от паразитните капацитети. Примерно bga модул на телит на 5см писта иска <5к пулъп за да поддържа 100кбит, ама тва е щото тъпанарите са сложели кондензатори за ESD. Иначе може и на няколко метра да опънеш мегабити.
Отражения на клока чак не съм виждал, проблемът обикновено е положителния фронт при който паразитните кондензатори трябва да се нахранят през пулъпа. Примерно 10pF през 10К имаш 100нС константа което е супер, ама ако искаш малък ток и сложиш 47К и го натовариш с 100пФ - времеконстантата ти скача на 4.7uS, което като честота е почти 100кХц, ама реално заради семплирането и 9600 трудно ще тръгне...
Ако не държиш да гониш точно I2C стандарта и го емулираш софтуерно през МЦУ може да си го пачнеш леко. Примерно ако няма паузиране от страна на датчика, клока спокойно може да го пуснеш пуш-пул и нямаш грижи с капацитетите. А за данновия, когато ти предаваш може пак да е пуш-пул на висока скорост, когато приемаш може да ползваш асиметричен клок.
Или пък да изкарваш една бърза 1-ца преди четене (стига изхода ти да е ограничен по ток) - тогава ако слейва държи нула ще имаш един пик консумация но нивото няма мръдне. Ако слейва иска да предаде 1 и преди това е било 0, с пикчето помагаш на пулъпа да смени фронта по-бързо...
|
| Сря Авг 01, 2007 2:55 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
Правил съм такова нещо с датчик и процесор и максимума, който постигнах беше около 15 метра с 1к пъл-ъп резистори. Джаджата работи стабилно около 2 г., после просто вече нямах нужда от нея. Така, че - става  .
|
| Сря Авг 01, 2007 3:13 pm |
|
 |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
Благодаря
I2C-то ми трябва за 3-4 метра, и от към процесора се емулира, така че ще мога да приложа при нужда и софтуерни номера.
Пък и датчика си има вградено CRC.
|
| Сря Авг 01, 2007 9:10 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Sirius-B, за SHT11 ли говориш, щото ако е за него, ти препоръчвам обезателно да му ползваш CRC-то. Иначе съм закачал на 20 метра TCN75 (microchip) без никакви проблеми на 100 kHz, а SHT-то на 3-4 метра и почна да дава грешки и то на по ниски честоти. Горе долу на 30 обмена един се дъни.
|
| Чет Авг 02, 2007 10:06 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Нещата стават доста по-розови, ако можеш да добавиш един тригер на Шмид на клока, непосредствено до отдалечения чип. За съжаление този номер не минава с данните. Освен това, колкото по-нискоомни са pull-up - инте, толкова по-добре. Провери какъв изходен ток могат да дават чиповете и оттам си подбери резисторите. Препоръчвам ти да ги разделиш на 2 места : 2 резистора до процесора и два до далечния чип. Не забравяй кондензаторите паралелно на захранването.
Не се обръща много внимание на кабела, а той е важен. UTP не е добър вариант, защото има ниско вълново съпротивление ( 110 ома ) и голям капацитет, обикновено е около 15pF/m. Ако имаш избор, премери капацитета на кабела и вземи най-ниския.
|
| Чет Авг 02, 2007 12:03 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
ето нещо съвсем прясно (от вчера):
Application Note - AT91-AN01: Using the Two-wire interface (TWI) in
Master Mode on AT91SAM Microcontrollers - Rev. A - 2007-07-31 -
http://www.atmel.com/dyn/general/tech_d ... c_id=11269
Има точните формули за смятане на съпротивления и разни други полезни нещица...
|
| Чет Авг 02, 2007 12:39 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Бате, ползвах кабел дето го ползват СОТаджиите (6 жилен с ширмовка около 5 м.). Датчика SHT75 е също като SHT11 само, че запоен на платчица, с крачета и с кондензатор между захранванията. На съшия кабел има сложен и TCN75 за калибриращо измерване на температурата (при включено отопление на SHT-то). SHT-то ръси грешки постоянно - минимум по 1 на минута. TCN-a - никакви грешки на 100 kHz. Двете са на отделни шини поради софтуерни съображения. И освен това SHT е на софт а другия на хардуерния I2C модул. Софт. е с 3.3К пулъп а хард. с 5К. Само дето не ми дойде на акъла да сложа пулъп и при датчика, но поне си признавам, че съм все още начинаещ и се уча. Още едно доказателство че форума е много полезно място да се научи това онова, стига да знаеш как 
|
| Чет Авг 02, 2007 1:09 pm |
|
|
|
Страница 1 от 1
|
[ 9 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|