Сёха

Чтение после записи, SPI не принимает байт, STM32F3+L3GD20

6 сообщений в этой теме

Сёха    30

Всем привет! Пробую работать с акселерометром L3GD20, установленным на плате STM32F3 Discovery. Читаю регистр WHO_AM_I (0Fh)...

SPI1_CS_Set(LOW);

SPI1_DR = 0x008F;
while (!(SPI1_SR & (1<<1)));

SPI1_CS_Set(HIGH);

USART1_SendByte(SPI1_DR>>8);

...получаю вразумительный ответ 0xD4. Теперь читаю CTRL_REG1 (20h), ответ 0x07. Записываю в него 0x1F...

SPI1_CS_Set(LOW);

SPI1_DR = 0x0F20;
while (!(SPI1_SR & (1<<1)));

SPI1_CS_Set(HIGH);

И заново читаю (20h), чтобы проверить, но SPI1_DR пуст!!!... не смотря на это анализатор показывает что акселерометр ответил верно...


1.thumb.jpg.a371111b021c2b5f6c17f3cbcd84c6e5.jpg


Считать регистр акселерометра получается только со второго раза... Почему так??? Что я упускаю???

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


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

Может я чего не понял, но вообще spi так и работает. Посылаешь команду, тебе приходит ответ на прошлую, если следующей команды слать не нужно, а ответ нужен то ff послать. Возможны конечно варианты, но в основном так.

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


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    313
11 минуту назад, GOR23 сказал:

вообще spi так и работает

У автора SPI обмен двухбайтовый, то есть за один раз посылается байт команды и тут же второй байт для считывания ответа.

3 часа назад, Сёха сказал:

но SPI1_DR пуст!!!

Что значит пуст? Какая-то комбинация нулей-единичек должна быть обязательно :) Или Вы по УСАРТу отправляете принятый байт на комп и на экране пусто?

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


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

Найдите миллионы труднодоступных

электронных компонентов

Сёха    30
2 часа назад, Вуйко сказал:

А где сам код чтения из регистра данных? Ошибка там где-то может быть.

В топике!

1 час назад, Yurkin2015 сказал:

Что значит пуст? Какая-то комбинация нулей-единичек должна быть обязательно...

Пуст это когда в регистре комбинация из нулей!)))

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


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

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

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

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

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

Загрузка...

  • Сообщения

    • На микросхемах - категорически запрещаю! Только на транзисторах. Важно, чтобы Юля поняла, что такое ток покоя выходного каскада, услышала искажения типа "ступенька" и поняла, что такое средняя точка!
    • Нужны не фотки, а осциллограммы. Или только тестер в наличии? Микруху напрямую от сети - нехорошо это. Что там из сети полезет при 2-3 включении кто его знает... Ну и на защиту особо не надейтесь, см. доку, кривая она. Вот и бахает, а не уходит в защиту. 4400uf значит много, даже софт-старт не справляется.
    • Копнул, что в этом плане предлагает промышленность для пассивных компонентов.
      Вот образцы, для размышления и копирования.














      http://opiobjektid.tptlive.ee/Ettevalm/___1.html
    • На 400р приезжать? Спасибо. Сами там за еду работайте   Вы слушаете и не слышите. Народ в этом ничего не понимание, народ доволен что хоть как-то работает, вот и благодарит. Воспалится аппендицит, вырежут вместе с лишней почкой, тоже не заметишь, будешь благодарить что жив остался, чем плохо? 
    • Скорее всего никто , надо составлять систему уравнений . Частный случай,  когда выходное напряжение значительно меньше входных ( R1 и R2 намного больше R3)  ,  можно рассматривать как приближенное сложение токов (не напряжений) через R1 и R2 в R3  :   V1/R1 + V3/R2 =(примерно) Vout/R3 . Полная система уравнений будет несколько иной (V1-Vout)/R1 + (V3-Vout)/R2 = Vout/R3 . Если сделать дальнейшие преобразования,  то можно показать,  что в данном случае можно считать  (V1-Vout) =V1,  а  (V3-Vout) = V3 . Как то так .  
    • Так разберитесь. За Вас это делать никто не станет, тем более по фото магнитольных потрохов. Тогда возьмитесь за дело, в котором имеете опыт, а это оставьте для того, кто опытен в нем - то есть для Мастера.
    • Судя по схеме аукс там и так есть.  Тюнер только по цифре с внешним миром общается. Теоретически можно вместо диска, но магнитола может сам диск потом потребовать.