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

 
 
> smbus в linux, взаимодействие Linux с bq40z60
taoga
сообщение Sep 16 2015, 09:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 8-10-09
Пользователь №: 52 809



Здраствуйте!

Имеется bq40z60evm http://www.ti.com/product/bq40z60?keyMatch...h-EN-Everything - полный менеджер батареи(батарей): зарядка, защита, контроль состояния. Для связи есть smbus.
Зарядил от нее 3S2P сборку батарей типоразмера 18650. Запитал SBC. С помощью ПО bqstudio можно контролировать,
и изменять параметры микросхемы bq40z60, они сохраняются во флэш. Здесь вопросов почти нет.

Далее мне нужно контролировать bq40z60 из Linux(ubuntu 14.04 linaro с lxde). На борде есть i2c, подсоединяю и нечего не вижу.
i2cdetect не видит адресов bq40z60. Т.е. bq40z60 отсоединено или подсоединено, вывод i2cdetect остается одним и тем же.

linaro@linaro-alip:~$ ls /dev
autofs loop7 ram13 tty12 tty4 ttymxc0
block mem ram14 tty13 tty40 ttymxc1
bus mtd0 ram15 tty14 tty41 ttymxc4
char mtd0ro ram2 tty15 tty42 ubi_ctrl
console mtd1 ram3 tty16 tty43 urandom
core mtd1ro ram4 tty17 tty44 v4l
cpu_dma_latency mtd2 ram5 tty18 tty45 vcs
disk mtd2ro ram6 tty19 tty46 vcs1
dri mtdblock0 ram7 tty2 tty47 vcs2
fb0 mtdblock1 ram8 tty20 tty48 vcs3
fb1 mtdblock2 ram9 tty21 tty49 vcs4
fd mxc_asrc random tty22 tty5 vcs5
full mxc_hdmi rfkill tty23 tty50 vcs6
fuse mxc_hdmi_cec rtc tty24 tty51 vcs7
galcore mxc_ipu rtc0 tty25 tty52 vcsa
hwrng mxc_vpu rtc1 tty26 tty53 vcsa1
i2c-0 mxs_viim sda tty27 tty54 vcsa2
i2c-1 network_latency sda1 tty28 tty55 vcsa3
i2c-2 network_throughput sdb tty29 tty56 vcsa4
input null sdb1 tty3 tty57 vcsa5
kmsg port shm tty30 tty58 vcsa6
log pps0 snd tty31 tty59 vcsa7
loop-control ptmx stderr tty32 tty6 vga_arbiter
loop0 ptp0 stdin tty33 tty60 video0
loop1 pts stdout tty34 tty61 video1
loop2 ram0 tty tty35 tty62 video16
loop3 ram1 tty0 tty36 tty63 video17
loop4 ram10 tty1 tty37 tty7 watchdog
loop5 ram11 tty10 tty38 tty8 zero
loop6 ram12 tty11 tty39 tty9

linaro@linaro-alip:~$ i2cdetect -l i2c-0 i2c
i2c-0 unknown 21a0000.i2c N/A
i2c-1 unknown 21a4000.i2c N/A
i2c-2 unknown 21a8000.i2c N/A

linaro@linaro-alip:~$ sudo i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: UU 21 -- UU -- -- -- -- -- UU -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

linaro@linaro-alip:~$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- UU -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3f
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- 6b -- -- -- --
70: -- -- -- -- -- -- -- --

linaro@linaro-alip:~$ sudo i2cdetect -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- UU -- -- -- -- -- UU -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU --
20: UU -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
30: -- -- -- -- UU 35 -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --


От bq40z60 и Linux мне нужно несколько вещей:
1) Переходить в спящий режим (из bqstudio это команда shutdown );
2) Просыпаться из спящего режима (есть кнопка wake up на bq40z60evm);
3) Отображать индикатор состояния батареи;
4) Отображать текущий источник питания( батарея или сетевой адаптер);

