Смекни!
smekni.com

“Контроллер для организации сенсорной сети” (стр. 7 из 11)

Для получения данных интерфейс должен сначала быть инициализирован функцией vAHI_IpEnable (). После этого разряд RXRDY, посланный в байте состояния от блока IP, покажет, что данные могут быть получены JN513x. Успешное получение данных может быть обозначено прерыванием, или опросом интерфейса, используя bAHI_IpRxDataAvailable (). Потом данные восстанавливаются, используя bAHI_IpReadData ().

Чтобы одновременно послать и получать данные, приемный и передающий буферы должны быть разными.

11.3. Передача по инициативе удаленного процессора

Отдаленный процессор может инициализировать передачу для отправки данных на JN513x, активизируя подчиненный штырек выбора IP_SEL и генерируя свой байт состояния на линию IP_DI установкой бита TXRDY=1. После получения байта состояния от JN513x он проверяет наличие у JN513x буфера, готового к приему, считывая бит RXRDY. Если бит RXRDY=0, значит JN513x не может принять данные, удаленный процессор должен закончить передачу деактивизацией IP_SEL. Если бит RXRDY =1 - JN513x может принять данные; процессор должен в течение 8 тактов IP_CLK передать длину его сообщения по IP_DI. Процессор должен продолжить синхронизировать интерфейс, пока не сгенерирует достаточное количество синхроимпульсов для передачи всех данных, определенных в поле длины для JN513x. Затем процессор должен деактивизировать IP_SEL, чтобы показать, что передача закончена.

Данные можно послать в обоих направлениях сразу, но процессор должен гарантировать завершение обеих передач прежде, чем деативизирует IP_SEL.

12. Таймеры

12.1. Периферийный таймер / счетчик

Два таймера / счетных модуля общего назначения могут быть независимо конфигурированы для работы в одном из пяти режимов. Таймеры обладают следующими особенностями:

  • 16-разрядный делитель частоты с программируемым коэффициентом деления;
  • Синхронизируются от системного генератора;
  • 16-разрядный счетчик, 16-разрядные регистры фронта и спада;

Режимы:

  • Таймера: позволяет генерировать прерывания по достижении счетчиком значений регистров фронта и спада. Работа может быть разрешена внешним сигналом;
  • Счетчика: подсчитывает перепады входного сигнала. Может подсчитывать фронты, спады или оба перепада;
  • Модуляции длительности импульса: позволяет задавать временные параметры импульсов и выводить их в единичном или множественном количестве;
  • Сбора данных: измерение временных параметров приложенного цифрового сигнала;
  • Дельта-сигмы: режимы с возвращением к нулю (RTZ) и без возвращения к нулю (NRZ);

Блок-схема таймера изображена на рис. 23.

Рис. 23. Блок-схема таймера.

Синхроимпульсы для модуля таймера подаются от генератора на 16 МГц. Они поступают на 16-разрядный делитель частоты, который уменьшает их частоту в 2 в степени предмасштаба раз. Например, если значение предмасштаба равно 2, то частота выходного сигнала делителя составляет 4 МГц. Значение предмасштаба устанавливается функцией vAHI_TimerEnable ().

Работа счетчика может быть разрешена сигналом TIMxCK_GT. Когда эта возможность задействована (используя vAHI_TimerClockSelect ()), счетчик будет остановлен, если на входе лог. «1».

Если функцией vAHI_TimerEnable () разрешены прерывания, они будут генерироваться всякий раз, когда значение счетчика равно значению, сохраненному в регистрах фронта (Rise) или спада (Fall).

Внутренний сигнал разрешения (OE) включает или отключает выход таймера.

Сигналы таймера 0 CK_GT, CAP и OUT являются мультиплексными с DIO8, 9 и 10 соответственно; сигналы таймера 1 CK_GT, CAP и OUT тоже являются мультиплексными с DIO11, 12 и 13. Выбор функциональных возможностей этих штырьков между DIO и таймерами задается программно, но в любом случае таймеры будут функционировать внутренне.


12.1.1. Режим модуляции длительности импульса

Режим (PWM) Модуляции Длительности Импульса позволяет пользователю задавать период и длительность импульса. Импульс может быть сгенерирован однократно или как цепочка импульсов с нормой повторения, равной периоду.

В данном режиме период импульса и длительность его нулевого состояния заносятся в два независимых 16-разрядных регистра (спада и фронта). Содержимое счетчика возрастает и сравнивается с 16-разрядными регистрами фронта и спада. Когда значение счетчика равно значению регистра фронта, на выходе PWM происходит положительный перепад напряжения; когда счетчик достигает значения регистра спада, на выходе происходит отрицательный перепад и схема возвращается к исходному состоянию. В непрерывном режиме при достижении счетчиком значения регистра спада произойдет сброс счетчика и повторение цикла. В зависимости от режима работы значения заносятся в регистры фронта и спада через функцию vAHI_TimerStartRepeat () или vAHI_TimerStartSingleShot (). Выходной сигнал PWM выдается на TIMxOUT, если это разрешено функцией vAHI_TimerEnable ().

