Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2020-фев-25 21:50

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 3 сообщения ] 
Автор Сообщение
СообщениеДобавлено: 2018-июл-25 13:48 
Не в сети

Зарегистрирован: 2018-июн-15 15:11
Сообщения: 3
Организация: частное лицо
Добрый день!

Поработав с контроллером 1986BE8T, с модулем SPI заметили некоторые особенности, а именно, буфер FIFO приемника не очищается при считывании данных из него.

Мы принимаем данные по SPI(пусть будет 20 байт) по прерыванию и записываем их в массив, когда буфер FIFO приемника заполняется (8 байт), дальнейшая запись данных в него становится невозможной(буфер не обновляется и новые данные в него не записываются, следовательно остальные 12 байт невозможно считать), хоть в статус регистре написано, что буфер пуст.

Единственное решение, это выключать и включать модуль SPI, что бы данные в буфере приемника FIFO "обнулялись" и снова записывались в буфер FIFO(остальные 12 байт), но это тогда не соответствует принципу работы FIFO.

Может есть какой другой способ очищать буфер FIFO и принимать данные в любом количестве.


Вернуться к началу
СообщениеДобавлено: 2018-июл-26 16:23 
Не в сети

Зарегистрирован: 2017-июл-14 15:02
Сообщения: 38
Организация: АО "ПКК Миландр"
Откуда: АО "ПКК Миландр"
Открыть Добрый день!
NoName писал(а):
Добрый день!

Поработав с контроллером 1986BE8T, с модулем SPI заметили некоторые особенности, а именно, буфер FIFO приемника не очищается при считывании данных из него.

Мы принимаем данные по SPI(пусть будет 20 байт) по прерыванию и записываем их в массив, когда буфер FIFO приемника заполняется (8 байт), дальнейшая запись данных в него становится невозможной(буфер не обновляется и новые данные в него не записываются, следовательно остальные 12 байт невозможно считать), хоть в статус регистре написано, что буфер пуст.

Единственное решение, это выключать и включать модуль SPI, что бы данные в буфере приемника FIFO "обнулялись" и снова записывались в буфер FIFO(остальные 12 байт), но это тогда не соответствует принципу работы FIFO.

Может есть какой другой способ очищать буфер FIFO и принимать данные в любом количестве.
Закрыть
Добрый день! Нам не удалось добиться описанного Вами поведения блока SSP. Приём данных, количество которых больше, чем размер FIFO приёмника, успешно выполняется. При этом для своевременного считывания принятых данных использовались прерывание по заполнению FIFO приёмника на половину и более (SSPRXINTR) и прерывание по таймауту (SSPRTINTR).

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2018-июл-30 15:01 
Не в сети

Зарегистрирован: 2018-июн-15 15:11
Сообщения: 3
Организация: частное лицо
Спасибо за совет, все получилось.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 3 сообщения ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB