diod.club » Проектирование и дебаг » Программирование » STM32: SPI с двунаправленной линией данных

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

1. Леонид Иванович - 02 Апреля, 2017 - 09:56:30 - перейти к сообщению
Пытаюсь подключить сенсор от оптической мышки 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 может работать в полудуплексом синхронном режиме. Не может.
2. HHIMERA - 19 Апреля, 2017 - 16:42:52 - перейти к сообщению
И что... "Выхода нет!"(с)???
3. Леонид Иванович - 19 Апреля, 2017 - 21:44:19 - перейти к сообщению
Получается так. Красивого выхода нет. Надо закорачивать выводы снаружи.
4. Буратино - 30 Ноября, 2018 - 13:01:41 - перейти к сообщению
Леонид Иванович, как опыт работы с STM32? Я обратил внимание что крайние проекты таки на AVR! Я отдаю себе отчет в том что для всего есть свой оптимальный выбор и STM это уже своего рода стандарт отрасли. Интересно послушать мнение опытного человека. Спасибо!

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

[Script Execution time: 0.0068]     [ Gzip Disabled ]