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

 
 
> Linux, I2C, проблема считывания 32 бит за раз
Ya_Mike
сообщение Oct 17 2011, 09:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 18-05-10
Из: Ярославль
Пользователь №: 57 355



Добрый день всем разработчикам,

Имеется ARM на плате с Linux 2.6.32 на нём, по I2C к нему подключен девайс, с регистра которого необходимо прочитать 32 бита данных. Проблема в том, что шина не поддерживает блочное чтение - поддерживаемый I2C функционал - 0x0EFE0009 (расшифровка - по /usr/include/linux/i2c.h). Бит I2C_FUNC_SMBUS_READ_BLOCK_DATA равен нулю, блоком считать не получается. Байт и два байта считываются успешно. Нужны оставшиеся два байта. Вообще с данной шиной столкнулся впервые, просьба подсказать, кто знает, как решить эту проблему чтения 32 бит с одного регистра устройства? Может есть какой-то обходной путь?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Oct 17 2011, 09:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Ya_Mike @ Oct 17 2011, 13:22) *
Байт и два байта считываются успешно. Нужны оставшиеся два байта.

Очевидный путь - считать 2 байта 2 раза подряд, потом слепить это в 32 бита.
Go to the top of the page
 
+Quote Post
Ya_Mike
сообщение Oct 17 2011, 10:29
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 18-05-10
Из: Ярославль
Пользователь №: 57 355



Цитата(scifi @ Oct 17 2011, 13:30) *
Очевидный путь - считать 2 байта 2 раза подряд, потом слепить это в 32 бита.

Да, это вроде очевидный путь, но - все четыре байта лежат в одном регистре девайса (адрес - один). Одномоментно считываются первые два байта. Как считать оставшиеся два? При последующем чтении девайс отдаёт опять те же самые два байта, считанные до этого с этого регистра.

Сообщение отредактировал Ya_Mike - Oct 17 2011, 10:30
Go to the top of the page
 
+Quote Post



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

 


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


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