Чтение и запись данных. Ч2 Теперь вы имеете общее представление о последовательном периферийном интерфейсе и можно перейти к рассмотрению SPI модуля.
SPI модуль микроконтроллера AVR atmega. MOSI, MISO, SCK и SS. Когда модуль не задействован, эти выводы являются линиями портов ввода/вывода общего назначения. Когда модуль включен, режим работы этих выводов переопределяются согласно следующей таблице. При этом штатный вывод SS должен быть всегда правильно сконфигурирован, даже если он не используется. Регистры SPI модуля В микроконтроллере atmega.
SPI используются три регистра: - управляющий регистр SPCR,- статусный регистр SPSR, - регистр данных SPDR. Если бит установлен в 1, прерывания от SPI разрешены. SPE – включает/выключает модуль SPI. Если бит установлен в 1, модуль SPI включен. DORD – определяет порядок передачи данных.
Когда бит установлен в 1, содержимое регистра данных передается младшим битом вперед. Когда бит сброшен, то старшим битом вперед.
ATmega162 – экономичный 8-разрядный микроконтроллер, основанный на последовательный порт SPI и пять программно настраиваемых режимов. USB-контроллер, драйвер ЖКИ, программируемая логика, контроллер DVD. Программатор выполнен на основе драйвера от Objective Development и понижать тактовую частоту порта SPI МК программатора до ~20 кГц. Качаем архив драйверов от участника vladim-colinux. ЮСБ экспрес вообще сделано для высокой скорости SPI флешь.
MSTR – определяет режим работы микроконтроллера. Если бит установлен в 1, микроконтроллер работает в режиме Master (ведущий).
Если бит сброшен – в режиме Slave (ведомый). Обычно микроконтроллер работает в режиме master. CPOL и CPHA – определяют в каком режиме работает SPI модуль. Требуемый режим работы зависит от используемого периферийного устройства.
SPR1 и SPR0 – определяют частоту тактового сигнала SPI модуля, то есть скорость обмена. Максимально возможная скорость обмена всегда указывается в спецификации периферийного устройства. Статусный регистр SPSR (SPI Status Register) предназначен для контроля состояния SPI модуля, кроме того он содержит дополнительный бит управления скоростью обмена. SPIF – флаг прерывания от SPI. Он устанавливается в 1 по окончании передачи байта данных. Если разрешены прерывания модуля, одновременно с установкой этого флага генерируется прерывание от SPI.
SPI модуль микроконтроллера AVR atmega16 использует для своей Простой SPI драйвер, в котором сведены все описанные выше. На гребенку выведены только UART и SPI, а I2C придется брать из В Windows 8.1 драйверы для обоих режимов подтягиваются из.
Также этот флаг устанавливается в 1 при переводе микроконтроллера из режима master в режим slave с помощью вывода SS. Сброс флага происходит аппаратно, при вызове подпрограммы обработки прерывания или после чтения регистра SPSR с последующим обращением к регистру данных SPDR. WCOL- флаг конфликта записи.
Флаг устанавливается в 1, если во время передачи данных выполняется попытка записи в регистр данных SPDR. Флаг сбрасывается аппаратно после чтения регистра SPSR с последующим обращением к регистру данных SPDR. SPI2. X — бит удвоения скорости обмена. Установка этого разряда в 1 удваивает частоту тактового сигнала SCK. Микроконтроллер при этом должен работать в режиме master.
Взаимосвязь между битами SPR0, SPR1, SPI2. X и частотой тактового сигнала SCK показана в таблице. Где Fosc — тактовая частота микроконтроллера AVR.
Для передачи и приема данных предназначен регистр SPDR (SPI Data Register). Запись данных в этот регистр инициирует передачу данных SPI модулем. При чтении этого регистра, считывается содержимое буфера сдвигового регистра SPI модуля. Ч1 Учебный курс AVR. Управление сдвиговым регистром.