Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Странное поведение USART при общении с флеш

Вт июл 31, 2018 00:37:03

Всем привет :))
Задумал общаться с SPI флешкой посредством USART в синхронном режиме. Контроллер - ведущий, тактирует ведомую флешку. Настроил USART, отправляю микросхеме команду на чтение - она выставляет в ответ данные, что видно на анализаторе. Только вот прочитать я их не могу. Контроллер не реагирует, прерывания по чтению не возникает. Стал разбираться в чем дело. Флешку отключил, замкнул RX на TX. Отправляю байт - и по-прежнему ничего. Прерывания нет, регистры не меняются, ничего не происходит.
После экспериментов с настройками USART выяснилось, что прерывание срабатывает и байтик читается только если отключить постоянный синхросигнал CLK. Если CLK работает только во время отправки данных с контроллера - все прекрасно читается. Если долбит постоянно - контроллер ничего не видит на входе. Хотя данные отправляются. Довольствоваться таким поведением не могу. Мне нужен постоянный CLK, чтобы тактировать флешку не только во время отправки команды, но и после. Чтобы она могла выдать мне данные. Но пока получается, что в таком режиме работы я не смогу их с линии забрать. Мне кажется это странным, синхронный режим так работать не должен. С чем это может быть связано и как исправить? Может кто сталкивался с подобным? Буду признателен, если поделитесь опытом и догадками :solder:


Параметры USART: бодрейт 4 млн бит в секунду, CPOL = 0, CPHA = 0, посылка 8 бит, старт/стоп биты отсутствуют

Re: Странное поведение USART при общении с флеш

Пн авг 06, 2018 09:26:07

Так все правильно - поддержка синхроимпульсами идет только во время передачи байта (или приема).
В промежутках между обменом тактирование НЕ РАБОТАЕТ.
Там должно еще быть согласование при приеме между ведущим и ведомым устройствами (дабы друг дружку понимали) - т.е. ведомый, который рассчитан на применение такого интерфейса. Иначе - не морочимся и применяем или аппаратный SPI или его программный аналог.
8)
Ответить