Например TDA7294

Форум РадиоКот • Просмотр темы - I2C в составе LUFA, проблема передачи slave address
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн июл 28, 2025 02:08:30

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: I2C в составе LUFA, проблема передачи slave address
СообщениеДобавлено: Пт июн 20, 2025 15:41:23 
Родился

Зарегистрирован: Пт июн 20, 2025 15:18:46
Сообщений: 1
Рейтинг сообщения: 0
Здравствуйте!
Использую библиотеку LUFA c гитхаба (https://github.com/abcminiuser/lufa)
Проц Atmega32u4, основа устройства -- Generic HID, с ним все хорошо.
Подключил TWI.h, также по гайдлайнам инициализирую его и передаю байт slave устройству с адресом 0x20:
Код:
TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 200000));

if (TWI_StartTransmission(0x20|TWI_ADDRESS_WRITE, 10) == TWI_ERROR_NoError)
       {
           TWI_SendByte(0xAC);
               
           TWI_StopTransmission();
       }


TWI возвращает код ошибки , говорит, что TWI_ERROR_SlaveNotReady.
А при анализе физической передачи вижу, что в линию передаётся адрес 0x10 вместо 0x20. Ну вот и ругань, ясное дело, такого слейва нет у меня на шине. Но если поставить в программе адрес не 0x20, а 0х40, то все работает,адрес в шину передается корректный.
Сломал уже голову, не понимаю, почему так происходит, в драйвере стандартная процедура передачи адреса
Код:
TWDR = SlaveAddress;
TWCR = ((1 << TWINT) | (1 << TWEN));

Как будто в какой-то момент происходит смещение байта в регистре TWDR вправо на 1, и адрес делится на 2, и уже он уходит в шину.
Как-то это криво, не хочу умножать реальный адрес слейва на 2, хотя так то работать будет корректно. Это костыль, стыдно.
Прошу совета.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: I2C в составе LUFA, проблема передачи slave address
СообщениеДобавлено: Вт июл 01, 2025 11:16:14 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 209
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1520
Рейтинг сообщения: 0
По описанию похоже на добавление бита R/W. Он как раз идет после 7-битного адреса. Если так, то все нормально, адрес и надо умножать на 2 и добавлять 0 или 1 в зависимости от того, что со слейвом предполагается делать.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y