Кто нибудь имел дело с smbus и с подобными микросхемами в linux?
Как настроить это в Linux, подскажите куда копать?
Прикрепленные файлы
Прикрепленный файл  log.txt ( 5.07 килобайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jury093
сообщение Sep 17 2015, 14:39
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(taoga @ Sep 16 2015, 12:55) *
Далее мне нужно контролировать bq40z60 из Linux(ubuntu 14.04 linaro с lxde). На борде есть i2c, подсоединяю и нечего не вижу.
i2cdetect не видит адресов bq40z60. Т.е. bq40z60 отсоединено или подсоединено, вывод i2cdetect остается одним и тем же.

вы не перепутали SDA<>SCL?
gnd подсоединили?

судя по выхлопу i2cdetect физически сами шины исправны
и если перед подключением вы не загнали чип в shutdown, то он должен детектироваться примерно по адресу 0x09, 0x0b или 0x12..

Цитата
Кто нибудь имел дело с smbus и с подобными микросхемами в linux?
Как настроить это в Linux, подскажите куда копать?

общие рекомендации:
добиваетесь того, чтобы чип продетектировался утилитой i2cdetect
утилитами i2cset/i2cget "изучаете регистры чипа и его поведение
вооружившись рефманом на чип (Technical Reference Manual (SLUUA04)), пишете драйвер для своего ядра в разделе drivers/power

Сообщение отредактировал Jury093 - Sep 17 2015, 14:59
Go to the top of the page
 
+Quote Post
taoga
сообщение Sep 17 2015, 15:57
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 8-10-09
Пользователь №: 52 809



Цитата(Jury093 @ Sep 17 2015, 17:39) *
вы не перепутали SDA<>SCL?
gnd подсоединили?

судя по выхлопу i2cdetect физически сами шины исправны
и если перед подключением вы не загнали чип в shutdown, то он должен детектироваться примерно по адресу 0x09, 0x0b или 0x12..


общие рекомендации:
добиваетесь того, чтобы чип продетектировался утилитой i2cdetect
утилитами i2cset/i2cget "изучаете регистры чипа и его поведение
вооружившись рефманом на чип (Technical Reference Manual (SLUUA04)), пишете драйвер для своего ядра в разделе drivers/power

Не перепутал, раза 3 проверял. И прозванивал. На обе платы(SBC и bq40z60evm) нанесена маркировка контактов. Подключал SDA, SCL, GND.
Далее начал экспериментировать с настройками bq40z60 и почти убил ее.
Сделал вот что:
Последние изменения конфигурации bq40z60:
in "SBS Configuration" - XL = 1(red), HPE=1, CPE=1, BCAST=1
Эти биты включают обмен на 400кГц и периодическую отправку информационных сообщений.
После чего Bqstudio перестало автоматически определять bq40z60evm. Использую EV2300.
Выбираю вручную bq40z60, в окне "Battery Management Studio() Supported Target"
Очень редко проходят команды: "DEVICE_NUMBER", "CHEM_ID", "RESET" ...
"CHEM_ID" - возвращает правильное значение.
Если включить в Bqstudio автоматическое чтение регистров, то иногда читаются достоверные значения регистров! Очень редко.
Т.е. линии smbus целые.

Пробовал залить сохраненный ранее srec в окне "F / W Programming" но возникают ошибки: "Program Srec: Timeout or unexpected response communicating wi
th device" или "Program Srec: Packet checksum mismatch"
Очень редко появляется индикатор прогресса "F / W Programming" но вероятно прошивка не завершается, т.к. появляется ошибка: "Execute Command: Timeout or unexpected response communicating with device".
Странно, что они не сделали сброс значений параметров с помощью внешней ножки.

В итоге bq40z60 наполовину живая. Работает по старым настройкам. Заряжает батарею, реагирует на внешний источник питания, показывает с помощью светодиодов заряд. Но начего больше с ней сделать не могу. Заказал еще несколько новых микросхем, будем чинить EVM.
Go to the top of the page
 
+Quote Post
Jury093
сообщение Sep 17 2015, 16:29
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(taoga @ Sep 17 2015, 18:57) *
Не перепутал, раза 3 проверял. И прозванивал. На обе платы(SBC и bq40z60evm) нанесена маркировка контактов. Подключал SDA, SCL, GND.

а что такое SBC? плата хоста, куда цепляете bq40z60?

Цитата
in "SBS Configuration" - XL = 1(red), HPE=1, CPE=1, BCAST=1
Эти биты включают обмен на 400кГц и периодическую отправку информационных сообщений.
После чего Bqstudio перестало автоматически определять bq40z60evm. Использую EV2300.

попробуйте зайти хоть в ручном режиме и почистить на исходную XL, HPE, CPE
тут есть два варианта:
- считать память регистров и там поправить, потом обратно записать
- в расширенном режиме есть возможность посылать отдельные команды, вот там попробовать обнулить те же биты..

потом команду сброса чипа, либо через гуевую кнопку, либо через команду расширенного режима..
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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