Перейти к содержанию
    

LSM6DS3 (РЕШЕНО)

Всем доброго дня.

Пытаюсь завести вышеуказанный датчик по SPI.

Все настроил, читаю WHO_AM_I и другие регистры по дефолту с числом - читаются нормально.

 

Пытаюсь сделать запись в регистр (например CTRL1_XL 0x10) число 0x40 - не выходит. Как определяю - осциллограмма правильная, а после этого читаю регистр, а там видит 0xFF. Когда тыкаю осцилл на MISO сразу начинает видеть 0. Такое ощущение, что на ноге есть маленький "+", а осцилл его на "-" утягивает. Но дело точно не в нем.

Осциллограмма MOSI + clk, на MISO в той же области все как и должно быть - "-" по всей длине клока.

 

 

afe348d57e6c.png

 

Глаз замылился уже, хотя вроде просто до нельзя, более того раньше заводил всякие разные аксели, правда на I2C сидели.

Подкиньте свежую идею что не так.

Спасибо.

 

PS после попытки записи в регистр перестают читаться и другие регистры. Видимо толи запись идет не туда, куда нужно, толи еще что-то

 

PS2 при перезагрузке проце без записи в регистры, просто читать то, что было загружено (как я думла с ошибкой) начинает видеть. То есть запись проходит, но что-то где-то каверкается в SPI? Или видимо в самом датчике, т.к. я осциллом смотрел там были нули.

Изменено пользователем ЯadiatoR

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как определяю - осциллограмма правильная, а после этого читаю регистр, а там видит 0xFF.
По правильному ли фронту защёлкиваются данные из датчика? Судя по осцилограмам звон стоит хороший и не исключено что по неправильонму франту можно защёлкивать этот самый звон как 1. А осциллограф добавляет небольшую ёмкость которая делает эти выбросы меньше порога срабатывания.

А может фронт и правильный просто наводки например от клока пролазят на выходную линию.

 

Ещё идеи. Нету ли какого то обмена по этим же шинам во время того как CS не активен? Может он этот обмен воспринимает как I2C обмен и куда то там сваливается?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прблема была следующая - код записи в регистр выглядел так:

void SPIWrite(byte reg, byte data)
{
    while(!(SPI2->SR&SPI_SR_TXE));
    CS_EN;
    SPI2->DR=(data<<8)|(reg&0x7F);
    while(SPI2->SR&SPI_SR_BSY);
    CS_DIS;
}

 

а чтения так:

byte SPIRead(byte reg)
{
    CS_EN;
    SPI2->DR=reg|0x80;
    while(!(SPI2->SR&SPI_SR_RXNE));
    CS_DIS;
    return SPI2->DR>>8;
}

 

После записи в регистре DR оставалось 2 байта. и при следующем чтении CS устанавливался и сразу сбрасывался при входе в while. Я добавл в ф-ю записи в конце команду ushort temp=SPI2->DR; и сбрасывал принятые байты таким образом. После этого заработало

 

Жалко одно - ST никак не хочет сделать хардварным CS. Хотя бы 1 канал. Программное ногодрыганье дико не нравится, да и работает не правильно.

 

Если бы было хотя бы прерывание по BSY, но и его нет. Вот и приходится городить всякие while(SPI2->SR&SPI_SR_BSY);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с чем-то похожим вот тут намучался http://electronix.ru/forum/index.php?showtopic=105804

 

о смотрю у тебя осциллограф pv6502 или pv6503, тоже думаю купить, есть несколько вопросов:

1. какое входное напрядение он способен измерять без делителя?

2. есть ли гальваническая изоляция между минусом щупа и usb?

3. какое общее впечатление от совта

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня pv6503а.

 

Все характеристики есть тут http://www.pv65.ru/

 

1. По ссылке выше есть пара упоминаний про 150В. Это как я понял с делителем на 10. То есть максимум 15В. Я выше 12-13 не пробовал подавать и при измерении 8В+ уже использую делитель на всякий пожарный.

2. Гальваника полная.

3. Софт простой и удобный. Не требует мощного компа. Короч на планшете с win7 идет легко. Интиутивно понятный. Много приятных фич как с различными уровнями срабатываний так и с триггерами + есть гена.

 

В общем впечатления очень приятные. За ~5 лет работы с ним у меня только однажды появилась проблема - он здох. Вручную отремонтить мог, но изготовитель не дал исходников прошивки контроллера (мне казалось он полетел). В итоге отнесли на митинку и там сразу заменили на рабочий. Без вопросов и доков, просто обменяли.

 

В общем своих денег стоит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...