06.03.2018, 16:20
|
|
Прохожий
Регистрация: 06.03.2018
Сообщений: 4
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Помогите разобраться с шиной i2c
Имеется плата orange pi zero plus и датчик MPU9250 подключенные по шине i2c
В результате опроса датчик передает одни -1
вот сам код и работа:
Нажмите, чтобы открыть спойлер
#include ‹iostream›
#include ‹wiringPi.h›
#include ‹wiringPiI2C.h›
using namespace std;
int main()
{
wiringPiSetup();
int i=0x68;
int n;
int a=wiringPiI2CSetup(i);
if (a‹0)
{
std::cout‹‹"error initializacion"‹‹std::endl;
}
std::cout‹‹"vvedite kolichestvo znachenie n=";
std::cin››n;
std::cout‹‹endl;
int j;
for (int j=1; j‹n; j++)
{
int Ax=wiringPiI2CReadReg8(i,0x3B)‹‹8|wiringPiI2CReadR eg8(i,0x3C);
int Ay=wiringPiI2CReadReg8(i,0x3D)‹‹8|wiringPiI2CReadR eg8(i,0x3E);
int Az=wiringPiI2CReadReg8(i,0x3F)‹‹8|wiringPiI2CReadR eg8(i,0x40);
int t=wiringPiI2CReadReg8(i,0x41)‹‹8|wiringPiI2CReadRe g8(i,0x42);
std::cout‹‹Ax‹‹" "‹‹Ay‹‹" "‹‹Az‹‹" "‹‹t‹‹std::endl;
}
return 0;
}
Нажмите, чтобы открыть спойлер
root@orangepizeroplus:/home# ./output
vvedite kolichestvo znachenie n=5
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
root@orangepizeroplus:/home#
Такая же проблема была при подключении к ардуине и решалась подключением к земле осциллографа причем выключенного, датчик начинал прекрасно работать, но здесь это не работает.
Может дело в статике или ещё в чем-то
вообщем может кто сталкивался подскажите плиз в чем может быть дело и как это исправить
|
|
|
|
06.03.2018, 17:28
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
Alexei55555
1. Схема соединений, тип и длина проводников, подтяжка к питанию,…?
2. Если уж идёт код, то неплохо в него включить все используемые подпрограммы.
3. А логическим анализатором и осциллографом на шине посмотреть происходящее?
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
06.03.2018, 17:50
|
|
Прохожий
Регистрация: 06.03.2018
Сообщений: 4
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
1. соединение простое sda платы c sda датчика и т.д.
на ардуине пробовал разные проводники сейчас на orange обычные "папа-мама"
на счет подтяжки не уверен но визуально на датчике какие-то smd резисторы шине есть с непонятными номиналами
2. код чисто для тестовой проверки на 99% дело не в нем
3. осциллограф показывает примерно 3в на sda и scl
|
|
|
|
07.03.2018, 01:58
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
Alexei55555, в DS есть осциллограммы и временные параметры для сигналов I2C.
Насколько наблюдаемое соответствует? Нет ли искажений формы? У осциллографа один канал или два?
Правильно ли выбрана частота для шины?
Таки что там с подтяжкой и к какому напряжению?
Питание у обоих от одного источника и напряжения?
Непонятные сопротивления это как и что даёт их измерение?
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
07.03.2018, 12:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,721
Сказал спасибо: 130
Сказали Спасибо 1,109 раз(а) в 528 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
Подтяжка сколько и куда? Какие резисторы? Как реализован I2C - на открытом коллекторе или обычный выход?
|
|
|
|
07.03.2018, 13:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,045
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
Сообщение от Alexei55555
|
датчик передает одни -1
|
Это не датчик передаёт, а линия всё время остаётся в 1 (подтянутой к 1).
Сообщение от Alexei55555
|
int Ax=wiringPiI2CReadReg8(i,0x3B)‹‹8|wiringPiI2CReadR eg8(i,0x3C);
int Ay=wiringPiI2CReadReg8(i,0x3D)‹‹8|wiringPiI2CReadR eg8(i,0x3E);
int Az=wiringPiI2CReadReg8(i,0x3F)‹‹8|wiringPiI2CReadR eg8(i,0x40);
int t=wiringPiI2CReadReg8(i,0x41)‹‹8|wiringPiI2CReadRe g8(i,0x42);
|
Чтобы прочитать чего нить из датчика (он slave на линии) в него надо записать адрес, после чего он (датчик) захватит шину и будет передавать данные к мастеру.
А у вас все функции только пытаются прочитать данные с датчика (без предварительной записи адреса).
Сорри похоже адрес для чтения это int i=0x68;
Но называть так адрес - это муветон.
Последний раз редактировалось dgrishin; 07.03.2018 в 14:07.
Причина: добавление
|
|
|
Сказали "Спасибо" dgrishin
|
|
|
08.03.2018, 03:24
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
Alexei55555
Начните отсюда там все параметры и схема подключения вполне разжеваны. Подтяжки там кстати совсем не видно.
Ну и хороший материал прямо тут на форуме .
Сам по себе датчик не вызывал проблем с использованием и на I2C, и на SPI.
Да и на I2C у этих датчиков вроде как адрес 110100A, что соответствует 0xD0 или 0xD2, в зависимости от состояния входа AD0.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 08.03.2018 в 03:27.
|
|
|
|
13.03.2018, 12:14
|
|
Прохожий
Регистрация: 06.03.2018
Сообщений: 4
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
попробовал поменять миникомпьютер на распберри пи 3 та же ситуация
подтяжка здесь вроде все-таки есть если я правильно понял это два резистора по 10 кОм их на этой фотке видно https://kazus.ru/forums/showthread.php?t=113741 подключены к линиям и к питанию вроде 3,3 если ошибаюсь пожалуйста поправьте
Цитата:
|
Да и на I2C у этих датчиков вроде как адрес 110100A, что соответствует 0xD0 или 0xD2, в зависимости от состояния входа AD0.
|
адрес 0х68 из register map на датчик да и i2c-tools i2cdetect так же определяет
Цитата:
|
Сам по себе датчик не вызывал проблем с использованием и на I2C, и на SPI.
|
это да сам работал с mpu6050 на ардуине тож без проблем а тут что не получается (правда там такая проблема быстро осциллографом решалась просто подключал к земле и все начинало работать хоть месяц (причем при длине линии в 1,5м) если не разбирать физически)
Цитата:
|
Сорри похоже адрес для чтения это int i=0x68;
Но называть так адрес - это муветон.
|
С этим тож согласен.
извиняюсь просто в спешке подправлял прогу с несколькими датчиками
Цитата:
|
Как реализован I2C - на открытом коллекторе или обычный выход?
|
насчет этого не знаю наверное обычный просто первый слышу что есть ещё коллекторный
Цитата:
|
Питание у обоих от одного источника и напряжения?
|
пробовал по разному результат увы один
Может у кого ещё остались какие идеи а то у меня уже почти закончились
|
|
|
|
13.03.2018, 14:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,121
Сказал спасибо: 2,807
Сказали Спасибо 2,735 раз(а) в 2,024 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
Сообщение от Alexei55555
|
насчет этого не знаю наверное обычный просто первый слышу что есть ещё коллекторный
|
Ну вот чем не идея?
Проверить легко - подключить резистор на землю. Скажем, если есть подтяжка на питание 10 кОм - подключение 10 кОм на землю должно уменьшить напряжение в два раза.
Последний раз редактировалось Yuri222; 13.03.2018 в 14:46.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Yuri222 за это сообщение:
|
|
|
13.03.2018, 19:55
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Помогите разобраться с шиной i2c
Alexei55555, таки восстановить схему шины и разобраться с номиналами нужно. В варианте с arduino тоже наплохо разобраться со схемой. Подвешивание осциллографа в том варианте для обеспечения работоспособности навевает сомнения в наличии согласования линий для шины.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:42.
|
|