Перейти к содержанию
    

В чем разница между TWI и i2c?

В чем разница между TWI и i2c?

Коллеги ни разу не сталкивалась ни с тем ни с этим.

Хотела глянуть пример кода и залез в Project Wizard от CodeVision.

 

Вкладка I2C дала такие строки в примере кода:

#include <mega32.h>

// I2C Bus functions
#asm
   .equ __i2c_port=0x1B;PORTA
   .equ __sda_bit=0
   .equ __scl_bit=1
#endasm
#include <i2c.h>

// Declare your global variables here

void main(void)
{
  // I2C Bus initialization
   i2c_init();

while (1)
      {
      // Place your code here

      };
}

 

 

 

вкладка 2-wire(i2c) дала такой код:

 #include <mega32.h>

void main(void)
  {

    // 2 Wire Bus initialization
    // Generate Acknowledge Pulse: Off
    // 2 Wire Bus Slave Address: 0h
    // General Call Recognition: Off
    // Bit Rate: 400,000 kHz
    TWSR=0x00;
    TWBR=0x0C;
    TWAR=0x00;
    TWCR=0x04;

    while (1)
      {
      // Place your code here

      };
}

 

 

Обращает на себя внимание то, что в первом примере можно назначать пины для SDA и SCL. Это что - что-то типа программного i2C?

Во втором примере пины не назначаются, то есть работать будут аппаратные SCL и SDA..

 

Я почему спрашиваю - лоханулась при покупке АЦП - купил два с одинаковыми адресами. В связи с чем хочу поинтересоваться, могу ли я все же их исполользовать, повесив их на разные линии, с одной общаяясь по i2с, с другой по 2-wire(i2c)? Или же купить АЦП с другим адресом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обращает на себя внимание то, что в первом примере можно назначать пины для SDA и SCL. Это что - что-то типа программного i2C?

Очень на то похоже.

 

Во втором примере пины не назначаются, то есть работать будут аппаратные SCL и SDA..

Именно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В чем разница между TWI и i2c?
Принципиально - никакой.

Какие хоть АЦП купили , может у них есть встроенное изменение адреса , или задействовать одну ножку проца , для поочередного включения АЦП

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ADS1100.

Точнее ADS1100A0

Судя по даташиту адрес зашивается на фабрике.

 

А все-таки что это за зверь такой - TWI, который вроде бы аппаратен, но позволят изменить назначение ножек?

Можно ли эту способность исплользовать? Я уже однажды комбинировала аппаратный и программный SPI прокатывало, нельзя ли здесь такой трюк провернуть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ADS1100.

Точнее ADS1100A0

Судя по даташиту адрес зашивается на фабрике.

 

А все-таки что это за зверь такой - TWI, который вроде бы аппаратен, но позволят изменить назначение ножек?

Можно ли эту способность исплользовать? Я уже однажды комбинировала аппаратный и программный SPI прокатывало, нельзя ли здесь такой трюк провернуть?

Да это одно и тоже , как братья близнецы. Просто одна фирма , другой фирме платить за использование разработанной ей протокола не хочет , вот и обозвали TWI. Можете работать как аппаратно так и программно , как Вам захочется. Во многих современных MK полностью реализован аппаратный вариант этого протокола. Программно можно дёргать ножками , если его в чипе нет или надо несколько I2C ==(TWI)

Да , управлять ими можно только по питанию или поменять одну из них на ADS1100A1 -ADS1100A7 у продавца или через мультиплексор самой шиной

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А все-таки что это за зверь такой - TWI

I2C и TWI - это те же яйца, только вид с боку.

Если мне склероз не изменяет, то I2C - это зарегистрированная торговая марка Филипса, и любой производитель, заявляющий, что у него на борту имеется I2C, обязан отстегивать филипсу некие отчисления за использование торговой марки.

Поэтому прочие производители и обзываю двухпроводной интерфейс другими словами из трех букв :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ок, господа, допустим, я цепляю один ацп на SDA и SCL, другой на PORTA.0 и PORTA.1.

 

Далее делаю так:

#include <mega32.h>

// I2C Bus functions
#asm
   .equ __i2c_port=0x1B;PORTA
   .equ __sda_bit=0
   .equ __scl_bit=1
#endasm
#include <i2c.h>

// Declare your global variables here

void main(void)
{


// 2 Wire Bus initialization
// Generate Acknowledge Pulse: Off
// 2 Wire Bus Slave Address: 0h
// General Call Recognition: Off
// Bit Rate: 400,000 kHz
TWSR=0x00;
TWBR=0x0C;
TWAR=0x00;
TWCR=0x04;

// I2C Bus initialization
i2c_init();

while (1)
      {
      // Place your code here

i2c_start();
i2c_write(0b10000000);
i2c_read(1);
i2c_write(0b00000000);
i2c_read(1);
i2c_write(0b00111111);
i2c_read(1);
i2c_stop();



      };
}

 

Ну и в теле главного цикла операции чтения TWI, пока еще не разобралась с ними. Будет работать?

 

Напоминаю остальным, чтобы не отвлекаться от темы - есть два устройства с одинаковым адресом. Как их рулить одним микроконтроллером без конфликтов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разные адреса нужны, чтобы различать устройства, сидящие на одной физической шине. Вы делаете две физически разные шины - нет никакого конфликта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я Вам выше написал , задействуйте только одну ножку порта , для переключения микросхем , чем ещё две + тупо сидеть в delays

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что конкретно вы подразумеваете под переключением микросхем? Как вы предлагаете это осуществить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что конкретно вы подразумеваете под переключением микросхем? Как вы предлагаете это осуществить?

Это просто два полевика P и N проводимости (типа MOSFET ) / Истоки на питания - стоки на питание АЦП - затворы на порт MK. 0 - включает один выключает другой, 1 - наоборот . I2C подключены напрямую на оба АЦП. Ну о том , что этот же 0/1 использовать как флажок с какого ADC принимаете данные - и говорить нечего.

2-ой способ Подключения такие же только отключаете шину I2C , но транзисторов 4 или сборки ( например) типа FDS9933BZ и её антипод FDS9926A ( в открытом состоянии DS сотые ома).

Для первого варианта тоже есть сборки , но только с разнополярными полевиками внутри. Только спросите и тут их Вам набросают ........( слово выражающее количество ещё не придумано в русском языке. Личная цензура запрещает употреблять известные слова при общении с противоположным полом :biggrin: )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у....может лучше посоветуете коммутатор аналогового сигнала? Я собираюсь этим АЦП оцифровывать аналоговое напряжение с выхода микросхемы AD595 - усилитель термопары. МОжет мне проще использовать 1 ацп, коммутируя его вход на 2 разных выхода AD595 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у....может лучше посоветуете коммутатор аналогового сигнала? Я собираюсь этим АЦП оцифровывать аналоговое напряжение с выхода микросхемы AD595 - усилитель термопары. МОжет мне проще использовать 1 ацп, коммутируя его вход на 2 разных выхода AD595 ?

у.... Сначала задача стояла несколько иначе . Схемку или блок схемку покажите , что в итоге Вы хотите , а там уже и прикидывать будем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ох , почитал я про этот усилитель , не та уж всё просто с ним и как поведёт он себя с коммутатором я не скажу.

http://electronix.ru/forum/index.php?showtopic=44254

Думаю , что тему заметят и те кто с ним работал - подскажут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...