использование байтовой парадигмы c библиотекой - PullRequest
0 голосов
/ 14 ноября 2011

Я хочу использовать библиотеку C I2C для «байтовой парадигмы» устройства I2C express. Это был пример API, присутствующего на сайте байтовой парадигмы.

//
// Executing I2C write transfer    
//
pDataWr[0] = 0x12;
pDataWr[1] = 0x34;
printf("\nWriting 0x%02X to address 0x%02x...\n", pDataWr[1], pDataWr[0]);
i2c_CmdBufAppend(2, 0x50, 1, 2, (char *)pDataWr, true, true); // Cmd = 2       : I2C write
                                                             // Address = 0x50
                                                             // AddrType = 1  : 7-bit address
                                                             // Length = 2    : 2 byte payload
                                                             // pDataWr       : buffer with 2 bytes payload (0x1234)
                                                             // STA = true    : generate start
                                                             // STO = true    : generate stop

i2c_RunMaster();
i2c_CmdBufDeleteAll();

Что это значит? Что и где его пишут? Чем он отличается от API, приведенного ниже?

//
// Executing dummy write to set EEPROM address
//
printf("\nExecuting dummy write to set EEPROM address...\n");
pDataWr[0] = 0x12;
i2c_CmdBufAppend(2, 0x50, 1, 1, (char *)pDataWr, true, true); // Cmd = 2       : I2C write
                                                             // Address = 0x50
                                                             // AddrType = 1  : 7-bit address
                                                             // Length = 1    : 1 byte payload
                                                             // pDataWr       : buffer with 1 byte payload (0x12)
                                                             // STA = true    : generate start
                                                             // STO = true    : generate stop
i2c_RunMaster();
i2c_CmdBufDeleteAll();

Я просмотрел документацию библиотеки байтовой парадигмы, но информация там очень ограничена. Пожалуйста, помогите, заранее спасибо:)

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Быстрый поиск в Google спецификации I2C привел к следующему: http://i2c2p.twibright.com/spec/i2c.pdf

Прошло много времени с тех пор, как я играл с устройствами i2c (мне пришлось написать свой собственный драйвер для специализированного чипсета).

Чип, который выполняет код, является мастером I2C.

i2c_CmdBufAppend(2, 0x50, 1, 2, (char *)pDataWr, true, true); // Cmd = 2       : I2C write
                                                         // Address = 0x50
                                                         // AddrType = 1  : 7-bit address
                                                         // Length = 2    : 2 byte payload
                                                         // pDataWr       : buffer with 2 bytes payload (0x1234)
                                                         // STA = true    : generate start
                                                         // STO = true    : generate stop

Я ничего не знаю о используемой вами библиотеке, но комментарии полностью объясняют, что вы обращаетесьустройство по адресу 0x50 (использует 7-битную адресацию) и записывает 2 байта данных, а также генерирует условия запуска и остановки.

Вам необходимо обратиться к спецификации I2C и EEPROM, с которыми вы взаимодействуете.

Это действительно не сложно, если вы понимаете спецификацию.У которого, кстати, полно примеров чтения / записи данных на устройства I2C.

Некоторые устройства настроены так, что вам необходимо записать для них специальное значение (например, регистр или значение команды), а затем прочитатьназад данные.Это делается путем передачи команды записи, а затем команды чтения без остановки между командами.

Устройство, с которым вы взаимодействуете, должно иметь подробную информацию о специальных командах и тому подобном.Библиотека I2C не будет иметь этих данных.

1 голос
/ 15 ноября 2011

Добавить в пост Фреда

Спецификация I2C предоставит вам физический уровень, схемы запуска и остановки, где приземляется акк и кто управляет чем на проводе.

Чтобы понять протокол, на котором основывается этот протокол, вам обычно нужно обратиться к документации для самого устройства (которая часто также включает в себя чертежи физического уровня).

Чтобы понять, кто-то использует код I2C, вам нужна документация для устройства перед вами. Чтобы написать свой собственный код I2C, вам нужна документация для устройства перед вами. Если устройство представляет собой что-то общее, например, eeprom, например, что несколько поставщиков делают совместимые детали, вероятно, было бы неплохо иметь документацию для нескольких устройств перед вами, если есть какие-то специфические вещи, которые вы хотите сделать поддерживать или избегать.

...