Рис. 24.

12.1.2. Режим сбора данных

Режим сбора данных может использоваться для измерения периода времени между перепадами сигнала на входе сбора данных (TIMxCAP). Переход в этот режим происходит посредством вызова функции vAHI_TimerStartCapture (), при этом запускается счетчик. При положительном перепаде входного сигнала содержимое счетчика заносится в регистр фронта, при отрицательном перепаде значение счетчика заносится в регистр спада. Длительность импульса - разница содержимого этих двух регистров, умноженная на период импульса синхронизации (во всех случаях частота синхронизации должна составлять 16 МГц, т.е. значение предмасштаба делителя равно 0). Функция vAHI_TimerReadCapture () останавливает счетчик, считывает содержимое регистров. Содержимое регистров фронта и спада будет обновлено всякий раз при обнаружении перепада импульса на входе сбора данных, поэтому при поступлении нескольких импульсов на TIMxCAP до остановки счетчика, будет сохранена только длительность последнего импульса.

Рис. 25. Режим сбора данных.

12.1.3. Режим счетчика / таймера

Счетчик/таймер может использоваться для синхронизации или генерации прерываний счета, используемых программным обеспечением. В режиме таймера источником импульсов является системный тактовый генератор, частота которого при желании может быть уменьшена делителем. Период таймера программируется в регистр спада, разрешается прерывание соответствия регистра спада. Таймер запускается или как однократный или как повторяющийся таймер (vAHI_TimerStartSingleShot () или vAHI_TimerStartRepeat ()) и генерирует прерывание при достижении счетчиком значения регистра спада.

Режим счетчика может быть использован для подсчета внешних событий. В качестве источника импульсов в этом случае используется входной штырек TIMxCK_GT, число событий программируется в регистр спада. Когда запрограммированное число фронтов сигнала зафиксировано на входном штырьке, генерируется прерывание.

12.1.4. Режим дельта-сигма

Доступен особый режим дельта-сигмы, позволяющий реализовать низкоскоростной ЦАП дельта-сигмы с разрешающей способностью до 16-бит. Это режим требует внешней RC-цепочки, подключенной между выходом DIO и общей шиной. Сгенерированный цифровой поток импульсов интегрируется RC-цепочкой в аналоговое напряжение. Время преобразования определено условием количества тактовых циклов. Длительность сгенерированных импульсов является периодом тактового цикла. Количество выводимых импульсов вместе с параметрами RC интегратора определяют итоговое аналоговое напряжение. Например, генерация приблизительно половины числа импульсов, составляющих законченный период преобразования, создаст напряжение на выходе RC, равное VDD1/2, если RC константа времени выбрана правильно. Во время преобразования импульсы будут псевдослучайно рассредоточены по всему циклу для создания устойчивого напряжения на выходе RC-цепи.

Выходной сигнал утверждается числом тактов, определенных в Высоком наборе регистров, задается vAHI_TimerStartDeltaSigma (), с полным периодом, составляющим 216 циклов.

Выход преобразователя дельта-сигмы может работать в режимах с возвратом к нулю (RTZ) или без возврата к нулю (NRZ). Режим NRZ позволяет выводить несколько импульсов друг рядом с другом. Режим RTZ гарантирует, что каждый следующий импульс будет отделен от предыдущего по крайней мере одним периодом. Это улучшает линейность, если активный и неактивный периоды импульса различны.

12.1.5. Пример применения таймера / счетчика

Рис. 26 показывает пример применения таймеров JN513x для управления скоростью вращения замкнутой системы. Таймер 0 конфигурирован в режиме PWM; длительность импульса задает средний ток через полевой транзистор и управляет мощностью двигателя.

Таймер 1 конфигурирован на подсчет фронтов импульсов на штырьке clk/gate за постоянный период. Он преобразует поток импульсов от Тахо-датчика в число, пропорциональное скорости мотора. Это число используется прикладным программным обеспечением, выполняющим алгоритм управления скоростью вращения.

Рис. 26. Схема контроля скорости вращения двигателя.

12.2. Таймер тактов

JN513x содержит аппаратный таймер, который может использоваться для выработки прерываний, используемых программным обеспечением. Прерывания этого таймера могут использоваться для обработки регулярных событий, таких как обновление часов операционной системы, поскольку интервал их следования считается эталонным. Также могут быть использованы для реализации пауз. Особенности этого таймера: