diod.club diod.club
Проектирование, изготовление, ремонт и обслуживание электроники
 Помощь   


 Страниц (1): [1]   

> Описание: чтение по SPI в BIDIMODE
Леонид Иванович Администратор
  Отправлено: 02 Апреля, 2017 - 09:56:30
Post Id
Super Member  (860)
Откуда: Minsk
Репутация: 35

Пытаюсь подключить сенсор от оптической мышки PAN3101 к STM32F100. Сенсор имеет двухпроводный последовательный интерфейс: линию тактирования SCLK и двунаправленную линию данных SDIO. Пытаюсь использовать режим SPI_CR1_BIDIMODE = 1. Для чтения сенсора надо сначала туда отправить байт с адресом, затем прочитать байт данных. Для передачи устанавливаю SPI_CR1_BIDIOE = 1, а для приема SPI_CR1_BIDIOE = 0. По простоте душевной считал, что процесс чтения инициируется записью в DR любого байта, тогда будут сгенерированы 8 клоков и байт прочитается. На самом деле, при установке SPI_CR1_BIDIOE = 0 клок начинает сыпаться постоянно. Я вообще не понимаю, для чего так сделано и как можно это использовать. На слэйв не должны попадать лишние клоки, иначе нарушится синхронизация. Получается, что несмотря на наличие режима с двунаправленной линий данных, придется использовать дуплексный режим и соединять снаружи пины MISO и MOSI. Или я что-то не так понимаю?

Upd: сделал поиск по теме, так и есть. Например, вот тут описывается аналогичная проблема и даются смешные рекомендации быстренько отслеживать флаги и выключать прием, при этом проверяя правильность работы программы осциллографом или логическим анализатором Улыбка

SPI у STM32 какой-то кривой в этом месте. В свое время такие же ощущения были и в отношении I2C. Там довольно странно решен вопрос приема 1, 2 и более байт. А ведь можно было вместо бита POS сделать регистр количества байт для приема, все было бы красиво.

Как альтернатива, посмотрел на USART, который тоже может быть использован в синхронном режиме. Но, увы, с двунаправленной линией данных синхронный режим не работает Недовольство, огорчение

Upd1: USART может работать в полудуплексом синхронном режиме. Не может.
HHIMERA
  Отправлено: 19 Апреля, 2017 - 16:42:52
Post Id
Newbie  (1)
Репутация: 0

И что... "Выхода нет!"(с)???
Леонид Иванович Администратор
  Отправлено: 19 Апреля, 2017 - 21:44:19
Post Id
Super Member  (860)
Откуда: Minsk
Репутация: 35

Получается так. Красивого выхода нет. Надо закорачивать выводы снаружи.
Буратино
  Отправлено: 30 Ноября, 2018 - 13:01:41
Post Id
Newbie  (38)
Репутация: 0

Леонид Иванович, как опыт работы с STM32? Я обратил внимание что крайние проекты таки на AVR! Я отдаю себе отчет в том что для всего есть свой оптимальный выбор и STM это уже своего рода стандарт отрасли. Интересно послушать мнение опытного человека. Спасибо!
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
UaExBB Style

[Script Execution time: 0.0079]     [ Gzip Disabled ]