26.7 Последовательность программирования
- Разрешить работу основного тактового генератора:
Работа основного тактового генератора разрешается установкой поля MOSCEN в регистре CKGR_MOR. В некоторых случаях полезным будет определить время запуска. Это осуществляется записью поля OSCOUNT регистра CKGR_MOR.
После правильной конфигурации регистра, требуется ожидать установки флага MOSCS регистра PMC_SR. Для этого можно опрашивать статусный регистр или ожидать прерывания, если прерывание по MOSCS было разрешено в регистре PMC_IER.
Пример кода:
write_register(CKGR_MOR,0x00000701)
Время запуска = 8 * OSCOUNT / SLCK = 56 Тактов сигнала SLCK.
Таким образом, работа основного тактового генератора разрешена (бит MOSCS установлен) после 56 тактов сигнала SLCK.
- Проверка частоты основного тактового генератора (дополнительно):
В некоторых случаях требуется точное измерение частоты основного тактового генератора. Это измерение может быть произведено через регистр CKGR_MCFR.
После установки флага MAINRDY регистра CKGR_MCFR считывается поле MAINF регистра CKGR_MCFR. Это поле содержит число тактов основного тактового генератора за время соответствующее 16-ти тактам сигнала SLCK.
- Установка ФАПЧ и делителя.
Все параметры настройки ФАПЧ и делителя определяются регистром CKGR_PLLR.
Поле DIV используется для установки делителя. Может быть установлено значение в диапазоне от 0 до 255. Частота входного сигнала делится на значение параметра DIV. По умолчанию значение DIV равно 0, означающее, что делитель выключен.
Поле OUT используется для выбора диапазона частот ФАПЧ канала B.
Поле MUL определяет множитель для ФАПЧ. Этот параметр задается в пределах от 0 до 2047. При значении MUL равном 0 ФАПЧ отключена. При работе ФАПЧ входная частота сигнала умножается на (MUL + 1).
Поле PLLCOUNT определяет число тактов сигнала SLCK до установки LOCK бита регистра PMC_SR после записи регистра CKGR_PLLR.
После записи регистра PMC_PLL требуется ожидать установки LOCK бита регистра PMC_SR. Для этого можно опрашивать статусный регистр или ожидать прерывания, если прерывание по LOCK было разрешено в регистре PMC_IER. Все параметры регистра CKGR_PLLR можно установить одной командой. При изменении любого из параметров, MUL или DIV, LOCK бит сбрасывается, информируя о том, что ФАПЧ еще не готова к работе. При переходе ФАПЧ в нормальный режим LOCK бит снова устанавливается. Использование сигнала на выходе ФАПЧ возможно только после установки этого бита.
Поле USBDIV управляет дополнительным делителем на 1,2 или 4, который формирует синхронизирующий сигнал USB (не относится к AT91SAM7S32).
Пример кода:
write_register(CKGR_PLLR,0x00040805)
При разрешенной работе ФАПЧ и делителя входным тактовым сигналом для ФАПЧ является тактовый сигнал MAINCK. Входной тактовый сигнал ФАПЧ умножается на 5. После записи регистра CKGR_PLLR, LOCK бит будет установлен через 8 тактов сигнала SLCK.
- Выбор главного синхронизирующего сигнала (MCK) и синхронизирующего сигнала процессора (PCK).
Сигналы MCK и PCK управляются через регистр PMC_MCKR.
Поле CSS выбирает источник сигнала для делителя сигнала MCK. По умолчанию источником является низкочастотный тактовый сигнал SLCK.
Поле PRES управляет предварительным делителем частоты сигнала MCK. Возможные значения делителя 1, 2, 4, 16, 32, 64. Частота входного сигнала предделителя делится на значение параметра PRES. По умолчанию параметр PRES равен 1, то есть сигнал MCK эквивалентен низкочастотному тактовому сигналу SLCK.
После записи регистра PMC_MCKR требуется ожидать установки MCKRDY бита регистра PMC_SR. Для этого можно опрашивать статусный регистр или ожидать прерывания, если прерывание по MCKRDY было разрешено в регистре PMC_IER.
Регистр PMC_MCKR не программируется одной командой. Для его установки используется следующая последовательность:
- При записи поля CSS для тактовых сигналов ФАПЧ
- Записать поле PRES в регистр PMC_MCKR.
- Ждать установки MCKRDY бита регистра PMC_SR.
- Записать поле CSS в регистр PMC_MCKR.
- Ждать установки MCKRDY бита регистра PMC_SR.
- При записи поля CSS для сигнала MCK или сигнала SLCK.
- Записать поле CSS в регистр PMC_MCKR.
- Ждать установки MCKRDY бита регистра PMC_SR.
- Записать поле PRES в регистр PMC_MCKR.
- Ждать установки MCKRDY бита регистра PMC_SR.
При изменении одного из параметров, CSS или PRES, бит MCKRDY сбрасывается, что указывает на то, что сигналы MCK и PCK еще не стабильны. Необходимо дождаться установки MCKRDY бита, перед использованием сигналов MCK и PCK.
Примечание: если тактовый сигнал PLLx выбран в качестве основного тактового сигнала MCK, то при его изменении записью в регистр CKGR_PLLR, бит MCKRDY сброшен до тех пор пока работа схемы ФАПЧ не стабилизируется. После стабилизации ФАПЧ устанавливаются бит LOCK и затем бит MCKRDY. До стабилизации работы ФАПЧ, тактовый сигнал MCK автоматически переключается на сигнал MAINCK. Дополнительная информация приведена в пункте 26.8.2 "Временные диаграммы переключения тактовых сигналов" на стр. 185
Пример кода:
write_register(PMC_MCKR,0x00000001)
wait (MCKRDY=1)
write_register(PMC_MCKR,0x00000011)
wait (MCKRDY=1) |
Сигнал MCK - основной тактовый сигнал, деленный на 16.
Сигнал PCK - основной тактовый сигнал.
- Выбор программно управляемых тактовых сигналов
Параметры программно управляемых тактовых сигналов задаются регистрами PMC_SCER, PMC_SCDR и PMC_SCSR.
Эти тактовые сигналы могут быть разрешены и/или запрещены через регистры PMC_SCER и PMC_SCDR. В зависимости от используемого микроконтроллера, может использоваться 3 тактовых сигнала. Информация о статусе программно управляемых сигналов считывается из статусного регистра PMC_SCSR. По умолчанию работа всех программно управляемых тактовых сигналов запрещена.
Регистры PMC_PCKx конфигурируют работу программно управляемых тактовых сигналов.
Поле CSS задает источник для делителя программно управляемых тактовых сигналов. Возможны три источника: сигнал MAINCK, сигнал SLCK, сигнал PLLCK. По умолчанию выбран сигнал SLCK.
Поле PRESS управляет предварительным делителем программно управляемых тактовых сигналов. Возможные значения делителя 1, 2, 4, 16, 32, 64. Частота входного сигнала предделителя делится на значение параметра PRES. По умолчанию параметр PRES равен 1, то есть программно управляемые тактовые сигналы эквивалентны низкочастотному тактовому сигналу SLCK.
После записи регистра PMC_PCKx, соответствующий управляемый тактовый сигнал должен быть разрешен, то есть требуется ожидать установки PCKRDYx бита регистра PMC_SR. Для этого можно опрашивать статусный регистр или ожидать прерывания, если прерывание по PCKRDYx было разрешено в регистре PMC_IER. Все параметры PCKRDYx можно установить одной командой.
Перед изменением любого параметра, CSS или PRES, соответствующий управляемый тактовый сигнал должен быть запрещен. После этого необходимо разрешить работу управляемого тактового сигнала и ожидать установки PCKRDYx бита.
Пример кода:
write_register(PMC_PCK0,0x00000015)
Программно управляемый тактовый сигнал 0 формируется из сигнала MAINCK, деленного на 32.
- Разрешение работы тактовых сигналов периферийных модулей
После выполнения предыдущих пунктов, можно разрешить и/или запретить работу тактовых сигналов периферийных модулей через регистры PMC_PCER и PMC_PCDR.
В зависимости от используемого микроконтроллера, может использоваться 12 (10 для AT91SAM7S32) периферийных тактовых сигналов. Регистр PMC_PCSR дает информацию по всем разрешенным периферийным тактовым сигналам.
Примечание: Каждый разрешенный периферийный тактовый сигнал подключается к сигналу MCK.
Пример кода:
write_register(PMC_PCER,0x00000110)
Разрешены периферийные тактовые сигналы 4 и 8.
write_register(PMC_PCDR,0x00000010)
Запрещен периферийный тактовый сигнал 4. |
|