Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ

реклама

 




Мероприятия:




Системные ошибки SPI

Модуль SPI может обнаружить три типа системных ошибок SPI. Ошибка режима возникает в системе с несколькими ведущими устройствами, когда несколько SPI устройств одновременно пробуют быть ведущими. Ошибка переполнения приемного буфера, которая происходит когда передача данных была завершена до того, как предыдущие данные были считаны из приемного буфера. Третий вид ошибки, коллизия записи, возникает когда в регистр SPIB была предпринята попытка записи до того, как была закончена передача предыдущего пакета данных (STBY = 1).

Ошибка режима

Когда SPI устройство настроено на работу в режиме ведущего и бит активизации ошибки режима (SPICN.2: MODFE) также установлен, то ошибка режима происходит, если на входе SSEL внешнее устройство устанавливает низкий сигнал. Эта ошибка обычно возникает когда второе SPI устройство пытается работать как ведущий. В системе, в которой несколько устройств могут работать в режиме ведущего, имеется возможность возникновения конфликтной ситуации при обращении к шине, которая может вызвать повреждение двухтактных КМОП драйверов. Обнаружение ошибок режима должно обеспечить защиту от таких повреждений путем блокировки драйверов шины. При обнаружении ошибки режима немедленно производятся следующие действия:

  1. Бит MSTM сбрасывается в 0 для перевода модуля SPI в режим ведущего.
  2. Бит SPIEN сбрасывается в 0 для отключения модуля SPI.
  3. Флаг ошибки режима (SPICN.3: MODF) устанавливается. Установка бита MODF может генерировать прерывание, если оно разрешено.

Прикладное программное обеспечение должно исправить конфликт системы перед возобновлением его нормального режима. Флаг MODF устанавливается автоматически аппаратно, но должен быть сброшен программно или же очистка его произойдет после сброса. Установка бита MODF в 1 программным методом также вызовет прерывание (если оно разрешено).

Обнаружение ошибки режима является дополнительной функцией и может быть отключено путем сброса бита MODFE в 0. Отключение функции обнаружения ошибки режима блокирует использование вывода SSEL в режиме ведущего, что позволяет использовать этот вывод в качестве порта ввода-вывода общего назначения.

Обратите внимание, что механизм обнаружения ошибок режима не обеспечивает полную защиту от конфликтной ситуации при обращении к шине в системе с множеством ведущих и множеством ведомых. Например, если два прибора одновременно настроены на работу в режиме ведущего, то защита от повреждения сработает только тогда, когда один ведущий выберет второго в качестве ведомого путем установки сигнала SSEL на его входе. Также, если ведущий случайно активирует больше чем одного ведущего и те приборы пробуют одновременно передавать данные, то конфликтная ситуация при обращении к шине может произойти и без формирования ошибки режима.

Переполнение приемника

Так как приемный тракт SPI модуля имеет двойную буферизацию, то переполнения не произойдет если принятые данные считывать до того, как будет окончательно принят следующий пакет данных. Однако, если предыдущие принятые данные не были считаны из буферного регистра, то после окончания приема следующего пакета данных произойдет переполнения, и будет установлен флаг переполнения приемного буфера (SPICN.5: ROVR). Установка флага ROVR показывает, что последняя полученная посылка была записана поверх. Установка бита ROVR в 1 вызывает прерывание (если оно разрешено). Очистка бита ROVR должна быть произведена программно, но после сброса микроконтроллера этот бит также очищается.

Коллизия записи при условии занятости

Коллизия записи происходит при попытке записать данные в регистр SPIB в течение цикла передачи (STBY = 1). Так передающий тракт имеет только один уровень буферизации, то запись в регистр SPIB вызывает непосредственную запись в регистр сдвига передатчика. Запись в регистр SPIB в то время, когда происходит передача других данных, может легко разрушить передающиеся/принимающиеся данные. Когда происходит попытка записи до окончания передачи, текущая передача продолжается без помех, но новые данные не записываются в регистр сдвига, а модуль управления устанавливает флаг коллизии записи (SPICN.4: WCOL). Установка бита WCOL в 1 генерирует прерывание (если оно разрешено). После установки бит WCOL должен быть сброшен программно, также его очистка происходит после сброса микроконтроллера.

Обычно ошибка коллизии записи происходит при работе в режиме ведомого, так как в этом случает микроконтроллер не контролирует инициализацию передачи данных и не имеет информации о том, сколько синхроимпульсов на выводе SPICK сформировал ведущий. В режиме ведущего этих проблем нет, но детектирование этой ошибки осуществляется, тем не менее, в обоих режимах.



<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники