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

 
 
> 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
Ответов
GDI
сообщение Oct 17 2011, 11:33
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



2 байта это ограничение аппаратного I2C или программное драйвера Linux? Что за контроллер и девайс используется?


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Ya_Mike
сообщение Oct 17 2011, 11:51
Сообщение #3


Участник
*

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



Цитата(GDI @ Oct 17 2011, 15:33) *
2 байта это ограничение аппаратного I2C или программное драйвера Linux? Что за контроллер и девайс используется?

Ограничение чисто программное - ядро 2.6.32 не поддерживает "блочный" режим (особенность именно для данной платы); железо - плата blueshark с OMAP 3530.
Вроде бы нашёл решение - использование транзакции типа I2C_SMBUS_I2C_BLOCK_BROKEN (из i2c.h). По крайней в этом режиме считываются 4-байтовые значения и не происходит крэш. Правда, на счёт полной корректности пока не уверен... Кто-нибудь может подтвердить правильность такого подхода?

Исправил: уточнил про ядро.

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



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

 


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


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