/
Author: Редькин П.П.
Tags: электроника электротехника электричество схемотехника руководство пользователя микроконтроллеры
ISBN: 978-5-94836-217-5
Year: 2010
Text
П. Редькин
Микроконтроллеры
Atmel
архитектуры AVR32
семейства AT32UC3
Руководство пользователя
ARGUSS®FT
Редькин П.П.
Микроконтроллеры Atmel архитектуры AVR32 семейства AT32UC3
Руководство пользователя
Москва:
Техносфера, 2010. - 784 с. ISBN 978-5-94836-217-5
Предлагаемая книга является законченным справочным пособием и
руководством по применению 32-разрядных микроконтроллеров
архитектуры AVR32 фирмы Atmel семейства AT32UC3. Книга содержит
подробную справочную информацию о большинстве выпускаемых в
настоящее время устройств этого семейства. Помимо сведений
справочного характера книга включает обширную информацию по
программным инструментальным средствам разработки приложений для
AT32UC3: IDE IAR Embedded Workbench for AVR32 от IAR, IDE
AVR3 2 Studio от Atmel и аппаратным инструментальным средствам от
Atmel. В книге также приводятся описания свободно распространяемых
производителем примеров приложений для AT32UC3, протестированных
автором.
Изложенная в книге информация охватывает все этапы проектирования
приложений на основе AT32UC3, что позволяет в короткие сроки
овладеть навыками работы с этими микроконтроллерами даже
начинающим разработчикам.
К книге прилагается DVD-диск, содержащий бесплатные демоверсии
описанного в ней инструментального программного обеспечения,
исходные коды описанных проектов, оригинальную справочную
информацию производителя и другие информационные и справочные
материалы.
Книга предназначена для специалистов в области разработки ,
электронной аппаратуры, студентов технических вузов и других лиц,
интересующихся электроникой. Необходимый уровень подготовки
читателей предполагает знание основ цифровой и аналоговой
схемотехники, а также основ программирования на языке С.
© 2009, ООО «АРГУССОФТ Компани»
© 2010, ЗАО «РИЦ «Техносфера»,
оригинал-макет, оформление
ISBN 978-5-94836-217-5
Содержание
Предисловие автора 21
ЧАСТЬ 1. СПРАВОЧНЫЕ ДАННЫЕ МК СЕМЕЙСТВА AVR32
Глава 1. Номенклатура и типовые характеристики устройств
семейства AVR32 26
Глава 2. Архитектура и программная модель AVR32 36
2.1. Общее описание архитектуры 36
2.2. Центральный процессор семейства AT32UC3 37
2.3. Конвейер AT32UC3 37
2.4. Совместимость архитектур AVR32UC и AVR32A 39
2.5. Защита памяти 41
2.5.1. Регистровый интерфейс MPU 42
2.5.2. Обработка собственных исключений MPU 45
2.6. Программная модель 45
2.6.1. Конфигурация регистрового файла 45
2.6.2. Регистр статуса 45
2.7. Состояния процессора 49
2.7.1. Нормальное RISC-состояние 49
2.7.2. Состояние отладки 50
2.8. Системные регистры 50
2.9. Регистры конфигурации 55
2.10. Исключения и прерывания 55
2.10.1. Системный стек 58
2.10.2. Запросы прерываний и исключений 58
2.10.3. Вызовы режима супервизора 61
2.10.4. Запросы отладки 61
2.10.5. Точки входа в обработчики событий 61
2.10.6. Нереализованные команды 62
Глава 3. Организация памяти 63
3.1. Встроенная память МК 63
3.2. Карта физической памяти 63
3.3. Интерфейсы памяти 64
Глава 4. Система команд AVR32 69
4.1. Команды арифметико-логического устройства АЛУ 69
4.2. Команды умножения 69
4.3. Команды умножения с накоплением МАС 74
4.4. Команды умножения с накоплением повышенной разрядности
Ми1Мас64 75
4.5. Команды деления 76
4.6. Команды насыщения 76
4.7. Команды загрузки и сохранения 76
4.8. Команды множественного доступа к данным в памяти 82
4.9. Команды переходов 83
4.10. Команды вызова (call) 83
4.11. Команды возврата из состояния исключения 84
4.12. Команда перестановки (swap) 84
4.13. Команды системных регистров 85
4.14. Команды управления системой 85
4.15. Команды «чтение-модификация-запись» (RMW) 86
Глава 5. Цоколевка корпусов и описание выводов МК 87
Глава 6. Организация электропитания 97
Глава 7. Fuses-установки 99
7.1. Flash Fuse-регистр общего назначения (FGPFR) 99
Глава 8. Периферийные устройства 101
8.1. Адресное пространство периферии 101
8.2. Отображение GPIO на локальную шину ЦПУ 102
8.3. Карта сигналов запросов прерываний 104
8.4. Подключение сигналов синхронизации 107
8.4.1. Таймеры/счетчики 107
8.4.2. USART 107
8.4.3. SPI 108
8.4.4. Порт связи OCD AUX 108
8.4.5. Сигналы установления связи DMA 109
8.4.6. Линии GPIO AT32UC3B с сильноточными драйверами НО
8.4.7. Мультиплексирование периферии на линии GPIO ПО
8.4.8. Выводы генераторов 118
Глава 9. Менеджер питания (РМ) 119
9.1. Основные особенности РМ 119
9.2. Функциональное описание 121
9.2.1. Медленный синхросигнал 121
9.2.2. Генераторы 0 и 1 122
9.2.3. Низкочастотный генератор 32 кГц 123
9.2.4. Системы ФАПЧ 123
9.2.5. Сигналы синхронизации 124
9.2.6. Маскирование периферийной синхронизации 126
9.2.7. Подрежимы «спящего» режима 127
9.2.8. Универсальные синхросигналы 129
9.2.9. Деление частоты синхросигналов РВ 131
9.2.10. Операции отладки 131
9.2.11. Контроллер сброса 132
9.2.12. Регистры калибровки 133
9.3. Пользовательский интерфейс РМ 134
9.3.1. Регистр управления задающей частотой MCCTRL 136
9.3.2. Регистр выбора синхросигнала CKSEL 137
9.3.3. Регистры масок синхросигналов CPUMASK, HSBMASK,
PBAMASK, PBBMASK 138
9.3.4. Регистры управления ФАПЧО, ФАПЧ1 PLLO, PLL1 139
9.3.5. Регистры управления генератором 0/1 OSCCTRLO/1 141
9.3.6. Регистр управления генератором частоты 32 кГц
OSCCTRL32 142
9.3.7. Регистры разрешения/запрещения/маски/состояния/сброса
прерываний от PM IER/IDR/IMR/ISR/ICR 143
9.3.8. Регистр состояния питания и генераторов POSCSR 145
9.3.9. Регистр управления универсальными синхросигналами
GCCTRL 146
9.3.10. Регистр причины сброса RCAUSE 147
9.3.11. Регистр управления модулем BOD BOD 148
9.3.12. Регистр калибровки RC-генератора RCCR 149
9.3.13. Регистр калибровки ИОН BGCR 150
9.3.14. Регистр калибровки линейного стабилизатора VREGCR 151
9.3.15. Регистр общего назначения
с низким энергопотреблением GPLP 151
Глава 10. Счетчик реального времени (RTC) 153
10.1. Основные особенности 153
10.2. Функциональное описание 153
10.3. Пользовательский интерфейс 155
10.3.1. Регистр управления RTC CTRL 155
10.3.2. Регистр значения счетчика RTC VAL 156
10.3.3. Регистр значения «вершины» RTC ТОР 157
10.3.4. Регистры разрешения/запрещения/маски/статуса/сброса
прерываний от RTC IER/IDR/IMR/ISR/ICR 158
Глава 11. Сторожевой таймер (WDT) 159
11.1. Основные особенности и функциональное описание 159
11.2. Пользовательский интерфейс 160
11.2.1. Регистр управления WDT CTRL 160
11.2.2. Регистр сброса WDT CLR 161
Глава 12. Контроллер прерываний (INTC) 162
12.1. Основные особенности и функциональное описание 162
12.1.1. Операции INTC 162
12.1.2. Немаскируемые прерывания 164
12.1.3. Реакция ЦПУ 164
12.1.4. Сброс запроса прерывания 165
12.2. Пользовательский интерфейс 165
12.2.1. Регистры запроса прерывания 0—63 IRR0—IRR63 166
12.2.2. Регистры приоритета прерывания 0—63 IPR 0—IPR 63 166
12.2.3. Регистры причины прерывания 0—3 ICR 0—ICR 3 167
Глава 13. Контроллер внешних прерываний (EIM) 169
13.1. Основные особенности 169
13.2. Функциональное описание 170
13.2.1. Внешние прерывания 170
13.2.2. Немаскируемое прерывание NMI 172
13.2.3. Поддержка сканирования клавиатуры 172
13.3. Пользовательский интерфейс 173
13.3.1. Регистры разрешения/запрещения/маски/состояния/сброса
прерываний от EIM EIM_IER/EIM_IDR/EIM_IMR/
EIMJSR/EIMJCR 174
13.3.2. Регистры режимов/перепадов/уровней/фильтров/
асинхронности внешних прерываний EIM_MODE/
EIM_EDGE/EIM_LEVEL/EIM_FILTER/EIM_ASYNC 174
13.3.3. Регистр тестирования внешних прерываний EIM_TEST 175
13.3.4. Регистр сканирования внешних прерываний EIM_SCAN 176
13.3.5. Регистры разрешения/запрещения/управления внешних
прерываний EIM_EN/EIM_DIS/EIM_CTRL 177
Глава 14. Контроллер Flash-памяти (FLASHC) 179
14.1. Основные особенности 179
14.2. Функциональное описание 180
14.2.1. Операции чтения Flash-памяти 181
14.2.2. Быстрое чтение страницы 182
14.2.3. Операция записи в буфер страницы 182
14.3. Команды Flash-памяти 183
14.3.1. Операция записи/стирания страницы 184
14.3.2. Операция полного стирания 185
14.3.3. Биты блокировки областей 186
14.3.4. Биты общего назначения fuses-установок 186
14.3.5. Бит защиты Flash-памяти 188
14.4. Пользовательский интерфейс 189
14.4.1. Регистр управления Flash-памяти FCR 189
14.4.2. Регистр команды Flash-памяти FCMD 190
14.4.3. Регистр состояния Flash-памяти FSR 192
14.4.4. Старший регистр Flash-памяти fuses-установок общего
назначения FGPFRHI 194
14.4.5. Младший регистр Flash-памяти fuses-установок общего
назначения FGPFRLO 194
Глава 15. Шинная матрица HSB (HMATRIX) 196
15.1. Основные особенности 196
15.2. Функциональное описание 197
15.3. Управление памятью 197
15.4. Механизм предоставления шины 197
15.5. Арбитраж 198
15.5.1. Правила задания арбитража 198
15.5.2. Циклический арбитраж 199
15.5.3. Арбитраж с фиксированным приоритетом 200
15.6. Пользовательский интерфейс 201
15.6.1. Регистры конфигурирования ведущего устройства
MCFG0-MCFG15 205
15.6.2. Регистры конфигурирования ведомого устройства
SCFG0-SCFG15 206
15.6.3. Регистры приоритета А ведомого устройства
PRAS0-PRAS15 207
15.6.4. Регистры приоритета В ведомого устройства
PRBS0-PRBS15 208
15.6.5. Главный регистр управления переотображением MRCR 208
15.6.6. Регистры специальных функций SFR0—SFR15 209
Глава 16. Интерфейс внешней шины (EBI) 210
16.1. Основные особенности и общее описание 210
16.2. Подключение внешней памяти 212
16.3. Функциональное описание 214
Глава 17. Периферийный контроллер DMA (PDCA) 217
17.1. Основные особенности и функциональное описание 217
17.2. Пользовательский интерфейс 219
17.2.1. Регистр адреса памяти MAR 220
17.2.2. Регистр выбора периферии PSR 221
17.2.3. Регистр счетчика передачи TCR 222
17.2.4. Регистр перезагрузки адреса памяти MARR 222
17.2.5. Регистр перезагрузки счетчика передачи TCRR 223
17.2.6. Регистр управления PDCA CR 223
17.2.7. Регистр режима PDCA MR 224
17.2.8. Регистр статуса PDCA SR 225
17.2.9. Регистры разрешения/запрещения/маски/статуса
прерываний от PDCA IER/IDR/IMR/ISR 225
Глава 18. Контроллер ввода-вывода общего назначения (GPIO) 228
18.1. Основные особенности 228
18.2. Функциональное описание 229
18.3. Пользовательский интерфейс 233
18.4. Примеры программирования GPIO 240
Глава 19. Последовательный периферийный интерфейс (SPI) 242
19.1. Основные особенности и общее описание 242
19.2. Функциональное описание 244
19.2.1. Режимы работы интерфейса SPI 245
19.2.2. Передача данных 245
19.2.3. Операции режима ведущего 246
19.2.4. Операции режима ведомого 253
19.3. Пользовательский интерфейс 254
19.3.1. Регистр управления SPI CR 255
19.3.2. Регистр режима SPI MR 256
19.3.3. Регистр данных приема SPI RDR 258
19.3.4. Регистр данных передачи SPI TDR 258
19.3.5. Регистр статуса SPI SR 259
19.3.6. Регистры разрешения/запрещения/маски прерываний
от SPI IER/ IDR/IMR 261
19.3.7. Регистры выбора микросхемы 0—3 SPI CSRO—CSR3 262
Глава 20. Двухпроводный интерфейс (TWI) 266
20.1. Основные особенности и общее описание 266
20.2. Функциональное описание 269
20.2.1. Режимы ведущих 270
20.2.1.1. Режим ведущего передатчика 270
20.2.1.2. Режим ведущего приемника 271
20.2.1.3. Адрес ведомого устройства 273
20.2.1.4. Использование PDCA 274
20.2.2. Режимы множественных ведущих (multi-master) 275
20.2.3. Режимы ведомых 281
20.2.3.1. Прием данных 281
20.2.3.2. Передача данных 284
20.2.3.3. Коррекция синхросигнала 285
20.2.3.4. Смена направления передачи после повторного старта 286
20.3. Пользовательский интерфейс 287
20.3.1. Регистр управления TWI CR 288
20.3.2. Регистр режима ведущего TWI MMR 290
20.3.3. Регистр режима ведомого TWI SMR 291
20.3.4. Регистр внутреннего адреса TWI IADR 291
20.3.5. Регистр генератора формирования синхросигнала
TWI CWGR 292
20.3.6. Регистр состояния TWI SR 293
20.3.7. Регистры разрешения/запрещения/маски прерываний
от TWI IER/IDR/IMR 296
20.3.10. Регистр временного хранения информации приема
TWI RHR 298
20.3.11. Регистр временного хранения информации передачи
TWI THR 298
Глава 21. Синхронный последовательный контроллер (SSC) 300
21.1. Основные особенности и общее описание 300
21.2. Функциональное описание 301
21.2.1. Управление синхронизацией 303
21.2.2. Управление синхросигналом передатчика 304
21.2.3. Управление синхросигналом приемника 305
21.2.5. Ограничения для синхросигналов 306
21.2.6. Операции передатчика 306
21.2.7. Операции приемника 307
21.2.8. Старт передачи 308
21.2.9. Синхронизация фреймов 309
21.2.9.1. Синхронизация фреймов данных 309
21.2.9.2. Детектирование перепада синхронизации фреймов 310
21.2.10. Режимы функции сравнения при приеме ЗЮ
21.2.11. Формат данных Зц
21.2.12. Режим «шлейфа» 313
21.2.13. Прерывания от SSC 313
21.3. Примеры приложений SSC 313
21.4. Пользовательский интерфейс 314
21.4.1. Регистр управления SSC CR 315
21.4.2. Регистр режима синхронизации SSC CMR 316
21.4.3. Регистр режима синхронизации приема SSC RCMR 317
21.4.4. Регистр режима синхронизации фреймов
приема SSC RFMR 319
21.4.5. Регистр режима синхронизации передачи SSC TCMR 321
21.4.6. Регистр режима синхронизации фреймов передачи SSC
TFMR 323
21.4.7. Регистр временного хранения данных приема SSC RHR 325
21.4.8. Регистр временного хранения данных передачи SSC THR 326
21.4.9. Регистр временного хранения данных синхронизации
приема SSC RSHR 327
21.4.10. Регистр временного хранения данных синхронизации
передачи SSC TSHR 327
21.4.11. Регистр сравнения 0 приема SSC RC0R 328
21.4.12. Регистр сравнения 1 приема SSC RC1R 328
21.4.13. Регистр статуса SSC SR 328
21.4.14. Регистры разрешения/запрещения/маски прерываний
от SSC IER/IDR/IMR 330
Глава 22. Универсальный синхронно-асинхронный приемопередатчик
(USART) 334
22.1. Основные особенности 334
22.1.1. Линии ввода-вывода 336
22.1.2. Управление питанием 337
22.1.3. Прерывания от USART 337
22.2. Функциональное описание 337
22.2.1. Генератор скорости обмена 338
22.2.1.1. Скорость обмена в асинхронном режиме 339
22.2.1.2. Дробная скорость обмена в асинхронном режиме 341
22.2.1.3. Скорость обмена в синхронном режиме или режиме SPI 341
22.2.1.4. Скорость обмена в режиме ISO7816 342
22.2.2. Управление приемником и передатчиком 343
22.2.3. Синхронный и асинхронный режимы 344
22.2.3.1. Операции передатчика 344
22.2.3.2. Кодер Манчестера 345
22.2.3.3. Компенсация «ухода» частоты синхросигнала 347
22.2.3.4. Асинхронный приемник 348
22.2.3.5. Декодер Манчестера 349
22.2.3.6. Радиоинтерфейс как приложение манчестерского
кодирования в USART 351
22.2.3.7. Синхронный приемник 352
22.2.3.8. Операции приемника 353
22.2.3.9. Контроль четности 354
22.2.3.10. Многоточечный режим 355
22.2.3.11. Интервал Timeguard передатчика 355
22.2.3.12. Тайм-аут приемника 356
22.2.3.13. Ошибка синхронизации фреймов 358
22.2.3.14. Обрыв передачи 358
22.2.3.15. Обрыв приема 360
22.2.3.16. Аппаратная процедура установления связи 360
22.2.4. Режим ISO7816 361
22.2.4.1. Протокол Т = 0 362
22.2.4.2. Протокол Т = 1 364
22.2.5. Режим IrDA 364
22.2.5.1. Модуляция IrDA 365
22.2.5.2. Скорость обмена IrDA 365
22.2.5.3. Демодулятор IrDA 366
22.2.6. Режим RS-485 367
22.2.7. Режим модема 368
22.2.8. Режим SPI 369
22.2.8.1. Скорость обмена 369
22.2.8.2. Передача данных 370
22.2.8.3. Передача символа 372
22.2.8.4. Прием символа 373
22.2.8.5. Тайм-аут приемника 373
22.2.9. Режимы тестирования 373
22.2.9.1. Нормальный режим и режим автоматического «эха» 373
22.2.9.2. Режим местного «шлейфа» и режим удаленного
«шлейфа» 374
22.3. Пользовательский интерфейс 375
22.3.1. Регистр управленйя USART CR 376
22.3.2. Регистр режима USART MR 378
22.3.3. Регистры разрешения/запрещения/маски прерываний
от USART IER/IDR/IMR 382
22.3.4. Регистр состояния канала USART CSR 384
22.3.5. Регистр временного хранения данных приема
USART RHR 387
22.3.6. Регистр временного хранения данных передачи
USART THR 387
22.3.7. Регистр генератора скорости обмена через USART BRGR 388
22.3.8. Регистр тайм-аута приемника USART RTOR 389
22.3.9. Регистр timeguard передатчика USART TTGR 390
22.3.10. Регистр отношения FI DI USART FIDI 390
22.3.11. Регистр количества ошибок USART NER 391
22.3.12. Регистр фильтра IrDA USART IF 391
22.3.13. Регистр манчестерских кодера и декодера USART MAN 392
22.3.14. Регистр версии USART US_VERSION 393
Глава 23. Контроллер статической памяти (SMC) 395
23.1. Основные особенности 395
23.2. Примеры применения 396
Глава 24. Контроллер SDRAM (SDRAMC) 403
24.1. Основные особенности 403
24.2. Примеры применения 404
Глава 25. Интерфейс Ethernet МАС (МАСВ) 408
25.1. Основные особенности 408
25.2. Функциональное описание 409
25.2.1. Интерфейс памяти 410
25.2.1.1. Буфер FIFO 410
25.2.1.2. Приемные буферы 411
25.2.1.3. Передающий буфер 414
25.2.2. Передающий блок 416
25.2.3. Поддержка фрейма паузы 417
25.2.4. Приемный блок 419
25.2.5. Блок проверки адреса 419
25.2.6. Широковещательный адрес 421
25.2.7. Хеш-адресация 421
25.2.8. Совпадение с внешним адресом 421
25.2.9. Режим копирования всех фреймов (Promiscuous) 422
25.2.10. Проверка типа идентификатора 422
25.2.11. Поддержка VLAN 422
25.2.12. Обслуживание PHY 423
25.2.13. Независимый от среды интерфейс 423
25.3. Программирование интерфейса МАСВ 424
25.3.1. Инициализация 424
25.3.1.1. Список приемных буферов 425
25.3.1.2. Список передающих буферов 425
25.3.1.3. Совпадение адреса 426
25.3.1.4. Прерывания 426
25.3.1.5. Передача фреймов 426
25.3.1.6. Прием фреймов 427
25.4. Пользовательский интерфейс 428
25.4.1. Сетевой регистр команд МАСВ NCR 430
25.4.2. Сетевой регистр конфигурации МАСВ NCFGR 432
25.4.3. Сетевой регистр состояния МАСВ NSR 434
25.4.4. Регистр состояния передачи МАСВ TSR 434
25.4.5. Регистр указателя очереди приемных буферов
МАСВ RBQP 435
25.4.6. Регистр указателя очереди передающих буферов
МАСВ TBQP 436
25.4.7. Регистр состояния приема МАСВ RSR 437
25.4.8. Регистры состояния/разрешения/запрещения/маски
прерываний МАСВ ISR/IER/IDR/IMR 438
25.4.9. Регистр обслуживания PHY МАСВ MAN 441
25.4.10. Регистр времени паузы МАСВ PTR 442
25.4.11. Основание/вершина хэш-регистра МАСВ HRB/HRT 442
25.4.12. Регистр основания заданного уникального
адреса х МАСВ SAxB, где (х = 1, 2, 3, 4) 443
25.4.13. Регистр вершины заданного уникального
адреса х МАСВ SAxT, где (х = 1, 2, 3, 4) 443
25.4.14. Регистр проверки типа идентификатора (ID) МАСВ TID 444
25.4.15. Регистр передачи кванта паузы МАСВ TPQ 445
25.4.16. Пользовательский регистр ввода-вывода МАСВ USRIO 445
25.4.17. Регистр «след LAN» МАСВ WOL 446
25.4.18. Статистические регистры МАСВ 447
25.4.18.1. Регистр принятых фреймов паузы МАСВ PFR 447
25.4.18.2. Регистр переданных ОК фреймов МАСВ FTO 447
25.4.18.3. Регистр единичных коллизий фреймов МАСВ SCF 448
25.4.18.4. Регистр множественных коллизий фреймов
МАСВ MCF 449
25.4.18.5. Регистр принятых ОК фреймов МАСВ FRO 449
25.8.18.6. Регистр ошибок последовательности
проверки фреймов МАСВ FCSE 450
25.4.18.7. Регистр ошибок установок МАСВ ALE 450
25.4.18.8. Регистр задержанных переданных фреймов МАСВ DTF 451
25.4.18.9. Регистр последних коллизий МАСВ LCOL 452
25.4.18.10. Регистр чрезмерных коллизий МАСВ EXCOL 452
25.4.18.11. Регистр ошибок недогрузки передачи МАСВ TUND 453
25.4.18.12. Регистр ошибок опроса несущей МАСВ CSE 453
25.4.18.13. Регистр ошибок ресурса приема МАСВ RRE 454
25.4.18.14. Регистр ошибок переполнения приема МАСВ ROVR 454
25.4.18.15. Регистр ошибок приема символа МАСВ RSE 455
25.4.18.16. Регистр ошибок чрезмерной длины МАСВ ELE 456
25.4.18.17. Регистр приема бессмысленных данных МАСВ RJA 456
25.4.18.18. Регистр уменьшенных фреймов МАСВ USF 457
25.4.18.19. Регистр ошибок тестирования SQE МАСВ STE 457
25.4.18.20. Регистр несовпадения поля длины при приеме
МАСВ RLE 458
25.4.18.21. Регистр переданных фреймов паузы МАСВ TPF 459
Глава 26. Интерфейс USB OTG (USBB) 460
26.1. Основные особенности 460
26.2. Функциональное описание 464
26.2.1. Общие операции USB 464
26.2.1.1. Прерывания от USB 465
26.2.1.2. Режимы питания USB 466
26.2.1.3. Управление скоростью USB 467
26.2.1.4. Управление DPRAM 468
26.2.1.5. Поведение кнопочного интерфейса 470
26.2.1.6. Настройка таймеров OTG 471
26.2.1.6. Обнаружение подключения внешнего устройства 471
26.2.1.7. Обнаружение идентификатора (ID) 472
26.2.2. Операции USB-устройства 473
26.2.2.1. Включение питания и сброс 473
26.2.2.2. Сброс USB 474
26.2.2.3. Сброс конечной точки 474
26.2.2.4. Активация конечной точки 475
26.2.2.5. Установка адреса 475
26.2.2.6. Приостановка и «пробуждение» 476
26.2.2.7. Удаленное «пробуждение» 476
26.2.2.8. Запрос останова (STALL) 477
26.2.2.9. Особенности конечных точек управления 477
26.2.2.10. Управление конечными точками управления 477
26.2.2.11. Управление конечными точками IN 479
26.2.2.12. Управление конечными точками OUT 481
26.2.2.13. Прерывания USB-устройства 483
26.2.3. Операции USB-хоста 484
26.2.3.1. Описание каналов 484
26.2.3.2. Включение питания и сброс 484
26.2.3.3. Обнаружение хостом подключенного устройства 485
26.2.3.4. Сброс шины USB 485
26.2.3.5. Сброс канала 486
26.2.3.6. Активация канала 486
26.2.3.7. Установка адреса 487
26.2.3.8. Удаленное «пробуждение» 487
26.2.3.9. Управление каналами управления 488
26.2.3.10. Управление каналами IN 488
26.2.3.11. Управление каналами OUT 489
26.2.3.12. Ошибка CRC 490
26.2.3.13. Прерывания USB-хоста 491
26.2.4. Операции DMA USB 492
26.3. Пользовательский интерфейс 492
26.3.1. Генеральный регистр управления USB USBCON 504
26.3.2. Генеральный регистр статуса USB USBSTA 507
26.3.3. Генеральный регистр сброса состояния
USB USBSTACLR 509
26.3.4. Генеральный регистр установки состояния USB
USBSTASET 511
26.3.5. Регистр версии IP USB UVERS 512
26.3.6. Регистр особенностей IP USB UFEATURES 513
26.3.7. Регистр размера адреса РВ IP USB UADDRSIZE 515
26.3.8. Регистр 1 имени IP USB UNAME1 516
26.3.9. Регистр 2 имени IP USB UNAME2 516
26.3.10. Регистр состояния конечного автомата USB USBFSM 517
26.3.11. Регистры USB-устройства 518
26.3.11.1. Генеральный регистр управления устройством
USB UDCON 518
26.3.11.2. Регистр глобальных прерываний устройства
USB UDINT 519
26.3.11.3. Регистр сброса глобальных прерываний
устройства USB UDINTCLR 521
26.3.11.4. Регистр установки глобальных прерываний
устройства USB UDINTSET 522
26.3.11.5. Регистр разрешения глобальных прерываний
устройства USB UDINTE 523
26.3.11.6. Регистр сброса разрешения глобальных прерываний
устройства USB UDINTECLR 524
26.3.11.7. Регистр установки разрешения глобальных
прерываний устройства USB UDINTESET 526
26.3.11.8. Регистр количества фреймов устройства
USB UDFNUM 527
26.3.11.9. Регистр разрешения/сброса конечной точки
USB UERST 528
26.3.11.10. Регистр конфигурации конечной точки
X USB UECFGX, где X = [0... 6] 529
26.3.11.11. Регистр состояния конечной точки
X USB UESTAX, где X = [0... 6] 530
26.3.11.12. Регистр сброса состояния конечной точки
X USB UESTAXCLR, где X = [0... 6] 535
26.3.11.13. Регистр установки состояния конечной точки
X USB UESTAXSET, где X = [0... 6] 537
26.3.11.14. Регистр управления конечной точки
X USB UECONX, где X = [0... 6] 539
26.3.11.15. Регистр управления сбросом конечной точки
X USB UECONXCLR, где X = [0... 6] 542
26.3.11.16. Регистр управления установкой конечной точки
X USB UECONXSET, где X = [0... 6] 543
26.3.11.17. Регистр адреса следующего дескриптора канала
X DMA устройства USB UDDMAX_NEXTDESC,
где X = [0... 6] 545
26.3.11.18. Регистр адреса HSB канала X DMA устройства
USB UDDMAX_ADDR, где X = [0... 6] 546
26.3.11.19. Регистр управления канала X DMA устройства
USB UDDMAX_CONTROL, где X = [0... 6] 547
26.3.11.20. Регистр состояния канала X DMA устройства
USB UDDMAX_STATUS, где X = [0... 6] 548
26.3.12. Регистры USB-хоста 550
26.3.12.1. Генеральный регистр управления хоста USB UHCON 550
26.3.12.2. Глобальный регистр прерываний хоста USB UHINT 550
26.3.12.3. Глобальный регистр сброса прерываний хоста
USB UHINTCLR 552
26.3.12.4. Глобальный регистр установки прерываний хоста
USB UHINTSET 553
26.3.12.5. Глобальный регистр разрешения прерываний хоста
USB UHINTE 554
26.3.12.6. Глобальный регистр сброса разрешения прерываний
хоста USB UHINTECLR 556
26.3.12.7. Глобальный регистр установки разрешения
прерываний хоста USB UHINTESET 557
26.3.12.8. Регистр количества фреймов хоста USB
UHINTESET 559
26.3.12.9. Регистр адреса 1 хоста USB UHADDR1 559
26.3.12.10. Регистр адреса 2 хоста USB UHADDR2 560
26.3.12.11. Регистр включения/сброса канала USB UPRST 561
26.3.12.12. Регистр конфигурации канала X USB UPCFGX,
где X = [0... 6] 561
26.3.13.12. Регистр статуса канала X USB UPSTAX,
где X = [0... 6] 563
26.3.12.14. Регистр сброса состояния канала X USB
UPSTAXCLR, где X = [0... 6] 567
26.3.12.15. Регистр установки состояния канала X USB
UPSTAXSET, где X = [0... 6] 568
26.3.12.16. Регистр управления каналом X USB UPCONX,
где X = [0... 6] 570
26.3.12.17. Регистр управления сбросом канала X USB
UPCONXCLR, где X = [0... 6] 572
26.3.12.18. Регистр управления установкой канала X USB
UPCONXSET, где X = [0... 6] 574
26.3.12.19. Регистр запроса IN канала X USB UPINRQX,
где X = [0... 6] 576
26.3.12.20. Регистр ошибки канала X USB UPERRX,
где X = [0... 6] 577
26.3.12.21. Регистры, относящиеся к каналу X DMA хоста USB,
где X = [0... 6] 578
26.3.12.22. Регистр данных буфера FIFO канала/конечной
точки X USB USB_FIFOX_DATA, где X = [0... 6] 578
Глава 27. Таймеры/счетчики (ТС) 579
27.1. Основные особенности и общее описание 579
27.2. Функциональное описание 581
27.2.1. 16-разрядный счетчик 581
27.2.2. Выбор синхросигнала 581
27.2.3. Управление синхронизацией 582
27.2.4. Операционные режимы ТС 583
27.2.5. Триггер 584
27.2.6. Операции режима захвата 584
27.2.6.1. Регистры захвата А и В 584
27.2.6.2. Условия срабатывания триггера 585
27.2.7. Операции режима формирования 585
27.2.7.1. Выбор особенностей формирования 586
27.2.7.2. Поведение счетчика при WAVSEL = 00 586
27.2.7.3. Поведение счетчика при WAVSEL = 10 587
27.2.7.4. Поведение счетчика при WAVSEL = 01 588
27.2.7.5. Поведение счетчика при WAVSEL =11 589
27.2.7.6. Условия внешнего события/триггера 590
27.2.7.7. Контроллер выхода 591
27.3. Пользовательский интерфейс 591
27.3.1. Регистр команд блока ТС BCR 592
27.3.2. Регистр режима блока ТС BMR 593
27.3.3. Регистр команд канала ТС CCR 594
27.3.4. Регистр режима канала ТС CMR: режим захвата 594
27.3.5. Регистр режима канала ТС CMR: режим формирования 597
27.3.6. Регистр значения счетчика ТС CV 602
27.3.7. Регистр А ТС RA 602
27.3.8. Регистр В ТС RB 603
27.3.9. Регистр С ТС RC 603
27.3.10. Регистр состояния ТС SR 604
27.3.11. Регистры разрешения/запрещения/маски прерываний
от ТС IER/IDR/IMR 606
Глава 28. Контроллер широтно-импульсной модуляции (PWM) 609
28.1. Основные особенности и общее описание 609
28.2. Функциональное описание 611
28.2.1. Тактовый генератор PWM 611
28.2.2. Канал PWM 612
28.2.3. Свойства последовательностей 613
28.2.4. Операции контроллера PWM 616
28.2.4.1. Инициализация 616
28.2.4.2. Критерии выбора источника синхронизации 616
28.2.4.3. Изменение рабочего цикла или периода 617
28.2.4.4. Прерывания 618
28.3. Пользовательский интерфейс 618
28.3.1. Регистр режима PWM MR 619
28.3.2. Регистры разрешения/запрещения/состояния
PWM ENA/DIS/SR 620
28.3.3. Регистры разрешения/запрещения/маски/состояния
прерываний от PWM IER/IDR/IMR/ISR 621
28.3.4. Регистр режима канала PWM CMRx 621
28.3.5. Регистр рабочего цикла канала PWM CDTYx 623
28.3.6. Регистр периода канала PWM CPRDx 623
28.3.7. Регистр счетчика канала PWM CCNTx 625
28.3.8. Регистр обновления канала PWM CUPDx 625
Глава 29. Аналого-цифровой преобразователь (ADC) 627
29.1. Основные особенности и общее описание 627
29.2. Функциональное описание 629
29.2.1. Аналого-цифровое преобразование 629
29.2.2. Опорное напряжение АЦП 629
29.2.3. Разрешающая способность преобразования 629
29.2.4. Результаты преобразования 630
29.2.5. Триггеры запуска преобразования 631
29.2.7. «Спящий» режим и упорядочение преобразований 632
29.2.8. Временные параметры АЦП 632
29.3. Пользовательский интерфейс 633
29.3.1. Регистр команд ADC ADC CR 634
29.3.2. Регистр режима ADC ADC MR 634
29.3.3. Регистры разрешения/запрещения/состояния канала
ADC ADC_CHER/ ADC_CHDR/ADC_CHSR 636
29.3.4. Регистр состояния ADC ADC_SR 637
29.3.5. Регистр данных последнего преобразования
ADC ADC_LCDR 638
29.3.6. Регистры разрешения/запрещения/маски прерываний
от ADC ADC_IER/ADC_IDR/ADC_IMR 638
29.3.7. Регистр данных канала х ADC ADC_CDRx 640
Глава 30. Аудио ЦАП битового потока (ABDAC) 642
30.1. Основные особенности 642
30.2. Функциональное описание 644
30.2.1. Фильтры выравнивания и интерполяции 645
30.2.2. Сигма-дельта модулятор 645
30.3. Пользовательский интерфейс 645
30.3.1. Регистр данных выборки ABDAC SDR 646
30.3.2. Регистр управления ABDAC CR 647
30.3.3. Регистры маски/разрешения/запрещения/сброса/
состояния прерываний от ABDAC IMR/IER/IDR/
ICR/ISR 647
Глава 31. Система отладки на кристалле 649
31.1. Основные особенности 649
31.2. Функциональное описание 650
31.2.1. Использование JTAG-отладчика 650
31.2.2. Сервисное устройство памяти 651
31.2.3. Использование AUX-отладчика 652
Глава 32. Интерфейс JTAG и граничное сканирование 655
ЧАСТЬ 2. РАЗРАБОТКА ПРИЛОЖЕНИЙ НА БАЗЕ МК АРХИТЕКТУРЫ
AVR32
Глава 33. IDE IAR Embedded Workbench for AVR32 659
33.1. Общее описание 659
33.2. Создание приложений в IAR Embedded Workbench for AVR32 660
33.2.1. Параметры настройки нового проекта 660
33.2.2. Создание окна рабочей области 660
33.2.3. Создание нового проекта , 661
33.2.4. Добавление файлов к проекту 662
33.2.5. Задание опций проекта 663
33.2.6. Компилирование и компоновка приложения 665
33.3. Отладка приложения в режиме симуляции 667
33.3.1. Трассировка при симуляции 670
33.3.2. Проверка корректности доступа к памяти 672
33.3.3. Использование точек останова при симуляции 674
33.3.4. Мониторинг памяти и регистров 678
33.4. Отладка приложений в целевой системе 679
33.4.1. Трассировка при отладке 684
33.4.2. Использование точек останова при отладке 684
33.4.3. Возможные проблемы при отладке 685
Глава 34. IDE AVR32Studio 686
34.1. Общее описание 686
34.2. Пользовательский интерфейс IDE 687
34.2.1. Основные понятия и определения 687
34.2.2. Создание нового проекта 691
34.3. Работа с проектами в IDE 693
34.3.1. Системы формирования проектов 693
34.3.2. Запуск формирования 694
34.3.3. Управление целевой системой 695
34.3.4. Работа с fuses-установками МК 697
34.4. Отладка приложения 699
34.4.1. Конфигурирование запуска 699
34.4.2. Работа с точками трассировки 706
34.4.3. Мониторинг регистров 708
34.4.4. Обозрение трассировки 709
34.5. Аппаратные инструментальные средства 710
34.5.1. Импорт готовых проектов 710
34.5.2. JTAG-адаптеры 713
34.5.3. Отладочные платы 716
Глава 35. Пользовательские проекты на базе AT32UC3 720
35.1. Проекты для EVK1101 721
35.1.1. Ваш первый проект 721
35.1.2. Control Panel 723
35.1.3. Обслуживание акселерометра 724
35.1.4. Обслуживание внешней памяти SPI Dataflash 725
35.1.5. Обслуживание карты памяти SD/MMC 726
35.1.6. Использование встроенного АЦП 727
35.1.7. Использование встроенного интерфейса USB 727
35.1.7.1. Устройство/хост USB Mass Storage 727
35.1.7.2. Устройство/хост USB HID 730
35.1.7.3. Устройство/хост USB CDC 732
35.1.7.4. Устройство/хост USB Audio 736
35.1.8. Использование RTC 737
35.1.9. Использование FLASHC 738
35.1.10. Счет циклов ЦПУ 739
35.1.11. Поддержка файловой системы FAT 740
35.1.11.1. Файловая система FAT с оболочкой Shell 740
35.1.11.2. Файловая система FAT с интерфейсом POSIX 742
35.1.12. Использование PDCA 743
35.1.13. Использование EIM 744
35.1.14. Использование INTC 744
35.1.15. Использование PWM 745
35.1.16. Использование ТС 745
35.1.17. Использование РМ 746
35.1.18. Поддержка FreeRTOS.org 746
35.2. Проекты для EVK1100 748
35.2.1. Поддержка символьного ЖКИ 748
35.2.2. Control Panel как Web-сервер 748
35.2.3. Использование интерфейса Ethernet МАС (МАСВ) 754
35.2.4. Использование аудио ЦАП битового потока (ABDAC) 756
35.2.5. Использование встроенного АЦП 756
ПРИЛОЖЕНИЯ
Электрические характеристики МК подсемейства AT32UC3A 758
Приложение 1. Предельно допустимые параметры AT32UC3A 758
Приложение 2. Характеристики по постоянному току (статические)
AT32UC3A 758
Приложение 3. Характеристики встроенного стабилизатора
AT32UC3A 759
Приложение 4. Аналоговые характеристики AT32UC3A 760
Приложение 5. Характеристики модуля BOD AT32UC3A 760
Приложение 6. Ток потребления AT32UC3A 761
Приложение 7. 762
Приложение 8. Ток потребления периферийных устройств
в активном режиме AT32UC3A 762
Приложение 9. Характеристики сигналов синхронизации
AT32UC3A 763
Приложение 10. Характеристики генератора 32 кГц AT32UC3A 764
Приложение 11. Характеристики задающего генератора AT32UC3A 764
Приложение ^.Характеристики PLL AT32UC3A 765
Приложение 13. Характеристики производительности
АЦП AT32UC3A 765
Приложение 14. Характеристики входа опорного напряжения
АЦП AT32UC3A 766
Приложение ^.Характеристики аналоговых входов AT32UC3A 766
Приложение 16. Характеристики точности и разрешающей
способности АЦП AT32UC3A 766
Приложение 17. 767
Приложение 18. 768
Электрические характеристики МК подсемейства AT32UC3B 769
Приложение 19. Предельно допустимые параметры AT32UC3B 769
Приложение 20. Характеристики по постоянному току (статические)
AT32UC3B 769
Приложение 21. Характеристики встроенного стабилизатора
AT32UC3B 770
Приложение 22.Аналоговые характеристики AT32UC3B 771
Приложение 23. Характеристики модуля BOD AT32UC3B 771
Приложение 24. Ток потребления AT32UC3B 772
Приложение 25. Ток потребления периферийных устройств
в активном режиме AT32UC3B 773
Приложение 26.Характеристики сигналов синхронизации
AT32UC3B 774
Приложение 27. Характеристики генератора 32 кГц AT32UC3B 774
Приложение 28.Характеристики задающего генератора AT32UC3B 775
Приложение 29. Характеристики PLL AT32UC3B 775
Приложение 30. Характеристики производительности АЦП
AT32UC3B 776
Приложение 31. Характеристики входа опорного напряжения АЦП
AT32UC3B 777
Приложение 32. Характеристики аналоговых входов AT32UC3B 777
Приложение 33. Характеристики точности и разрешающей
способности АЦП AT32UC3B 777
Приложение 34. 778
Приложение 35. 779
Приложение 36. 780
Приложение 37. 781
Список литературы 782
Предисловие автора
В настоящее время у разработчиков электронной аппаратуры пользуются
весьма широкой популярностью встраиваемые микроконтроллеры (МК)
с 8-разрядным процессорным ядром с архитектурой AVR производства
корпорации Atmel. Фирма предлагает обширный модельный ряд этих МК,
содержащий несколько подсемейств.
Однако растущие требования к производительности процессорных ядер,
функциональной насыщенности и возможностям периферии, быстродей-
ствию подсистем ввода-вывода, а также снижение стоимости производства
самих МК и, как следствие, их цены все чаще побуждают разработчиков
использовать в своих конечных целевых продуктах МК с 16- и 32-разряд-
ными процессорными ядрами.
В начале 2006 года компания Atmel анонсировала новое 32-разрядное
процессорное ядро с оригинальной архитектурой AVR32 и первый МК на
его основе — АТ32АР7000. В настоящее время на базе ядра AVR32 Atmel
выпускает целое семейство МК. Как утверждается в оригинальной доку-
ментации производителя, эти устройства распространяют архитектуру AVR
на область 32-разрядных приложений.
По оценкам экспертов, МК с ядром AVR32 выигрывает по произво-
дительности и энергопотреблению у большинства устройств конкурентов,
ориентированных на рынок мультимедийных приложений и, в том числе,
у МК с архитектурой ARM. Так, например, алгоритм iDCT (инверсное
дискретное косинусное преобразование) платформа с ядром AVR32 может
выполнять на 35% быстрее, чем ядро ARM11. При выполнении общепри-
знанных тестов на производительность консорциума ЕЕМВС архитектура
AVR32 также демонстрирует ощутимое превосходство не только над архи-
тектурой ARM7, но и над архитектурами ARM9 и ARM 11 [1].
Необходимо отметить, что удельная производительность ядра AVR32 (от-
носительно тактовой часты), выраженная в DMIPS/МГц, при выполнении
программы как из SRAM, так и из Flash-памяти имеет значение, существенно
большее единицы (типичное значение для Flash-памяти — 1,38), в то время
как для ядер ARM7, ARM9 эта величина равна или меньше единицы.
Разработчики AVR32 подчеркивают следующие оригинальные особен-
ности новой архитектуры:
1. Команды обращения к памяти (записи/чтения) могут оперировать со
всеми типами данных: байтами, полусловами, словами и двойными словами.
2. Набор команд оптимален для работы с распространенными алгорит-
мами блочного шифрования Blowfish и Triple-DES.
3. Ядро имеет 7 стадий конвейера (3 стадии в «облегченной» архитек-
туре AT32UC3) и поддерживает одновременное выполнение не связанных
друг с другом операций с изменением их последовательности, задаваемой
программой. Для экономии тактовых циклов предусмотрена функция пе-
ресылки результата текущей операции на предыдущие ступени конвейера
на случай, если следующая команда использует этот результат.
4. Под держиваемые архитектурой операции множественного доступа к дан-
ным позволяют увеличить скорость выполнения программы в четыре раза.
5. Аппаратная функция прогнозирования переходов (ветвлений)
в AVR32 минимизирует потери тактовых циклов при переходах с помощью
команд rjmp, rcall и if (в на боре Java-команд).
6. При разработке системы команд производитель уделял максимальное
внимание плотности результирующего кода при выполнении типичных
операций в мультимедиа-приложениях.
7. В составе системы команд имеются дополнительные команды для
операционных систем (ОС). Особое внимание было уделено обеспечению
максимальной совместимости платформы с ОС Linux, которая может полно-
ценно использовать встроенный блок управления памятью (MMU), а так-
же привилегированный/пользовательский режимы работы ядра AVR32.
8. Гибкая система управления энергопотреблением МК на 80% реали-
зована за счет системы команд процессорного ядра AVR32 и на 20% — на
этапе реализации МК в «железе». Последнее достигается за счет размеще-
ния устройств хранения данных в непосредственной близости к ядру.
На момент написания этой книги все выпускаемые устройства архитек-
туры AVR32 можно было отнести к одному из двух семейств.
1. Базовое семейство АТ32АР (процессорное ядро AVR32A). Представ-
ляют собой весьма привлекательные для разработчиков высокопроизво-
дительные приборы (тактовая частота ЦПУ до 150 МГц) с мощной и раз-
нообразной периферией (интерфейсы видеокамеры, графического ЖКИ,
аудио ЦАП, SD/MMC-карт памяти, графическим сопроцессором, JAVA-
акселератором и т. д.). Однако характерной особенностью этих устройств
является отсутствие встроенной Flash-памяти, что зачастую ограничивает
их применение в наиболее массовых приложениях.
2. Семейство AT32UC3 («облегченное» процессорное ядро AVR32UC, где
аббревиатура UC означает «microcontroller»). Отличительная особенность
этих устройств — наличие встроенной Flash-памяти на кристалле. По этой
причине МК AT32UC3 могут использоваться без какой-либо внешней до-
полнительной «обвязки», т. е. представляют собой полностью самодостаточ-
ные устройства. Однако их максимальная производительность существен-
но ниже, чем у АТ32АР (тактовая частота ЦПУ до 66 МГц). Кроме того,
по сравнению с АТ32АР возможности их процессорного ядра несколько
скромнее, а набор встроенной периферии значительно беднее. Несмотря
на это МК семейства AT32UC3 представляются весьма перспективными
устройствами, безусловно, заслуживающими внимания разработчиков.
Старшие представители МК семейства AT32UC3 обеспечивают произ-
водительность на уровне 80 DMIPS, потребляя в активном режиме ток
менее 40 мА при питании от напряжения 3,3В. Удельная потребляемая
мощность этих устройств составляет 1,65 мВт/DMIPS (0,6 mA/МГц), что,
по заявлению производителя, примерно в четыре раза ниже, чем у анало-
гов, построенных по другой архитектуре [2].
В приведенной ниже таблице показаны значения потребляемого тока
для нескольких сходных по своим возможностям МК различных се-
мейств и производителей при одинаковых или близких внешних условиях.
Как можно видеть из таблицы, разница в энергопотреблении МК AVR32
Таблица. Сравнительные данные по току потребления МК различных производителей
Устройство (производитель) Напряжение питания: ток потребления в активном режиме Напряжение питания: ток потребления в статическом режиме Примечания
AT32UC3A0512/ 1512/0256/1256/ 0128/1128 (Atmel) 3,3В: 37 мА (ЦПУ выполняет программу из Flash-памя- ти, тактовая частота 60 МГц вырабатывается ФАПЧ, все периферийное тактирование активно, встроенный стабилизатор 1,8В включен и нагружен) 3,3В: 25 мкА (ЦПУ находится в статическом режиме, все периферийное тактирование не- активно, встроенный стабилизатор 1,8В включен и нагружен) МК с ядром AVR32. (Информация с сайтов: www.atmel.com, www.avr32.ru)
AT91SAM7X512/ 256/128 (Atmel) 3,3В: 44 мА (ЦПУ выполняет программу из Flash- памяти, тактовая частота 50 МГц, все пери- ферийное тактирование активно, встроен- ный стабилизатор 1,8В включен и нагружен) 3,3В: 26 мкА (ЦПУ находится в статическом режиме, все периферийное тактирование не- активно, встроенный стабилизатор 1,8В включен и нагружен) МК с ядром ARM7. (Информация с сайта: www.atmel.com)
LPC2141/ 2142/2144/2146/ 2148 (NXP) 3,3В: 57 мА (ЦПУ выполняет программу из Flash-памя- ти, тактовая частота 60 МГц, все периферий- ное тактирование неактивно, кроме USB) 3,3В: 40 мкА (ЦПУ находится в статическом режиме, все периферийное тактирование не- активно) МК с ядром ARM7. (Информация с сайта: www.standardics.
LPC2377/2378 (NXP) 3,3В: 92 мА (ЦПУ выполняет программу из Flash- памяти, тактовая частота 72 МГц, все пери- ферийное тактирование активно) 3,3В: 150 мкА (ЦПУ находится в статическом режиме) nxp.com)
TMS470R1B512 (Texas Instruments) 3,6В: 55 мА, 2,05В: 125 мА (ЦПУ выполняет программу из Flash- памяти, тактовая частота 60 МГц, все пери- ферийное тактирование активно) 3,6В: 20 мкА, 2,05В: 2 мА (ЦПУ находится в статическом режиме) МК с ядром ARM7. (Информация с сайта: www.ti.com)
ADuC7128/7129 (Analog Devices) 3,0В: 42 мА (ЦПУ выполняет программу из Flash- памяти, тактовая частота 42 МГц, все пери- ферийное тактирование активно) 3,0В: 300 мкА (ЦПУ находится в статическом режиме) МК с ядром ARM7. (Информация с сайта: www.analog.com)
и конкурирующих МК в активном режиме хотя и не достигает четырех-
кратной величины, но тем не менее весьма значительна.
По утверждению производителя, использование ядра AT32UC3 обеспе-
чивает размер откомпилированного кода на 5—20% меньший, чем размер
откомпилированного кода для ядра с архитектурой ARM, использующего
систему команд Thumb. Для системы команд ARM выигрыш в размере от-
компилированного кода достигает уже 30—50%.
Производитель также объявил, что ядро МК AT32UC3 является первым
ядром в отрасли, в которое интегрирована статическая память (SRAM)
с интерфейсом прямой связи с процессором и однотактным чтением/за-
писью, что позволяет достичь более быстрого исполнения кода, лучшего
циклического детерминизма при меньшем энергопотреблении.
В отношении встроенной периферии AT32UC3 следует заметить, что
часть периферийных модулей МК этого семейства по своей архитектуре
и пользовательскому интерфейсу практически идентична периферийным
модулям МК выпускаемого фирмой Atmel семейства AT91SAM7, широ-
ко известного разработчикам. Это обстоятельство, несомненно, упростит
освоение AT32UC3 специалистами.
Предлагаемая книга посвящена детальному описанию МК семейства
AT32UC3 как наиболее востребованных и актуальных, по мнению автора,
устройств архитектуры AVR32. Написание книги с описанием приборов
семейства АТ32АР планируется автором в перспективе.
В первой части книги содержится подробная справочная информация
по МК семейства AT32UC3. Сюда входят: перечень типовых технических ха-
рактеристик устройств AT32UC3, описание их архитектуры и программной
модели, описание аппаратного построения и интерфейсов всех периферий-
ных модулей AT32UC3, рекомендации производителя по программирова-
нию и применению отдельных узлов МК. Приведенные сведения основаны
на переводе оригинальной документации производителя (datasheet).
Вторая часть содержит информацию по основным аппаратным
и программным инструментальным средствам разработки-отладки-
программирования приложений для AT32UC3: IDE IAR Embedded Work-
bench for AVR32 от фирмы IAR, IDE AVR32Studio от Atmel, JTAG-адаптерам
и отладочным платам от Atmel. Кроме того, эта часть книги содержит опи-
сания свободно распространяемых производителем примеров приложений
для МК AT32UC3. Все эти приложения были протестированы автором.
Важной особенностью книги является то, что она не только содержит
сведения справочного характера, но и охватывает все этапы проектирова-
ния приложений на основе МК AT32UC3, что позволяет в короткие сроки
овладеть навыками работы с этими устройствами даже начинающим раз-
работчикам.
К книге прилагается DVD-диск, содержащий бесплатные демоверсии
описанного в ней инструментального программного обеспечения, ис-
ходные коды свободно распространяемых проектов для AT32UC3, ориги-
нальную справочную информацию производителя и другие информацион-
ные и справочные материалы.
Книга предназначена для специалистов в области разработки электрон-
ной аппаратуры, студентов технических ВУЗов и других лиц, интересую-
щихся электроникой. Необходимый уровень подготовки читателей предпо-
лагает знание основ цифровой и аналоговой схемотехники, а также основ
программирования на языке С.
Автор выражает благодарность за помощь, оказанную при написании
книги, директору представительства компании INELTEK GmbH в России
Николаю Королеву и сотруднику фирмы ARGUSSOFT (официальный дис-
трибьютер корпорации Atmel в России, www.argussoft.ru) Антону Шабыни-
ну за любезно предоставленные инструментальные средства, технические
консультации и информационные материалы.
Материал, изложенный в книге, многократно проверен. Однако, по-
скольку вероятность технических ошибок все равно существует, автор не
может гарантировать абсолютную точность и правильность приводимых
сведений. В связи с этим автор не несет ответственности за возможные
ошибки, связанные с использованием данной книги.
Для обратной связи с читателями у автора имеется электронный почто-
вый ящик pprl@rambler.ru. По этому адресу можно направлять замечания
и предложения по содержанию данной книги.
ЧАСТЬ I
СПРАВОЧНЫЕ ДАННЫЕ
МК СЕМЕЙСТВА AVR32
ГЛАВА I
НОМЕНКЛАТУРА И ТИПОВЫЕ
ХАРАКТЕРИСТИКИ УСТРОЙСТВ
СЕМЕЙСТВА AVR32
Перечень устройств архитектуры AT32UC3 (подсемейства AT32UC3A
и AT32UC3B) приводится в табл. 1.1, 1.2, а устройств архитектуры АТ-
32АР — в табл. 1.3. Часть набора встроенной периферии, одинаковая для
всех устройств AT32UC3A, в табл. 1.1 не указана, а перечислена ниже
в тексте.
Как можно видеть из таблиц, МК подсемейства AT32UC3B предназна-
чены для более простых приложений, а МК подсемейства AT32UC3A — для
более сложных. Следует заметить, что производитель планирует также пер-
спективный выпуск подсемейств AT32UC3C, AT32UC3D и AT32UC3E [2].
Справочные данные по МК подсемейства AT32UC3A, приведенные
ниже, основаны на материалах источников [3, 5].
Устройства подсемейства AT32UC3A имеют следующие типовые харак-
теристики.
Табл. 1.1. Микроконтроллеры семейства AT32UC3A
Устройство Flash SRAM Интерфейс внешней шины Ethernet МАС Корпус
AT32UC3A0512 512к 64к + + 144-выводной LQFP
AT32UC3A1512 512к 64к — + 100-выводной TQFP
AT32UC3A0256 256к 64к + + 144-выводной LQFP
AT32UC3A1256 256к 64к — + 100-выводной TQFP
AT32UC3A0128 128к 32к + + 144-выводной LQFP
AT32UC3A1128 128к 32к — + 100-выводной TQFP
Табл. 1.2. Микроконтроллеры семейства AT32UC3B
Устройство Flash SRAM USART SSC ADC OSC Конфигу- рация USB Корпус
AT32UC3B0256 256к 32к 3 ' + 8 2 Минихост + устрой- ство 64-вы- водной TQFP/QFN
AT32UC3B1256 256к 32к 2 — 6 1 Устройство 48-вы- водной TQFP/QFN
AT32UC3B0128 128к 32к 3 + 8 2 Минихост + устрой- ство 64-вы- водной TQFP/QFN
AT32UC3B1128 128к 32к 2 — 6 1 Устройство 48-вы- водной TQFP/QFN
AT32UC3B064 64к 16к 3 + 8 2 Минихост + устрой- ство 64-вы- водной TQFP/QFN
AT32UC3B164 64к 16к 2 — 6 1 Устройство 48-вы- водной TQFP/QFN
• Высокоэффективное низкопотребляющее 32-разрядное процессор-
ное ядро с оригинальной архитектурой AVR32 со следующими осо-
бенностями:
- компактная система команд RISC, выполняющихся за один так-
товый цикл, включая команды DSP;
- команды «чтение-модификация-запись» и команды манипуля-
ций с битами;
- тактовая частота до 66 МГц при удельной производительности
1,38 DMIPS/МГц;
- производительность 83 DMIPS при выполнении программы из
Flash-памяти с тактовой частотой 66 МГц (1 цикл ожидания);
- производительность 45 DMIPS при выполнении программы из
Flash-памяти с тактовой частотой 33 МГц (0 циклов ожидания);
- модуль защиты памяти (MPU).
• Мультииерархическая шинная система со следующими особенно-
стями:
- высокоэффективный обмен данными по отдельным шинам для
повышения производительности;
- 15 каналов периферийного DMA для автоматической передачи
данных.
• Встроенная высокоскоростная Flash-память со следующими осо-
бенностями:
- объем от 512к до 128к;
- доступ за один тактовый цикл на тактовой частоте до 30 МГц;
Табл. 1.3. Микроконтроллеры семейства АТ32АР7
Устройство SD/ ММС EBI (SRAM/ SDRAM) USB Ether- net Кон- троллер ЖКИ Интер- фейс видеока- меры Аудио (I2S, АС97) Корпус
АТ32АР7000 + + + 2 + + + 256-выв. CTBGA
АТ32АР7001 + + + — — + + 208-выв. VQFP
АТ32АР7002 + + + — + + + 196-выв. CTBGA
- буфер выборки с упреждением для оптимизация выполнения ко-
манд на максимальной тактовой частоте;
- время программирования страницы — 4 мс, а время стирания
всего кристалла — 8 мс;
- 100000 циклов записи, 15-летний срок сохранности данных;
- ключи защиты памяти и задаваемые пользователем области кон-
фигурации.
Встроенная высокоскоростная память SRAM с доступом за один
тактовый цикл на максимальной тактовой частоте со следующими
особенностями:
- объем от 64к до 32к.
Интерфейс внешней памяти (для устройств AT32UC3A0) со следую-
щими особенностями:
- SDRAM/SRAM-совместимая шина памяти (16-разрядные шины
данных и 24-разрядная шина адресов).
Контроллер прерываний со следующими особенностями:
- автоматически векторизуемые прерывания с малым временем
ожидания и программируемым приоритетом.
Системные функции со следующими особенностями:
- менеджер питания и синхронизации, включающий в себя вну-
тренний RC-генератор и генератор с частотой 32 кГц;
- два многоцелевых генератора и две системы ФАПЧ (PLL);
- независимые тактовые частоты для ЦПУ и USB;
- сторожевой таймер, таймер реального времени.
Универсальная последовательная шина (USB) со следующими осо-
бенностями:
- полноскоростное USB-устройство версии 2.0 On-The-Go (OTG)
с поддержкой полноскоростного и низкоскоростного режимов;
- гибкая конфигурация конечной точки USB и управление выде-
ленными каналами DMA;
- приемопередатчики на кристалле, включая подтянутые к «плю-
су» питания резисторы.
Интерфейс Ethernet МАС 10/100 Mbps со следующими особенно-
стями:
- контроллер Ethernet MAC 802.3;
- поддержка МП и RMII.
• Один 16-разрядный таймер/счетчик (ТС) с тремя каналами со сле-
дующими особенностями:
- три внешних входа синхронизации, ШИМ, захват и различные
возможности счета событий.
• Один 16-разрядный контроллер ШИМ (PWM) с 7 каналами.
• Четыре универсальных синхронных/асинхронных приемопередат-
чика (USART) со следующими особенностями:
- встроенный генератор скорости обмена, поддержка IrDA и ин-
терфейса ISO7816;
- поддержка аппаратной процедуры установления связи, модемного
интерфейса и интерфейса RS-485.
• Два ведущих/ведомых последовательных периферийных интерфей-
са (SPI) с сигналами выбора устройства.
• Один контроллер синхронного последовательного протокола со сле-
дующими особенностями:
- поддержка I2S и универсального фреймового протокола.
• Один ведущий/ведомый двухпроводный интерфейс (TWI) с макси-
мальной скоростью обмена 400 кбит/с, совместимый с PC.
• Один 10-разрядный модуль АЦП с 8 каналами.
• Выход 16-разрядного стерео аудио ЦАП битового потока со следую-
щими особенностями:
- частота выборки до 50 кГц.
• Встроенная система отладки (JTAG-интерфейс) со следующими
особенностями:
- система отладки на кристалле (OCD) с возможностью трассиров-
ки в реальном масштабе времени, доступа к памяти для чтения-
записи на полной скорости в дополнение к основной отладке во
время выполнения кода.
• Исполнение в 100-выводном корпусе TQFP (69 линий GPIO),
144-выводном корпусе LQFP (109 линий GPIO).
• Толерантные (терпимые) к внешнему напряжению 5 В линии ввода-
вывода.
• Единственное напряжение питания 3,3 В или два напряжения пи-
тания: 1,8 В и 3,3 В.
Справочные данные по МК подсемейства AT32UC3B, приведенные
ниже, основаны на материалах источников [4, 5].
Устройства подсемейства AT32UC3B имеют следующие типовые харак-
теристики.
* Высокоэффективное низкопотребляющее 32-разрядное процессор-
ное ядро с оригинальной архитектурой AVR32 со следующими осо-
бенностями:
- компактная система команд RISC, выполняющихся за один так-
товый цикл, включая команды DSP;
- команды «чтение-модификация-запись» и команды манипуля-
ций с битами;
- тактовая частота до 60 МГц при удельной производительности
1,38 DMIPS/МГц;
- производительность 75 DMIPS при выполнении программы из
Flash-памяти с тактовой частотой 60 МГц;
- производительность 45 DMIPS при выполнении программы из
Flash-памяти с тактовой частотой 33 МГц;
- модуль защиты памяти (MPU).
Мультииерархическая шинная система со следующими особенно-
стями:
- высокоэффективный обмен данными по отдельным шинам для
повышения производительности;
- 7 каналов периферийного DMA для автоматической передачи
данных.
Встроенная высокоскоростная Flash-память со следующими осо-
бенностями:
- объем от 256к до 64к;
- доступ за один тактовый цикл на тактовой частоте до 30 МГц;
- буфер выборки с упреждением для оптимизация выполнения ко-
манд на максимальной тактовой частоте;
- время программирования страницы — 4 мс, а время стирания
всего кристалла — 8 мс;
- 100 000 циклов записи, 15-летний срок сохранности1 данных;
- ключи защиты памяти и задаваемые пользователем области кон-
фигурации.
Встроенная высокоскоростная память SRAM с доступом за один
тактовый цикл на максимальной тактовой частоте со следующими
особенностями:
- объем от 32к до 16к.
Контроллер прерываний со следующими особенностями:
- автоматически векторизуемые прерывания с малым временем
ожидания и программируемым приоритетом.
Системные функции со следующими особенностями:
- менеджер питания и синхронизации, включающий в себя вну-
тренний RC-генератор и генератор с частотой 32 кГц;
- два многоцелевых генератора и две системы ФАПЧ (PLL);
- независимые тактовые частоты для ЦПУ и USB;
- сторожевой таймер, таймер реального времени.
Универсальная последовательная шина (USB) со следующими осо-
бенностями:
- полноскоростное USB-устройство версии 2,0 On-The-Go (OTG)
с поддержкой полноскоростного и низкоскоростного режимов;
- гибкая конфигурация конечной точки USB и управление выде-
ленными каналами DMA;
- приемопередатчики на кристалле, включая подтянутые к «плю-
су» питания резисторы.
Один 16-разрядный таймер/счетчик (ТС) с тремя каналами со сле-
дующими особенностями:
- три внешних входа синхронизации, ШИМ, захват и различные
возможности счета событий.
Один 16-разрядный контроллер ШИМ (PWM) с 7 каналами.
Три универсальных синхронных/асинхронных приемопередатчика
(USART) со следующими особенностями:
- встроенный генератор скорости обмена, поддержка IrDA и ин-
терфейса ISO7816;
- поддержка аппаратной процедуры установления связи, модемного
интерфейса и интерфейса RS-485.
Один ведущий/ведомый последовательный периферийный интер-
фейс (SPI) с сигналами выбора устройства.
Один контроллер синхронного последовательного протокола со сле-
дующими особенностями:
- поддержка I2S и универсального фреймового протокола.
Один 10-разрядный модуль АЦП с 8 каналами.
— VBUS
0-
PA
PX
RESET N
Интерфейс
JTAG nt/
-тск-
-тоо-
-TDt-
-TMS-
—мско-
-MDOJ5 О
-MSEO(1 I
—EVTI N
-EVTOJ4
NEXUS
CLASS 2+
OCD
А¥Л32с
ЦПУ
~5^Модуль защиты памяти^-
Интерфейс
команд
Интерфейс
данных
---ID—
4—VBOF-
О COL,
£ CRS
0 RXD(3.0]
RX_CLK *
RX_DV,
RX.ER
MDC
TXD(3. Oj
,TX CLK
F TX EN, -
txZer
SPEED
локальной
!
шины
!
л
I
S
-KPS[7 Or
if
DMA
DMA
MWA!T----
64 К
SRAM
ETHERNET
МАС
Интерфейс
USB
FLASH
USART1
Контроллер
внешних
прерываний
NWE1
NWE
Контроллер
прерываний
—RXD-
--TXD-
--CLK-
-RTS СТ
Мост А
HSB-PB
--RXD—
--TXD—
--CLK—
-RTS СТ£
Мост В
HSB-PB
Периферийным
контроллер
DMA
4—DATАр5 0}->
—AD3RR3 0}->
Высокоскоростная
шинная матрица
Счетчик
реального времени
Сторожевой
таймер
-XIN32-
«XOUT32
—XfNO-
4XOUT(j
I 115 кГц
IRCOSC
2-J 32 кГц
М-| OSC
Менеджер
питания
Тактовый
генератор
osco
—XIN1-J
4X0UT1-
OSC1
PLLO
PLL1
4---------AR 0J-
4--------------s;2 of—
----------CLK[2 0>
Контроллер
тактирования
Контроллер
режима SLEEP
Контроллер
сброса
Модуль
таймеров/счетчиков
USART3
SPI 0/1
ЦАП битового
аудиопотока
USART0
USART2
Контроллер
ШИМ
Аналого-
цифровой
преобразователь
----SDCSi
_----SDWE
-RXD-
-TXD-
-CLK-
' 4-------SCK--
4-----MiSO MOSt
4-------NPCSO—
------NPGSR th
4~X.Cl.0CK TX_FRAME_5YNC>
---------Т> .DATA------►
PA
PX
-RK.OATA
-SCL-
-S3A-
-PWM(S 0)-
-AD[7
-------DATA[1 О
-------OATAN[1 0
ADVREF
s
I
w
| g 1 --*
I
2
s
Рис. 1.1. Блок-схема МК подсемейства AT32UC3A
Один ведущий/ведомый двухпроводный интерфейс (TWI) с макси-
мальной скоростью обмена 400 кбит/с, совместимый с 12С.
Встроенная система отладки (JTAG-интерфейс) со следующими
особенностями:
- система отладки на кристалле (OCD) с возможностью трассиров-
ки в реальном масштабе времени, доступа к памяти для чтения-
записи на полной скорости в дополнение к основной отладке во
время выполнения кода.
Исполнение в 64-выводном корпусе TQFP/QFN (44 линии GPIO),
48-выводном корпусе TQFP/QFN (28 линий GPIO).
Толерантные (терпимые) к внешнему напряжению 5 В линии ввода-
вывода, включая 4 ножки с драйверами повышенной нагрузочной
способности по току.
i
ф
i
i
I
USART1
SPI
SSC
TWI
USARTO
USART2
Контроллер
ШИМ
Аналого-
цифровой
преобразователь
Рис. 1.2. Блок-схема МК подсемейства AT32UC3B
AVR32 UC3 Linecard
In Production
In Development
Samplmg Date
Flash!
512 KB
256 KB
12S кВ
64 кВ
32 кВ
16 кВ
UC3A0256
UC3B0256
UC3B1256
UC3A1256
UC3AG128
UC3B1128
UC3B0128
UC3A1128 1
UC3C2
Q1/09
UC3C1
Q1/09
UC3A364
GO
UC3C0
спя»
UC3A3256
Q4W
UC3A3128
04/88
UC3AQ512 I
UC3A1512 I
UC3L Series
69 Mips $58 MHz
<1,0 mW /MHz
48 QFP/QFN
UC3A Series
91 Mips $66 MHz
2,0 mW /MHz
144/100 OFF
UC3C Series
91 Mips $66 MHz
2.0 mW /MHz
144 /100/64 QFP/BGA/QFN
UC3B Series
76 Mips $ 60 MHz
1 3 mW /MHz
64/48QFP/QFN
й—жаисзвавп i uc3Bisi2
Q1W <н»
Low Power
УСЗАЗ Features
Ж-Speed USB
NAND f lash Interface
128kB SRAM
SO / $ОЮ Cm d Interface
Audio DAC
U.C3C Features
5V industrial Controller
2x CAN
16ch. dual 12 bit AOC
Dual 12-bit DAC
True 5 V УО
B064 I UC3B1B4
Рис. 1.3. Диаграмма, иллюстрирующая линейку выпускаемых и планируе-
мых к выпуску МК семейства AT32UC3
• Единственное напряжение питания 3,3 В или два напряжения пи-
тания: 1,8 В и 3.3 В.
Блок-схема МК подсемейства AT32UC3A показана на рис. 1.1, а МК
подсемейства AT32UC3B — на рис. 1.2.
Относительно небольшая на сегодняшний день номенклатура устройств
в семействе AT32UC3 в ближайшей перспективе будет существенно попол-
нена [13]. На рис.1.3 показана графическая диаграмма, иллюстрирующая
линейку выпускаемых и планируемых к выпуску МК семейства AT32UC3 —
«AVR32 UC3 Linecard». Синим цветом на диаграмме показаны уже выпу-
скаемые устройства, а белым — разрабатываемые и планируемые к выпу-
ску к указанной под наименованием устройства дате («квартал/год»). Слева
на вертикальной оси отложены значения размера встроенной Flash-памяти
Для каждого из устройств семейства. Как можно видеть из диаграммы, на-
ряду с МК общего назначения в 2009 году к выпуску также планируются
низкопотребляющие устройства подсемейства AT32UC3L с малым объемом
встроенной Flash-памяти и в маленьких (48-выводных) корпусах.
Следует заметить, что пока эта книга готовилась к печати, действую-
щая номенклатура семейства AT32UC3 постоянно расширялась. Ниже, в
табл. 1.4 приведена информация о составе семейства AT32UC3 на момент,
предшествующий выходу книги из печати (декабрь 2009 года). Несмотря на
то, что количество устройств в семействе по сравнению с их количеством
во время написания книги возросло многократно, не охвачено описанием
в книге осталось всего несколько периферийных модулей МК (12-разряд-
ный АЦП, ЦАП, аналоговый компаратор, интерфейсы CAN и SD/MMC,
Функция Crypto (AES)).
Табл. 1.4. Сводная таблица всех МК семейства AT32UC3
по состоянию на декабрь 2009 года
Устройство Flash, К SRAM, К SD/MMC Ethernet МАС USB Hi Speed USB Full Speed USB Host/OTG CAN USART h—1 Ph СЮ SSC (I2S audio) TWI (I2C) |
AT32UC3A0128 128 32 1 + + 4 2 1 1
AT32UC3A0256 256 64 1 + + 4 2 1 1
AT32UC3A0512 512 64 1 + + 4 2 1 1
AT32UC3A1128 128 32 1 + + 4 2 1 1
AT32UC3A1256 256 64 1 + + 4 2 1 1
AT32UC3A1512 512 64 1 + + 4 2 1 1
AT32UC3A364 64 128 + + + + 4 2 1 1
AT32UC3A3128 128 128 + + + + 4 2 1 1
AT32UC3A3256 256 128 + + + + 4 2 1 1
AT32UC3A364S 64 128 + + + + 4 2 1 1
AT32UC3A3128S 128 128 + + + + 4 2 1 1
AT32UC3A3256S 256 128 + + + + 4 2 1 1
AT32UC3B064 64 16 + + 3 1 1 1
AT32UC3B0128 128 32 + + 3 1 1 1
AT32UC3B0256 256 32 + + 3 1 1 1
AT32UC3B0512 512 96 + + 3 1 1 1
AT32UC3B164 64 16 + 2 1 1
AT32UC3B1128 128 32 + 2 1 1
AT32UC3B1256 256 32 + 2 1 1
AT32UC3B1512 512 96 + 2 1 1
AT32UC3C064 64 16 + + 2 4 2 1 2
AT32UC3C0128 128 32 + + 2 4 2 1 2
AT32UC3C0256 256 64 + + 2 4 2 1 2
AT32UC3C0512 512 64 + + 2 4 2 1 2
AT32UC3C164 64 16 + + 2 4 2 1 2
AT32UC3C1128 128 32 + + 2 4 2 1 2
AT32UC3C1256 256 64 + + 2 4 2 1 2
AT32UC3C1512 512 64 + + 2 4 2 1 2
AT32UC3C264 64 16 + + 2 3 1 1 2
AT32UC3C2128 128 32 + + 2 3 1 1 2
AT32UC3C2256 256 64 + + 2 3 1 1 2
AT32UC3C2512 512 64 + + 2 3 1 1 2
AT32UC3D164 64 8 + 2 1 1
AT32UC3D1128 128 16 + 2 1 1
AT32UC3D1256 256 16 + 2 1 1
AT32UC3L016 16 8 4 1 1
AT32UC3L032 . 32 16 4 1 1
AT32UC3L064 64 16 4 1 1
1 Диапазон напряжения питания (3,0—3,6)В или (4,5—5,5)В
I RTC ’ osc 10-bit-ADC 12-bit-ADC DAC Analog Comp Crypto (AES) vcc, в Clock Speed, МГц Исполнение в корпусе
IT + 2 8 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 3,0-3,6 66 TQFP100
13 + 2 8 3,0-3,6 66 TQFP100
13 + 2 8 3,0-3,6 66 TQFP100
13 + 2 8 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 + 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 + 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 + 3,0-3,6 66 LQFP144, TFBGA144
13 + 2 8 3,0-3,6 60 TQFP64, QFN64
13 + 2 8 3,0-3,6 60 TQFP64, QFN64
13 + 2 8 3,0-3,6 60 TQFP64, QFN64
13 + 2 8 3,0-3,6 60 TQFP64, QFN64
13 + 1 6 3,0-3,6 60 TQFP48, QFN48
13 + 1 6 3,0-3,6 60 TQFP48, QFN48
13 + 1 6 3,0-3,6 60 TQFP48, QFN48
13 + 1 6 3,0-3,6 60 TQFP48, QFN48
20 + 2 16 2 4 3,0-5,5' 66 LQFP144
20 + 2 16 2 4 3,0-5,5' 66 LQFP144
20 + 2 16 2 4 3,0-5,5' 66 LQFP144
20 + 2 16 2 4 3,0-5,5' 66 LQFP144
20 + 2 16 2 4 3,0-5,5' 66 TQFP100
20 + 2 16 2 4 3,0-5,5' 66 TQFP100
20 + 2 16 2 4 3,0-5,5' 66 TQFP100
20 + 2 16 2 4 3,0-5,5' 66 TQFP100
20 + 2 11 1 2 3,0-5,5' 66 TQFP64
20 + 2 11 1 2 3,0-5,5' 66 TQFP64
20 + 2 11 1 2 3,0-5,5' 66 TQFP64
20 + 2 11 1 2 3,0-5,5' 66 TQFP64
13 + 1 6 2,7-3,3 40 TQFP48, QFN48
13 + 1 6 2,7-3,3 40 TQFP48, QFN48
13 + 1 6 2,7-3,3 40 TQFP48, QFN48
36 + 1 6 8 1,62-3,6 50 TQFP48, QFN48
36 + 1 6 8 1,62-3,6 50 TQFP48, QFN48
36 + 1 6 8 1,62-3,6 50 TQFP48, QFN48
ГЛАВА 2
АРХИТЕКТУРА
И ПРОГРАММНАЯ
МОДЕЛЬ AVR32
2.1. Общее описание архитектуры
AVR32 представляет собой высокоэффективную 32-разрядную RISC-
архитектуру, предназначенную для встраиваемых приложений, со специ-
фическим акцентом на потреблении малой мощности и высокой плотно-
стью кода. Кроме того, структура системы команд AVR32 задумывалась
производителем таким образом, чтобы имелась возможность реализации
устройств с ядром AVR32 как низко-, средне- или высокоэффективных
процессоров. AVR32 распространяет широко известное семейство AVR на
область 32- и 64-разрядных приложений.
По утверждению производителя, архитектура AVR32 обеспечивает наи-
лучшую плотность кода в своем классе устройств.
Как уже было сказано, процессорное ядро AVR32UC заявлено первым
промышленно выпускаемым ядром, которое интегрирует чтение-запись
SRAM за один тактовый цикл с прямым интерфейсом к центральному про-
цессорному устройству (ЦПУ). Этот интерфейс обходит системную шину,
что позволяет достигнуть в архитектуре AVR32 максимальной скорости вы-
полнения программы, детерминизма цикла и минимальной потребляемой
мощности. Наличие в ядре интерфейса ведомого к высокоскоростной шине
(HSB).позволяет контроллерам DMA или другим ведущим устройствам HSB
записывать или читать данные непосредственно из встроенного в процес-
сор устройства SRAM. Если центральный процессор и ведомое устройство
HSB запрашивают доступ одновременно, предусмотрен арбитраж. Для нужд
приложений в системе реализована программируемая схема приоритетов.
Процессор поддерживает операции с байтами и полусловами данных без
необходимости выполнения дополнительного объема программного кода.
Запись в память и чтение памяти обеспечиваются для байта, полуслова,
слова и двойного слова данных с автоматическим признаком или дополне-
нием нулями свободных полей полуслова или байта. Архитектура AVR32
разрабатывалась с учетом специфики работы С-компилятора, что дает воз-
можность в полной мере использовать его возможности по оптимизации
кода для сокращения его размера и повышения скорости исполнения.
Чтобы уменьшить размер кода до минимума, некоторые команды AVR32
имеют множественные способы адресации. Например, команды с непо-
оедствени°й адресацией часто имеют компактный формат с меньшим не-
посредствеииым значением и расширенный формат с большим непосред-
ственным значением. Используя эту особенность, компилятор адаптивно
выбирает формат, дающий наименьший размер кода.
Другая особенность системы команд состоит в том, что часто исполь-
зуемые команды, например, команда сложения, имеют компактный фор-
мат с двумя операндами и расширенный формат с тремя операндами.
Расширенный формат увеличивает производительность, позволяя осу-
ществлять добавление и перемещение данных единственной командой
за один цикл. Команды загрузки и сохранения также имеют несколь-
ко различных форматов, чтобы уменьшить результирующий размер кода
л ускорить выполнение.
Регистровый файл процессора организован как шестнадцать 32-разряд-
ных регистров и включает в себя программный счетчик, регистр связи
и регистр-указатель вершины стека. Кроме того, регистр R12 предназначен
для хранения возвращаемых значений при вызове функций и неявно ис-
пользуется некоторыми командами.
2.2. Центральный процессор семейства AT32UC3
В МК семейства AT32UC3, предназначенных для приложений малой
и средней сложности, процессорное ядро с архитектурой AVR32UC инте-
грирует расширенную систему отладки (OCD), содержит модуль защиты
памяти (MPU), но в отличие от архитектуры семейства AVR32A не содер-
жит встроенной кэш-памяти. Аппаратные средства ускорения выполнения
команд языка Java в МК семейства AT32UC3 также не реализованы.
МК семейства AT32UC3 поддерживают три интерфейса памяти: один
ведущий интерфейс к высокоскоростной шине (HSB) для выборки команд,
один ведущий интерфейс к высокоскоростной шине для доступа к дан-
ным и один ведомый интерфейс к высокоскоростной шине для доступа
к памяти RAM, встроенной в центральный процессор. Хранение данных
в этой памяти позволяет осуществить быстрый доступ к ним, уменьшает
время ожидания и гарантирует корректную синхронизацию. Кроме того,
указанная особенность архитектуры уменьшает потребляемую мощность,
поскольку для доступа к RAM не требуется полностью задействовать вы-
сокоскоростную системную шину. Специализированный интерфейс внеш-
ней RAM данных реализован в архитектуре для того, чтобы осуществлять
обмен данными с встроенной RAM.
Блок-схема центрального процессора устройств семейства AT32UC3 по-
казана на рис. 2.1.
2.3. Конвейер AT32UC3
Процессор МК AT32UC3 имеет трехступенчатый конвейер обработки ко-
манд. Конвейер состоит из следующих ступеней (стадий): выборка команды
(IF), декодирование команды (ID) и выполнение команды (ЕХ). Большин-
ство команд выбирается, декодируется и выполняется за один тактовый
Рис. 2.1. Блок-схема центрального процессора устройств семейства
AT32UC3
цикл. Выполнение некоторых команд требует нескольких тактовых циклов,
и в этом случае команда постоянно находится в стадиях ID и ЕХ конвейера
в течение требуемого числа тактовых циклов.
Стадия выборки команды была специально разработана, чтобы опти-
мизировать вызов команды из Flash-памяти. При выборке в каждом такто-
вом цикле происходит запись одной 32-разрядной или двух 16-разрядных
команд во внутренний буфер команд. Наличие этого буфера гарантирует
отсутствие остановов конвейерной обработки в ходе последовательного вы-
полнения программы.
На следующей стадии происходят декодирование команды и генерация
необходимых сигналов для ее выполнения.
Третья стадия разбита на три параллельных секции (модуля): ариф-
метическую секцию — арифметико-логическое устройство (ALU), секцию
умножения (MUL) и секцию загрузки/сохранения (LS). Арифметико-
логическое устройство выполняет арифметические и логические операции,
включая аппаратное деление. Модуль умножения выполняет операции
умножения и умножения с накоплением (МАС), поддерживаемые системой
команд (ISA). Модуль загрузки/сохранения выполняет операции доступа
к SRAM или операции доступа к высокоскоростной шине (HSB) за один
Рис. 2.2. Блок-схема обработки команд в конвейере AT32UC3
тактовый цикл. Регистры регистрового файла могут быть модифицирова-
ны в течение того же самого тактового цикла, в котором происходит вы-
полнение команды. Эта особенность упрощает программную трансляцию
по сравнению с более длинными конвейерами, поскольку отсутствует не-
обходимость в планировании кода.
Блок-схема обработки команд в конвейере показана на рис. 2.2.
2.4. Совместимость архитектур AVR32UC и AVR32A
Архитектура AVR32UC является микроархитектурой (дочерним упрощен-
ным вариантом) базовой архитектуры AVR32A. По замыслу производителя
МК с архитектурой AVR32UC предназначены для применения в наибо-
лее критичных к стоимости приложениях. Помимо уже упомянутых от-
личий от AVR32A архитектура AVR32UC не имеет специализированных
аппаратных «теневых» регистров регистрового файла, используемых для
сохранения контекста прерываний. Кроме того, она не имеет аппаратных
регистров для возвращения содержимого регистров адреса и регистров ста-
туса. Вместо этого вся указанная информация сохраняется в системном
стеке. Такой подход экономит размеры кристалла за счет более медленной
обработки прерываний.
Архитектуры AVR32UC и AVR32A используют одну и ту же 16/32-раз-
Рядную систему команд (ISA, instruction set architecture) с более чем 220
командами, доступными как 16-разрядные компактные и 32-разрядные
расширенные команды. ISA этого ядра обеспечивает управление единич-
ными разрядами для контроля встроенной периферии, интерфейсов вво-
да/вывода общего назначения и целочисленных арифметических модулей
DSP, в том числе — однотактных умножителей с накоплением. Более под-
робно команды ISA будут описаны ниже. Система команд ISA была разра-
ботана производителем с учетом того, чтобы минимизировать транзакции
Данных между ядром и блоками памяти, тем самым экономя потребляе-
мую мощность и тактовые циклы процессора. Компилятор автоматически
выбирает наиболее эффективную компактную или расширенную форму
каждой команды и результате генерируется быстрый и вместе с тем эф-
фективный код.
Команды загрузки/сохранения ISA AVR32 предназначены для обраще-
ния к байту (8 разрядов), полуслову (16 разрядов), слову (32 разряда) и двой-
ному слову (64 разряда). Команды имеют несколько способов адресации
для эффективного доступа к таблицам и другим структурам данных.
В дополнение к командам загрузки/сохранения ISA AVR32 имеет ко-
манды, которые позволяют модифицировать прочитанные из регистрового
файла данные перед их сохранением в памяти, а также читать данные из
памяти перед их сохранением в регистровом файле. Коды операций (ма-
нипуляции данными) этих команд включают битовые поля «загрузка-и-
вставка», «загрузка-и-перестановка» и «сохранение-и-перестановка».
Так называемые атомарные команды манипуляций с памятью — группа
команд ISA AVR32UC, предназначенная для управления исключениями
и «семафорами», а также для манипуляций с битами. «Семафоры» и ис-
ключения используются операционными системами реального времени
(RTOS). Битовые манипуляции используются для управления встроенны-
ми периферийными устройствами.
Команды DSP ISA AVR32UC выполняются в модуле умножения за один
тактовый цикл. Сюда входят команды умножения и команды умножения-
и-накопления для стандартных и дробных чисел, с/без переполнения
и округления. Результат умножения или умножения с накоплением может
иметь размер 32, 48 или 64 разряда, при этом 48- и 64-разрядный результа-
ты помещаются в два регистра. К командам DSP также относятся команды
сложения и вычитания, а также команды форматирования данных типа
сдвига данных с переполнением и округлением.
Процессор архитектуры AVR32UC может работать в привилегирован-
ном или непривилегированном режимах. Привилегированный режим ча-
сто используется для операционных систем реального времени, позволяя
осуществлять доступ ко всем системным ресурсам и используя отдельный
системный стек. Непривилегированный режим используется для выпол-
нения приложений и ограничивает доступ к некоторым из системных
ресурсов.
После инициирования прерывания содержимое регистров R8—R12
регистрового файла автоматически помещается в системный стек. (Реги-
стровый файл будет описан ниже в разделе, посвященном описанию про-
граммной модели AVR32UC). Это происходит вне зависимости от уровня
приоритета отложенного прерывания. Адрес возврата и содержимое реги-
стра статуса также автоматически помещаются в стек. По этой причине
программа обработки прерывания может свободно использовать регистры
R8—R12 для своих целей. После завершения обработки прерывания ста-
рое содержимое R8—R12 и регистра состояния восстанавливается из стека
и выполнение программы продолжается с адреса возврата, значение ко-
торого также восстанавливается из стека. Стек также используется, что-
бы сохранять регистр статуса и адрес возврата для обработки исключений
и команд вызова функций scall. Выполнение команды rete или rets при за-
верщении исключения или вызова системной функции автоматически вы-
грузит из стека содержимое регистра состояния и продолжит выполнение
программы с выгруженного из стека адреса возврата.
2.5. Защита памяти
Встроенный модуль защиты памяти (MPU) AVR32UC управляет рас-
пределением памяти в системе и задает полномочия для доступа к ней.
MPU позволяет выполнять доступ с ограничением чтения-записи к раз-
личным областям памяти в зависимости от степени привилегированно-
сти режима.
Модуль защиты памяти позволяет пользователю фиксировать все слу-
чаи доступа к памяти с нарушением полномочий. Если производится до-
ступ к некорректному адресу памяти, то MPU отменяет такой доступ и ге-
нерирует исключение.
MPU в архитектуре AVR32UC имеет следующие особенности:
• 8 регистров MPUAR, доступных для загрузки командами и данными;
• отсутствие регистров MPUCRD/MPUCRI, имеющихся в базовой
архитектуре;
• отсутствие регистра MPUBRD, имеющегося в базовой архитектуре;
• один регистр MPUAPR, доступный для загрузки командами и дан-
ными;
• один регистр MPUCR.
Архитектура AVR32UC не поддерживает доступ к памяти с адресами,
не выровненными в границах двойного слова, т. е., значение адреса при
доступе должно быть всегда выровнено в границах двойного слова. Как ис-
ключение из этого правила, команды AVR32UC st.d и Id.d поддерживают
доступ к адресам памяти, выровненным в границах слова. Любой другой
случай доступа к адресам памяти с не выровненными границами вызовет
генерацию исключения адреса. Доступ к адресам, выровненным в грани-
цах двойного слова, автоматически будет выполнен как два доступа, вы-
ровненных в границах слова.
Пользователь может задавать различные уровни привилегий различ-
ным блокам памяти, формируя содержимое набора специальных регистров.
Каждый такой блок памяти принято называть областью защиты. MPU по-
зволяет сконфигурировать 8 различных областей защиты для доступа к ко-
мандам и 8 областей защиты для доступа к данным. Каждая область имеет
программируемый пользователем начальный адрес, размер, разрешение
Доступа, признаки наличия кэширования и наличия буферизованности.
Каждый из этих параметров задается содержимым соответствующих полей
системных регистров.
Каждая область защиты может иметь размер от 4к до 4Г. Все области
защиты должны иметь значение начального адреса, соответствующее раз-
меру этой области. Например, если область защиты имеет размер 8к, то 13
младших разрядов в ее начальном адресе начала должны быть нулевыми.
Если это правило не будет соблюдено, то система перейдет в состояние
UNDEFINED. Области защиты могут накладываться друг на друга, т. е.
один начальный адрес может отображаться на несколько областей защиты.
В этом случае этот адрес номинально соответствует области защиты с са-
мым большим номером.
Работа MPU разрешается путем установки бита Е в специальном ре-
гистре MPUCR. По умолчанию после сброса этот бит сброшен. Если
работа MPU запрещена, то все виды доступа обрабатываются как некэ-
шируемые и небуферизованные, а сообщения о нарушении прав доступа
не генерируются. Перед установкой бита Е должна быть задана не менее
чем одна истинная область защиты команд и одна истинная область за-
щиты данных. Пояснение понятия истинности команд и данных будет
приведено ниже.
2.5.1. Регистровый интерфейс MPU
Для управления MPU используется несколько специальных регистров, обе-
спечивающих интерфейс между MPU и операционной системой. Их бито-
вая структура показана на рис. 2.3. Все эти регистры отображены в адрес-
ное пространство системных регистров (см. табл. 2.5). Доступ к регистрам
MPU осуществляется с помощью команд mtsr и mfsr. Регистры с именами,
заканчивающимися на «1п», предназначены для областей команд, а реги-
стры с именами, заканчивающимися на «Dn», — для областей данных.
Суффикс «п» может иметь значение от 0 до 7 — он индицирует область,
с которой связан регистр.
MPUARIn / MPUARDn
31 12 11 6 5 1 О
Base Address - Size V
MPUCRI / MPUCRD
31 876543210
С 7 С ( 6 f Z с 5 4 С ( з ; Z с > 1 с 0
MPUBRD
87654321 0
В В В В В В В В
7 6 5 4 3 2 1 0
MPUAPRI / MPUAPRD
31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0
АР7 АР6 АР5 АР4 АРЗ АР2 АР1 АРО
MPUCR
31__________________________________ 1 о
- Е
Рис. 2.3. Битовая структура специальных регистров управления MPU
регистры адреса команды/данных MPUARIn/MPUARDn реализованы
лЯ каждой области защиты. Всего может быть 8 областей защиты команд
и 8 областей защиты данных. Содержимое регистров MPUAR определяет
начальный адрес и размер этих областей. Начальный адрес должен быть
таким, чтобы его значение корректно соответствовало размеру области.
Минимальный допустимый размер области — 4к, поэтому в базовом адре-
се должны быть определены только биты 31:12. Остальные биты адреса
всегда равны 0. Каждый регистр MPUAR также имеет бит истинности,
который определяет, истинна ли область защиты. Тестирование на пред-
мет защиты производится только для истинных областей. Регистр MPUAR
состоит из следующих битовых полей:
• Base Address — начальный адрес области защиты. Минимальный
размер области — 4к, поэтому в базовом адресе должны быть опре-
делены только 20 старших разрядов. Младшие 12 разрядов базового
адреса всегда равны 0. Если размер области защиты больше, чем
4к, пользователь должен сбросить соответствующие биты в базовом
адресе, чтобы значение базового адреса корректно соответствовало
размеру области. В противном случае, система перейдет в состояние
UNDEFINED;
• Size — размер области защиты. Возможные размеры областей за-
щиты показаны в табл. 2.1;
• V — истинность. Бит установлен, если область защиты истинна,
сброшен в ином случае. По умолчанию этот бит сброшен.
В целях экономии пространства памяти AVR32UC может опционально
осуществлять обращение к регистрам MPUARIn и MPUARDn как к еди-
ному набору регистров MPUARn, доступных как для команд, так и для
данных. В этом случае регистры MPUARn будут отображены на те же са-
мые адреса, что и регистры MPUARDn. Адреса же, по которым распола-
гаются MPUARIn, в этом случае использоваться не будут. На совместное
использование MPU регистров MPUAR указывает содержимое системного
регистра CONFIG1.
Регистры кэшируемых команд/данных MPU MPUCRI/MPUCRD со-
держат один бит, указывающий, что область является кэшируемой. Если
этот бит установлен, то область является кэшируемой, в противном слу-
чае — нет. По умолчанию после сброса регистр имеет значение 0. AVR32UC
опционально может не использовать регистры MPUCRI и MPUCRD.
Регистры буферизованности данных MPUBRD содержат один бит,
указывающий, что область является буферизованной. Если этот бит уста-
новлен, то область является буферизованной, в противном случае — нет.
По умолчанию после сброса регистр имеет значение 0. AVR32UC опцио-
нально может не использовать регистр MPUBRD.
Регистры разрешения доступа к адресу MPU области команд/данных
MPUAPRI/MPUAPRD указывают на наличие разрешения доступа для
каждой области защиты. По умолчанию после сброса регистры имеют зна-
чение 0.
Возможные варианты разрешения доступа, задаваемые битами АРп ре-
гистров MPUAPR, показаны в табл. 2.2.
Табл. 2.1. Соответствие размера областей защиты значению битового поля
Size
Значение поля Size Размер области защиты Ограничения, накладываемые на базовый адрес
От В’00000 до В’01010 UNDEFINED -
В’01011 4к Нет
В’ОПОО 8к Бит [12] в поле Size должен быть равен 0
В’01101 16к Биты [13:12] в поле Size должны быть равны 0
В’ОШО 32к Биты [14:12] в поле Size должны быть равны 0
В’01111 64к Биты [15:12] в поле Size должны быть равны 0
В’10000 128к Биты [16:12] в поле Size должны быть равны 0
В’10001 256к Биты [17:12] в поле Size должны быть равны 0
В’10010 512к Биты [18:12] в поле Size должны быть равны 0
В’10011 1М Биты [19:12] в поле Size должны быть равны 0
В’10100 2М Биты [20:12] в поле Size должны быть равны 0
В’10101 4М Биты [21:12] в поле Size должны быть равны 0
В’10110 8М Биты [22:12] в поле Size должны быть равны 0
В’10111 16М Биты [23:12] в поле Size должны быть равны 0
В’ПООО 32М Биты [24:12] в поле Size должны быть равны 0
В’11001 64М Биты [25:12] в поле Size должны быть равны 0
В’11010 128М Биты [26:12] в поле Size должны быть равны 0
В’11011 256М Биты [27:12] в поле Size должны быть равны 0
В’ШОО 512М Биты [28:12] в поле Size должны быть равны 0
В’11101 1Г Биты [29:12] в поле Size должны быть равны 0
В’11110 2Г Биты [30:12] в поле Size должны быть равны 0
В’ШП 4Г Биты [31:12] в поле Size должны быть равны 0
Если AVR32UC использует единый набор регистров MPUARn как для
команд, так и для данных, то доступ к данным осуществляется только
через один регистр MPUAPR. В этом случае этот регистр MPUAPR будет
отображен по тому же самому адресу, что и регистр MPUAPRD. Адрес, со-
держащийся в регистре MPUAPRI, в этом случае использоваться не будет.
Использует ли MPU единый набор регистров MPUAR, указывает содержи-
мое системного регистра CONFIG1.
Регистр управления MPU MPUCR управляет операциями MPU. Ре-
гистр MPUCR имеет только одно битовое поле (бит):
• Е — разрешено. Если это поле установлено, для MPU разрешено
тестирование адресов на предмет защиты. Если поле сброшено, те-
стирование адресов заблокировано и никакие исключения MPU ге-
нерировать не будет.
Табл. 2.2. Варианты разрешения доступа к области защиты, задаваемые би-
тами АРп
"ар Привилегированный режим Непривилегированный режим
"в’ОООО Чтение Нет
в’0001 Чтение/выполнение Нет
в’0010 Чтение/запись Нет
В’0011 Чтение/выполнение/запись Нет
в’0100 Чтение Чтение
В’0101 Чтение/выполнение Чтение/ выполнение
в’0110 Чтение/запись Чтение/запись
В’ОШ Чтение/выполнение/запись Чтение/выполнение/запись
В’1000 Чтение/запись Чтение
В’1001 Чтение/запись Чтение/выполнение
Другое UNDEFINED UNDEFINED
2.5.2. Обработка собственных исключений MPU
MPU может генерировать свои собственные исключения, что является
следствием разрешения тестирования MPU адресов памяти на предмет за-
щиты.
Первое исключение MPU связано с нарушением защиты ITLB, которое
происходит, если вызов команды нарушает разрешение доступа. «Нарушив-
шая» разрешение команда не выполняется. Адрес «нарушившей» команды
автоматически помещается в системный стек.
Другое исключение MPU связано с нарушением защиты DTLB, которое
происходит, если доступ к данным нарушает разрешение доступа. Адрес
«нарушившей» команды автоматически помещается в системный стек.
2.6. Программная модель
2.6.1. Конфигурация регистрового файла
Блок-схема регистрового файла архитектуры AVR32UC показана на рис. 2.4.
В верхней строке над каждым столбцом указано название режима процес-
сора, в котором доступен набор регистров, перечисленных в соответствую-
щем столбце.
2.6.2. Регистр статуса
Регистр статуса (SR) разбит на два полуслова (старшее и младшее), как
показано на рис. 2.5, рис. 2.6. Младшее полуслово статуса содержит флаги-
признаки С, Z, N, V, Q, а также код состояния, состоящий из флагов R, Т
и бита L. Старшее полуслово содержит информацию о режиме процессора
и состоянии выполнения программы в нем.
Прикладной Супервизор INTO INT1 INT2 INT3 Исключение NMI
пользовательский (Application) Bit 31 Bit 0 (Supervisor) Bit 31 Bit 0 Bit 31 Blto Bit 31 Bit 0 Bit 31 Bit 0 Bit 31 Bit 0 (Exception) Bit 31 Bit 0 Bit 31 Bit
PC PC PC PC PC PC PC PC
LR LR LR LR LR LR LR LR
SR ARP SP_SYS SPJSYS SPJSYS SP_SYS SPJSYS < < SPJSYS SP_SYS
R12 R12 R12 R12 R12 R12 R12 R12
R11 R11 R11 R11 R11 R11 R11 R11
R10 R10 R10 R10 R10 R10 R10 R10
R9 R9 R9 R9 R9 R9 R9 R9
R8 R8 R8 R8 R8 R8 R8 R8
R7 R7 R7 R7 R7 R7 R7 R7
R6 R6 RS R6 R6 R6 R6 RS
R5 RS R5 R5 RS R5 R5 RS
R4 R4 R4 R4 R4 R4 R4 R4
R3 R3 R3 R3 R3 R3 R3 R3
R2 R2 R2 R2 R2 R2 R2 R2
R1 R1 R1 R1 R1 R1 R1 R1
RO RO RO RO RO RO RO RO
| SR ~~| | SR ~~| | SR | SR | SR | SR | SR ~~| | SR ~~|
Рис. 2.4. Блок-схема регистрового файла архитектуры AVR32UC
Битовые поля старшего полуслова статуса имеют следующее назначение:
DM — маска состояния отладки.
Если этот бит установлен, состояние отладки процессора замаскирова-
но и не может быть введено. По умолчанию после сброса этот бит сброшен.
Этот бит доступен для чтения и записи пользовательским программным
обеспечением.
D — состояние отладки.
Когда этот бит установлен, процессор находится в состоянии отладки.
По умолчанию после сброса этот бит сброшен. Этот бит должен модифи-
цироваться аппаратными средствами отладки только с помощью команд
breakpoint или retd. При попытке пользователя изменить этот бит «вруч-
ную» поведение системы будет непредсказуемым.
М2, Ml, МО — режим выполнения программы.
Эти биты показывают активный на данный момент режим выполнения
программы. Варианты настройки этих битов для различных режимов по-
казаны в табл. 2.3. По умолчанию после сброса биты М2 и Ml сброшены,
а бит МО установлен, чтобы процессор после сброса находился в привиле-
гированном режиме (режим супервизора). Эти биты изменяются аппарат-
но или путем выполнения некоторых команд, например, scall, rets и rete.
При попытке пользователя изменить эти биты «вручную» поведение систе-
мы будет непредсказуемым.
Bit 31
Имя бита
Значение при инициализации
Глобальная маска прерываний
Маска прерываний уровня О
Маска прерываний уровня 1
*• Маска прерываний уровня 2
Маска прерываний уровня 3
Маска исключений
Бит режима О
Бит режима 1
Бит режима 2
Зарезервирован
Состояние отладки
Маска состояния отладки
Зарезервирован
Рис. 2.5. Старшее полуслово регистра статуса (SR)
Register Remap Enable
(разрешение переотображения регистров)
Рис. 2.6. Младшее полуслово регистра статуса (SR)
ЕМ — маска исключений.
Когда этот бит установлен, исключения замаскированы, в противном
случае исключения разрешены. Этот бит автоматически устанавливается,
когда активизируется обработка исключения или вводится режим отладки.
Программное обеспечение может сбросить этот бит после выполнения не-
обходимых для обработки исключения действий, если системой должны
поддерживаться вложенные исключения. По умолчанию после сброса этот
бит установлен.
I3M — маска прерывания уровня 3.
Когда этот бит установлен, прерывание уровня 3 замаскировано. Если
биты I3M и GM сброшены, прерывание INT3 разрешено. Бит автоматиче-
ски устанавливается, когда инициализируется обработка INT3. Программ-
ное обеспечение может сбросить этот бит после выполнения необходимых
для обработки прерывания действий, если системой должны поддержи-
ваться вложенные прерывания INT3. По умолчанию после сброса этот бит
сброшен.
I2M — маска прерывания уровня 2.
Когда этот бит установлен, прерывание уровня 2 замаскировано. Если
биты I2M и GM сброшены, прерывание INT2 разрешено. Бит автоматиче-
ски устанавливается, когда инициализируется обработка INT2 или INT3.
Программное обеспечение может сбросить этот бит после выполнения не-
обходимых для обработки прерывания действий, если системой должны
поддерживаться вложенные прерывания INT2. По умолчанию после сбро-
са этот бит сброшен.
Табл. 2.3. Возможные значения битов режима
М2 Ml МО Режим
1 1 1 Немаскируемое прерывание
1 1 0 Исключение
1 0 1 Прерывание уровня 3
1 0 0 Прерывание уровня 2
0 1 1 Прерывание уровня 1
0 1 0 Прерывание уровня 0
0 0 1 Супервизор
__ 0 0 0 Прикладной пользовательский режим
ПМ — маска прерывания уровня 1.
Когда этот бит установлен, прерывание уровня 1 замаскировано. Если
биты ПМ и GM сброшены, прерывание INT1 разрешено. Бит автоматиче-
ски устанавливается, когда инициализируется обработка INTI, INT2 или
INT3. Программное обеспечение может сбросить этот бит после выпол-
нения необходимых для обработки прерывания действий, если системой
должны поддерживаться вложенные прерывания INT1. По умолчанию по-
сле сброса этот бит сброшен.
ЮМ — маска прерывания уровня 0.
Когда этот бит установлен, прерывание уровня 0 замаскировано. Если
биты ЮМ и GM сброшены, прерывание INTO разрешено. Бит автомати-
чески устанавливается, когда инициализируется обработка INTO, INTI,
INT2 или INT3. Программное обеспечение может сбросить этот бит после
выполнения необходимых для обработки прерывания действий, если си-
стемой должны поддерживаться вложенные прерывания INTO. По умолча-
нию после сброса этот бит сброшен.
GM — глобальная маска прерываний.
Когда этот бит установлен, все прерывания заблокированы. Установка
этого бита отменяет эффект от сброса битов ЮМ, ПМ, I2M и I3M. Этот бит
автоматически устанавливается, когда инициализируется обработка ис-
ключения, вводится режим отладки или происходит захват команды Java.
Этот бит автоматически сбрасывается при возвращении из захвата Java.
По умолчанию после сброса этот бит установлен.
Т — рабочий бит.
Этот бит не устанавливается и не сбрасывается неявно аппаратными
средствами, поэтому программист может использовать этот бит как поль-
зовательский флаг. По умолчанию после сброса этот бит сброшен.
L — флаг блокировки.
Этот флаг используется условной командой. Кроме того, он использу-
ется, чтобы поддерживать «атомарный» (битовый) доступ к памяти. Флаг
автоматически сбрасывается командой rete. По умолчанию после сброса
этот бит сброшен.
Q — флаг насыщения.
Флаг насыщения указывает, что произошло насыщение при арифме-
тической операции, допускающей переполнение. Флаг является «липким»,
т. е. будучи аппаратно установлен, он должен быть «вручную» сброшен ко-
мандой csrf после осуществления программой действия, связанного с его
установкой.
V — флаг переполнения.
Флаг переполнения указывает, что произошло переполнение при ариф-
метической операции.
N — флаг знака (отрицательного результата).
Флаг отрицательного результата изменяется арифметическими и логи-
ческими операциями.
Z — флаг нуля.
Флаг нуля указывает на нулевой результат после арифметической или
логической операции.
С — флаг переноса.
флаг переноса указывает на перенос после арифметической или логи-
ческой операции.
2.7. Состояния процессора
2.7.1. Нормальное RISC-состояние
Процессор архитектуры AVR32 поддерживает несколько различных режи-
мов (контекстов выполнения программы), как показано в табл. 2.4.
Смена режима может быть осуществлена под управлением самой про-
граммы либо вызвана внешними прерываниями или исключениями. Теку-
щий режим может быть прерван режимом с более высоким приоритетом,
но не режимом с более низким приоритетом. Вложенные исключения мо-
гут поддерживаться при минимальном участии программы.
При выполнении в процессоре AVR32 программы операционной си-
стемы пользовательские процессы, как правило, выполняются в приклад-
ном пользовательском режиме (Application). Для программ, выполняемых
в этом режиме, автоматически не допускается выполнение некоторых ко-
манд. Кроме того, в этом режиме нельзя обращаться к большинству си-
стемных регистров и к старшему полуслову регистра статуса. Защищенные
области памяти также недоступны. Все другие режимы, кроме приклад-
ного, являются привилегированными и называются системными режима-
ми. Они обеспечивают полный доступ ко всем привилегированным и не-
Табл. 2.4. Режимы выполнения программы, их приоритеты и уровни при-
вилегированности
Приори- тет Режим Защита Описание
1 Немаскируемое прерывание Привилегированный Режим немаскируемого прерывания с наивыс- шим приоритетом
2 Исключение Привилегированный Выполнение (обработка) исключения
3 Прерывание 3 Привилегированный Режим прерывания общего назначения
4 Прерывание 2 Привилегированный Режим прерывания общего назначения
5 Прерывание 1 Привилегированный Режим прерывания общего назначения
6 Прерывание 0 Привилегированный Режим прерывания общего назначения
Не опре- делен Супервизор Привилегированный Выполнение вызова супервизора
Не опре- Прикладной Непривилегирован- Режим нормального вы-
делен пользовательский ный полнения программы
привилегированным ресурсам. После сброса процессор будет находиться
в привилегированном режиме.
2.7.2. Состояние отладки
Процессор AVR32 может быть переведен в состояние отладки, которое
позволяет осуществить выполнение подпрограмм отладочного монитора.
Эти подпрограммы позволяют читать и модифицировать системную ин-
формацию во время работы пользовательского приложения. При этом под-
разумевается, что все системные и прикладные регистры, включая регистр
статуса и программные счетчики, в состоянии отладки являются доступ-
ными. Привилегированные команды в нем также доступны.
При переходе в состояние отладки все уровни прерывания по умолча-
нию заблокированы, однако они могут быть разрешены индивидуально
подпрограммой монитора путем сброса соответств]|ощего бита маски в ре-
гистре статуса.
Выход из состояния отладки производится командой retd.
2.8. Системные регистры
Помимо регистрового файла в распоряжении процессора имеется группа
регистров, называемых системными. Системные регистры размещены вне
виртуального пространства памяти и доступны для использования только
в привилегированных командах mfsr и mtsr. Содержимое некоторых из си-
стемных регистров может быть модифицировано автоматически аппарат-
ными средствами. Перечень системных регистров архитектуры AVR32 при-
веден в табл. 2.5. Как видно из таблицы, некоторые из них в архитектуре
AVR32UC не используются.
Ниже приведены краткие описания наиболее важных системных реги-
стров.
SR — регистр статуса.
Регистр статуса отображен в адресное пространство системных реги-
стров. Это позволяет загружать, его содержимое в регистровый файл для
модификации или для сохранения в памяти.
EVBA — базовый адрес вектора исключения.
Этот регистр содержит указатель на подпрограммы исключения.
Все подпрограммы исключения начинаются с этого адреса или с адреса,
лежащего с заданным смещением относительно этого адреса. В отношении
содержимого EVBA в зависимости от состояния контроллера прерываний
могут действовать специальные требования к выравниванию адресов.
АСВА — базовый адрес пользовательского вызова.
Указатель на начало таблицы указателей функции. С его помощью
можно вызывать подпрограммы компактной командой acall. Это облегчает
эффективное, многократное использование кода. Регистр АСВА является
32-х разрядным, но в два его младших разряда всегда следует записывать
О, выравнивая таким образом содержимое АСВА. В противном случае, воз-
можно ошибочное поведение системы.
Табл. 2.5. Системные регистры AVR32
Номер пегистра Адрес Имя Функция
' 0 0 SR Регистр статуса
1 4 EVBA Базовый адрес вектора исключения
2 8 АСВА Базовый адрес пользовательского вызова
3 12 CPUCR Регистр управления ЦПУ
4 16 ECR Регистр причины исключения
5 20 RSR_SUP Не используется в AVR32UC
6 24 RSRJNT0 Не используется в AVR32UC
7 28 RSRJNT1 Не используется в AVR32UC
8 32 RSRJNT2 Не используется в AVR32UC
9 36 RSRJNT3 Не используется в AVR32UC
10 40 RSR_EX Не используется в AVR32UC
11 44 RSR_NMI Не используется в AVR32UC
12 48 RSR_DBG Регистр возврата состояния для режима
отладки
13 52 RAR_SUP Не используется в AVR32UC
14 56 RARJNTO Не используется в AVR32UC
15 60 RARJNT1 Не используется в AVR32UC
16 64 RARJNT2 Не используется в AVR32UC
17 68 RARJNT3 Не используется в AVR32UC
18 72 RAR_EX Не используется в AVR32UC
19 76 RAR_NMI Не используется в AVR32UC
20 80 RAR_DBG Регистр возврата адреса для режима отладки
21 84 JECR Не используется в AVR32UC
22 88 JOSP Не используется в AVR32UC
23 92 JAVA_LV0 Не используется в AVR32UC
24 96 JAVA_LV1 Не используется в AVR32UC
25 100 JAVA_LV2 Не используется в AVR32UC
26 104 JAVA_LV3 Не используется в AVR32UC
27 108 JAVA_LV4 Не используется в AVR32UC
28 112 JAVA_LV5 Не используется в AVR32UC
29 116 JAVA_LV6 Не используется в AVR32UC
30 120 JAVA_LV7 Не используется в AVR32UC
31 124 JTBA Не используется в AVR32UC
32 128 JBCR Не используется в AVR32UC
33-63 132-252 Резерв Зарезервированы для будущего
использования
64 256 CONFIGO Регистр конфигурации 0.
65 260 CONFIG1 Регистр конфигурации 1
66 264 COUNT Регистр счетчика циклов
67 268 COMPARE Регистр сравнения для счетчика циклов
68 272 TLBEHI Не используется в AVR32UC
69 276 TLBELO Не используется в AVR32UC
Табл. 2.5.
(окончание)
Номер регистра Адрес Имя Функция
70 280 PTBR Не используется в AVR32UC
71 284 TLBEAR Не используется в AVR32UC
72 288 MMUCR Не используется в AVR32UC
73 292 TLBARLO Не используется в AVR32UC
74 296 TLBARHI Не используется в AVR32UC
75 300 PCCNT Не используется в AVR32UC
76 304 PCNT0 Не используется в AVR32UC
77 308 PCNT1 Не используется в AVR32UC
78 312 PCCR Не используется в AVR32UC
79 316 BEAR Регистр адреса ошибки шины
80 320 MPUARI0 Регистр адреса MPU области 0 команд
81 324 MPUARI1 Регистр адреса MPU области 1 команд
82 328 MPUARI2 Регистр адреса MPU области 2 команд
83 332 MPUARI3 Регистр адреса MPU области 3 команд
84 336 MPUARI4 Регистр адреса MPU области 4 команд
85 340 MPUARI5 Регистр адреса MPU области 5 команд
86 344 MPUARI6 Регистр адреса MPU области 6 команд
87 348 MPUARI7 Регистр адреса MPU области 7 команд
88 352 MPUARD0 Не используется в AVR32UC
89 356 MPUARD1 Не используется в AVR32UC
90 360 MPUARD2 Не используется в AVR32UC
91 364 MPUARD3 Не используется в AVR32UC
92 368 MPUARD4 Не используется в AVR32UC
93 372 MPUARD5 Не используется в AVR32UC
94 376 MPUARD6 Не используется в AVR32UC
95 380 MPUARD7 Не используется в AVR32UC
96 384 MPUCRI Не используется в AVR32UC
97 388 MPUCRD Не используется в AVR32UC
98 .392 MPUBRD Не используется в AVR32UC
99 396 MPUAPRI Регистр разрешения доступа к адресу MPU
области команд
100 400 MPUAPRD Регистр разрешения доступа к адресу MPU
области данных
101 404 MPUCR Регистр управления MPU
102-191 408-764 Резерв Зарезервированы для будущего использования
192-255 768— IMPL Определяется контекстом выполнения
1020
CPUCR — регистр управления ЦПУ.
Регистр, ‘ управляющий конфигурацией и поведением центрального
процессора. В этом регистре определены битовые поля, перечисленные
в табл. 2.6.
Табл. 2.6. Регистр управления центрального процессора CPUCR
ПОЛЯ Биты Значение после сброса Описание
Про- чие - Не используются. Читаются как 0. Должны быть за- писаны 0
SPL 15:11 16 Предел ожидания ведомого устройства. Максималь- ное количество тактовых циклов, в течение которого ведомое устройства может ожидать прерванного до- ступа к памяти RAM, занятой обращением ЦПУ. После истечения этого периода ЦПУ теряет арбитраж в доступе к RAM и доступ к RAM ведомого устрой- ства может быть возобновлен
CPL 10:6 16 Предел ожидания ЦПУ. Максимальное количество тактовых циклов, в течение которого ЦПУ может ожидать прерванного доступа к памяти RAM, заня- той обращением ведомого устройства. После истечения этого периода ведомое устройство теряет арбитраж в доступе к RAM и доступ к RAM ЦПУ может быть возобновлен
СОР 5:1 8 Период монопольного использования ЦПУ. Количе- ство циклов, в течение которого для ЦПУ гаранти- руется доступ к RAM после того, как ЦПУ выиграл арбитраж в доступе к RAM. Арбитраж не будет пере- смотрен в течение этого периода.
SIE 0 1 Разрешение интерфейса ведомого устройства. Если этот бит установлен, интерфейс ведомого устройства разрешен. В противном случае, он заблокирован и любой доступ ведомого будет остановлен
ECR — регистр причины исключения.
Этот регистр идентифицирует причину последнего выполненного ис-
ключения. Эта информация может быть использована, чтобы обрабаты-
вать исключения более эффективно в некоторых операционных системах.
Регистр модифицируется значением, равным смещению исключения отно-
сительно содержимого EVBA, сдвинутым на 2 разряда вправо. Значащими
являются только 9 младших разрядов смещения EVBA. Например, если
в ITLB содержится переход по адресу EVBA+0x50, то содержимое ECR
будет модифицировано значением 0х50»2==0х14. Регистр ECR не моди-
фицируется, когда генерируется исключение от точки останова или ис-
ключение OCD остановки ЦПУ. Для этих прерываний смещение задается
вектором, обеспечиваемым контроллером прерываний.
RSR_DBG — регистр возврата состояния для режима отладки.
Когда для процессора вводится режим отладки, содержимое регистра ста-
туса, имевшее место при предыдущем режиме, автоматически сохраняется
в регистре RSR DBG. Когда подпрограмма отладки завершается, команда
retd копирует сохраненное содержимое регистра RSR_DBG обратно в SR.
RARDBG — регистр возврата адреса для режима отладки.
Когда для процессора вводится режим отладки, содержимое программ-
ного счетчика, имевшее место в предыдущем режиме, автоматически со-
храняется в этом регистре. Когда подпрограмма отладки завершается, ко-
манда retd копирует сохраненное содержимое RAR_DBG обратно в PC.
CONFIGO/1 — регистр конфигурации 0/1.
Эти регистры используются для описания конфигурации и возможно-
стей процессора. Битовая структура этих регистров будет описана ниже.
COUNT — регистр счетчика циклов.
Регистр COUNT однократно инкрементируется в каждом тактовом ци-
кле независимо от остановов конвейерной обработки и сбросов конвейера.
Этот регистр доступен для чтения и записи. Он может использоваться вместе
с регистром COMPARE для создания таймера, функционирующего по преры-
ванию. По умолчанию после сброса регистр COUNT обнулен. Его инкремен-
тирование в каждом тактовом цикле не может быть заблокировано, он инкре-
ментируется даже во время поступления запроса прерывания от совпадения.
COMPARE — регистр сравнения для счетчика циклов.
Регистр COMPARE содержит значение, с которым постоянно сравнива-
ется содержимое регистра COUNT. Регистр COMPARE доступен для чте-
ния и записи. Когда содержимое регистров COMPARE и COUNT совпада-
ет, генерируется запрос прерывания. Этот запрос поступает в контроллер
прерываний, который может ускорить этот запрос, присвоив ему некото-
рый уровень приоритета. Запись значения в регистр COMPARE сбрасыва-
ет любое отложенное прерывание от совпадения. Исключение, связанное
с совпадением, запрещено, если в регистр COMPARE записано нулевое
значение. По умолчанию после сброса регистр COMPARE обнулен.
BEAR — регистр адреса ошибки шины.
Регистр содержит физический адрес, который вызвал ошибку на шине
данных. Этот регистр доступен только для чтения. Запись в него не запре-
щена, но ее результат игнорируется.
MPUARIn/MPUARDn — регистр адреса MPU области п команд / регистр
адреса MPU области н данных.
Регистры, содержимое которых задает базовые адреса и размеры обла-
стей защиты (описание см. выше).
MPUCRI/MPUCRD — регистр кэшируемости команд MPU / регистр кэ- :
шируемости данных MPU.
Регистры, содержимое которых определяет, являются ли области защи-
ты кэшируемыми (описание см. выше).
MPUBRD — регистр буферизованности данных.
Регистры, содержимое которых определяет, являются ли области защи-
ты буферизированными (описание см. выше).
MPUAPRI/MPUAPRD — регистр разрешения доступа к адресу MPU об-
ласти команд / регистр разрешения доступа к адресу MPU области данных.
Регистры,1 содержимое которых задает разрешение доступа к областям
защиты (описание см. выше).
MPUCR — регистр управления MPU.
Регистр, который управляет операциями MPU (описание см. выше).
2.9. Регистры конфигурации
реГистры конфигурации используются, чтобы сообщить приложениям
операционным системам об установках и конфигурации процессора, на
котором они выполняется.
Архитектура AVR32UC имеет в своем составе доступные только для
чтения регистры конфигурации CONFIGO и CONFIG1, показанные на
рис. 2.7. Их битовая структура приведена в табл. 2.7, 2.8.
2.10. Исключения и прерывания
Процессор AVR32UC содержит мощную схему обработки исключений. Раз-
личные источники исключений, например, некорректный код операции
или внешние запросы прерываний, имеют различные уровни приоритета,
тем самым гарантируя предсказуемое поведение системы, когда одновре-
менно генерируется множество исключений. Кроме того, ждущие обработ-
ки исключения с более высоким приоритетом могут прервать текущую об-
работку исключений с более низким приоритетом. Когда это происходит,
выполнение потока команд программы приостанавливается, а управле-
ние выполнением передается обработчику события по адресу, указанному
в табл. 2.9. Большинство обработчиков событий размещены в пространстве
кода последовательно, начиная с адреса, содержащегося в системном ре-
гистре EVBA. Интервал в пространстве памяти между соседними обра-
ботчиками составляет четыре байта. Это обеспечивает вполне достаточное
пространство для команды перехода, которая может быть там размещена
для перехода непосредственно к подпрограмме обработки события. Не-
сколько критических обработчиков имеют больший интервал друг между
другом, тем самым позволяя разместить полную подпрограмму обработки
события непосредственно по адресу, указанному в EVBA, со смещением,
генерируемым аппаратно.
Все внешние источники прерывания имеют автоматически векторизуе-
мый адрес программы обработки прерывания (ISR). Это позволяет кон-
троллеру прерываний непосредственно определять адрес ISR как адрес
относительно содержимого EVBA. Смещение вектора имеет размер 14
адресных разрядов, что соответствует максимальному смещению, равному
16384 байт. Адрес обработчика события рассчитывается системой по фор-
муле (EVBA | event_handler_offset), а не по формуле (EVBA + event_handler_
CONFIGO
31 24 23 20 19 16 15 13 12 10 9 7 6 5 4 3 2 1 0
Processor ID - Processor Revision AT AR MMUT F J P 0 S D R
CONFIG1
31 26 25 20 19 1615 13 12 10 9 6 5 3 2 0
IMMU sz DMMU SZ ISET ILSZ IASS DSET DLSZ DASS
Рис. 2.7. Регистры конфигурации CONFIGO и CONFIG1
Табл. 2.7. Описание битовых полей регистра конфигурации CONFIGO
Имя поля Биты Описание
Processor ID 31:24 Определяет тип процессора. Это поле позволяет прило- жению различать различные исполнения процессора
RESERVED 23:20 Зарезервированы для будущего использования
Processor revision 19:16 Определяет версию исполнения процессора
Тип архитектуры
Значение Семантика
АТ 15:13 0 AVR32A
1 Не используется в AVR32UC
Другое Зарезервировано
Версия архитектуры
Значение Семантика
AR 12:10 0 Не используется в AVR32UC
1 Версия 1
Другое Зарезервировано
Тип MMU
Значение Семантика
0 MMU отсутствует. Используется прямое отображение и отсутствует сегментация
MMUT 9:7 1 Не используется в AVR32UC
2 Не используется в AVR32UC
3 Модуль защиты памяти
Другое Зарезервировано
Наличие модуля (сопроцессора) с плавающей точкой
FPU
F 6 Значение Семантика
0 FPU отсутствует
1 Не используется в AVR32UC
Наличие расширения поддержки команд Java
Значение Семантика
J 5 0 Расширение поддержки команд Java от- сутствует
1 Не используется в AVR32UC
Наличие счетчиков выполнения
р Л Значение Семантика
J7 ч 0 Счетчики выполнения отсутствуют
1 Не используется в AVR32UC
Табл. 2.7.
(окончание)
поля Биты Описание
Наличие встроенной системы отладки OCD
Значение Семантика
О 3 0 OCD отсутствует
1 OCD имеется
Наличие поддержки команд SIMD
Значение Семантика
S 2 0 Поддержка команд SIMD отсутствует
1 Не используется в AVR32UC
Наличие поддержки команд DSP
1 Значение Семантика
D 1 0 Не используется в AVR32UC
1 Поддержка команд DSP отсутствует
Наличие поддержки команд
«чтение-модификация-запись» памяти
л Значение Семантика
К V 0 Не используется в AVR32UC
1 Поддержка команд «чтение-модификация- запись» памяти отсутствует
offset), где event_handler_offset — смещение обработчика. По этой причи-
не содержимое EVBA и области размещения кода обработки исключения
должны быть предварительно заданы соответствующим образом. Те же
самые механизмы используются контроллером прерываний для обслужи-
Табл. 2.8. Описание битовых полей регистра конфигурации CONFIG1
_ Имя поля Биты Описание
IMMU SZ 31:26 Задает количество точек входа MPUARI. Имеет значение 0 в системах MPU с общедоступными регистрами MPUAR
DMMU SZ 25:20 Задает количество точек входа MPUARD. Имеет значение 0 в системах MPU с общедоступными регистрами MPUAR
ISET 19:16 Не используется в AVR32UC
ILSZ 15:13 Не используется в AVR32UC
IASS 12:10 Не используется в AVR32UC
DSET 9:6 Не используется в AVR32UC
DLSZ 5:3 Не используется в AVR32UC
DASS 2:0 Не используется в AVR32UC
вания всех прочих типов событий, включая внешние запросы прерываний,
что обеспечивает единую схему обработки событий.
2.10.1. Системный стек
При обработке событий в процессоре AVR32UC, как и во всех прочих
устройствах архитектуры AVR32A, использует системный стек. На верши-
ну этого стека указывает регистр-указатель вершины стека SPSYS. Стек
используется для сохранения и выгрузки регистров R8—R12, LR, регистра
статуса и адреса возврата. Поскольку код обработчика наступившего со-
бытия может быть критичным ко времени выполнения, то регистр SPSYS
должен указать на адрес памяти в разделе IRAM, поскольку время доступа
к этому разделу памяти сравнительно мало и детерминировано. Пользова-
тель должен также удостовериться, что системный стек имеет достаточную
емкость с тем, чтобы при любом наступившем событии можно было сохра-
нить в стеке требуемые регистры. Если системный стек полон, когда про-
исходит какое-то событие, система автоматически переходит в состояние
UNDEFINED.
2.10.2. Запросы прерываний и исключений
Когда наступает какое-либо событие, кроме команды seal! или запроса на
переход в состояние отладки, автоматически происходит описанная ниже
последовательность действий.
1. Ждущее обработки событие не будет воспринято ядром, если оно
замаскировано. Чтобы маскировать различные события, используются
биты I3M, I2M, ПМ, ЮМ, ЕМ и GM в регистре статуса. Замаскированы
могут быть не все события. Несколько критических событий (NMI, не-
распознанное исключение, шинная ошибка) не могут быть замаскирова-
ны. Когда событие воспринято ядром, аппаратные средства автоматически
устанавливают биты маски, соответствующие всем источникам с равным
или более низким приоритетом. Это запрещает восприятие ядром других
событий того же самого или более низкого приоритета, кроме критиче-
ских, перечисленных выше. Программное обеспечение может выборочно
сбросить некоторые или все из вышеперечисленных битов после сохра-
нения необходимого состояния, если требуется реализовать другие схемы
расстановки приоритетов. Такой подход гарантирует, что все наступившие
и ожидающие обработки события будут в итоге восприняты центральным
процессором.
2. Когда запрос воспринят, содержимое регистра статуса и программ-
ного счетчика, образующих текущий контекст, автоматически сохраняется
в системном стеке. Если обрабатываемое событие — INTO, INTI, INT2 или
INT3, то содержимое регистров R8—R12 и LR также автоматически со-
храняется в системном стеке. Сохранение регистра статуса гарантирует, что
ядро будет возвращено в предыдущий режим выполнения, когда завершит-
ся обработка текущего события. Когда происходят исключения, биты ЕМ
и GM автоматически устанавливаются, однако приложение в случае необ-
узости может «вручную» разрешить вложение исключений, сбросив со-
х0,ДеТСТВующий бит. Каждый обработчик исключения имеет свой собствен-
оТВй адрес, который уникально идентифицирует источник исключения.
НЬ з Биты режима автоматически устанавливаются таким образом, чтобы
пажать приоритет воспринятого события, а также автоматически выби-
° ется корректный банк регистрового файла (см. рис. 2.4). Адрес обработ-
чика события, показанный в табл. 2.9, автоматически загружается в про-
граммный счетчик.
Табл. 2.9. Приоритеты и адреса обработчиков событий, вызывающих ис-
ключения
При- ори- тет Адрес обработчика Имя Событие- источник Сохранение адреса возврата
1 0х8000_0000 Сброс Внешний вход Неопределенное
2 Обеспечивается OCD останав- Система Первая незавершенная
системой OCD ливает ЦПУ OCD выполнением команда
3 EVBA+OxOO Нераспознанное исключение Внутрен- ний PC не указывает на команду
4 EVBA+0x04 TLB множе- ственное об- ращение Не ис- пользу- ется
5 EVBA+0x08 Ошибка вы- борки данных на шине Шина данных Первая незавершенная выполнением команда
6 EVBA+OxOC Ошибка вы- борки команды на шине Шина данных Первая незавершенная выполнением команда
7 EVBA+OxlO NMI Внешний вход Первая незавершенная выполнением команда
8 Автоматически Запрос, Внешний Первая незавершенная
задаваемый вектор прерывания 3 вход выполнением команда
9 Автоматически Запрос Внешний Первая незавершенная
задаваемый вектор прерывания 2 вход выполнением команда
10 Автоматически Запрос Внешний Первая незавершенная
задаваемый вектор прерывания 1 вход выполнением команда
11 Автоматически Запрос Внешний Первая незавершенная
задаваемый вектор прерывания 0 вход выполнением команда
12 EVBA+0X14 Команда адреса ЦПУ PC не указывает на команду
13 EVBA+0x50 ITLB Miss (так называемая «выпадающая» команда) Не ис- пользу- ется
Табл. 2.9.
(окончание)
При- ори- тет Адрес обработчика Имя Событие- источник Сохранение адреса возврата
14 EVBA+0X18 Защита ITLB MPU PC не указывает на команду
15 EVBA+OxlC Точка останова Система OCD Первая незавершенная выполнением команда
16 EVBA+0x20 Некорректный код операции Команда PC не указывает на команду
17 EVBA+0x24 Некорректная команда Команда PC не указывает на команду
18 EVBA+0x28 Нарушение полномочий Команда PC не указывает на команду
19 EVBA+0x2C Плавающая точка Не ис- пользуется
20 EVBA+0x30 Сопроцессор отсутствует Не ис- пользуется
21 EVBA+OxlOO Вызов режима супервизора Команда РС(Вызов режима супервизора) + 2
22 EVBA+0x34 Адрес данных (чтение) ЦПУ PC не указывает на команду
23 EVBA+0x38 Адрес данных (запись) ЦПУ PC не указывает на команду
24 EVBA+0x60 DTLB Miss (чтение) Не ис- пользуется
25 EVBA+0x70 DTLB Miss (запись) Не ис- пользуется
26 EVBA+0x3C Защита DTLB (чтение) MPU PC не указывает на команду
27 EVBA+0x40 Защита DTLB (запись) MPU PC не указывает на команду
28 EVBA+0x44 Модификация DTLB Не ис- пользуется
После осуществления указанной последовательности действий выпол-
нение подпрограммы обработчика события продолжается с рассчитанного
адреса выполнения.
Команда rete сообщает ядру о конце наступившего события. Когда про-
исходит окончание обработки, сохраненное содержимое регистра статуса
и адрес возврата автоматически выгружаются из системного стека и за-
писываются в регистр статуса и программный счетчик. Если команда rete
поступает для возврата из INTO, INTI, INT2 или INT3, то сохраненное
содержимое регистров R8—R12 и LR также автоматически выгружается
из системного стека и записывается в соответствующие регистры. Вос-
новленный регистр статуса содержит информацию, позволяющую ядру
стаобновить выполнение программы в предыдущем режиме. Эти действия
В°реРшают обработку события.
2.Ю.З. Вызовы режима супервизора
Система команд архитектуры AVR32 включает команду запроса на пере-
ход в привилегированный режим супервизора. Команда scall предназначена
ля того, чтобы привилегированные подпрограммы можно было вызывать
из любого контекста. Это облегчает совместное использование кода в раз-
личных режимах выполнения программы. Механизм выполнения команды
scall разработан таким образом, чтобы минимизировать время ее выпол-
нения при вызовах подпрограмм супервизора из критичных ко времени
выполнения обработчиков событий. Команда scall ведет себя по-разному
в зависимости от того, из какого режима она вызывается. Эти различия
детализированы в справочниках по системе команд AVR32. Чтобы после
выполнения команды scall возвращение из подпрограммы супервизора
происходило в корректный контекст, это возвращение производится с по-
мощью команды rets. В архитектуре AVR32UC команды scall и rets исполь-
зуют системный стек, чтобы сохранять в нем адрес возврата и содержимое
л регистра статуса.
2.10.4. Запросы отладки
Архитектура AVR32 определяет специальный режим отладки (Debug). Си-
стема переходит в этот режим, когда ядро получает запрос отладки. Вход
в режим отладки может быть замаскирован битом DM в регистре ста-
туса. После входа в режим отладки аппаратные средства устанавливают
бит SR[D] и производится переход к обработчику исключений отладки.
По умолчанию режим отладки выполняется в контексте исключения, но
с собственными регистром адреса (программным счетчиком) и регистром
статуса. Наличие этих специализированных регистров позволяет избежать
необходимости сохранять указанные данные в системном стеке, улучшая
таким образом возможности системы в плане отладки. В режиме отладки
биты режима в регистре статуса доступны для программной модификации,
а регистры доступны для мониторинга во всех контекстах при сохранении
полных привилегий.
Выход из режима отладки производится путем выполнения команды
retd. При этом происходит возвращение к предыдущему контексту.
2.10.5. Точки входа в обработчики событий
архитектуре AVR32 имеется несколько различных точек входа в обработ-
ки событий (начальных адресов кода обработчиков). Первая и главная из
тих точек входа — адрес (вектор) сброса. В AVR32UC адрес сброса имеет
значение 0х8000_0000. Это местоположение адреса сброса соответствует
загрузочной области Flash -памяти.
Для исключений, связанных с TLB Miss (не используются в AVR32UC,
так как эта архитектура не имеет модуля MMU), обработчики имеют вы-
деленное пространство размещения относительно содержимого EVBA.
Это ускоряет их выполнение, позволяя избежать необходимости выполнять
команду перехода к аппаратному обработчику события. Все другие исклю-
чения имеют выделенные точки входа в подпрограммы обработчиков со-
бытий относительно содержимого EVBA. Адрес подпрограммы обработчи-
ка идентифицируется непосредственно по источнику исключения.
Архитектура AVR32UC использует защитные исключения ITLB и DTLB,
чтобы сообщить системе о нарушении защиты модуля MPU.
Всем внешним запросам прерываний также определено местонахожде-
ние точек входа по смещении относительно EVBA. Это смещение автома-
тического вектора задается контроллером внешних прерываний. При ра-
боте с прерываниями программист должен быть уверен, что ни одно из
заданных векторных смещений не сталкивается с размещением в памя-
ти другого кода. Автоматический вектор состоит из 14 адресных разря-
дов, обеспечивая таким образом максимальный размер смещения, равный
16384 байт.
При загрузке содержимого EVBA в указатель по соображениям защиты;
памяти обработчики событий должны быть расположены в недоступной
для записи Flash-памяти или в защищенной привилегированным режимом
области памяти, если таковые имеются в системе.
Если при выполнении процессором одной команды происходит сра-
зу несколько событий, то они обрабатываются в соответствии с их прио-
ритетами. Приоритеты вызывающих исключения событий представлены
в табл. 2.9. Если несколько событий происходит в ходе выполнения не-;
скольких команд или на разных ступенях конвейера, то событие, произо-
шедшее во время выполнения самой первой по времени команды, всегда
обрабатывается прежде любых событий, произошедших во время выпол- ‘
нения любой более поздней команды, даже если последние имеют более .
высокий приоритет.
Как уже было отмечено, некоторые из исключений, перечисленных
в табл. 2.9, не используются в архитектуре AVR32UC, так как она не со-
держит MMU, интерфейса сопроцессора и модуля поддержки вычислений
с плавающей точкой.
2.10.6. Нереализованные команды
Перечисленные ниже команды не реализованы в AVR32UC и при попытке
выполнения вызовут исключение нереализованной (некорректной) команды:
• Все команды SIMD.
• Все команды сопроцессора.
• retj, incjosp, popjc, pushjc.
• tlbr, tlbs, tlbw.
cache.
ГЛДВА 3
ОРГАНИЗАЦИЯ ПАМЯТИ
3.1. Встроенная память МК
Устройства архитектуры AVR32UC имеют встроенную высокоскоростную
Flash-память объемом от 512к (AT32UC3A0512, AT32UC3A1512) до 64к
(AT32UC3B064, AT32UC3B164).
Flash-память имеет следующие типовые особенности (на примере МК
подсемейства AT32UC3A):
• 0 циклов ожидания при тактовой частоте до 30 МГц в самых плохих
условиях эксплуатации,
• 1 цикл ожидания при тактовой частоте до 60 МГц в самых плохих
условиях эксплуатации,
• конвейерная Flash-архитектура, позволяющая производить блочное
чтение областей Flash-памяти со скрытым временем ожидания, со-
ответствующим одному циклу,
• конвейерная Flash-архитектура, как правило, увеличивает реальное
время ожидания при 1 цикле ожидания только на 15% (AT32UC3A)
или на 8% (AT32UC3B) по сравнению с временем при 0 циклов
ожидания,
• 100 000 циклов записи, 15-летний срок сохранности данных,
• время программирования 1 страницы — 4 мс, время стирания всего
кристалла — 8 мс,
• возможность блокировки сектора, защита начального загрузчика,
бит защиты,
' 64 fuse-бита, 32 из которых сохраняются во время стирания кри-
сталла,
пользовательская страница для данных, которые сохраняются во
время стирания кристалла.
Помимо Flash-памяти устройства AVR32UC также имеют встроен-
нУю высокоскоростную память SRAM с доступом за 1 тактовый цикл
при максимальной тактовой частоте и с объемом от 64к (AT32UC3A0512,
^T32UC3B1612’ AT32UC3A0256’ AT32UC3A1256) ДО 16к (AT32UC3B064,
3.2. Карта физической памяти
Системная шина устройств AVR32UC физически реализована как шинная
атрица. Все системные адреса шины являются фиксированными и не мо-
УТ быть переотображены никогда, даже при начальной загрузке.
H'FFFFFFFF
1 Г адресного
пространства
для высокоскоростной
шины
HSB
H'COOOOOOO
1 Г адресного
пространства
для памяти
программ
BOOT
H'80000000
2 Г адресного
пространства
для встроенной
RAM данных
IRAM
Н'00000000
Рис. 3.1. Карта 32-разрядного адресного пространства памяти AVR32UC
Карта 32-разрядного адресного пространства памяти AVR32UC по-
казана на рис. 3.1. Как можно видеть из рисунка, пространство памяти
содержит три раздела, названные IRAM, BOOT и HSB. Раздел IRAM
содержит внутреннюю память стадии ЕХ конвейера, которая отображе-
на с адреса 0 в сторону возрастания адресов. Раздел BOOT начинается
с адреса 0х8000_0000, который является адресом сброса для процессора
AVR32UC. Этот раздел содержит встроенную Flash-память программ,
отображенную с адреса 0х8000_0000 в сторону возрастания адресов.
Раздел HSB содержит адреса специальных регистров пользовательских
интерфейсов всех модулей МК, отображенных на шину HSB. Сюда от-
носятся периферийные устройства типа USART и внешних интерфейсов
памяти.
Пространство памяти однородно, так что код программы может вы-
полниться в любом из этих трех разделов. Доступ к данным также может
быть выполнен в любом из них. Однако в МК AVR32UC можно запретить
определенные виды доступа к некоторым разделам памяти, например, за-
пись во Flash-память раздела BOOT.
3.3. Интерфейсы памяти
Центральный процессор архитектуры AVR32UC включает в себя три ин-
терфейса памяти:
• Стадия IF конвейера имеет интерфейс ведущего к шине HSB для
выборки команд.
• Стадия ЕХ конвейера имеет интерфейс ведущего к шине HSB для
доступа к данным из раздела памяти BOOT или из раздела памяти
HSB.
. Стадия EX конвейера имеет интерфейс ведомого к шине HSB, по-
зволяющий осуществлять доступ других модулей системы к адре-
сам из раздела памяти IRAM.
Все выборки команд через интерфейс ведущего к шине HSB в стадии
тр выполняются с выравниванием адресов в границах слова, исключая
1 пвую выборку после смены потока выполняемых команд (перезагрузки
онвейера), которая может использовать выравнивание адресов в границах
полуслова. В стадии IF запись невозможна, а возможно только чтение,
которое может осуществляться по всем адресам, отображенным на шину
HSB. Чтение выполняется как накопление блоков неопределенной длины.
Интерфейс ведущего к шине HSB в стадии IF также поддерживает работу
более медленных ведомых устройств.
Стадия ЕХ конвейера разделяет доступ ЦПУ к разделу IRAM и к раз-
делу BOOT/HSB. Любой доступ к разделу IRAM выполняется через спе-
циализированные высокоскоростные блоки RAM контроллера памяти.
Эти быстрые блоки RAM способны осуществлять чтение или запись во
временных пределах одного тактового цикла процессора. Таким образом,
команда загрузки в стадии ЕХ будет иметь готовые данные чтения уже
в конце тактового цикла, чтобы записать их в регистровый файл.
Любой доступ ЦПУ к разделу BOOT или разделу HSB будет произ-
водиться за некоторое определенное количество тактовых циклов. Запись
Рис. 3.2. Блок-схема шинной матрицы МК подсемейства AT32UC3B
Табл. 3.1. Физическая карта памяти МК подсемейства AT32UC3A
Стартовый Размер Устройство
адрес AT32U- СЗА0512 AT32U- СЗА1512 AT32U- СЗА0256 AT32U- СЗА1256 AT32U- СЗА0128 AT32U- СЗА1128
0х0000_0000 64 к 64 к 64 к 64 к 32 к 32 к Встроенная память SRAM
0х8000_0000 512 к 512 к 256 к 256 к 128 к 128 к Встроенная память Flash
0хС000_0000 16 М - 16 М - 16 М - EBI SRAM CSO
0хС800_0000 16 М - 16 М - 16 М - EBI SRAM CS2
0хССОО_ОООО 16 М - 16 М - ' 16 М - EBI SRAM CS3
0xD000_000() 128 М - 128 М - 128 М - EBI SRAM CS1/SDRAM CSO
ОхЕОО0_ОООО 64 к 64 к 64 к 64 к 64 к 64 к Конфигурация USB
0xFFFE_0000 64 к 64 к 64 к 64 к 64 к 64 к Мост A HSB-PB
0xFFFF_0000 64 к 64 к 64 к 64 к 64 к 64 к Мост В HSB-PB
Табл. 3.2. Физическая карта памяти МК подсемейства AT32UC3B
Стартовый Размер Устройство
адрес AT32U- C3B0256 AT32U- C3B1256 AT32U- СЗВ0128 AT32U- СЗВ1128 AT32U- СЗВ064 AT32U- СЗВ164
0x0000_0000 32 k 32 к 32 к 32 к 16 к 16 к Встроенная память SRAM
0x8000_0000 256 k 256 к 128 к 128 к 64 к 64 к Встроенная память Flash
OxDOOOJIOOO 64 к 64 к 64 к 64 к 64 к 64 к Конфигурация USB
OxFFFE_0000 64 к 64 к 64 к 64 к 64 к 64 к Мост A HSB-PB
OxFFFF_0000 64 к 64 к 64 к 64 к 64 к 64 к Мост В HSB-PB
здел BOOT или HSB будет выполняться как поток непоследовательных
в Ра аЧ> каждая из которых займет один тактовый цикл в случае, если пе-
пе1,еча де будет остановлена ведомым устройством. Чтение ЦПУ данных из
Ре,я да BOOT или раздела HSB будет выполняться за два тактовых цикла
Ра3ун цикл на фазу адреса и один цикл на фазу данных).
Интерфейс ведомого ЦПУ к шине HSB также реализован с помощью
сокоскоростных блоков RAM контроллера памяти. Этот интерфейс по-
вЬ ляет другим модулям системы, например, контроллерам DMA, произво-
чтение или запись данных в блоки RAM. Во всех случаях интерфейс
поддерживает блочные чтение и запись. Управление арбитражем между
ЦПУ и ведомым интерфейсом в отношении блоков RAM производится
с помощью регистра управления ЦПУ (CPUCR), описание которого было
приведено выше.
Принадлежность областей адресов различным модулям МК AT32UC3A
показана в табл. 3.1, МК AT32UC3B — в табл. 3.2. Доступ к неиспользуе-
мым областям возвращает результат ошибки ведущему устройству, запро-
сившему такой доступ.
Flash-память МК AT32UC состоит из страниц размером по 128 слов.
В устройствах с Flash-памятью размером 512к имеется 1024 таких страниц,
/256к — 512 страниц, 128к — 256 страниц, 64к — 128 страниц.
Шинная матрица МК подключена к нескольким ведущим и ведомым
устройствам, перечисленным в табл. 3.3, 3.4 (МК AT32UC3A) и табл. 3.5,
3.6 (МК AT32UC3B). Каждое ведущее устройство имеет свои собственные
шину и шинный декодер, что дает возможность осуществлять индивиду-
альное управление памятью этого устройства.
Номер ведущего устройства из табл. 3.3, 3.5 может использоваться, что-
бы индексировать регистр управления шинной матрицей HMATRIX.
Каждое ведомое устройство имеет своего собственного арбитра, что
дает возможность осуществлять индивидуальный арбитраж ведомых. Но-
мер ведомого устройства из табл. 3.4, 3.6 также может использоваться, что-
бы индексировать регистр HMATRIX.
Для иллюстрации на рис. 3.2 показана блок-схема шинной матрицы
МК подсемейства AT32UC3B.
Табл. 3.3. Ведущие устройства, подключенные к шинной матрице МК
AT32UC3A
Номер ведущего Название устройства
устройства
Ведущий 0 Данные ЦПУ
Ведущий 1 Команды ЦПУ
Ведущий 2 ЦПУ SAB
Ведущий 3 PDCA
Ведущий 4 Ведущий 5 МАСВ DMA USBB DMA
Табл. 3.4. Ведомые устройства, подключенные к шинной матрице МК
AT32UC3A
Номер ведомого устройства Название устройства
Ведомый 0 Встроенная Flash-память
Ведомый 1 Мост 0 HSB-PB
Ведомый 2 Мост 1 HSB-PB
Ведомый 3 Встроенная ведомая память SRAM
Ведомый 4 Ведомый USBB
Ведомый 5 EBI
Табл. 3.5. Ведущие устройства, подключенные к шинной матрице МК
AT32UC3B
Номер ведущего устройства Название устройства
Ведущий 0 Данные ЦПУ
Ведущий 1 Команды ЦПУ
Ведущий 2 ЦПУ SAB
Ведущий 3 PDCA
Ведущий 4 USBB DMA
Табл. 3.6. Ведомые устройства, подключенные к шинной матрице МК
AT32UC3B
Номер ведомого устройства Название устройства
Ведомый 0 Встроенная Flash-память
Ведомый 1 Мост 0 HSB-PB
Ведомый 2 Мост 1 HSB-PB
Ведомый 3 Встроенная ведомая память SRAM
Ведомый 4 Ведомый USBB _
ГЛАВА 4
СИСТЕМА КОМАНД AVR32
Этот раздел содержит описание команд архитектуры AVR32UC с указа-
нием количества тактовых циклов, которое требуется на их выполнение.
Все команды AVR32UC разбиты на группы. Команды внутри каждой груп-
пы выполняются в конвейере сходным образом.
В приведенных ниже таблицах указывается такой параметр команд как
время ожидания. Поясним его значение на следующем примере. Команда
issue, выполняемая в стадии ID конвейера, инициирует переход в стадию
ЕХ. Время ожидания для команды issue представляет собой количество
тактовых циклов, прошедших между моментом выборки команды issue
и моментом выборки следующей команды. Для некоторых команд, вызы-
вающих изменение потока (перезагрузку конвейера), это время включает
«штрафные» тактовые циклы, вызванные сбросом конвейера. Время ожи-
дания команды issue предполагает, что команда и блоки памяти данных
способны возвратить команду или данные в одном цикле, что не может
быть выполнено для медленных блоков программной памяти или блоков
памяти данных, отображенных на шину HSB.
Большинство команд AVR32 может использовать программный счет-
чик (PC) как регистр адресата (приемника). Выполнение такой команды
приведет к переходу по расчетному адресу. Переход выполняется, когда эта
команда завершает запись в PC. Следует заметить, что команды, произво-
дящие запись в PC, будут иметь дополнительное время ожидания, равное
Двум тактовым циклам, из-за сброса конвейера.
4.1. Команды арифметико-логического устройства АЛУ
Эта группа команд включает простые команды АЛУ, выполняемые за один
тактовый цикл, например, сложение и вычитание, а также команды услов-
ного вычитания и перемещения. Все команды этой группы, кроме коман-
ды ssrf для разрядов 15—31, выполняются за один цикл, а результат выпол-
нения доступен для использования в следующей команде.
Команды АЛУ представлены в табл. 4.1.
4.2. Команды умножения
Чт "?НДЫ умножения требуют одного «прохода» через массив множителей,
°оы выдать результат разрядностью 32 или 48 разрядов. Эта группа ко-
Д аппаратно не устанавливает никаких флагов, кроме подгруппы ко-
НД mulsat, которые устанавливают флаг Q, если произошло насыщение.
Табл. 4.1. Команды АЛУ
Мнемоника Операнды Описание Время ожида- ния, тактовые циклы
Abs c Rd Абсолютное значение 1
асг c Rd Сложение переноса с регистром 1
adc E Rd, Rx, Ry Сложение с учетом переноса 1
add C Rd, Rs Сложение 1
E Rd, Rx, (Ry « sa) Сложение со сдвигом 1
add{cond4} E Rd, Rx, Ry Сложение, если выполняется условие. Только для ЦПУ версии 2 и выше 1
addhh.w C Rd, Rx<part>, Ry<part> Сложение полуслов со знаком (32 16 + 16) 1
addabs C Rd, Rx, Ry Сложение абсолютных значений 1
cp.b E Rd, Rs Сравнение байтов 1
cp.h E Rd, Rs Сравнение полуслов 1
cp C Rd, Rs Сравнение 1
C Rd, imm 1
E Rd, imm 1
cpc C Rd Сравнение с учетом переноса 1
E Rd, Rs 1
max E Rd, Rx, Ry Возврат максимума со знаком 1
min E Rd, Rx, Ry Возврат минимума со знаком 1
neg C Rd Дополнение до двух 1
rsub C Rd, Rs Обратное вычитание 1
E Rd, Rs, k8 1
rsub{cond4} E Rd, imm Обратное вычитание, если выпол- няется условие. Только для ЦПУ версии 2 и выше 1
sbc E Rd, Rx, Ry Вычитание с учетом переноса 1
scr C Rd Вычитание переноса из регистра 1
sub C Rd, Rs Вычитание 1
E Rd, Rx, (Ry « sa) 1
C Rd, imm 1
E Rd, imm 1
E Rd, Rs, imm 1
Табл. 4.1.
(продолжение)
Операнды Описание Время ожида- ния, тактовые циклы
subhh.w C Rd, Rx<part>, Ry<part> Вычитание полуслов co знаком (32 <- 16 - 16) 1
sub{cond4} E Rd, imm Вычитание непосредственного зна- чения, если выполняется условие 1
E Rd, imm Вычитание, если выполняется условие. Только для ЦПУ версии 2 и выше 1
tnbz C Rd Тестирование на равенство байта нулю 1
and C Rd, Rs Логическое И (AND) 1
E Rd, Rx, Ry « sa 1
E Rd, Rx, Ry » sa 1
and{cond4} E Rd, Rx, Ry Логическое И (AND), если выпол- няется условие. Только для ЦПУ ревизии 2 и выше 1
andn C Rd, Rs Логическое И-НЕ (AND NOT) 1
andh E Rd, imm Логическое И (AND) старшего по- луслова, младшее полуслово неиз- менно 1
E Rd, imm, COH Логическое И (AND) старшего по- луслова, другое полуслово сбрасы- вается 1
andl E Rd, imm Логическое И (AND) младшего по- луслова, старшее полуслово неиз- менно 1
E Rd, imm, COH Логическое И (AND) младшего по- луслова, другое полуслово сбрасы- вается 1
com C Rd Поразрядное дополнение (NOT) 1
eor C Rd, Rs Логическое исключающее ИЛИ (EOR) 1
E Rd, Rx, Ry « sa 1
E Rd, Rx, Ry » sa 1
e°r{cond4} E Rd, Rx, Ry Логическое исключающее ИЛИ, если выполняется условие. Только для ЦПУ версии 2 и выше 1
Табл. 4.1.
(продолжение)
Мнемоника Операнды Описание Время ожида- ния, тактовые циклы
eorh E Rd, imm Логическое исключающее ИЛИ (для старшего полуслова) 1
eorl E Rd, imm Логическое исключающее ИЛИ (для младшего полуслова) 1
or C Rd, Rs Логическое ИЛИ (OR) 1 "
E Rd, Rx, Ry « sa 1
E Rd, Rx, Ry » sa 1
or{cond4} E Rd, Rx, Ry Логическое ИЛИ, если выполняет- ся условие. Только для ЦПУ версии 2 и выше 1
orh E Rd, imm Логическое ИЛИ (для старшего по- луслова) 1
orl E Rd, imm Логическое ИЛИ (для младшего полуслова) 1
tst C Rd, Rs Тестирование на равенство регистра нулю 1
bfins E Rd, Rs, o5, w5 Вставка значения w5 в младшие разряды Rs с помещением результа- та в Rd с разрядным смещением о5 1
bfexts E Rd, Rs, o5, w5 Извлечение и замена единицами w5 младших разрядов из Rs с раз- рядным смещении о5 и помещение результата в Rd 1
bfextu E Rd, Rs, o5, w5 Извлечение и замена нулями w5 младших разрядов из Rs с раз- рядным смещении о5 и помещение результата в Rd 1
bld E Rd, b5 Загрузка бита 1
brev C Rd Инверсия бита 1
bst E Rd, b5 Сохранение бита 1
casts.b C Rd Подбор байта в слове со знаком 1
casts.h C Rd Подбор полуслова в слове со знаком 1
castu.b C Rd Подбор байта в слове без знака 1 _
castu.h c Rd Подбор полуслова в слове без знака 1 _
cbr c Rd, b5 Сброс бита в регистре 1
Табл. 4.1.
(окончание)
{мнемоника Операнды Описание Время ожида- ния, тактовые циклы
с1£_ E Rd, Rs Счет начальных нулей 1
swapb C Rd, b5 Установка бита в регистре 1
C Rd Перестановка байтов в регистре 1
swap.bh C Rd Перестановка байтов в каждом по- луслове 1
swap.h c Rd Перестановка полуслов в регистре 1
asr E Rd, Rx, Ry Арифметический сдвиг вправо (со знаком) 1
E Rd, Rs, sa 1
C Rd, sa 1
Isl E Rd, Rx, Ry Логический сдвиг влево 1
E Rd, Rs, sa 1
C Rd, sa 1
Isr E Rd, Rx, Ry Логический сдвиг вправо 1
E Rd, Rs, sa 1
C Rd, sa 1
rol C Rd Вращение влево через перенос 1
ror C Rd Вращение вправо через перенос 1
mov C Rd, imm Загрузка непосредственного значе- ния в регистр 1
E Rd, imm 1
C Rd, Rs Копирование регистра 1
niov{cond4} E Rd, Rs Копирование регистра, если усло- вие истинно 1
E Rd, imm Загрузка непосредственного значе- ния в регистр, если условие ис- тинно 1
niovh E Rd, imm Загрузка непосредственного значе- ния в старшее полуслово регистра. Только для ЦПУ версии 2 и выше 1
csrf C b5 Сброс флага в регистре статуса 1
csrfcz _____ c b5 Копирование флага регистра стату- са в С и Z 1
ssrf ~~— c b5 Установка флага в регистре статуса 1/3
Sr(cond4} c Rd Установка регистра в зависимо- сти от истинности или ложности условия 1
Табл. 4.2. Команды умножения
Мнемоника Операнды Описание Время ожи- дания, тактовые циклы
mul E Rd, Rx, Ry Умножение (32 <- 32 x 32) 1
E Rd, Rs, imm Умножение на непосредственное значение 1
mulhh.w E Rd, Rx<part>, Ry<part> Знаковое умножение полуслов (32 <- 16 х 16) 1
mulnhh.w E Rd, Rx<part>, Ry<part> Знаковое умножение полуслов (32 <- 16 х 16) 1
mulnwh.d E Rd, Rx, Ry<part> Знаковое умножение слова и полуслова (48 32 х 16) 1
mulwh.d E Rd, Rx, Ry<part> Знаковое умножение слова и полуслова (48 <- 32 х 16) 1
mulsathh.h E Rd, Rx<part>, Ry<part> Дробное знаковое умножение с насыщением. Возвращается полуслово (16 16 х 16) 1
mulsathh.w E Rd, Rx<part>, Ry<part> Дробное знаковое умножение с насыщением. Возвращается слово (32 16 х 16) 1
mulsatwh.w E Rd, Rx, Ry<part> Дробное знаковое умножение с насыщением. Возвращается слово (32 «- 32 х 16) 1
mulsatrndhh.h E Rd, Rx<part>, Ry<part> Знаковое умножение с округлением. Возвращается полуслово (16 16 х 16) 1
mulsatmdwh.w E Rd, Rx, Ry<part> Знаковое умножение с округлением. Возвращается слово (32 <- 32 х 16) 1
При выполнении команд умножения с округлением mulmdhh к конеч-
ному результату добавляется округляющее значение 0x8000.
Команды умножения перечислены в табл. 4.2.
4.3. Команды умножения с накоплением МАС
Команды МАС требуют одного «прохода» через массив множителей, что-
бы выдать результат разрядностью 32 или 48 разрядов. Этот результат
добавляется к содержимому используемого в команде аккумуляторного
Табл. 4.3. Команды МАС
^^немоника Операнды Описание Время ожи- дания, тактовые циклы
И1ЯС E Rd, Rx, Ry Умножение с накоплением (32 <- 32x32 + 32) 1/2
machh.w E Rd, Rx<part>, Ry<part> Знаковое умножение полуслов с накоплением (32 <- 16x16 + 32) 1/2
niachh.d E Rd, Rx<part>, Ry<part> Знаковое умножение полуслов с накоплением (48 е- 16x16 + 48) 1/2
macwh.d E Rd, Rx, Ry<part> Знаковое умножение слова и полуслова с накоплением (48 <- 32 х 16 + 48) 1/2
macsathh.w E Rd, Rx<part>, Ry<part> Дробное знаковое умножение с накоплением и насыщением. Возвращается слово (32 <- 16x16 + 32) 1/2
(накапливающего) регистра из состава регистрового файла. Достоверная
копия содержимого аккумуляторного регистра может кэшироваться в ак-
кумуляторной кэш-памяти (AccCache). Если этого не происходит, то для
чтения аккумуляторного регистра из регистрового файла необходим до-
полнительный тактовый цикл. По этой причине время ожидания каждой
из команд МАС зависит от того, кэшируется ли аккумуляторный регистр
в AccCache.
Эта группа команд не устанавливает никаких флагов, за исключением
команды macsathh.w, которая устанавливает флаг Q, если произошло на-
сыщение.
Команды МАС перечислены в табл. 4.3.
4.4. Команды умножения с накоплением повышенной
разрядности MulMac64
Команды Ми1Мас64 требуют двух «проходов» через массив множи-
телей, чтобы выдать результат разрядностью 64 разряда. Для команд
Wacs.d и macu.d достоверная копия аккумуляторного регистра может
Кэшироваться в AccCache. Если этого не происходит, то для чтения
аккумуляторного регистра из регистрового файла необходим дополни-
тельный тактовый цикл. По этой причине время ожидания каждой из
этих команд зависит от того, кэшируется ли аккумуляторный регистр
в AccCache.
Команды Ми1Мас64 перечислены в табл. 4.4.
Табл. 4.4. Команды MulMac64
Мнемоника Операнды Описание Время ожидания, тактовые циклы
macs.d E Rd, Rx, Ry Знаковое умножение с накоплением (64 <- 32x32 + 64) 3/4
macu.d E Rd, Rx, Ry Беззнаковое умножение с накоплением (64 <- 32x32 + 64) 3/4
muls.d E Rd, Rx, Ry Знаковое умножение (64 32 х 32) 2
mulu.d E Rd, Rx, Ry Беззнаковое умножение (64 <- 32 х 32) 2
4.5. Команды деления
Команды деления требуют для своего выполнения нескольких циклов
в конвейерной стадии ЕХ. Команды divs и divu будут прерваны немедленно
в случае, если поступят запросы на любые прерывания, с тем чтобы ап-
паратно ограничить сверху время реакции системы на прерывание. Время
ожидания команд деления для версий 1 и 2 ЦПУ AVR32UC различно.
Команды деления перечислены в табл. 4.5.
Табл. 4.5. Команды деления
Мнемоника Операнды Описание Время ожидания, тактовые циклы
divs Е Rd, Rx, Ry Знаковое деление (32 <- 32/32) (32 <- 32%32) 35 в версии 1 ЦПУ AVR32UC, 19 в версии 2 ЦПУ AVR32UC
divu Е Rd, Rx, Ry Беззнаковое деление (32 <- 32/32) (32«- 32%32) 35 в версии 1 ЦПУ AVR32UC, 19 в версии 2 ЦПУ AVR32UC
4.6. Команды насыщения
Команды насыщения исполняют арифметические операции с возможно-
стью насыщения. Команды насыщения перечислены в табл. 4.6.
4.7. Команды загрузки и сохранения
К этой группе команд относятся все команды загрузки из памяти и со-
хранения в памяти. Вычисление адреса загрузки или сохранения произ-
Табл. 4.6. Команды насыщения
^4немойика Операнды Описание Время ожидания, тактовые циклы
satadd^L__ E Rd, Rx, Ry Сложение полуслов с насыщением 1
jatadd-W__ E Rd, Rx, Ry Сложение с насыщением 1
"satsub.h E Rd, Rx, Ry Вычитание полуслов с насыщением 1
satsub.w E Rd, Rx, Ry Вычитание с насыщением 1
E Rd, Rx, imm 1
satrnds E Rd » sa, b5 Знаковое насыщение от разряда, на который указывает sa, после сдвига вправо на Ь5 разрядных позиций 2
satrndu E Rd » sa, b5 Беззнаковое насыщение от разряда, на который указывает sa, после сдви- га вправо на Ь5 разрядных позиций 2
sats E Rd » sa, b5 Сдвиг на sa разрядов и знаковое насыщение от разряда, на который указывает Ь5 1
satu E Rd » sa, b5 Сдвиг на sa разрядов и беззнаковое насыщение от разряда, на который указывает Ь5 1
водится сумматором в стадии ЕХ конвейера. Сумматор в стадии ЕХ так-
же производит вычисление адреса для операций автоинкрементирования
и автодекрементирования.
Загруженные данные становятся доступны в конце тактового цикла
в стадии ЕХ. Байты и полуслова данных в командах дополняются нулями
до требуемой длины и нужным образом сдвигаются до того, как станут
Достоверными. Эти операции производятся в стадии ЕХ. Команды Idins
и Idswp также требуют модификации данных в стадии ЕХ до того, как
их результаты станут достоверными. Команды stswp требуют модификации
своих данных до того, как эти данные выводятся через интерфейс памяти,
та модификация также выполняется в стадии ЕХ. Команда stcond требует
Двух тактовых циклов, если производится сохранение, и трех тактовых ци-
клов, если сохранение не производится.
Команды загрузки и сохранения перечислены в табл. 4.7. Время ожи-
для этих команД указано в таблице для доступа вида IRAM или
'-AL. Последний вид доступа означает, что доступ производится к раз-
елам пространства памяти BOOT или HSB.
Время ожидания для команд загрузки и сохранения при доступе к раз-
лам пространства памяти BOOT или HSB зависит от следующих условий.
У ’ Загрузка из памяти байта, полуслова или слова требует (1+w) тактовых
Клов дополнительно к значению, указанному в табл. 4.7, где w — коли-
ство циклов ожидания ведомого устройства по отношению к системной
иНе. Во время этих циклов конвейер останавливается.
• Загрузка из памяти двойного слова производится за две попытку
доступа к памяти, поэтому для такой загрузки необходимо 2(l+w) циклов
дополнительно к значению, указанному в табл. 4.7. Во время этих циклов
конвейер останавливается.
• Сохранение в памяти байта, полуслова или слова требует (1+w) тактовые
циклов дополнительно к значению, указанному в табл. 4.7, где w — количество
циклов ожидания ведомого устройства по отношению к системной шине. Со-
хранение в разделах памяти BOOT или HSB может выполняться в «фоновом»
режиме, поэтому остановка конвейера произойдет только в том случае, если
в течение количества циклов w предпринимается попытка доступа к другой
области памяти. Множество последовательных попыток сохранения по адре-
сам разделов памяти BOOT или HSB может быть автоматически объединена
интерфейсом памяти, с тем чтобы организовать на шине HSB блочную пере-
дачу. Это означает, что любые последовательные попытки сохранения в раз-
делах BOOT или HSB не будет останавливать конвейер, если сама шина не
вставляет в процедуру передачи данных циклы ожидания, например, из-за со-
стояния ожидания или инициализации. Команды, не выполняющие доступ
к памяти, никогда не будут останавливать конвейер, если они выполняются
после команд сохранения в разделах памяти BOOT или HSB.
• Сохранение в памяти двойного слова требует двух попыток доступ^
к памяти. В силу специфики работы конвейера достижение максимальной:
скорости выполнения этой команды будет обеспечиваться в случае, если
следующая команда не затрагивает разделов памяти BOOT или HSB.
Табл. 4.7. Команды загрузки и сохранения
Мнемоника Операнды Описание Время ожида- ния, тактовые циклы
d.ub с Rd, Rp++ Загрузка байта без знака с постинкрементом 2
с Rd, -Rp Загрузка байта без знака с предекрементом 2
с Rd, Rp[disp] Загрузка байта без знака со смещением 1
Е Rd, Rp[disp] 1
Е Rd, Rb[Ri « sa] Индексированная загрузка байта без знака 1
ld.ub{cond4} Е Rd, Rpfdisp] Загрузка байта без знака со смеще- нием, если выполняется условие. Только для ЦПУ версии 2 и выше 1
Id.sb Е Rd, Rpfdisp] Загрузка байта со знаком со смещением 1
Е Rd, RbfRi « sa] Индексированная загрузка байта со знаком 1
Табл. 4.7.
(продолжение)
’''Мнемоника Операнды Описание Время ожида- ния, тактовые циклы
-—~ ld.sb{cond4} E Rd, Rp[disp] Загрузка байта co знаком co смеще- нием, если выполняется условие. Только для ЦПУ версии 2 и выше 1
ld.uh C Rd, Rp++ Загрузка полуслова без знака с постинкрементом 2
C Rd, -Rp Загрузка полуслова без знака с предекрементом 2
C Rd, Rpfdisp] Загрузка* полуслова без знака со смещением 1
E Rd, Rp[disp] 1
E Rd, Rb[Ri« sa] Индексированная загрузка полуслова без знака 1
ld.uh{cond4} E Rd, Rp[disp] Загрузка полуслова без знака со смещением, если выполняется условие. Только для ЦПУ версии 2 и выше 1
Id.sh C Rd, Rp++ Загрузка полуслова со знаком с постинкрементом 2
C Rd, -Rp Загрузка полуслова со знаком с предекрементом 2
C Rd, Rp[disp] Загрузка полуслова со знаком со смещением 1
E Rd, Rp[disp] 1
E Rd, Rb[Ri « sa] Индексированная загрузка полуслова со знаком 1
ld.sh{cond4} E Rd, Rp[disp] Загрузка полуслова со знаком со смещением, если выполняется условие. Только для ЦПУ версии 2 и выше 1
Id.w C Rd, Rp++ Загрузка слова с постинкрементом 2
C Rd, -Rp Загрузка слова с предекрементом 2
C Rd, Rpfdisp] Загрузка слова со смещением 1
E Rd, Rp[disp] 1
E Rd, Rb[Ri « sa] Индексированная загрузка слова 1
E Rd, Rp [Ri<part> « 2] Загрузка слова с извлеченным индексом 1
Табл. 4.7.
(продолжение)
Мнемоника Операнды Описание Время ожида- ния, тактовые циклы
ld.w{cond4} E Rd, Rpfdisp] Загрузка слова co смещением, если выполняется условие. Только для ЦПУ версии 2 и выше 1
Id.d C Rd, Rp++ Загрузка двойного слова с постинкрементом 3
C Rd, -Rp Загрузка двойного слова с предекрементом 3
C Rd, Rp Загрузка двойного слова 2
E Rd, Rp[disp] Загрузка двойного слова со смещением 2
E Rd, Rb[Ri « sa] Индексированная загрузка двойного слова 2
Idins.b E Rd<part>, Rpfdisp] Загрузка байта со смещением и вставкой в указанное местоположение байта в Rd 1
Idins.h E Rd<part>, Rpfdisp] Загрузка полуслова со смещением и вставкой в указанное местоположение полуслова в Rd 1
Idswp.sh E Rd, Rp[disp] Загрузка полуслова со смещением, перестановкой байтов и дополнением единицами 1
dswp.uh E Загрузка полуслова со смещением, перестановкой байтов и дополнением нулями 1
Idswp.w E Загрузка слова со смещением и перестановкой байтов 1
Iddpc C Rd, PCfdisp] Загрузка со смещением из PC 1
Iddsp C Rd, SPfdisp] Загрузка со смещением из SP 1
st.b C Rp++, Rs Сохранение с постинкрементом 1
C -Rp, Rs Сохранение с предекрементом 1
C Rpfdisp], Rs Сохранение байта со смещением 1
E Rpfdisp], Rs 1 _
E RbfRi « sa], Rs Индексированное сохранение байта 2
st.b{cond4} E Rpfdisp], Rs Сохранение байта со смещением, если выполняется условие. Только для ЦПУ версии 2 и выше 1
Табл. 4.7.
(окончание)
^^немоника Операнды Описание Время ожида- ния, тактовые циклы
st.d c Rp++, Rs Сохранение с постинкрементом 2
c -Rp, Rs Сохранение с предекрементом 2
c Rp, Rs Сохранение двойного слова 2
E Rp[disp], Rs Сохранение двойного слова со смещением 2
E Rb[Ri « sa], Rs Индексированное сохранение двойного слова 3
st.h C Rp++, Rs Сохранение с постинкрементом 1
C -Rp, Rs Сохранение с предекрементом 1
C Rp[disp], Rs Сохранение полуслова со смещением 1
E Rp[disp], Rs 1
E Rb[Ri « sa], Rs Индексированное сохранение полуслова 2
st.h{cond4} E Rpfdisp], Rs Сохранение полуслова со смещени- ем, если выполняется условие. Только для ЦПУ версии 2 и выше 1
st.w C Rp++, Rs Сохранение с постинкрементом 1
C -Rp, Rs Сохранение с предекрементом 1
C Rp[disp], Rs Сохранение слова со смещением 1
E Rp[disp], Rs 1
E Rb[Ri « sa], Rs Индексированное сохранение слова 2 '
st.w{cond4} E Rp[disp], Rs Сохранение слова со смещением, если выполняется условие. Только для ЦПУ версии 2 и выше 1
Jjtcond E Rp[disp], Rs Условное сохранение со смещением 2/3
stdsp C SP[disp], Rs Сохранение со смещением из SP 1
sthh.w —— E Rp[disp « 2], Rx, Ry Объединение полуслов в слово и сохранение слова со смещением 2
E Rb[Ri « sa], Rx, Ry Объединение полуслов в слово и сохранение слова с индексированием 2
stswp.h " E Rp[disp], Rs Перестановка байтов и сохранение полуслова со смещением 1
^tswp.w E Перестановка байтов и сохранение слова со смещением 1
4.8. Команды множественного доступа к данным
в памяти
Эти команды выполняют множественный доступ к данным. Инкремен-
тирующиеся по адресу циклы доступа выполняются как доступ к данным
в размере слова. Количество циклов доступа зависит от количества реги-
стров п, содержимое которых предполагается загружать или сохранять.
Время ожидания для команд этой группы зависит от следующих
условий.
• Выполнение команд 1dm и рортп будет занимать дополнительный
тактовый цикл, если производится проверка содержимого регистра
R12.
• Выполнение команд 1dm и рорт, модифицирующих PC, вызовет из-
менение потока (перезагрузку конвейера), которое будет выполнено
параллельно с записью в указатель и поэтому повлечет за собой
только один «штрафной» цикл.
• Время ожидания при обращении к шине HSB увеличится, если
шина HSB занята или для ведомых устройств текут циклы ожида-
ния.
Команды из этой группы будут прерваны немедленно в случае, если
поступят запросы на любые прерывания, с тем чтобы аппаратно ограни-
чить сверху время реакции системы на прерывание.
Команды множественного доступа к данным в памяти перечислены
в табл. 4.8.
Табл. 4.8. Команды множественного доступа к данным в памяти
Мнемо- ника Операн- ды Описание Время ожидания для IRAM, тактовые циклы Время ожидания для HSB, тактовые циклы
1dm E Rp, Reglistl6 Загрузка множества регистров. R12 проверяется, если загружается PC 1+п 1+2п
1dm E Rp++, Reglistl6 Загрузка множества регистров. R12 проверяется, если загружается PC 2+п 1+2п
Idmts E Rp, Reglistl6 Загрузка множества регистров для реализации программной конструкции «переключатель» 1+п 1+2п
Idmts E Rp++, Reglistl6 Загрузка множества регистров для реализации программной конструкции «переключатель» 2+п 1+2п
popm C Reglist8 Выталкивание множества реги- стров из стека. R12 проверяется, если из стека выталкивается PC 2+п 1+2п
Табл. 4.8.
(окончание)
Мнемо- ника Операн- ды Описание Время ожидания для IRAM, тактовые циклы Время ожидания для HSB, тактовые циклы
pushm C Reglist8 Помещение множества регистров в стек 2+п З+п
stm E Rp, Reglistl6 Сохранение множества регистров 1+п 2+п
stm E -Rp, Reglistl6 Сохранение множества регистров 2+п З+п
stmts E Rp, Reglistl6 Сохранение множества регистров для реализации программной конструкции «переключатель» 1+п 2+п
stmts E -Rp, Reglistl6 Сохранение множества регистров для реализации программной конструкции «переключатель» 2+п З+п
4.9. Команды переходов
Выполнение команд переходов (ветвлений) вызывает сброс конвейера, так
как при этом происходит изменение потока выполняемых команд. По этой
причине при выполнении команды перехода ко времени ожидания самой
команды добавляются еще два тактовых цикла.
Команды переходов перечислены в табл. 4.9.
Табл. 4.9. Команды переходов (ветвлений)
Мнемоника Операнды Описание Время ожида- ния, тактовые циклы
. br{cond3} С Disp Переход, если выполняется условие 1
_Mcond4} E Disp 1
rjmp С Disp Относительный переход 1
ret{cond4} С Rs Условный возврат из подпрограммы с перемещением и тестированием возвращенного значения 1
4.10. Команды вызова (call)
Команды вызова при выполнении ведут себя подобно командам ветвлений,
За исключением того, что модифицируют содержимое регистра связи (LR).
Команды вызова перечислены в табл. 4.10. Значения времени ожидания
Команд, представленные в таблице, включают «штрафные» тактовые ци-
клы, затрачиваемые на переход.
Команда breakpoint выполняется за один тактовый цикл в случае, если
заблокирован режим Debug. Однако при этом ее выполнение эквивалентно
выполнению команды пустой операции пор. Команда breakpoint модифици-
рует содержимое RAR_DBG вместо содержимого LR.
Табл. 4.10. Команды вызова
Мнемоника Операнды Описание Время ожида- ния, тактовые циклы
acall c disp Вызов пользовательского приложения 4
icall c Rd Косвенный регистровый вызов 4
mcall E Rd[disp] Вызов из памяти 4
rcall C E disp disp Относительный вызов 4 4
scall C Вызов супервизора 4
breakpoint C Точка останова 3
4.11. Команды возврата из состояния исключения
Команды rete и rets используются для выталкивания из системного стека
содержимого регистра статуса и адреса возврата и выполнения перехода на
адрес возврата. Команда retd получает адрес возврата и содержимое реги-
стра состояния из системных регистров RAR_DBG и RSR_DBG.
Команды возврата из состояния исключения перечислены в табл. 4.11.
Значения времени ожидания команд, представленные в таблице, включают
«штрафные» тактовые циклы, затрачиваемые на переход.
Команда rete имеет время ожидания, равное двенадцати тактовым ци-
клам, в случае возврата из режимов INTO—INT3, а в ином случае — пяти
тактовым циклам. Выполнение команды rete может быть прервано «отло-
женным» прерыванием.
Табл. 4.11. Команды возврата из состояния исключения
Мнемоника Операнды Описание Время ожи- дания, такто- вые циклы
retd с Возврат из режима отладки 3
rete с Возврат из исключения 5/12
rets с Возврат из супервизора 5
4.12. Команда перестановки (swap)
Команда перестановки выполняет две автономных попытки доступа к па-
мяти: сначала одно чтение, а затем одну запись.
Команда перестановки приведена в табл. 4.12.
Табл. 4.12. Команда перестановки
"Мнемоника Операнды Описание Время ожидания, тактовые циклы
-— ~ xchg Е Rd, Rx, Ry Обмен содержимым регистров в памяти 2
4.13. Команды системных регистров
Эта группа команд производит перемещение данных в системные регистры
и из них. Доступ к системным регистрам выполняется командами в стадии
ЕХ конвейера и по времени требует одного тактового цикла. Однако вы-
полнение команды mtsr при доступе к регистру статуса SR требует трех так-
товых циклов, тогда как при доступе ко всем другим системным регистрам
эта команда выполняется за один цикл.
Команды системных регистров перечислены в табл. 4.13.
Табл. 4.13. Команды системных регистров
Мнемоника Операнды Описание Время ожидания, тактовые циклы
mfdr E Rd, SysRegNo Перемещение содержимого регистра отладки в Rd 1
mfsr E Rd, SysRegNo Перемещение содержимого системного регистра в Rd 1
mtdr E SysRegNo, Rs Перемещение содержимого Rs в регистр отладки 1
mtsr E SysRegNo, Rs Перемещение содержимого Rs в системный регистр 1/3
musfr C Rs Перемещение содержимого Rs в регистр статуса 1
mustr C Rd Перемещение содержимого регистра статуса в Rd 1
4.14. Команды управления системой
^Та гРУппа включает простые команды, выполняемые за один тактовый
Цикл, которые управляют поведением различных частей системы. Резуль-
ат выполнения команд frs, pref и sync в AVR32UC эквивалентен результату
Ь1полнения команды пустой операции пор.
Команды управления системой приведены в табл. 4.14.
Табл. 4.14. Команды управления системой
Мнемоника Операнды Описание Время ожидания, тактовые циклы
frs с Сделать недействительным адрес возврата в стеке 1
pref E Rpfdisp] Выбрать из кэша 1 '
sleep E Op8 Ввести режим SLEEP 1 '
sync E Op8 Сохранить буфер записи 1
4.15. Команды «чтение-модификация-запись» (RMW)
Эта группа содержит команды, которые исполняют «атомарные» (бит-
ориентированные) операции с данными по адресам памяти. Выполне-
ние этих команд требует нескольких тактовых циклов в контроллере
памяти, однако они могут выполняться параллельно с последующими
командами, если последующие команды не являются командами до-
ступа к памяти.
Команды RMW приведены в табл. 4.15. Команда RMW, выполняемая
по адресу памяти раздела IRAM, потребует для выполнения одного такто-
вого цикла, если буфер записи IRAM пуст. В противном случае потребу-
ется два тактовых цикла. Буфер IRAM будет заведомо пуст, если команда
RMW будет выполняться непосредственно после другой команды RMW.
Команда RMW, выполняемая по адресу памяти раздела HSB, требует
для выполнения четырех тактовых циклов. По этой причине, если другая
команда пытается обратиться к памяти в пределах от одного до трех после-
дующих тактовых циклов, то будет произведена вставка протяженностью
до трех циклов останова.
Выполнение команды RMW для раздела памяти HSB потребует допол-
нительных тактовых циклов сверх указанных в табл. 4.15, если сама шина
HSB «вставляет» такты ожидания.
Для получения дополнительной информации по теме этого раздела ре-
комендуется обратиться к источникам [6, 7].
Табл. 4.15. Команды «чтение-модификация-запись» (RMW)
Мнемоника Операнды Описание Время ожидания для IRAM, тактовые циклы Время ожидания для HSB, тактовые циклы _
meme Е imm, bp Сбросить бит в памяти 1/2 4 _
mems Е imm, bp Установить бит в памяти 1/2 4 _
memt Е imm, bp Инвертировать бит в памяти 1/2 4
ГЛАВА 5
ЦОКОЛЕВКА КОРПУСОВ
И ОПИСАНИЕ ВЫВОДОВ МК
МК подсемейства AT32UC3A поставляются в корпусах TQFP100 и LQFP144,
цоколевка которых показана на рис. 5.1, 5.2. Перечень выводов МК
AT32UC3A в корпусе TQFP100 приводится в табл. 5.1, а перечень выводов
МК AT32UC3A в корпусе LQFP144 — в табл. 5.2.
75 п 51 п_
76 = = 50
TQFP100
100 = = 26
и и
1 25
108 П 73 п
109 = LQFP144 = 72
144 = • = 37
и 1 и 36
Рис. 4.1. Цоколевка корпуса
TQFP100
Рис. 4.2. Цоколевка корпуса
LQFP144
Табл. 5.1. Перечень выводов МК AT32UC3A в корпусе TQFP100
1 РВ20 15 РВ29 28 РА07
2 РВ21 16 РВЗО 29 РА08
3 РВ22 17 РВ31 30 РА09
,4 VDDIO 18 RESET_N 31. РАЮ
_5 GND 19 PA00 32 N/C
_6 РВ23 20 РА01 33 РАН
7 РВ24 21 GND 34 . VDDCORE
8 РВ25 22 VDDCORE 35 GND
9 РВ26 23 РА02 36 РАЮ
10 РВ27 24 РАОЗ 37 РА13
11 VDDOUT 25 РА04 38 VDDCORE
12 VDDIN 39 РА14
13 GND 26 РА05 40 РА15
14 РВ28 27 РА06 41 РАЮ
Табл. 5.1.
(окончание)
42 РА17 62 VDDPLL 82 PB12
43 РА18 63 PC00 83 PA29
44 РА19 64 PC01 84 PA31
45 РА20 65 PBOO 85 PC02
46 VBUS 66 PB01 86 РСОЗ
47 VDDIO 67 VBOOST 87 PB13
48 DM 68 VDDIO 88 PB14
49 DP 69 GND 89 TMS
50 GND 70 PB02 90 TCK
71 PB03 91 TDO
51 РА21 72 PB04 92 TDI
52 РА22 73 PB05 93 PC04
53 РА23 74 PB06 94 PC05
54 РА24 75 PB07 95 PB15
55 РА25 96 PB16
56 РА26 76 PB08 97 VDDCORE
57 РА27 77 PB09 98 PB17
58 РА28 78 PB10 99 PB18
59 VDDANA 79 VDDIO9 100 PB19
60 ADVREF 80 GNDIO09
61 GNDANA 81 PB11
Табл. 5.2. Перечень выводов МК AT32UC3A в корпусе TQFP144
1 PXOO 15 PB27 29 VDDCORE
2 PX01 16 VDDOUT 30 PA02
3 PB20 17 VDDIN 31 PX07
4 PX02 18 GND 32 PA03
5 PB21 19 PB28 33 PX08
6 PB22 20 PB29 34 PA04
7 VDDIO 21 PB30 35 PX09
8 GND 22 PB31 36 VDDIO
9 PB23 23 RESET_N
10 PX03 24 PX05 37 GND
11 PB24 25 PA00 38 PX10
12 PX04 26 PX06 39 PA05
13 PB25 27 PA01 40 PX11
14 PB26 28 GND 41 PA06
Табл. 5.2.
(окончание)
РХ12 77 РА25 112 PX31
43 РА07 78 РА26 113 PB09
”44* РХ13 79 РА27 114 PX32
45 РА08 80 РА28 115 PB10
*46 РХ14 81 VDDANA 116 VDDIO9
47 РА09 82 ADVREF 117 GNDIO09
"48 РАЮ 83 GNDANA 118 PX33
'49 N/C 84 VDDPLL 119 PB11
'50 РАН 85 PCOO 120 PX34
Jl__ VDDCORE 86 PC01 121 PB12
J2 GND 87 PX20 122 PA29
53 РАЮ 88 PBOO 123 PA31
54 РА13 89 PX21 124 PC02
55 VDDCORE 90 PB01 125 PC03
РАИ 91 PX22 126 PB13
57 РА15 92 VBOOST 127 PB14
58 РАИ 93 VDDIO 128 TMS
59 РХ15 94 GND 129 TCK
60 РА17 95 PX23 130 TDO
61 РХ16 96 PB02 131 TDI
62 РАИ 97 PX24 132 PC04
63 РХ17 98 PB03 133 PC05
64 РАЮ 99 PX25 134 PB15
65 РХ18 100 PB04 135 PX35
66 РА20 101 PX26 136 PB16
67 РХ19 102 PB05 137 PX36
68 VBUS 103 PX27 138 VDDCORE
69 VDDIO 104 PB06 139 PB17
70 DM 105 PX28 140 PX37
71 DP 106 PB07 141 PB.18
,72 GND 107 PX29 142 PX38
108 VDDIO 143 PB19
J3 РА21 144 PX39
J4 РА22 109 GND
J75 РА23 ПО PX30
76 РА24 111 PB08
1
1
12
Рис. 5.4. Цоколевка кор-
пуса QFP48
Рис. 5.3. Цоколевка кор-
пуса QFP64
МК подсемейства AT32UC3B поставляются в корпусах QFP64 и QFP48,
цоколевка которых показана на рис. 5.3, 5.4. Перечень выводов МК
AT32UC3B в корпусе QFP64 приводится в табл. 5.3, а перечень выводов
МК AT32UC3B в корпусе QFP48 — в табл. 5.4.
Табл. 5.3. Перечень выводов МК AT32UC3B в корпусе QFP64
1 GND 23 GND _ 45 РА21
2 тек 24 РВ02 _ 46 РА22
_3 TDI 25 РВОЗ _ 47 РА23
_4 TDO 26 РВ04 _ 48 VDDIO
_5 TMS 27 РВ05
_6 PB00 28 РА09 _ 49 GND
2 РВ01 29 РАЮ _ 50 DP
_8 VDDCORE 30 РАН - 51 DM
_9 РАОЗ 31 РАЮ - 52 VBUS
10 РА04 32 VDDIO _ 53 VDDPLL
11 РА05 _ 54 РВ08
12 РА06 33 РАЮ _ 55 РВ09
13 РА07 34 РА14 _ 56 VDDCORE
14 РА08 35 РАЮ _ 57 РВ10
15 РАЗО 36 РАЮ _ 58 РВИ
16 РА31 37 РА17 _ 59 РА24
38 РВ06 _ 60 РА25
17 GND 39 РАЮ _ 61 РА26
18 ADVREF 40 РАЮ _ 62 РА27
19 VDDANA 41 РА28 _ 63 RESET_N
20 VDDOUT 42 РА29 _ 64 VDDIO
21 VDDIN 43 РВ07
22 VDDCORE 44 РА20
Табл. 5.4. Перечень выводов МК AT32UC3B в корпусе QFP48
— GND 17 VDDIN 33 PA21
2 тек 18 VDDCORE 34 PA22
з TDI 19 GND 35 PA23
4 TDO 20 PA09 36 VDDIO
- 5 TMS 21 PA10
6 VDDCORE 22 PAH 37 GND
5 РАОЗ 23 PA12 38 DP
j РА04 24 VDDIO 39 DM
9 РА05 40 VBUS
jo__ РА06 25 PA13 41 VDDPLL
J1 РА07 26 PA14 42 VDDCORE
12 РА08 27 PA15 43 PA24
28 PA16 44 PA25
13 GND 29 PA17 45 PA26
14 ADVREF 30 PA18 46 PA27
15 VDDANA 31 PA19 47 RESET_N
16 VDDOUT 32 PA20 48 VDDIO
Описание сигналов, связанных с выводами МК AT32UC3, приведено
в табл. 5.5.
Табл. 5.5. Описание сигналов, связанных с выводами МК AT32UC3
Имя сигнала Функция Тип Активный уровень Примеча- ние
Питание
VDDPLL Напряжение питания Вход От 1,65В до
ФАПЧ (PLL) питания 1,95В
VDDCORE Напряжение питания Вход От 1,65В до
VDDIO ядра питания 1,95В
Напряжение питания Вход От 3,0В
ввода-вывода питания до 3,6В
vddana Напряжение питания Вход От 3,0В
аналоговой части питания до 3,6В
VDDIN Вход стабилизатора Вход От 3,0В
vddout напряжения питания Выход стабилизатора питания Выход до 3,6В От 1,65В
gndana напряжения питания Аналоговый общий питания Общий до 1,95В
^nd провод Общий провод Общий
Табл. 5.5. (продолжение)
Имя сигнала Функция Тип Активный уровень Примеча- ние
Синхронизация, генераторы и системы ФАПЧ
XINO, XIN1, Входы подключения Аналоговый
XIN32 резонаторов 1, 2, 32
хоито, Выходы подключения Аналоговый
XOUT1, резонаторов
XOUT32 1, 2, 32
Порт JTAG
тск Тестовая синхронизация Вход
TDI Вход тестовых данных Вход
TDO Выход тестовых данных Выход
TMS Выбор тестового режима Вход
Порт AUX
МСКО Выход синхронизации данных трассировки Выход
MDOO- Выход данных Выход
MD05 трассировки
MSEOO- Управление фреймами Выход
MSEO1 трассировки
EVTI_N Эвентуальный вход Выход Низкий
EVTO_N Эвентуальный выход Выход Низкий
Менеджер питания — РМ
GCLK0- GCLK3 Ножки синхронизации Выход
RESET_N Ножка сброса Вход Низкий
Часы реального времени — RTC
RTC_CLOCK Тактирование RTC Выход
Сторожевой таймер — WDT
WDTEXT Ножка выхода WDT Выход
Контроллер внешних прерываний — EIC
EXTINT0— Ножки внешних Вход
EXTINT7 прерываний
KPS0-KPS7 Ножки сканирования клавиатуры Выход
NMI_N Ножка немаскируемого прерывания Вход Низкий
Табл. 5.5.
(продолжение)
'ИмГсигнала Функция Тип Активный уровень Примеча- ние
Pthernet МАС - MACB (только у AT32UC3A)
COL Детектирование коллизий Вход
CRS Обнаружение несущей Вход
частоты и наличия
данных
MDC Управление синхронизацией Выход
данных
MDIO Управление вводом/ выводом данных Вход/выход
RXD0-RXD3 Данные приема Вход
RX_CLK Синхронизация приема Вход
RX_DV Наличие данных приема Вход
RX_ER Ошибка кодирования при приеме Вход
SPEED Скорость
TXD0-TXD3 Данные передачи Выход
TX_CLK Синхронизация передачи или опорная синхронизация Выход
TX_EN Разрешение передачи Выход
TX_ER Ошибка кодирования при передаче Выход
Интерфейс внешней шины — HEBI (только у AT32UC3A)
addro- ADDR23 Адресная шина Выход
CAS Сигнал выбора столбца Выход Низкий
DATAO- BATA15 Шина данных Вход/выход
NCS0-NCS3 Выбор кристалла Выход Низкий
nrd Сигнал чтения Выход Низкий
nwait NWeo Внешний сигнал ожидания Вход Низкий
Разрешение записи 0 Выход Низкий
NWei Разрешение записи 1 Выход Низкий
NWE3 Разрешение записи 3 Выход Низкий
Ras Сигнал выбора строки Выход Низкий
Табл. 5.5.
(продолжение)
Имя сигнала Функция Тип Активный Примеча-
уровень ние
SDA10 10 линия адреса SDRAM Выход
SDCK Синхронизация SDRAM Выход
SDCKE Разрешение Выход
синхронизации SDRAM
SDCSO- Выбор кристалла Выход Низкий
SDCS1 SDRAM
SDWE Разрешение записи в SDRAM Выход Низкий
Входы/выходы общего назначения — GPIOA, GPIOB, GPIOC, GPIOX
РА00-РА30 Параллельный Вход/выход
(у AT32UC3A) контроллер ввода/
РА00-РА31 (у AT32UC3B) вывода GPIOA
РВ00-РВ31 Параллельный Вход/выход
(у AT32UC3A) контроллер ввода/
РВОО-РВН (у AT32UC3B) вывода GPIOB
РС00-РС05 Параллельный Вход/выход Только
контроллер ввода/ у AT32U-
вывода GPIOC СЗА
РХ00-РХ39 Параллельный Вход/выход Только
контроллер ввода/ у AT32U-
вывода GPIOX СЗА
Последовательные периферийные интерфейсы — SPIO, SPI1 (SPI1 только
у AT32UC3A)
MISO Вход ведущего — выход ведомого Вход/выход
MOSI Выход ведущего — вход ведомого Вход/выход
NPCS0- Выбор кристалла SPI- Вход/выход Низкий
NPCS3 периферии
SCK Синхросигнал Выход
Синхронный последовательный контроллер — SSC
RXCLOCK Синхронизация приема SSC Вход/выход
RX_DATA Данные приема SSC Вход
RX_FRAME_ Синхронизация Вход/выход
SYNC фреймов приема SSC
Табл. 5.5. (продолжение)
-0^игнала Функция Тип Активный уровень Примеча- ние
'тх^с^оск TX-dATA TX_FRAME_ SYNC Синхронизация передачи SSC Данные передачи SSC Синхронизация фрей- мов передачи SSC Вход/выход Выход Вход/выход
'Т^ймер/счетчик - TIMER
ТсГ Al А2 ВО Bl В2 CLKO CLKO CLKO Линия А канала 0 Линия А канала 1 Линия А канала 2 Линия В канала 0 Линия В канала 1 Линия В канала 2 Внешний вход синхро- низации канала 0 Внешний вход синхро- низации канала 1 Внешний вход синхро- низации канала 2 Вход/выход Вход/выход Вход/выход Вход/выход Вход/выход Вход/выход Вход Вход Вход
Двухпроводный интерфейс — TWI
SCL SDA Последовательный синхросигнал Последовательные данные Вход/выход Вход/выход
Универсальные синхронно-асинхронные приемопередатчики — USARTO, USART1, USART2, USART3 (USART3 только у AT32UC3A)
CLK (SCK) CTS dcd e>sr Синхросигнал Сброс вызова (готовность к передаче) Обнаружение несущей частоты данных Готовность модема (данных) Вход/выход Вход Только у USARTO, USART1 (AT32U- СЗА) Только у USARTO (AT32UC3A), USART1 (AT32UC3B) Только у USARTO (AT32UC3A), USART1 (AT32UC3B)
Табл. 5.5. (окончание)
Имя сигнала Функция Тип Активный Примеча-
уровень ние
DTR Готовность терминала Только
у USART0 (AT32UC3A) USART1 (AT32UC3B)
RI Индикация вызова Только
у USART0 (AT32UC3A), USART1 (AT32UC3B)
RTS Запрос вызова Выход Только
(передачи) у USART0, USART1 (AT32UC3A)
RXD Данные приема Вход
TXD Данные передачи Выход
Аналого-цифровой преобразователь — ADC
AD0-AD7 Ножки аналоговых Аналоговый
входов вход
ADVREF Вход опорного Аналоговый От 2,6 В до
напряжения АЦП вход 3,6 В
Широтно-импульсный модулятор — PWM
PWM0- PWM6 Ножки выходов PWM Выход
Устройство универсальной последовательной шины — USB
DDM Линия данных «—» порта USB-устройства Аналоговый
DDP Линия данных «+» порта USB-устройства Аналоговый
VBUS Наблюдение за пита- Аналоговый
нием шины USB VBUS вход
USBID Ножка идентификатора (ID) шины USB Вход
USB_VBOF USB VBUS On/off: порт управления питанием Выход
шины
Аудио ЦАП битового потока — ABDAC (только у AT32UC3A)
DATA0- Выход цифро- Выход
DATA1 аналоговых данных
DATAN0- Инверсный выход Выход
DATAN1 цифро-аналоговых
данных
rjlABA 6
ОРГАНИЗАЦИЯ
ЭЛЕКТРОПИТАНИЯ
В соСтаве всех МК семейства AT32UC3 имеется встроенный стабилиза-
тор напряжения питания, использование которого позволяет отказаться от
внешнего источника питающего напряжения 1,8 В.
у МК семейства AT32UC3 имеются следующие выводы, связанные
с электропитанием:
VDDIO — вход напряжения питания устройств ввода-вывода с номи-
нальным значением 3,3 В,
VDDANA — вход напряжения питания аналоговой части с номиналь-
ным значением 3,3 В,
VDDIN — вход стабилизатора напряжения с номинальным значением
3,3 В,
VDDCORE — вход напряжения питания ядра, памяти и периферии
с номинальным значением 1,8 В,
VDDPLL — вход напряжения питания ФАПЧ (PLL) с номинальным
значением 1,8 В.
Общим проводом для цепей VDDCORE, VDDIO, VDDPLL является
вывод GND, а для цепи VDDANA — вывод GNDANA.
На рис. 6.1, а, б показаны схемы организации электропитания МК
в случае использования единственного внешнего питающего напряжения
и встроенного стабилизатора напряжения (рис. 6.1, а) или двух внешних
(I Единственный источник питания
3 3В «L
VDDANA
VDDIO
-^JADVREF
б
ззв <
“ИVDD,N —»
Стабилизатор
18В
-g| VDDOUT «-------1
Два источника питания
---------►И VDDANA
VDDIO
*g]ADVREF
-g| VDDOUT
VDDCORE
1 8В«------------VDDCORE
VDDPLL
-g| VDDPLL
Рис. 6.1. Схема организации электропитания МК в случае использования
единственного внешнего питающего напряжения и встроенного
стабилизатора напряжения
з.зв*
VDDIN
Рис. 6.2. Схема организации электропитания МК в случае использования
двух внешних питающих напряжений
3.3В hl
VREF1
=г=С =$=С
VREF2 ’
Рис. 6.3. Внешние цепи на входе опорного напряжения АЦП ADVREF
питающих напряжений (рис. 6.1, б). Встроенный стабилизатор напряжения
обеспечивает преобразование входного напряжения 3,6 В, подаваемого на
вывод VDDIN, в напряжение 1,8 В, снимаемое с вывода VDDOUT. В слу-
чае использования стабилизатора его выходное напряжение 1,8 В с вывода
VDDOUT должно быть подано внешними перемычками на соответству-
ющие входы питания МК. При использовании встроенного стабилизато-
ра для обеспечения минимального уровня пульсаций его выходного на-
пряжения необходимо наличие дополнительных внешних конденсаторов,
подключаемых к ножкам VDDIN и VDDOUT, как показано на рис. 6.2.
При этом соединительные проводники между конденсаторами и ножками
МК должны иметь минимальную длину. Для уточнения значений емко-
стей конденсаторов обратитесь к Приложению 3, Приложению 21.
В случае использования двух внешних питающих напряжений необ-
ходимо накоротко замкнуть на общий провод ножки VDDIN и VDDOUT
внешними перемычками для минимизации тока утечки стабилизатора.
Для создания опорного напряжения АЦП необходимо подать на вход
опорного напряжения АЦП ADVREF напряжение от внешнего источни-
ка, обеспечив при этом наличие дополнительных внешних конденсаторов,
подключенных к ножке ADVREF, как показано на рис. 6.3. Для уточнения
значений емкостей конденсаторов обратитесь к Приложению 4, Приложе-
нию 22.
pjlABA 7
FUSES-УСТАНОВКИ
Модуль Flash-памяти МК семейства AT32UC3 содержит некоторое мно-
жество так называемых Fuses-установок общего назначения. Эти установ-
ки определяют режимы работы всего МК в целом и отдельных его узлов.
Часть Fuses-установок описана в разделе «Контроллер Flash-памяти», по-
скольку она относится к Flash-памяти. Fuses-установки, не относящиеся
к контроллеру Flash-памяти, описаны в текущем разделе.
Стирание (приведение в исходное состояние) Fuses-установок достига-
ется путем стирания через порт JTAG всего кристалла МК.
7.1. Flash Fuse-регистр общего назначения (FGPFR)
Битовая структура этого регистра показана в табл. 7.1.
Табл. 7.1. Битовая структура регистра FGPFR
31 30 29 28 27 26 25 24
GPF31 GPF30 GPF29 BODEN BODHYST BODLEVEL[5:4]
23 22 21 20 19 18 17 16
BODLEVEL[3:0] BOOTPROT EPFL
~~ 15
14 13 12 11 10 9 8
LOCK[15:8]
6 | 5 | 4 | 3 | 2 | 1 [ О
LOCK[7:0]
BODEN — разрешение модуля детектора провалов напряжения пита-
Ия (BOD). Возможные значения этого поля показаны в табл. 7.2.
г BODHYST — разрешение гистерезиса BOD. Если этот бит установлен,
стерезис BOD разрешен, в противном случае — запрещен.
У ^DLEVEL — задание уровня срабатывания триггера BOD. Если
ЬСор Ь сРа®атывания триггера задан значением, большим значения VD-
cg КЕ, и BOD разрешен, то МК будет постоянно находиться в состоянии
Р са. Чтобы выйти из этой ситуации, следует подать на вход VDDCORE
Табл. 7.2. Возможные значения битового поля BODEN
BODEN Описание
0x0 0x1 0x2 0x3 Модуль BOD запрещен Модуль BOD разрешен, сброс от BOD разрешен Модуль BOD разрешен, сброс от BOD запрещен Модуль BOD запрещен
внешнее напряжение, заведомо большее уровня срабатывания триггера
BOD, а затем запретить модуль BOD.
Возможные значения этого поля приведены в Приложении 5, Прило-
жении 23.
LOCK, EPFL, BOOTPROT — назначение этих битовых полей описано
в разделе «Контроллер Flash-памяти (FLASHC)».
По умолчанию регистр FGPFR имеет значение 0xFC07FFFF, что соот-
ветствует следующим значениям Fuses-установок.
• GPF31 имеет значение 1b. Этот бит используется предварительно
запрограммированным USB-загрузчиком.
• GPF30 имеет значение 1b. Этот бит используется предварительно
запрограммированным USB-загрузчиком.
• GPF29 имеет значение 1b.
• BODEN имеет значение 11b. Модуль BOD запрещен.
• BODHYST имеет значение 1b. Гистерезис BOD разрешен.
• BODLEVEL имеет значение 000000b, что соответствует минималь-
ному уровню срабатывания триггера BOD.
• BOOTPROT имеет значение 011b, что соответствует защищенному
размеру области загрузчика 8к.
• EPFL имеет значение 1b. Блокировка от внешней привилегирован-
ной выборки не установлена.
• LOCK имеет значение 1111111111111111b, что соответствует отсут-
ствию областей блокировки.
После выполнения команды JTAG стирания кристалла регистр FGPFR
принимает значение OxFFFFFFFF.
Примечание переводчика. В оригинальной технической документации
производителя на МК подсемейства AT32UC3B [4] регистр FGPFR ука-
зан как младший регистр Flash-памяти fuses-установок общего назначения
с именем FGPFRLO. В документации на МК подсемейства AT32UC3A [3]
явное указание на тождественность регистров FGPFR и FGPFRLO отсут-
ствует.
fjlABA 8
ПЕРИФЕРИЙНЫЕ
УСТРОЙСТВА
8.1. Адресное пространство периферии
Отображение встроенной периферии МК подсемейства AT32UC3A на про-
странство адресов показано на рис. 8.1; МК подсемейства AT32UC3B — на
рис. 8.2.
Необходимо заметить, что в дальнейшем при описании пользовательских
интерфейсов периферийных модулей МК в перечнях специальных регистров
будут указываться не абсолютные значения их адресов, а смещения относи-
тельно базового адреса соответствующего периферийного модуля. Все базо-
вые адреса периферии показаны на рис. 8.1, рис. 8.2 в столбце «Адрес».
Адрес Имя периферии Шина
ОхЕООООООО USBB Интерфейс ведомого USBB - USBB HSB
OxFFFEOOOO USBB Конфигурационный интерфейс USBB - USBB РВВ
OxFFFEIOOO HMATRIX Конфигурационный интерфейс HMATRIX - HMATRIX РВВ
0XFFFE1400 FLASHC Контроллер Flash - FLASHC РВВ
0XFFFE1800 MACB Конфигурационный интерфейс МАСВ - МАСВ РВВ
0XFFFE1C00 SMC Конфигурационный интерфейс статической памяти - SMC РВВ Адрес Имя периферии Шина
0XFFFE2000 SDRAMC Конфигурационный интерфейс контроллера SDRAM - SDRAMC РВВ
OxFFFFOOOO PDCA Интерфейс периферийного модуля DMA - PDCA РВА OxFFFFICOO USART2 USART2 РВА
°XFFFFO8OO INTC Интерфейс контроллера прерываний - INTC РВА 0XFFFF2000 USART3 USART3 РВА
°xffffocoo oxffffodoo 0x₽PFF0D30 0xPFFF0D80 PM Менеджер питания - РМ РВА OXFFFF2400 SPI0 SPI0 РВА
RTC Часы реального времени - RTC РВА 0XFFFF2800 SPI1 SPI1 РВА
WDT Сторожевой таймер - WDT РВА 0XFFFF2C00 TWI v TWI РВА
EIC Контроллер внешних прерываний - EIC РВА 0XFFFF3000 PWM PWM РВА
0x₽FFF1000 GPIO Контроллер ввода-вывода общего назначения - GPIO РВА 0XFFFF3400 SSC SSC РВА
OxPFFF14oo °XppFFl800 USARTO USARTO РВА 0XFFFF3800 ТС Таймер/счетчик - ТС РВА
USART1 USART1 РВА OXFFFF3COO ADC ADC РВА
Рис. 8.1 Отображение встроенной периферии МК подсемейства AT32UC3A
на пространство адресов
8.2. Отображение GPIO на локальную шину ЦПУ
Некоторые из регистров модуля ввода/вывода общего назначения (GPIO)
отображены на локальную шину ЦПУ в дополнение к их отображению на
периферийную шину (РВА). Указанная особенность позволяет производить
доступ к этим регистрам как по периферийной, так и по локальной шине.
Отображение этих регистров на локальную шину позволяет обеспечить син-
хронизированное с тактовыми циклами ЦПУ переключение выводов GPIO.
Модуль GPIO — единственное (кроме ЦПУ) устройство, связанное с ло-
кальной шиной. Поскольку локальная шина тактируется со скоростью ЦПУ,
то одна операция записи или чтения отображенных на локальную шину
регистров GPIO может быть выполнена за один тактовый цикл ЦПУ.
Регистры GPIO, отображенные на локальную шину ЦПУ МК подсе-
мейств AT32UC3A, AT32UC3B, перечислены в табл. 8.1, однако следует
учитывать, что у подсемейства AT32UC3B имеются только порты А и В. Ко
всем регистрам за исключением регистров значения на ножке (PVR) может
производиться доступ в следующих режимах: запись (WRITE), установка
Адрес Имя периферии Шина
Таймер/счетчик - ТС рва
0XFFFF38O0 ТС
0XFFFF3C00 ADC
ADC РВА
Рис. 8.2. Отображение встроенной периферии МК подсемейства AT32UC3B
на пространство адресов
Табл- 8.1. Регистры GPIO, отображенные на локальную шину ЦПУ МК
AT32UC3A (порты А-Х) и МК AT32UC3B (порты А-В)
ГТлОТ Регистр Режим Адрес на ло- Вид доступа
кальной шине
—~~ Регистр разрешения WRITE 0х4000_0040 Только для записи
выходного драйвера SET 0х4000_0044 Только для записи
(ODER) CLEAR 0х4000_0048 Только для записи
TOGGLE 0х4000_004С Только для записи
^Регистр выходного WRITE 0х4000_0050 Только для записи
А значения (OVR) SET 0х4000_0054 Только для записи
CLEAR 0х4000_0058 Только для записи
TOGGLE 0х4000_005С Только для записи
Регистр значения на 0х4000_0060 Только для чтения
ножке (PVR)
Регистр разрешения WRITE 0х4000_0140 Только для записи
выходного драйвера SET 0х4000_0144 Только для записи
(ODER) CLEAR 0x40000148 Только для записи
TOGGLE 0х4000_014С Только для записи
D Регистр выходного WRITE 0х4000_0150 Только для записи
D значения (OVR) SET 0х4000_0154 Только для записи
CLEAR 0х4000_0158 Только для записи
TOGGLE 0х4000_015С Только для записи
Регистр значения на 0х4000_0160 Только для чтения
ножке (PVR)
Регистр разрешения WRITE 0х4000_0240 Только для записи
выходного драйвера SET 0х4000_0244 Только для записи
(ODER) CLEAR 0х4000_0248 Только для записи
TOGGLE 0х4000_024С Только для записи
с Регистр выходного WRITE 0х4000_0250 Только для записи
значения (OVR) SET 0х4000_0254 Только для записи
CLEAR 0х4000_0258 Только для записи
TOGGLE 0х4000_025С Только для записи
Регистр значения на 0х4000_0260 Только для чтения
ножке (PVR)
Регистр разрешения WRITE 0х4000_0340 Только для записи
выходного драйвера SET 0х4000_0344 Только для записи
(ODER) CLEAR 0х4000_0348 Только для записи
TOGGLE 0х4000_034С Только для записи
X Регистр выходного WRITE 0х4000_0350 Только для записи
значения (OVR) SET 0х4000_0354 Только для записи
CLEAR 0х4000_0358 Только для записи
TOGGLE 0х4000_035С Только для записи
Регистр значения на 0х4000_0360 Только для чтения
ножке (PVR)
(SET), сброс (CLEAR), переключение (TOGGLE). В каждом режиме досту-
па регистры будут иметь различные адреса на локальной шине.
8.3. Карта сигналов запросов прерываний
Генерировать сигналы запросов прерываний могут различные модули МК.
Эти сигналы поступают в контроллер прерываний (INTC), который будет
описан ниже. Контроллер прерываний поддерживает до 64 групп запросов
прерываний. Каждая группа может содержать до 32 сигналов запросов пре-
рываний. Все сигналы запросов прерываний в одной группе совместно ис-
пользуют один и тот же адрес вектора и один и тот же уровень приоритета.
Связь сигналов запросов прерываний с INTC для МК подсемейства
AT32UC3A иллюстрирует табл. 8.2, а для МК подсемейства AT32UC3B —
табл. 8.3.
Табл. 8.2. Карта сигналов запросов прерываний для МК AT32UC3A
Группа Линия Модуль Сигнал
0 0 AVR32UC SYSBLOCK COMPARE
0 Контроллер внешних прерываний EIMO
1 Контроллер внешних прерываний EIM 1
2 Контроллер внешних прерываний EIM 2
3 Контроллер внешних прерываний EIM 3
4 Контроллер внешних прерываний EIM 4
1 5 Контроллер внешних прерываний EIM 5
6 Контроллер внешних прерываний EIM 6
7 Контроллер внешних прерываний EIM 7
8 Часы реального времени RTC
9 Менеджер питания PM
10 Измеритель частоты FREQM
2 0 Контроллер ввода/вывода общего назначения GPIOO
1 Контроллер ввода/вывода общего назначения GPIO 1
2 Контроллер ввода/вывода общего назначения GPIO 2
3 Контроллер ввода/вывода общего назначения GPIO 3
4 Контроллер ввода/вывода общего назначения GPIO 4
5 Контроллер ввода/вывода общего назначения GPIO 5
6 Контроллер ввода/вывода общего назначения GPIO 6
7 Контроллер ввода/вывода общего назначения GPIO 7
8 Контроллер ввода/вывода общего назначения GPIO 8
9 Контроллер ввода/вывода общего назначения GPIO 9
10 Контроллер ввода/вывода общего назначения GPIO 10
11 Контроллер ввода/вывода общего назначения GPIO 11
Табл. 8.2.
(окончание)
ЛИНИЯ- Модуль Сигнал
12 13 Контроллер ввода/вывода общего назначения Контроллер ввода/вывода общего назначения GPIO 12 GPIO 13
.— 0 Периферийный контроллер DMA PDMAO
1 Периферийный контроллер DMA PDMA 1
2 Периферийный контроллер DMA PDMA 2
3 Периферийный контроллер DMA PDMA3
4 Периферийный контроллер DMA PDMA 4
5 Периферийный контроллер DMA PDMA 5
6 Периферийный контроллер DMA PDMA 6
3 7 Периферийный контроллер DMA PDMA 7
8 Периферийный контроллер DMA PDMA 8
9 Периферийный контроллер DMA PDMA 9
10 Периферийный контроллер DMA PDMA 10
11 Периферийный контроллер DMA PDMA 11
12 Периферийный контроллер DMA PDMA 12
13 Периферийный контроллер DMA PDMA 13
14 Периферийный контроллер DMA PDMA 14
4 0 Контроллер Flash-памяти HFLASHC
5 0 Универсальный синхронно-асинхронный приемопередатчик USARTO
6 0 Универсальный синхронно-асинхронный приемопередатчик USART1
7 0 Универсальный синхронно-асинхронный приемопередатчик USART2
8 0 Универсальный синхронно-асинхронный приемопередатчик USART3
. 9 0 Последовательный периферийный интерфейс SPIO
10 0 Последовательный периферийный интерфейс SPI1
11 0 Двухпроводный интерфейс TWI
__12___ 0 Контроллер ШИМ PWM
... 13___ 0 Синхронный последовательный контроллер SSC
0 Таймер/счетчик TCO
14 1 Таймер/счетчик TCI
—- 2 Таймер/счетчик TC2
0 АЦП ADC
0 Ethernet МАС MACB
.^_Г7 0 Интерфейс USB 2.0 OTG USB
0 Контроллер SDRAM HSDRAMC
О Аудио ЦАП битового потока___________________ РАС
Табл. 8.3. Карта сигналов запросов прерываний для МК AT32UC3B
Группа Линия Модуль Сигнал
0 0 AVR32UC, опционально MPU и опционально OCD SYSBLOClT COMPARE
0 Контроллер внешних прерываний EIMO
1 Контроллер внешних прерываний EIM 1
2 Контроллер внешних прерываний EIM 2
3 Контроллер внешних прерываний EIM 3
1 4 Контроллер внешних прерываний EIM 4
1 5 Контроллер внешних прерываний EIM 5
6 Контроллер внешних прерываний EIM 6
7 Контроллер внешних прерываний EIM 7
8 Часы реального времени RTC
9 Менеджер питания PM
0 Контроллер ввода/вывода общего назначения GPIOO
1 Контроллер ввода/вывода общего назначения GPIO 1
э 2 Контроллер ввода/вывода общего назначения GPIO 2
3 Контроллер ввода/вывода общего назначения GPIO 3
4 Контроллер ввода/вывода общего назначения GPIO 4
5 Контроллер ввода/вывода общего назначения GPIO 5
0 Периферийный контроллер DMA PDMA 0
1 Периферийный контроллер DMA PDMA1
2 Периферийный контроллер DMA PDMA 2
3 3 Периферийный контроллер DMA PDMA3
4 Периферийный контроллер DMA PDMA 4
5 Периферийный контроллер DMA PDMA 5
6 Периферийный контроллер DMA PDMA 6
4 0 Контроллер Flash-памяти FLASHC
5 0 Универсальный синхронно-асинхронный приемопередатчик USARTO
6 0 Универсальный синхронно-асинхронный приемопередатчик USART1
7 0 Универсальный синхронно-асинхронный приемопередатчик USART2
9 0 Последовательный периферийный интерфейс SPI __
11 0 Двухпроводный интерфейс TWI
12 0 Контроллер ШИМ PWM
13 0 Синхронный последовательный контроллер SSC
Табл. 8.3. (окончание)
Группу Линия Модуль Сигнал
—- 0 Таймер/счетчик тсо
14 1 Таймер/счетчик ТС1
2 Таймер/счетчик ТС2
15 0 АЦП ADC
^17 0 Интерфейс USB 2.0 OTG USBB
8.4. Подключение сигналов синхронизации
8.4.1. Таймеры/счетчики
Для каждого канала таймера/счетчика МК может быть независимо выбран
внутренний или внешний источник счетной частоты. Возможные источ-
ники перечислены в табл. 8.4.
Табл. 8.4. Возможные источники счетной частоты каналов таймера/счет-
чика
Источник Имя Подключение
Внутренний TIMER_CLOCK1 Медленная тактовая частота (внутренний RC-генератор) TIMER_CLOCK2 Частота РВА/2 TIMER_CLOCK3 Частота РВА/8 TIMER_CLOCK4 Частота РВА/32 TIMER_CLOCK5 Частота РВА/128
Внешний ХСО См. раздел 8.4.7 ХС1 ХС2
8.4.2. USART
Каждый модуль USART может использовать для тактирования источники,
перечисленные в табл. 8.5.
Табл. 8.5. Возможные источники тактирования модулей USART
USART Источник Имя Подключение
0 1 2 (только у AT32UC3A) Внутренний CLK_DIV Частота РВА/8
8.4.3. SPI
Каждый модуль SPI может использовать для тактирования источники, пе-
речисленные в табл. 8.6.
Табл. 8.6. Возможные источники тактирования модулей SPI
SPI Источник Имя Подключение
0 Внутренний CLK_DIV Частота РВА или
1 (только у AT32UC3A) частота РВА/32
8.4.4. Порт связи OCD AUX
Если разрешена система трассировки с помощью встроенного модуля OCD,
то под управлением системы трассировки будет находиться группа из не-
скольких выводов МК независимо от текущей конфигурации контроллера
GPIO. В зависимости от значения поля AXS регистра OCD AXS возможны
два различных варианта отображения каждого вывода из этой группы на
линии ввода-вывода МК, что иллюстрируется табл. 8.7, 8.8.
Табл. 8.7. Порт связи OCD AUX для МК AT32UC3A
Вывод AXS=0 AXS=1
EVTI_N PB19 PA08
MDO [5] PB16 PA27
MDO [4] PB14 PA26
MDO [3] PB13 PA25
MDO [2] PB12 PA24
MDO [1] PB11 PA23
MDO [0] PB10 PA22
EVTO_N PB20 PB20
MCKO PB21 PA21
MSEO [1] PB04 PA07
MSEO [0] PB17 PA28
Табл. 8.8. Порт связи OCD AUX для МК AT32UC3B
Вывод AXS=0 AXS=1 ___
EVTIN PB05 PA14
MDO [5] PB04 PA08
MDO [4] PB03 PA07
MDO [3] PB02 PA06
Табл. 8.8.
(окончание)
" Вывод AXS=0 AXS=1
MDO [2] MDO [1] MDO [0] EVTO_N МСКО MSEO [1] MSEO [0] РВ01 РА05 PB00 РА03 РА31 РА02 РА15 РА15 РА30 РА13 РВ06 РА09 РВ07 РАЮ
8.4.5. Сигналы установления связи DMA
Модуль прямого доступа к памяти PDCA (PDMA) и периферийные модули
связываются между собой посредством некоторого набора сигналов, назы-
ваемых сигналами установления связи PDCA. В табл. 8.9, 8.10 приведены
корректные значения периферийных идентификаторов (PID), записывае-
мые в регистр выбора периферии (PSR) модуля PDCA для организации
связи PDCA с требуемым периферийным модулем и с требуемым направ-
лением связи. Описание модуля PDCA приведено в разделе «Периферий-
ный контроллер DMA (PDCA)».
Табл. 8.9. Сигналы установления связи PDCA для МК AT32UC3A
Значение PID Периферийный модуль и направление связи — прием (RX) или передача (ТХ)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 — 16 ADC SSC - RX USARTO - RX USART1 - RX USART2 - RX USART3 - RX TWI - RX SPIO - RX SPI1 - RX / SSC - TX USARTO - TX USART1 - TX USART2 - TX USART3 - TX TWI - TX SPIO — TX SPI1 — TX
Табл. 8.10. Сигналы установления связи PDCA для МК AT32UC3B
Значение PID Периферийный модуль и направление связи — прием (RX) или передача (ТХ)
0 ADC ~
1 SSC - RX
2 USART0 - RX
3 USART1 - RX
4 USART2 - RX
5 TWI - RX
6 SPI0 - RX
7 SSC - ТХ
8 USART0 - ТХ
9 USART1 - ТХ
10 USART2 - ТХ
11 TWI - ТХ
12 SPI0 - ТХ
8.4.6. Линии GPIO AT32UC3B с сильноточными драйверами
В отличие от МК подсемейства AT32UC3A устройства AT32UC3B содер-
жат несколько линий ввода-вывода общего назначения GPIO, имеющих
драйверы с нагрузочной способностью по току, вдвое большей, чем на-
грузочная способность остальных линий GPIO. Эти линии перечислены
в табл. 8.11.
Табл. 8.11. Линии GPIO МК AT32UC3B с сильноточными драйверами
Имя линии GPIO
GPIO 21/РА21
GPIO 22/РА22
GPIO 23/PA23
GPIO 24/PA24
8.4.7. Мультиплексирование периферии на линии GPIO
Каждая линия GPIO в МК может быть назначена для обслуживания одной
из трех периферийных функций: А, В или С. В табл. 8.12, 8.13 показа-
ны периферийные функции для линий GPIO МК подсемейств AT32UC3A
и AT32UC3B соответственно. В этих таблицах также показано взаимное
соответствие между выводами портов МК (РА, РВ, PC и РХ) и линиями
ввода-вывода контроллера GPIO. Для получения более подробной инфор-
мации по этому вопросу рекомендуется обратиться к разделу «Контроллер
ввода-вывода общего назначения (GPIO)».
Табл. 8.12. Мультиплексирование периферии на линии GPIO МК AT32UC3A
Ножка корпуса TQFP100 Ножка корпуса VQFP144 Вывод порта МК Линия GPIO Функция A Функция В Функция C
19 25 PA00 GPIO0 USARTO - RXD ТС - CLK0
20 27 РА01 GPIO 1 USARTO - TXD ТС - CLK1
23 30 РА02 GPIO 2 USARTO - CLK ТС - CLK2
24 32 РАОЗ GPIO 3 USARTO - RTS EIM - EXTINT[4] DAC - DATA[0]
25 34 РА04 GPIO 4 USARTO - CTS EIM - EXTINT[5] DAC - DATAN[0]
26 39 РА05 GPIO 5 USART1 - RXD PWM - PWM|4]
27 41 РА06 GPIO 6 USART1 - TXD PWM - PWM [5]
28 43 РА07 GPIO 7 USART1 - CLK PM - GCLK[0] SPIO - NPCS[3]
29 45 РА08 GPIO 8 USART1 - RTS SPIO - NPCS[1] EIM - EXTINT[7]
30 47 РА09 GPIO 9 USART1 - CTS SPIO - NPCS[2] MACB - WOL
31 48 РАЮ GPIO 10 SPIO - NPCS[0] EIM - EXTINT[6]
33 50 РАН GPIO 11 SPIO - MISO USB - USB_ID
36 53 РАЮ GPIO 12 SPIO - MOSI USB - USB_VBOF
37 54 РА13 GPIO 13 SPIO - SCK
39 56 РА14 GPIO 14 SSC - TX_FRAME_SYNC SPI1 - NPCS[0] EBI - NCS[0]
40 57 РАЮ GPIO 15 SSC - TX_CLOCK SPI1 - SCK EBI - ADDR[20]
41 58 РАЮ GPIO 16 SSC - TX_DATA SPI1 - MOSI EBI - ADDR[21]
42 60 РА17 GPIO 17 SSC - RX_DATA SPI1 - MISO EBI - ADDR[22]
43 62 РАЮ GPIO 18 SSC - RX_CLOCK SPI1 - NPCS[1] MACB - WOL
44 64 РАЮ GPIO 19 SSC - RX_FRAME_SYNC SPI1 - NPCS[2]
45 66 РА20 GPIO 20 EIM - EXTINT[8] SPI1 - NPCS[3]
51 73 РА21 GPIO 21 ADC - AD[0] EIM - EXTINTfO] USB - USB_ID
Табл. 8.12.
(продолжение)
Ножка корпуса TQFP100 Ножка корпуса VQFP144 Вывод порта МК Линия GPIO Функция A Функция В Функция C
52 74 РА22 GPIO 22 ADC - AD[1] EIM - EXTINT[1] USB - USB_VBOF
53 75 РА23 GPIO 23 ADC - AD[2] EIM - EXTINT[2] DAC - DATA[1]
54 76 РА24 GPIO 24 ADC - AD[3] EIM - EXTINT[3] DAC - DATAN[1]
55 77 РА25 GPIO 25 ADC - AD[4] EIM - SCAN[0] EBI - NCS[0]
56 78 РА26 GPIO 26 ADC - AD[5] EIM - SCAN[1] EBI - ADDR[20]
57 79 РА27 GPIO 27 ADC- AD[6] EIM - SCAN[2] EBI - ADDR[21]
58 80 РА28 GPIO 28 ADC- AD[7] EIM - SCAN[3] EBI - ADDR[22]
83 122 РА29 GPIO 29 TWI - SDA USART2 - RTS
84 123 РАЗО GPIO 30 TWI - - SCL USART2 - CTS
65 88 PB00 GPIO 32 MACB - TX_CLK USART2 - RTS USART3 - RTS
66 90 РВ01 GPIO 33 MACB - TX_EN USART2 - CTS USART3 - CTS
70 96 РВ02 GPIO 34 MACB - TXD[0] DAC - DATA[0]
71 98 РВОЗ GPIO 35 MACB - TXD[1] DAC - DATAN[0]
72 100 РВ04 GPIO 36 MACB - - CRS USART3 - CLK EBI - NCS[3]
73 102 РВ05 GPIO 37 MACB - RXD[0] DAC - DATA[1]
74 104 РВ06 GPIO 38 MACB - RXD[1] DAC - DATAN[1]
75 106 РВ07 GPIO 39 MACB - RX_ER
76 111 РВ08 GPIO 40 MACB - - MDC
77 113 РВ09 GPIO 41 MACB - - MDIO
78 115 РВ10 GPIO 42 MACB - TXD[2] USART3 - RXD EBI - SDCK
81 119 РВИ GPIO 43 MACB - TXD[3] USART3 - TXD EBI - SDCKE
82 121 РВ12 GPIO 44 MACB - TX ER TC - CLKO EBI - RAS
Табл. 8.12.
(продолжение)
Ножка корпуса TQFP100 Ножка корпуса VQFP144 Вывод порта МК Линия GPIO Функция A Функция В Функция C
87 126 РВ13 GPIO 45 MACB - RXD[2] TC - CLK1 EBI - CAS
88 127 РВ14 GPIO 46 MACB - RXD[3] TC - CLK2 EBI - SDWE
95 134 РВ15 GPIO 47 MACB - RX_DV
96 136 РВ16 GPIO 48 MACB - COL USB - USB_ID EBI - SDA10
98 139 РВ17 GPIO 49 MACB - RX_CLK USB - USB_VBOF EBI— ADDR[23]
99 141 РВ18 GPIO 50 MACB - SPEED ADC - TRIGGER PWM - PWM[6]
100 143 РВ19 GPIO 51 PWM - PWM[0] PM - GCLK[0] EIM - - SCAN[4]
1 3 РВ20 GPIO 52 PWM - PWM[1] PM - GCLK[1] EIM - - SCAN[5]
2 5 РВ21 GPIO 53 PWM - PWM[2] PM - GCLK[2] EIM - - SCAN[6]
3 6 РВ22 GPIO 54 PWM - PWM[3] PM - GCLK[3] EIM - - SCAN[7]
6 9 РВ23 GPIO 55 ТС - A0 USART1 - DCD
7 11 РВ24 GPIO 56 TC- B0 USART1 - DSR
8 13 РВ25 GPIO 57 TC-Al USART1 - DTR
9 14 РВ26 GPIO 58 TC - Bl USART1 - RI
10 15 РВ27 GPIO 59 TC - A2 PWM - PWM[4]
14 19 РВ28 GPIO 60 TC - B2 PWM - PWM[5]
15 20 РВ29 GPIO 61 USART2 - RXD PM - GCLK[1] EBI - - NCS[2]
16 21 РВ30 GPIO 62 USART2 - TXD PM - GCLK[2] EBI - SDCS
17 22 РВ31 GPIO 63 USART2 - CLK PM - GCLK[3] EBI - - NWAIT
63 85 PC00 GPIO 64
64 86 РС01 GPIO 65
85 124 РС02 GPIO 66
Табл. 8.12.
(продолжение)
Ножка корпуса TQFP100 Ножка корпуса VQFP144 Вывод порта МК Линия GPIO Функция A Функция В Функция C
86 125 РСОЗ GPIO 67
93 132 РС04 GPIO 68
94 133 РС05 GPIO 69
1 PX00 GPIO 100 EBI - DATA[10] USARTO - RXD
2 РХ01 GPIO 99 EBI - DATA[9] USARTO - TXD
4 РХ02 GPIO 98 EBI - DATA[8] USARTO - CTS
10 РХОЗ GPIO 97 EBI - DATA[7] USARTO - RTS
12 РХ04 GPIO 96 EBI - DATA[6] USART1 - RXD
24 РХ05 GPIO 95 EBI - DATA[5] USART1 -TXD
26 РХ06 GPIO 94 EBI - DATA[4] USART1 - CTS
31 РХ07 GPIO 93 EBI - DATA[3] USART1 - RTS
33 РХ08 GPIO 92 EBI - DATA[2] USART3 - RXD
35 РХ09 GPIO 91 EBI - DATA[1] USART3 -TXD
38 РХ10 GPIO 90 EBI - DATA[0] USART2 - RXD
40 РХ11 GPIO 109 EBI - NWE1 USART2 - TXD
42 РХ12 GPIO 108 EBI - NWE0 USART2 - CTS
44 РХ13 GPIO 107 EBI - NRD USART2 - RTS
46 РХ14 GPIO 106 EBI - NCS[1] TC -A0
59 РХ15 GPIO 89 EBI - ADDR[19] USART3 - RTS TC - B0
61 РХ16 GPIO 88 EBI - ADDR[18] USART3 - CTS TC -Al
63 РХ17 GPIO 87 EBI - ADDR[17] TC - Bl
65 РХ18 GPIO 86 EBI - ADDR[16] TC - A2
Табл. 8.12.
(окончание)
Ножка корпуса TQFP100 Ножка корпуса VQFP144 Вывод порта МК Линия GPIO Функция A Функция В Функция C
67 РХ19 GPIO 85 EBI - ADDR[15] EIM - SCAN[0] ТС - B2
87 РХ20 GPIO 84 EBI - ADDR[14] EIM - SCAN[1] TC - CLKO
89 РХ21 GPIO 83 EBI - ADDR[13] EIM - SCAN[2] TC - CLK1
91 РХ22 GPIO 82 EBI - ADDR[12] EIM - SCAN[3] TC - CLK2
95 РХ23 GPIO 81 EBI - ADDR[11] EIM - SCAN[4]
97 РХ24 GPIO 80 EBI - ADDR[10] EIM - SCAN[5]
99 РХ25 GPIO 79 EBI - ADDR[9] EIM - SCAN[6]
101 РХ26 GPIO 78 EBI - ADDR[8] EIM - SCAN[7]
103 РХ27 GPIO 77 EBI - ADDR[7] SPIO - MISO
105 РХ28 GPIO 76 EBI - ADDR[6] SPIO - MOSI
107 РХ29 GPIO 75 EBI - ADDR[5] SPIO - SCK
НО РХЗО GPIO 74 EBI - ADDR[4] SPIO - NPCS[0]
112 РХ31 GPIO 73 EBI - ADDR[3] SPIO - NPCS[1]
114 РХ32 GPIO 72 EBI - ADDR[2] SPIO - NPCS[2]
118 РХЗЗ GPIO 71 EBI - ADDR[1] SPIO - NPCS[3]
120 РХ34 GPIO 70 EBI - ADDR[0] SPI1 - MISO
135 РХ35 GPIO 105 EBI - DATA[15] SPI1 - MOSI
137 РХ36 GPIO 104 EBI - DATA[14] SPI1 - SCK
140 РХ37 GPIO 103 EBI - DATA[13] SPI1 - NPCS[0]
142 РХ38 GPIO 102 EBI - DATA[12] SPI1 - NPCS[1]
144 РХ39 GPIO 101 EBI - DATA[11] SPI1 - NPCS[2]
Табл. 8.13. Мультиплексирование периферии на линии GPIO МК AT32UC3B
Ножка корпуса QFP48 Ножка корпуса QFP64 Вывод порта МК Линия GPIO Функция A Функция В Функция C
7 9 РАОЗ GPIO 3 ADC - AD[0] PM - GCLK[0] USBB - USBJD
8 10 РА04 GPIO 4 ADC - AD[1] PM - GCLK[1] USBB - USB_VBOF
9 11 РА05 GPIO 5 EIC - EXTINTfO] ADC - AD[2] USART1 - DCD
10 12 РА06 GPIO 6 EIC - EXTINT[1] ADC - AD[3] USART1 - DSR
11 13 РА07 GPIO 7 PWM - PWM[0] ADC - AD[4] USART1 - DTR
12 14 РА08 GPIO 8 3 - PWM[1] ADC - AD[5] USART1 - RI
20 28 РА09 GPIO 9 TWI - SCL SPI - NPCS[2] USART1 - CTS
21 29 РАЮ GPIO 10 TWI - SDA SPI - NPCS[3] USART1 - RTS
22 30 РАН GPIO 11 USART0 - RTS TC - A2 PWM - PWM[0]
23 31 РАЮ GPIO 12 USART0 - CTS TC-B2 PWM - PWM[1]
25 33 РА13 GPIO 13 NMI PWM - PWM[2] USART0 - CLK
26 34 РАИ GPIO 14 SPI - MOSI PWM - PWM[3] EIC - EXTINT[2]
27 35 РА15 GPIO 15 SPI - SCK PWM - PWM[4] USART2 - CLK
28 36 РА16 GPIO 16 SPI - NPCS[0] TC - CLK1
29 37 РА17 GPIO 17 SPI - NPCS[1] TC - CLK2 SPI - SCK
30 39 РАЮ GPIO 18 USART0 - RXD PWM - PWM[5] SPI - MISO
31 40 РАЮ GPIO 19 USART0 - TXD PWM - PWM[6] SPI - MOSI
32 44 РА20 GPIO 20 USART1 - CLK TC - CLK0 USART2 - RXD
33 45 РА21 GPIO 21 PWM - PWM[2] TC-Al USART2 - TXD
34 46 РА22 GPIO 22 PWM - PWM[6] TC - Bl ADC - TRIGGER
35 47 РА23 GPIO 23 USART1 - TXD SPI - NPCS[1] EIC - EXTINT[3]
43 59 РА24 GPIO 24 USART1 - RXD SPI - NPCS[0] EIC - EXTINT[4]
Табл. 8.13.
(окончание)
Ножка корпуса QFP48 Ножка корпуса QFP64 Вывод порта МК Линия GPIO Функция A Функция В Функция C
44 60 РА25 GPIO 25 SPI - MISO PWM - PWM[3] EIC - EXTINT[5]
45 61 РА26 GPIO 26 USBB - USB_ID USART2 - TXD TC-AO
46 62 РА27 GPIO 27 USBB - USB_VBOF USART2 - RXD TC - BO
41 РА28 GPIO 28 USARTO - CLK PWM - PWM[4] SPI - MISO
42 РА29 GPIO 29 TC - CLKO TC - CLK1 SPI - MOSI
15 РАЗО GPIO 30 ADC - AD[6] EIC - SCAN[0] PM - GCLK[2]
16 РА31 GPIO 31 ADC - AD[7] EIC - SCAN[1]
6 РВОО GPIO 32 TC-A EIC - SCAN[2] USART2 - CTS
7 РВ01 GPIO 33 TC - BO EIC - SCAN[3] USART2 - RTS
24 РВ02 GPIO 34 EIC - EXTINT[6] TC - Al USART1 - TXD
25 РВОЗ GPIO 35 EIC - EXTINT[7] TC-B1 USART1 - RXD
26 РВ04 GPIO 36 USART1 - CTS SPI - NPCS[3] TC - CLK2
27 РВ05 GPIO 37 USART1 - RTS SPI - NPCS[2] PWM - PWM[5]
38 РВ06 GPIO 38 SSC - RX_CLOCK USART1 - DCD EIC - SCAN[4]
43 РВ07 GPIO 39 SSC - RX_DATA USART1 - DSR EIC - SCAN[5]
54 РВ08 GPIO 40 SSC - RX_FRAME_SYNC USART1 - DTR EIC - SCAN[6]
55 РВ09 GPIO 41 SSC - TX_CLOCK USART1 - RI EIC - SCAN[7]
57 РВ10 GPIO 42 SSC - TX_DATA TC - A2 USARTO - RXD
58 РВИ GPIO 43 SSC - TX_FRAME_SYNC TC-B2 USARTO - TXD
3 3 TDI GPIOO
4 4 TDO GPIO 1
5 5 TMS GPIO 2
8.4.8. Выводы генераторов
Функция обслуживания встроенных генераторов, заданная для несколь-
ких выводов МК, не относится ни к одной из периферийных функций А,
В или С. Мультиплексирование выводов для задания функции обслужива-
ния генераторов управляется регистрами модуля менеджера питания (РМ),
описанного в соответствующем разделе.
В табл. 8.14, 8.15 показаны функции обслуживания генераторов для вы-
водов МК подсемейств AT32UC3A и AT32UC3B соответственно.
Табл. 8.14. Выводы генераторов для МК AT32UC3A
Ножка корпуса TQFP100 Ножка корпуса VQFP144 Вывод порта МК Вывод генератора
85 124 РС02 xinO
93 132 РС04 xinl
63 85 PC00 xin32
86 125 РСОЗ xoutO
94 133 РС05 xoutl
64 86 РС01 xout32
Табл. 8.15. Выводы генераторов для МК AT32UC3B
Ножка корпуса QFP48 Ножка корпуса QFP64 Вывод порта МК Вывод генератора
30 39 РА18 xinO
41 РА28 xinl
22 30 РАН xin32
31 40 РА19 xoutO
42 РА29 xoutl
23 31 РА12 xout32 _
ГЛАВА 9
МЕНЕДЖЕР ПИТАНИЯ (РМ)
Для большинства семейств МК производства фирмы Atmel характерно
наличие расширенных возможностей по управлению энергопотреблени-
ем реализованных, как правило, посредством управления тактированием
устройства. Семейство AT32UC3 не является в этом плане исключением.
Управление энергопотреблением в AT32UC3 обеспечивается встроенным
модулем менеджера питания (РМ).
9.1. Основные особенности РМ
Модуль менеджера питания МК AT32UC3 имеет следующие основные осо-
бенности.
• Управляет интегрированными генераторами и системами ФАПЧ
(PLL).
• Генерирует сигналы синхронизации и сброса для цифровой логики.
• Поддерживает два кварцевых генератора с частотой в диапазоне
450 кГц-16 МГц.
• Поддерживает две системы ФАПЧ с частотой в диапазоне 80—
240 МГц.
• Поддерживает ультранизкопотребляющий генератор частоты
32 кГц.
• Интегрирует в своем составе RC-генератор с низким энергопотре-
блением.
’ Позволяет изменять «на лету» тактовые частоты ЦПУ, HSB, РВА
и РВВ.
Поддерживает несколько подрежимов «спящего» режима (Sleep), по-
зволяющих производить избирательное отключение логики синхро-
низации, систем ФАПЧ и генераторов.
’ Поддерживает избирательное тактирование на уровне модулей с по-
мощью маскируемого периферийного тактирования.
Обеспечивает возможность «пробуждения» от внутренних или
внешних прерываний.
Обеспечивает генерацию тактовых частот в широком диапазоне.
Автоматически идентифицирует источники сброса.
Управляет детектором провалов напряжения питания (BOR), RC-
генератором и источником опорного напряжения через регистры
управления и калибровки.
Блок-схема менеджера питания изображена на рис. 9.1.
Менеджер питания (РМ) управляет генераторами и системами ФАПЧ,
а Также генерирует сигналы синхронизации и сброса МК. РМ управляет
Рис. 9.1. Блок-схема менеджера питания (РМ)
двумя высокочастотными кварцевыми генераторами и двумя системами
ФАПЧ, которые могут осуществлять умножение частоты любого генера-
тора, чтобы обеспечивать генерацию более высоких частот. Кроме того,
в составе МК имеется малопотребляющий низкочастотный генератор ча-
стоты 32 кГц, генерирующий счетную частоту для часов реального времени
(RTC). Модуль РМ также содержит встроенный RC-генератор с низким
энергопотреблением с быстрым временем запуска, который может исполь-
зоваться, чтобы синхронизировать цифровую логику.
Все генерируемые в модуле РМ импульсные сигналы делятся на сигналы
синхронизации и универсальные сигналы. Сигналы синхронизации использу-
ются для синхронизации основной цифровой логики МК (ЦПУ и периферий-
МОДУЛИ’ связанные с шинами HSB, РВА и РВВ). Универсальные сигналы
ные тсЯ асинхронными и по частоте могут быть заданы в пределах широкого
явЛ* Ного диапазона, что делает их подходящими для тактирования перифе-
Ча^ных устройств, например, коммуникационных модулей и таймеров.
рИИМенеджер питания также содержит узлы, предназначенные для органи-
и эКономии энергопотребления, что дает возможность пользователю
3aU „визировать потребляемую приложением мощность.
°П Множество сигналов синхронизации в модуле РМ разделено на три до-
на один из которых используется ЦПУ и HSB, один — модулями, подклю-
ченными к шине РВА, и один — модулями, подключенными к шине РВВ.
Частоты синхросигналов из разных доменов могут иметь различные значения,
что дает возможность пользователю экономить потребляемую МК мощность,
тактируя, например, периферийные устройства относительно низкой частотой,
а ЦПУ — высокой. Кроме того, эти частоты могут быть независимо изменены
«на лету» без остановки работы любых периферийных устройств. Эта особен-
ность дает возможность пользователю корректировать скорость работы ЦПУ
и блоков памяти при динамической загрузке приложения, не нарушая при
этом конфигурации активных периферийных устройств. Каждый периферий-
ный модуль также имеет отдельный вход тактирования, что дает возможность
пользователю отключать тактирование неактивных модулей, чтобы таким об-
разом экономить потребляемую мощность. Кроме того, синхросигналы и ге-
нераторы могут автоматически отключаться в течение неактивных периодов,
используя команду «засыпания» (Sleep) ЦПУ. При этом система возвращается
в нормальное состояние при возникновении прерываний.
Менеджер питания также содержит встроенный узел контроллера сбро-
са, в котором происходит объединение сигналов от всех возможных источ-
ников сброса и генерация аппаратных и программных сбросов. Контроллер
сброса дает возможность пользовательской программе идентифицировать
источник сброса.
Менеджер питания обеспечивает возможность мультиплексирования
своих выходных частот на некоторое множество линий GPIO. Если эти
линии не используются модулем РМ, то они могут использоваться другим
приложением.
Линия прерывания от модуля РМ связана с одним из внутренних ис-
точников контроллера прерывания. Использование прерывания от РМ
требует предварительного конфигурирования контроллера прерывания.
Как уже было сказано выше, шина HSB использует тактовый сигнал
совместно с ЦПУ. Это означает, что запись в биты HSBDIV и HSBSEL
Регистра CKSEL не будет иметь никакого эффекта. Эти биты будут всегда
читаться одинаково с битами CPUDIV и CPUSEL.
9.2. Функциональное описание
9.2.1. Медленный синхросигнал
Так
к Называемый «медленный» синхросигнал генерируется внутренним RC-
Нератором, который функционирует постоянно, кроме как в подрежиме
Static «спящего» (Sleep) режима. Медленный синхросигнал может использо-
ваться в устройстве в качестве задающей частоты, как будет описано ниже.
Медленный синхросигнал также используется для работы сторожевого тай-
мера и измерения различных временных задержек в менеджере питания.
RC-генератор имеет время запуска, равное трем тактовым циклам,
и доступен всегда, когда функционирует ЦПУ. Частота RC-генератора при-
близительно равна 115 кГц и может быть откалибрована в узком диапазоне
fuses-установками калибровочного регистра RCOSCCAL. Пользовательская
программа может также изменить калибровку RC-генератора с помощью
регистра RCCR. Частота RC-генератора может использоваться в качестве
тактовой для счетчика реального времени RTC в тех случаях, когда не тре-
буется высокая точность отсчета времени.
9.2.2. Генераторы 0 и 1
Два основных генератора МК (0 и 1) предназначены для работы с внеш-
ними кварцевыми резонаторами в диапазоне частот от 450 кГц до 16 МГц,
подключаемыми, как показано на рис. 9.2. Генератор 0 может использовать-
ся в устройстве в качестве генератора задающей частоты, как будет описано
ниже. Оба генератора могут использоваться как источники универсальных
синхросигналов, как будет описано ниже. После сброса по умолчанию оба
генератора заблокированы. Когда генераторы заблокированы, соответству-
ющие им выводы XIN и XOUT могут использоваться как линии GPIO.
Когда генераторы сконфигурированы для использования внешнего такто-
вого сигнала, этот сигнал должен подаваться на вывод XIN, а вывод XOUT
при этом может использоваться как линия GPIO.
Функционирование генераторов разрешается путем записи в биты OSCnEN
регистра MCCTRL. Режим операций генератора (внешняя тактовая частота
или кварцевый резонатор) выбирается путем записи в поле MODE регистра
OSCCTRLn. Генераторы автоматически отключаются в некоторых подрежи-
мах «спящего» режима МК, чтобы уменьшить потребляемую мощность.
После аппаратного сброса или при «пробуждении» из «спящего» ре-
жима, при переходе в который генераторы были автоматически отключе-
ны, генераторам требуется некоторый интервал времени (время запуска),
чтобы стабилизировать свою работу на заданной частоте. Время запуска
может быть задано пользователем в регистре OSCCTRLn. В течение вре-
мени запуска генераторов менеджер питания отключает от остальной ло-
с,
Рис. 9.2. Подключение внешних кварцевых резонаторов к основным генера-
торам МК
u их выводы, чтобы исключить поступление нестабильной частоты на
ГИ гЬровую логику МК. Биты OSCnRDY в регистре POSCSR автоматически
вдавливаются и сбрасываются в соответствии с текущим состоянием
Устаоаторов. Положительный перепад для каждого из этих битов при соот-
геНствуюшей настройке может генерировать прерывание, о чем будет под-
робнее рассказано ниже.
9.2.3. Низкочастотный генератор 32 кГц
Генератор частоты 32 кГц функционирует так же, как и генераторы 0 и 1.
Этот генератор используется в качестве источника задающей частоты для
счетчика реального времени RTC. По умолчанию этот генератор забло-
кирован, но его можно включить путем записи в бит OSC32EN регистра
OSCCTRL32. Генератор частоты 32 кГц потребляет ультрамалую мощность
и остается включенным во всех подрежимах «спящего» режима, кроме под-
режима Static.
Когда генератор частоты 32 кГц отключен, выводы XIN32, и XOUT32 до-
ступны в качестве линий GPIO. Когда генератор сконфигурирован для работы
с внешним синхросигналом (битовое поле MODE в регистре OSCCTRL32),
этот внешний синхросигнал должен быть подан на вывод XIN32, то время
как вывод XOUT32 может использоваться как линия GPIO.
Время запуска генератора частоты 32 кГц может быть задано в битовом
поле OSCCTRL32, после чего следует установить бит OSC32RDY в реги-
стре POSCSR. По положительному перепаду бита OSC32RDY может быть
сгенерировано прерывание.
При использовании кварцевого резонатора генератор частоты 32 кГц
требует довольно большого времени на запуск (до 1 с). По этой причине
этот генератор сконструирован так, что на его работу не оказывают влия-
ния никакие сбросы МК, кроме сброса при включении питания.
9.2.4. Системы ФАПЧ
МК AT32UC3 содержат две системы ФАПЧ (PLL): PLL0 и PLL1. По умол-
чанию после сброса они отключены, но могут быть программно включе-
ны для использования в качестве источников высокочастотного сигнала
синхронизации или универсального синхросигнала. Обе системы ФАПЧ
ыогут использовать генератор 0 или генератор 1 в качестве источника
°порной частоты. Выходная частота ФАПЧ, поделенная на коэффици-
ент Умножения, постоянно сравнивается с опорной частотой ФАПЧ.
Рй этом система ФАПЧ соответствующим образом корректирует значе-
ние выходной частоты.
Входящий в состав системы ФАПЧ генератор, управляемый напряже-
нием (VCO), может генерировать частоты в диапазоне 80—240 МГц. Чтобы
Формировать на выходе ФАПЧ частоты, меньшие 80 МГц, необходимо
становить битовое поле PLLOTPfl], При этом выходная частота VCO будет
Литься на два и результирующая частота не превысит максимально до-
Устимую тактовую частоту ЦПУ.
Рис. 9.3. Блок-схема системы ФАПЧ с логикой управления и фильтрами
Когда система ФАПЧ включается, а также при смене источника син-
хронизации ФАПЧ или коэффициента умножения ФАПЧ петля обратной
связи ФАПЧ еще не замкнута и выходная частота ФАПЧ имеет неопреде-
ленное значение. Чтобы исключить поступление на цифровую логику МК
недопустимо высокой или нестабильной частоты с выхода ФАПЧ, все вре-
мя, пока петля обратной связи ФАПЧ не замкнута, выход ФАПЧ автома-
тически отключается от логики МК.
Блок-схема системы ФАПЧ с логикой управления и фильтрами пока-
зана на рис. 9.3.
Функционирование системы ФАПЧп разрешается путем записи в бит
PLLEN регистра PLLn. Битовое поле PLLOSC выбирает в качестве ис-
точника задающей частоты ФАПЧ генератор 0 или генератор 1. В битовые
поля PLLMUL и PLLDIV должны быть предварительно записаны коэффи-
циенты умножения и деления соответственно. Частота управляемого на-
пряжением генератора будет определяться по следующим формулам:
fvco = (PLLMUL+1)/(PLLDIV) х fosc если PLLDIV > 0.
fvco = 2 х (PLLMUL+1) x fosc если PLLDIV = 0.
Если поле PLLOPT[1] имеет значение 0, то fPLL = fvco.
Если поле PLLOPT[1] имеет значение 1, то fPLL = fvco I 2.
Значение битового поля PLLn регистра PLLOPT должно быть установ-
лено в соответствии со значением частоты ФАПЧ fPLL.
Сигнал замыкания петли ОС для каждой системы ФАПЧ доступен про-
грамме как флаг LOCKn в регистре POSCSR. При положительном пере-
паде этих флагов может быть сгенерировано прерывание.
9.2.5. Сигналы синхронизации
Медленный синхросигнал (установка, заданная по умолчанию), генератор 0
или PLL0 могут использоваться как источники задающей частоты, которая
является исходным синхросигналом, общим для синхронизации модулей
CPU/HSB, РВА, и РВВ. Задающая частота делится с помощью 8-разрядно-
поеДДелителя’ a затем каждый из перечисленных выше модулей может
Г° хронизироваться через свой домен (область) синхронизации от любого
СЙ восьми значений частоты с выходов предделителя или не поделенной
И3 яюШей частоты. Выбор синхронизации модуля остается корректным,
заЯго г > fDD. н. Источник сигнала синхронизации каждого модуля может
* ть заменен «на лету», позволяя тем самым системе реагировать на из-
еНЯюШУюся загРУЗку модуля в приложении. Все домены формирования
М гналов синхронизации в «спящем» режиме МК могут быть отключены,
будет описано ниже. Кроме того, сигнал синхронизации каждого мо-
ля в соответствующем домене может быть индивидуально замаскирован,
чтобы сэкономить потребляемую мощность в неактивных модулях.
Блок-схема логики формирования сигналов синхронизации показана
на рис. 9.4.
Как уже было сказано, по умолчанию задающая частота формируется
из частоты медленного синхросигнала. Пользователь может «вручную» вы-
брать для формирования задающей частоты генератор 0 или PLL0 путем
записи в битовое поле MCSEL в регистре MCCTRL. Предварительно соот-
ветствующий модуль источника задающей частоты (генератор 0 или PLL0)
должен быть включен, в противном случае, произойдет остановка такти-
рования. Следует также позаботиться о том, чтобы выбираемые частоты
сигналов синхронизации не превышали максимально допустимых частот
для каждого домена синхронизации.
По умолчанию сигналы синхронизации формируются из не поде-
ленной задающей частоты. Пользователь может выбрать коэффициент
деления предделителя для синхросигнала ЦПУ путем установки бита
CKSEL:CPUDIV и записи в поле CPUSEL значения коэффициента деле-
ния. Частота синхросигнала ЦПУ определяется по следующей формуле:
f = f I O(CPUSEL+1)
XCPU xmain '
Рис. 9.4. Блок-схема логики формирования сигналов синхронизации
Аналогичным образом сигналы синхронизации для РВА и РВВ могут
быть получены путем записи в соответствующие битовые поля. Для таран,
тии корректной работы МК при выборе частот синхросигналов должно
соблюдаться правило fcpu > fPBA в. Кроме того, выбранные значения ча-
стот никогда не должен превышать максимально допустимых значений ддя
каждого домена.
Запись в регистр CKSEL может быть произведена без остановки или
отключения периферийных модулей. Запись в CKSEL позволяет одновре-
менно обновить все значения частот сигналов синхронизации. Имеется
возможность также сохранить один или более синхросигналов неизменны-
ми путем записи одного и того же значения сначала в поле xxxDIV, а затем
в поле xxxSEL. Указанным способом можно, например, изменить тактовые
частоты ЦПУ и HSB в соответствии с их требуемой загрузкой при сохране-
нии неизменными значений тактовых частот РВА и РВВ.
Вновь заданное значение частоты синхросигнала вступает в силу не
сразу после записи в CKSEL, а через некоторый интервал времени. В тече-
ние этого интервала флаг готовности синхронизации (CKRDY) в регистре
ISR будет читаться как 0. Если в бит IER:CKRDY записан высокий уро-
вень, то когда вновь заданное значение частоты синхросигнала вступает
в силу, менеджер питания генерирует прерывание.
Регистр CKSEL не должен перезаписываться программой, пока бит
CKRDY равен 0, в противном случае, возможна некорректная работа или
«зависание» МК.
9.2.6. Маскирование периферийной синхронизации
По умолчанию синхросигналы для всех модулей разрешены независимо
от того, используются ли эти модули фактически. Возможно отключение
синхронизации доменов модулей ЦПУ, HSB, РВА или РВВ путем записи О
в соответствующий бит в регистре маски синхронизации (CPU/HSB/PBA/
РВВ). Если синхронизация модуля отключена, то все его операции прекра-
щаются, а его регистры не могут подвергаться записи или чтению.
Синхронизации любого модуля можно восстановить путем записи 1
в соответствующий бит маски синхронизации.
Модуль может быть связан с несколькими доменами синхронизации.
В этом случае будут действовать несколько битов масок.
Необходимо заметить, что отключение синхросигнала для встроенной
памяти RAM вызовет нарушение выполнения программы, если в эту па-
мять отображен системный стек. Отключение синхросигнала менеджера
питания, который содержит регистры маски синхронизации или отклю-
чение связи с мостом РВх, приведет к невозможности повторной записи
в указанные регистры. В этой ситуации восстановить возможность записи
в регистры маски синхронизации можно только с помощью системного
сброса.
По причине необходимости синхронизации в генераторе синхросигнала
между моментом записи в регистр маски и моментом вступления в действие
записанного значения маски имеется небольшая задержка. При сбросе би-
маски эта задержка, как правило, может программой игнорироваться.
т°Внако при установке битов маски запись в регистры соответствующего
не должна производиться, пока синхросигнал не будет заданным
азом замаскирован. Информацию о текущем состоянии маски дает
0 грамме флаг состояния MSKRDY в регистре ISR. При записи в любой
сТр маски любого значения этот бит автоматически сбрасывается. Бит
USKRDY устанавливается, когда синхросигнал размаскируется, а затем
скируется согласно новой заданной маске. Опционально можно задать
М нерацию прерывания от менеджера питания при наступлении этого со-
бытия путем записи в бит MSKRDY регистра IER.
9.2.7. Подрежимы «спящего» режима
В нормальном режиме все домены синхронизации активны, что позволяет
всей периферии МК осуществлять нормальные операции. Когда тактиро-
вание ЦПУ остановлено, можно отключить синхросигнал ЦПУ и произ-
вольно синхросигналы других доменов синхронизации в целях экономии
потребляемой мощности. Такое отключение активизируется командой
«спящего» режима sleep, которая использует в качестве аргумента значение
индекса подрежима.
Команда sleep останавливает ЦПУ и все модули, чьи домены синхро-
низации отключаются. Модули будут остановлены независимо от текущих
значений регистров маски.
Генераторы и системы ФАПЧ также могут быть отключены в целях
экономии потребляемой мощности. Поскольку некоторые из этих модулей
имеют относительно большое время запуска, их рекомендуется отключать
только в том случае, если требуется обеспечить очень малое энергопотре-
бление приложения.
При выходе из «спящего» режима ЦПУ и другие отключенные модули
перезапускаются. Это происходит при генерации прерывания. Необходимо
заметить, что даже если прерывание в «спящем» режиме разрешено, то оно
не может быть сгенерировано, если у модуля, являющегося его источни-
ком, не включена синхронизация.
В МК AT32UC3 поддерживаются следующие подрежимы «спящего» ре-
жима.
Idle: ЦПУ остановлен, остальная часть МК функционирует. Источ-
ником «пробуждения» может быть любое прерывание.
Frozen: ЦПУ и модуль HSB остановлены, периферийные устройства
функционируют. Источником «пробуждения» может быть любое
прерывание от РВ-модулей.
Standby: все сигналы синхронизации остановлены, но генераторы
и системы ФАПЧ функционируют, позволяя быстрое «пробужде-
ние» в нормальный режим. Источниками «пробуждения» могут
быть модуль часов реального времени (RTC) или внешнее преры-
вание (EIC).
Stop: подобен подрежиму Standby, но генератор 0, генератор 1 и си-
стемы ФАПЧ остановлены. Генератор частоты 32 Гц (если он разре-
Табл. 9.1. Подрежимы «спящего» режима AT32UC3
Ин- декс Подрежим «спящего» режима ЦПУ HSB РВА, В GCLK OscO,l PLL0.1 Osc32 RCOsc BOD и ИОН Стабилиза- тор напря- жения
0 Idle Остановлен Функцио- нирует Функцио- нирует Функцио- нирует Функцио- нирует Функцио- нирует Вкл Полная мощность
1 Frozen Остановлен Остановлен Функцио- нирует Функцио- нирует Функцио- нирует Функцио- нирует Вкл Полная мощность
2 Standby Остановлен Остановлен Остановлен Функцио- нирует Функцио- нирует Функцио- нирует Вкл Полная мощность
3 Stop Остановлен Остановлен Остановлен Остановлен Функцио- нирует Функцио- нирует Вкл Малая мощность
4 DeepStop Остановлен Остановлен Остановлен Остановлен Функцио- нирует Функцио- нирует Откл Малая мощность
5 Static Остановлен Остановлен Остановлен Остановлен Остановлен Остановлен Откл Малая
мощность
шен), RC-генераторы и RTC/WDT все еще функционируют. Источ-
никами «пробуждения» могут быть модуль часов реального времени
(RTC), внешнее прерывание (EIC) или вывод внешнего сброса.
. DeepStop: все сигналы синхронизации, генератор 0, генератор 1,
ФАПЧ О, ФАПЧ 1 остановлены. Генератор частоты 32 кГц может
функционировать, если он разрешен. RC-генератор все еще функ-
ционирует. Источник опорного напряжения и модуль BOD вы-
ключены. Источниками «пробуждения» могут быть модуль часов
реального времени (RTC), внешнее прерывание (EIC) или вывод
внешнего сброса.
• Static: все генераторы, включая генератор частоты 32 кГц и RC-
генератор остановлены. Источник опорного напряжения и модуль
BOD выключены. Источниками «пробуждения» могут быть внеш-
нее прерывание EIC (только в асинхронном режиме), а также вывод
внешнего сброса.
Все подрежимы «спящего» режима детализируются в табл. 9.1.
Как можно видеть из таблицы, уровень мощности встроенного стаби-
лизатора напряжения также автоматически корректируется в соответствии
с текущим подрежимом.
Перед переходом в «спящий» режим, модули, поддерживающие связь
с внешними устройствами, должны программно отключаться, поскольку
«спящий» режим остановит их операции. Отключение предотвратит воз-
можные ошибки операций обмена при входе «спящий» режим или выходе
из него.
Домены синхронизации, затронутые «спящим» режимом, не могут уча-
ствовать в шинных транзакциях. Если сигнал синхронизации шины будет
остановлен во время шинной транзакции, система может «зависнуть».
ЦПУ при переходе в «спящий» режим автоматически останавливается
в безопасном состоянии, гарантирующем, что все операции шины ЦПУ
будут корректно закончены.
При переходе в «спящий» режим (кроме подрежима Idle) все ведущие
устройства HSB должны быть предварительно остановлены. Кроме того,
если есть вероятность, что любые операции записи РВ не закончены, то
перед выполнением команды sleep ЦПУ должен выполнить операцию чте-
ния любого регистра на шине РВ. Это приведет к завершению любых жду-
щих обработки операций РВ.
9.2.8. Универсальные синхросигналы
Таймеры, коммуникационные модули, а также другие модули МК, свя-
анные с внешними устройствами, для корректного функционирования
°гут требовать для своей синхронизации сигналов с заданными зна-
ниями частот (универсальных синхросигналов). Менеджер питания
сспечивает генерацию некоторого количества универсальных синхро-
гНалов, которые могут обеспечить широкий диапазон частот синхрони-
Чии. Каждый универсальный синхросигнал генерируется в собствен-
0Nl аппаратном модуле, который может тактироваться от генератора О
или 1, а также от PLL0 или 1. Частота выбранного источника тактиро-
вания может быть произвольно разделена на любое четное целое число
меньшее или равное 512. Каждый универсальный синхросигнал может
быть независимо разрешен или отключен программно, а также автома-
тически отключен из контроллера «спящего» режима подобно сигналу
синхронизации периферии.
Блок-схема логики формирования универсальных синхросигналов по-
казана на рис. 9.5.
Универсальный синхросигнал можно разрешить путем записи 1 в бит
CEN регистра GCCTRL. Источник тактирования для универсального
синхросигнала (генератор 0, 1 или PLL0, 1) выбирается битовым полем
PLLSEL в регистре OSCSEL. Частота источника тактирования может быть
произвольно поделена путем записи 1 в бит DIVEN и коэффициента деле-
ния в битовое поле DIV. Результирующая выходная частота универсально-
го синхросигнала определяется по следующей формуле:
fGCLK = fSRC / (2 X (DIV+1)).
Универсальный синхросигнал может быть отключен путем записи О
в бит CEN или переходом в «спящий» режим, который отключает синхро-
сигналы РВ. В любом случае универсальный синхросигнал будет отключен
на первом отрицательном перепаде (спаде) после события, инициирующего
отключение. Если в бит CEN записан 0, то бит будет читаться как 1 до
тех пор, пока не поступит очередной отрицательный перепад. При запи-
си 0 в бит CEN другие биты в регистре GCCTRL не должны изменяться
до момента, когда бит CEN будет читаться как 0, чтобы исключить сбои
в формировании других универсальных сигналов.
Когда универсальный синхросигнал отключен, делитель и выход этого
синхросигнала сброшены (см. рис. 9.5).
При изменении частоты универсального синхросигнала путем записи
в регистр GCCTRL синхросигнал должен быть предварительно отключен
процедурой, описанной выше. Это предотвратит сбои в ходе изменения
частоты.
Рис. 9.5. Блок-схема логики формирования универсальных синхросигна-
лов
]у(К подсемейства AT32UC3A имеют 6, а МК подсемейства AT32UC3B —
иверсальных синхросигнала. Они назначены для различных функций,
^ показано в табл. 9.2. и 9.3.
Табл. 9.2. Распределение универсальных синхросигналов в МК AT32UC3A
-'JJoMep универсального синхросигнала Функция
•—' 0 Ножка GCLK0
1 Ножка GCLK1
2 Ножка GCLK2
3 Ножка GCLK3
4 USBB
5 ABDAC
Табл. 9.3. Распределение универсальных синхросигналов в МК AT32UC3B
Номер универсального синхросигнала Функция
0 Ножка GCLK0
1 Ножка GCLK.1
2 Ножка GCLK2
3 USBB
9.2.9. Деление частоты синхросигналов РВ
Генератор синхросигналов в менеджере питания производит раздельное
деление тактовых частот для РВА и РВВ для обеспечения возможности
использования периферийных устройств, которые требуют различных по-
деленных значений частоты синхросигналов РВх. Получаемые в результате
Деления синхросигналы непосредственно не маскируются, но могут быть
остановлены в тех подрежимах «спящего» режима, где останавливаются
синхросигналы РВх.
9.2.10. Операции отладки
g
ходе сеанса отладки пользователь должен иметь возможность остановить
стему, чтобы просмотреть содержимое регистров ЦПУ и памяти. Во время
ои отладочной операции тактовый сигнал, как правило, продолжает гене-
Роваться, однако некоторые периферийные устройства могут потребовать,
°бы их тактирование было остановлено. Такой останов тактирования требу-
Ся, например, чтобы предотвратить переполнение таймера, которое вызва-
0 бы определенную реакцию программы. По этой причине периферийные
устройства на шинах РВА и РВВ могут использовать так называемый син-
хросигнал РВх «квалифицированной отладки». Поделенная частота синхро-
сигнала РВх всегда является синхросигналом «квалифицированной отладки».
Этот синхросигнал может быть остановлен в ходе операций отладки.
9.2.11. Контроллер сброса
Контроллер сброса объединяет сигналы от различных источников сброса
в системе и генерирует из них сигналы аппаратных и программных сбросов
цифровой логики МК.
Блок-схема контроллера сброса показана на рис. 9.6.
Для обеспечения корректного запуска при включении питания МК
содержит датчик включения питающего напряжения (POD), который
удерживает логику МК в состоянии сброса, пока напряжение питания не
установилось. Наличие в составе МК этого узла позволяет отказаться от
внешних цепей сброса.
Внешний сброс МК производится подачей внешнего активного (низко-
го) уровня на ножку RESET_N. Вывод RESET_N имеет внутренний под-
тянутый к «плюсу» питания резистор.
Все возможные источники сброса, поддерживаемые контроллером
сброса, перечислены в табл. 9.4.
В дополнение к перечисленным в таблице источникам сброса, стати-
ческий сброс некоторых узлов МК может производиться через интерфейс
JTAG с помощью регистра сброса JTAG.
В табл. 9.5. показан эффект сбросов от различных источников, произ-
водимый на модули МК. Как можно видеть из таблицы, когда происходит
какой-либо сброс, то в зависимости от его источника некоторые модули
МК не сбрасываются. Только сброс при включении питания (POR) сбро-
сит все без исключения модули МК.
Причина последнего сброса может быть прочитана пользовательской
программой в регистре RCAUSE. Этот регистр содержит биты, каждый из
RC RCAUSE
ЦПУ, HSB,
РВА,РВВ
К генераторам
• синхросигналов
OCD, RTC/WDT
Рис. 9.6. Блок-схема контроллера сброса
Табл. 9.4. Источники сброса
-^чник сброса Описание
включении питания (POR) Внешний сброс Сброс от провала на- пряжения питания Ошибка ЦПУ Уменьшение напряжения питания ниже порога датчика включения питающего напряжения (POD) Подача внешнего активного уровня на ножку RESET_N Уменьшение напряжения питания ниже порога датчика провалов питающего напряжения (BOD) «Незаконное» обращение ЦПУ к внешней памяти в ре- жиме Supervisor
Сторожевой таймер OCD См. раздел «Сторожевой таймер» См. оригинальную документацию производителя
которых соответствует одному источнику сброса, и может читаться в ходе
последовательности загрузки приложения, чтобы определить действия, ко-
торые необходимо произвести программе.
Датчик включения питания (POD) контролирует наличие и уровень
внешнего напряжения на ножке VDDCORE и генерирует сброс, когда это
напряжение подается на ножку. Состояние сброса остается активным,
пока уровень выходного напряжения встроенного линейного стабилизато-
ра не достигнет уровня порога включения питания. Состояние сброса бу-
дет вновь активировано, если напряжение понизится ниже уровня порога
включения питания.
Датчик провалов напряжения питания (BOD) контролирует наличие
и уровень внешнего напряжения на ножке VDDCORE и сравнивает его зна-
чение с уровнем обнаружения провала напряжения питания, заданного в би-
товом поле BODLEVEL. По умолчанию модуль BOD отключен, но его можно
включить Fuses-установками (см. раздел «Fuses-установки») или программно.
Датчик провалов напряжения питания может генерировать прерывание
или сброс, когда значение напряжения питания опускается ниже уровня
обнаружения провала напряжения питания. В любом случае текущее со-
стояние выхода BOD доступно через бит POSCR:BODET.
Необходимо заметить, что любое изменение содержимого битового поля
BODLEVEL регистра BOD должно быть сделано при отключенном модуле
BOD, чтобы избежать ложного сброса или прерывания.
Характеристики модуля BOD приведены в Приложении 5, Приложе-
нии 23.
9.2.12. Регистры калибровки
^енеджер питания управляет калибровкой встроенных RC-генератора, ста-
лизатора напряжения и источника опорного напряжения (ИОН) посред-
вом нескольких калибровочных регистров. При сбросе при включении
тания в эти регистры автоматически записываются заданные по умолча-
ию значения, сохраняемые в запрограммированных на заводе-изготовителе
^-установках. Хотя пользователю не рекомендуют отменять заданные по
Табл. 9.5. Эффект сбросов от различных источников для модулей МК
Модуль МК Сброс при вклю- чении питания (POR) Внеш- ний сброс Сброс от сторо- жевого таймера Сброс от провала напря- жения питания (BOD) Сброс от ошибки ЦПУ Сброс от OCD
CPU/HSB/PBA/PBB (исключая менеджер питания) + + + + + +
Генератор частоты 32 кГц + — — — — —
Регистр управления RTC + — — — — —
Регистры GPLP + — — — — —
Регистр управления сторожевым таймером + + — + + +
Регистр калибровки напряжения + — — — — —
Регистр калибровки RC-генератора + — — — — —
Регистр управления BOD + + — — — —
Регистр управления ИОН + + — — — —
Регистры управления тактированием + + + + + +
Регистры управления OscO/Oscl + + + + + +
Регистры управления PLL0/PLL1 + + + + + +
Система OCD и реги- стры OCD + + — + + —
умолчанию заводские значения, это можно сделать путем записи в калибро-
вочные регистры. Для предотвращения случайной записи в эти регистры
доступ к ним для записи защищен специальным ключом. Первая запись
в регистр должна быть произведена со значением поля ключа KEY, равным
0x55, а вторая запись — со значением поля ключа, равным ОхАА.
9.3. Пользовательский интерфейс РМ
Пользовательский интерфейс менеджера питания представлен специаль-
ными регистрами МК, перечисленными в табл. 9.6.
Табл. 9.6. Отображение регистров менеджера питания
смеШе‘ ние___ Регистр Имя Доступ Значение после сброса
'^бооо Регистр управления задающей частотой MCCTRL Чтение/запись 0x00000000
0x0004 Регистр выбора синхросигнала CKSEL Чтение/запись 0x00000000
0x0008 Регистр маски синхросигналов ЦПУ CPUMASK Чтение/запись 0x00000000
ОхОООС Регистр маски синхросигналов HSB HSBMASK Чтение/запись 0x00000000
0x0010 Регистр маски синхросигналов РВА PBAMASK Чтение/запись 0x00000000
0x0014 Регистр маски синхросигналов РВВ PBBMASK Чтение/запись 0x00000000
0x0018— 0х001С Зарезервированы
0x0020 Регистр управления PLL0 PLL0 Чтение/запись 0x00000000
0x0024 Регистр управления PLL1 PLL1 Чтение/запись 0x00000000
0x0028 Регистр управления генератором 0 OSCCTRL0 Чтение/запись 0x00000000
0х002С Регистр управления генератором 1 OSCCTRL1 Чтение/запись 0x00000000
0x0030 Регистр управления генератором 32 OSCCTRL32 Чтение/запись 0x00000000
0x0034 Зарезервировано
0x0038 Зарезервировано
ОхООЗС Зарезервировано
0x0040 Регистр разрешения прерываний от РМ IER Только запись 0x00000000
0x0044 Регистр запрещения прерываний от РМ IDR Только запись 0x00000000
0x0048 0х004С Регистр маски прерываний от РМ IMR Только чтение 0x00000000
Регистр состояния прерываний от РМ ISR Только чтение 0x00000000
0x0050
Регистр сброса прерываний от РМ ICR Только запись 0x00000000
0x0054
Регистр состояния пи- тания и генераторов Зарезервированы POSCSR Чтение/запись 0x00000000
0x0058— 0х005С
Табл. 9.6.
(окончание)
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0060 0x0064— ОхООВС ОхООСО 0х00С4 0х00С8 ОхООСС OxOODO 0x00D4— 0х013С 0x0140 0x0144— OxOlFC 0x0200 Регистр управления универсальными синхросигналами Зарезервированы Регистр калибровки RC-генератора Регистр калибровки ИОН Регистр калибровки линейного стабилиза- тора Зарезервировано Регистр управления BOD Зарезервированы Регистр причины сброса Зарезервированы Регистр общего назначения с низким энергопотреблением GCCTRL RCCR BGCR VREGCR BOD RCAUSE GPLP Чтение/запись Чтение/запись Чтение/запись Чтение/запись Чтение/запись Только чтение Чтение/запись 0x00000000 Заводская установка Заводская установка Заводская установка Fuses- установка во Flash- памяти Определя- ется по- следним источником сброса 0x00000000
9.3.1. Регистр управления задающей частотой MCCTRL
Битовая структура этого регистра показана в табл. 9.7.
Табл. 9.7. Битовая структура регистра управления задающей частотой
MCCTRL
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
Табл. 9.7. (окончание)
14 13 12 11 10 9 8
- - - - - - - -
' г 6 5 4 3 2 ! 1 »_
- - - OSC1EN OSCOEN MCSEL
’ MCSEL: выбор источника задающей частоты.
0: медленный синхросигнал — источник задающей частоты.
1: генератор 0 — источник задающей частоты.
2: PLL0 — источник задающей частоты.
3: зарезервировано.
• OSCOEN: разрешение генератора 0.
0: генератор 0 заблокирован.
1: генератор 0 включен.
• OSC1EN: разрешение генератора 1.
0: генератор 1 заблокирован.
1: генератор 1 включен.
9.3.2. Регистр выбора синхросигнала CKSEL
Битовая структура этого регистра показана в табл. 9.8.
Табл. 9.8. Битовая структура регистра выбора синхросигнала CKSEL
31 30 29 28 27 26 25 24
PBBDIV - - - - PBBSEL
23 22 21 20 19 18 17 16
PBADIV - - - - PBASEL
15 14 13 12 11 10 9 8
HSBDIV - - - HSBSEL
7 6 5 4 3 2 1 0
CPUDIV - - - CPUSEL
PBBDIV, PBBSEL: делитель и выбор синхросигнала РВВ.
PBBDIV = 0: частота синхронизации РВВ равна задающей частоте.
PBBDIV = 1: частота синхронизации РВВ равна задающей частоте, по-
зленной на 2<PBBSEL+1>.
' PBADIV, PBASEL: делитель и выбор синхросигнала РВА.
PBADIV = 0: частота синхронизации РВА равна задающей частоте.
PBADIV = 1: частота синхронизации РВА равна задающей частоте, по-
деленной на 2(PBASEL+I).
* HSBDIV, HSBSEL: делитель и выбор синхросигнала HSB.
У МК AT32UC3 HSBDIV всегда равен CPUDIV, a HSBSEL всегда равен
CPUSEL, поскольку частота синхронизации HSB всегда равна тактовой
частоте ЦПУ.
• CPUDIV, CPUSEL: делитель и выбор синхросигнала ЦПУ.
CPUDIV = 0: тактовая частота ЦПУ равна задающей частоте.
CPUDIV = 1: тактовая частота ЦПУ равна задающей частоте, поделен-
ной на 2(CPUSEL+1).
Необходимо заметить, что если в битовое поле xxxDIV программой за-
писан 0, то в соответствующее ему битовое поле xxxSEL также должен быть
записан 0, чтобы гарантировать корректные операции модуля.
Необходимо также заметить, что запись в регистр CKSEL автоматиче-
ски сбрасывает бит CKRDY регистра POSCSR. Регистр CKSEL не должен
перезаписываться программой до аппаратной установки бита CKRDY.
9.3.3. Регистры масок синхросигналов CPUMASK, HSBMASK,
PBAMASK, PBBMASK
Битовая структура каждого из этих регистров показана в табл. 9.9.
Табл. 9.9. Битовая структура регистра масок синхросигналов
31 30 29 28 27 26 25 24
MASK[31:24]
23 22 21 20 19 18 17 16
MASK[23:16]
15 14 13 12 11 10 9 8
MASK[15:8] __
7 6 5 4 3 2 1 0
MASK[7:0] __
* MASK: маска синхросигналов.
Если бит п в регистре сброшен, синхросигнал для модуля п остановлен.
Если бит п в регистре установлен, синхросигнал для модуля п генериру-
ется в соответствии с текущим режимом энергопотребления МК. Номера
значащих битов в каждом регистре, а также соответствие каждого бита
управляемому им модулю для МК AT32UC3A показаны в табл. 9.10, а для
МК AT32UC3B - в табл. 9.11.
Табл. 9.10. Маскируемые синхросигналы для модулей МК AT32UC3A
"Бит CPUMASK HSBMASK PBAMASK PBBMASK
Синхронизация OCD FLASHC INTC HMATRIX
1 OCD Мост РВА GPIO USBB
2 - Мост РВВ PDCA FLASHC
3 - USBB PM/RTC/EIC MACB
4 - МАСВ ADC SMC
5 - PDCA SPIO SDRAMC
6 - EBI SPI1 -
7 - - TWI -
8 - - USARTO -
9 - - USART1 -
10 - - USART2 -
11 - - USART3 -
12 - - PWM -
13 - - SSC -
14 - - TC -
31:15 - - - -
Табл. 9.11. Маскируемые синхросигналы для модулей МК AT32UC3B
Бит CPUMASK HSBMASK PBAMASK PBBMASK
0 Синхронизация OCD FLASHC INTC HMATRIX
1 OCD Мост РВА GPIO USBB
2 - Мост РВВ PDCA FLASHC
3 - USBB PM/RTC/EIC -
4 - МАСВ ADC -
5 - PDCA SPI -
6 - - TWI -
7 - - USARTO -
8 - - USART1 -
9 - - USART2 -
10 - - PWM -
11 - - SSC -
12 - TC -
__31£13 - - -
9.3.4. Регистры управления ФАПЧО, ФАПЧ1 PLLO, PLL1
Битовая структура каждого из этих регистров показана в табл. 9.12.
Табл. 9.12. Битовая структура регистров управления PLLO, PLL1
31 30 29 28 27 26 25 24
Зарезервировано PLLCOUNT
23 22 21 20 19 18 17 16
PLLMUL
15 14 13 12 11 10 9 8
PLLDIV
7 6 5 4 3 2 1 0
- - - PLLOPT PLLOSC PLLEN~
* Зарезервировано: зарезервированное битовое поле.
Биты зарезервированы для внутреннего использования. Всегда следует
записывать в них 0.
• PLLCOUNT: интервал счета PLL.
Задает количество медленных тактовых циклов, прошедшее до момен-
та, когда бит ISR:LOCKn будет установлен, с момента, когда бит PLLn был
записан, или когда бит PLLn вступил в действие после выхода из «спяще-
го» режима.
* PLLMUL: коэффициент умножения PLL.
* PLLDIV: коэффициент деления PLL.
Эти два битовых поля задают отношение выходной частоты PLL (ча-
стоты управляемого напряжением генератора fvco) к частоте генератора ис-
точника:
fvco = (PLLMUL+1) / (PLLDIV) х fosc, если PLLDIV > 0.
fvco = 2 х (PLLMUL+1) x fosc, если PLLDIV = 0.
Если битовое поле PLLOPT [1] = 0, то fPLL = fvco.
Если битовое поле PLLOPT [1 j = 1, то fPLL = fvco / 2.
Необходимо заметить, что поле PLLMUL не может быть равно 0 или 1,
в противном случае, поведение PLL будет неопределенным.
• PLLOPT: опции PLL.
Это битовое поле задает операционный режим PLL, как показано
в табл. 9.13.
PLLOPT [0]: выбор диапазона частот VCO.
PLLOPT [1]: разрешение дополнительного выходного делителя.
PLLOPT [2]: отключает режим Wide-Bandwidth (режим Wide-Bandwidth
обеспечивает меньшее время запуска и меньшее время замыкания петли
обратной связи ФАПЧ).
Табл. 9.13. Описание битов битового поля PLLOPT
— Биты поля PLLOPT Описание
—-pEbOPT [0]: частота VCO
0 160 МГц < fvco < 240 МГц
1 80 МГц < fvco < 180 МГц
PLLOPT [1]: выходной делитель
0 f = f 1pll аусо
1 f = f /2 rPLL rVCO '
PLLOPT [2]
0 Режим Wide-Bandwidth включен
1 Режим Wide-Bandwidth отключен
• PLLOSC: выбор генератора PLL.
0: генератор 0 — источник входной частоты PLL.
1: генератор 1 — источник входной частоты PLL.
• PLLEN: разрешение PLL.
0: система PLL отключена.
1: система PLL включена.
9.3.5. Регистры управления генератором 0/1 OSCCTRLO/1
Битовая структура каждого из этих регистров показана в табл. 9.14.
Табл. 9.14. Битовая структура регистров управления генератором 0/1
OSCCTRLO/1
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 1 9 8
- - - - - STARTUP
6 5 4 3 2 | 1 0
- - - - MODE
MODE: режим генератора.
Это битовое поле производит выбор между кварцевым резонатором или
синхросигналом:
0: внешний синхросигнал подается на вывод XIN, а вывод XOUT может
использоваться как линия GPIO,
1: кварцевый резонатор подключен к выводам XIN/XOUT — использу..
ется встроенный генератор,
2—7: зарезервированные значения.
• STARTUP: время запуска генератора.
Это битовое поле задает время запуска генератора, как показано
в табл. 9.15.
Табл. 9.15. Задание времени запуска генератора 0/1 битовым полем
STARTUP
STARTUP Количество тактовых циклов RC-генератора Приблизительно эквивалентное время (RCOsc = 115 кГц)
0 0 0 '
1 64 560 мкс
2 128 1,1 мс
3 2048 18 мс
4 4096 36 мс
5 8192 71 мс
6 16384 142 мс
7 Зарезервировано Зарезервировано
9.3.6. Регистр управления генератором частоты 32 кГц
OSCCTRL32
Битовая структура этого регистра показана в табл. 9.16.
Табл. 9.16. Битовая структура регистра управления генератором частоты
32 кГц OSCCTRL32
31 30 29 28 27 26 25 24 ___
- - - - - - - -
23 22 21 20 19 18 17 16 _
- - - - - STARTUP
15 14 13 12 11 10 9 8
- - - - - MODE _
7 6 5 4 3 2 1 0
- - - - - - - OSC32EN.
Примечание. Этот регистр сбрасывается только при сбросе при включе-
пи питания.
. OSC32EN: разрешение генератора частоты 32 кГц.
q. Генератор частоты 32 кГц отключен,
Р генератор частоты 32 кГц включен.
. MODE: режим генератора.
Это битовое поле производит выбор между кварцевым резонатором или
внешним синхросигналом:
0: внешний синхросигнал подается на вывод XIN32, а вывод XOUT32
может использоваться как линия GPIO,
1: кварцевый резонатор подключен к выводам XIN32/XOUT32 — ис-
пользуется встроенный генератор,
2—7: зарезервированные значения.
• STARTUP: время запуска генератора.
Это битовое поле задает время запуска генератора, как показано
в табл. 9.17.
Табл. 9.17. Задание времени запуска генератора частоты 32 кГц битовым
полем STARTUP
STARTUP Количество тактовых циклов RC-генератора Приблизительно эквивалентное время (RCOsc =115 кГц)
0 0 0
1 128 1,1 мс
2 8192 72,3 мс
3 16384 143 мс
4 65536 570 мс
5 131072 1,1 с
6 262144 2,3 с
7 524288 4,6 с
9.3.7. Регистры разрешения/запрещения/маски/состояния/
сброса прерываний от РМ IER/IDR/IMR/ISR/ICR
Битовая структура каждого их этих регистров показана в табл. 9.18.
Табл. 9.18. Битовая структура регистров разрешения/запрещения/маски/
состояния/сброса прерываний от РМ IER/IDR/IMR/ISR/ICR
'^1—_ 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - BODDET
Табл. 9.18. (окончание)
15 14 13 12 и 10 9 8 ~~~
- - - - - - OSC32RDY OSC1RDY
7 6 5 4 3 2 1 0
OSCORDY MSKRDY CKRDY - - - LOCK1 LOCKO~
• BODDET: обнаружение провала питающего напряжения.
Устанавливается, когда обнаруживается положительный перепад бита
POSCSR:BODDET: модуль BOD обнаружил уменьшение напряжения пи-
тания ниже значения своего опорного напряжения.
• OSC32RDY: готовность генератора частоты 32 Гц.
Устанавливается, когда обнаруживается положительный перепад бита
POSCSR:OSC32RDY: генератор частоты 32 кГц работает устойчиво и при-
годен к использованию как источник синхросигнала.
* OSC1RDY: готовность генератора 1.
Устанавливается, когда обнаруживается положительный перепад бита
POSCSR:OSC1RDY: генератор 1 работает устойчиво и пригоден к исполь-
зованию как источник синхросигнала.
• OSCORDY: готовность генератора 0.
Устанавливается, когда обнаруживается положительный перепад бита
POSCSR:OSCORDY: генератор 0 работает устойчиво и пригоден к исполь-
зованию как источник синхросигнала.
' MSKRDY: готовность маски.
Устанавливается, когда обнаруживается положительный перепад бита
POSCSR:MSKRDY: синхросигналы становятся замаскированными в соот-
ветствии с содержимым регистров (CPU/HSB/PBA/PBB)_MASK.
* CKRDY: готовность синхросигналов.
0: в регистр CKSEL была произведена запись, но его новое содержимое
еще не вступило в силу.
1: сигналы синхронизации действуют в соответствии с содержимым ре-
гистра CKSEL.
Замечание. Запись 1 в бит ICR:CKRDY не имеет никакого эффекта.
' LOCK1: петля обратной связи PLL1 замкнута.
Устанавливается, когда обнаруживается положительный перепад бита
POSCSR:LOCK1: петля обратной связи PLL 1 замкнута и система PLL 1
пригодна к использованию как источник синхросигнала.
• LOCKO: петля обратной связи PLL0 замкнута.
Устанавливается в 1, когда обнаруживается положительный перепад
бита POSCSR:LOCKO: петля обратной связи PLL 0 замкнута и система PLL
0 пригодна к использованию как источник синхросигнала.
Для перечисленных выше битов эффект от записи или чтения бита за-
висит от регистра, к которому производится обращение:
* IER (только для записи).
0: никакого эффекта.
1: разрешение прерываний.
• IDR (только для записи).
0; никакого эффекта.
р запрещение прерываний.
• IMR (только для чтения).
0: прерывание запрещено.
1: прерывание разрешено.
• ISR (только для чтения).
0: событие, вызывающее прерывание, не произошло или было предва-
рительно сброшено.
F 1: событие, вызывающее прерывание произошло.
* ICR (только для записи).
0: никакого эффекта.
1: сбросить соответствующее событие.
9.3.8. Регистр состояния питания и генераторов POSCSR
Битовая структура этого регистра показана в табл. 9.19.
Табл. 9.19. Битовая структура регистра состояния питания и генераторов
POSCSR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - BODDET
_ 15 14 13 12 11 10 9 8
- - - - - - OSC32RDY OSC1RDY
. 7 6 5 4 3 2 1 0
_OSC0RDY MSKRDY CKRDY - - - LOCK1 LOCKO
' BODDET: обнаружение провала питающего напряжения.
0: никакого события, связанного с модулем BOD.
1: модуль BOD обнаружил уменьшение напряжения питания ниже зна-
чения своего опорного напряжения.
OSC32RDY: готовность генератора частоты 32 Гц.
0: генератор частоты 32 кГц не включен или работает неустойчиво и не-
пригоден к использованию как источник синхросигнала.
1: генератор частоты 32 кГц работает устойчиво и пригоден к использо-
ванию как источник синхросигнала.
OSC1RDY: готовность генератора 1.
0: генератор 1 не включен или работает неустойчиво и непригоден к ис-
пользованию как источник синхросигнала.
1: генератор 1 работает устойчиво и пригоден к использованию как ис-
точник синхросигнала.
• OSCORDY: готовность генератора 0.
0: генератор 0 не включен или работает неустойчиво и непригоден к ис-
пользованию как источник синхросигнала.
1: генератор 0 работает устойчиво и пригоден к использованию как ис-
точник синхросигнала.
- MSKRDY: готовность маски.
0: регистр маски был изменен, и эти изменения еще не вступили
в силу.
1: синхросигналы замаскированы согласно содержимому (CPU/HSB/
PBA/PBB)_MASK.
* CKRDY: готовность синхросигналов.
0: в регистр CKSEL была произведена запись, но его новое содержимое
еще не вступило в силу.
1: сигналы синхронизации действуют в соответствии с содержимым ре-
гистра CKSEL.
* LOCK1: петля обратной связи PLL1 замкнута.
0: петля обратной связи PLL 1 не замкнута, и система PLL 1 непригодна
к использованию как источник синхросигнала.
1: петля обратной связи PLL 1 замкнута, и система PLL 1 пригодна
к использованию как источник синхросигнала.
* LOCK0: петля обратной связи PLL0 замкнута.
0: петля обратной связи PLL 0 не замкнута, и система PLL 0 непригодна
к использованию как источник синхросигнала.
1: петля обратной связи PLL 0 замкнута, и система PLL 0 пригодна
к использованию как источник синхросигнала.
9.3.9. Регистр управления универсальными синхросигналами
GCCTRL
Битовая структура этого регистра показана в табл. 9.20.
Табл. 9.20. Битовая структура регистра управления универсальными син-
хросигналами GCCTRL
31 30 29 28 27 26 25 24 _
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - BODDET
15 14 13 12 11 10 9 8
DIV[7:0]
Табл. 9.20. (окончание)
^7 6 5 4 3 2 1 0
- - DIVEN - CEN PLLSEL OSCSEL
. DIV: коэффициент деления.
• DIVEN: разрешение деления.
0: частота универсального синхросигнала равна неразделенной частоте
синхросигнала источника.
1: частота универсального синхросигнала равна частоте синхросигнала
источника, поделенной на 2x(DIV+l).
• CEN: разрешение синхросигнала.
0: синхросигнал остановлен.
1: синхросигнал действует.
• PLLSEL: выбор PLL.
0: генератор — источник для универсальных синхросигналов.
1: PLL — источник для универсальных синхросигналов.
• OSCSEL: выбор генератора.
0: генератор (или PLL) 0 — источник для универсальных синхросигналов.
1: генератор (или PLL) 1 — источник для универсальных синхросигналов.
9.3.10. Регистр причины сброса RCAUSE
Битовая структура этого регистра показана в табл. 9.21.
Табл. 9.21. Битовая структура регистра причины сброса RCAUSE
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - JTAGHARD OCDRST
—
6 5 4 3 2 1 0
^UERR - - JTAG WDT EXT BOD POR
POR: сброс при включении питания.
ЦПУ был сброшен по причине того, что напряжение питания было
Меньше, чем уровень порога детектора сброса при включении питания.
' BOD: сброс из-за провала напряжения питания.
ЦПУ был сброшен по причине того, что напряжение питания было мень-
ше, чем уровень порога детектора сброса при провалах напряжения питания.
* EXT: сброс от внешнего вывода.
ЦПУ был сброшен из-за подачи внешнего активного уровня на вывод
RESET.
* WDT: сброс от сторожевого таймера.
ЦПУ был сброшен из-за истечения таймаута сторожевого таймера.
• JTAG: сброс от JTAG.
ЦПУ был сброшен из-за установки бита RC_CPU в регистре сброса JTAG
• CPUERR: ошибка ЦПУ.
ЦПУ был сброшен, потому что был обнаружен случай «незаконного»
доступа.
• OCDRST: сброс от OCD.
ЦПУ был сброшен, потому что в бит RES в регистре управления раз-
витием OCD был записан высокий уровень.
* JTAGHARD: аппаратный сброс от JTAG.
Весь МК был сброшен из-за установки бита RC_OCD в регистре сброса
JTAG или из-за использования команды JTAG HALT.
9.3.11. Регистр управления модулем BOD BOD
Битовая структура этого регистра показана в табл. 9.22.
Табл. 9.22. Битовая структура регистра управления модулем BOD BOD
31 30 29 28 27 26 25 24
KEY
23 22 21 20 19 18 17 16
- - - - - - - FCD
15 14 13 12 11 10 9 8
- - - - - - CTRL
7 6 5 4 3 2 1 0
- HYST LEVEL
♦ KEY: защита записи регистра.
В поле KEY запись должна быть произведена дважды: сначала значени-
ем 0x55, а потом значением ОхАА, чтобы последующая (рабочая) операция
записи имела нужный эффект.
FCD: калибровка, произведенная fiises-установками.
Бит устанавливается в 1, если битовые поля CTRL, HYST и LEVEL были
модифицированы значениями fuses-установок после сброса при включении
питания или после обновления fuses-установок во Flash-памяти.
Если этот бит установлен, то содержимое полей CTRL, HYST и LEV-
EL не будет вновь модифицироваться значениями fuses-установок, пока не
ойзойдет сброс при включении питания или пока не будет сброшен бит
crD- Бит может быть программно сброшен, чтобы разрешить последую-
р ю модификацию указанных полей значениями fuses-установок.
ДО . CTRL: управление модулем BOD.
0: BOD выключен.
1; BOD включен и может сбросить МК.
2; BOD включен, но не может сбросить МК. BOD может только генери-
Оовать прерывание, если оно разрешено в регистре IMR.
р з: BOD выключен.
• HYST: гистерезис BOD.
0: гистерезис отсутствует.
1: гистерезис имеется.
• LEVEL: уровень BOD.
Это битовое поле устанавливает порог срабатывания BOD. Необходимо за-
метить, что любое изменение содержимого поля LEVEL регистра BOD должно
быть сделано при отключенном модуле BOD, чтобы избежать ложного сброса
или прерывания.
9.3.12. Регистр калибровки RC-генератора RCCR
Битовая структура этого регистра показана в табл. 9.23.
Табл. 9.23. Битовая структура регистра калибровки RC-генератора RCCR
31 30 29 28 27 26 25 24
KEY
23 22 21 20 19 18 17 16
- - - - - - - FCD
_ 15 14 13 12 11 10 9 8
- - - - - - CALIB
7 6 5 4 3 2 1 0
CALIB
KEY: защита записи регистра.
В поле KEY запись должна быть произведена дважды: сначала значени-
ем 0x55, а потом значением ОхАА, чтобы последующая (рабочая) операция
записи имела нужный эффект.
CALIB: значение калибровки.
Значение калибровки для RC-генератора.
* FCD: калибровка, произведенная из Flash-памяти.
Бит устанавливается в 1, если битовое поле CALIB было модифициро,
вано значением fuses-установки после сброса при включении питания идц
после обновления fuses-установки во Flash-памяти.
Если этот бит установлен, то содержимое поля CALIB не будет вновь
модифицироваться значением fuses-установки, пока не произойдет сброс
при включении питания или пока не будет сброшен бит FCD. Бит может
быть программно сброшен, чтобы разрешить последующую модификацию
указанного поля значением fuses-установки.
9.3.13. Регистр калибровки ИОН BGCR
Битовая структура этого регистра показана в табл. 9.24.
Табл. 9.24. Битовая структура регистра калибровки ИОН BGCR
KEY
23 22 21 20 19 18 17 16
- - - - - - - FCD
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - CALIB
* KEY: защита записи регистра.
В поле KEY запись должна быть произведена дважды: сначала значени-
ем 0x55, а потом значением ОхАА, чтобы последующая (рабочая) операция
записи имела нужный эффект.
* СЛЫВ: значение калибровки.
Значение калибровки для ИОН.
* FCD: калибровка, произведенная из Flash-памяти.
Бит устанавливается в 1, если битовое поле CALIB было модифициро-
вано значением fuses-установки после сброса при включении питания или
после обновления fuses-установки во Flash-памяти.
Если этот бит установлен, то содержимое поля CALIB не будет вновь
модифицироваться значением fuses-установки, пока не произойдет сброс
при включении питания или пока не будет сброшен бит FCD. Бит может
быть программно сброшен, чтобы разрешить последующую модификацию
указанного поля значением fuses-установки.
9.3.14. Регистр калибровки линейного стабилизатора VREGCR
рлтовая
структура этого регистра показана в табл. 9.25.
Табл. 9.25. Битовая структура регистра калибровки линейного стабилизато-
ра VREGCR
—| 30 | 29 | 28 | 27 | 26 | 25 | 24
--- KEY
’ 2? 22 21 20 19 18 17 16
— - - - - - - FCD
15 14 13 12 11 10 9 8
- - - - - - -
7 6 5 4 3 2 1 0
- - - - - CALIB
* KEY: защита записи регистра.
В поле KEY запись должна быть произведена дважды: сначала значени-
ем 0x55, а потом значением ОхАА, чтобы последующая (рабочая) операция
записи имела нужный эффект.
* CALIB: значение калибровки.
Значение калибровки для линейного стабилизатора.
* FCD: калибровка, произведенная из Flash-памяти.
Бит устанавливается в 1, если битовое поле CALIB было модифициро-
вано значением fuses-установки после сброса при включении питания или
после обновления fuses-установки во Flash-памяти.
Если этот бит установлен, то содержимое поля CALIB не будет вновь
модифицироваться значением fuses-установки, пока не произойдет сброс
при включении питания или пока не будет сброшен бит FCD. Бит может
быть программно сброшен, чтобы разрешить последующую модификацию
Указанного поля значением fuses-установки.
9.3.15. Регистр общего назначения с низким
энергопотреблением GPLP
Битовая структура этого регистра показана в табл. 9.26.
Табл. 9.26. Битовая структура регистра общего назначения с низким энер-
гопотреблением GPLP
GPLP
Табл. 9.26. (окончание)
23 22 21 20 19 18 17 16
GPLP
15 14 13 12 11 10 9 8
GPLP
7 6 5 4 3 2 1 0
GPLP
Этот регистр является 32-разрядным регистром общего назначения, ко-
торый сбрасывается только при сбросе при включении питания. Любой
другой сброс сохранит его содержимое неизменным.
j-jlABA 10
СЧЕТЧИК РЕАЛЬНОГО
ВРЕМЕНИ (RTC)
10.1. Основные особенности
Встроенный во все МК семейства AT32UC3 модуль счетчика реального
времени (RTC) имеет следующие основные особенности:
• 32-разрядный счетчик реального времени с 16-разрядным предде-
лителем.
• Тактируется от RC-генератора или генератора частоты 32 кГц.
• Высокое разрешение: максимальная счетная частота — 16 кГц.
• Большое максимальное время счета: максимальный таймаут —
272 года.
• Потребляет чрезвычайно малую мощность.
• Может функционировать во всех подрежимах «спящего» режима,
кроме подрежима Static. Прерывания от RTC недоступны в под-
режиме DeepStop.
• Опционально возможно задание счетного цикла с возвратом к нача-
лу счета от любого значения вплоть до максимально возможного.
‘ Прерывание при возврате к началу счета.
10.2. Функциональное описание
Счетчик реального времени (RTC) может генерировать периодические пре-
рывания через интервалы заданной длительности или производить точное
измерение временных задержек в реальном масштабе времени. Счетная ча-
стота для RTC формируется с помощью 16-разрядного предделителя, ко-
торый тактируется от встроенных RC-генератора или генератора частоты
2 кГц. Любой из возможных счетных циклов предделителя может быть
выбран в качестве периода источника синхросигнала RTC, позволяя задать
Как большое время счета, так и высокое разрешение RTC. Запись непо-
средственно в предделитель программа произвести не может, однако, она
°Жет его обнулить.
Модуль RTC может генерировать прерывания, когда счетчик досчиты-
ает до значения, сохраненного в регистре «вершины» RTC, что позволяет
ч«° задавать период этих прерываний.
Блок-схема модуля RTC приведена на рис. 10.1.
Линия прерываний от RTC связана с одним из внутренних источ-
йКов прерывания в контроллере прерываний. Использование прерыва-
Рис. 10.1. Блок-схема модуля RTC
ний от RTC требует предварительного конфигурирования контроллера
прерываний.
Функционирование модуля RTC разрешается путем записи 1 в бит EN
регистра CTRL. 16-разрядный предделитель будет инкрементироваться
при поступлении на его вход каждого импульса выбранного для такти-
рования RTC синхросигнала. Предделитель не может быть прочитан или
записан программно, но может быть сброшен путем записи бита PCLR
регистра CTRL.
С помощью бита CLK32 выбирается источник тактирования для пред-
делитля: RC-генератор или генератор частоты 32 кГц.
Битовым полем PSEL задается счетный цикл предделителя, равный пе-
риоду счетной частоты RTC, с учетом выбранной частоты источника так-
тирования согласно следующей формуле:
fRTc = 2_(PSEL+1) х (fRC или 32 кГц).
Когда модуль RTC включен, его счетчик инкрементируется, пока его
текущее значение не достигает содержимого битового поля ТОР, после чего
счетчик сбрасывается в состояние 0x0. Когда это происходит, в регистре
ISR устанавливается бит состояния TOPI.
Значение счетчика RTC может быть программно прочитано или за-
писано через регистр VAL. Следует заметить, что из-за особенностей
синхронизации RTC непрерывное программное чтение регистра VAL
с заданным минимально возможным счетным циклом предделителя
RTC приведет к пропуску каждого второго реального значения счетчика
RTC.
Запись 1 в бит TOPI регистра IER разрешает прерывания от модуля
RTC, а запись 1 в одноименный бит регистра IDR запрещает их. Текущее
состояние разрешенности прерываний от RTC программа может прочитать
в регистре IMR. Если прерывания от RTC разрешены, то при генерации
каждого такого прерывания автоматически установится флаг TOPI в реги-
стре ISR. Этот флаг может быть сброшен путем записи 1 в одноименный
бит регистра ICR.
Прерывание от RTC может «пробудить» ЦПУ изо всех подрежимов
«спящего» режима, кроме подрежимов DeepStop и Static. Модуль RTC мо-
жет также «пробудить» ЦПУ непосредственно без генерации прерывания,
когда устанавливается флаг TOPI в регистре ISR. В этом случае ЦПУ про-
должит выполнение программы, начиная с команды, следующей за ко-
дой sleep. Такое непосредственное «пробуждение» разрешается путем
Ма йен 1 в бит WAKE_EN регистра CTRL. После непосредственного «про-
^дення» программа должна сбросить бит WAKE_EN, чтобы таким обра-
м сбросить внутренний сигнал «пробуждения» в контроллере «спящего»
з^кима. В противном случае последующая команда sleep не будет иметь
никакого эффекта.
«Пробуждение» от модуля RTC доступно во всех подрежимах «спяще-
0» режима, кроме подрежима Static. Как уже говорилось, «пробуждение»
от модуля RTC может быть сконфигурировано независимо от прерываний
от RTC.
Из-за внутренней взаимосвязи доменов синхронизации модулю RTC
требуется несколько тактовых циклов, чтобы активировать значения, за-
писанные в битовые поля регистров CTRL, ТОР и VAL. Высокий уро-
вень бита BUSY в регистре CTRL указывает, что текущее содержимое
регистров CTRL, ТОР и VAL еще не распознано логикой и не вступило
в силу, а низкий уровень BUSY указывает, что активация новых значений
завершена.
10.3. Пользовательский интерфейс
Пользовательский интерфейс модуля RTC представлен специальными ре-
гистрами МК, перечисленными в табл. 10.1.
Табл. 10.1. Отображение регистров модуля RTC
Сме- ще- ние Регистр Имя Доступ Значение после сброса
0x00 Регистр управления RTC CTRL Чтение/запись 0x0
0x04 Регистр значения счетчика RTC VAL Чтение/запись 0x0
0x08 Регистр значения «вершины» RTC TOP Чтение/запись 0x0
0x10 Регистр разрешения прерываний от RTC IER Только запись 0x0
0x14 Регистр запрещения прерываний от RTC IDR Только запись 0x0
0x18 Регистр маски прерываний от RTC IMR Только чтение 0x0
0х1С Регистр статуса прерываний от RTC ISR Только чтение 0x0
0x20 Регистр сброса прерываний от ICR Только запись 0x0
RTC
Ю.3.1. Регистр управления RTC CTRL
Итовая структура этого регистра показана в табл. 10.2.
Табл. 10.2. Битовая структура регистра управления RTC CTRL
31 30 29 28 27 26 25 24 2^
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
- - - - PSEL
7 6 5 4 3 2 1 0
- - - BUSY CLK32 WAKE_ EN PCLR EN
' PSEL: выбор счетного цикла предделителя.
Это битовое поле задает значение счетного цикла предделителя и, та-
ким образом, выбирает значение частоты источника синхросигнала
RTC:
fRTc = 2-(PSEL+1> х (fRC или 32 кГц).
• BUSY: модуль RTC занят.
0: текущие значения регистров TOP, VAL и CTRL являются дей-
ствующими.
1: модуль RTC занят распознаванием текущих значений регистров ТОР,
VAL и CTRL.
• CLK32: выбор генератора частоты 32 кГц.
0: модуль RTC использует RC-генератор как источник синхросигнала.
1: модуль RTC использует генератор частоты 32 кГц как источник син-
хросигнала.
• WAKE_EN: разрешение «пробуждения».
0: модуль RTC не «пробуждает» ЦПУ из «спящего» режима.
1: модуль RTC «пробуждает» ЦПУ из «спящего» режима.
* PCLR: сброс предделителя.
Запись 1 в этот бит сбрасывает предделитель RTC.
• EN: включение RTC.
0: модуль RTC отключен.
1: модуль RTC включен.
10.3.2 . Регистр значения счетчика RTC VAL
Битовая структура этого регистра показана в табл. 10.3.
Табл. 10.3. Битовая структура регистра значения счетчика RTC VAL
| 30 [ 29 [ 28 | 27 | 26 | 25 | 24
VAL[31:24]
| 22 | 21 [ 20 | 19 | 18 | 17 | 16
------- VAL[23:16]
14 | 13 | 12 | 11 | 10 | 9 | 8 VAL[15:8]
7 6 | 5 | 4 | 3 | 2 | 1 | 0
VAL[7:0]
• VAL: значение счетчика RTC.
Это значение инкрементируется по каждому положительному перепаду
синхросигнала источника.
10.3.3 . Регистр значения «вершины» RTC ТОР
Битовая структура этого регистра показана в табл. 10.4.
Табл. 10.4. Битовая структура регистра значения «вершины» RTC ТОР
31 30 29 28 27 26 25 24
TOP [31:24]
23 22 21 20 19 18 17 16
TOP [23:16]
15 14 13 12 11 10 9 8
TOP [15:8]
2 6 5 4 3 2 1 0
TOP [7:0]
ТОР: значение «вершины» RTC.
При достижении счетчиком RTC VAL этого значения он сбрасывается
Нулевое значение.
10.3.4 . Регистры разрешения/запрещения/маски/статуса/
сброса прерываний от RTC IER/IDR/IMR/ISR/ICR
Битовая структура каждого из этих регистров показана в табл. 10.5.
Табл. 10.5. Битовая структура каждого из регистров разрешения/запреще-
ния/маски/статуса/сброса прерываний от RTC IER/IDR/IMR/
ISR/ICR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - - - TOPI
• TOPI: прерывание от «вершины».
Устанавливается при достижении счетчиком RTC VAL значения ТОР.
Эффект от записи в этот бит или от чтения его зависит, к какому из
перечисленных ниже регистров производится обращение:
* IER (только для записи).
0: никакого эффекта.
1: разрешить прерывание.
* IDR (только для записи).
0: никакого эффекта.
1: запретить прерывание.
* IMR (только для чтения).
0: прерывание запрещено.
1: прерывание разрешено.
* ISR (только для чтения).
0: событие, вызывающее прерывание, произошло.
1: событие, вызывающее прерывание, не произошло.
* ICR (только для записи).
0: никакого эффекта.
1: сбросить прерывание.
,-ЛАВА 11
СТОРОЖЕВОЙ ТАЙМЕР (WDT)
11.1. Основные особенности и функциональное
описание
Встроенный в МК семейства AT32UC3 модуль сторожевого таймера (WDT)
имеет следующие основные особенности:
• функционирует с 16-разрядным предделителем,
• синхронизируется от встроенного RC-генератора.
Сторожевой таймер имеет предделитель, генерирующий период
таймаута. Этот предделитель синхронизируется от встроенного RC-
генератора, который автоматически включается, если включен модуль
WDT. Сторожевой таймер должен периодически сбрасываться поль-
зовательской программой в пределах периода таймаута. В противном
случае, сам МК будет сброшен и программа начнет выполняться с за-
грузочного вектора. Описанный механизм позволяет МК выходить из
состояния зависания или не предусмотренного алгоритмом программы
зацикливания.
Блок-схема модуля WDT приведена на рис. 11.1.
Когда модуль WDT включен, он может функционировать во всех под-
режимах «спящего» режима, кроме подрежима Static. Необходимо также
заметить, что когда WDT включен, МК вообще невозможно перевести
в подрежим Static.
Во время операций отладки предделитель WDT остановлен, если в ходе
этих операций система OCD не сохраняет возможность функционирова-
ния периферийных устройств.
Модуль WDT включается путем записи 1 в бит EN регистра CTRL.
Включение WDT включает также RC-генератор, формирующий синхро-
Рис. 11.1. Блок-схема модуля WDT
сигнал для предделителя WDT. Битовое поле PSEL регистра CTRL задает
период таймаута согласно следующей формуле:
Т = 9(PSEL+1) / f
х WDT / 1RC
Очередной период таймаута WDT начинается, как только происходит
сброс от сторожевого таймера и начинается инверсный отсчет последова-
тельности сброса. При выборе значения PSEL необходимо следить, чтобы
период таймаута был больше, чем время запуска МК. В противном случае
WDT будет постоянно сбрасывать МК до начала выполнения кода.
Чтобы избежать случайного отключения WDT, запись в регистр
CTRL должна производиться дважды: сначала со значением битового
поля KEY, равным 0x55, а затем — со значением, равным ОхАА. При этом
значения других полей регистра изменяться не должны. В противном
случае операция записи будет проигнорирована и содержимое CTRL не
изменится.
Если WDT включен, то в регистр CLR программа должна записывать
любые значения с интервалами между операциями записи меньшими,
чем период таймаута WDT. В противном случае МК подвергнется про-
граммному сбросу от WDT и начнется выполнение кода с загрузочного
вектора.
11.2. Пользовательский интерфейс
Пользовательский интерфейс модуля WDT представлен специальными ре-
гистрами МК, перечисленными в табл. 11.1.
Табл. 11.1. Отображение регистров модуля WDT
Смеще- ние Регистр Имя Доступ Значение после сброса
0x00 Регистр управления WDT CTRL Чтение/запись 0x0
0x04 Регистр сброса WDT CLR Только запись 0x0 _
11.2.1. Регистр управления WDT CTRL
Битовая структура этого регистра показана в табл. 11.2.
Табл. 11.2. Битовая структура регистра управления WDT CTRL
31 30 29 28 27 26 25 24 _
KEY[7:0]
23 22 21 20 19 18 17 16
- - - - - - - -
Табл. 11.2.
(окончание)
' 15 14 13 12 | 11 1 10 1 9 1 Г 8
- - - PSEL
6 5 4 3 2 1 0
- - - - - - - EN
. KEY: защита записи регистра.
В поле KEY запись должна быть произведена дважды: сначала значени-
ем 0x55, а потом значением ОхАА, чтобы последующая (рабочая) операция
записи имела нужный эффект. Это поле всегда читается как 0.
• PSEL: выбор предделителя.
Битовое поле PSEL используется для задания периода таймаута WDT.
EN: включение WDT.
0: WDT отключен.
1: WDT включен.
11.2.2. Регистр сброса WDT CLR
Когда сторожевой таймер включен, в этот регистр пользовательская про-
грамма должна периодически (с периодом, меньшим периода таймаута
WDT) производить запись любых значений, чтобы предотвратить сброс
МК от WDT.
ГЛАВА 12
КОНТРОЛЛЕР ПРЕРЫВАНИЙ
(INTO)
12.1. Основные особенности и функциональное
описание
12.1.1. Операции INTO
Контроллер прерываний (INTC) входит в состав всех МК семейства
AT32UC3. Модуль INTC собирает запросы прерываний от периферийных
устройств, выстраивает их по приоритетам, генерирует запрос прерывания
и автовектор для ЦПУ.
Примечание автора. Под автовектором в данном случае понимается век-
тор прерывания (адрес в адресном пространстве памяти), на который логи-
ка INTC передает управление при обработке этого прерывания. Приставка
«авто-» используется производителем, очевидно^ потому, что векторизация
прерывания, т. е. сопоставление ему вектора при его обработке произво-
дится INTC автоматически.
Архитектура AVR32 поддерживает 4 уровня приоритета для регулярных
прерываний, маскируемые прерывания и немаскируемое прерывание (NMI).
Модуль INTC поддерживает до 64 групп прерываний. Каждая группа
может иметь до 32 линий запросов прерываний, которые связаны с пери-
ферийными устройствами. Каждая группа имеет свой регистр приорите-
та прерывания (IPR) и регистр запроса прерывания (IRR). Регистры IPR
используются для назначения уровня приоритета и автовектора в каждой
группе, а регистры IRR используются для идентификации активных за-
просов прерываний в пределах каждой группы. Если группа имеет только
одно прерывание, то идентификация активного прерывания в ней произ-
водится как идентификация активной группы прерываний, поэтому в ис-
пользовании регистра IRR нет необходимости.
В модуле INTC имеется также четыре регистра причины прерывания
(ICR). С помощью перечисленных регистров идентифицируется группа, кото-
рая содержит отложенное прерывание соответствующего уровня приоритета.
(Под отложенным прерыванием здесь понимается прерывание, запрос кото-
рого в модуль INTC поступил, но обработка его в ЦПУ еще не начата.) Если
несколько групп содержат отложенное прерывание с одинаковым уровнем
приоритета, группа с самым меньшим номером будет обслуживаться первой-
Блок-схема модуля контроллера прерываний (INTC) приведена на
рис. 12.1. Серым цветом на рисунке показаны регистры, к которым програм-
Контроллер прерываний
NMlPeQ
IREQ31
IREQ2
IREQ1
IREQO
IREQ63
IREQ34
IREQ33
IREQ32
Регистры IRR
Маски
INTLEVEL
ЦПУ
SREG
masks
l[3-0]M
GM
Рис. 12.1. Блок-схема модуля контроллера прерываний (INTC)
ма может обращаться через периферийную шину (РВ). Линии запросов пре-
рываний от периферийных устройств (IREQn) и немаскируемого прерыва-
ния NMI показаны стрелками в левой части схемы. Линии, идущие от INTC
к ЦПУ и от ЦПУ к INTC, показаны стрелками в правой части схемы.
Все поступающие запросы прерываний (IREQ) фиксируются в соот-
ветствующих регистрах запроса прерывания (IRR). К регистру IRR группы
прерываний программе нужно обратиться, чтобы определить, какой за-
прос IREQ в пределах группы является активным. Если активны несколь-
ко запросов IREQ в пределах одной и той же группы, программа обработки
прерывания должна распределить между ними приоритеты. Все входные
сигнальные линии в каждой n-ой группе объединяются в соответствии
с логической функцией OR в сигнальную линию GrpReqN, что позволяет
индицировать отложенное прерывание в соответствующей группе.
Блок маскирования запросов определяет для каждой из линий GrpReq
один из четырех возможных уровней приоритета (от INTO до INT3) путем
задания для каждой группы содержимого битового поля INTLEVEL в ре-
гистре приоритета прерывания IPR. Входы GrpReq при этом маскируются
итами ЮМ, ИМ, I2M, I3M и битами маски GM регистра статуса ЦПУ.
сЛя любой группы прерываний, которая имеет отложенное прерывание
Уровнем приоритета, не замаскированного регистром статуса ЦПУ, соот-
тствующая линия ValReq переходит в активный уровень.
Блок определения приоритета использует сигнальные линии ValReq и би-
** Поля INTLEVEL в регистрах IPR, чтобы выбрать отложенное прерыва-
е самого высокого приоритета. Если поступает запрос прерывания NMI, то
0 Прерывание автоматически приобретает наиболее высокий приоритет сре-
и Любых отложенных прерываний. Если несколько групп прерываний имеют
отложенные прерывания с самым высоким уровнем приоритета, то первой
обслуживается группа прерывания с самым старшим порядковым номером.
Уровень приоритета прерывания (INTLEVEL) и смещение автовектора
обработчика прерывания (AUTOVECTOR) выбранного прерывания пере,
даются в ЦПУ для обработки прерывания и переключения контекста. Цец.
тральному процессору нет необходимости знать, какое прерывание запра.
шивает обработку, для него важны только уровень приоритета и смещение
адреса обработчика этого прерывания. Регистры IRR содержат запросы пре»
рывания групп и могут читаться программой через шину РВ для того, чтобы
проверять, какие группы прерываний являются фактически активными.
Маскировка запросов прерываний базируется на пяти битах маски
прерывания регистра статуса ЦПУ, а именно: маска прерывания уровня 3
(I3M) — маска прерывания уровня О (ЮМ) и глобальная маска прерываний
(GM). Запрос прерывания является замаскированным, если его маскирует
установленный бит или глобальной маски прерываний, или маски преры-
вания, соответствующего этому запросу уровня приоритета.
12.1.2. Немаскируемые прерывания
Запрос немаскируемого прерывания NMI имеет приоритет над всеми дру-
гими запросами прерываний. NMI имеет выделенный адрес вектора ис-
ключения, определенный в архитектуре AVR32, поэтому, когда поле IN-
TLEVEL указывает на поступление запроса NMI, поле AUTOVECTOR
имеет неопределенное значение.
12.1.3. Реакция ЦПУ
Когда ЦПУ получает запрос прерывания, он проверяет, не рассматриваются
ли в данный момент запросы, связанные с какими-либо другими исключе-
ниями. Если исключений с более высокими приоритетами в данный момент
нет, ЦПУ инициализирует обработку поступившего запроса прерывания.
При этом автоматически устанавливается биты регистра статуса ЦПУ, маски-
рующие прерывания уровня обрабатываемого и более низких уровней. Напри-
мер, если поступил запрос прерывания с уровнем приоритета 3, то в регистре
статуса устанавливаются биты маски прерывания I3M, I2M, ИМ и ЮМ. Если
поступил запрос прерывания с уровнем приоритета 1, то устанавливаются
только биты ИМ и ЮМ. Адрес обработчика рассчитывается в ЦПУ из значе-
ний поля AUTOVECTOR и регистра EVBA (базовый адрес вектора исключе-
ния), а затем выполняется передача управления по этому адресу.
Установка битов маски прерывания предотвращает инициализацию
обработки других прерываний с таким же и более низкими уровнями
приоритета, чтобы таким образом исключить их вложение. Кроме того,
установка бита маски прерывания соответствующего уровня приоритета
предотвращает множественный запрос того же самого прерывания.
Задача сброса поступившего и обрабатываемого запроса прерывания
возлагается на пользовательскую программу. Этот сброс она должна про-
извести перед возвратом из программного блока (подпрограммы) обработ-
прерывания. Если такой сброс произведен не будет, то запрос этого
^срывания остается активным.
12.1- 4. Сброс запроса прерывания
Сброс запроса прерывания от периферийного модуля производится путем
писи в специальные регистры соответствующего периферийного модуля,
после чего последний снимет активный уровень своего выходного сигнала
NMIREQ/IREQ.
Производителем рекомендуется следующий способ корректного сброса
запроса прерывания — операция сохранения в регистре управления пери-
ферии, сопровождаемая фиктивной операцией загрузки из того же самого
регистра. Такая последовательность вызовет останов конвейерной обработ-
ки. Это предотвратит случайный повторный вызов прерывания, возмож-
ный в случае, если выход из обработчика и сброс маски прерывания были
произведены до того, как был сброшен сам запрос.
12.2. Пользовательский интерфейс
В этом разделе описаны специальные регистры INTC, доступ к которым
возможен через шину РВ. Эти регистры позволяют управлять операциями
и читать состояние INTC.
Пользовательский интерфейс INTC представлен специальными реги-
страми МК, перечисленными в табл. 12.1.
Описание регистров запросов прерываний от периферийных устройств
к сигнальным линиям IREQ приведено в разделах, посвященных описа-
нию соответствующих периферийных устройств.
Табл. 12.1. Отображение регистров INTC
Сме- щение Регистр Имя Доступ Значение после сброса
0 Регистр приоритета прерывания 0 IPR0 Чтение/запись 0x00000000
4 Регистр приоритета прерывания 1 IPR1 Чтение/запись 0x00000000
252 Регистр приоритета прерывания 63 IPR63 Чтение/запись 0x00000000
256 Регистр запроса прерывания 0 IRR0 Только чтение N/A1
260 Регистр запроса прерывания 1 IRR1 Только чтение N/A
508 Регистр запроса прерывания 63 IRR63 Только чтение N/A
512 Регистр причины прерывания 3 ICR3 Только чтение N/A
516 Регистр причины прерывания 2 ICR2 Только чтение N/A
520 Регистр причины прерывания 1 ICR1 Только чтение N/A
^524__ Регистр причины прерывания 0 ICR0 Только чтение N/A
1 Здесь и далее аббревиатура N/A означает неопределенное значение.
12.2.1. Регистры запроса прерывания 0—63 IRRO—IRR63
Битовая структура каждого из этих регистров показана в табл. 12.2.
Табл. 12.2. Битовая структура каждого из регистров запроса прерывания
0-63 IRR0-IRR63
31 30 29 28 27 26 25 24
IRR IRR IRR IRR IRR IRR IRR IRR~"
(32*х+31) (32*х+30) (32*х+29) (32*х+28) (32*х+27) (32*х+26) (32*х+25) (32*х+24)
23 22 21 20 19 18 17 16
IRR IRR IRR IRR IRR IRR IRR IRR~~
(32*х+23) (32*х+22) (32*х+21) (32*х+20) (32*х+19) (32*х+18) (32*х+17) (32*х+16)
15 14 13 12 11 10 9 8
IRR IRR IRR IRR IRR IRR IRR IRR
(32*х+15) (32*х+14) (32*х+13) (32*х+12) (32*х+11) (32*х+10) (32*х+9) (32*х+8)
7 6 5 4 3 2 1 0
IRR IRR IRR IRR IRR IRR IRR IRR
(32*х+7) (32*х+6) (32*х+5) (32*х+4) (32*х+3) (32*х+2) (32*х+1) (32*х+0)
* IRR: линия запроса прерывания.
0 = никакой запрос прерывания в данный момент не рассматривается
на этом входе запроса прерывания.
1 = запрос прерывания в данный момент рассматривается на этом входе
запроса прерывания.
Всего имеется 64 регистра IRR, по одному для каждой группы прерыва-
ний. Каждый регистр IRR состоит из 32 разрядов, по одному для каждого
возможного запроса прерывания. Таким образом, общее количество вход-
ных линий запросов прерываний составляет 2048. Регистры IRR читаются
программным обработчиком прерываний, чтобы определить, где находит-
ся запрос отложенного прерывания. Выборка содержимого IRR может про-
изводиться непрерывно, а доступны эти регистры только для чтения.
12.2.2. Регистры приоритета прерывания 0—63 IPR 0—IPR 63
Битовая структура каждого из этих регистров показана в табл. 12.3.
Табл. 12.3. Битовая структура каждого из регистров приоритета прерыва-
ния 0-63 IPR 0-IPR 63
31 30 29 28 27 26 25 24 _
INTLEVEL[l:0] - - - - - -
Табл. 12.3. (окончание)
^5—- 22 21 20 19 18 17 16
- - - - - - -
" 15 14 13 1 1 12 I 11 1 ю 1 9 8
" - AUTOVECTOR[13:8]
Г 6 5 4 3 2 1 0
2 AUTOVECTOR[7:Q]
. INTLEVEL: уровень приоритета для прерываний из этой группы.
Задает уровень приоритета для прерываний соответствующей группы,
как показано в табл. 12.4.
Табл. 12.4. Задание уровня приоритета для группы прерываний
INTLEVEL [1:0] Приоритет
0 0 0 1 1 0 1 1 INTO INTI INT2 INT3
• AUTOVECTOR: адрес автовектора для группы.
Указывает смещение относительно содержимого регистра EVBA (базо-
вый адрес вектора исключения) для программного блока обработки преры-
ваний из соответствующей группы. Смещение обработчика используется,
чтобы задать для ЦПУ адрес подпрограммы обработки прерывания. МЗР
этого битового поля должен быть равен 0, чтобы соблюдалось выравнива-
ние адреса в границах полуслова.
12.2.3. Регистры причины прерывания 0—3 ICR 0—ICR 3
Битовая структура каждого из этих регистров показана в табл. 12.5.
Табл. 12.5. Битовая структура каждого из регистров причины прерывания
0-3 ICR 0-ICR 3
30 29 28 27 26 25 24
- - - - - - -
^_23 22 21 20 19 18 17 16
- - - - - - -
Табл. 12.5. (окончание)
15 14 13 12 11 10 9 8 ~~~
- - - - - - - -
7 6 5 4 3 2 1 0
- - CAUSE
* CAUSE: группа прерываний, из состава которой поступило прерывание
с уровнем приоритета п.
Регистр ICR идентифицирует группу, в составе которой имеется отло-
женное прерывание с уровнем приоритета п. Если в данный момент ника-
кие прерывания с уровнем приоритета п не рассматриваются или данный
уровень приоритета замаскирован, то содержимое соответствующего реги-
стра ICR имеет неопределенное значение.
[-J1ABA 13
КОНТРОЛЛЕР ВНЕШНИХ
ПРЕРЫВАНИЙ (EIM)
13.1. Основные особенности
Контроллер внешних прерываний (EIM) входит в состав всех МК семей-
ства AT32UC3. Модуль EIM имеет следующие основные особенности:
• выделенные запросы для каждого прерывания,
• индивидуально маскируемые прерывания,
• прерывание по положительному или отрицательному перепаду,
• прерывание по высокому или низкому уровню,
• асинхронные прерывания для «спящего» режима без тактирования,
• фильтрация сигналов на линиях прерывания,
• поддержка сканирования подключаемой клавиатуры,
• немаскируемое прерывание NMI.
Модуль контроллера внешних прерываний позволяет конфигурировать
несколько выводов МК в качестве входов внешних прерываний. Каждый
такой вывод имеет свой собственный запрос прерывания, который может
быть индивидуально замаскирован. Каждый такой вывод может генериро-
вать прерывание по положительному или отрицательному перепаду, а также
по высокому или низкому уровню внешнего сигнала. Каждая линия имеет
встроенный фильтр с перестраиваемой конфигурацией, позволяющий по-
давлять выбросы входных сигналов. Каждый вывод, являющийся входом
внешнего прерывания, может быть также сконфигурирован для асинхрон-
ного «пробуждения» МК из подрежимов «спящего» режима, в которых
отсутствует тактирование. Модуль EIM может также «пробудить» МК из
«спящего» режима, не генерируя при этом прерывания. В этом случае ЦПУ
после «пробуждения» начинает выполнять команду, стоящую сразу после
команды sleep.
Контроллер внешних прерываний поддерживает немаскируемое преры-
вание (NMI). Эти прерывания имеют те же самые свойства, что и другие
Нещние прерывания, но связаны с линией запроса NMI ЦПУ, что позво-
яет им прерывать обслуживание любого другого прерывания.
Модуль контроллера внешних прерываний поддерживает сканиро-
аНие внешней клавиатуры, которую можно подключить к МК в целе-
И системе. Эта клавиатура должна состоять из линий строк и столб-
н в. Столбцы управляются отдельным набором сканирующих выходов
/ОДУля EIM, а строки подключаются к входам внешних прерываний
Нажатая клавиша клавиатуры вызывает прерывание, которое мо-
Рис. 13.1. Блок-схема модуля контроллера внешних прерываний
жет быть идентифицировано с помощью регистров пользовательского
интерфейса.
Блок-схема модуля контроллера внешних прерываний приведена на
рис. 13.1.
Ножки входов внешних прерываний и выходы сканирования внешней
клавиатуры мультиплексированы в МК с линиями контроллера GPIO. Что-
бы функционировать в качестве входов внешних прерываний, эти ножки
в контроллере GPIO должны быть сконфигурированы как входы.
Все внешние прерывания доступны в каждом подрежиме «спящего»
режима. Однако в подрежимах «спящего» режима, в которых остановлено
тактирование МК, для обеспечения возможности использования внешних
прерываний необходимо сделать их асинхронными. Линии внешних пре-
рываний связаны с внутренними источниками контроллера прерываний.
Использование внешних прерываний требует предварительного конфигу-
рирования контроллера прерываний INTC. Использование же немаскируе-
мого прерывания не требует предварительного конфигурирования INTC.
13.2. Функциональное описание
13.2.1. Внешние прерывания
Для разрешения внешнего прерывания л необходимо записать 1 в соот-
ветствующий бит EXTINTn регистра EIM_EN. Запись 1 в бит EXTlNTn
регистра EIM DIS запрещает внешнее прерывание п. Состояние каждой
линии внешних прерываний может отслеживаться программой с помощью
регистра EIM_CTRL.
Каждый вход внешнего прерывания EXTINTn может быть сконфи-
ойрован, чтобы генерировать прерывание по положительному или от-
ипательному перепаду, а также по высокому или низкому уровню с по-
мощью регистров EIM_MODE, EIM_EDGE и EIM_LEVEL. Каждое п-ое
м врывание имеет соответствующие биты INTn в каждом из этих ре-
естров. Точно так же каждое прерывание имеет соответствующий бит
каждом из регистров управления прерыванием и состояния прерыва-
ния- Запись 1 в бит INTn регистра EIM_IER разрешает внешнее пре-
рывание на ножке EXTINTn, а запись 1 в бит INTn регистра EIM_IDR
запрещает это внешнее прерывание. Регистр EIM_IMR может читаться
программой для проверки, какие внешние прерывания в текущий мо-
мент разрешены.
Когда генерируется внешнее прерывание, соответствующий бит в ре-
гистре EIM_ISR устанавливается. Этот флаг остается установленным,
пока в соответствующий бит регистра EIM_ICR программой не будет
записана 1.
Запись 0 в бит INTn регистра EIM_MODE разрешает генерацию внеш-
него прерывания активным перепадом сигнала на ножке, а запись в этот
бит 1 разрешает генерацию внешнего прерывания активным уровнем.
Если прерывание EXTINTn сконфигурировано для запуска перепадом,
то запись 0 в бит INTn регистра EIMEDGE задаст в качестве активного
отрицательный перепад, а запись 1 — положительный.
Если прерывание EXTINTn сконфигурировано для запуска уровнем,
то запись 0 в бит INTn регистра EIM LEVEL задаст в качестве активного
низкий уровень, а запись 1 — высокий.
Для подавления выбросов более длинных, чем период синхросигна-
ла в текущем режиме, каждая линия внешнего прерывания содержит
фильтр, который можно включить путем записи 1 в бит INTn регистра
EIM_FILTER.
Каждая линия внешнего прерывания может быть сделана асин-
хронной путем записи 1 в бит INTn регистра EIMASYNC, что напра-
вит сигнал прерывания через асинхронный детектор модуля EIM (см.
Рис. 13.1). В этом случае все перепады внешнего сигнала будут интер-
претироваться логикой EIM как подача нового уровня. Фильтр в этом
Режиме отключен.
Уровень внешних сигналов на ножках EXTINTn обычно фиксируется
синхронно с тактовой частотой ЦПУ, поэтому выбросы, длительность ко-
т°рых короче тактового цикла ЦПУ, гарантированно не могут стать собы-
тием, вызвавшим прерывание. В подрежиме Stop «спящего» режима выбро-
СЬ1> Длительность которых короче периода частоты 32 кГц, гарантированно
Не могут стать событием, вызвавшим прерывание. В подрежиме Static «спя-
щего» режима остаются активными только асинхронные внешние преры-
вания, поэтому любой короткий выброс на входе такого прерывания «про-
°УДИт» устройство.
«Пробуждение» МК с помощью внешних прерываний может происхо-
дить двумя различными способами. Если соответствующий бит в регистре
hIM JMR установлен, то после «пробуждения» произойдет переход к вы-
полнению программного блока обработки прерывания. Если соответствуй
ющий бит в регистре EIM_IMR не установлен, то после «пробуждения»
ЦПУ начнет выполнять команду, стоящую сразу после команды sleep.
13.2.2. Немаскируемое прерывание NMI
Немаскируемое прерывание NMI имеет те же самые особенности, что
и остальные внешние прерывания и управляется с помощью тех же самых
регистров. Только при конфигурировании NMI программа должна обра-
щаться вместо битов INTn к биту NMI. По определению, немаскируемое
прерывание NMI может прервать обработку ЦПУ любого другого прерыва-
ния. Однако применительно к внешним прерываниям физическую линию
входа NMI можно программно включить или отключить путем обращения
к регистрам модуля контроллера внешних прерываний. По умолчанию эти
прерывания запрещены, что дает возможность программно задать надле-
жащие векторы прерывания до разрешения указанных прерываний.
13.2.3. Поддержка сканирования клавиатуры
Модуль EIM поддерживает сканирование внешней клавиатуры, которую
можно подключить к МК в целевой системе. Эта клавиатура должна быть со-
вместима с клавиатурами, организованными, как совокупность линий строк
и столбцов, причем, линии строк в самой клавиатуре являются выходами,
а линии столбцов — входами. Линии строк клавиатуры должны быть связаны
с входами внешних прерываний МК с внутренними подтянутыми к «плюсу»
питания резисторами, которые разрешаются в модуле GPIO. Эти внешние
прерывания нужно сконфигурировать как чувствительные к низкому уровню
или отрицательному перепаду. Линии столбцов клавиатуры должны быть свя-
заны с доступными в данном приложении выходами сканирования МК. Мо-
дуль GPIO должен быть сконфигурирован таким образом, чтобы используе-
мые клавиатурой выходы сканирования управлялись модулем EIM. При этом
не используемые для обслуживания клавиатуры ножки входов внешних пре-
рываний или выходы сканирования могут быть оставлены под управлением
GPIO или других периферийных устройств. Функция сканирования клавиа-
туры (Keypad Scan) разрешается путем записи 1 в бит EIM_SCAN:EN, что
запускает счетчик сканирования клавиатуры. Выходы сканирования SCAN
при этом устанавливаются в третье (высокоимпендансное) состояние, кроме
выхода SCAN [0], который сбрасывается в низкий уровень.
После истечения 2<EIM-SCAN:PRESC+1) тактовых циклов RC-генератора со-
стояние выходов сканирования подвергается сдвигу таким образом, что-
бы выход SCAN [1] сбросился в низкий уровень, а все остальные выходы
перешли в третье состояние. Далее последовательность таких сдвигов по-
вторяется бесконечно.
Когда какая-нибудь клавиша нажата, то подключенная к ней линия
строки, в обычном состоянии подтянутая к «плюсу» питания, за счет низ-
кого уровня сканирующего сигнала также переходит в низкий уровень, что
вызывает генерацию внешнего прерывания. При обработке этого прерыва-
программа может легко идентифицировать нажатую клавишу по теку-
йИ^У значению битового поля EIM_SCAN:PIN. Чтобы текущее значение
^пя PIN не было испорчено, процесс сдвига автоматически останавлива-
П° я всякий раз, когда в ЦПУ поступает запрос прерывания от EIM. Когда
еТС ЦПУ сбрасывает установившийся флаг прерывания, сканирование ав-
томатически возобновляется.
13.3. Пользовательский интерфейс
Пользовательский интерфейс EIM представлен специальными регистрами
МК, перечисленными в табл. 13.1.
Табл. 13.1. Отображение регистров EIM
Сме- щение Регистр Имя Доступ Значение после сброса
0x00 Регистр разрешения прерываний от EIM EIMJER Только для записи 0x0
0x04 Регистр запрещения прерываний от EIM EIMJDR Только для записи 0x0
0x08 Регистр маски прерываний от EIM EIMJMR Только для чтения 0x0
ОхОС Регистр состояния прерываний от EIM EIMJSR Только для чтения 0x0
0x10 Регистр сброса прерываний от EIM EIMJCR Только для записи 0x0
0x14 Регистр режимов внешних прерываний EIM_MODE Чтение/запись 0x0
0x18 Регистр перепадов внешних прерываний EIM_EDGE Чтение/запись 0x0
0х1С Регистр уровней внешних прерываний EIM_LEVEL Чтение/запись 0x0
0x20 Регистр фильтров внешних прерываний EIMJFILTER Чтение/запись 0x0
0x24 Регистр тестирования внешних прерываний EIM_TEST Чтение/запись 0x0
0x28 Регистр асинхронности внешних прерываний EIM_ASYNC Чтение/запись 0x0
0х2С Регистр сканирования внешних прерываний EIM_SCAN Чтение/запись 0x0
0x30 Регистр разрешения внешних прерываний EIM_EN Только для записи 0x0
0x34 Регистр запрещения внешних прерываний EIM_DIS Только для записи 0x0
0x38 Регистр управления EIM_CTRL Чтение/запись 0x0
внешними
прерываниями
13.3.1. Регистры разрешения/запрещения/маски/состояния/
сброса прерываний от EIM EIM_IER/EIM_IDR/EIM_IMR/
EIMJSR/EIMJCR
Битовая структура каждого из этих регистров показана в табл. 13.2.
Табл. 13.2. Битовая структура каждого из регистров EIM_IER/EIM_IDR/
EIM_IMR/EIM_ISR/EIM_ICR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - NMI
7 6 5 4 3 2 1 0
INT7 INT6 INT5 INT4 INT3 INT2 INT1 INTO
Эффект от записи в этот бит или от чтения его зависит, к какому из
нижеперечисленных регистров производится обращение:
* EIM IER (только для записи).
0: никакого эффекта.
1: разрешить прерывание.
* EIM IDR (только для записи).
0: никакого эффекта.
1: запретить прерывание.
• EIM_IMR (только для чтения).
0: прерывание запрещено.
1: прерывание разрешено.
• EIM_ISR (только для чтения).
0: событие, вызывающее прерывание, произошло.
1: событие, вызывающее прерывание, не произошло.
• EIMJCR (только для записи).
0: никакого эффекта.
1: сбросить прерывание.
13.3.2. Регистры режимов/перепадов/уровней/фильтров/
асинхронности внешних прерываний EIM_MODE/EIM_
EDGE/EIM_LEVEL/EIM_FILTER/EIM_ASYNC
Битовая структура каждого из этих регистров показана в табл. 13.3.
Табл. 13.3. Битовая структура каждого из регистров EIM_MODE/EIM
EDGE/EIM_LEVEL/EIM_FILTER/EIM_ASYNC
31 30 29 28 27 26 25 24
- - - - - - - -
^2? 22 21 20 19 18 17 16
• - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - NMI
7 6 5 4 3 2 1 0
INT7 INT6 INT5 INT4 INT3 INT2 INTI INTO
Эффект от записи в этот бит или от его чтения зависит, к какому из
нижеперечисленных регистров производится обращение:
• EIM_MODE
0: прерывание генерируется перепадом.
1: прерывание генерируется уровнем.
• EIMJEDGE
0: прерывание генерируется отрицательным перепадом.
1: прерывание генерируется положительным перепадом.
• EIM_LEVEL
0: прерывание генерируется низким уровнем.
1: прерывание генерируется высоким уровнем.
• EIM_FILTER
0: фильтр прерывания отключен.
1: фильтр прерывания включен.
• EIM_ASYNC
0: прерывание синхронизировано тактовой частотой.
1: прерывание является асинхронным.
13.3.3. Регистр тестирования внешних прерываний EIM_TEST
Битовая структура этого регистра показана в табл. 13.4.
Табл. 13.4. Битовая структура регистра EIM_TEST
31 30 29 28 27 26 25 24
^TEST EN - - - - - - -
_J>3 22 21 20 19 18 17 16
- - - - - - -
Табл. 13.4.
(окончание)
15 14 13 12 11 10 9 8
- - - - - - - NMl"~
7 6 5 4 3 2 1 0
INT7 INT6 INT5 INT4 INT3 INT2 INTI INT0~~~
• NMI
0: никакого эффекта.
1: генерируется прерывание NMI, если бит TEST_EN = 1.
• INTn
0: никакого эффекта.
1: генерируется внешнее прерывание п, если бит TEST_EN = 1.
• TESTEN
0: тестирование внешних прерываний запрещено.
1: тестирование внешних прерываний разрешено.
13.3.4 . Регистр сканирования внешних прерываний EIM
SCAN
Битовая структура этого регистра показана в табл. 13.5.
Табл. 13.5. Битовая структура регистра EIM_SCAN
31 30 29 28 27 26 25 24
- - - - - PIN[2:0]
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - PRESC[4:0] __
7 6 5 4 3 2 1 0 _
- - - - - - - EN _
• EN
0: сканирование внешней клавиатуры запрещено.
1: сканирование внешней клавиатуры разрешено.
• PRESC
Выбор частоты сканирования внешней клавиатуры производится по
формуле:
Частота сканирования = 2(Е1М _scan.presc+i> х
Значение периода частоты RC-генератора TRC указано в разделе элек-
«ческих характеристик оригинальной документации производителя.
Тр • PIN
Индекс активного в данный момент выхода сканирования. Запись в это
битовое поле не будет иметь никакого эффекта.
13.3.5. Регистры разрешения/запрещения/управления
внешних прерываний EIM_EN/EIM_DIS/EIM_CTRL
Битовая структура каждого из этих регистров показана в табл. 13.5.
Табл. 13.5. Битовая структура каждого из регистров EIM_EN/EIM_DIS/
EIM_CTRL
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - NMI
7 6 5 4 3 2 1 0
_ INT7 INT6 INT5 INT4 INT3 INT2 INT1 INTO
Эффект от записи в этот бит или от чтения его зависит, к какому из
нижеперечисленных регистров производится обращение:
• EIM_EN (только для записи)
0: никакого эффекта.
1: прерывание разрешено.
• EIM_DIS (только для записи)
0: никакого эффекта.
1: прерывание запрещено.
• EIM_CTRL
0: прерывание запрещено.
1: прерывание разрешено.
Примечание переводчика. При рассмотрении пользовательского интер-
фейса модуля EIM у читателя может возникнуть закономерный вопрос,
Зачем нужны очевидно дублирующие друг друга по выполняемым функ-
циям две группы регистров: разрешения/запрещения/маски/состояния/
сброса прерываний от EIM (EIM_IER/EIM_IDR/EIM_IMR/EIM_ISR/
EIM_ICR) и разрешения/запрещения/управления внешними прерыва-
ниями (EIM_EN/EIM_DIS/EIM_CTRL). Функциональное различие этцх
групп регистров становится несколько более понятным при рассмотрение
блок-схемы EIM (рис. 13.1). Как можно видеть из схемы, группа регистров
EIM_IER/EIM_IDR/EIM_IMR/EIM_ISR/EIM_ICR обеспечивает воз-
можность обслуживания со стороны ЦПУ уже сгенерированных в моду,
ле EIM внешних прерываний. Группа же регистров EIM_EN/EIM_DlS/
EIM_CTRL предназначена для управления самой возможностью генера-
ции внешних прерываний внутри модуля EIM.
[-J1ABA 14
КОНТРОЛЛЕР
FLASH-ПАМЯТИ
(FLASHC)
14.1. Основные особенности
Входящий в состав всех МК семейства AT32UC3 модуль контроллера Flash-
памяти (FLASHC) имеет следующие основные особенности.
• Управляет блоком Flash-памяти с двойным портом чтения, позво-
ляющим производить быстрое чтение смежных ячеек.
• Поддерживает доступ к шине с 0 или с 1 циклом ожидания.
• Позволяет производить блочное чтение в системах с одним циклом
ожидания, возвращая одно прочитанное 32-разрядное слово за так-
товый цикл.
• Имеет 32-разрядный HSB-интерфейс для чтения массива Flash-
памяти и записи в буфер страницы.
• Имеет 32-разрядный РВ-интерфейс для подачи команд и задания
конфигурации контроллера.
• Имеет 16 битов блокировки, каждый из которых защищает об-
ласть памяти размером (общее количество страниц в блоке Flash-
памяти / 16).
• Области защиты могут быть индивидуально защищены или остав-
лены незащищенными.
' Поддерживает дополнительную защиту страниц загрузчика.
’ Поддерживает чтение и запись битов NVM общего назначения.
’ Поддерживает чтение и запись дополнительных страниц NVM.
Поддерживает защиту Flash-памяти устройства с помощью бита за-
щиты.
Поддерживает специальную команду для стирания всего кри-
сталла, которая сначала стирает энергозависимые блоки памяти
на кристалле перед стиранием Flash-памяти и сбрасывает бит за-
щиты.
Имеет интерфейс к менеджеру питания для отключения блоков
Flash-памяти в «спящем» режиме.
Имеет интерфейс к менеджеру питания для автоматического выбо-
ра корректного числа циклов ожидания, задаваемого как функция
частоты синхросигнала.
14.2. Функциональное описание
Контроллер Flash-памяти связывает блок встроенной Flash-памяти
МК с 32-разрядной внутренней шиной HSB. Основной принцип функ-
ционирования FLASHC в некэшируемых системах с высокой тактовой
частотой и одним циклом ожидания (AT32UC3) заключается в раз-
мещении слов данных с последовательно идущими адресами в чере-
дующихся субблоках блока Flash-памяти. Наличие в каждом суббло-
ке интерфейса чтения позволяет производить их чтение параллельно.
Когда данные из одного субблока Flash-памяти выводятся на шину, из
другого субблока производится чтение по следующему последователь-
но идущему адресу. Результат этого чтения возвращается в следующем
тактовом цикле.
Контроллер Flash-памяти также управляет программированием, стира-
нием, блокировкой и разблокированием с помощью последовательностей
специальных команд.
Модуль FLASHC имеет два шинных интерфейса:
• интерфейс к высокоскоростной шине (HSB) для чтения данных из
массива Flash-памяти и их записи в буфер страницы;
• интерфейс к периферийной шине (РВ) для записи команд, а также
для управления и чтения состояния контроллера.
Для обеспечения функционирования в системах с высокими тактовыми
частотами модуль FLASHC имеет интерфейс к блоку Flash-памяти с двумя
портами чтения. Блок Flash-памяти состоит из перечисленных ниже ком-
понент, представленных в заданных количествах:
221 + 1 2 8
221
pw
pw-1
Не определено
Пользовательская
страница
Не определено
Массив
Flash-памяти
О
Рис. 14.1. Карта адрес-
ного пространства Flash-
памяти
• р — количество страниц (FLASHP),
• w — количество слов в пределах одной
страницы или в пределах буфера страницы
(FLASH_W),
• pw — количество слов в пределах всего мас-
сива Flash-памяти (FLASH_PW),
• f — количество битов fuses-установок обще-
го назначения (FLASH_F),
• один бит защиты (fuses-установка),
• одна пользовательская страница.
Пользовательская страница — это дополни-
тельная страница, расположенная вне основного
массива Flash-памяти. Пользовательская страни-
ца может использоваться для хранения различных
данных, например, калибровочной информаций
и серийных номеров. Эта страница не стирается
при общем стирании кристалла, а может быть за-
писана и стерта только специальными командами.
Программный доступ для чтения пользователь-
ской страницы выполняется так же, как и доступ
к любой другой странице массива Flash-памяти.
Местоположение пользовательской станицы во
Pl ash-памяти показано на карте адресного пространства Flash-памяти,
изображенной на рис. 14.1.
14.2.1. Операции чтения Flash-памяти
Модуль FLASHC может функционировать в двух различных режимах
цТСНИЯ.
. О циклов ожидания (режим «Ows») для тактовых частот, период ко-
торых меньше, чем сумма времени доступа к Flash-памяти и време-
ни шинной задержки;
• 1 цикл ожидания (режим «Iws») для тактовых частот, период кото-
рых меньше, чем половина суммы времени доступа к Flash-памяти
и времени шинной задержки.
Более высокие тактовые частоты, которые потребовали бы большего
количества циклов ожидания, не поддерживаются контроллером Flash-
памяти.
Программист может выбрать требуемое количество циклов ожида-
ния путем записи в битовое поле FWS регистра управления Flash-памяти
(FCR). Однако фактическое количество циклов ожидания, используемое
контроллером Flash-памяти, является функцией как битового поля FWS,
так и частоты, поступающей на вход DIVIDED_CLOCK от менеджера пи-
тания. Функция эта может быть описана следующим образом:
• если менеджер питания сконфигурирован так, что входная тактовая
частота контроллера Flash-памяти является результатом деления ба-
зовой частоты на 2 или большее значение, то установки поля FWS
игнорируется и контроллер Flash-памяти будет функционировать
в режиме «Ows»;
’ если входная тактовая частота контроллера Flash-памяти не являет-
ся результатом деления базовой частоты, т. е. если эта частота иден-
тична базовой, то контроллер Flash-памяти будет функционировать
в режиме, заданным содержимым поля FWS.
Ответственность за выбор количества циклов ожидания, совместимого
со значением тактовой частоты и характеристиками синхронизации блока
Flash-памяти, возлагается на программиста.
В режиме «Ows» возможно обращение только к одному из двух име-
ющихся портов чтения Flash-памяти. Другой порт чтения в этом ре-
жиме находится в пассивном состоянии. В режиме «lws» активны оба
порта чтения Flash-памяти. Когда один порт читает адресуемое слово,
Другой порт читает следующее последовательно расположенное в па-
мяти слово.
Если тактовая частота позволяет, производитель рекомендует использо-
Вать режим «Ows», поскольку он обеспечивает самую низкую потребляемую
Мощность, так как использует только один порт чтения. Использование
Режима «lws» обеспечивает значение отношения «потребляемая мощность/
Производительность», приближающееся к значению для режима «Ows»,
х°тя тактовая частота в этом режиме вдвое выше максимальной тактовой
Частоты режима «Ows». Использование двух портов чтения Flash-памяти
вдвое увеличивает потребляемую мощность, но дает и двойной выигрыш
в производительности.
Контроллер Flash-памяти поддерживает область адресов слова в диапа-
зоне от 0 до 221, как показано на карте адресного пространства Flash-памяти
(рис. 14.1). Однако, чтение по адресам, расположенным в диапазоне от pw
до 221—1, возвращает неопределенный результат. Начало пользовательской
страницы постоянно отображается на адрес 221 В табл. 14.1. показаны име-
ющиеся в МК области Flash-памяти с адресами байтов.
Табл. 14.1. Области Flash-памяти, доступные в AT32UC3
Тип области Flash-памяти Начальный адрес (адресация байтовая) Размер
Основной массив 0 pw слов = (4 х pw) байт
Пользовательская страница 223= 8388608 128 слов = 512 байт
14.2.2. Быстрое чтение страницы
Специализированная команда контроллера Flash-памяти быстрого чтения
страницы (QPR) предназначена для чтения всех слов страницы, к которой
производится обращение. Все биты всех слов этой страницы при таком
чтении объединяются в соответствии с логической функцией AND, воз-
вращая результат размером в один бит. Этот бит результата автоматически
помещается в бит результата быстрого чтения страницы (QPRR) регистра
состояния Flash-памяти (FSR). Команда QPR может быть полезной, когда
требуется проверить, стерта ли страница, поскольку команда QPR выпол-
няется намного быстрее, чем проверка стертости страницы с использова-
нием пользовательской подпрограммы.
14.2.3. Операция записи в буфер страницы
В область адресов, зарезервированную для встроенной Flash-памяти, мо-
жет быть произведена запись с помощью доступного только для записи
буфера страницы. К буферу страницы возможно программное обращение
только при задании в адресе адресных битов, необходимых для обраще-
ния к w словам (в пределах буфера страницы осуществляется пословная
адресация). После окончания записи в буфер страницы можно произве-
сти пословный перенос его содержимого в любую страницу Flash-памяти
в пределах доступной области адресов.
При записи в буфер страницы битовое поле PAGEN регистра FCMD
автоматически модифицируется значением номера страницы, соответству-
ющим ее адресу.
Буфер страницы также может использоваться для записи в пользова-
тельскую страницу.
Операции записи могут быть заблокированы путем соответствующе-
го конфигурирования модуля защиты памяти ЦПУ. Запись 8-разрядных
л 16-разрядных данных в буфер страницы не допускается, поскольку может
привести к непредсказуемому нарушению целостности данных.
Операции записи в буфер страницы выполняются с 4 циклами ожи-
дания. Необходимо заметить, что запись в буфер страницы может лишь
изменить значения битов его содержимого с 1 на 0, т. е. запись зна-
чения Охаааааааа в область буфера страницы, содержащую значение
0x00000000, не изменит этого значения. Единственный способ изме-
нить значения битов буфера страницы с 0 на 1 состоит в том, чтобы об-
нулить буфер страницы командой сброса буфера страницы (Clear Page
Buffer).
После записи страницы буфер страницы автоматически не обнуляет-
ся, поэтому при необходимости программист должен сделать это «вруч-
ную», подав команду сброса буфера страницы. Это может быть сделано
сразу после записи страницы Flash-памяти или непосредственно перед
записью в буфер страницы данных, которые будут сохранены в странице
Flash-памяти.
14.3. Команды Flash-памяти
Модуль FLASHC предоставляет в распоряжение пользователя набор ко-
манд, позволяющих управлять программированием Flash-памяти, бло-
кировки и разблокировки областей Flash-памяти и ее полного стирания.
Полный список команд будет приведен ниже.
Для выполнения команды в поле FCMD регистра команды Flash-
памяти (FCMD) должен быть записан номер команды. Как только про-
изводится запись в FCMD, флаг FRDY автоматически сбрасывается и на-
чинается выполнение команды Flash-памяти. Как только выполнение
текущей команды завершается, флаг FRDY автоматически устанавливает-
ся. Если разрешено прерывание (установлен бит FRDY в регистре FCR),
активизируется линия прерывания контроллера Flash-памяти. Все коман-
ды Flash-памяти, кроме команды быстрого чтения страницы (QPR), по-
сле завершения своего выполнения генерируют запрос прерывания, если
Установлен бит FRDY.
После того как номер команды был записан в поле FCMD, пользова-
тельский алгоритм программирования должен ожидать завершения выпол-
нения команды (освобождения Flash-памяти), прежде чем предпринимать
попытки читать команды или данные из Flash-памяти или производить
запись в буфер страницы. Ожидание может быть реализовано как цикли-
ческий программный опрос регистра состояния Flash-памяти (FSR) или
придание прерывания по готовности Flash-памяти.
Все команды Flash-памяти защищены одним и тем же ключевым словом,
Которое должно быть записано в восемь старших битов регистра FCMD.
апись в FCMD значения, не содержащего правильного значения ключа
/Или недопустимой команды, не будет иметь никакого эффекта для Flash-
амяти. Однако в этом случае в регистре состояния Flash-памяти (FSR)
автоматически установится флаг PROGE. Этот флаг будет автоматически
брошен при чтении регистра FSR.
Запись команды в регистр FCMD во время выполнения другой команды
не будет иметь никакого эффекта для Flash-памяти. Однако в этом случае
в регистре состояния Flash-памяти (FSR) также установится флаг PROGE
который будет автоматически сброшен при чтении FSR.
Если текущая команда производит запись или стирание страницы
в блокированной области или страницы, защищенной fuses-установкой
BOOTPROT, то выполнение этой команды не будет иметь никакого эф.
фекта для Flash-памяти. Однако в этом случае в регистре состояния Flash-
памяти (FSR) автоматически установится флаг LOCKE, который будет ав-
томатически сброшен при чтении FSR.
14.3.1. Операция записи/стирания страницы
Технология изготовления Flash-памяти требует, чтобы перед ее программи-
рованием было выполнено ее стирание. Вся Flash-память МК может быть
стерта командой полного стирания (Erase All). Альтернативно страницы
Flash-памяти могут быть индивидуально стерты командой стирания стра-
ницы (Erase Page). Пользовательская страница также может быть записана
и стерла с использованием способов, описанных в этом разделе.
После программирования страница Flash-памяти может быть заблоки-
рована, чтобы в дальнейшем предотвратить ее запись или стирание. По-
скольку блокировка может быть выполнена только для области памяти, то
будут заблокированы все страницы в данной области.
Для самой младшей (нижней) части адресного пространства Flash-
памяти в МК предусмотрена дополнительная защита. Эта часть адресного
пространства отведена производителем для встроенного загрузчика и за-
щищена двумя битами блокировки, соответствующими этому адресному
пространству, а также fuses-установками BOOTPROT [2:0].
Данные, подлежащие записи, хранятся во внутреннем буфере, называе-
мом буфером страницы. Буфер страницы содержит w слов. При записи во
Flash-память содержимое буфера страницы переносится во Flash-память
пословно. Запись 8-разрядных и 16-разрядных данных в буфер страницы
не допускается, поскольку может привести к непредсказуемому нарушению
целостности данных. Подлежащие записи данные должны быть записаны
в буфер страницы, прежде чем команда программирования будет записана
регистр команды Flash-памяти FCMD.
Таким образом, запись во Flash-память производится в приведенной
ниже последовательности:
• сброс буфера страницы командой Clear Page Buffer;
• заполнение буфера страницы подлежащей записи информацией
с использованием только 32-разрядных данных;
• запуск операции записи, как только ключ записи и команда записи
будут записаны в регистр команды Flash-памяти FCMD. Битовое
поле PAGEN в регистре FCMD должно содержать адрес страницы,
в которую производится запись. Поле PAGEN автоматически мо-
дифицируется при записи в буфер страницы, но может быть так-
же записано и непосредственно. Бит FRDY в регистре состояния
Flash-памяти (FSR) автоматически сбрасывается, когда начинается
операция записи страницы;
. когда операция записи завершается, устанавливается бит FRDY
в регистре состояния Flash-памяти (FSR). Если установленным
битом FRDY в регистре FCR разрешено прерывание, то перехо-
дит в активный уровень линия прерывания от контроллера Flash-
памяти.
После завершения последовательности записи в регистре FSR могут
быть обнаружены две ошибки:
• ошибка программирования: неправильное ключевое слово и/или
недопустимая команда были записаны в регистр FCMD;
• ошибка блокировки: страница, в которую производилась запись,
принадлежит к блокированной области. В последнем случае необ-
ходимо подать команду разблокировки соответствующей области до
начала последовательности записи.
14.3.2. Операция полного стирания
Полное стирание Flash-памяти происходит, если в регистр команды Flash-
памяти (FCMD) записывается команда полного стирания Erase All (ЕА).
Эта команда стирает все биты в массиве Flash-памяти. Пользовательская
страница при этом не стирается. После выполнения команды ЕА стира-
ются также биты fuses-установок и бит защиты (сбрасываются в значения
OxFF).
Команда ЕА также гарантирует, что все энергозависимые блоки памя-
ти, например регистровый файл и модули RAM, будут стерты, прежде чем
будет стерт бит защиты.
Необходимо заметить, что операция полного стирания может быть про-
изведена только в том случае, если никакие области памяти не заблоки-
рованы и биты fuses-настроек BOOTPROT сброшены в 0. Если же хотя бы
одна область памяти заблокирована, бит LOCKE в регистре FSR установ-
лен, то команда ЕА автоматически отменяется. Если бит LOCKE в реги-
стре FCR установлен, то линия прерывания при этом переходит в актив-
ный уровень.
Когда выполнение команды ЕА завершается, устанавливается бит FRDY
в Регистре состояния Flash-памяти (FSR). Если прерывание разрешено
Установленным битом FRDY в регистре FCR, то переходит в активный
Уровень линия прерывания от контроллера Flash-памяти.
После завершения последовательности полного стирания в регистре
^R могут быть обнаружены две ошибки:
’ ошибка программирования: неправильное ключевое слово и/или
недопустимая команда были записаны в регистр FCMD;
ошибка блокировки: не менее чем одна область заблокирована или
значение BOOTPROT отлично от 0. Команда полного стирания
была отменена, и ни одна страница Flash-памяти не была стерта.
В последнем случае необходимо подать команду разблокировки со-
ответствующей области до начала полного стирания.
14.3.3. Биты блокировки областей
Блок Flash-памяти состоит из р страниц, которые сгруппированы в 16 об-
ластей блокировки, каждая из которых содержит р/16 страниц. Каждая об-
ласть имеет специализированный бит блокировки, служащий для предот-
вращения записи и стирания страниц в данной области. По умолчанию при
поставке с завода-изготовителя у МК могут быть заблокированы некоторые
области. Эти области зарезервированы для встроенного загрузчика. Забло-
кированные области могут быть разблокированы для последующего стира-
ния и записи какого-либо другого приложения или других данных. Блоки-
ровка или разблокировка области памяти осуществляется соответственно
с помощью команды блокировки области (LP) и команды разблокировки
области (UP). Запись одной из этих команд в регистр команды Flash-памяти
(FCMD) вместе с номером страницы и области, которая должна быть за-
блокирована/разблокирована, выполняет требуемую операцию.
После завершения последовательности блокировки/разблокировки
в регистре FSR может быть обнаружена следующая ошибка:
• ошибка программирования: неправильное ключевое слово и/или
недопустимая команда были записаны в регистр FCMD.
Биты блокировки физически реализованы в МК как 16 самых младших
битов fuses-установок общего назначения. Это означает, что биты блоки-
ровки могут быть также установлены/сброшены командой записи/стира-
ния fuses-установок. Бит общего назначения, находящийся в стертом (1)
состоянии, означает, что область разблокирована.
Страницы Flash-памяти с самыми младшими адресами могут быть до-
полнительно защищены fuses-установками BOOTPROT, о чем будет рас-
сказано ниже.
14.3.4. Биты общего назначения fuses-установок
Каждому блоку Flash-памяти в МК сопоставляется некоторое множество
битовых полей общего назначения fuses-установок, которые программист
может свободно использовать. Биты fuses-установок могут быть записаны
и стерты с помощью специализированных команд, а прочитаны через спе-
циализированный адрес периферийной шины (РВ). Некоторые из битовых
полей общего назначения fuses-установок зарезервированы для специаль-
ных функций и не должны использоваться для других целей. Специальные
функции битовых полей общего назначения fuses-установок, относящихся
к Flash-памяти, перечислены в табл. 14.2. Эти битовые поля входят в состав
Fuse-регистра общего назначения (FGPFR), который был описан в разделе
«Fuses-установки».
Fuses-установки BOOTPROT защищают адресное пространство разме-
щения загрузчика, показанное в табл. 14.3.
Записывать или стирать биты общего назначения fuses-установок можно
соответственно командами записи бита общего назначения fuses-установок
(WGPB) и стирания бита общего назначения fuses-установок (EGPB). За-
пись одной из этих команд в регистр команды Flash-памяти (FCMD) вме-
Табл. 14.2. Специальные функции битов общего назначения fuses-установок,
относящихся к Flash-памяти
5^мера битов
общего назна-
чения fuses-
установок
1*0
Имя
LOCK
16 epfl
19:17 BOOT-
PROT
Использование
Биты блокировки областей памяти
Блокировка внешней привилегированной выборки.
Используется, чтобы предотвратить выборку ЦПУ
команд из внешних блоков памяти в привилегирован-
ном режиме. Значение этого бита может быть изме-
нено только в том случае, если бит защиты сброшен.
Адресный интервал, соответствующий внешним
блокам памяти, определяется только внешними
устройствами и неизвестен контроллеру Flash-памяти.
Бит EPFL просто блокирует цепь, соединяющую ЦПУ
или системную шину с контроллером Flash-памяти.
Если бит защиты установлен, то сбросить бит EPFL
может только внешнее стирание кристалла через
JTAG. Никакие внутренние команды не могут изме-
нить значение EPFL, если бит защиты установлен
Используется для выбора одного из четырех раз-
личных размеров загрузчика (bootloader). Страницы,
включенные в область размещения загрузчика, не
могут быть стерты или записаны иначе, как стира-
нием кристалла через JTAG. Значение поля BOOT-
PROT может быть изменено только в том случае, если
бит защиты сброшен. Если бит защиты установлен,
то только внешнее стирание кристалла через JTAG
может сбросить поле BOOTPROT и, таким обра-
зом, разрешить запись страниц, защищенных полем
BOOTPROT. Никакие внутренние команды не могут
изменить значение поля BOOTPROT или страниц,
защищенных полем BOOTPROT, если бит защиты
установлен
сте с номером записываемой/стираемой fuses-установки выполняет требуе-
мую операцию.
Одновременная запись всего байта общего назначения (входящего в со-
став Fuse-регистра общего назначения) fuses-установок может быть осу-
ществлена путем использования команды программирования байта общего
Назначения fuses-установок (PGPFB). Команда PGPFB в отношении байта
бЩего назначения fuses-установок 2 не действует, если установлен бит за-
щиты Flash -памяти.
Параметры команды PGPFB задаются в битовом поле PAGEN следую-
щем образом:
PAGEN [2:0] — номер байта, в который предполагается произвести
запись.
• PAGEN [10:3] — значение fuses-установки для записи.
Табл. 14.3. Области загрузчика, защищаемые полем BOOTPROT
BOOTPROT Страницы Flash-памяти, защищенные полем BOOTPROT Размер защищенной* памяти
7 Нет 0
6 0-1 1 к
5 0-3 2 к
4 0-7 4 к
3 0-15 8 к
2 0-31 16 к
1 0-63 32 к
0 0-127 64 к
Все fuses-установки общего назначения могут быть стерты командой
стирания fuses-установок общего назначения (EAGP). Команда EAGP не
действует, если установлен бит защиты Flash-памяти.
После завершения выполнения указанных команд в регистре FSR мо-
гут быть обнаружены две ошибки:
• ошибка программирования: неправильное ключевое слово и/или
недопустимая команда были записаны в регистр FCMD;
• ошибка блокировки: была предпринята попытка записи или стира-
ния любого из битов общего назначения fuses-установок со специ-
альными функциями (см. табл. 14.2) при установленном бите за-
щиты Flash-памяти.
Биты блокировки физически реализованы как 16 младших битов Fuse-
регистра общего назначения. Это значит, что эти биты также могут также
быть записаны/стерты с использованием команд блокировки/разблокиров-
ки областей памяти, о чем будет подробнее рассказано ниже.
14.3.5. Бит защиты Flash-памяти
Бит защиты Flash-памяти позволяет заблокировать кристалл МК (защитить код
пользовательской программы) от внешнего доступа через JTAG. Запись в бит
защиты может быть произведена специализированной командой установки бита
защиты (SSB). После того, как бит защиты будет установлен, единственный
способ сбросить его заключается в подаче команды стирания МК через JTAG.
При установленном бите защиты следующие команды контроллера
Flash-памяти будут недоступны и в случае их подачи возвратят ошибку
блокировки:
• запись бита общего назначения fuses-установок (WGPB) в отноше-
нии fuses-установок EPFL или BOOTPROT;
• стирание бита общего назначения fuses-установок (EGPB) в отно-
шении fuses-установок EPFL или BOOTPROT;
• программирование байта общего назначения fuses-установок (PG-
PFB);
стирание всех fuses-установок (EAGPF).
После завершения выполнения команды в регистре FSR может быть
бнарУжена слеДУющая ошибка:
° . ошибка программирования: неправильное ключевое слово и/или
недопустимая команда были записаны в регистр FCMD.
14.4. Пользовательский интерфейс
Пользовательский интерфейс модуля FLASHC представлен специальными
регистрами МК, перечисленными в табл. 14.4.
Табл. 14.4. Отображение регистров модуля FLASHC
Сме- щение Регистр Имя Доступ Значение после сброса
0x0 Регистр управления Flash- памяти FCR Чтение/запись 0
0x4 Регистр команды Flash-памяти FCMD Чтение/запись 0
0x8 Регистр состояния Flash-памяти FSR Чтение/запись о1
ОхС Старший регистр Flash-памяти fuses-установок общего назна- чения FGPFRHI Только чтение NA2
0x10 Младший регистр Flash-памяти fuses-установок общего назна- чения FGPFRLO Только чтение NA2
1 Значения битов блокировки зависят от их запрограммированного состоя-
ния. Все другие биты в регистре FSR имеют уровень 0.
2 Значения битов в регистрах FGPFRHI и FGPFRLO зависят от запрограмми-
рованного состояния fuses-установок, на которые отображены эти биты. Все про-
чие биты этих регистров, не отображенные на fuses-установки, читаются как 0.
14.4.1. Регистр управления Flash-памяти FCR
Битовая структура этого регистра показана в табл. 14.5.
Табл. 14.5. Битовая структура регистра управления Flash-памяти FCR
30 29 28 27 26 25 24
- - - - - - -
22 21 20 19 18 17 16
- - - - - -
14 13 12 11 10 9 8
- - - - - - SASD
Табл. 14.5.
(окончание)
7 6 5 4 3 2 1 0 ~~~~
- FWS - - PROGE LOCKE - FRDY'
FRDY: разрешение прерывания по готовности Flash-памяти.
0: по готовности Flash-памяти не генерируется прерывание.
1: по готовности Flash-памяти генерируется прерывание.
LOCKE: разрешение прерывания при ошибке блокировки.
0: ошибка блокировки не генерирует прерывание.
1: ошибка блокировки генерирует прерывание.
PROGE: разрешение прерывания при ошибке программирования.
0: ошибка программирования не генерирует прерывание.
1: ошибка программирования генерирует прерывание.
FWS: цикл ожидания Flash-памяти
0: Flash-память читается с 0 циклов ожидания.
1: Flash-память читается с 1 циклом ожидания.
SASD: отключение выборки усилителя.
0: усилители, входящие в состав Flash-памяти, находятся в режиме вы-
борки.
1: усилители, входящие в состав Flash-памяти, включены постоянно.
При этом возрастает потребляемая мощность.
Примечание переводчика. В оригинальной технической документации
производителя на МК подсемейства AT32UC3A [3] наличие битового поля
SASD не отражено.
14.4.2. Регистр команды Flash-памяти FCMD
В регистр FCMD не может быть произведена запись, если Flash-память на-
ходится в процессе выполнения команды Flash-памяти.
Битовая структура этого регистра показана в табл. 14.6.
Табл. 14.6. Битовая структура регистра команды Flash-памяти FCMD
31 30 29 28 27 26 25 24
KEY _
23 22 21 20 19 18 17 16
PAGEN [15:8] .
15 14 13 12 11 10 9 8
PAGEN [7:0] _
7 6 5 4 3 2 1 0
- - FCMD
fCMD: команда Flash-памяти.
В этом поле задается значение команды Flash-памяти. Все возможные
манды Flash-памяти перечислены в табл. 14.7. Задание значения FCMD,
к соответствующего ни одной команде, вызовет установку флага ошибки
й граммирования Flash-памяти и генерацию соответствующего прерыва-
ия если оно разрешено установкой бита PROGE в регистре FCR.
НИ-Я,
Табл. 14.7. Набор команд Flash-памяти
Команда Flash-памяти Значе- ние Мнемоническое обозначение
Нет операции 0 NOP
Запись страницы 1 WP
Стирание страницы 2 ЕР
Стирание буфера страницы 3 СРВ
Блокирование области блокировки, содержащей данную страницу 4 LP
Разблокирование области блокировки, содержащей данную страницу 5 UP
Полное стирание 6 ЕА
Запись бита общего назначения fuses-установок 7 WGPB
Стирание бита общего назначения fuses-установок 8 EGPB
Установка бита защиты 9 SSB
Программирование байта общего назначения fuses-установок 10 PGPFB
Стирание всех fuses-установок общего назначения 11 EAGPF
Быстрое чтение страницы 12 QPR
Запись пользовательской страницы 13 WUP
Стирание пользовательской страницы 14 EUP
быстрое чтение пользовательской страницы 15 QPRUP
PAGEN: номер страницы.
Поле PAGEN используется для обращения к странице или биту fuses-
Установки в некоторых командах Flash-памяти. Чтобы упростить программи-
рование Flash-памяти, поле PAGEN автоматически модифицируется всякий
Раз, когда производится запись в буфер страницы. Для каждого случая запи-
си в буфер страницы поле PAGEN модифицируется значением номера стра-
ницы, соответствующим адресу записи. Аппаратные средства автоматически
Маскируют содержимое поля PAGEN таким образом, чтобы модифицирова-
лись только биты, образующие корректные номера страниц. Все другие биты
Поле PAGEN всегда равны 0. Например, в массиве Flash-памяти с 1024 стра-
ИЦами (номера страниц от 0 до 1023) биты 15:10 всегда будут равны 0.
Содержимое поля PAGEN, соответствующее различным командам
^lash-памяти, показано в табл. 14.8.
Табл. 14.8. Семантика битового поля PAGEN в различных командах Flash
памяти
Команда Описание PAGEN
Нет операции Запись страницы Не используется Номер страницы, в которую производится запись
Стирание буфера страницы Блокирование области, содержащей данную страницу Не используется Номер страницы, содержащейся в об- ласти блокировки, которая должна быть блокирована
Разблокирование области, содержащей данную страницу Номер страницы, содержащейся в об- ласти блокировки, которая должна быть разблокирована
Полное стирание Запись бита общего назначения fuses- установок Стирание бита общего назначения fuses-установок Установка бита защиты Программирование байта общего на- значения fuses-установок Стирание всех fuses-установок общего назначения Быстрое чтение страницы Запись пользовательской страницы Стирание пользовательской страницы Быстрое чтение пользовательской страницы Не используется GPFUSE # GPFUSE # Не используется Данные записи[7:0], Адрес байта[2:0] Не используется Номер страницы Не используется Не используется Не используется
KEY: ключ защиты.
В это поле должна быть произведена запись значения 0хА5, чтобы раз-
решить выполнение команды, заданной битами регистра. Если в поле KEY
записано другое значение, запись в регистр не будет выполнена и никакое
действие не начнется. Это поле всегда читается как 0.
14.4.3. Регистр состояния Flash-памяти FSR
Битовая структура этого регистра показана в табл. 14.9.
Табл. 14.9. Битовая структура регистра состояния Flash-памяти FSR
31 30 29 28 27 26 25 24
LOCK15 LOCK14 LOCK13 LOCK12 LOCK11 LOCK10 LOCK9 LOCKS,,
Табл. 14.9.
(окончание)
22 21 20 19 18 17 16
ЬОСК7_ LOCK6 LOCK5 LOCK4 LOCK3 LOCK2 LOCK1 LOCK0
’’""""'15 14 13 12 11 10 9 8
FSZ - - - - -
’ 7 6 5 4 3 2 1 0
- QPRR SECURITY PROGE LOCKE - FRDY
FRDY: состояние готовности Flash-памяти.
0: контроллер Flash-памяти занят, и приложение должно ожидать его
освобождения перед выполнением новой команды.
1: контроллер Flash-памяти готов выполнить новую команду.
LOCKE: состояние ошибки блокировки.
Бит автоматически сбрасывается при чтении регистра FSR.
0: ни одной попытки программирования хотя бы одной заблокирован-
ной области не было после последнего чтения FSR.
1: была попытка программирования не менее одной заблокированной
области после последнего чтения FSR.
PROGE: состояние ошибки программирования.
Бит автоматически сбрасывается при чтении регистра FSR.
0: никакие недопустимые команды и никакие неправильные ключевые
слова не были записаны в регистр команды Flash-памяти FCMD.
1: недопустимая команда и/или неправильное ключевое слово были за-
писаны в регистр команды Flash-памяти FCMD.
SECURITY: состояние бита защиты.
0: бит защиты неактивен.
1: бит защиты активен.
QPRR: результат быстрого чтения страницы.
0: результат является нулевым, т. е. страница не стерта.
1: результат является единичным, т. е. страница стерта.
Бит автоматически сбрасывается при чтении регистра FSR.
FSZ: размер массива Flash-памяти.
Размер массива Flash-памяти. Соответствие значения этого поля раз-
меру массива Flash-памяти МК указано в табл. 14.20. Следует заметить,
сТо Не все МК в семействе обеспечивают наличие массивов Flash-памяти
Размерами, указанными в таблице.
Табл. 14.20. Соответствие значения битового поля FSZ размеру массива
Flash-памяти МК
FSZ
0
Размер массива Flash-памяти
32к
Табл. 14.20. (окончание)
FSZ Размер массива Flash-памяти
1 64 к ’
2 128 к
3 256 к
4 384 к
5 512 к
6 768 к
7 1024 к
LOCKx: область блокировки и состояние блокировки.
0: соответствующая область блокировки не заблокирована.
1: соответствующая область блокировки заблокирована.
14.4.4. Старший регистр Flash-памяти fuses-установок
общего назначения FGPFRHI
Битовая структура этого регистра показана в табл. 14.21.
Табл. 14.21. Битовая структура старшего регистра Flash-памяти fuses-
установок общего назначения FGPFRHI
31 30 29 28 27 26 25 24
GPF63 GPF62 GPF61 GPF60 GPF59 GPF58 GPF57 GPF56
23 22 21 20 19 18 17 16
GPF55 GPF54 GPF53 GPF52 GPF51 GPF50 GPF49 GPF48
15 14 13 12 11 10 9 8
GPF47 GPF46 GPF45 GPF44 GPF43 GPF42 GPF41 GPF40_
7 6 5 4 3 2 1 0 _
GPF39 GPF38 GPF37 GPF36 GPF35 GPF34 GPF33 GPF32_
GPFxx: fuses-установка общего назначения хх.
0: Fuses-установка имеет записанное/запрограммированное состояние.
1: Fuses-установка имеет стертое состояние.
14.4.5. Младший регистр Flash-памяти fuses-установок
общего назначения FGPFRLO
Битовая структура этого регистра показана в табл. 14.22.
Табл. 14.22. Битовая структура младшего регистра Flash-памяти fuses-
установок общего назначения FGPFRLO
зГ^ 30 29 28 27 26 25 24
'^3 GPF30 GPF29 GPF28 GPF27 GPF26 GPF25 GPF24
' 23 22 21 20 19 18 17 16
^GPF23 GPF22 GPF21 GPF20 GPF19 GPF18 GPF17 GPF16
15 "ОРИ?” 14 13 12 11 10 9 8
GPF14 GPF13 GPF12 GPF11 GPF10 GPF09 GPF08
7 6 5 4 3 2 1 0
""GPF07 GPF06 GPF05 GPF04 GPF03 GPF02 GPF01 GPF00
GPFxx: fuses-установка общего назначения хх.
0: Fuses-установка имеет записанное/запрограммированное состояние.
1: Fuses-установка имеет стертое состояние.
Примечание. Назначение битовых полей этого регистра приведено в раз-
деле «Fuses-установки», где он указан под именем FGPFR.
ГЛАВА 15
ШИННАЯ МАТРИЦА HSB
(HMATRIX)
15.1. Основные особенности
Входящая в состав всех МК AT32UC3 шинная матрица HSB (HMATRIX)
имеет следующие основные особенности.
• Пользовательский интерфейс к периферийной шине.
• Конфигурируемое количество ведущих устройств (до шестнадцати).
• Конфигурируемое количество ведомых устройств (до шестнадцати).
• Собственный декодер для каждого ведущего устройства.
• Три различных способа управления памятью для каждого ведущего
устройства (внутренняя и внешняя начальная загрузка, переотобра-
жение памяти).
• Собственная функция переотображения памяти для каждого веду-
щего устройства.
• Программируемый тип арбитража для каждого ведомого устрой-
ства:
- циклический арбитраж;
- арбитраж с фиксированным приоритетом.
• Программируемое определение вида отношения ведомого устрой-
ства к заданному для него по умолчанию ведущему:
- отсутствие заданного по умолчанию ведущего устройства;
- последнее обратившееся к ведомому ведущее устройство является
заданным для него по умолчанию;
- фиксированное заданное по умолчанию ведущее устройство.
• Один цикл ожидания для первого доступа при передаче блока.
• Ноль циклов ожидания для заданного по умолчанию ведущего
устройства.
• Собственный регистр специальных функций для каждого ведомого
устройства.
Замечание. При рассмотрении памяти МК AT32UC3 производитель
оперирует понятием «переотображение памяти». Под переотображениеМ
памяти понимается заложенная в МК возможность автоматической ап-
паратной перекодировки адресов памяти в командах ЦПУ при осущест-
влении доступа к определенным областям памяти. В результате такой
перекодировки попытки программы осуществить доступ к некоторой об-
ласти памяти приводят в результате к аналогичному физическому доступу
к другой области памяти.
15.2. Функциональное описание
глинная матрица представляет собой многослойную шинную структуру,
торая позволяет организовать параллельный множественный доступ че-
высокоскоростную шину (HSB) для ведущих и ведомых устройств в си-
Р ме Это позволяет значительно увеличить полную полосу пропускания
с нЫ. Шинная матрица связывает между собой до 16 ведущих устройств
jjSB и до 16 ведомых устройств HSB.
Нормальное время ожидания соединения ведущего устройства с ве-
домым — один тактовый цикл, за исключением случаев, когда ведущее
устройство непосредственно связано с ведомым. В этом случае получается
ноль циклов ожидания.
Шинная матрица включает в себя 16 регистров специальных функций
(SFR), которые позволяют ей поддерживать заданные приложением осо-
бенности.
15.3. Управление памятью
Шинная матрица содержит по одному декодеру для каждого интерфей-
са ведущего устройства HSB. Декодер предоставляет каждому ведущему
устройству HSB несколько вариантов управления памятью. В зависимости
от требований конечной целевой системы каждая область памяти может
быть назначена для нескольких ведомых устройств. Например, возможны
варианты, когда при загрузке по одному и тому же адресу, но в назначен-
ные для разных ведомых устройств HSB области физически будет произво-
диться попытка загрузки во внешнюю память RAM, внутреннюю память
ROM или внутреннюю Flash-память.
Пользовательский интерфейс шинной матрицы помимо прочего вклю-
чает в себя главный регистр управления переотображением (MRCR), с по-
мощью которого реализуется независимое управление переотображением
памяти для каждого ведущего устройства.
15.4. Механизм предоставления шины
Шинная матрица реализует так называемый спекулятивный метод предо-
ставления устройствам шины, обеспечивающий механизм предупреждения
запросов доступа от некоторых ведущих устройств. Этот механизм умень-
шает время ожидания при первом доступе для блочных или отдельных
транзакций. Согласно этому механизму для каждого ведомого устройства
определяется соответствующее заданное по умолчанию ведущее устрой-
ство. В конце текущего сеанса доступа, если не поступает никакой другой
запрос доступа, ведомое устройство остается связанным с заданным для
Него по умолчанию ведущим. Вид отношения ведомого устройства к за-
данному для него по умолчанию ведущему может быть трех типов:
1. Отсутствие заданного по умолчанию ведущего устройства.
2. Последнее обратившееся к ведомому ведущее устройство является
заданным для него по умолчанию.
3. Фиксированное заданное по умолчанию ведущее устройство.
В первом случае в конце текущего сеанса доступа, если не поступает нц,
какой другой запрос доступа, ведомое устройство отключается от ведущего.
Во втором случае в конце текущего сеанса доступа, если не поступает
никакой другой запрос доступа, ведомое устройство остается связанным
с тем ведущим устройством, которое выполнило последний сеанс доступа.
В последнем случае в конце текущего сеанса доступа, если не поступает
никакой другой запрос доступа, ведомое устройство остается связанным с за-
данным для него по умолчанию ведущим устройством. В отличие от пред-
ыдущего случая, смена заданного по умолчанию ведущего устройства здесь
не может быть произведена программно с помощью битового поля FIXED
DEFMSTR регистра конфигурирования ведомого устройства SCFGxx.
Для смены вида отношения ведомого устройства к заданному для него
по умолчанию ведущему пользовательский интерфейс шинной матрицы
имеет группу регистров конфигурирования ведомого устройства (по одно-
му для каждого ведомого устройства).
Каждый регистр конфигурирования ведомого устройства содержит два
битовых поля: DEFMSTRTYPE и FIXED_DEFMSTR. В поле DEFMSTR_
TYPE выбирается вид отношения ведомого устройства к заданному для
него по умолчанию ведущему, а в поле FIXED_DEFMSTR выбирается
фиксированное заданное по умолчанию ведущее устройство, если значе-
ние поля DEFMSTR_TYPE соответствует фиксированному заданному по
умолчанию ведущему устройству.
15.5. Арбитраж
Шинная матрица обеспечивает механизм арбитража, позволяющий умень-
шить время ожидания в случае конфликта, т. е. когда два или более веду-
щих устройства одновременно пытаются обратиться к одному и тому же ве-
домому. У каждого ведомого устройства HSB имеется собственный арбитр,
вынося, таким образом, решение для каждого ведомого индивидуально.
Шинная матрица предоставляет пользователю возможность выбора
между двумя типами арбитража для каждого ведомого устройства:
1. Циклический арбитраж (задано по умолчанию).
2. Арбитраж с фиксированным приоритетом.
Выбор типа арбитража может быть сделан с помощью битового пола
ARBT регистров конфигурирования ведомого устройства (SCFGxx). Выбор
типа арбитража может быть дополнен выбором вида отношения ведомого
устройства к заданному для него по умолчанию ведущему.
15.5.1 . Правила задания арбитража
Каждый арбитр предназначен для реализации выбора между двумя ИЛИ
более различными запросами от ведомых устройств. Чтобы избежать naj
рушений при блочных передачах, а также для обеспечения максимальной
производительности интерфейсов ведомых устройств, арбитраж действуй
только в течение следующих циклов:
। Неактивные циклы: когда ведомое устройство не связано ни с ка-
ким ведущим или связано с ведущим, который в текущий момент
не обращается к этому ведомому.
2 Отдельные циклы: когда ведомое устройство в текущий момент уча-
ствует о единичном сеансе доступа.
3 Конечные циклы блочной передачи: когда текущий цикл является
последним циклом блочной передачи.
4 . Цикл предела слота: когда счетчик циклов слота достиг значения
своего предела, указывающего на то, текущий доступ со стороны
ведущего устройства имеет слишком большую длительность и дол-
жен быть прерван.
Чтобы оптимизировать процесс обращений от ведомых устройств
с неопределенной длиной блока (INCR) шинная матрица содержит спе-
циальную логику, позволяющую производить повторный арбитраж до
окончания передачи INCR. При этом используется предсказание конца
блока, которое осуществляется логикой согласно одному из следующих
пяти вариантов:
1. Предсказание конца блока не производится, поэтому передача INCR
не будет прерываться.
2. Предсказание конца блока производится в каждой отдельной пере-
даче INCP.
3. Предсказание конца блока производится по окончании каждого
четвертого блока в составе передачи INCP.
4. Предсказание конца блока производится по окончании каждого
восьмого блока в составе передачи INCP.
5. Предсказание конца блока производится по окончании каждого
шестнадцатого блока в составе передачи INCP.
Выбор варианта может быть осуществлен с помощью битового поля
ULBT регистров конфигурирования ведущего устройства (MCFGxx).
Шинная матрица содержит также специальную логику, позволяющую
прерывать очень длительные сеансы доступа, например, очень длинные
блоки от очень «медленных» ведомых устройств, таких как внешняя «мед-
ленная» память. В начале блочного доступа в некий аппаратный счетчик
загружается значение, предварительно записанное в битовое поле SLOT_
^-YCLE регистра конфигурирования ведомого устройства (SCFGxx). Со-
держимое счетчика декрементируется в каждом тактовом цикле. Когда
оно становится нулевым, арбитр получает возможность произвести по-
зорный арбитраж в конце текущего байта, полуслова или слова данных
Передачи.
15.5.2. Циклический арбитраж
Циклический арбитраж позволяет арбитрам шинной матрицы обслужи-
лаТь Посылки запросов от различных ведущих устройств к одному и тому
к Ведомому устройству. Если два или более запроса от ведущих устройств
одному ведомому имеют место одновременно, первым будет обслужи-
ТЬся ведущее устройство с меньшим номером.
Циклический арбитраж может осуществляться согласно трем возмож-
ным алгоритмам:
• циклический арбитраж без заданного по умолчанию ведущего
устройства;
• циклический арбитраж, при котором последнее обратившееся к ве-
домому ведущее устройство является заданным для него по умол-
чанию ведущим;
• циклический арбитраж с фиксированным заданным по умолчанию
ведущим устройством.
Циклический арбитраж без заданного по умолчанию ведущего устрой-
ства — основной алгоритм, используемый шиной матричных арбитров.
Он позволяет шинной матрице посылать запросы от различных ведущих
устройств к одному и тому же ведомому устройству циклически. В конце
текущего сеанса доступа, если отсутствует какой-либо запрос на доступ,
ведомое устройство отключается от всех ведущих. Эта конфигурация тре-
бует одного цикла ожидания для первого доступа при передаче блока.
Арбитраж без заданного по умолчанию ведущего устройства может ис-
пользоваться для ведущих устройств, которые выполняют блочный доступ.
Циклический арбитраж, при котором последнее обратившееся к ве-
домому ведущее устройство является заданным по умолчанию ведущим
устройством, — дополнительный алгоритм, используемый шиной матрич-
ных арбитров. Он позволяет шинной матрице сэкономить один цикл ожи-
дания для ведущего устройства, которое обратилось к ведомому послед-
ним. В конце текущей передачи, если отсутствует какой-либо запрос от
ведущего устройства, ведомое устройство остается связанным с тем веду-
щим устройством, которое выполнило последний доступ. При обращении
к этому ведомому других ведущих устройств потребуется один дополни-
тельный цикл ожидания.
Этот алгоритм может использоваться для тех ведущих устройств, кото-
рые чаще выполняют сеансы единичного доступа.
Циклический арбитраж с фиксированным заданным по умолчанию ве-
дущим устройством — другой дополнительный алгоритм, используемый
шиной матричных арбитров. Он позволяет шинным матричным арбитрам
экономить один цикл ожидания для ведомого устройства с фиксирован-
ным заданным для него по умолчанию ведущим устройством. В конце
текущего сеанса доступа ведомый остается связанным с фиксированным
заданным для него по умолчанию ведущим устройством. Каждый запрос
на доступ от этого ведущего не будет требовать ни одного цикла ожидания.
При обращении к этому ведомому других ведущих устройств потребуется
один дополнительный цикл ожидания.
Этот алгоритм может использоваться для тех ведущих устройств, кото-
рые чаще выполняют сеансы единичного доступа.
15.5.3. Арбитраж с фиксированным приоритетом
Алгоритм арбитража с фиксированным приоритетом позволяет шинным
матричным арбитрам посылать запросы от различных ведущих устройств
одному И тому же ведомому устройству, используя фиксированный при-
оитет, определенный пользователем. Если два или более запроса веду-
пйХ устройств поступают одновременно, то ведущее устройство с более
старщим номером приоритета будет обслуживаться первым. Если два или
более запроса ведущих устройств с одинаковым приоритетом поступают
одновременно, то первым будет обслуживаться ведущее устройство с боль-
шим номером.
Для каждого ведомого устройства приоритет каждого ведущего устрой-
ства может быть определен с помощью регистров приоритета ведомого
устройства (PRASxx и PRBSxx).
15.6. Пользовательский интерфейс
Пользовательский интерфейс HMATRIX представлен специальными реги-
страми МК, перечисленными в табл. 15.1.
Табл. 15.1. Отображение регистров HMATRIX
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0000 Регистр конфигурирования ведущего устройства 0 MCFG0 Чтение/запись 0x00000002
0x0004 Регистр конфигурирования ведущего устройства 1 MCFG1 Чтение/запись 0x00000002
0x0008 Регистр конфигурирования ведущего устройства 2 MCFG2 Чтение/запись 0x00000002
ОхОООС Регистр конфигурирования ведущего устройства 3 MCFG3 Чтение/запись 0x00000002
0x0010 Регистр конфигурирования ведущего устройства 4 MCFG4 Чтение/запись 0x00000002
0x0014 Регистр конфигурирования ведущего устройства 5 MCFG5 Чтение/запись 0x00000002
0x0018 Регистр конфигурирования ведущего устройства 6 MCFG6 Чтение/запись 0x00000002
0х001С Регистр конфигурирования ведущего устройства 7 MCFG7 Чтение/запись 0x00000002
0x0020 Регистр конфигурирования ведущего устройства 8 MCFG8 Чтение/запись 0x00000002
0x0024 Регистр конфигурирования ведущего устройства 9 MCFG9 Чтение/запись 0x00000002
0x0028 Регистр конфигурирования ведущего устройства 10 MCFG10 Чтение/запись 0x00000002
°х002С Регистр конфигурирования ведущего устройства 11 MCFG11 Чтение/запись 0x00000002
Табл. 15.1.
(продолжение)
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0030 Регистр конфигурирования ведущего устройства 12 MCFG12 Чтение/запись 0x00000002"
0x0034 Регистр конфигурирования ведущего устройства 13 MCFG13 Чтение/запись 0x00000002
0x0038 Регистр конфигурирования ведущего устройства 14 MCFG14 Чтение/запись 0x00000002
ОхООЗС Регистр конфигурирования ведущего устройства 15 MCFG15 Чтение/запись 0x00000002
0x0040 Регистр конфигурирования ведомого устройства 0 SCFG0 Чтение/запись 0x00000010
0x0044 Регистр конфигурирования ведомого устройства 1 SCFG1 Чтение/запись 0x00000010
0x0048 Регистр конфигурирования ведомого устройства 2 SCFG2 Чтение/запись 0x00000010
0х004С Регистр конфигурирования ведомого устройства 3 SCFG3 Чтение/запись 0x00000010
0x0050 Регистр конфигурирования ведомого устройства 4 SCFG4 Чтение/запись 0x00000010
0x0054 Регистр конфигурирования ведомого устройства 5 SCFG5 Чтение/запись 0x00000010
0x0058 Регистр конфигурирования ведомого устройства 6 SCFG6 Чтение/запись 0x00000010
0х005С Регистр конфигурирования ведомого устройства 7 SCFG7 Чтение/запись 0x00000010
0x0060 Регистр конфигурирования ведомого устройства 8 SCFG8 Чтение/запись 0x00000010
0x0064 Регистр конфигурирования ведомого устройства 9 SCFG9 Чтение/запись 0x00000010
0x0068 Регистр конфигурирования ведомого устройства 10 SCFG10 Чтение/запись 0x00000010
ОхООбС Регистр конфигурирования ведомого устройства 11 SCFG11 Чтение/запись ОхООООООЮ
0x0070 Регистр конфигурирования ведомого устройства 12 SCFG12 Чтение/запись ОхООООООЮ
0x0074 Регистр конфигурирования ведомого устройства 13 SCFG13 Чтение/запись ОхООООООЮ
0x0078 Регистр конфигурирования ведомого устройства 14 SCFG14 Чтение/запись ОхООООООЮ
0х007С Регистр конфигурирования ведомого устройства 15 SCFG15 Чтение/запись 0x00000010
Табл. 15.1. (продолжение)
СмеШе" ние Регистр Имя Доступ Значение после сброса
0x0080 Регистр приоритета А ведо- мого устройства 0 PRAS0 Чтение/запись 0x00000000
0x0084 Регистр приоритета В ведомого устройства 0 PRBS0 Чтение/запись 0x00000000
0x0088» Регистр приоритета А ведомого устройства 1 PRAS1 Чтение/запись 0x00000000
0х008С Регистр приоритета В ведомого устройства 1 PRBS1 Чтение/запись 0x00000000
0x0090 Регистр приоритета А ведомого устройства 2 PRAS2 Чтение/запись 0x00000000
0x0094 Регистр приоритета В ведомого устройства 2 PRBS2 Чтение/запись 0x00000000
0x0098 Регистр приоритета А ведомого устройства 3 PRAS3 Чтение/запись 0x00000000
0х009С Регистр приоритета В ведомого устройства 3 PRBS3 Чтение/запись 0x00000000
ОхООАО Регистр приоритета А ведомого устройства 4 PRAS4 Чтение/запись 0x00000000
ОхООА4 Регистр приоритета В ведомого устройства 4 PRBS4 Чтение/запись 0x00000000
0х00А8 Регистр приоритета А ведомого устройства 5 PRAS5 Чтение/запись 0x00000000
ОхООАС Регистр приоритета В ведомого устройства 5 PRBS5 Чтение/запись 0x00000000
ОхООВО Регистр приоритета А ведомого устройства 6 PRAS6 Чтение/запись 0x00000000
ОхООВ4 Регистр приоритета В ведомого устройства 6 PRBS6 Чтение/запись 0x00000000
0х00В8 Регистр приоритета А ведомого устройства 7 PRAS7 Чтение/запись 0x00000000
ОхООВС Регистр приоритета В ведомого устройства 7 PRBS7 Чтение/запись 0x00000000
ОхООСО Регистр приоритета А ведомого устройства 8 PRAS8 Чтение/запись 0x00000000
ОхООС4 Регистр приоритета В ведомого устройства 8 PRBS8 Чтение/запись 0x00000000
°хООС8 Регистр приоритета А ведомого устройства 9 PRAS9 Чтение/запись 0x00000000
°х00СС Регистр приоритета В ведомого устройства 9 PRBS9 Чтение/запись 0x00000000
Табл. 15.1. (продолжение)
Смеще- ние Регистр Имя Доступ Значение^ после сброса
OxOODO Регистр приоритета A ведомого устройства 10 PRAS10 Чтение/запись 0x00000000^
0x00D4 Регистр приоритета В ведомого устройства 10 PRBS10 Чтение/запись 0x00000000
0x00D8 Регистр приоритета А ведомого устройства 11 PRAS11 Чтение/запись 0x00000000
OxOODC Регистр приоритета В ведомого устройства 11 PRBS11 Чтение/запись 0x00000000
OxOOEO Регистр приоритета А ведомого устройства 12 PRAS12 Чтение/запись 0x00000000
0x00E4 Регистр приоритета В ведомого устройства 12 PRBS12 Чтение/запись 0x00000000
0x00E8 Регистр приоритета А ведомого устройства 13 PRAS13 Чтение/запись 0x00000000
OxOOEC Регистр приоритета В ведомого устройства 13 PRBS13 Чтение/запись 0x00000000
OxOOFO Регистр приоритета А ведомого устройства 14 PRAS14 Чтение/запись 0x00000000
OxOOF4 Регистр приоритета В ведомого устройства 14 PRBS14 Чтение/запись 0x00000000
0x00F8 Регистр приоритета А ведомого устройства 15 PRAS15 Чтение/запись 0x00000000
OxOOFC Регистр приоритета В ведомого устройства 15 PRBS15 Чтение/запись 0x00000000
OxOlOO Главный регистр управления переотображением MRCR Чтение/запись 0x00000000
0x0104— OxOlOC Зарезервированы - - -
0x0110 Регистр специальных функций 0 SFR0 Чтение/запись -
0x0114 Регистр специальных функций 1 SFR1 Чтение/запись -
0x0118 Регистр специальных функций 2 SFR2 Чтение/запись -
0x011C Регистр специальных функций 3 SFR3 Чтение/запись -
0x0120 Регистр специальных функций 4 SFR4 Чтение/запись -
0x0124 Регистр специальных функций 5 SFR5 Чтение/запись -
Табл. 15.1. (окончание)
"смеШ6" ние Регистр Имя Доступ Значение после сброса
"охО1^8 Регистр специальных функций 6 SFR6 Чтение/запись -
0x012С Регистр специальных функций 7 SFR7 Чтение/запись -
0x0130 Регистр специальных функций 8 SFR8 Чтение/запись -
0x0134 Регистр специальных функций 9 SFR9 Чтение/запись -
0x0138 Регистр специальных функций 10 SFR10 Чтение/запись -
ОхО13С Регистр специальных функций 11 SFR11 Чтение/запись -
0x0140 Регистр специальных функций 12 SFR12 Чтение/запись -
0x0144 Регистр специальных функций 13 SFR13 Чтение/запись -
0x0148 Регистр специальных функций 14 SFR14 Чтение/запись -
0х014С Регистр специальных функций 15 SFR15 Чтение/запись -
0x0150— 0x01F8 Зарезервированы - - -
15.6.1. Регистры конфигурирования ведущего устройства
MCFGO—MCFG15
Битовая структура каждого из этих регистров показана в табл. 15.2.
Табл. 15.2. Битовая структура каждого из регистров конфигурирования ве-
дущего устройства MCFGO—MCFG15
31 30 29 28 27 26 25 24
- - - - - - - -
__23 22 21 20 19 18 17 16
- - - - - - -
14 13 12 11 10 9 8
- - - - - - - -
Табл. 15.2.
(окончание)
7 6 5 4 3 2 1 0
- - - - - ULBT
• ULBT: тип блока неопределенной длительности.
0: предсказание конца блока не производится, поэтому блоки INCR
передаваемые от этого ведущего устройства не будут прерываться.
1: блок неопределенный длины обрабатывается как последовательность
отдельных сеансов доступа, позволяя производить повторный арбитраж
для каждого блока INCR.
2: блок неопределенный длины разбивается на четыре части, позволяя
производить повторный арбитраж в конце каждой части.
3: блок неопределенный длины разбивается на восемь частей, позволяя
производить повторный арбитраж в конце каждой части.
4: блок неопределенный длины разбивается на шестнадцать частей, по-
зволяя производить повторный арбитраж в конце каждой части.
15.6.2. Регистры конфигурирования ведомого устройства
SCFG0-SCFG15
Битовая структура каждого из этих регистров показана в табл. 15.3.
Табл. 15.3. Битовая структура каждого из регистров конфигурирования ве-
домого устройства SCFGO—SCFG15
31 30 29 28 27 26 25 24
- - - - - - - ARBT
23 22 21 20 19 18 17 16
- - FIXED_DEFMSTR DEFMSTR_TYPE
15 14 13 12 11 10 9 8 __
- - - - - - - -
7 6 5 4 3 2 1 0
SLOT CYCLE __
* SLOT CYCLE: максимальное количество циклов, разрешенных для блока.
Когда количество циклов в длящемся блоке достигает значения предела,
содержащегося в поле SLOT_CYCLE, блок может быть прерван другим ве-
дущим устройством, пытающимся обратиться к этому ведомому устройству.
Этот предел задается, чтобы избежать блокировки очень «медленного» ведо-
мого устройства, если используются очень длинные блоки. Этот предел не
должен быть очень маленьким. Необоснованно маленькие значения предела
иводят к прерыванию каждого блока и в результате передача данных через
11 инную матрицу вообще не будет производиться. Разумное, рекомендуемое
111 оизводителем значение SLOT_CYCLE составляет 16 циклов.
. dEFMSTR_TYPE: заданный по умолчанию тип ведущего устройства.
0: отсутствие заданного по умолчанию ведущего устройства. В конце
екушего сеанса доступа к ведомому устройству, если не поступил запрос
и от какого ведущего устройства, ведомое устройство отключается от всех
ведущих. Это приводит к возникновении одного цикла ожидания для пер-
вого доступа при передаче блока или для единичного доступа.
1: последнее обратившееся к этому ведомому ведущее устройство явля-
ется заданным по умолчанию ведущим. В конце текущего сеанса доступа
к ведомому, если не поступил запрос ни от какого ведущего устройства,
ведомое устройство остается связанным с последним обратившимся к нему
ведущим устройством. Это позволяет экономить один цикл ожидания, ког-
да это ведущее устройство пытается обращаться к этому ведомому вновь.
2: фиксированное заданное по умолчанию ведущее устройство. В конце
текущего сеанса доступа к ведомому, если не поступил запрос ни от какого
ведущего устройства, ведомое устройство остается связанным с ведущим
устройством, номер которого записан в битовом поле FIXED_DEFMSTR.
Это позволяет экономить один цикл ожидания, когда фиксированное ве-
дущее устройство пытается обращаться к этому ведомому вновь.
• FIXEDDEFMSTR: фиксированное заданное по умолчанию ведущее
устройство.
Это поле содержит номер заданного по умолчанию ведущего устройства
для данного ведомого. Значение поля FIXED_DEFMSTR используется си-
стемой только в том случае, если значение поля DEFMSTR_TYPE равно 2.
* ARBT: тип арбитража.
0: циклический арбитраж.
1: арбитраж с фиксированным приоритетом.
15.6.3 . Регистры приоритета А ведомого устройства PRAS0—
PRAS15
Битовая структура каждого из этих регистров показана в табл. 15.4.
Табл. 15.4. Битовая структура каждого из регистров приоритета А ведомого
устройства PRASO—PRAS15
31 30 29 28 27 26 25 24
M7PR M6PR
__23 22 21 20 19 18 17 16
M5PR M4PR
15 14 13 12 11 10 9 8
M3PR M2PR
Табл. 15.4.
(окончание)
7 6 5 4 3 2 1 0
M1PR M0PR
• MxPR: приоритет ведущего устройства х.
Заданный приоритет для ведущего устройства х при его обращении
к выбранному ведомому устройству. Чем больше значение в этом поле, тем
выше приоритет.
15.6.4 . Регистры приоритета В ведомого устройства PRBS0—
PRBS15
Битовая структура каждого из этих регистров показана в табл. 15.5.
Табл. 15.5. Битовая структура каждого из регистров приоритета В ведомого
устройства PRBSO—PRBS15
31 30 29 28 27 26 25 24
M15PR M14PR
23 22 21 20 19 18 17 16
M13PR M12PR
15 14 13 12 11 10 9 8
M11PR M10PR
7 6 5 4 3 2 1 0
M9PR M8PR
• MxPR: приоритет ведущего устройства х.
Заданный приоритет для ведущего устройства х при его обращении
к выбранному ведомому устройству. Чем больше значение в этом поле, тем
выше приоритет.
15.6.5 . Главный регистр управления переотображением MRCR
Битовая структура этого регистра показана в табл. 15.6.
Табл. 15.6. Битовая структура главного регистра управления переотображе-
нием MRCR
31 30 29 28 27 26 25 24
- - - - - - - -
Табл. 15.6.
(окончание)
22 21 20 19 18 17 16
- - - - - - -
IT 14 13 12 11 10 9 8
"rcbis RCB14 RCB13 RCB12 RCB11 RCB10 RCB9 RCB8
Г 6 5 4 3 2 1 0
"RCB7 RCB6 RCB5 RCB4 RCB3 RCB2 RCB1 RCB0
• RCBxx: бит команды переотображения для ведущего устройства х.
0: отключить переотображение при декодировании адреса для выбран-
ного ведущего устройства.
1: включить переотображение при декодировании адреса для выбран-
ного ведущего устройства.
15.6.6. Регистры специальных функций SFRO—SFR15
Битовая структура каждого из этих регистров показана в табл. 15.7.
Табл. 15.7. Битовая структура каждого из регистров специальных функций
SFR0-SFR15
31 30 29 28 27 26 25 24
SFR
23 22 21 20 19 18 17 16
SFR
15 14 13 12 11 10 9 8
SFR
7 Г 6 1 1 5 1 4 1 з 1 2 1 0
- SFR
• SFR: поля регистра специальных функций.
Описание этих битовых полей приведено в главах, посвященных описа-
нйю соответствующих периферийных устройств.
ГЛАВА 16
ИНТЕРФЕЙС
ВНЕШНЕЙ ШИНЫ (EBI)
16.1. Основные особенности и общее описание
Встроенный интерфейс внешней шины (EBI) входит только в состав МК
AT32UC3A0x. Модуль EBI имеет следующие основные особенности.
• Оптимизирован для поддержки пространства пользовательской памяти.
• Интегрирует два контроллера внешней памяти:
- контроллер статической памяти (SMC),
- контроллер SDRAM.
• Имеет оптимизированную внешнюю шину в следующем составе:
- 16-разрядную шину данных,
- 24-разрядную шину адресов, позволяющую адресовать до 16 М,
- оптимально мультиплексированные выводы, что позволяет умень-
шить ожидание для внешних блоков памяти.
• Обеспечивает возможность выбора до четырех микросхем внешней
памяти SRAM и одной микросхемы внешней памяти SDRAM:
- контроллер статической памяти, управляющий выводом NCS0,
- контроллер статической памяти или контроллер SDRAM, управ-
ляющий выводом NCS1,
- контроллер статической памяти, управляющий выводом NCS2,
- контроллер статической памяти, управляющий выводом NCS3.
Интерфейс внешней шины (EBI) предназначен для обеспечения обмена
данными между МК AT32UC3A и несколькими внешними устройствами.
Контроллеры статической памяти и SDRAM реализованы в EBI как кон-
троллеры внешней памяти. Эти контроллеры могут обслуживать несколь-
ко типов периферийных устройств и устройств внешней памяти: SRAM,
PROM, EPROM, EEPROM и SDRAM.
EBI обеспечивает обмен данными между МК и внешними устройства-
ми количеством до пяти, причем каждому из них может быть назначе-
на область адресов, задаваемая встроенным контроллером памяти МК-
Обмен данными выполняется через 16-разрядную шину данных, 24-раз-
рядную адресную шину, линии выбора микросхем (в количестве четы-
рех — NCS[3:0]) и несколько линий управления, которые могут мульти-
плексироваться между двумя контроллерами внешней памяти.
Блок-схема интерфейса внешней шины показана на рис. 16.1. Описание
линий ввода-вывода, относящихся к EBI и контроллерам внешней памяти,
приводится в табл. 16.1.
Рис. 16.1. Блок-схема интерфейса внешней шины EBI
Табл. 16.1. Описание линий ввода-вывода, относящихся к EBI и контролле-
рам внешней памяти
Имя Функция Тип Активный уровень
EBI
D0-D15 Шина данных Входы/выходы
А0-А23 Шина адресов Выходы
NWAIT Внешний сигнал ожидания Вход Низкий
Контроллер SMC
NCS0-NCS3 Линии выбора микросхемы Выходы Низкий
NWR0-NWR3 Сигналы записи Выходы Низки
NOE Разрешение выхода Выход Низкий
NRD Сигнал чтения Выход Низкий
NWE Разрешение записи Выход Низкий
NBS0—NBS3 Сигналы байтовой маски Выходы Низкий
Табл. 16.1. (окончание)
Имя Функция Тип Активный* уровень
Контроллер SDRAM —
SDCK Синхросигнал SDRAM Выход
SDCKE Разрешение синхросигнала SDRAM Выход Высокий
ВА0-ВА1 Выбор банка Выходы
SDWE Разрешение записи SDRAM Выход Низкий
RAS-CAS Сигналы строк и столбцов Выходы Низкий
NWR0-NWR3 Сигналы записи Выходы Низкий
NBS0-NBS3 Сигналы байтовой маски Выходы Низкий
SDA10 Линия 10 адреса SDRAM Выход
Сигналы одного из контроллеров внешней памяти, который в данный
момент используется в приложении, подключаются к выводам EBI через
логику мультиплексирования. Соответствия между выводами EBI и сигна-
лами контроллеров внешней памяти показано в табл. 16.2.
Табл. 16.2. Соответствие между выводами EBI и сигналами контроллеров
памяти
Выводы EBI Линии ввода/вывода контроллера SDRAM Линии ввода/вывода контроллера SMC
NWR1/NBS1 NBS1 NWR1/NUB
A0/NBS0 Не под держивается SMC_A0/NLB
A1/NBS2/NWR2 Не поддерживается SMC_A1
А[11:2] SDRAMC_A[9:0] SMC_A[11:2]
SDA10 SDRAMC_A10 Не под держивается
А12 Не поддерживается SMC_A12
А[14:13] SDRAMC_A[12:11] SMC_A[14:13]
А[22:15] Не поддерживается SMC_A[22:15]
А[23] Не поддерживается SMC_A[23]
D[15:0] D[15:0] D[15:0]
16.2. Подключение внешней памяти
В этом разделе описываются способы подключения к EBI устройств внеш-
ней памяти различных типов.
В табл. 16.3. перечислены необходимые соединения для организаций
подключений к контроллеру внешней памяти EBI устройств статической
внешней памяти.
Табл. 16.3. Соединения для организации подключения к EBI устройств ста-
тической внешней памяти
'сигналы__ Выводы интерфейса внешнего устройства
Статическое 8-раз- Статическое устрой- Статическое
рядное устройство ство памяти разряд- 16-разрядное
памяти ностью 2x8 разрядов устройство памяти
Контроллер SMC
D7 D0-D7 D0-D7 D0-D7
D8-D15 - D8-D15 D8-D15
ao/nbso АО - NLB
A1/NWR2/NBS2 А1 АО АО
А2-А22 А[2:22] А[1:21] А[1:21]
А23 А[23] А[22] А[22]
NCSO CS CS CS
NCS1/SDCS0 CS CS CS
NCS2 CS CS CS
NCS3 CS CS CS
NRD/NOE ОЕ ОЕ ОЕ
NWRO/NEW WE WE1 WE
NWR1/NBS1 - WE1 NUB
NWR3/NBS3 - - -
1 Сигнал NWR1 разрешает запись в старший байт. Сигнал NWR0 разрешает
запись в младший байт.
Примечания:
1- Сигнал NWRx разрешает запись в соответствующий байт х (х = О,
1, 2 или 3).
2. Сигналы NBS0 и NBS1 разрешают соответственно младший и стар-
ший байты младшего 16-разрядного слова.
3- Сигналы NBS2 и NBS3 разрешают соответственно младший и стар-
ший байты старшего 16-разрядного слова.
В табл. 16.4. приведены необходимые соединения для организации под-
ключений к контроллеру внешней памяти EBI устройств внешней памяти
ORAM (динамической).
Табл. 16.4. Соединения для организации подключения к EBI устройств
внешней памяти SDRAM
Сигналы
Контроллер
Выводы интерфейса внешнего устройства
_______________SDRAM_________________
SDRAMC
D0-D15
DO—D15
Табл. 16.4. (окончание)
Сигналы Выводы интерфейса внешнего устройства SDRAM
Контроллер SDRAMC "
A0/NBS0 A1/NWR2/NBS2 А2-А10 АП SDA10 А12 А13-А14 А15 А16/ВА0 А17/ВА1 А18-А23 NCS0 NCS1/SDCS0 NCS2 NCS3 NRD/NOE NWR0/NWE NWR1/NBS1 NWR3/NBS3 SDCK SDCKE RAS CAS SDWE NWAIT DQMO " DQM2 А[0:8] А9 А10 A[ll:12] BAG BAI CS[0] DQM1 DQM3 CLK CKE RAS CAS WE
Пример подключения внешних устройств памяти к EBI иллюстрирует-
ся схемой на рис. 16.2.
16.3. Функциональное описание
Модуль EBI состоит из следующих элементов:
• контроллер статической памяти (SMC),
• контроллер SDRAM (SDRAMC),
• узел выбора микросхемы внешнего устройства памяти с возможно-
стью назначения для нее адресного пространства HSB,
Рис. 16.2. Пример подключения внешних устройств памяти к EBI
’ логика мультиплексирования, которая обеспечивает совместное ис-
пользование одних и тех же выводов обоими контроллерами памяти.
Линии ввода-вывода, обслуживающие интерфейс внешней шины, мо-
гУт мультиплексироваться с линиями GPIO МК. Чтобы задать линиям об-
служивания EBI их периферийную функцию, необходимо предварительно
сконфигурировать контроллер GPIO. Если линии обслуживания EBI не
Пользуются приложением, то они могут использоваться для других целей
контроллером GPIO.
Тактовый сигнал для EBI HSB, а также для SDRAMC, SMC и ЕСС РВ
Иерируется менеджером питания. Перед использованием EBI необходимо
Рограммно включить этот синхросигнал в менеджере питания.
р Чтобы предотвращать возникновение ошибок на шине, все операции
fc"! должны быть завершены перед переходом МК в «спящий» режим.
К интерфейсу EBI подключена линия прерывания, связанная с коц.
троллером прерывания. Обработка прерывания от EBI требует предвари'
тельного конфигурирования контроллера прерывания перед конфигуриро,
ванием EBI.
Модуль EBI организует обмен данными между внутренней шиной HSB
(обслуживаемой шинной матрицей) и внешними блоками памяти или пе-
риферийными устройствами. Модуль EBI управляет сигналами на внеш,
них шинах адресов, данных и управления.
Специальный регистр HMATRIX_SFR (SFRx) в пользовательском
интерфейсе шинной матрицы обеспечивает управление подтянутыми
к «плюсу» питания встроенными резисторами на линиях шины данных
не мультиплексированных с линиями контроллера GPIO. По умолчанию
после сброса эти резисторы включены. Установка бита EBI_DBPUC ре-
гистра HMATRIX SFR отключает их. Включение подтянутых к «плюсу»
питания встроенных резисторов на линиях, мультиплексированных с ли-
ниями контроллера GPIO, может быть выполнено путем программирова-
ния контроллера GPIO.
Для получения более подробной информации о контроллере статиче-
ской памяти SMC и контроллере SDRAM рекомендуется обратиться к со-
ответствующим разделам этой книги.
ГЛАВА 17
ПЕРИФЕРИЙНЫЙ КОНТРОЛЛЕР
DMA (PDCA)
17.1. Основные особенности и функциональное
описание
Входящий в состав всех МК семейства AT32UC3 периферийный кон-
троллер прямого доступа к памяти (PDCA) имеет следующие основные
особенности:
• организует передачи данных во встроенные периферийные устрой-
ства и из них без участия ЦПУ (например, USART, SSC и SPI);
• имеет два указателя/счетчика адресов на канал, что позволяет реа-
лизовать двойную буферизацию.
Модуль PDCA обеспечивает перемещение данных между встроенны-
ми периферийными модулями (USART, SPI, SSC) и встроенной/внешней
памятью МК. Использование PDCA позволяет не задействовать ЦПУ для
передач данных, тем самым повышая фактическую производительность
МК в приложении.
Модуль PDCA состоит из некоторого множества каналов прямого до-
ступа к памяти (каналов DMA). Каждый канал имеет следующие осо-
бенности:
• 32-разрядный указатель памяти,
• 16-разрядный счетчик передачи,
• перезагружаемое значение 32-разрядного указателя памяти,
• перезагружаемое значение 16-разрядного счетчика передачи.
Блок-схема, иллюстрирующая взаимодействие модуля PDCA с другими
Узлами и модулями МК, показана на рис. 17.1.
Модуль PDCA связан с периферийными модулями с помощью множе-
ства интерфейсов установления связи. Периферийное устройство с помо-
щью запроса сообщает PDCA о готовности принимать или передать дан-
нЫе. PDCA подтверждает этот запрос, когда начинается передача.
Количество интерфейсов установления связи может превышать коли-
чество каналов DMA. В этом случае канал DMA должен быть сконфигу-
рирован для использования наиболее предпочтительного интерфейса из
нескольких ВОЗМОЖНЫХ.
Когда буфер передачи PDCA оказывается пустым или буфер приема PDCA
Называется полным, PDCA может сгенерировать запрос прерывания.
Каждый канал PDCA имеет набор регистров конфигурации. Важ-
нейшие из них: регистр адреса памяти (MAR), регистр выбора перифе-
Рис. 17.1. Блок-схема взаимодействия модуля PDCA с другими модулями
МК
рии (PSR) и регистр счетчика передачи (TCR). Перед осуществлением
передачи данных в 32-разрядный регистр адреса памяти должен быть
программно записан начальный адрес буфера памяти, куда планируется
передача. Регистр будет автоматически модифицироваться после каждой
передачи значением адреса, следующим за последним адресом использо-
ванного при передаче буфера памяти. Таким образом, этот регистр всегда
содержит начальный адрес памяти для следующей передачи. Содержи-
мое регистра будет увеличиваться на значение, кратное 1, 2 или 4, в за-
висимости от размера элемента передаваемых данных (байт, полуслово
или слово).
Размер элемента передаваемых данных может быть задан индивидуаль-
но для каждого канала (байт — 8 битов, полуслово — 16 битов, слово —
32 бита) с помощью битового поля SIZE в регистре режима PDCA (MR)-
В регистр выбора периферии (PSR) должно быть записано значение,
соответствующее требуемому интерфейсу периферийного устройства/уста-
новления связи.
С помощью PSR задается направление передачи (из памяти в перифе-
рийное устройство или из периферийного устройства в памяти) и адрес
буферного регистра периферийного устройства.
Регистр счетчика передачи задает количество элементов данных, кото-
рое будут передано. Счетчик будет автоматически декрементироваться при
передаче каждого элемента данных.
Регистр адреса памяти и регистр счетчика передачи могут читаться
программой в любое время, что дает возможность контролировать ход про-
цесса передачи.
Каждый канал PDCA имеет также регистр перезагрузки адреса памяти
,aRR) и регистр перезагрузки счетчика передачи (TCRR). Когда значе-
регистра счетчика передачи TCR становится нулевым, содержимое ре-
Н11® перезагрузки автоматически загружается в регистры MAR и TCR.
^ромошью этого механизма PDCA может осуществлять операции с двумя
й Лерами для каждого канала. Когда передача в одном буфере завершает-
регистры MAR и TCR перезагружаются содержимым MARR и TCRR
^ответственно. Логика перезагрузки включена всегда и срабатывает, если
содержимое TCR становится нулевым, в то время как TCRR содержит не-
нулевое значение.
Каждый канал DMA может быть разрешен путем записи 1 в бит TEN
регистра управления PDCA (CR) и запрещен путем записи 1 в бит TDIS
этого регистра. Текущее состояние канала может быть прочитано в реги-
стре состояния (SR).
Прерывания от PDCA можно разрешить путем записи в регистр раз-
решения прерываний от PDCA (IER) и запретить путем записи в регистр
запрещения прерываний от PDCA (IDR). Регистр маски прерываний от
PDCA (IMR) может читаться программой, чтобы определить, разреше-
но прерывание или нет. Текущее состояние источника прерывания мо-
жет читаться программой с помощью регистра состояния прерываний от
PDCA (ISR).
В модуле PDCA имеется три источника прерывания:
• нуль счетчика перезагрузки — регистр перезагрузки счетчика пере-
дачи содержит нулевое значение,
• завершение передачи — регистр счетчика передачи и регистр пере-
загрузки счетчика передачи содержат нулевые значения,
• ошибка передачи — ошибка, произошедшая при доступе к памяти.
Если сразу несколько каналов PDCA одновременно запрашивают пере-
дачу, то их обслуживание осуществляется согласно их приоритетам, кото-
рым соответствуют номера этих каналов. Каналы с меньшими номерами
имеют приоритет над каналами с большими номерами, т. е. канал 0 имеет
самый высокий приоритет.
Если заданный в регистре адреса памяти адрес указывает на несуще-
ствующее местоположение в памяти, то когда PDCA попытается выпол-
нить передачу, произойдет ошибка. В этом случае автоматически устано-
вится флаг ошибки передачи (TERR) в регистре состояния прерываний
и работа канала DMA, который вызвал ошибку, будет остановлена. Чтобы
перезапустить канал, пользователь должен записать в регистр адреса па-
мяти корректный адрес, а затем установить бит сброса ошибки (ECLR)
Регистра управления PDCA. Прерывание от ошибки передачи будет сгене-
рировано, если установлен бит TERR в регистре разрешения прерываний
От PDCA (IER).
17.2. Пользовательский интерфейс
^Дрта адресного пространства памяти, отведенного для специальных реги-
стров модуля PDCA, приведена в табл. 17.1.
Табл. 17.1. Карта адресного пространства памяти модуля PDCA
Адресный интервал
0x0000—OxOO3F
0x0040—0x007F
0x0080—OxOOBF
OxOOCO-OxOOFF
0x0100—OxO13F
Содержимое
Регистры конфигурирования канала 0 DMA
Регистры конфигурирования канала 1 DMA
Регистры конфигурирования канала 2 DMA
Регистры конфигурирования канала 3 DMA
Регистры конфигурирования канала 4 DMA
Регистры конфигурирования канала (п-1) DMA
Пользовательский интерфейс каждого канала DMA модуля
PDCA представлен специальными регистрами МК, перечисленными
в табл. 17.2.
Табл. 17.2. Отображение регистров одного канала DMA модуля PDCA
Сме- щение Регистр Имя Доступ Значение после сброса
0x00 Регистр адреса памяти MAR Чтение/запись 0x00000000
0x04 Регистр выбора периферии PSR Чтение/запись -
0x08 Регистр счетчика передачи TCR Чтение/запись 0x00000000
ОхОС Регистр перезагрузки адреса памяти MARR Чтение/запись 0x00000000
0x10 Регистр перезагрузки счетчика передачи TCRR Чтение/запись 0x00000000
0x14 Регистр управления PDCA CR Только запись -
0x18 Регистр режима PDCA MR Чтение/запись 0x00000000
0х1С Регистр статуса PDCA SR Только чтение 0x00000000
0x20 Регистр разрешения прерываний от PDCA IER Только запись -
0x24 Регистр запрещения прерываний от PDCA IDR Только запись -
0x28 Регистр маски прерываний от PDCA IMR Только чтение 0x00000000
0х2С Регистр статуса прерываний от PDCA ISR Только чтение 0x00000000
17.2.1. Регистр адреса памяти MAR
Битовая структура этого регистра показана в табл. 17.3.
Табл. 17.3. Битовая структура регистра адреса памяти MAR
^зГ _ 30 29 28 | 27 1 26 I L 24
MADDR
^223__J 22 21 20 1 19 1 1 18 1 L_17_J L is
MADDR
i£_J 1 И 1 13 1 1 I2 1 Н 1 1» 1 ’ 1 8
MADDR
' 7 6 S 4 1 3 2 1 1 2
MADDR
* MADDR: адрес памяти.
В поле MADDR при конфигурировании модуля PDCA должно быть за-
писано значение начального адреса буфера памяти. В ходе передачи содер-
жимое поля MADDR будет указывать на следующее подлежащую записи/
чтению область памяти.
17.2.2. Регистр выбора периферии PSR
Битовая структура этого регистра показана в табл. 17.4.
Табл. 17.4. Битовая структура регистра выбора периферии PSR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
^2 6 5 4 3 2 1 0
PID
PID: периферийный идентификатор.
Выбором периферийного идентификатора пользователь указывает мо-
дулю PDCA, какое периферийное устройство должно быть связано с ка-
налом DMA. Значение, записываемое в поле PID, выбирает используемый
интерфейс установления связи, направление передачи, а также адрес ре
гистра временного хранения данных приема/передачи соответствующе'
периферийного устройства.
Значения периферийных идентификаторов для различных периф^
рийных модулей МК приведены в разделе «Периферийные устройства»
(табл. 8.9, табл. 8.10). Разрядность периферийного идентификатора зависит
от количества периферийных модулей в составе МК.
17.2.3. Регистр счетчика передачи TCR
Битовая структура этого регистра показана в табл. 17.5.
Табл. 17.5. Битовая структура регистра счетчика передачи TCR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
TCV
6 5 4 3 2 1
TCV
* TCV: значение счетчика передачи.
В это поле записывается значение, равное количеству элементов дан-
ных, которое будет передано модулем PDCA. Это количество равно общему
количеству передач, которое будет сделано PDCA. В ходе передачи текущее
значение поля TCV всегда остается равным количеству передач, которое
остается произвести.
17.2.4. Регистр перезагрузки адреса памяти MARR
Битовая структура этого регистра показана в табл. 17.6.
Табл. 17.6. Битовая структура регистра перезагрузки адреса памяти М ARR
31 30 29 28 27 26 25 24_,
MARV
23 22 21 20 19 18 17 16^
MARV
Табл. 17.6. (окончание)
<Г1 14 _ 13 12 1 11 1 ° 1 9 J'
MARV
1 6 1 ' 1 4 | 3 | 2 1 1 0
MARV
* MARV: значение перезагрузки адреса памяти.
Значение, записанное в это поле, будет автоматически загружено в ре-
гистр адреса памяти (MAR), когда содержимое регистра TCR достигнет
нуля, если TCRR имеет ненулевое значение.
17.2.5. Регистр перезагрузки счетчика передачи TCRR
Битовая структура этого регистра показана в табл. 17.7.
Табл. 17.7. Битовая структура регистра перезагрузки счетчика передачи
TCRR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
TCRV
6 5 4 3 2 1
TCRV
TCRV: значение перезагрузки счетчика передачи.
В это поле записывается значение перезагрузки для регистра счетчика
Передачи (TCR). Когда содержимое TCR достигает нуля, содержимое поля
CRV будет автоматически переписано в регистр TCR, если поле TCRV
Меет положительное значение. Если поле TCRV является нулевым, то
ольще передач в канале выполнено не будет. Когда регистр TCR переза-
РУЖается, регистр TCRR автоматически сбрасывается.
17.2.6. Регистр управления PDCA CR
Итовая структура этого регистра показана в табл. 17.8.
Табл. 17.8. Битовая структура регистра управления PDCA CR
31 30 29 28 27 26 25 24~^
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 и 10 9 8
- - - - - - - ECLR~~~
7 6 5 4 3 2 1 0
- - - - - - TDIS TEN~~
• ECLR: сброс ошибки.
О = никакого эффекта.
1 = сброс ошибки передачи, которая индицируется установкой фла-
га ошибки передачи TERR в регистре состояния прерываний от PDCA
(ISR). Сброс ошибки передачи (флага ошибки передачи) позволит пере-
давать данные по каналу. Предварительно должен быть задан корректный
адрес памяти.
* TEN: разрешение передачи.
О = никакого эффекта.
1 = разрешить передачу для канала DMA.
* TDIS: запрещение передачи.
О = никакого эффекта.
1 = запретить передачу для канала DMA.
17.2.7. Регистр режима PDCA MR
Битовая структура этого регистра показана в табл. 17.9.
Табл. 17.9. Битовая структура регистра режима PDCA MR
31 30 29 28 27 26 25 24 _
- - - - - - - -
23 22 21 20 19 18 17 16 _
- - - - - - -
15 14 13 12 11 10 9 8 _
- - - - - - -
Табл. 17.9.
(окончание)
. SIZE: размер передачи.
Возможные значения этого битового поля показаны в табл. 17.10.
Табл. 17.10. Возможные значения битового поля SIZE
SIZE Размер передачи
0 0 Байт
0 1 Полуслово
1 0 Слово
1 1 Зарезервировано
17.2.8. Регистр статуса PDCA SR
Битовая структура этого регистра показана в табл. 17.11.
Табл. 17.11. Битовая структура регистра статуса PDCA SR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
_ 15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
— - - - - - - TEN
' TEN: состояние разрешенности передачи.
0 = передача запрещена для канала DMA.
1 = передача разрешена для канала DMA.
17.2.9. Регистры разрешения/запрещения/маски/статуса
прерываний от PDCA IER/IDR/IMR/ISR
Битовая структура каждого из этих регистров показана в табл. 17.12.
Табл. 17.12. Битовая структура каждого из регистров разрешения/запрещ^
ния/маски/статуса прерываний от PDCA IER/IDR/IMR/ISR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 ~1б~222
- - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - TERR TRC RCZ^
Регистр разрешения прерываний от PDCA IER:
* TERR: ошибка передачи.
О = никакого эффекта.
1 = разрешить прерывание при ошибке передачи.
* TRC: завершение передачи.
О = никакого эффекта.
1 = разрешить прерывание по завершению передачи.
* RCZ: нуль счетчика перезагрузки.
О = никакого эффекта.
1 = разрешить прерывание при нуле счетчика перезагрузки.
Регистр запрещения прерываний от PDCA IDR:
• TERR: ошибка передачи.
О = никакого эффекта.
1 = запретить прерывание при ошибке передачи.
♦ TRC: завершение передачи.
О = никакого эффекта.
1 = запретить прерывание по завершению передачи.
• RCZ: нуль счетчика перезагрузки.
О = никакого эффекта.
1 = запретить прерывание при нуле счетчика перезагрузки.
Регистр маски прерываний от PDCA IMR:
* TERR: ошибка передачи.
О = прерывание при ошибке передачи запрещено.
1 = прерывание при ошибке передачи разрешено.
* TRC: завершение передачи.
О = прерывание по завершению передачи запрещено.
1 = прерывание по завершению передачи разрешено.
• RCZ: нуль счетчика перезагрузки.
О = прерывание при нуле счетчика перезагрузки запрещено.
1 = прерывание при нуле счетчика перезагрузки разрешено.
регистр статуса прерываний от PDCA ISR:
. TERR: ошибка передачи.
О = никакие ошибки передачи не произошли.
। = ошибка передачи произошла.
. TRC: завершение передачи.
О = регистр счетчика передачи (TCR) и/или регистр перезагрузки счет-
чика передачи (TCRR) содержит ненулевое значение.
1 = регистр счетчика передачи (TCR), и регистр перезагрузки счетчика
передачи (TCRR) содержат нулевые значения.
• RCZ: нуль счетчика перезагрузки.
О = регистр перезагрузки счетчика передачи (TCRR) содержит ненуле-
вое значение.
1 = регистр перезагрузки счетчика передачи (TCRR) содержит нулевое
значение.
ГЛАВА 18
КОНТРОЛЛЕР ВВОДА-ВЫВОДА
ОБЩЕГО НАЗНАЧЕНИЯ (GPIO)
18.1. Основные особенности
Каждая линия ввода-вывода общего назначения МК семейства AT32UC3,
обслуживаемая контроллером ввода-вывода общего назначения (GPIO),
имеет следующие основные особенности:
• возможность генерации прерывания по положительному или отри-
цательному перепаду внешнего сигнала;
• встроенный фильтр выбросов и помех, обеспечивающий подавле-
ние импульсов внешнего сигнала, которые по длительности короче
одного тактового цикла;
• режим Open Drain, допускающий совместное использование ли-
ний ввода-вывода со стороны как МК, так и внешних компо-
нентов;
• возможность чтения входных внешних сигналов на ножке и управ-
ление выходными сигналами ножки;
• мультиплексирование до четырех периферийных функций на одной
линии ввода-вывода;
• встроенный программируемый подтянутый к «плюсу» питания ре-
зистор.
Каждая линия ввода-вывода МК может быть сконфигурирована как
линия ввода-вывода общего назначения или же как линия обслужи-
вания некоторой периферийной функции (встроенного периферийного
устройства).
Обобщенная структурная схема взаимодействия контроллера GPIO
с другими узлами и модулями МК приведена на рис. 18.1.
Линии прерывания от GPIO связаны с контроллером прерываний. Ис-
пользование прерываний GPIO требует предварительного конфигурирова-
ния контроллера прерываний.
Синхросигнал, используемый для GPIO, генерируется менеджером
питания. Перед использованием GPIO необходимо разрешить генерацию
этого сигнала в менеджере питания. Синхросигнал должен быть также
разрешен, чтобы обращаться к регистрам конфигурации GPIO и в случае
разрешения прерываний от GPIO. После конфигурирования GPIO его син-
хросигнал может быть отключен, если прерывания от GPIO в приложений
не разрешены.
Рис. 18.1. Обобщенная структурная схема взаимодействия контроллера
GPIO с узлами и модулями МК
18.2. Функциональное описание
Логика управления GPIO каждой линией ввода-вывода показана на
рис. 18.2.
Каждая линия ввода-вывода имеет встроенный подтянутый к «плюсу»
питания резистор. Этот резистор можно программно включить или отклю-
чить с помощью соответствующего бита регистра PUER. Управление под-
тянутым к «плюсу» питания резистором возможно вне зависимости от того,
управляется ли линия ввода-вывода периферийным устройством или GPIO.
Если вывод МК мультиплексирован с одной или более периферийными
функциями, то их выбор осуществляется с помощью регистра GPER. Если
соответствующий бит в регистре установлен, то вывод управляется GPIO,
а если сброшен, то периферийной функцией. GPIO обеспечивает муль-
типлексирование до четырех периферийных функций на одном выводе.
Их выбор осуществляется с помощью регистров PMR0 и PMR1.
Когда для линии ввода-вывода назначена ее периферийная функция,
т. е. соответствующий бит регистра GPER сброшен, драйвер линии ввода-
вывода может управляться периферийным устройством. Периферийное
Устройство в зависимости от значения соответствующих битов регистров
PMR0 и PMR1 определяет, управляется ли оно в текущий момент драйве-
ром выхода линии или нет.
Когда линия ввода-вывода управляется GPIO, то содержимое регистра
~DER (регистр разрешения драйвера выхода) определяет, управляет ли
GPIO в текущий момент драйвером выхода или нет. Когда соответству-
ющий бит в этом регистре установлен, линия ввода-вывода управляется
GPIO (драйвер вывода соответствующей ножки включен), когда сброшен,
Линия не управляется GPIO (драйвер отключен). При этом уровень, уста-
навливаемый на линии ввода-вывода, может быть задан путем записи в ре-
гистр OVR (регистр значения выхода).
Разрешение выхода периферии В
Разрешение выхода периферии С
Разрешение выхода периферии D
GPIO_PMR1
GPIO_PMRO
Выходные данные периферии А
Выходные данные периферии В
Выходные данные периферии С
Выходные данные периферии D
Входные данные периферии А
Входные данные периферии В
Входные данные периферии С
Входные данные периферии D
Рис. 18.2. Логика управления GPIO каждой линией ввода-вывода
Каждая линия ввода-вывода может быть независимо сконфигурирована
для работы в режиме Open Drain. Эта особенность позволяет нескольким
драйверам быть одновременно подключенными к линии ввода-вывода и со-
вместно управлять ею. При этом все эти драйверы должны иметь активный
низкий уровень сигнала управления. Внешний подтянутый к «плюсу» пи-
тания резистор (или включенный внутренний) обеспечивает в этом режи-
ме наличие высокого уровня на линии, когда ни один из подключенных
к ней драйверов не активен.
Задание режима Open Drain обеспечивается с помощью регистра
ODMER (регистр разрешения режима Open Drain). Режим Open Drain мо-
жет быть выбран вне зависимости от того, управляется ли линия ввода-
вывода GPIO или назначена для периферийной функции.
Уровень внешнего сигнала на каждой линии ввода-вывода может быть
прочитан программой с помощью регистра PVR (регистр значения ножки)-
Этот регистр показывает уровень сигнала на линии ввода-вывода незави-
симо от того, управляется ли линия GPIO или внешним компонентом. Не-
обходимо заметить, что из-за соображений экономии энергопотребления
бит регистра PVR может быть прочитан программой только тогда, когда
для данного вывода установлен соответствующий бит регистра GPER или
когда для данного вывода разрешено прерывание.
Синхронизация линии ввода-вывода при установке и сбросе битов ре-
йстра 0VR (регистра значения выхода) иллюстрируется диаграммами,
^обряженными на рис. 18.3.
Й диалогичная синхронизация имеет место при выполнении доступа
«сброса» или «установки», т. е. записи в регистр OVRS или OVRC соответ-
ственно. На рисунке показана также синхронизация регистра PVR (реги-
стра значения ножки).
Контроллер GPIO может быть сконфигурирован, чтобы генерировать
прерывание, когда он обнаруживает заданное изменение входного внешне-
го сигнала на линии ввода-вывода. Модуль может быть сконфигурирован
для генерации прерывания всякий раз, когда значение внешнего сигнала
изменяется или когда имеют место положительный либо отрицательный
перепады этого сигнала.
Прерывание от линии ввода-вывода разрешается путем установки со-
ответствующего бита в регистре IER (регистр разрешения прерываний).
Режим прерывания устанавливается с помощью регистра IMR0 (регистр
режима прерываний 0) и IMR1 (регистр режима прерываний 1). Прерыва-
ние можно разрешить для ножки МК независимо от конфигурации линии
ввода-вывода, т. е. независимо от того, управляется ли данная линия GPIO
или назначена для периферийной функции.
В каждом порту имеются четыре линии прерывания, связанные с кон-
троллером прерываний. Все эти линии прерываний объединяются между
собой в соответствии с логической функцией OR, формируя таким обра-
зом общую линию прерывания.
Когда событие, вызывающее прерывание, обнаруживается на линии
ввода-вывода, и соответствующий бит в регистре IER установлен, генери-
руется прерывание от GPIO. Множество сигналов прерывания, объединен-
ных вместе в соответствии с логической функцией OR, генерируют един-
ственное прерывание, поступающее в контроллер прерываний.
Чтобы выяснить, какая ножка МК вызвала прерывание, програм-
ма может прочитать регистр FR (регистр флагов прерываний). Установ-
ленный флаг прерывания должен быть вручную сброшен путем записи
в регистр FR.
Необходимо подчеркнуть, что прерывания от GPIO могут быть сгене-
рированы только в том случае, если разрешено тактирование GPIO.
Рис. 18.3. Синхронизация линии ввода-вывода при установке и сбросе би-
тов регистра OVR
Синхросигнал
Рис. 18.4. Сигнальная последовательность для линии ввода-вывода при ге-
нерации прерывания от положительного перепада (или от изме-
нения уровня) внешнего сигнала при отключенном фильтре вы-
бросов
На каждой линии ввода-вывода можно программно включись дополни-
тельные входные фильтры выбросов и помех. Когда такой фильтр включен,
импульс длительностью менее одного тактового цикла подавляется, в то
время как импульс длительностью два и более тактовых цикла пропуска-
ется через фильтр. Импульсы длительностью от одного до двух тактовых
циклов могут быть как подавлены, так и пропущены в зависимости от
соотношения фаз импульса и синхросигнала. Фильтр вносит дополнитель-
ную задержку распространения сигнала, равную двум тактовым циклам.
Фильтры управляются регистром GFER (регистр включения фильтров вы-
бросов). Когда бит в регистре GFER установлен, фильтр на соответствующей
линии включен. Наличие фильтров затрагивает только входы, генерирующие
прерывания. На входы периферийных устройств или на значения, возвращае-
мые при чтении регистра PVR, наличие фильтров влияния не оказывает.
Сигнальная последовательность для линии ввода-вывода при генера-
ции прерывания от положительного перепада (или от изменения уровня)
внешнего сигнала при отключенном фильтре выбросов иллюстрируется
диаграммами, изображенными на рис. 18.4.
Необходимо заметить, что выборка уровня поступившего импульса
производится логикой МК по положительному перепаду синхросигнала.
Как можно видеть из рисунка, на время длительности первого импульса
внешнего сигнала не приходится ни одного положительного перепада син-
хросигнала, поэтому этот импульс логикой не детектируется и запрос пре-
рывания не генерируется. На время длительности второго импульса при-
ходится положительный перепад синхросигнала, что в результате вызывает
генерацию запроса прерывания.
Сигнальная последовательность для линии ввода-вывода при генера-
ции прерывания от положительного перепада (или от изменения уровня)
Рис. 18.5. Сигнальная последовательность для линии ввода-вывода при гене-
рации прерывания от положительного перепада (или от изменения
уровня) внешнего сигнала при включенном фильтре выбросов
нец1него сигнала при включенном фильтре выбросов иллюстрируется ди-
Р раммами, изображенными на рис. 18.5.
а Чтобы логика МК в этом случае детектировала импульс внешнего сиг-
ала, на время его длительности должно приходиться не менее двух поло-
жительных перепадов синхросигнала. Как можно видеть из рисунка, для
первого импульса указанное условие не выполняется, поэтому он логикой
не детектируется, в то время как второй импульс детектируется и вызывает
геНеранию запроса прерывания.
18.3. Пользовательский интерфейс
Модуль контроллера GPIO управляет всеми линиями ввода-вывода МК
AT32UC3 как 32-разрядными портами, которые конфигурируются через
интерфейс шины РВ. Каждый порт имеет собственный набор регистров
конфигурации.
Полная карта памяти GPIO показана на рис. 18.6.
Количество выводов и, следовательно, количество портов зависит от
конкретной модели МК внутри семейства AT32UC3. Как уже было сказа-
но в разделе «Периферийные устройства», каждая линия GPIO в МК имеет
собственный уникальный номер. Необходимо заметить, что номера выводов
портов РА, РВ, PC и РХ не совпадают с номерами линий GPIO. Соответствие
между ними задается в табл. 8.12, 8.13 раздела «Периферийные устройства».
В дополнение к этим таблицам для нахождения соответствия между выводом
порта и линией GPIO МК могут использоваться следующие формулы:
Номер порта МК = floor ((номер линии GPIO) / 32),
Номер вывода порта МК = (номер линии GPIO) mod 32.
Рис. 18.6. Полная карта памяти GPIO
Примеры применения формул:
1. Линия GPIO 36 входит в состав порта floor (36/32) = 1, т. е., РВ.
2. Линии GPIO 36 соответствует номер вывода порта МК (36 mod
32) = 4.
Пользовательский интерфейс каждого порта GPIO представлен кон-
фигурационными регистрами МК, перечисленными в табл. 18.1. Указан-
ные в таблице смещения адресов регистров представляют собой смещения
относительно смещения адреса соответствующего порта, указанного на
рис. 18.6. Адрес конфигурационного регистра в пространстве памяти может
быть найден путем суммирования указанного в таблице смещения адреса
регистра со смещением адреса порта и с начальным адресом контроллера
GPIO. (Начальный адрес контроллера GPIO указан в разделе «Периферий-
ные устройства».)
В каждом конфигурационном регистре каждый отдельный бит сопо-
ставляется линии ввода-вывода.
Табл. 18.1. Отображение регистров каждого порта GPIO
Сме- щение Регистр Функция Имя Доступ Значение после сброса
0x00 Регистр разрешения GPIO Чтение/ запись GPER Чтение/ запись 0x00000000
0x04 Регистр разрешения GPIO Установка GPERS Только запись
0x08 Регистр разрешения GPIO Сброс GPERC Только запись
ОхОС Регистр разрешения GPIO Переклю- чение GPERT Только запись
0x10 Регистр мультиплекси- рования периферии 0 Чтение/ запись PMR0 Чтение/ запись 0x00000000
0x14 Регистр мультиплекси- рования периферии 0 Установка PMR0S Только запись
0x18 Регистр мультиплекси- рования периферии 0 Сброс PMR0C Только запись
0х1С Регистр мультиплекси- рования периферии 0 Переклю- чение PMR0T Только запись
0x20 Регистр мультиплекси- рования периферии 1 Чтение/ запись PMR1 Чтение/ запись 0x00000000
0x24 Регистр мультиплекси- рования периферии 1 Установка PMR1S Только запись
0x28 Регистр мультиплекси- рования периферии 1 Сброс PMR1C Только запись
0х2С Регистр мультиплекси- рования периферии 1 Переклю- чение PMR1T Только запись
Табл. 18.1.
(продолжение)
Сме- щение Регистр Функция Имя Доступ Значение после сброса
0x30 Зарезервировано - - - -
0x34 Зарезервировано - - - -
0x38 Зарезервировано - - - -
ОхЗС Зарезервировано - - - -
0x40 Регистр разрешения драйвера выхода Чтение/ запись ODER Чтение/ запись 0x00000000
0x44 Регистр разрешения драйвера выхода Установка ODERS Только запись
0x48 Регистр разрешения драйвера выхода Сброс ODERC Только запись
0х4С Регистр разрешения драйвера выхода Переклю- чение ODERT Только запись
0x50 Регистр значения выхода Чтение/ запись OVR Чтение/ запись 0x00000000
0x54 Регистр значения выхода Установка OVRS Только запись
0x58 Регистр значения выхода Сброс OVRC Только запись
0х5С Регистр значения выхода Переклю- чение OVRT Только запись
0x60 Регистр значения ножки Чтение PVR Только чтение В зависи- мости от состояния ножки
0x64 Регистр значения ножки - - -
0x68 Регистр значения ножки - - -
ОхбС Регистр значения ножки - - -
0x70 Регистр разрешения подтянутого к «плюсу» питания резистора Чтение/ запись PUER Чтение/ запись 0x00000000
0x74 Регистр разрешения подтянутого к «плюсу» питания резистора Установка PUERS Только запись
0x78 Регистр разрешения подтянутого к «плюсу» питания резистора Сброс PUERC Только запись
Табл. 18.1. (продолжение) Значение^ после сброса
Сме- щение Регистр Функция Имя Доступ
0х7С Регистр разрешения подтянутого к «плюсу» питания резистора Переклю- чение PUERT Только запись —
0x80 Регистр разрешения режима Open Drain Чтение/ запись ODMER Чтение/ запись 0x00000000
0x84 Регистр разрешения режима Open Drain Установка ODMERS Только запись
0x88 Регистр разрешения режима Open Drain Сброс ODMERC Только запись
0х8С Регистр разрешения режима Open Drain Переклю- чение ODMERT Только запись
0x90 Регистр разрешения прерывания Чтение/ запись IER Чтение/ запись 0x00000000
0x94 Регистр разрешения прерывания Установка IERS Только запись
0x98 Регистр разрешения прерывания Сброс IERC Только запись
0х9С Регистр разрешения прерывания Переклю- чение IERT Только запись
ОхАО Регистр режима прерывания 0 Чтение/ запись IMR0 Чтение/ запись 0x00000000
0хА4 Регистр режима прерывания 0 Установка IMR0S Только запись
0хА8 Регистр режима прерывания 0 Сброс IMR0C Только запись
ОхАС Регистр режима прерывания 0 Переклю- чение IMR0T Только запись
ОхВО Регистр режима прерывания 1 Чтение/ запись IMR1 Чтение/ запись 0x00000000
0хВ4 Регистр режима прерывания 1 Установка IMR1S Только запись
ОхВ8 Регистр режима прерывания 1 Сброс IMR1C Только запись
ОхВС Регистр режима прерывания 1 Переклю- чение IMR1T Только запись
ОхСО Регистр разрешения фильтра выбросов Чтение/ запись GFER Чтение/ запись 0x00000000
0хС4 Регистр разрешения фильтра выбросов Установка GFERS Только запись
Табл. 18.1. (окончание)
'сме- щение Регистр Функция Имя Доступ Значение после сброса
"”охС8 Регистр разрешения фильтра выбросов Сброс GFERC Только запись
ОхСС Регистр разрешения фильтра выбросов Переклю- чение GFERT Только запись
OxDO Регистр флагов прерываний Чтение IFR Только чтение 0x00000000
0xD4 Регистр флагов прерываний - - -
0xD8 Регистр флагов прерываний Сброс IFRC Только запись
OxDC Регистр флагов прерываний - - -
OxEO- OxFF Зарезервированы - - -
Как можно видеть из таблицы, каждый из конфигурационных регистров
GPIO имеет в адресном пространстве четыре различных адреса. Соответ-
ственно к каждому конфигурационному регистру программа может обратить-
ся четырьмя различными способами. Первый из четырех указанных в та-
блице адресов может использоваться для записи в регистр непосредственно.
Этот адрес может также использоваться для чтения содержимого регистра.
Следующие три адреса облегчают три различных типа доступа к регистру для
записи. Выполнение доступа вида «установка» приведет к установке всех би-
тов, в которые записывается 1. При этом биты, в которые записывается О,
останутся неизменными. Выполнение доступа вида «сброс» приведет к сбросу
всех битов, в которые записывается 1. При этом биты, в которые записывается
О, останутся неизменными. Выполнение доступа вида «переключение» при-
ведет к инверсии всех битов, в которые записывается 1. При этом биты, в ко-
торые записывается 0, останутся неизменными. Обратите внимание, что для
некоторых регистров (например, IFR) разрешены не все способы доступа.
Для портов, содержащих менее чем 32 разряда, соответствующие биты
конфигурационных регистров остаются неиспользуемыми. Это также име-
ет место для функций, которые не реализованы для определенного вывода.
Запись в неиспользуемый бит не будет иметь никакого эффекта. Чтение
Неиспользуемых битов всегда будет возвращать 0.
Битовая структура всех конфигурационных регистров GPIO показана
в табл. 18.2.
Табл. 18.2. Битовая структура всех конфигурационных регистров GPIO
30 29 28 27 26 25 24
P3I РЗО Р29 Р28 Р27 Р26 Р25 Р24
Табл. 18.2. (окончание)
23 22 21 20 19 18 17 1б""
Р23 Р22 Р21 Р20 Р19 Р18 Р17 Р16~"
15 14 13 12 11 10 9 8' '
Р15 Р14 Р13 Р12 Р11 РЮ Р9 Р8~""
7 6 5 4 3 2 1 0
Р7 Р6 Р5 Р4 РЗ Р2 Р1 Р0~"~
Регистр разрешения GPIO GPER:
• РО—Р31: разрешение GPIO.
О = периферийная функция управляет соответствующим выводом.
1 = GPIO управляет соответствующим выводом.
Регистр мультиплексирования периферии PMR0:
* РО—31: бит 0 мультиплексора выбора периферии.
Регистр мультиплексирования периферии PMR1:
* РО—31: бит 1 мультиплексора выбора периферии.
Зависимость выбранной для вывода МК периферийной функции
от значений соответствующих битов регистров PMRO, PMR1 показана
в табл. 18.3.
Табл. 18.3. Зависимость выбранной для вывода МК периферийной функ-
ции от значений соответствующих битов регистров PMR0,
PMR1
Биты регистров PMR1, PMR0 Выбранная периферийная функция
0 0 А
0 1 В
1 0 С
1 1 D __
Регистр разрешения драйвера выхода ODER:
* РО—31: разрешение драйвера выхода.
О = драйвер вывода соответствующей ножки отключен.
1 = драйвер вывода соответствующей ножки включен.
Регистр значения выхода OVR:
• РО—31: значение выхода.
О = значение, которое задается драйвером для линии ввода-вывода,
1 = значение, которое задается драйвером для линии ввода-вывода,
Регистр значения ножки PVR:
• РО—31: значение уровня на ножке.
О = линия ввода-вывода находится в состоянии 0.
1 = линия ввода-вывода находится в состоянии 1.
Необходимо заметить, что уровень на ножке может только читать-
только в том случае, когда установлен соответствующий бит регистра
или для этого вывода разрешено прерывание.
регистр разрешения подтянутого к «плюсу» питания резистора
pUER;
. рО—31: разрешение подтянутого к «плюсу» питания резистора.
О = встроенный подтянутый к «плюсу» питания резистор отключен для
соответствующего вывода.
1 = встроенный подтянутый к «плюсу» питания резистор включен для
соответствующего вывода.
Регистр разрешения режима Open Drain ODMER:
• РО—31: разрешение режима Open Drain.
О = режим Open Drain отключен для соответствующего вывода.
1 = режим Open Drain включен для соответствующего вывода.
Регистр разрешения прерывания IER:
* РО—31: разрешение прерывания.
О = прерывание запрещено для соответствующего вывода.
1 = прерывание разрешено для соответствующего вывода.
Регистр режима прерывания О IMR0:
* РО—31: бит 0 режима прерывания.
Регистр режима прерывания О IMR1:
* РО—31: бит 1 режима прерывания.
Зависимость выбранного для вывода МК режима прерывания от значе-
ний соответствующих битов регистров IMRO, IMR1 показана в табл. 18.4.
Табл. 18.4. Зависимость выбранного для вывода МК режима прерывания от
значений соответствующих битов регистров IMRO, IMR1
Биты регистров IMR1, IMRO Выбранный режим прерывания
0 0 Изменение уровня на ножке
0 1 Положительный перепад на ножке
1 0 Отрицательный перепад на ножке
1 1 Зарезервировано
Регистр разрешения фильтра выбросов GFER:
* РО—31: разрешение фильтра выбросов.
О = фильтр выбросов отключен для соответствующего вывода.
1 = фильтр выбросов включен для соответствующего вывода.
Замечание: значение этого регистра можно модифицировать только
в том случае, если регистр IER имеет нулевое значение. Модификация
Регистра GFER, когда для выводов разрешены прерывания, может вызвать
Незапланированное прерывание.
Регистр флагов прерываний IFR:
• РО—31: флаг прерывания.
О = условие прерывания было обнаружено на соответствующем выводе.
1 — условие прерывания не было обнаружено на соответствующем выводе.
Необходимо заметить, что значение бита в регистре IFR будет коррек-
тно отображать события на соответствующем выводе только в том случае
если установлен соответствующий бит в регистре IER.
18.4. Примеры программирования GPIO
Пример 1. Управление восьми последовательно загорающимися светодиода-
ми, подключенными к линиям ввода-вывода МК.
// Задать в R0 базовый адрес GPIO
mov RO, LO(AVR32_ GPIO _ BASE _ ADDRESS)
orh RO, HI(AVR32_ GPIO _ BASE _ ADDRESS)
// Разрешение управления GPIO ножками МК 0-8
mov Rl, OxFF
st.w RO[AVR32 _ GPIO _ GPERS], Rl
// Задание начального значения порта
mov R2, 0x01
st.w RO [AVR32 _ GPIO _ OVRS], R2
// Задать значение переключателя. Две ножки переключаются
// в каждом раунде. Бит, который в настоящее время установлен,
// и следующий бит, который будет установлен.
mov R2, 0x0303
orh R2, 0x0303
loop:
// Изменение только 8 младших разрядов
mov R3, OxOOFF
and R3, R2
st.w R0[AVR32 _ GPIO _OVRT], R3
rol R2
rcall delay
rjmp loop
Пример 2. Конфигурирование выводов модуля USART. Пример по-
ясняет, как следует конфигурировать периферийный модуль, чтобы он
мог управлять линиями ввода-вывода МК. Линия принимаемых данных
USART (RXD) связана в МК с линией порта РС16, а линия передаваемых
данных USART (TXD) — с линией порта РС17. Для обеих этих линий
USART является периферийной функцией В. Считаем начальное состоя-
ние регистров GPIO неизвестным. По этой причине сначала устанавливаем
обе линии USART под управлением GPIO с отключенными драйверами
выходов. В этом случае можно гарантировать, что обе линии будут нахо-
диться в третьем состоянии при модификации регистров мультиплексиро*
вания периферии.
// Задать в R0 указатель на GPIO, PORTC
mov R0, LO(AVR32 _ GPIO _ BASE _ ADDRESS + PORTC _ OFFSET)
orh RO, HI (AVR32 _ GPIO _ BASE _ ADDRESS + PORTC _ OFFSET)
// Отключить драйверы выходов
mov Rl, 0x0000
orh Rl, 0x0003
st.W R0[AVR32 _ GPIO _ ODERC], R1
ц передать GPIO управление выводами
st.w RO [AVR32 _ GPIO _ GPERS] t R1
// Выбрать периферийное устройство В для РС16-РС17
st.w RO[AVR32 _ GPIO _ PMROS], R1
st.w RO[GPIO _ PMR1C], R1
// разрешить периферии управление выводами
st.w RO [AVR32 _ GPIO _ GPERC] t R1
ГЛАВА 19
ПОСЛЕДОВАТЕЛЬНЫЙ
ПЕРИФЕРИЙНЫЙ
ИНТЕРФЕЙС (SPI)
19.1. Основные особенности и общее описание
Входящий в состав всех МК AT32UC3 модуль последовательного перифе-
рийного интерфейса (SPI) имеет следующие основные особенности.
• Поддерживает связь с внешними устройствами, имеющими интер-
фейс SPI:
- четыре вывода выбора микросхемы при наличии внешнего деко-
дера позволяют организовать связь с внешними периферийными
устройствами числом до 15;
- в числе поддерживаемых устройств с последовательным досту-
пом: микросхемы памяти, например, устройства DataFlash, ми-
кросхемы EEPROM с интерфейсом З-wire, АЦП и ЦАП, CAN-
контроллеры, датчики и внешние сопроцессоры;
• Поддержка последовательного периферийного интерфейса в режи-
мах ведущего или ведомого:
- программируемая 8- или 16-разрядая длительность данных для
выбранной микросхемы;
- программируемые фаза и полярность синхросигнала для выбран-
ной микросхемы;
- программируемые задержки передачи между последовательными
передачами, а также между синхросигналом и данными для вы-
бранной микросхемы;
- выбираемый режим обнаружения ошибок передачи.
• Наличие соединения с PDCA с возможностью оптимизации канала
передачи данных:
- один канал PDCA для приемника, один канал PDCA для пере-
датчика;
- поддержка буфера следующей передачи.
Последовательный периферийный интерфейс (SPI) — это синхрон-
ный последовательный канал связи, обеспечивающий связь с внешними
устройствами в режиме ведущего или ведомого. По существу, SPI представ-
ляет собой сдвиговый регистр, который последовательно передает инфор*
мационные разряды в другой (удаленный) SPI. В течение сеанса передачи
данных одно устройство SPI действует как ведущее устройство, которое
павляет потоком данных, в то время как другие устройства SPI действу-
к:ак ведомые, для которых принимаемые/передаваемые данные сдвига-
йся ведущим.
различные центральные процессоры могут поддерживать разновид-
ти режима ведущего (протокол с множественными ведущими наряду
Н протоколом с одним ведущим, где один центральный процессор всегда
СвЛяется ведущим, в то время как все другие — всегда ведомые). Один
идущий может одновременно сдвигать данные для множества ведомых,
однако, в текущий момент только один ведомый может управлять выходом
при передаче данных ведущему.
Ведомое устройство выбирается для участия в обмене, когда ведущее
переводит в активный уровень сигнал выбора ведомого NSS. Если имеется
несколько ведомых устройств, то ведущий генерирует отдельный сигнал
выбора для каждого ведомого (NPCS).
С точки зрения шинной организации система SPI состоит из двух ли-
ний данных и двух линий управления:
• выход ведущего-вход ведомого (MOSI). По этой линии выходные
данные от ведущего сдвигаются на вход(-ы) ведомого(-ых);
• вход ведущего-выход ведомого (MISO). По этой линии выходные
данные от ведомого сдвигаются на вход ведущего. В любой момент
времени не более, чем один ведомый может передавать данные ве-
дущему;
последовательный синхросигнал (SPCK). На этой линии управ-
ления сигнал генерируется ведущим и регулирует поток битовых
данных. Ведущий может передавать данные с разными скоростями.
Сигнал SPCK выравнивают циклы для каждого передаваемого бита
данных;
• выбор ведомого (NSS). Эта линия управления позволяет ведуще-
му производить аппаратное включение и отключение ведомых
устройств, физически подключенных к шине SPI.
Блок-схема интерфейса SPI показана на рис. 19.1.
Прерывания от SPI
Рис. 19.1. Блок-схема интерфейса SPI
Рис. 19.2. Блок-схема организации системы обмена данными через SPI с од-
ним ведущим и несколькими ведомыми
Блок-схема организации системы обмена данными через SPI с одним
ведущим и несколькими ведомыми показана на рис. 19.2. Описание сигна-
лов, связанных с интерфейсом SPI, приведено в табл. 19.1.
Табл. 19.1. Описание сигналов МК, связанных с интерфейсом SPI
Имя вывода МК Описание Тип
Режим ведущего Режим ведомого
MISO Вход ведущего-выход ведомого Вход Выход
MOSI Выход ведущего-вход ведомого Выход Вход
SPCK Последовательный синхросигнал Выход Вход
NPCS1-NPCS3 Выбор микросхемы периферийного устройства Выходы Не исполь- зуются
NPCSO/NSS Выбор микросхемы периферийного устройства/выбор ведомого Выход Вход
19.2. Функциональное описание
Выводы МК, используемые SPI для связи с внешними устройствами, могут
быть мультиплексированы с линиями GPIO. Чтобы назначить для выводе®
SPI их периферийные функций, необходимо предварительно соответствУ'
ющим образом сконфигурировать контроллер GPIO. Чтобы использовать
функцию местного шлейфа SPI, относящиеся к SPI выводы МК должна
управляться интерфейсом SPI.
Сигнал синхронизации SPI генерируется менеджером питания. Пер®11
использованием SPI необходимо убедиться, что синхронизация SPI разре'
на в менеджере питания. В качестве сигнала синхронизации использу-
^ся задающая частота (МСК).
еТ К интерфейсу SPI подключена линия прерывания контроллера преры-
ний- Обработка прерываний от SPI требует предварительного конфигу-
Вцрования контроллера прерываний перед конфигурированием SPI.
19.2.1. Режимы работы интерфейса SPI
Интерфейс SPI МК может работать в режиме ведущего или режиме ве-
домого. Работа в режиме ведущего задается путем записи 1 в бит MSTR
регистра режима SPI. При этом выводы NPCS0, ... NPCS3 автоматически
конфигурируются как выходы, вывод SPCK управляется модулем SPI, ли-
ния MISO подключается внутри МК к входу приемника, а линия MOSI —
к выходу передатчика.
Если в бит MSTR записывается 0, модуль SPI работает в режиме ведо-
мого. Линия MISO подключается внутри МК к выходу передатчика, линия
MOSI — к входу приемника, а вывод SPCK становится входом и получает
последовательный синхросигнал от внешнего ведущего устройства. Вы-
вод NPCS0 также становится входом и используется для выбора ведомого
(NSS). Выводы NPCS1,... NPCS3 в режиме ведомого не управляются моду-
лем SPI и могут использоваться приложением для других целей. Настройки
передачи данных для обоих режимов работы программируются сходным
образом. При этом встроенный генератор задания скорости обмена акти-
вен только в режиме ведущего.
19.2.2. Передача данных
При передаче данных доступны четыре комбинации полярности и фазы
синхросигнала. Полярность синхросигнала выбирается битом CPOL реги-
стра выбора микросхемы. Фаза синхросигнала выбирается битом NCPHA
этого же регистра. Эти два параметра определяют перепад синхросигнала,
по которому производится выдача и выборка данных. Поскольку каждый
из этих двух параметров имеет два возможных значения, в результате по-
лучаются четыре возможных комбинации, которые являются несовмести-
мыми друг с другом. Необходимо заметить, что ведущее и связанное с ним
иедомое устройства должны использовать одинаковые параметры поляр-
ности и фазы синхросигнала. Если в приложении используются несколько
ВеДомых устройств и для них задана различная конфигурация, то ведущее
Табл. 19.2. Режимы протоколов шины SPI
~-___2ежим SPI CPOL NCPHA
0 0 1
1 0 о
2 1 1
з 1 0
Рис. 19.3. Формат передачи через SPI: NCPHA = 1, передача 8 битов
устройство должно реконфигурировать свои параметры каждый раз, когда
ему необходимо связаться с новым ведомым.
В табл. 19.2 перечислены четыре возможных режима шины SPI и соот-
ветствующие им параметры настройки интерфейса. Временные диаграм-
мы, показанные на рис. 19.3 и 19.4, иллюстрируют примеры передачи дан-
ных в различных режимах.
19.2.3. Операции режима ведущего
Когда модуль SPI сконфигурирован для работы в режиме ведущего, им
используется внутренний программируемый генератор задания скорости
обмена. Этот генератор управляет передачей данных как самим ведущим,
так и всеми ведомыми устройствами, подключенными к шине SPI. В ре-
жиме ведущего SPI также управляет линиями выбора микросхем ведомых
устройств.
* Неопределенное значение, но обычно МЗР предыдущего принятого символа
Рис. 19.4. Формат передачи через SPI: NCPHA = 0, передача 8 битов
Р состав модуля SPI входят два регистра временного хранения инфор-
пии (регистр данных передачи и регистр данных приема), а также един-
венный сдвиговый регистр. Регистры временного хранения информации
Сбслуживают потоки данных, поступающих с постоянной скоростью.
° Передан3 данных через SPI начинается, когда программа производит за-
сь в регистр данных передачи (TDR). Записанные данные немедленно авто-
матически перемещаются в сдвиговый регистр, откуда последовательно сдви-
гаются, поступая на соответствующую линию данных шины SPI. При сдвиге
данных в сдвиговом регистре и поступлении их на линию MOSI одновременно
производится их выборка на линии MISO и сдвиг выбранных данных в сдви-
говый регистр. Таким образом, передача данных происходит одновременно
с их приемом. Перед записью в регистр TDR, необходимо записать в битовое
поле PCS значение, соответствующее выбору требуемого ведомого устройства.
Если новые данные записываются программой в TDR в ходе передачи, они
остаются в нем, пока текущая передача не будет завершена. Когда по оконча-
нии передачи принятые данные автоматически перемещаются из сдвигового
регистра в регистр данных приема (RDR), данные из TDR автоматически за-
гружаются в сдвиговый регистр и начинается новая передача.
Перемещение данных, записанных в TDR, в сдвиговый регистр индициру-
ется битом TDRE в регистре статуса SPI (SR). Когда новые данные записыва-
ются в TDR, этот бит автоматически сбрасывается. Бит TDRE может исполь-
зоваться в приложении, чтобы организовать передачу через канал PDCA.
Конец передачи индицируется автоматической установкой флага TXEMPTY
в регистре SR. Если задержка передачи (DLYBCT) для последней передачи
больше нуля, бит TXEMPTY устанавливается после завершения указанной
задержки. Задающий генератор (МСК) на это время может быть отключен.
Перемещение принятых данных из сдвигового регистра в регистр RDR
индицируются битом RDRF в регистре статуса. Когда принятые данные пе-
ремещаются в RDR, бит RDRF автоматически сбрасывается. Если программ-
ное чтение регистра RDR до перемещения в него новых данных не произ-
водится, в регистре SR устанавливается флаг ошибки (OVRES). Несмотря на
Установку этого флага модуль SPI продолжит модифицировать регистр RDR
принятыми данными, записывая их поверх ранее принятых данных. Про-
грамма должна прочитать регистр состояния, чтобы сбросить бит OVRES.
Функционирование модуля SPI в режиме ведущего иллюстрируется
блок-схемой, изображенной на рис. 19.5.
Блок-схема, изображенная на рис. 19.6, иллюстрирует алгоритм пере-
дачи данных через SPI в режиме ведущего. Пояснения к этому алгоритму
будут даны ниже.
Синхросигнал для встроенного генератора задания скорости обмена че-
рез SPI генерируется путем деления значения задающей частоты (МСК) или
Поделенного на 32 значения задающей частоты на значение, лежащее в диа-
пазоне от 1 до 255. Выбор между значением задающей частоты (МСК) или
Доделенным на 32 значением задающей частоты определяется содержимым
Итового поля FDIV в регистре режима SPI. Таким образом, максимальная
сКорость обмена через SPI может соответствовать задающей частоте, а ми-
нимальная — задающей частоте, поделенной на значение 255 х 32.
NPCS2
Рис. 19.5. Функционирование модуля SPI в режиме ведущего
Запись в битовое поле задания делителя SCBR нулевого значения за-
прещается. Инициация передачи, когда SCBR = 0, может привести к не-
предсказуемым результатам. По умолчанию после сброса SCBR = 0, поэто-
му программа должна инициализировать это поле требуемым значением Д°
выполнения первой передачи. Делитель может быть настроен независимо
для каждой выбранной микросхемы периферийного устройства, поскольку
поле SCBR имеется в каждом из регистров выбора микросхемы. Указанная
особенность позволяет SPI автоматически адаптироваться под скорость об-
- сигнал NPCS определяет текущий выбор микросхемы
- CSAAT, DLYBS, DLYBCT - содержимое битовых полей
регистра выбора микросхемы, соответствующего текущему
выбору микросхемы
- когда NPCS = OxF, CSAAT = О
Задержка DLYBS
Рис. 19.6. Блок-схема алгоритма передачи данных через SPI в режиме веду-
щего
мена каждого подключенного к шине ведомого периферийного устройств
без необходимости дополнительной программной перенастройки.
В некоторых случаях при обмене по шине SPI может возникнуть
обходимость в генерации дополнительных задержек между моментами из^
менения различных сигналов интерфейса. Эти задержки позволяют прд'
способить интерфейс SPI МК к интерфейсам SPI подключенных к Шице
периферийных устройств по временным параметрам.
Модуль интерфейса SPI МК AT32UC3 позволяет задавать три типа та-
ких задержек:
• задержка между моментом выбора и моментом отказа от выбора ми-
кросхем внешних ведомых устройств, программируемая одновременно
для всех выбираемых микросхем путем записи в битовое поле DLYBCS
регистра режима. Позволяет производить вставку задержки между от-
казом от выбора одной микросхемы и инициацией выбора другой;
• задержка перед генерацией сигнала SPCK, программируемая неза-
висимо для каждой выбираемой микросхемы путем записи в би-
товое поле DLYBS. Программирование этого параметра позволя-
ет задавать запаздывание сигнала SPCK после активации выбора
микросхемы;
• задержка между последовательными передачами, программируе-
мая независимо для каждой выбираемой микросхемы путем записи
в битовое поле DLYBCT. Программирование этого параметра по-
зволяет задавать время задержки между двумя передачами, произ-
водящимися в одну и ту же выбранную микросхему.
Задание перечисленных типов задержек иллюстрируется диаграммами,
изображенными на рис. 19.7.
Внешние последовательные периферийные устройства выбираются ак-
тивными (низкими) уровнями сигналов NPCSO, ...NPCS3. По умолчанию
после сброса все сигналы NPCS находятся в высоких уровнях до и после
каждой передачи.
Выбор периферии в модуле SPI МК AT32UC3 может быть осуществлен
в двух различных режимах:
• режим выбора фиксированной периферии: SPI обменивается дан-
ными только с одним периферийным устройством;
• режим выбора переменной периферии: обмен данными возможен
более чем с одним периферийным устройством.
Рис. 19.7. Задание задержек между моментами изменения различных сигНа'
лов интерфейса SPI
режим выбора фиксированной периферии активизируется путем запи-
q в бит PS регистра режима SPI. В этом случае текущее периферийное
СИ пойство задается битовым полем PCS регистра режима, а значение поля
rS в регистре TDR не имеет значения.
* режим выбора переменной периферии активизируется путем записи 1
бит PS регистра режима. При этом поле PCS в регистре TDR используется
В я текущего выбора периферийного устройства. Это означает, что выбор пе-
риферии может быть независимо задан для каждого нового элемента данных.
Р Выбор режима фиксированной периферии позволяет организовать бу-
ферную передачу в единственное периферийное устройство. При этом воз-
можно использование PDCA с заданием размера передаваемых из памяти
интерфейс SPI данных, равного 8 или 16 разрядам. Однако смена пери-
ферийного устройства в этом режиме требует перепрограммирования ре-
гистра режима SPI.
Выбор режима переменной периферии позволяет осуществлять буфер-
ные передачи в несколько периферийных устройств без перепрограммиро-
вания регистра режима. Данные, записанные в 32-разрядный регистр TDR,
представляют собой минимальную порцию данных, предназначенную для
передачи в периферийное устройство. Использование PDCA в этом режиме
требует наличия 32-разрядного буфера с данными в его младших значащих
разрядах и с содержимым полей PCS и LASTXFER в его старших значащих
разрядах. При этом интерфейс SPI управляет разрядами данных с 8 по
16, которые подлежат передаче через линии MISO и MOSI в микросхему,
выбранную в регистрах. Этот способ не является оптимальным при ис-
пользовании буферов памяти, но обеспечивает очень эффективный обмен
данными с несколькими периферийными устройствами без какого-либо
вмешательства ЦПУ.
Пользователь может настроить модуль SPI для совместной работы
с внешними периферийными устройствами числом до 15, если при этом
дополнительно используется декодирование состояний четырех линий вы-
бора микросхем NPCS0,...NPCS3. Переход в этот режим производится пу-
тем записи 1 в бит PCSDEC в регистре режима.
Если декодирование не используется, логика модуля SPI гарантирует, что
в любой момент времени только одна линия выбора микросхемы находится
в активном (низком) уровне. Если управляющая программа сбросит два бита
в битовом поле PCS, то логика узла выбора ведомого устройства переведет
в низкий уровень только одну линию с меньшим порядковым номером.
Если декодирование используется, модуль SPI непосредственно выво-
дит на линии NPCS0,...NPCS3 значение, заданное в битовом поле PCS
Регистра режима или регистра данных передачи (в зависимости от зна-
ения поля PS). По умолчанию, когда не производится передача, модуль
I Устанавливает значение OxF на линиях выбора микросхемы (все ли-
ни установлены). Таким образом, кроме OxF остается еще 15 возможных
лчений, что дает возможность декодировать выбор 15 периферийных
СтРойств. Необходимо заметить, что регистров выбора микросхемы мо-
дуль SPI имеет не 15, а только 4. В случае использования декодирования
То Дает возможность определить характеристики до четырех групп пери-
ферийных устройств с не более чем четырьмя устройствами в первых тпе
и не более чем тремя устройствами в последней: 0—3, 4—7, 8—11 и 12-.Ц
Например, CRS0 определяет характеристики внешних декодированных це’
риферийных устройств 0, ... 3, соответствующие значениям PCS 0x0
0x3. Необходимо заметить, что пользователь при этом должен обеспечить
чтобы внутри каждой группы были собраны сходные по характеристикам
периферийные устройства.
При нормальных условиях работы модуля SPI как только передача до-
следних данных, записанных в регистр TDR, завершается, состояние всех
линий NPCS выравнивается (все они переходят в высокий уровень). Это мо-
жет привести к проблемам при использовании некоторых SPI-устройств
требующих активного состояния линии выбора микросхемы в течение все-
го времени обмена данными. Чтобы облегчить работу с такими устройства-
ми, регистр выбора микросхемы может программироваться записью 1 в бит
CSAAT (бит активности выбора микросхемы после передачи). Это позво-
ляет линиям выбора микросхемы оставаться в их текущем уровне до начала
передачи данных в другое периферийное устройство. Временные диаграм-
мы, изображенные на рис. 19.8, иллюстрируют различные варианты отказа
от выбора периферии модулем SPI при разных значениях бита CSAAT.
Режим ошибки SPI детектируется, когда модуль SPI настроен для рабо-
ты в режиме ведущего, а на выводе NPCS0/NSS внешним ведущим устрой-
ством устанавливается низкий уровень. В связи с этим необходимо заме-
тить, что линии NPCS0, MOSI, MISO и SPCK модуля SPI должны быть
сконфигурированы в контроллере GPIO как выходы с открытым стоком,
CSAAT = 0
CSAAT = 1
TDRE DLYBCT | DLYBCT |
NPCS[0 3] А | А А А А
Запись в DLYBCS PCS = А _J DLYBCS _ PCS = А t
SPI_TDR
TDRE DLYBCT L_
NPCS[0 3] A 1 A
Запись в _ DLYBCS PCS=A t
SPI_TDR
DLYBCT L
A A A
DLYBCS PCS = A t
TDRE DLYBCT |
NPCS[0 3] a DLYBCS PCS = B t в
Запись в
SPI_TDR
DLYBCT
A DLYBCS В
PCS = B
Рис. 19.8. Варианты отказа от выбора периферии в модуле SPI
бы встроенные подтянутые к «плюсу» питания резисторы, включенные
иХ линях, гарантировали высокий уровень на них для избежания де-
тИрования ложного режима ошибки.
теК^оГда детектируется режим ошибки, автоматически устанавливается
jvfODF в регистре SR и остается в таком состоянии, пока регистр SR
б^удет прочитан. При этом интерфейс SPI автоматически блокируется до
не пор, пока не будет вновь разрешен путем записи 1 в бит SPIEN регистра
«правления (CR).
’ По умолчанию после сброса аппаратная логика детектирования режима
щибки разрешена. Пользователь может отключить детектирование режи-
ма ошибки путем установки бита MODFDIS в регистре режима SPI (MR).
19.2.4. Операции режима ведомого
При функционировании в режиме ведомого SPI обрабатывает биты дан-
ных, тактируясь синхроимпульсами, поступающими с входа последова-
тельного синхросигнала SPI (SPCK).
Интерфейс SPI ожидает внешнего сигнала выбора на входе NSS, что-
бы перейти в активное состояние перед получением импульсов последова-
тельного синхросигнала от внешнего ведущего устройства. Когда на входе
NSS появляется внешний низкий уровень, импульсы последовательного
синхросигнала начинают использоваться в аппаратном последовательно-
параллельном преобразователе SPI, который обрабатывает количество би-
тов, заданное полем BITS регистра выбора микросхемы О (CSR0). Эти биты
обрабатываются с учетом фазы и полярности, заданными битами NCPHA
и CPOL соответственно регистра CSR0. Обратите внимание, что когда
SPI функционирует в режиме ведомого, содержимое битовых полей BITS,
CPOL и NCPHA остальных регистров выбора микросхемы не имеет ника-
кого значения.
Биты сдвигаются по линии MISO и выбираются с линии MOSI. Когда
все биты оказываются обработанными, принятые данные автоматически
копируются в регистр данных приема и автоматически устанавливается
бит RDRF. Если бит RDRF уже был установлен к моменту завершения
передачи данных, автоматически устанавливается бит переполнения и пе-
ремещение данных в регистр RDR прерывается.
Когда начинается передача, производится сдвиг данных, предваритель-
Но помещенных в сдвиговый регистр. Если никакие данные не были за-
писаны в регистр данных передачи (TDR), то передаются последние при-
нятые данные. Если никакие данные не были приняты после последнего
Роса, то все передаваемые биты имеют низкий уровень, так как сдвиго-
Ш регистр по умолчанию сброшен.
Когда данные первоначально записываются в регистр TDR, то они не-
еДленно копируются в сдвиговый регистр и автоматически устанавлива-
ли бит TDRE. Если новые данные записываются в регистр TDR во время
еРедачи, то они остаются в TDR, пока не будет завершена текущая пере-
дача, т. е. пока на входе NSS удерживается внешний активный уровень и на
*°Д SPCK поступает корректный последовательный синхросигнал. Когда
SPCK
Рис. 19.9. Блок-схема модуля SPI при функционировании в режиме ведомого
начинается новая передача, последние данные, записанные в TDR, копи-
руются в сдвиговый регистр и автоматически устанавливается бит TDRE.
Следует заметить, что указанный механизм позволяет программе произво-
дить сколь угодно частое обновление критических переменных с однократ-
ной передачей последнего значения.
На рис. 19.9 изображена блок-схема модуля SPI при функционировании
в режиме ведомого.
19.3. Пользовательский интерфейс
Пользовательский интерфейс модуля SPI представлен специальными реги-
страми МК, перечисленными в табл. 19.3.
Табл. 19.3. Отображение регистров последовательного периферийного ин-
терфейса SPI
Сме- щение Регистр Имя Доступ Значение после сбросу
0x00 Регистр управления SPI CR Только запись -
0x04 Регистр режима SPI MR Чтение/запись 0x0
0x08 Регистр данных приема SPI RDR Только чтение 0x0
ОхОС Регистр данных передачи SPI TDR Только запись -
0x10 Регистр статуса SPI SR Только чтение 0x000000F0
0x14 Регистр разрешения прерыва- ний от SPI IER Только запись -
0x18 Регистр запрещения прерыва- ний от SPI IDR Только запись -
Табл. 19.3.
(окончание)
шение Регистр Имя Доступ Значение после сброса
0x1е Регистр маски прерываний от SPI IMR Только чтение 0x0
0x20— Зарезервированы - - -
0х2С
0x30 Регистр выбора микросхемы 0 CSR0 Чтение/запись 0x0
0x34 Регистр выбора микросхемы 1 CSR1 Чтение/запись 0x0
0x38 Регистр выбора микросхемы 2 CSR2 Чтение/запись 0x0
ОхЗС Регистр выбора микросхемы 3 CSR3 Чтение/запись 0x0
ОхЮО— Зарезервированы для PDCA - - -
0x124
19.3.1. Регистр управления SPI CR
Битовая структура регистра показана в табл. 19.4.
Табл. 19.4. Битовая структура регистра управления SPI CR
31 30 29 28 27 26 25 24
- - - - - - - LASTXFER
23 22 21 20 19 18 17 16
- - - - - - - -
_ 15 14 13 12 11 10 9 8
— | - - - - - - -
. 7_ 6 5 4 3 2 1 0
~swrst - - - - - SPIDIS SPIEN
• SPIEN: разрешение SPI.
О = никакого эффекта.
1 = разрешить модулю SPI передавать и получать данные.
’ SPIDIS: отключение SPI.
О = никакого эффекта.
1 = отключить SPI.
Kv ^ак только ®ит SPDIS устанавливается, модуль SPI завершает те-
^УЩую передачу. После установки SPDIS все выводы SPI переводятся
Режим входов, и данные не могут быть приняты или переданы. Если
Момент установки этого бита происходит передача, то она завершается
прежде, чем блокируется модуль SPI. Если и SPIEN, и SPIDIS устацав
ливаются одновременно при записи в регистр управления, то модуль
блокируется.
• SWRST: программный сброс SPL
О = никакого эффекта.
1 = сбросить SPI.
Выполняется запускаемый программно аппаратный сброс интерфейс
SPI. После программного сброса модуль SPI находится в режиме ведомого
Каналы PDCA программным сбросом не затрагиваются.
* LASTXFER: последняя передача.
О = никакого эффекта.
1 = текущая линия NPCS перейдет в пассивный (высокий) уровень
после того, как символ, записанный в регистр TDR, будет передан. Когда
установлен бит CSAAT, указанный механизм позволяет завершать связь
с текущим последовательным периферийным устройством, автоматически
устанавливая уровень на линии NPCS, как только завершается передача.
19.3.2. Регистр режима SPI MR
Битовая структура регистра показана в табл. 19.5.
Табл. 19.5. Битовая структура регистра режима SPI MR
31 30 29 28 27 26 25 24
DLYBCS
23 22 21 20 19 18 17 16
- - - - PCS
15 14 13 12 11 10 9 8
- - - - - - -
7 6 5 4 3 2 1 0
LLB - - MODFDIS FDIV PCSDEC PS MSTR_
• MSTR: режим ведущего/ведомого (master/slave).
О = модуль SPI находится в режиме ведомого.
1 = модуль SPI находится в режиме ведущего.
* PS: выбор периферии.
О = выбор фиксированной периферии.
1 = выбор переменной периферии.
* PCSDEC: декодирование выбора микросхемы.
О = линии выбора микросхемы непосредственно связаны с периферий'
ными устройствами.
1 = четыре линии выбора микросхемы связаны с дешифратором «4 на
Когда бит PCSDEC установлен, то до 15 сигналов выбора микросхемы
еТ быть сгенерировано с помощью четырех линий, если используется
М°ешний дешифратор «4 на 16». Регистры выбора микросхемы определяют
актеристики 15 вариантов выбора периферийной микросхемы согласно
Х5дуюшим правилам:
С CSR0 определяет сигналы выбора периферийных микросхем от 0 до 3.
CSR1 определяет сигналы выбора периферийных микросхем от 4 до 7.
CSR2 определяет сигналы выбора периферийных микросхем от 8 до 11.
CSR3 определяет сигналы выбора периферийных микросхем от 12 до 14.
* FDIV: выбор тактирования.
О = модуль SPI тактируется от МСК.
1 = модуль SPI тактируется от МСК/32.
* MODFDIS: режим обнаружения ошибок.
О = режим обнаружения ошибок разрешен.
1 = режим обнаружения ошибок заблокирован.
* LLB: разрешение локального «шлейфа».
О = локальный «шлейф» заблокирован.
1 = локальный «шлейф» разрешен.
Бит LLB управляет локальным «шлейфом» на последовательно-
параллельном преобразователе данных для организации тестирования
только в режиме ведущего. В этом случае линия MISO автоматически сое-
диняется с линией MOSI внутри модуля.
* PCS: выбор периферийной микросхемы.
Это поле используется только в том случае, если активен выбор фикси-
рованной периферии (PS = 0).
Если PCSDEC = 0:
PCS = хххО: NPCS [3:0] = 1110.
PCS = xxOl: NPCS [3:0] = 1101.
PCS = xOH: NPCS [3:0] = 1011.
PCS = 0111: NPCS [3:0] = 0111.
PCS = 1111: запрещенное состояние (никакое периферийное устройство
не выбрано).
(х = не имеет значения).
Если PCSDEC = 1: NPCS [3:0] = PCS.
* DLYBCS: время задержки между активацией выбора микросхемы.
Это поле определяет время задержки от момента дезактивации одного
сигнала NPCS до момента активации другого сигнала NPCS. Время, за-
даваемое полем DLYBCS, гарантирует взаимное неперекрытие по времени
сигналов выбора микросхем и обеспечивает отсутствие конфликтных си-
туаций при обращении к шине в случае наличия периферийных устройств,
веющих большое «плавающее» время доступа к данным.
Если значение DLYBCS меньше или равно шести, то по умолчанию
Ремя задержки будет установлено равным шести периодам МСК (или 6xN
еРИодам МСК, если установлен бит FDIV, где N == 32).
В противном случае, время задержки определяется по следующей фор-
муле:
Если FDIV = 0:
• время задержки между активацией выбора микросхемы
= DLYBCS / МСК.
Если FDIV = 1:
• время задержки между активацией выбора микросхемы
= (DLYBCSxN) / МСК.
19.3.3. Регистр данных приема SPI RDR
Битовая структура регистра показана в табл. 19.6.
Табл. 19.6. Битовая структура регистра данных приема SPI RDR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - PCS
15 I 14 I 13 | 12 I 11 I 10 | 9 8
RD
7|6|5|4|3|2|1|О
RD
* RD: принятые данные.
Данные, принятые через интерфейс SPI, автоматически сохраняются
в этом выровненном по правому краю битовом поле. Неиспользуемые биты
читаются как 0.
* PCS: выбор периферийной микросхемы.
Эти биты указывают значение, присутствующее на выводах NPCS
в конце передачи только в режиме ведущего. В ином случае эти биты при
чтении возвращают 0.
19.3.4. Регистр данных передачи SPI TDR
Битовая структура регистра показана в табл. 19.7.
Табл. 19.7. Битовая структура регистра данных передачи SPI TDR
31 30 29 28 27 26 25 24
- - - - - - - lastxfek.
23 22 21 20 19 18 17 16 .
- - - - PCS
Табл. 19.7.
(окончание)
14 13 12 | 11 10 9 8
TD
6 5 4 3 2 1 0
—— TD
. TD: передаваемые данные.
Данные, которые будут переданы через интерфейс SPI, сохраняются
эТОм регистре. Информация, которая будет передана, должна быть запи-
сана в это битовое поле в выровненном по правому краю формате.
• PCS: выбор периферийной микросхемы.
Это поле используется только в том случае, если активен выбор пере-
менной периферии (PS = 1).
Если PCSDEC = 0:
PCS = хххО: NPCS [3:0] = 1110.
PCS = xxOl: NPCS [3:0] = 1101.
PCS = xOll: NPCS [3:0] = 1011.
PCS = 0111: NPCS [3:0] = 0111.
PCS = 1111: запрещенное состояние (никакое периферийное устройство
не выбрано).
(х = не имеет значения).
Если PCSDEC = 1: NPCS [3:0] = PCS.
* LASTXFER: последняя передача.
0 = никакого эффекта.
1 = текущая линия NPCS перейдет в пассивный уровень после того,
как символ, записанный в TD, будет передан. Когда установлен бит
CSAAT, указанный механизм позволяет завершать связь с текущим по-
следовательным периферийным устройством, автоматически устанавли-
вая уровень на линии NPCS как только завершается передача. Это поле
используется только в том случае, если активен выбор переменной пери-
ферии (PS = 1).
19.3.5. Регистр статуса SPI SR
Битовая структура регистра показана в табл. 19.8.
Табл. 19.8. Битовая структура регистра статуса SPI SR
30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - SPIENS
Табл. 19.8. (окончат^
15 14 13 12 11 10 9 Т"
- - - - - - TXEMPTY NSSR
7 6 5 4 3 2 1 T'"'
TXBUFE RXBUFF ENDTX ENDRX OVRES MODF TDRE RDRp''
• RDRF: регистр данных приема полон.
О = никакие данные не были приняты после последнего чтения RDR.
1 = данные были приняты и эти принятые данные были скопированы
из последовательно-параллельного преобразователя в RDR после послед,
него чтения RDR.
• TDRE: регистр данных передачи пуст.
О = данные были записаны в TDR и еще не были скопированы
в последовательно-параллельный преобразователь.
1 = последние данные, записанные в TDR, были скопированы
в последовательно-параллельный преобразователь.
Бит TDRE находится в низком состоянии, когда интерфейс SPI забло-
кирован или по умолчанию после сброса. Команда разрешения SPI авто-
матически устанавливает этот бит.
* MODF: режим ошибки.
О = режим ошибки не был обнаружен после последнего чтения SR.
1 — режим ошибки наступил после последнего чтения SR.
* OVRES: состояние ошибки переполнения.
О = переполнение не было обнаружено после последнего чтения SR.
1 = переполнение произошло после последнего чтения SR.
Переполнение происходит, когда в регистр RDR производится загрузка
не менее чем дважды из последовательно-параллельного преобразователя
после последнего чтения RDR.
• ENDRX: конец буфера RX (буфера приема).
О = регистр счетчика приема не достиг 0 после последней записи в RCR
или в RNCR.
1 = регистр счетчика приема достиг 0 после последней записи в RCR
или в RNCR.
• ENDTX: конец буфера ТХ (буфера передачи).
О = регистр счетчика передачи не достиг 0 после последней записи
в TCR или в TNCR.
1 = регистр счетчика передачи достиг 0 после последней записи в TCR
или в TNCR.
• RXBUFF: буфер RX полон.
О = RCR или RNCR имеет значение, отличное от 0.
1 = и RCR, и RNCR имеют значение 0.
• TXBUFE: буфер ТХ пуст.
0 = TCR или TNCR имеет значение, отличное от 0.
1 = и TCR, и TNCR имеют значение 0.
. NSSR: фронт NSS.
q s ни одного положительного перепада (фронта) не было обнаружено
выводе NSS после последнего чтения.
। == положительный перепад (фронт) имел место на выводе NSS после
на
последнего чтения.
n . TXEMPTY: регистры передачи пусты.
О = как только данные записаны в TDR.
। = TDR и внутренний регистр сдвига пусты. Если было задано время
задержкИ передачи, то бит TXEMPTY автоматически устанавливается по-
сле завершения этого времени задержки.
. SPIENS: состояние разрешенное™ SPI.
О = модуль SPI заблокирован.
1 = модуль SPI разрешен.
19.3.6. Регистры разрешения/запрещения/маски прерываний
от SPI IER/ IDR/IMR
Битовая структура каждого из этих регистров показана в табл. 19.9.
Табл. 19.9.каждого из регистров разрешения/запрещения/маски прерываний
от SPI IER/IDR/IMR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
—15 14 13 12 11 10 9 8
- - - - - - TXEMPTY NSSR
7 6 5 4 3 2 1 0
.TXBUFE RXBUFF ENDTX ENDRX OVRES MODF TDRE RDRF
Регистр разрешения прерываний от SPI IER:
* RDRF: разрешение прерывания при полном регистре данных приема.
TDRE: разрешение прерывания при пустом регистре данных передачи.
MODF: разрешение прерывания при наступлении режима ошибки.
OVRES: разрешение прерывания при ошибке переполнения.
ENDRX: разрешение прерывания при конце буфера приема.
ENDTX: разрешение прерывания при конце буфера передачи.
' RXBUFF: разрешение прерывания при полном буфере приема.
’ TXBUFE: разрешение прерывания при пустом буфере передачи.
* TXEMPTY: разрешение прерывания при пустых регистрах передачи.
* NSSR: разрешение прерывания при фронте NSS.
О = никакого эффекта.
1 = разрешает соответствующее прерывание.
Регистр запрещения прерываний от SPI IDR:
* RDRF: запрещение прерывания при полном регистре данных приема.
* TDRE: запрещение прерывания при пустом регистре данных передачи
* MODF: запрещение прерывания при наступлении режима ошибки.
• OVRES: запрещение прерывания при ошибке переполнения.
* ENDRX: запрещение прерывания при конце буфера приема.
• ENDTX: запрещение прерывания при конце буфера передачи.
* RXBUFF: запрещение прерывания при полном буфере приема.
* TXBUFE: запрещение прерывания при пустом буфере передачи.
* TXEMPTY: запрещение прерывания при пустых регистрах передачи.
* NSSR: запрещение прерывания при фронте NSS.
О = никакого эффекта.
1 = запрещает соответствующее прерывание.
Регистр маски прерываний от SPI IMR:
* RDRF: маска прерывания при полном регистре данных приема.
* TDRE: маска прерывания при пустом регистре данных передачи.
* MODF: маска прерывания при наступлении режима ошибки.
* OVRES: маска прерывания при ошибке переполнения.
* ENDRX: маска прерывания при конце буфера приема.
* ENDTX: маска прерывания при конце буфера передачи.
* RXBUFF: маска прерывания при полном буфере приема.
* TXBUFE: маска прерывания при пустом буфере передачи.
* TXEMPTY: маска прерывания при пустых регистрах передачи.
* NSSR: маска прерывания при фронте NSS.
О = соответствующее прерывание не разрешено.
1 = соответствующее прерывание разрешено.
19.3.7. Регистры выбора микросхемы 0—3 SPI CSRO—CSR3
Битовая структура каждого из этих регистров показана в табл. 19.10.
Табл. 19.10. Битовая структура каждого из регистров выбора микросхемы
SPI CSR0-CSR3
31 30 29 28 27 26 25 24
DLYBCT _
23 22 21 20 19 18 17 16
DLYBS
15 14 13 12 И 10 9 8
SCBR
Табл. 19.10.
(окончание)
7 J 6 I 5 4 3 2 1 0
BITS CSAAT - NCPHA CPOL~
. CPOL: полярность синхросигнала.
О = неактивное состояние SPCK — низкий логический уровень.
। = неактивное состояние SPCK — высокий логический уровень.
рит CPOL используется, чтобы определить неактивное состояние по-
следовательного синхросигнала (SPCK). Этот бит используется совместно
с битом NCPHA, чтобы задать требуемую зависимость «синхросигнал/дан-
ные» между ведущим и ведомым устройствами.
• NCPHA: фаза синхросигнала.
О = данные изменяются по начальному фронту SPCK и фиксируются по
следующему фронту SPCK.
1 = данные фиксируются по начальному фронту SPCK и изменяются по
следующему фронту SPCK.
Бит NCPHA определяет, какой фронт сигнала SPCK заставляет данные
изменяться и какой фронт фиксирует данные. Бит NCPHA используется
совместно с битом CPOL, чтобы задать требуемую зависимость «синхро-
сигнал/данные» между ведущим и ведомым устройствами.
* CSAAT: активный выбор микросхемы после передачи.
О = линия выбора периферийной микросхемы устанавливается, как
только завершается последняя передача.
Табл. 19.11. Возможные значения поля BITS регистров CSRO—SPI_CSR3
BITS Количество передаваемых информационных разрядов
0000 0001 0010 ООП 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 8 9 10 11 12 13 14 15 16 Зарезервировано Зарезервировано Зарезервировано Зарезервировано Зарезервировано Зарезервировано Зарезервировано
1 = линия выбора периферийной микросхемы не устанавливается,
только завершается последняя передача. Она остается активной, пока це
начнется новая передача для другой выбранной микросхемы.
* BITS: биты для передачи.
Поле BITS определяет количество передаваемых информационных раз,
рядов. Возможные значения этого поля показаны в табл. 19.11. Зарезервц,
рованные значения этого поля не должны использоваться.
« SCBR: скорость обмена для последовательного синхросигнала.
В режиме ведущего интерфейс SPI использует счетчик для генерации
скорости обмена (частоты SPCK) с помощью задающего генератора МСК.
Скорость обмена выбирается путем записи значения в диапазоне от 1 д0
255 в поле SCBR.
Следующие уравнения определяют скорость обмена (частоту SPCK).
Если FDIV = 0:
скорость обмена (частота SPCK) = МСК / SCBR;
Если FDIV = 1:
скорость обмена (частота SPCK) = МСК / (N х SCBR),
где N = 32.
Программирование поля SCBR значением 0 запрещается. Запуск пере-
дачи, в то время как SCBR = 0, может привести к непредсказуемым резуль-
татам.
После сброса по умолчанию значение SCBR равно 0 и перед выполне-
нием первой передачи пользователь должен запрограммировать это поле
корректным значением.
* DLYBS: время задержки перед SPCK.
Это поле определяет время задержки от начала значащего (активного)
уровня сигнала NPCS до первого значащего перепада сигнала SPCK. Когда
поле DLYBS = 0, это время составляет 1/2 периода частоты SPCK. В ином
случае время задержки определяют следующие уравнения:
Если FDIV = 0:
время задержки перед SPCK = DLYBS / МСК;
Если FDIV = 1:
время задержки перед SPCK = (N х DLYBS) / МСК,
где N = 32.
• DLYBCT: время задержки между последовательными передачами.
Это поле определяет время задержки между двумя последовательны'
ми передачами в одно и то же периферийное устройство (без изменений
выбора микросхемы). Время задержки всегда следует устанавливать посЛе
а^дой передачи и перед дезактивацией выбора микросхемы, если это не-
обходимо. „ТЛЛП„Т Л
Когда поле DLYBCT = 0, никакое время задержки между последова-
льными передачами не задано и синхросигнал сохраняет свой рабочий
* который был во время передачи. В ином случае время задержки
u оеделяется следующими уравнениями:
Если FDIV = 0:
время задержки между последовательными передачами =
= (32 х DLYBCT) / МСК + SCBR / (2 х МСК);
Если FDIV — 1:
время задержки между последовательными передачами =
= (32 х N х DLYBCT) / МСК + (N х SCBR) / (2 х МСК),
где N = 32.
ГЛАВА 20
ДВУХПРОВОДНЫЙ
ИНТЕРФЕЙС (TWI)
20.1. Основные особенности и общее описание
Двухпроводный интерфейс (TWI), входящий в состав всех МК AT32UC3,
имеет следующие основные особенности:
• совместим с имеющими аналогичный интерфейс устройствами по-
следовательной памяти производства Atmel и другими устройства-
ми, имеющими интерфейс PC1;
• адрес ведомого устройства может состоять из одного, двух или трех
байт;
• обеспечивает операции последовательного чтения/записи;
• поддерживает режимы ведущего (master), множественных ведущих
(multi-master) и ведомого (slave);
• обеспечивает передачу информации со скоростью до 400 кбит/с;
• в режиме Slave поддерживает общий вызов;
• обеспечивает наличие соединения с PDCA с возможностью опти-
мизации канала передачи данных только в режиме Master:
- один канал PDCA для приемника, один канал PDCA для пере-
датчика;
- поддержка буфера следующей передачи.
Двухпроводный интерфейс (TWI) связывает между собой со скоростя-
ми до 400 кбит/с компоненты, подключенные к стандартной двухпроводной
шине, состоящей из одной линии синхронизации и одной линии данных.
При обмене используется байтовый формат передачи. К шине могут быть
подключены устройства последовательной памяти, часы реального време-
ни (RTC), контроллеры символьных/графических ЖКИ, температурные
датчики и другие 12С-совместимые устройства Atmel и других произво-
дителей.
Интерфейс TWI МК может быть сконфигурирован для работы в Ре"
жимах Master или Slave с последовательным или произвольным побайто-
вым доступом. Им поддерживается также режим Multi-master. Арбитраж на
шине выполняется внутренней логикой интерфейса, которая автоматиче-
ски переводит TWI в режим Slave в случае потери арбитража.
1 Подробности относительно совместимости со стандартом 12С приведены
в табл. 20.1.
Генератор скорости обмена с перестраиваемой конфигурацией позволя-
иаптировать скорость обмена данными интерфейса TWI к стандартной
бТ ке скоростей обмена.
сбТ в табл. 20.1 приводится перечень параметров совместимости двухпрово-
го интерфейса Atmel в режиме Master с полностью РС-совместимыми
Тройства™.
Табл. 20.1. Совместимость интерфейса Atmel TWI со стандартом FC
Стандарт 12С Atmel TWI
Тд^ндартный режим (частота последовательного синхросигнала 100 кГц) Поддерживается
Быстрый режим (частота последовательного синхросигнала 400 кГц) Поддерживается
7-разрядная и 10-разрядная адресация ведомого устройства Поддерживается
Стартовый байт* Не поддерживается
Условие «повторный старт» (Sr) Поддерживается
Управление АСК и NACK Поддерживается
Slope-управление и входная фильтрация (в быстром режиме) Не поддерживается
«Затягивание» синхросигнала Поддерживается
* START + bOOOOOOOOl + А + Sr
В табл. 20.2 приводится список сокращений и условных обозначений,
используемых ниже при описании интерфейса TWI.
Табл. 20.2. Сокращения, используемые при описании интерфейса TWI
Сокращение или ^Условное обозначение Описание
А N Р S Sr dadr IADR R w Подтверждение (ACK) Неподтверждение (NACK) Условие «стоп» (STOP) Условие «старт» (START) Условие «повторный старт» (REPEATED_START) Адрес ведомого устройства на шине 12С Внутренний адрес ведомого устройства (адрес ячейки) Чтение Запись
Блок-схема интерфейса TWI приведена на рис. 20.1, а блок-схема ор-
айИзации двухпроводной шины — на рис. 20.2. Описание выводов МК,
косящихся к интерфейсу TWI, приведено в табл. 20.3.
Мост к
периферийной
шине
Рис. 20.1. Блок-схема интерфейса TWI
Табл. 20.3. Линии ввода-вывода, относящиеся к интерфейсу TWI
Имя вывода Описание вывода Тип вывода
TWD Последовательные данные TWI Вход/выход
TWCK Последовательный синхросигнал TWI Вход/выход
Линии TWD и TWCK — двунаправленные выводы, которые должны
быть соединены с источником положительного напряжения через под-
тянутые к «плюсу» источника питания внешние резисторы. Когда шина
свободна, обе линии находятся в высоком уровне. Выходы всех внешних
устройств, подключенных к шине, должны являться выводами с открытым
стоком или открытым коллектором.
Выводы TWD и TWCK МК могут мультиплексироваться с линиями
GPIO. Для разрешения интерфейса TWI при конфигурировании контрол-
лера GPIO программа должна выполнить следующие действия:
• задать для линий TWD и TWCK их периферийные функции,
• определить выводы TWD и TWCK как выводы с открытым сто-
ком.
Сигнал тактирования TWI генерируется менеджером питания, поэто-
му перед использованием TWI программа должна обеспечить включение
Ведомый 1 Ведомый 2 Ведомый 3 Ведомый 4
Rp: Значение сопротивлений подтягивающих к "плюсу" питания
резисторов соответствует стандарту |2с
Рис. 20.2. Блок-схема организации двухпроводной шины TWI
щал тактироания TWI в модуле РМ. В качестве сигнала тактирования
rWl используется задающая частота (МСК) — синхросигнал периферий-
Т й шины, к которой подключен модуль TWI.
110 К интерфейсу TWI подключена линия прерывания от контроллера пре-
даний (INTC). Чтобы иметь возможность обрабатывать прерывания от
?WI, необходимо перед конфигурированием TWI сконфигурировать кон-
троллер прерываний.
20.2. Функциональное описание
Данные передаются по линии TWD интерфейса TWI побайтно. В каждом
байте сначала передается СЗР, а прием каждого байта должен сопрово-
ждаться подтверждением. Количество байтов в одной передаче не ограни-
чивается. Каждая передача начинается с условия START и заканчивается
условием STOP. Условие START представляет собой отрицательный пере-
пад на линии TWD при высоком уровне на линии TWCK. Условие STOP
представляет собой положительный перепад на линии TWD при высоком
уровне на линии TWCK.
Временные диаграммы, иллюстрирующие условия START и STOP, изо-
бражены на рис. 20.3. Временные диаграммы, иллюстрирующие формат
передачи по шине интерфейса TWI, изображены на рис. 20.4.
Модуль TWI имеет шесть режимов работы:
• режим ведущего передатчика,
• режим ведущего приемника,
• режим множественного ведущего передатчика,
• режим множественного ведущего приемника,
• режим ведомого передатчика,
’ режим ведомого приемника.
Все эти режимы будут описаны ниже.
Рис. 20.3. Условия START и STOP на шине интерфейса TWI
Рис. 20.4. Формат передачи по шине интерфейса TWI
20.2.1. Режимы ведущих
На шине TWI ведущее устройство всегда начинает и прекращает передачу
а также генерирует последовательный синхросигнал. Блок-схема функций
нирования интерфейса TWI МК в режиме ведущего приведена на рис. 20.2
Порядок конфигурирования интерфейса TWI для работы в режимах
ведущего состоит из следующих действий по программированию специ-
альных регистров:
1. DADR + IADRSZ + IADR, если производится обращение к ведо-
мому устройству с 10-разрядной адресацией): адрес устройства ис-
пользуется при обращении к ведомым устройствам в режиме записи
или чтения.
2. CKDIV + CHDIV + CLDIV: форма (фаза и полярность) последова-
тельного синхросигнала.
3. SVDIS: отключение режима ведомого.
4. MSEN: включение режима ведущего.
20.2.1.1 . Режим ведущего передатчика
После того, как ведущий генерирует условие START, что происходит ав-
томатически при записи в регистр временного хранения данных передачи
(THR), происходит передача по шине 7-разрядного адреса ведомого устрой-
ства, заданного в битовом поле DADR регистра режима ведущего (MMR).
Эта передача уведомляет нужное ведомое устройство на шине, что к нему
производится обращение со стороны ведущего. Бит, стоящий в байте адреса
непосредственно после адреса ведомого указывает на направление передачи:
0 — запись или 1 — чтение. В режиме ведущего передатчика этот бит должен
быть сброшен. Значение этого бита задается в поле MREAD регистра MMR.
Формат передачи по шине TWI требует, чтобы ведомое устройство
подтверждало каждый полученный от ведущего байт. В течение перио-
да тактового импульса интервала подтверждения (9-й импульс), ведущий
«отпускает» линию данных (позволяет ей перейти в высокий уровень за
счет внешнего подтягивающего резистора), что дает возможность ведомому
установить на ней низкий уровень и тем самым генерировать подтверж-
дение приема байта (АСК). В течение интервала подтверждения ведущий
опрашивает линию данных и устанавливает бит NACK в регистре статуса,
если ведомый не подтвердил прием байта. По факту неподтверждения, как
и при установке других битов статуса может быть сгенерировано преры-
вание, если оно разрешено в регистре IER. Если ведомый подтверждает
прием байта, то записанные в регистр THR данные автоматически по-
падают во внутренний сдвиговый регистр и передаются на шину. Когда
ведущий детектирует подтверждение приема от ведомого, автоматически
устанавливается бит TXRDY, остающийся в высоком уровне до следуЮ'
щей записи в THR. Когда программная запись данных в THR перестает
производиться, ведущий генерирует на шине условие STOP, чем завершает
передачу. Окончание завершения передачи индицируется автоматической
установкой бита ТХСОМР.
тхсомр
DADR
TWD
Запись байта данных в THR
(АСК получено и TXRDY = 1)
Ведущий записывает один байт данных
TWD
DADR
данные п
данные п+5^^ А
TXRDY 1
Запись байта
данных п+1 в THR
Запись байта
данных п в THR
б - Ведущий записывает несколько байт данных
данные n+хХ А
TWD S
тхсомр”]^
Условие STOP генерируется
автоматически
(АСК получено и TXRDY = 1)
Запись байта
данных п+х в THR
Последний передаваемый
байт данных
энные п+
Запись байта Запись байта Условие STOP генерируется
данных п+1 в THR Данных п+х в THR автоматически
Последний передаваемый (АСК получено и TXRDY = 1)
байт данных
ТХ№УЪД_________:_________________
Запись байта
данных п в THR
в - Ведущий записывает несколько байт данных
по однобайтовому внутреннему адресу ведомого
a
W X А
Рис. 20.5. Различные варианты передачи по шине в режиме ведущего пере-
датчика
Временные диаграммы, изображенные на рис. 20.5 а—в, иллюстрируют
различные варианты передачи по шине в режиме ведущего передатчика.
На рис. 20.5 а показана процедура передачи ведущим в ведомое устрой-
ство одного байта данных, на рис. 20.5 б — нескольких байт данных, а на
Рис. 20.5 в — нескольких байт данных, причем данные записываются в ве-
домое устройство (например, микросхему последовательной памяти) начи-
ная с некоторого внутреннего адреса IADR (адреса ячейки), который также
задается ведущим при передаче.
20.2.1.2 . Режим ведущего приемника
Последовательность чтения начинается при программной установке
^Ита START, что вызывает автоматическую генерацию условия START.
После генерации условия START ведущий передает 7-разрядный адрес
ЬеДомого, чтобы уведомить нужное ведомое устройство о попытке об-
ращения к нему. Бит, стоящий в байте адреса непосредственно после
аДреса ведомого в режиме ведущего приемника должен быть установлен.
Значение этого бита задается в поле MREAD регистра MMR. В течение
периода тактового импульса интервала подтверждения (9-й импульс
ведущий «отпускает» линию данных, что дает возможность ведомом^
установить на ней низкий уровень и тем самым генерировать подтвер^
дение (АСК). В течение интервала подтверждения ведущий опрашивает
линию данных и устанавливает бит NACK в регистре статуса, если ве-
домый не подтвердил прием байта. Если подтверждение получено, То
ведущий становится готов принимать данные от ведомого. После по-
лучения каждого байта этих данных, за исключением последнего, ве-
дущий передает ведомому подтверждение приема. После получения по-
следнего байта данных ведущий передает ведомому неподтверждение
после чего генерирует на шине условие STOP. При попадании приня-
того байта данных в регистр временного хранения информации приема
(RHR) в регистре статуса автоматически устанавливается бит RXRDY.
Этот бит может быть использован программой как флаг указателя го-
товности к приему в канале приема PDCA. Бит RXRDY автоматически
сбрасывается при программном чтении RHR.
Временные диаграммы, изображенные на рис. 20.6 а, б иллюстрируют
различные варианты передачи по шине в режиме ведущего приемника.
На рис. 20.6 а показана процедура приема ведущим из ведомого устройства
одного байта данных, на рис. 20.6 б — нескольких байт данных.
Когда ведущим выполняется прием одного байта данных с задани-
ем внутреннего адреса (IADR) или без такового, биты START и STOP
должны устанавливаться программой одновременно (см. рис. 20.6 о).
Когда ведущим выполняется прием нескольких байт данных с заданием
внутреннего адреса (IADR) или без такового, бит STOP должен уста-
навливаться программой после приема предпоследнего байта данных
(см. рис. 20.6 б).
Чтение RHR
а - Прием ведущим от ведомого одного байта данных
ТХСОМР |\______________
Установка бита
START
RXRDY
t
Чтение из RHR
данных п
““п
Чтение из RHR
данных (п+1)
Чтение из RH R Чтение из RHj
данных (п+т) -1 данных (
Установка бита STOP после
предпоследнего чтения данных
б - Прием ведущим от ведомого нескольких байт данных
Рис. 20.6. Различные варианты передачи по шине в режиме ведущего пр**"
емника
20.2.1.3 . Адрес ведомого устройства
терфейс TWI поддерживает форматы обмена по шине как с 7-разряд-
м так и с 10-разрядным шинным адресом ведомого устройства.
jqpH 7-разрядной адресации ведомого дополнительно могут использо-
ся байты его внутреннего адреса (адреса ячейки), чтобы выполнить
В(50аШеНИе (чтение или запись) по произвольному адресу в пределах адрес-
0 г0 пространства, определенного внутри ведомого устройства. При вы-
полнении операций чтения с использованием внутреннего адреса модуль
TWI сначала выполняет операцию так называемой фиктивной записи,
чтобы задать внутренний адрес для ведомого, а затем переходит в режим
ведущего приемника и производит чтение по этому внутреннему адресу.
Необходимо заметить, что условие START, генерируемое на шине повторно
(после передачи IADR) в терминологии стандарта 12С называется «повтор-
ный старт» (REPEATED_START).
Под хранение внутреннего адреса ведомого в интерфейсе TWI отведены
три байта в регистре режима ведущего (MMR).
Если ведомое устройство поддерживает только 7-разрядный шинный
адрес и не поддерживает никаких внутренних адресов, то битовое поле
IADRSZ в регистре MMR должно быть сброшено.
Временные диаграммы, изображенные на рис. 20.7 а, б, иллюстрируют
различные варианты передачи по шине в режиме ведущего с использованием
внутреннего адреса ведомого. На рис. 20.7 а показана запись ведущим одного
байта данных в ведомое устройство с одно-, двух- или трехбайтовым внутрен-
ним адресом. На рис. 20.7 б показано чтение ведущим одного байта данных из
ведомого устройства с одно-, двух- или трехбайтовым внутренним адресом.
Трехбайтовый внутренний адрес
TWD Х~^Х^ DADR Х^Х^Х^13^23 16jX^
Двухбайтовый внутренний адрес
TWD DADR X^XTX'ADRdS^XTX IADR(7 0) X A X данные X A X P
А X данные X А X р
Однобайтовый внутренний адрес
^0 X^X DADR X^X~A
Запись ведущим одного байта данных в ведомое
Устройство с одно-, двух- или трехбайтовым
внутренним адресом
Трехбайтовый внутренний адрес
TWD Х^Х~ dadr x^wX^
R X А
Д Ухбаитовыи внутренний адрес
TWD ------4 у---ч у—
DADR Xw А
Однобайтовый внутренний адрес
1WD Ye\Z— ------------ч у—>. х—
/Vs X DADR X W X А
данные А Р
DADR
данные
v ведущим одного байта данных из ведомого
* тройства с одно-, двух- или трехбайтовым
иутренним адресом
Рис. 20.7. Различные варианты передачи по шине в режиме ведущего с ис-
пользованием внутреннего адреса ведомого
3
А
П
И
R Адрес с
Тустройства ь
s
s
Первый байт Второй байт J
адреса адреса Данные р
I I I I I II I I I I I I I I I 1ТГГ1 I I [-1
LI U I lul I I I । । 1 । i J I » । । 1 । । । 1_1 1 _t 1 1 1 1 I I I
С MR А с А МА А
3 3/СЗ С ЗС С
Р PWK Р К РК К
Рис. 20.8. Побайтовая запись микросхемы памяти с последовательным до-
ступом Atmel AT24LC512 с использованием внутренних адресов
Для организации обмена с ведомым устройством, имеющим шинный
адрес разрядностью больше, чем 7, программа должна задать требуемый
размер шинного адреса в битовом поле IADRSZ. Задать значения допол-
нительных битов шинного адреса ведомого при этом можно в битовом поле
IADR [7:0] регистра внутреннего адреса ведомого (IADR). Битовые поля
IADR [15:8] и IADR [23:16] в этом случае могут использоваться так же, как
и в случае 7-разрядной шинной адресации.
Пример. Необходимо сконфигурировать интерфейс TWI для обращения
к ведомому устройству с 10-разрядным шинным адресом. (Адрес устрой-
ства на шине — Ы Ь2 ЬЗ Ь4 Ь5 Ь6 Ь7 Ь8 Ь9 ЫО).
1. Задать IADRSZ = 1.
2. Задать DADR = 1 1 1 1 0 Ы Ь2, где bl — СЗР 10-разрядного адреса.
3. Задать IADR[7:0] = ЬЗ Ь4 Ь5 Ь6 Ь7 Ь8 Ь9 ЫО, где ЫО - МЗР 10-раз-
рядного адреса.
Временные диаграммы, изображенные на рис. 20.8, иллюстрируют про-
цесс побайтовой записи микросхемы памяти с последовательным доступом
Atmel AT24LC512 с использованием внутренних адресов.
20.2.1.4. Использование PDCA
Использование PDCA при функционировании интерфейса TWI значитель-
но уменьшает загрузку ЦПУ. Чтобы обеспечить корректное выполнение
операций, связанных с PDCA, рекомендуется соблюдать нижеприведенные
последовательности программирования.
При передаче данных через PDCA:
1. Инициализировать PDCA для передачи (указатели памяти, размер,
и т. д.).
2. Сконфигурировать режим ведущего (DADR, CKDIV, и т. д.).
3. Запустить операции PDCA путем установки бита TXTEN PDCA.
4. Ожидать окончания передачи PDCA, отслеживая его по флагу ТХ.
5. Отключить PDCA путем установки бита TXDIS PDCA.
При приеме данных через PDCA:
1. Инициализировать PDCA для приема (указатели памяти, размер,
равный 1, и т. д.).
2. Сконфигурировать режим ведущего (DADR, CKDIV и т. д.).
3. Запустить операции PDCA путем установки бита RXTEN PDCA.
4. Ожидать окончания приема PDCA, отслеживая его по флагу RX.
Задание синхросигнала TWI
(CLDIV. CHDIV CKDIV в TWI_CWGR)
(необходимо задать только однажды)
- ' Г.........
Конфигурирование регистра управления
разрешение режима ведущего
TWI_CR = MSEN + SVDIS
Конфигурирование регистра режима ведущего
- адрес ведомого на шине (DADR)
. бит направления передачи
запись ==> бит MREAD = О
Г Загрузка в регистр передачи
TWI_THR = данные, подлежащие передаче
Рис. 20.10. Блок-схема алгоритма
операции записи TWI с един-
ственным байтом данных с вну-
тренним адресом ведомого
Чтение регистра статуса
Чтение регистра статуса
Рис. 20.9. Блок-схема алгоритма
операции записи TWI с един-
ственным байтом данных без
внутреннего адреса ведомого
5. Отключить PDCA путем установки бита RXDIS PDCA.
Блок-схемы алгоритмов, изображенные на рис. 20.9—20.14, иллюстри-
РУЮт примеры операций чтения и записи. Для проверки битов состояния
м°Жет использоваться программный опрос или прерывание. Использова-
ние прерывания требует, чтобы оно было предварительно разрешено в ре-
гистре IER.
20.2.2. Режимы множественных ведущих (multi-master)
Если к шине подключено больше одного ведущего устройства, то они мо-
гУт одновременно осуществлять свои операции без нарушения целостности
Данных, если используется арбитраж. Арбитраж начинает действовать, как
Начало
Рис. 20.11. Блок-схема алгоритма операции записи TWI с несколькими бай-
тами данных с внутренним адресом ведомого или без него
только два или более ведущих устройства пытаются захватить управление
шиной, и перестает действовать (теряется) для того ведущего, который пы-
тается установить на шине высокий уровень (т. е. «отпускает» шину), в то
время как другой ведущий пытается установить на шине низкий уровень.
Как только ведущее устройство теряет арбитраж, оно прекращает пере-
давать данные и начинает «слушать» состояние шины с целью обнару-
жения на ней останова (условия STOP) текущей передачи. Когда условие
STOP обнаруживается, ведущий, который до этого потерял арбитраж, мо-
жет начать передачу своих данных на шину, что и будет корректным со-
блюдением правил арбитража.
Рис. 20.12. Блок-схема алго-
ритма операции чтения TWI
с единственным байтом дан-
ных без внутреннего адреса
ведомого
Рис. 20.13. Блок-схема алго-
ритма операции чтения TWI
с единственным байтом дан-
ных с внутренним адресом ве-
домого
Подробности осуществления арбитража на шине иллюстрируется вре-
менными диаграммами, изображенными на рис. 20.15. Участниками арби-
тража являются интерфейс TWI МК AT32UC3 и какое-либо другое веду-
щее устройство, подключенное к шине.
Для интерфейса TWI МК AT32UC3 можно выделить два режима мно-
жественных ведущих.
1. TWI рассматривается только как ведущее устройство, и к нему не
могут обращаться другие ведущие, подключенные к шине.
Рис. 20.14. Блок-схема алгоритма операции чтения TWI с несколькими бай
тами данных с внутренним адресом ведомого или без него
twck
данные от ведущего
Данные от TWI
TWD
hirtrtnnr
Арбитраж потерян
Ведущий прекращает
передавать данные
Данные от TWI
ARBLST.
t
Передача
остановлена
Шина
свободна
Передача данных TWI |
t
Задана передача
(DADR + W + START + запись THR)
J~ Передача длится
Снова задана передача
(DADR + W + START + запись THR)
'1
J_____________________________________________
t
Шина сочтена свободной
Инициализируется передача
Рис. 20.15. Ситуации, возникающие на шине, при осуществлении арбитража
2. TWI может быть как ведомым, так и ведущим устройством, и к нему
могут обращаться другие ведущие, подключенные к шине.
Арбитраж поддерживается в обоих этих режимах.
В режиме, когда TWI рассматривается только как ведущий (MSEN =1),
он должен управляться программой подобно ведущему устройству с уста-
новленным флагом ARBLST (флаг потери арбитража). Если арбитраж по-
терян (ARBLST = 1), программа должна повторно инициализировать пере-
дачу данных. Если интерфейс TWI начинает передачу (например, DADR
+ START + W + запись THR), а шина оказывается занятой, TWI автома-
тически переходит в состояние ожидания условия STOP на шине, чтобы
инициализировать повторную передачу, как показано на рис. 20.16.
Следует заметить, что пользовательский интерфейс TWI не имеет
средств индикации состояния шины, т. е. программа не может судить, за-
нята шина или свободна.
Режим, в котором TWI может быть как ведомым, так и ведущим, не
поддерживается в случае потерянного арбитража. В этом случае программ-
но реализуется так называемый псевдорежим множественных ведущих, по-
следовательность операций которого описана ниже.
TWD
ПеРедача данных TWI
Условие STOP, Условие START,
переданное ведущим^ • переданное TWI
Данные передает ведущий | Данные передает JW£
_______Шина занята____
1 Шина 1
__________________________________свободна
?______Передача длится____________J___________________________
t
Задана передача
(DADR + W + START + запись THR)
t
Шина сочтена свободной
Инициализируется передача
Рис. 20.16. Инициализация повторной
TWI, когда шина занята
передачи со стороны интерфейса
1.
2.
3.
Сконфигурировать TWI в режиме ведомого (SADR + MSDls <
SVEN) и выполнить доступ для ведомого (если к TWI производи
обращение). я
Если TWI должен быть сконфигурирован в режиме ведущего
ожидать установления флага ТХСОМР. ’ 0
Сконфигурировать TWI в режиме ведущего (DADR + SVDIS +
MSEN) и начать передачу (например: START + запись в THR).
( START )
Рис. 20.17. Пример операций чтения и записи режиме множественных ве'
дущих
д Как только режим ведущего включается, TWI начинает «просма-
тривать» шину, чтобы отслеживать ее занятость или освобождение.
Когда шина освобождается, TWI начинает передачу.
После инициализации передачи и до генерации условия STOP на-
чинают действовать правила арбитража и программа должна кон-
тролировать флаг ARBLST.
6 Если арбитраж потерян (флаг ARBLST установился), программа
должна сконфигурировать интерфейс TWI в режиме ведомого на
случай, если ведущий, который выиграл арбитраж, попытается об-
ратиться к TWI.
7. Если TWI должен быть сконфигурирован в режиме ведомого, то
программа должна ожидать установки флага ТХСОМР, и только за-
тем включить режим ведомого.
Необходимо заметить, что при обращении к TWI в случае потери им
арбитража, TWI не будет выдавать подтверждение, даже если он сконфигу-
рирован в режиме ведомого, пока установлен флаг ARBLST. В этом случае
ведущее устройство должно повторить передачу SADR.
Блок-схема алгоритма, изображенная на рис. 20.17, иллюстрирует при-
мер операций чтения и записи режиме множественных ведущих.
20.2.3. Режимы ведомых
Режим ведомого определяется как режим, при работе в котором устрой-
ство получает последовательный синхросигнал и адрес от другого устрой-
ства на шине, которое является ведущим. В режиме ведомого устройство
никогда не начинает и никогда не завершает передачу (условия START,
REPEATED_START и STOP всегда генерируются ведущим).
Перед включением режима ведомого в интерфейсе TWI должны быть
инициализированы следующие битовые поля:
L SADR (SMR): адрес ведомого устройства на шине используется для
обеспечения возможности обращения к нему со стороны ведущего
в режиме чтения или записи.
2. MSDIS (CR): отключение режима ведущего.
3. SVEN (CR): включение режима ведомого.
Поскольку в режиме ведомого устройство получает последовательный
синхросигнал из шины, содержимое поля CWGR не имеет значения.
20.2.3.1. Прием данных
После того, как логика TWI обнаруживает на шине условие START или усло-
вие REPEATED_START, и в случае, если адрес, переданный на шину веду-
лИм, совпадает с содержимым поля SADR, автоматически устанавливается
Флаг SVACC (флаг доступа к ведомому), а значение бита SVREAD указывает
^Рограмме заданное ведущим направление передачи. Флаг SVACC остается
высоком уровне, пока логикой TWI не будет обнаружено условие STOP или
^PEATED START. Когда одно из этих условий обнаруживается, автомати-
ески устанавливается флаг EOSACC (флаг завершения доступа к ведомому).
В случае осуществления последовательности чтения (SVREAD=1) ц0^
лежащие передаче в ведущее устройство данные должны быть программно
записаны в регистр THR до обнаружения на шине условия STOP или усЛ(к
вия REPEATED_START + адрес, отличный от содержимого SADR. fje^
обходимо заметить, что в конце последовательности чтения автоматически
устанавливается флаг ТХСОМР (флаг завершения передачи) и сбрасываем
ся флаг SVACC. Как только данные записываются в THR, автоматически
сбрасывается флаг TXRDY (флаг готовности регистра временного хранения
информации передачи). Этот флаг вновь автоматически устанавливается
когда сдвиговый регистр становится пустым и переданные данные под-
тверждаются или не подтверждаются ведущим устройством. Если данные не
подтверждаются, автоматически устанавливается флаг NACK. Заметим, что
за NACK всегда следует условие STOP или условие REPEATED START.
Последовательность чтения иллюстрируется временными диаграмма-
ми, изображенными на рис. 20.18.
В случае осуществления последовательности записи (SVREAD=0) при
приеме байта данных в RHR автоматически устанавливается флаг RXRDY
(флаг готовности регистра временного хранения информации приема). Флаг
RXRDY автоматически сбрасывается при программном чтении RHR. TWI
продолжает принимать данные до обнаружения на шине условия STOP или
условия REPEATED_START + адрес, отличный от содержимого SADR.
Следует заметить, что в конце последовательности записи автоматически
устанавливается флаг ТХСОМР и сбрасывается флаг SVACC.
Последовательность записи иллюстрируется временными диаграмма-
ми, изображенными на рис. 20.19.
В случае, если программа по какой-то причине не производит своев-
ременную запись/чтение регистра THR/RHR, логика TWI может осущест-
влять так называемое «затягивание» последовательного синхросигнала.
Под «затягиванием» здесь понимается удержание линии TWCK в низком
уровне, что приостанавливает процесс передачи по шине. Информация по
«затягиванию» последовательного синхросигнала содержится в битовом
поле SCLWS (состояние ожидания синхросигнала).
SVACC
SVREAD
EOSVACC
’ SVREAD имеет значение только в том случае, если
SVACC активен
Примечания 1 Когда SVACC в низком уровне, состояние SVREAD становится незначащим
2 TXRDY сбрасывается, когда данные передаются из THR в сдвиговый регистр,
и устанавливается, когда эти данные подтверждаются или не подтверждаются
Рис. 20.18. Доступ для чтения, производимый ведущим устройством
П имечания. 1. Когда SVACC в низком уровне, состояние SVREAD становится незначащим
2 RXRDY устанавливается, когда данные передаются из сдвигового
регистра в RHR, и сбрасывается, когда эти данные читаются программой
Рис. 20.19. Доступ для записи, производимый ведущим устройством
«Затягивание» последовательного синхросигнала иллюстрируется вре-
менными диаграммами, изображенными на рис. 20.20, 20.21.
В случае детектирования логикой TWI адреса общего вызова
(GENERAL CALL) устанавливается флаг GACC (флаг доступа по общему
вызову). Обработка установки флага GACC возлагается на пользователь-
скую программу.
Поступление на шину общего вызова иллюстрируется временными ди-
аграммами, изображенными на рис. 20.22.
Использование PDCA в режиме ведомого не рекомендуется, поскольку
невозможно знать точное количество байт данных, подлежащих приему/
передаче.
I Ч>ИНХрииИ1 HdJ I уде ржи БЫ е I их
1 TWI в низком уровне, пока
Запись THR ] [ } регистр THR пуст
scLws___________; . - -'_____।__________и---------(____________L
TXRDY ----------_________________h__________I---------1____________Г
SVACC ______________I “ L
SVREAD______________|--------------------------------------------“1
ТХ С О M P 1 Как только обнаруживается условие START______________________________________ Г
Содержимое TWI_THR передается в сдвиговый регистр ИЛИ от веДУШ1ег0
Данные запоминаются в TWI_THR, пока не записано новое значение
Синхросигнал «затягивается» после АСК, состояние TWD неопределено в течение «затяжки» синхросигнала
примечания 1 TXRDY сбрасывается когда данные записываются из THR в сдвиговый
регистр, и устанавливается, когда эти данные подтверждаются или не подтверждаются
2 В конце последовательности чтения ТХСОМР устанавливается
после условия STOP или условия REPEATED_START + адрес, отличный от SADR
3 SCLWS автоматически устанавливается, когда начинается «затягивание» синхросигнала
Рис. 20.20. «Затягивание» последовательного синхросигнала при синхрони-
зации при осуществлении чтения
Синхросигнал удерживается TWI в низком уровне, пока RHR полон
TWCK
TWD
TWI.RHR
SCLWS
RXRDY
SVACC
SVREAD I________________________________________________________Г
1 Как только обнаруживается условие START
Примечания 1 В конце последовательности чтения ТХСОМР устанавливается после условия STOP или условия
REPEATED_START + адрес, отличный от SADR
2 SCLWS автоматически устанавливается, когда начинается «затягивание» синхросигнала,
и автоматически сбрасывается, когда «затягивание» синхросигнала заканчивается
Рис. 20.21. «Затягивание» последовательного синхросигнала при синхрони-
зации при осуществлении записи
20.2.3.2. Передача данных
Режим чтения для ведомого устройства определен как требование данных
от ведущего.
После того как логика TWI обнаруживает на шине условие START или
условие REPEATED_START, запускается механизм декодирования адреса.
Если декодированный адрес совпадает с содержимым SADR, автоматиче-
ски устанавливается флаг SVACC, а бит SVREAD указывает направление
текущей передачи.
Пока на шине не обнаруживается условие STOP или условие REPEATED-
START, TWI продолжает передавать данные, загруженные в регистр THR.
Если на шине обнаруживается условие STOP или условие REPEATED-
START + адрес, отличный от содержимого SADR, флаг SVACC сбрасывается.
Последовательность чтения иллюстрируется временными диаграмма-
ми, изображенными на рис. 20.18.
Режим записи для ведомого устройства определен как передача данных
от ведущего. После того, как логика TWI обнаруживает на шине условие
Команда RESET = 00000110Х
0000000 + W Команда WRITE = 00000100Х
Последовательность
программирования
нового SADR
GCACC
SVACC ____
Примечание 1 Этот метод дает возможность пользователю создавать собственную последовательность программирования,
выбирая содержимое байтов данных и их количество Аналогичная последовательность программирования должна
поддерживаться и ведущим устройством
Рис. 20.22. Поступление на шину общего вызова (GENERAL CALL)
cTART или условие REPEATED_START, запускается механизм декодиро-
S йЯ адреса. Если декодированный адрес совпадает с содержимым SADR,
ватоМатически устанавливается флаг SVACC, а бит SVREAD указывает на-
аР явление текущей передачи (в случае записи — сброшен).
Пока на шине не обнаруживается условие STOP или условие REPEATED-
START, TWI сохраняет принятые данные в регистре RHR.
Если на шине обнаруживается условие STOP или условие REPEATED-
START + адрес, отличный от содержимого SADR, флаг SVACC сбрасы-
вается.
Последовательность записи иллюстрируется временными диаграмма-
ми, изображенными на рис. 20.19.
Запрос общего вызова в отношении конкретного ведомого устройства
может выполняться ведущим, в частности, с целью изменить адрес этого
ведомого устройства. Для этого первый байт, передаваемый ведущим после
адреса общего вызова, может содержать команду сброса текущего адреса
ведомого или команду записи нового адреса ведомого.
В случае детектирования логикой TWI адреса общего вызова
(GENERAL CALL) устанавливается флаг GACC (флаг доступа по обще-
му вызову). Обработка установки флага GACC возлагается на пользова-
тельскую программу. Если программа декодирует команду записи ново-
го адреса ведомого (WRITE), то она должна декодировать в следующих
передаваемых ведущим байтах так называемую последовательность про-
граммирования. В соответствии с этой последовательностью программа
должна задать новый адрес ведомого (SADR), пользуясь информацией,
которая также может содержаться в передаваемых ведущим данных. Ука-
занный метод предоставляет пользователю возможность создавать соб-
ственные последовательности программирования, самостоятельно зада-
вая количество байтов данных и их содержимое. Необходимо заметить,
что аналогичная последовательность программирования должна поддер-
живаться и ведущим устройством.
Сказанное иллюстрируется временными диаграммами, изображенны-
ми на рис. 20.22.
20.2.3.3. Коррекция синхросигнала
При чтении может случиться ситуация, когда регистр THR оказывается не
записанным после перемещения из него байта в сдвиговый регистр. Анало-
гично при записи может случиться ситуация, когда регистр RHR остается
Не Прочитанным после приема в него байта от ведущего. В этих случаях,
Чтобы избежать передачи/приема нежелательных данных, что повлечет их
Потерю, начинает действовать механизм «затягивания» синхросигнала.
При чтении линия синхросигнала удерживается логикой TWI в низком
Уровне, если сдвиговый регистр пуст и если не обнаруживается условие STOP
Или условие REPEATED_START. Низкий уровень удерживается на линии
синхросигнала, пока в сдвиговый регистр не будут загружены данные.
Сказанное иллюстрируется временными диаграммами, изображенны-
ми на рис. 20.20.
При записи линия синхросигнала удерживается логикой TWI в низко^
уровне, если сдвиговый регистр и регистр RHR полны, до тех пор, пока це
обнаруживается условие STOP или условие REPEATED_START или пока
не будет программно прочитан регистр RHR.
Сказанное иллюстрируется временными диаграммами, изображенны-
ми на рис. 20.21.
20.2.3.4. Смена направления передачи после повторного
старта
После генерации ведущим условия повторного старта (REPEATED
START) возможна смена направления передачи как с чтения на запись^
так и наоборот.
TWI_THR
TWD
TWI.RHR
SVACC
SVREAD
TXRDY
RXRDY
EOSACC ____________________________________________
TXCOMP | <— Как только обнаруживается условие START
Сбрасывается после чтения
RXRDY
EOSACC
Примечание 1 ТХСОМР устанавливается только в конце передачи
Рис. 20.23. Повторный старт с последующей сменой направления передачи
с чтения на запись
TWI_THR
TWD
TWI_RHR
SVACC
SVREAD
TXRDY
TXCOMP ◄— Как только обнаруживается условие START
Примечания 1 В этом случае если в регистр THR не была произведена запись в конце команды чтения, синхросигнал
автоматически «затягивается» перед АСК
2 ТХСОМР устанавливается только в конце передачи
Рис. 20.24. Повторный старт с последующей сменой направления передачи
с записи на чтение
Рис. 20.25. Блок-схема операций чтения и записи в режиме ведомого
В первом случае ведущий начинает обмен командой чтения, а закан-
чивает его командой записи. Эта ситуация иллюстрируется временными
Диаграммами, изображенными на рис. 20.23.
Во втором случае ведущий начинает обмен командой записи, а закан-
чивает его командой чтения. Эта ситуация иллюстрируется временными
Диаграммами, изображенными на рис. 20.24.
Блок-схема, изображенная на рис. 20.25, иллюстрирует пример опе-
раций чтения и записи в режиме ведомого. Для проверки битов со-
стояния может использоваться их программный опрос или прерывания.
Использование прерываний требует предварительного их разрешения
в Регистре IER.
20.3. Пользовательский интерфейс
Пользовательский интерфейс модуля TWI представлен специальными ре-
гистрами МК, перечисленными в табл. 20.4.
Табл. 20.4. Отображение регистров модуля TWI
Смещение Регистр Имя Доступ ЗначениТ"" после сбросу
0x00 Регистр управления CR Только запись N/T—
0x04 Регистр режима ведущего MMR Чтение/запись 0x00000000
0x08 Регистр режима ведомого SMR Чтение/запись 0x00000000
ОхОС Регистр внутреннего адреса IADR Чтение/запись 0x00000000
0x10 Регистр генератора формирования синхросигнала CWGR Чтение/запись 0x00000000
0x20 Регистр статуса SR Только чтение 0x0000F009
0x24 Регистр разрешения прерываний IER Только запись N/A
0x28 Регистр запрещения прерываний IDR Только запись N/A
0х2С Регистр маски прерываний IMR Только чтение 0x00000000
0x30 Регистр временного хранения информации приема RHR Только чтение 0x00000000
0x34 Регистр временного хранения информации передачи THR Только запись 0x00000000
0x38—0xF8 Зарезервированы - - -
OxFC Регистр версии TWI_VER Только чтение 0x00000000
0x38—OxFC Зарезервированы - - -
20.3.1. Регистр управления TWI CR
Битовая структура этого регистра показана в табл. 20.5.
Табл. 20.5. Битовая структура регистра управления TWI CR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16_^
- - - - - - -
Табл. 20.5.
(окончание)
15 14 13 12 11 10 9 8
- - - - - -
-"Т 'sWRsF 6 5 4 3 2 1 0
- SVDIS SVEN MSDIS MSEN STOP START
• START: генерировать условие START.
О = никакого эффекта.
1 = фрейм, начинающаяся с бита START, передается на шину в соот-
ветствии с установками, заданными в регистре режима.
Это действие необходимо, когда TWI-устройство делает попытку прочи-
тать данные из внешнего ведомого устройства. Когда модуль TWI сконфи-
гурирован в режиме ведущего, то для проведения операции записи фрейм
передается на шину, как только программа производит запись байта дан-
ных в регистр временного хранения информации передачи (THR).
• STOP: генерировать условие STOP.
О = никакого эффекта.
1 = условие STOP передается на шину только после завершения теку-
щей передачи байта при чтении в режиме ведущего.
При чтении ведущим отдельного байта данных программно должны
быть установлены оба бита START и STOP.
При чтении ведущим нескольких байт данных бит STOP должен быть
программно установлен после последнего принятого байта данных.
Если в режиме ведущего при чтении принят бит NACK, то автоматиче-
ски генерируется условие STOP.
При операции множественной записи данных, когда THR и сдвиговый
регистр пусты, условие STOP генерируется автоматически.
* MSEN: разрешить режим ведущего TWI.
О = никакого эффекта.
1 = если MSDIS = 0, то режим ведущего разрешается.
Замечание. Переключение из режима ведомого в режим ведущего раз-
решается только в том случае, когда ТХСОМР = 1.
• MSDIS: запретить режим ведущего TWI.
0 = никакого эффекта.
1 = режим ведущего заблокирован, все ждущие обработки данные
Переданы. Содержимое регистра сдвига и регистра временного хранения
Данных (если они содержат данные) передается на шину в случае операции
записи. В случае операции чтения принимаемый байт должен быть полно-
стью принят перед отключением TWI.
’ SVEN: разрешить режим ведомого TWI.
О = никакого эффекта.
1 = Если SVDIS = 0, режим ведомого разрешается.
Замечание. Переключение из режима ведущего в режим ведомого раз-
решается только в том случае, когда ТХСОМР = 1.
• SVDIS: запретить режим ведомого TWI.
О = никакого эффекта.
1 = режим ведомого заблокирован. Содержимое регистра сдвига и рещ,
стра временного хранения данных (если они содержат данные) передается
на шину в случае операции чтения. В случае операции записи принимав-
мый байт должен быть полностью принят перед отключением TWI.
* SWRST: программный сброс.
О = никакого эффекта.
1 = эквивалент системному сбросу.
20.3.2. Регистр режима ведущего TWI MMR
Битовая структура этого регистра показана в табл. 20.6.
Табл. 20.6. Битовая структура регистра режима ведущего TWI MMR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- DADR
15 14 13 12 11 10 9 8
- - - MREAD - - IADRSZ
7 6 5 4 3 2 1 0
- - - - - - - -
• IADRSZ: размер внутреннего адреса устройства.
Возможные значения этого битового поля показаны в табл. 20.7.
Табл. 20.7. Возможные значения битового поля IADRSZ
IADRSZ [9:8] Описание .
0 0 Никаких внутренних адресов устройства
0 1 Однобайтовый внутренний адрес устройства
1 0 Двухбайтовый внутренний адрес устройства
1 1 Трехбайтовый внутренний адрес устройства
* MREAD: направление передачи для ведущего устройства.
0 = ведущий будет производить запись.
1 = ведущий будет производить чтение.
• DADR: адрес устройства на шине.
ддрес устройства используется для обращения к ведомым устройствам
еясиме записи или чтения. Это битовое поле используется только в ре-
жиме ведущего.
20.3.3. Регистр режима ведомого TWI SMR
битовая структура этого регистра показана в табл. 20.8.
Табл. 20.8. Битовая структура регистра режима ведомого TWI SMR
' зГ 30 29 28 27 26 25 24
— - - - - - - -
гГ- 22 21 20 19 18 17 16
- SADR
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - - - -
• SADR: адрес ведомого.
Адрес ведомого устройства используется в режиме ведомого для ответа
на обращение ведущих устройств в режиме записи или чтения. Содержи-
мое битового поля SADR должно быть задано перед включением режима
ведомого или после поступления общего вызова. Запись в поле SADR, про-
изведенная в иное время, не будет иметь никакого эффекта.
20.3.4. Регистр внутреннего адреса TWI IADR
Битовая структура этого регистра показана в табл. 20.9.
Табл. 20.9. Битовая структура регистра внутреннего адреса TWI IADR
_23 22 21 20 19 18 17 16
IADR
^_15 14 13 12 11 10 9 8
IADR
Табл. 20.9. (окончание)
7|б|5|4|з|2|1| 0 "
IADR "
* IADR: внутренний адрес.
О, 1, 2 или 3 байта в зависимости от значения поля IADRSZ.
20.3.5. Регистр генератора формирования синхросигнала
TWI CWGR
Битовая структура этого регистра показана в табл. 20.10.
Табл. 20.10. Битовая структура регистра генератора формирования синхро-
сигнала TWI CWGR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
CKDIV
15 14 13 12 11 10 9 8
CHDIV
6 5 4 3 2 1
CLDIV
Регистр CWGR используется только в режиме ведущего.
* CLDIV: делитель для низкоуровневой части периода синхросигнала.
Низкоуровневая часть периода сигнала SCL определена следующим
образом:
TL0W = ((CLDIV х 2 ckdiv) + 4) х
* CHDIV: делитель для высокоуровневой части периода синхросигнала.
Высокоуровневая часть периода сигнала SCL определена следующим
образом:
Thigh = ((CHDIV х 2 CKDIV) + 4) х тмск.
• CKDIV: делитель синхросигнала.
Битовое поле CKDIV используется в формулах, определяющих высо-
коуровневую и низкоуровневую части периода синхросигнала.
20.3.6. Регистр состояния TWI SR
щитовая
структура этого регистра показана в табл. 20.11.
Табл. 20.11. Битовая структура регистра состояния TWI SR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
"”""”15Р 14 13 12 11 10 9 8
TXBUFE RXBUFF ENDTX ENDRX EOSACC SCLWS ARBLST NACK
7 6 5 4 3 2 1 0
- OVRE GACC SVACC SVREAD TXRDY RXRDY TXCOMP
* ТХСОМР: передача завершена (автоматически устанавливается/сбра-
сывается).
Бит ТХСОМР в режиме ведущего:
0 = в течение длительности текущего фрейма.
1 = регистры временного хранения и сдвига пусты, и передано условие
STOP.
Поведение бита ТХСОМР в режиме ведущего иллюстрируется диаграм-
мами на рис. 20.5 и рис. 20.6.
Бит ТХСОМР в режиме ведомого:
0 = как только обнаружено условие START.
1 = после обнаружения условия STOP или условия REPEATED_START
+ адрес, отличный от содержимого SADR.
Поведение бита ТХСОМР в режиме ведомого иллюстрируется диаграм-
мами на рис. 20.20, 20.21, 20.23 и 20.24.
* RXRDY: регистр временного хранения информации приема готов (авто-
матически устанавливается/сбрасывается).
0 = никакой байт не был принят после последнего чтения регистра
KHR.
1 = байт был принят в регистр RHR после его последнего чтения.
Поведение бита RXRDY в режиме ведущего иллюстрируется диаграм-
мами на рис. 20.6., а в режиме ведомого — диаграммами на рис. 20.19, 20.21,
19-23 и 20.24.
• TXRDY: регистр временного хранения информации передачи готов (ав-
томатически устанавливается/сбрасывается).
Бит TXRDY в режиме ведущего:
О = содержимое регистра временного хранения информации передачи
не было перемещено в сдвиговый регистр. Бит сбрасывается при записи
в регистр THR.
1 = как только байт данных перемещается из THR во внутреннее сдви-
гающее устройство или если обнаруживается NACK, бит TXRDY устанав-
ливается одновременно с битами ТХСОМР и NACK. Бит TXRDY также
устанавливается, когда устанавливается бит MSEN (разрешается TWI).
Поведение бита TXRDY в режиме ведущего иллюстрируется диаграм-
мами на рис. 20.5.
Бит TXRDY в режиме ведомого:
0 = как только данные были записаны в регистр THR, но до того, как
эти данные были переданы и подтверждены (АСК или NACK).
1 = указывает, что регистр THR пуст и что данные были переданы
и подтверждены.
Если бит TXRDY в высоком уровне и если логикой TWI был обнару-
жен NACK, то передача будет остановлена. Таким образом, когда TRDY =
= NACK = 1, программа не должна заполнять данными THR, чтобы из-
бежать их потери.
Поведение бита TXRDY в режиме ведомого иллюстрируется диаграм-
мами на рис. 20.18, 20.20, 20.23 и 19.24.
* SVREAD: чтение ведомого (автоматически устанавливается/сбрасы-
вается).
Этот бит используется только в режиме ведомого. Когда бит SVACC на-
ходится в низком уровне (никакой доступ к ведомому не был обнаружен)
бит SVREAD является незначащим.
0 = указывает, что ведущим устройством выполнен доступ для записи.
1 = указывает, что ведущим устройством выполнен доступ для чтения.
Поведение бита SVREAD иллюстрируется диаграммами на рис. 20.18,
20.19, 20.23, 20.24.
• SVACC: доступ к ведомому (автоматически устанавливается/сбрасыва-
ется).
Этот бит используется только в режиме ведомого.
0 = к TWI нет обращения. Бит SVACC автоматически сбрасывается по-
сле того, как логика TWI обнаруживает NACK или условие STOP.
1 = указывает, что последовательность дешифровки адреса дала в ре-
зультате совпадение (ведущий передал на шину адрес, совпавший с со-
держимым SADR). Бит SVACC остается в высоком уровне до обнаружения
NACK или условия STOP.
Поведение бита SVACC иллюстрируется диаграммами на рис. 20.18,
20.19, 20.23, 20.24.
• GACC: запроса общего вызова (автоматически сбрасывается при чтении).
Этот бит используется только в режиме ведомого.
0 = никакой запрос общего вызова не был обнаружен.
1 = запрос общего вызова был обнаружен. После обнаружения запроса
общего вызова программа может декодировать команды, которые следуют
за адресом общего вызова и последовательность программирования.
Поведение бита GACC иллюстрируется диаграммами на рис. 20.22.
• OVRE: ошибка переполнения (автоматически сбрасывается при чтении).
Этот бит используется только в режиме ведомого.
О = регистр RHR не был загружен, в то время как бит RXRDY был
установлен.
Л 1 = регистр RHR был загружен, в то время как бит RXRDY был установ-
ил. Сбрасывается путем чтения регистра SR, когда бит ТХСОМР установлен.
* NACK: неподтверждение (автоматически сбрасывается при чтении).
Бит NACK в режиме ведущего:
О = каждый байт данных был правильно принят удаленным ведомым
fWI-компонентом.
1 = байт данных не был подтвержден удаленным ведомым TWI-
компонентом. Этот бит устанавливается одновременно с битом ТХСОМР.
Бит NACK в режиме чтения ведомого:
О = каждый байт данных был правильно принят удаленным ведущим
TWI-компонентом.
1 = в режиме чтения байт данных не был подтвержден удаленным веду-
щим TWI-компонентом. Когда бит NACK установлен, программа не долж-
на заполнять регистр THR, даже если установлен бит TXRDY, потому что
это означает, что удаленный ведущий остановил передачу данных или по-
вторно инициализирует ее.
В режиме записи ведомого все данные подтверждаются TWI.
* ARBLST: арбитраж потерян (автоматически сбрасывается при чтении).
Этот бит используется только в режиме ведущего.
О = арбитраж выигран.
1 = арбитраж потерян. Другое ведущее устройство, подключенное
к шине TWI, выиграло арбитраж. Одновременно устанавливается бит ТХ-
СОМР.
* SCLWS: состояние ожидания синхросигнала (автоматически устанав-
ливается/сбрасывается).
Этот бит используется только в режиме ведомого.
О = синхросигнал не «затягивается».
1 = синхросигнал «затягивается». Регистр THR/RHR не заполнен/осво-
божден перед записью/приемом нового байта.
Поведение бита SCLWS иллюстрируется диаграммами на рис. 20.20,
20.21.
• EOSACC: окончание доступа к ведомому (автоматически сбрасывается
при чтении).
Этот бит используется только в режиме ведомого.
0 = выполняется доступ к ведомому.
1 = доступ к ведомому закончен. Бит EOSACC автоматически устанав-
ливается, как только сбрасывается бит SVACC.
Поведение бита EOSACC иллюстрируется диаграммами на рис. 20.23,
Рис. 20.24.
• ENDRX: конец буфера приема (RX).
Этот бит используется только в режиме ведущего.
0 = содержимое RCR не достигло 0 после последней записи в RCR или
RNCR.
1 = содержимое RCR достигло 0 после последней записи в RCR или
RNCR.
Замечание. Регистр счетчика приема RCR и регистр счетчика следую,
щего приема RNCR не входят в состав пользовательского интерфейса TWI
а относятся к PDCA.
• ENDTX: конец буфера передачи (ТХ).
Этот бит используется только в режиме ведущего.
О = содержимое TCR не достигло 0 после последней записи в TCR или
TNCR.
1 = содержимое TCR достигло 0 после последней записи в TCR или
TNCR.
Замечание. Регистр счетчика передачи TCR и регистр счетчика следу-
ющей передачи TNCR не входят в состав пользовательского интерфейса
TWI, а относятся к PDCA.
• RXBUFF: буфер приема (RX) полон.
Этот бит используется только в режиме ведущего.
О = RCR или RNCR имеет значение, отличное от 0.
1 = и RCR, и RNCR имеют значение, равное 0.
• TXBUFE: буфер передачи (ТХ) пуст.
Этот бит используется только в режиме ведущего.
0 = TCR или TNCR имеет значение, отличное от 0.
1 = и TCR, и TNCR имеют значение, равное 0.
20.3.7. Регистры разрешения/запрещения/маски прерываний
от TWI IER/IDR/IMR
Битовая структура каждого из этих регистров показана в табл. 20.12.
Табл. 20.12. Битовая структура каждого из регистров разрешения/запреще-
ния/маски прерываний от TWI IER/IDR/IMR
31 30 29 28 27 26 25 24 —
- - - - - - - -
23 22 21 20 19 18 17 16 .
- - - - - - - -
15 14 13 12 11 10 9 8
TXBUFE RXBUFF ENDTX ENDRX EOSACC SCL_WS ARBLST NACK,
7 6 5 4 3 2 1 0
- OVRE GACC SVACC - TXRDY RXRDY TXCOMP_
Для регистра IER:
* ТХСОМР: разрешение прерывания по окончании передачи.
. RXRDY: разрешение прерывания по готовности регистра временного
хранения данных приема.
н . TXRDY: разрешение прерывания по готовности регистра временного
хранения данных передачи.
* SVACC: разрешение прерывания при доступе к ведомому.
• GACC: разрешение прерывания от запроса общего вызова.
* OVRE: разрешение прерывания от ошибки переполнения.
* NACK: разрешение прерывания при неподтверждении.
• ARBLST: разрешение прерывания от потери арбитража.
• SCL_WS: разрешение прерывания от состояния ожидания синхро-
сигнала.
• EOSACC: разрешение прерывания при окончании доступа к ведомому.
• ENDRX: разрешение прерывания при окончании буфера приема.
’ ENDTX: разрешение прерывания при окончании буфера передачи.
« RXBUFF: разрешение прерывания при заполнении буфера приема.
* TXBUFE: разрешение прерывания при опустении буфера передачи.
О = никакого эффекта.
1 = разрешить соответствующее прерывание.
Для регистра IDR:
• ТХСОМР: запрещение прерывания по окончании передачи.
• RXRDY: запрещение прерывания по готовности регистра временного
хранения данных приема.
* TXRDY: запрещение прерывания по готовности регистра временного
хранения данных передачи.
* SVACC: запрещение прерывания при доступе к ведомому.
* GACC: запрещение прерывания от запроса общего вызова.
* OVRE: запрещение прерывания от ошибки переполнения.
* NACK: запрещение прерывания при неподтверждении.
* ARBLST: запрещение прерывания от потери арбитража.
* SCL WS: запрещение прерывания от состояния ожидания синхро-
сигнала.
• EOSACC: запрещение прерывания при окончании доступа к ведомому.
* ENDRX: запрещение прерывания при окончании буфера приема.
* ENDTX: запрещение прерывания при окончании буфера передачи.
* RXBUFF: запрещение прерывания при заполнении буфера приема.
* TXBUFE: запрещение прерывания при опустении буфера передачи.
О = никакого эффекта.
1 = запретить соответствующее прерывание.
Для регистра IMR:
* ТХСОМР: маска прерывания по окончании передачи.
• RXRDY: маска прерывания по готовности регистра временного хранения
Данных приема.
• TXRDY: маска прерывания по готовности регистра временного хранения
Данных передачи.
* SVACC: маска прерывания при доступе к ведомому.
* GACC: маска прерывания от запроса общего вызова.
* OVRE: маска прерывания от ошибки переполнения.
* NACK: маска прерывания при неподтверждении.
* ARBLST: маска прерывания от потери арбитража.
* SCL WS: маска прерывания от состояния ожидания синхросигнала.
* EOSACC: маска прерывания при окончании доступа к ведомому.
* ENDRX: маска прерывания при окончании буфера приема.
* ENDTX: маска прерывания при окончании буфера передачи.
* RXBUFF: маска прерывания при заполнении буфера приема.
• TXBUFE: маска прерывания при опустении буфера передачи.
О = соответствующее прерывание запрещено.
1 = соответствующее прерывание разрешено.
20.3.10. Регистр временного хранения информации приема
TWI RHR
Битовая структура этого регистра показана в табл. 20.13.
Табл. 20.13. Битовая структура регистра временного хранения информации
приема TWI RHR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
RXDATA __
* RXDATA: информация приема, временно хранящаяся в ведущем или
ведомом устройстве.
20.3.11. Регистр временного хранения информации передачи
TWI THR
Битовая структура этого регистра показана в табл. 20.14.
Табл. 20.14. Битовая структура регистра временного хранения информации
передачи TWI THR
31 30 29 28 27 26 25 24
- - - - - - - -
Табл. 20.14. (окончание)
''''''я 22 21 20 19 18 17 16
- - - - - - -
~ 15 14 13 12 11 10 9 8
- - - - - - -
" 7 6 1 5 4 3 2 1 0
TXDATA
• TXDATA: информация передачи, временно хранящаяся в ведущем или
ведомом устройстве.
ГЛАВА 21
СИНХРОННЫЙ
ПОСЛЕДОВАТЕЛЬНЫЙ
КОНТРОЛЛЕР (SSC)
21.1. Основные особенности и общее описание
Синхронный последовательный контроллер (SSC), входящий в состав всех
МК AT32UC3, имеет следующие основные особенности:
• обеспечивает последовательный синхронный обмен данными
с внешними устройствами в формате, используемом в аудио и теле-
коммуникационных приложениях;
• содержит независимые друг от друга приемник и передатчик с об-
щим для них делителем синхросигнала;
• связан с двумя каналами PDCA, чтобы уменьшить загрузку ЦПУ;
• предоставляет возможность синхронизации фрейма с перестраивае-
мыми конфигурацией и длительностью данных;
• приемник и передатчик могут быть сконфигурированы для автома-
тического старта или старта по различным событиям, детектируе-
мым по синхросигналу фрейма;
• приемник и передатчик имеют трехпроводный интерфейс: линии
данных TD/RD, линии синхронизации TK/RK и линии синхрони-
зации фрейма TF/RF.
Синхронный последовательный контроллер обеспечивает синхронный
обмен данными между МК и внешними устройствами. SSC, поддержива-
ет несколько последовательных протоколов синхронной передачи данных,
используемых в аудио- и телекоммуникационных приложениях: I2S, Short
Frame Sync, Long Frame Sync и т. п.
Контроллер SSC содержит независимые приемник и передатчик и об-
щий для них делитель синхросигнала. Приемник и передатчик имеют
трехпроводный интерфейс: линии данных TD/RD, линии синхронизации
TK/RK и линии синхронизации фрейма TF/RF. Обмен данными может
программироваться с автоматическим стартом или стартом по различным
событиям, детектируемым по синхросигналу фрейма.
Высокоуровневое программирование контроллера SSC при наличии
двух выделенных каналов PDCA с разрешением до 32 разрядов позволяет
производить непрерывную передачу данных без вмешательства ЦПУ.
Поддерживая связь с двумя каналами PDCA, SSC позволяет органи-
зовывать обмен данными между ЦПУ как устройством высокого уровня
TF
TK
TD
RF
RK
RD
Прерывания от SSC
Рис. 21.1. Блок-схема модуля интерфейса SSC
Драйвер OS и RTOS Управление питанием Управление прерываниями Управление тестированием
SSC
Последовательная передача аудиосигналов Кодек Управление тайм-слотами Управление фреймами Линейный интерфейс
Рис. 21.2. Блок-схема прикладного использования интерфейса SSC в соста-
ве МК
и каким-либо устройством низкого уровня, например, из следующего
перечня:
• с кодеком в режиме ведущего или ведомого;
' с ЦАП через выделенный последовательный интерфейс, например,
через I2S;
' со считывающим устройством магнитных карт.
Блок-схема SSC приведена на рис. 21.1, а блок-схема прикладного ис-
пользования SSC в составе МК — на рис. 21.2.
21.2. Функциональное описание
Описание сигналов МК, относящихся к интерфейсу SSC, приведено
в табл. 21.1.
Табл. 21.1. Описание сигналов МК, относящихся к интерфейсу SSC
Имя вывода Описание вывода Тип вывода '
RF Синхронизация фреймов приемника Вход/выход
RK Синхронизация приемника Вход/выход
RD Данные приемника Вход
TF Синхронизация фреймов передатчика Вход/выход
ТК Синхронизация передатчика Вход/выход
TD Данные передатчика Выход
Линии, используемые интерфейсом SSC для обмена с внешними устрой-
ствами, могут быть мультиплексированы с линиями GPIO.
Перед использованием приемника SSC контроллер GPIO должен быть
сконфигурирован, чтобы задать для линий ввода-вывода приемника SSC
их периферийные функции.
Синхросигнал для SSC генерируется менеджером питания (РМ), поэто-
му перед использованием SSC необходимо сначала сконфигурировать РМ,
чтобы разрешить синхронизацию SSC. Синхросигналом для SSC является
задающая частота (МСК), которая подается на SSC через РМ.
К контроллеру прерываний
Рис. 21.3. Блок-схема функционального блока SSC
К интерфейсу SSC подключена линия прерывания от контроллера пре-
рываний. Обработка прерываний требует конфигурирования контроллера
прерываний перед конфигурированием SSC. Все прерывания от SSC могут
быть разрешены/запрещены через регистр маски прерываний SSC. Каждое
отложенное и незамаскированное прерывание SSC будет устанавливать ак-
тивный уровень на линии прерывания от SSC. Программа обработки пре-
рываний от SSC позволяет получить сведения об источнике прерывания
путем чтения регистра состояния прерываний SSC.
Приемник и передатчик модуля SSC могут функционировать независи-
мо. Вместе с тем, они могут работать синхронно, если приемник использует
синхросигнал передатчика и начинает прием данных, когда начинается пе-
редача. Альтернативно, передатчик может использовать синхросигнал при-
емника и начинать передачу данных, когда начинается прием. Передатчик
и приемник могут программироваться, чтобы работать с внешними синхро-
сигналами, подаваемыми на вывод ТК или RK. Это позволяет интерфейсу
SSC поддерживать одновременно много вариантов обменов данных в режи-
ме ведомого. Максимальное значение частоты синхросигнала, подаваемого
на выводы ТК и RK, не должно превышать половины задающей частоты.
Блок-схема функционального блока SSC приведена на рис. 21.3.
21.2.1. Управление синхронизацией
Частота синхросигнала передатчика SSC может быть сгенерирована из сле-
дующих источников:
• внешняя частота, поступающая на вывод ТК,
• синхросигнал приемника,
• внутренний делитель частоты.
Частота синхросигнала приемника SSC может быть сгенерирована из
следующих источников:
• внешняя частота, поступающая на вывод RK,
• синхросигнал передатчика,
• внутренний делитель частоты.
Кроме того, блок передатчика может выдавать синхросигнал на вывод
ТК, а блок приемника может выдавать синхросигнал на вывод RK. Это по-
зволяет интерфейсу SSC поддерживать много вариантов обмена данными
в режиме ведомого.
Блок-схема делителя частоты интерфейса SSC приведена на рис. 21.4. В ка-
честве входной для делителя используется задающая частота МСК. Делитель
Делитель частоты
Рис. 21.4. Блок-схема делителя частоты интерфейса SSC
Задающая частота
(МСК)
Поделенная частота
при DIV = 1
Поделенная частота = МСК/2
Задающая частота
(МСК)
Поделенная частота
при DIV = 3
Поделенная частота = МСК/6
Рис. 21.5. Деление частоты для формирования синхросигнала SSC
состоит из 12-разрядного счетчика, программируемого битовым полем DIV
в регистре режима синхронизации CMR, и компаратора (с максимальным зна-
чением сравнения — 4095), программируемого также в регистре CMR. Дели-
тель позволяет разделить задающую частоту на максимальное значение, равное
8190. Поделенная частота с выхода делителя может быть подана как в прием-
ник, так и в передатчик. Когда поле DIV программируется значением 0, дели-
тель частоты не используется и остается неактивным. Когда поле DIV имеет
значение, равное или большее 1, поделенная частота равна задающей частоте,
разделенной на удвоенное значение поля DIV. Таким образом, минимальное
значение поделенной частоты равно МСК/2, а максимальное — МСК/8190.
Каждый уровень в импульсной последовательности поделенной частоты име-
ет продолжительность периода задающей частоты, умноженного на значение
DIV. Это гарантирует форму импульсов поделенной частоты типа «меандр»
независимо из того, является ли значение DIV четным или нечетным.
Процесс деления частоты иллюстрируют временные диаграммы, изо-
браженные на рис. 21.5.
21.2.2. Управление синхросигналом передатчика
Синхросигнал передатчика может быть сгенерирован из синхросигнала
приемника, поделенной частоты с выхода делителя или из внешней часто-
ты, поданной на вывод ТК. Выбор синхросигнала передатчика производит-
ся битовым полем CKS регистра TCMR (регистр режима синхронизации
передачи). Синхросигнал передатчика может быть независимо от других
синхросигналов инвертирован с помощью битов CKI регистра TCMR.
Передатчик может также управлять состоянием вывода ТК непрерыв-
но или только во время передачи данных. Режим вывода синхросигнала
конфигурируется регистром TCMR. Инверсия синхросигнала передатчика
(бит CKI) не имеет никакого влияния на выходной синхросигнал. Про'
граммирование регистра TCMR для выбора вывода ТК (поле CKS) и в то
же самое время непрерывная передача синхросигнала на вывод ТК (поле
СКО) может привести к непредсказуемым результатам.
fK (н0>кка)
СИНХР^Г1
приекника
СИНХР»^
С выхода
делителя
Синхросигнал
передатчика
CKG
Рис. 21.6. Управление синхросигналом передатчика SSC
Управление синхросигналом передатчика иллюстрирует блок-схема,
изображенная на рис. 21.6.
21.2.3. Управление синхросигналом приемника
Синхросигнал приемника может быть сгенерирован из синхросигнала пе-
редатчика, поделенной частоты с выхода делителя или из внешней частоты,
поданной на вывод RK. Выбор синхросигнала передатчика производится
битовым полем CKS регистра RCMR (регистр режима синхронизации при-
ема). Синхросигнал приемника может быть независимо от других синхро-
сигналов инвертирован с помощью битов CKI регистра RCMR.
Приемник может также управлять состоянием вывода RK непрерыв-
но или только во время передачи данных. Режим вывода синхросигнала
конфигурируется регистром RCMR. Инверсия синхросигнала приемника
НК (ножка)
Синхросигнал
Нвредатчика
Синхросигнал
° выхода
Делителя
CKG
CKI
Рис. 21.7. Управление синхросигналом приемника SSC
(бит CKI) не имеет никакого влияния на выходной синхросигнал. Цп
граммирование регистра RCMR для выбора вывода RK (поле CKS) и в₽°'
же самое время непрерывная передача синхросигнала на вывод RK (ПоТ°
СКО) может привести к непредсказуемым результатам. Ле
Управление синхросигналом приемника иллюстрирует блок-схема, из0
браженная на рис. 21.7.
21.2.5 . Ограничения для синхросигналов
Как уже упоминалось, передатчик и приемник могут программироваться
для работы с внешними синхросигналами, поступающими на вывод
или RK. В указанном случае максимальная частота синхросигнала, пода-
ваемая на вывод RK, не может превышать следующих значений:
• задающая частота, поделенная на 2, если вывод синхронизации
фреймов приемника является входом;
• задающая частота, поделенная на 3, если вывод синхронизации
фреймов приемника является выходом.
Максимальная частота синхросигнала, подаваемая на вывод ТК, не мо-
жет превышать следующих значений:
• задающая частота, поделенная на 6, если вывод синхронизации
фреймов передатчика является входом;
• задающая частота, поделенная на 2, если вывод синхронизации
фреймов передатчика является выходом.
21.2.6 . Операции передатчика
Блок-схема передатчика SSC приведена на рис. 21.8. Запуск передачи фрей-
ма вызывается так называемым событием старта и может сопровождаться
передачей информации синхронизации перед передачей данных. Событие
старта может быть сконфигурировано с помощью регистра режима син-
низации передачи (TCMR). Синхронизация фрейма конфигурируется
мошью регистра режима фреймов передачи (TFMR).
с П Чтобы передать данные, передатчик использует сдвиговый регистр, син-
низированный синхросигналом передатчика и режим старта, выбранный
Х15°егистре TCMR. Данные, записанные программой в регистр THR, переме-
е ются в сдвиговый регистр в соответствии с выбранным форматом данных.
Когда регистр THR и сдвиговый регистр передачи оказываются пусты-
автоматически устанавливается бит TXEMPTY в регистре SR. Когда
одержимое регистра временного хранения данных передачи перемещается
С сдвиговый регистр передачи, автоматически устанавливается флаг состо-
яния TXRDY в регистре SR, указывая программе, что в регистр временно-
го хранения данных передачи могут быть загружены следующие данные.
21.2.7 . Операции приемника
Блок-схема приемника SSC приведена на рис. 21.9. Запуск приема фрей-
ма вызывается событием старта и может сопровождаться передачей дан-
ных синхронизации перед передачей данных. Событие старта может быть
сконфигурировано с помощью регистра режима синхронизации приема
(RCMR). Синхронизация фрейма конфигурируется с помощью регистра
режима фреймов приема (RFMR).
При приеме приемник использует сдвиговый регистр, синхронизируе-
мый синхросигналом приемника и режим старта, выбранный в регистре
RCMR. Данные перемещаются из сдвигового регистра в соответствии с вы-
бранным форматом данных.
Когда сдвиговый регистр приемника оказывается полным, логика SSC
перемещает данные из него в регистр временного хранения данных приема
и автоматически устанавливается флаг состояния RXRDY в регистре SR,
указывая программе, что принятые данные могут читаться из регистра вре-
менного хранения данных приема.
Если следующее перемещение данных происходит прежде, чем будет
прочитан регистр RHR, автоматически устанавливается флаг OVERUN
SSC_RFMR FSLEN SSC_RFMR DATLEN
Рис. 21.9. Блок-схема приемника SSC
в регистре SR и содержимое сдвигового регистра приемника перемещаете
в регистр RHR. 4
21.2.8 . Старт передачи
Как передатчик, так и приемник могут быть сконфигурированы на запуск
их операций, когда происходит заданное событие старта, выбираемое со-
ответственно в битовом поле выбора старта передачи (START) регистра
TCMR и битовом поле выбора старта приема (START) регистра RCMR.
Старт может быть независимо запрограммирован при наступлении сле-
дующих событий:
• непрерывно. В этом случае передача начинается, как только слово
данных записано в регистр THR, а прием начинается, как только
разрешается приемник;
• синхронно с передатчиком/приемником;
• по детектированию отрицательного/положительного перепада на
выводе TF/RF;
• по детектированию низкого/высокого уровня на выводе TF/RF;
• по детектированию изменения уровня или перепада на выводе TF/RF.
Старт может программироваться по наступлению одного и того же со-
бытия с обеих сторон в регистрах синхронизации передачи/приема (RCMR/
TCMR). Таким образом, старт может быть инициирован на выводе TF или
RF. Кроме того, прием может начаться, когда данные детектируются в би-
товом потоке в соответствии с функцией сравнения.
Детектирование заданного события на выводе TF/RF производится
с помощью битового поля FSOS регистра режима фреймов передачи/при-
ема (TFMR/RFMR).
Старт = низкий уровень на TF
Старт = отрицательный перепад
на TF
Старт = высокий уровень на TF
Старт = положительный перепад
на TF
Старт = изменение уровня на TF
Старт = любой перепад на TF
Рис. 21.10. Режим старта передачи
Старт = низкий уровень на TF
Старт = отрицательный перепад
на TF
Старт = высокий уровень на TF
Старт = положительный перепад
на TF
Старт = изменение уровня на TF
Старт = любой перепад на TF
Рис. 21.11. Режим старта приема
Режим старта передачи иллюстрируют диаграммы, изображенные на
рис. 21.10, а режим старта приема — диаграммы, изображенные на рис. 21.11.
21.2.9 . Синхронизация фреймов
Как передатчик, так и приемник SSC имеют выводы синхронизации
фреймов TF и RF, которые могут конфигурироваться, чтобы генерировать
различные виды сигналов синхронизации фреймов. Битовое поле выбо-
ра вывода синхроимпульсов фреймов (FSOS) в регистре режима фреймов
приемника (RFMR) и в регистре режима фреймов передатчика (TFMR) ис-
пользуется, чтобы выбрать требуемую форму последовательности синхро-
низации фреймов. При этом поддерживаются следующие возможности:
• задание низких или высоких уровней в течение передачи данных,
• задание высоких уровней до начала передачи данных или переклю-
чения.
Если форма импульса последовательности синхронизации фреймов
выбрана, то в битовом поле продолжительности синхронизации фреймов
(FSLEN) в регистрах RFMR и TFMR может быть задана продолжитель-
ность этого импульса в пределах от 1 до 16 битовых интервалов.
Периодичность выходного синхроимпульса фрейма передатчика и при-
емника может задаваться в битовом поле выбора делителя периода (PERIOD)
Регистров RCMR и TCMR.
21.2.9.1 . Синхронизация фреймов данных
Сигнал синхронизации фреймов данных передатчика или приемника
Представляет собой специфический тэг (фрагмент) в составе синхросиг-
нала фрейма. В течение синхросигнала фрейма приемник может проц3
вести выборку на линии RD и поместить выбранные данные в регистр
временного хранения синхронизации приема, а передатчик может переме,
стать содержимое регистра временного хранения синхронизации переда^
в сдвиговый регистр передачи. Длина поля данных, которая будет выбраца/
сдвинута в течение синхросигнала фрейма, задается битовым полем FSLEN
в регистре RFMR/TFMR.
Выполнение операции синхронизации фреймов данных приема, если про-
должительность синхросигнала фрейма равна или меньше, чем время задерж-
ки между моментом события старта и моментом начала фактического приема
данных, осуществяется путем операции выборки данных в регистр временно-
го хранения синхронизации приема через сдвиговый регистр приема.
Операция синхронизации фрейма выполняется передатчиком, только
если установлен бит разрешения синхронизации фрейма данных (FSDEN)
в регистре TFMR. Если продолжительность синхросигнала фрейма равна
или меньше, чем время задержки между моментом события старта и момен-
том начала фактической передачи данных, нормальная передача имеет прио-
ритет, и данные, содержащиеся в регистре временного хранения синхрониза-
ции передачи, перемещаются в регистр передачи, а затем сдвигаются в нем.
21.2.9.2 . Детектирование перепада синхронизации фреймов
Детектирование логикой SSC перепада синхросигнала фрейма задается
битовым полем FSEDGE в регистре RFMR/TFMR. При детектировании
заданного перепада синхросигнала фрейма (сигнала на выводе RF/TF)
автоматически устанавливается соответствующий флаг RXSYN/TXSYN
в регистре состояния SR.
21.2.10 . Режимы функции сравнения при приеме
Режимы сравнения при приеме иллюстрируются временными диаграмма-
ми, изображенными на рис. 21.12. Функция сравнения 0 может быть задей-
ствована как условие (событие), по которому инициируется старт приема.
В этом случае приемник сравнивает при каждой новой выборке послед-
ние принятые биты FSLEN с младшими битами FSLEN, содержащимися
в регистре сравнения 0 приема (RC0R). Когда детектируется выполнение
FSLEN
До 16 бит
(4 в этом примере)
STDLY
DATLEN
Рис. 21.12. Режимы сравнения при приеме
язанн°го Условия старта, программа может сконфигурировать приемник,
обы заново запустить прием данных с записью нового содержимого в ре-
чТ тр сравнения 0, или производить непрерывный прием до задействова-
г я функции сравнения 1. Этот выбор может быть сделан с помощью бита
(STOP) регистра RCMR.
21.2.11 . Формат данных
формат фреймирования (кадрирования) данных как передатчика, так и при-
емника конфигурируется в регистре режима фреймов передатчика (TFMR)
и регистре режима фреймов приемника (RFMR) соответственно. В любом
случае пользователь может независимо выбрать следующие параметры:
• событие старта, которое начинает передачу данных (START);
• количество битовых интервалов задержки между событием старта
и первым битом данных (STTDLY);
• длительность данных (DATLEN);
• количество битов данных, которые будут переданы для каждого
случая старта (DATNB);
• длительность синхронизации для каждого случая старта (FSLEN);
• очередность битов: следование сначала старшего или младшего зна-
чащего разряда (MSBF).
Дополнительно передатчик может использоваться для передачи син-
хросигналов и выбора уровня, устанавливаемого на выводе TD, когда нет
операций передачи данных. Это можно сделать соответственно с помощью
битовых полей разрешения синхронизации фреймов данных (FSDEN)
и значения данных по умолчанию (DATDEF) в регистре TFMR.
Регистры интерфейса SSC, связанные с фреймом данных, перечислены
в табл. 21.2. Временные диаграммы, изображенные на рис. 21.13, иллю-
стрируют формат фрейма передачи и приема в режиме старта передачи по
перепаду/импульсу. Временные диаграммы, изображенные на рис. 21.14,
иллюстрируют формат фрейма передачи, а на рис. 21.15 — формат фрейма
приема в непрерывном режиме.
Табл. 21.2. Регистры фреймов данных SSC
Пере- датчик При- емник Битовое поле Длина Комментарий
TFMR RFMR DATLEN До 32 Размер слова
TFMR RFMR DATNB До 16 Количество слов, передаваемых в фрейме
TFMR RFMR MSBF Старший значащий разряд сначала
TFMR RFMR FSLEN До 16 Размер регистра синхронизации данных
TFMR DATDEF 0 или 1 Значение данных по умолчанию в конце передачи
TFMR FSDEN Разрешение посылки TSHR
TCMR RCMR PERIOD До 512 Размер фрейма
__TCMR RCMR STTDLY До 255 Размер задержки перед стартом передачи
Старт
Старт
PERIOD
TF/RF
FSLEN
И~!о умолчании^ Данные синхр?
TD
(Если FSDEN = 1)
Из SSCTHR
Данные
Из SSC_THR
TD
(Если FSDEN = 0)
RD
Из SSC_TSHF( Из DATDEF
По умолчанию
Из DATDEF
^Данные синхр^ ^Игнорируется^
В SSC_RSHR
Из SSC_THR
Из SSC_THR
Примечание 1
STTDLY
В SSC.RHR
Данные
В SSC_RHR
Из DATDEF
По умолчанию
Из DATDEF
^Игнорируется^ ^данные синхр^
DATLEN
DATLEN
DATNB
Пример старта по отрицательному перепаду TF/RF
Рис. 21.13. Формат фрейма передачи и приема в режиме старта передачи по
перепаду/импульсу
Старт 1. ТХЕМPTY устанавливается в 1
2. Производится запись в SSC.THR
Примечание. 1. STTDLY сброшен в 0. В этом примере THR загружается дважды.
Значение FSDEN не оказывает никакого влияния на передачу
Данные синхронизации не могут передаваться в непрерывном режиме.
Рис. 21.14. Формат фрейма передачи в непрерывном режиме
Старт = разрешение приемника
RD
В SSC.RHR
Данные
В SSC.RHR
DATLEN DATLEN
Примечание 1 STTDLY сбрасывается в 0
Рис. 21.15. Формат фрейма приема в непрерывном режиме
21.2.12 . Режим «шлейфа»
Приемник SSC может быть сконфигурирован, чтобы принимать передачи
от передатчика SSC в пределах одного и того же интерфейса, т. е. по «ко-
роткому шлейфу». Указанный режим задается путем установки бита режи-
шлейфа» (LOOP) в регистре RFMR. В этом случае внутри МК линия
соединяется с линией TD, линия RF соединяется с линией TF, а ли-
RK — с линией ТК.
ма «
RP
цЦЯ
21.2.13 . Прерывания от SSC
большинство битов в регистре SR имеет соответствующие им биты в ре-
гйСтрах управления прерываниями. Интерфейс SSC может конфигуриро-
ваться, чтобы генерировать прерывание при наступлении соответствую-
щего события. Управление прерываниями осуществляется путем записи
в регистр IER (регистр разрешения прерываний) и регистр IDR (регистр
запрещения прерываний). Эти регистры соответственно разрешают или
отключают соответствующее прерывание, устанавливая или сбрасывая
соответствующий бит в регистре IMR (регистр маски прерываний), ко-
торый управляет генерацией прерываний, переводя в активный уровень
линию прерываний от SSC, связанную с контроллером прерываний.
Блок-схема подсистемы прерываний от SSC приведена на рис. 21.16.
21.3. Примеры приложений SSC
Некоторые стандартные приложения SSC, рекомендуемые производителем,
иллюстрируются приведенными ниже рисунками.
На рис. 21.17 приведена блок-схема приложения SSC для передачи ауди-
оданных, на рис. 21.18 — для обмена данными с кодеком, а на рис. 21.19 —
для обмена данными с двумя кодеками с организацией временного раз-
деления (тайм-слотов).
Рис. 21.16. Блок-схема подсистемы прерываний от SSC
Синхросигнал послед данных
___________(SCLK)__________
Вход послед данных
Синхросигнал фреймов
(FSYNC)
Выход послед данных
Выход послед данных
Вход послед данных
Синхросигнал послед
данных (SCLK)
Синхросигнал фреймов
(FSYNC)
Рис. 21.18. Блок-схема приложения SSC для обмена данными с кодеком
Рис. 21.19. Блок-схема приложения SSC для обмена данными с двумя коде-
ками с организацией временного разделения (тайм-слотов)
21.4. Пользовательский интерфейс
Пользовательский интерфейс модуля SSC представлен специальными р£"
гистрами МК, перечисленными в табл. 21.3.
Табл. 21.3. Отображение регистров SSC
^Сме- щение Регистр Имя Доступ Значение после сброса
^0x0 Регистр управления SSC CR Только запись -
0x4 Регистр режима синхронизации SSC CMR Чтение/запись 0x0
0x8 Зарезервировано - - -
ОхС Зарезервировано - - -
ОхЮ Регистр режима синхронизации приема SSC RCMR Чтение/запись 0x0
0x14 Регистр режима фреймов приема SSC RFMR Чтение/запись 0x0
0x18 Регистр режима синхронизации передачи SSC TCMR Чтение/запись 0x0
0х1С Регистр режима фреймов пере- дачи SSC TFMR Чтение/запись 0x0
0x20 Регистр временного хранения данных приема SSC RHR Только чтение 0x0
0x24 Регистр временного хранения данных передачи SSC THR Только запись -
0x28 Зарезервировано - - -
0х2С Зарезервировано - - -
0x30 Регистр временного хранения дан- ных синхронизации приема SSC RSHR Только чтение 0x0
0x34 Регистр временного хранения дан- ных синхронизации передачи SSC TSHR Чтение/запись 0x0
0x38 Регистр сравнения 0 приема SSC RC0R Чтение/запись 0x0
ОхЗС Регистр сравнения 1 приема SSC RC1R Чтение/запись 0x0
0x40 Регистр статуса SSC SR Только чтение 0х000000СС
0x44 Регистр разрешения прерываний от SSC IER Только запись -
0x48 Регистр запрещения прерываний от SSC IDR Только запись -
0х4С Регистр маски прерываний от SSC IMR Только чтение 0x0
0x50— OxFC Зарезервировано - - -
0x100— ^0x124 Зарезервировано для периферий- ного контроллера данных (PDCA) - - -
21.4.1. Регистр управления SSC CR
битовая структура регистра показана в табл. 21.4.
Табл. 21.4. Битовая структура регистра правления SSC CR
31 30 29 28 27 26 25 24^
- - - - - - - -
23 22 21 20 19 18 17 пГ""
- - - - - - - —.
15 14 13 12 11 10 9 8^
SWRST - - - - - TXDIS тхВГ
7 6 5 4 3 2 1 0
- - - - - - RXDIS rxejT
* RXEN: разрешение приема.
0: никакого эффекта.
1: разрешить прием, если не установлен бит RXDIS.
* RXDIS: отключение приема.
0: никакого эффекта.
1: отключить прием. Если в этот момент происходит прием символа, то
отключение происходит в конце приема текущего символа.
* TXEN: разрешение передачи.
0: никакого эффекта.
1: разрешить передачу, если не установлен бит TXDIS.
* TXDIS: отключение передачи.
0: никакого эффекта.
1: отключить передачу. Если в этот момент передается символ, то от-
ключение происходит в конце передачи текущего символа.
* SWRST: программный сброс SSC.
0: никакого эффекта.
1: выполнить программный сброс. Имеет приоритет над любым другим
битом регистра CR.
21.4.2. Регистр режима синхронизации SSC CMR
Битовая структура регистра показана в табл. 21.5.
Табл. 21.5. Битовая структура регистра режима синхронизации SSC CMR
31 30 29 28 27 26 25 24 .
- - - - - - -
23 22 21 20 19 18 17 16 __
- - - - - - -
Табл. 21.5. (окончание)
14 13 12 и 1 ю | 9 8
- - - DIV
" 7 J 1 5 | 4 | 1 3 | 2 | 1 0
"" DIV
• DIV: делитель частоты МСК.
0: делитель не активен.
Любое другое значение: поделенная частота равна задающей часто-
те разделенной на удвоенное значение поля DIV. Максимальная частота
следования битов при обмене равна МСК/2, минимальная — МСК/(2 х
х4095) = МСК/8190.
21.4.3. Регистр режима синхронизации приема SSC RCMR
Битовая структура регистра показана в табл. 21.6.
Табл. 21.6. Битовая структура регистра режима синхронизации приема SSC
RCMR
31 30 29 28 27 26 25 24
PERIOD
23 22 21 20 19 18 17 16
STDDLY
15 14 13 12 11 10 9 8
- - - STOP START
7 6 5 4 3 2 1 0
CKG CKI CKO CKS
* CKS: выбор синхросигнала приемника.
Возможные значения этого поля приведены в табл. 21.7.
Табл. 21.7. Возможные значения битового поля CKS
CKS Выбранный источник синхросигнала приемника
0x0 0x1 0x2 Поделенная частота Синхросигнал ТК Вывод RK
0x3
Зарезервировано
• CKO: выбор режима вывода синхросигнала приемника.
Возможные значения этого поля приведены в табл. 21.8.
Табл. 21.8. Возможные значения битового поля СКО
СКО Режим вывода синхросигнала приемника Вывод RR
0x0 0x1 0x2 Нет Только вход Непрерывный синхросигнал приемника Выход Синхросигнал приемника только Выход во время обмена данными
0x3—0x7 Зарезервировано
* CKI: инверсия синхросигнала приемника.
0: выборка на входах данных (сигналов данных и синхросигналов фрей-
мов) производится по отрицательному перепаду. Вывод синхросигнала
фреймов производится путем сдвига по положительному перепаду синхро-
сигнала приемника.
1: выборка на входах данных (сигналов данных и синхросигналов фрей-
мов) производится по положительному перепаду. Вывод синхросигнала
фреймов производится путем сдвига по отрицательному перепаду синхро-
сигнала приемника.
Бит CKI затрагивает только синхросигнал приемника, а не выходной
синхросигнал на выводе МК.
* CKG: выбор условия пропускания синхросигнала приемника.
Возможные значения этого поля приведены в табл. 21.9.
Табл. 21.9. Возможные значения битового поля CKG
CKG Условие пропускания синхросигнала приемника
0x0 0x1 Постоянное пропускание (непрерывный синхросигнал) Синхросигнал приемника разрешен, только когда RF в низком уровне
0x2 Синхросигнал приемника разрешен, только когда RF в высоком уровне
0x3 Зарезервировано
* START: выбор условия (события) старта приема.
Возможные значения этого поля приведены в табл. 21.10.
Табл. 21.10. Возможные значения битового поля START
START Условие (события) старта приема
0x0 Непрерывно, как только разрешен приемник, и немедленно после окончания передачи предыдущих данных
0x1 При старте передачи
Табл. 21.10.
(окончание)
-^START Условие (события) старта приема
0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9-OxF При детектировании низкого уровня сигнала RF При детектировании высокого уровня сигнала RF При детектировании отрицательного перепада сигнала RF При детектировании положительного перепада сигнала RF При детектировании любого изменения уровня сигнала RF При детектировании любого перепада сигнала RF Совпадение при функции сравнения 0 Зарезервировано
• STOP: выбор условия (события) окончания приема.
0: после завершения передачи данных со стартом по совпадению при
функции сравнения 0 приемник останавливает передачу данных и ожидает
нового совпадения при сравнении 0.
1: после старта приема по совпадению при функции сравнения 0 при-
емник работает в непрерывном режиме, пока не будет детектировано со-
впадение при сравнении 1.
* STTDLY: время задержки старта приема.
Если поле STTDLY не равно 0, то между событием старта и фактиче-
ским стартом приема задано время задержки, равное STTDLY тактовых
циклов. Когда приемник конфигурируется на начало приема синхронно
с передатчиком, указанное время задержки также действует. Необходимо
заметить, что корректная установка поля STTDLY очень важна. Если про-
граммой задается значение поля STTDLY, то это должно быть сделано от-
носительно принимаемых данных синхронизации.
* PERIOD: выбор делителя периода приема.
Этим битовым полем выбирается значение делителя выбранной ча-
стоты синхронизации приема, чтобы генерировать новый синхросигнал
Фреймов. Если это поле равно 0, то синхросигнал фреймов не генериру-
ется. Если это поле не равно 0, то генерируется синхросигнал фреймов
приема с периодом, равным 2 х (PERIOD+1) периодов синхросигнала
приема.
21.4.4. Регистр режима синхронизации фреймов приема SSC
RFMR
битовая структура регистра показана в табл. 21.11.
Табл. 21.11. Битовая структура регистра режима синхронизации фреймов
приема SSC RFMR
31 30 29 28 27 26 25 24
_ FSLENHI - - - FSEDGE
• DATLEN: длительность данных.
0: запрещенное значение (длительность данных, равная 1 бит, не под.
держивается).
Любое другое значение: поток битов содержит (DATLEN + 1) битов
данных. Кроме того, это поле определяет размер передачи, выполняемой
PDCA2 для приемника. Если значение DATLEN меньше или равно 7, то
передача данных производится байтами. Если значение DATLEN лежит
между 8 и 15 (включительно), то передача данных производится полусло-
вами, а для любого другого значения DATLEN передача данных произво-
дится 32-разрядными словами.
* LOOP: режим «шлейфа».
0: режим нормальных операций.
1: линия RD управляется линией TD, линия RF управляется линией
TF, а линия ТК управляется линией RK.
* MSBF: СЗР сначала.
0: МЗР регистра данных выбирается сначала в потоке битов.
1: СЗР регистра данных выбирается сначала в потоке битов.
* DATNB: количество данных в фрейме.
Это поле определяет количество слов данных, которое будет при-
нято после каждого старта передачи. Это количество равно значению
(DATNB + 1).
* FSLEN: продолжительность синхронизации фрейма приема.
Это поле определяет продолжительность синхросигнала фрейма приема
и количество битов, выбранных и сохраненных в регистре данных сиН"
хронизации приема. Когда соответствующий режим выбран полем STAR*
в регистре режима синхронизации приема, это поле также определяет про*
должительность выбранных данных для сравнения с содержимым регистра
сравнения 0 или регистра сравнения 1. Необходимо заметить, что четй'
ре старших значащих бита этого битового поля находятся в битовом поле
FSLENHI.
Длительность импульса равна значению ({FSLENHI, FSLEN} + 1) пе'
риодов синхросигнал приема. Таким образом, если совокупное битово^
поле {FSLENHI, FSLEN} равно 0, то синхросигнал фреймов приема гене
рируется в каждом периоде синхросигнала приема.
. FSOS: выбор формы выходного синхросигнала фрейма приема,
возможные значения этого поля приведены в табл. 21.12.
Табл. 21.12. Возможные значения битового поля FSOS
-—FSOS Выбранная форма выходного синхросигнала фрейма приема Вывод RF
0x0 Нет Только вход
0x1 Отрицательные импульсы Выход
0x2 Положительные импульсы Выход
0x3 Переход в низкий уровень во время передачи данных Выход
0x4 Переход в высокий уровень во время передачи данных Выход
0x5 Переключение при старте каждой передачи данных Выход
0x6—0x7 Зарезервировано Неопределенный
* FSEDGE: детектирование перепада синхросигнала фреймов.
Определяет, какой перепад синхросигнала фреймов генерирует преры-
вание RXSYN в регистре статуса SSC. Возможные значения этого поля
приведены в табл. 21.13.
Табл. 21.13. Возможные значения битового поля FSEDGE
FSEDGE Детектирование перепада синхросигнала фреймов
0x0 Детектирование положительного перепада
0x1 Детектирование отрицательного перепада
* FSLENHI: старшая часть продолжительности синхронизации фрейма
приема.
Четыре старших значащих разряда для битового поля FSLEN.
21.4.5. Регистр режима синхронизации передачи SSC TCMR
Битовая структура регистра показана в табл. 21.14.
Табл. 21.14. Битовая структура регистра режима синхронизации передачи
SSC TCMR
30 29 28 27 26 25 24
PERIOD
ч-----------
__23 22 21 20 19 18 17 16
STDDLY
Табл. 21.14. (окончание)
15 14 13 12 11 1 1 2_ 8
- - - - START
7 5 4 1 г L 2 1 0 "
CKG CKI СКО CKS
* CKS: выбор синхросигнала передатчика.
Возможные значения этого поля приведены в табл. 21.15.
Табл. 21.15. Возможные значения битового поля CKS
CKS Выбранный источник синхросигнала передатчика
0x0 0x1 0x2 0x3 Поделенная частота Синхросигнал RK Вывод ТК Зарезервировано
* СКО: выбор режима вывода синхросигнала передатчика.
Возможные значения этого поля приведены в табл. 21.16.
Табл. 21.16. Возможные значения битового поля СКО
СКО Режим вывода синхросигнала передатчика Вывод ТК
0x0 0x1 0x2 Нет Только вход Непрерывный синхросигнал передатчика Выход Синхросигнал передатчика только во время Выход обмена данными
0x3—0x7
Зарезервировано
* CKI: инверсия синхросигнала передатчика.
0: вывод данных (сигналов данных и синхросигналов фреймов) произ-
водится путем сдвига по отрицательному перепаду синхросигнала пере-
датчика. Выборка на входе синхросигнала фреймов производится по по-
ложительному перепаду.
1: вывод данных (сигналов данных и синхросигналов фреймов) произ-
водится путем сдвига по положительному перепаду синхросигнала перс*
датчика. Выборка на входе синхросигнала фреймов производится по от-
рицательному перепаду.
Бит CKI затрагивает только синхросигнал передатчика, а не выходной
синхросигнал на выводе МК.
• CKG: выбор условия пропускания синхросигнала передатчика.
Возможные значения этого поля приведены в табл. 21.17.
Табл. 21.17. Возможные значения битового поля CKG
CKG Условие пропускания синхросигнала передатчика
0x0 Постоянное пропускание (непрерывный синхросигнал)
0x1 Синхросигнал передатчика разрешен, только когда TF в низком уровне
0x2 Синхросигнал передатчика разрешен, только когда TF в высоком уровне
0x3 Зарезервировано
• START: выбор условия (события) старта передачи.
Возможные значения этого поля приведены в табл. 21.18.
Табл. 21.18. Возможные значения битового поля START
START Условие (события) старта передачи
0x0 Непрерывно, как только слово записано в регистр THR (если передатчик разрешен), и немедленно после окончания передачи предыдущих данных
0x1 При старте приема
0x2 При детектировании низкого уровня сигнала TF
0x3 При детектировании высокого уровня сигнала TF
0x4 При детектировании отрицательного перепада сигнала TF
0x5 При детектировании положительного перепада сигнала TF
0x6 При детектировании любого изменения уровня сигнала TF
0x7 При детектировании любого перепада сигнала TF
0x8—OxF Зарезервировано
* STTDLY: время задержки начала передачи.
Если поле STTDLY не равно 0, то между событием старта и фактиче-
ским стартом передачи задано время задержки, равное STTDLY тактовых
Циклов. Когда передатчик программируется на начало передачи синхронно
с приемником, указанное время задержки также действует. Необходимо за-
метить, что корректная установка поля STTDLY очень важна.
* PERIOD: выбор делителя периода передачи.
Этим битовым полем выбирается значение делителя выбранной частоты
синхронизации передачи, чтобы генерировать новый синхросигнал фрей-
мов. Если это поле равно 0, то синхросигнал фреймов не генерируется.
Цели это поле не равно 0, то генерируется синхросигнал фреймов приема
с Периодом, равным 2x(PERIOD+l) периодов синхросигнала передачи.
21.4.6.' Регистр режима синхронизации фреймов передачи
SSC TFMR
битовая структура регистра показана в табл. 21.19.
Табл. 21.19. Битовая структура регистра режима синхронизации фреймов
передачи SSC TFMR
31 1 30 | 29 28 27 26 25 24
FSLENHI - - - FSEDge~
23 22 | 21 | 20 19 | 18 | 17 |
FSDEN FSOS FSLEN ~~
15 14 13 12 11 10 9 8
- - - - DATNB
7 6 5 4 3 2 1 0
MSBF - DATDEF DATLEN
• DATLEN: длительность данных.
0: запрещенное значение (длительность данных, равная 1 бит, не под-
держивается).
Любое другое значение: поток битов содержит (DATLEN + 1) битов
данных. Кроме того, это поле определяет размер передачи, выполняемой
PDCA2 для передатчика. Если значение DATLEN меньше или равно 7, то
передача данных производится байтами. Если значение DATLEN лежит
между 8 и 15 (включительно), то передача данных производится полусло-
вами, а для любого другого значения DATLEN передача данных произво-
дится 32-разрядными словами.
* DATDEF: значение данных по умолчанию.
Этот бит определяет уровень, устанавливаемый на выводе TD, когда
производится передача. Необходимо заметить, что, если этот вывод задан
как мультидрайверный в контроллере GPIO, то работа этого вывода будет
разрешена, только если на выводе TD интерфейса SSC будет установлен
высокий уровень.
• MSBF: СЗР сначала.
0: МЗР регистра данных сдвигается сначала в потоке битов.
1: СЗР регистра данных сдвигается сначала в потоке битов.
* DATNB: количество данных в фрейме.
Это поле определяет количество слов данных, которое будет пере-
дано после каждого начала передачи. Это количество равно значению
(DATNB + 1).
* FSLEN: продолжительность синхронизации фрейма передачи.
Это поле определяет продолжительность синхросигнала фрейма пере-
дачи и количество битов, сдвинутых из регистра синхронизации данных
передачи в случае, если FSDEN = 1. Необходимо заметить, что четыре
старших значащих бита этого битового поля находятся в битовом поле
FSLENHI.
Длительность импульса равна значению ({FSLENHI, FSLEN} + 1) пе-
лодов синхросигнал передачи. Таким образом, если совокупное битовое
Р ле {FSLENHI, FSLEN} равно 0, то синхросигнал фреймов передачи ге-
иериРУется в кажД°м периоде синхросигнала передачи.
. FSOS: выбор формы выходного синхросигнала фрейма передачи.
Возможные значения этого поля приведены в табл. 21.20.
Табл. 21.20. Возможные значения битового поля FSOS
"fsos Выбранная форма выходного синхросигнала фрейма передачи Вывод TF
0x0 Нет Только вход
0x1 Отрицательные импульсы Выход
0x2 Положительные импульсы Выход
0x3 Переход в низкий уровень во время передачи данных Выход
0x4 Переход в высокий уровень во время передачи данных Выход
0x5 Переключение при старте каждой передачи данных Выход
0x6—0x7 Зарезервировано Неопреде- ленный
* FSDEN: разрешение синхросигнала данных фрейма
0: вывод TD находится в заданном по умолчанию значении во время
синхросигнала фрейма передачи.
1: содержимое TSHR сдвигается во время передачи синхросигнала
фрейма передачи.
* FSEDGE: детектирование перепада синхросигнала фреймов.
Определяет, какой перепад синхросигнала фреймов генерирует преры-
вание TXSYN в регистре состояния SSC. Возможные значения этого поля
приведены в табл. 21.21.
Табл. 21.21. Возможные значения битового поля FSEDGE
FSEDGE Детектирование перепада синхросигнала фреймов_______
0x0 Детектирование положительного перепада
0x1 Детектирование отрицательного перепада
• FSLENHI: старшая часть продолжительности синхронизации фрей-
ма передачи.
Четыре старших значащих разряда для битового поля FSLEN.
21.4.7. Регистр временного хранения данных приема SSC
RHR
битовая структура регистра показана в табл. 21.22.
Табл. 21.22. Битовая структура регистра временного хранения данных
ема SSC RHR
31 30 29 28 | 27 26 | 25
RDAT
23 22 21 20 | _19_J 18 17 Г 1б
RDAT
15 14 13 12 11 10 9 8 '
RDAT
7 6 5 4 3 2 1 0
RDAT
* RDAT: данные приема.
Происходит выравнивание вправо независимо от количества разрядов
данных, определенных полем DATLEN в регистре RFMR.
21.4.8. Регистр временного хранения данных передачи SSC
THR
Битовая структура регистра показана в табл. 21.23.
Табл. 21.23. Битовая структура регистра временного хранения данных пере-
дачи SSC THR
31 30 29 28 27 26 25 24
TDAT _
23 22 21 20 19 18 17 16 _
TDAT
15 14 13 12 11 10 9 8
TDAT
7 6 5 4 3 2 1 0____
TDAT
• TDAT: данные передачи.
Происходит выравнивание вправо независимо от количества разряд08
данных, определенных полем DATLEN в регистре TFMR.
21.4.9. Регистр временного хранения данных синхронизации
приема SSC RSHR
рцтояая структура регистра показана в табл. 21.24.
Табл. 21.24. Битовая структура регистра временного хранения данных син-
хронизации приема SSC RSHR
^31 30 29 28 27 26 25 24
- - - - - - -
' 23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
RSDAT
RSDAT
* RSDAT: данные синхронизации приема.
21.4.10. Регистр временного хранения данных
синхронизации передачи SSC TSHR
Битовая структура регистра показана в табл. 21.25.
Табл. 21.25. Битовая структура регистра временного хранения данных син-
хронизации передачи SSC TSHR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
TSI )АТ
, 6 5 4 3 2 1
TSDAT
• TSDAT: данные синхронизации передачи.
21.4.11. Регистр сравнения 0 приема SSC RCOR
Битовая структура регистра показана в табл. 21.26.
Табл. 21.26. Битовая структура регистра сравнения 0 приема SSC RC0R
31 30 29 28 27 26 25 24~"
- - - - - - - -
23 22 21 20 19 18 17 ~~1б"22
- - - - - -
15 14 13 12 11 10 9 8
СРО
7 6 5 4 3 2 1 0
СРО
* СРО: данные сравнения 0 приема.
21.4.12. Регистр сравнения 1 приема SSC RC1R
Битовая структура регистра показана в табл. 21.27.
Табл. 21.27. Битовая структура регистра сравнения 1 приема SSC RC1R
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16 _
- - - - - - - -
15 14 13 12 11 10 9 8
СР1
7 6 5 4 3 2 1 0
СР1
* СРО: данные сравнения 1 приема.
21.4.13. Регистр статуса SSC SR
Битовая структура регистра показана в табл. 21.28.
Табл. 21.28. Битовая структура регистра состояния SSC SR
"-"зГ 30 29 28 27 26 25 24
- - - - - - - -
22 21 20 19 18 17 16
.—— - - - - - RXEN TXEN
15 14 13 12 11 10 9 8
- - - - RXSYN TXSYN СР1 CP0
7 6 5 4 3 2 1 0
RXBUFF ENDRX OVRUN RXRDY TXBUFE ENDTX TXEMPTY TXRDY
• TXRDY: готовность к передаче.
0: данные загружены в THR и логика SSC ожидает загрузки этих дан-
ных в сдвиговый регистр передачи (TSR).
1: регистр THR пуст.
• TXEMPTY: передача пуста.
0: данные остаются в THR или загружаются в TSR.
1: последние данные, написанные в THR, были загружены в TSR, а по-
следние данные, загруженные в TSR, были переданы.
* ENDTX: окончание передачи.
0: регистр TCR не достиг значения 0 после последней записи в TCR или
в TNCR.
1: регистр TCR достиг значения 0 после последней записи в TCR или
в TNCR.
Замечание. Регистр счетчика передачи TCR и регистр счетчика следу-
ющей передачи TNCR не входят в состав пользовательского интерфейса
SSC, а относятся к PDCA.
• TXBUFE: буфер передачи пуст.
0: регистр TCR или регистр TNCR имеет значение, отличное от 0.
1: и TCR, и TNCR имеют значение 0.
* RXRDY: готовность приема.
0: регистр RHR пуст.
1: данные были приняты с шины и загружены в регистр RHR.
• OVRUN: переполнение приема.
0: никакие данные не были загружены в регистр RHR, пока предыдущие
Данные не были прочитаны после последнего чтения регистра состояния.
1: данные были загружены в RHR, в то время как предыдущие данные
еЩе не были прочитаны после последнего чтения регистра состояния.
* ENDRX: окончание приема.
0: данные записаны в регистр RCR или в регистр RNCR.
1: окончание PDCA происходит, когда регистр счетчика приема Rcr
достигает значения 0.
Примечание. Регистр счетчика приема RCR и регистр счетчика следую,
щего приема RNCR не входят в состав пользовательского интерфейса SSC
а относятся к PDCA.
* RXBUFF: буфер приема полон.
0: регистр RCR или регистр RNCR имеет значение, отличное от 0.
1: и RCR, и RNCR имеют значение 0.
* СРО: совпадение при сравнении 0.
0: совпадение при сравнении 0 не происходило после последнего чтения
регистра состояния.
1: совпадение при сравнении 0 произошло после последнего чтения
регистра состояния.
* СР1: совпадение при сравнении 1.
0: совпадение при сравнении 1 не происходило после последнего чтения
регистра состояния.
1: совпадение при сравнении 1 произошло после последнего чтения
регистра состояния.
• TXSYN: синхронизация передачи.
0: синхронизация передачи не происходила после последнего чтения
регистра состояния.
1: синхронизация передачи произошла после последнего чтения реги-
стра состояния.
* RXSYN: синхронизация приема.
0: синхронизация приема не происходила после последнего чтения ре-
гистра состояния.
1: синхронизация приема произошла после последнего чтения регистра
состояния.
• TXEN: разрешение передачи.
0: передача заблокирована.
1: передача разрешена.
* RXEN: разрешение приема.
0: прием заблокирован.
1: прием разрешен.
21.4.14. Регистры разрешения/запрещения/маски
прерываний от SSC IER/IDR/IMR
Битовая структура каждого из этих регистров показана в табл. 21.29.
Табл. 21.29. Битовая структура каждого из регистров разрешения/запреШе'
ния/маски прерываний от SSC IER/IDR/IMR
31 30 29 28 27 26 25 24___,
- - - - - - - " -
Табл. 21.29.
(окончание)
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - RXSYN TXSYN СР1 СРО
т~ 6 5 4 3 2 1 0
rxbuff ENDRX OVRUN RXRDY TXBUFE ENDTX TXEMPTY TXRDY
Для регистра IER:
* TXRDY: разрешение прерывания по готовности передачи.
0: никакого эффекта.
1: разрешить прерывание по готовности передачи.
* TXEMPTY: разрешение прерывания от пустой передачи.
0: никакого эффекта.
1: разрешить прерывание от пустой передачи.
• ENDTX: разрешение прерывания по окончанию передачи.
0: никакого эффекта.
1: разрешить прерывание по окончанию передачи.
* TXBUFE: разрешение прерывания по пустому буферу передачи.
0: никакого эффекта.
1: разрешить прерывание по пустому буферу передачи.
* RXRDY: разрешение прерывания по готовности приема.
0: никакого эффекта.
1: разрешить прерывание по готовности приема.
* OVRUN: разрешение прерывания по переполнению приема.
0: никакого эффекта.
1: разрешить прерывание по переполнению приема.
* ENDRX: разрешение прерывания по окончанию приема.
0: никакого эффекта.
1: разрешить прерывание по окончанию приема.
* RXBUFF: разрешение прерывания при полном буфере приема.
0: никакого эффекта. .
1: разрешить прерывание при полном буфере приема.
* СРО: разрешение прерывания при совпадении сравнения 0.
0: никакого эффекта.
1: разрешить прерывание при совпадении сравнения 0.
* СР1: разрешение прерывания при совпадении сравнения 1.
0: никакого эффекта.
1: разрешить прерывание при совпадении сравнения 1.
* TXSYN: разрешение прерывания при синхронизации передачи.
0: никакого эффекта.
1: разрешить прерывание при синхронизации передачи.
• RXSYN: разрешение прерывания при синхронизации приема.
0: никакого эффекта.
1: разрешить прерывание при синхронизации приема.
Для регистра IDR:
* TXRDY: запрещение прерывания по готовности передачи.
0: никакого эффекта.
1: запретить прерывание по готовности передачи.
* TXEMPTY: запрещение прерывания от пустой передачи.
0: никакого эффекта.
1: запретить прерывание от пустой передачи.
* ENDTX: запрещение прерывания по окончанию передачи.
0: никакого эффекта.
1: запретить прерывание по окончанию передачи.
* TXBUFE: запрещение прерывания по пустому буферу передачи.
0: никакого эффекта.
1: запретить прерывание по пустому буферу передачи.
* RXRDY: запрещение прерывания по готовности приема.
0: никакого эффекта.
1: запретить прерывание по готовности приема.
* OVRUN: запрещение прерывания по переполнению приема.
0: никакого эффекта.
1: запретить прерывание по переполнению приема.
* ENDRX: запрещение прерывания по окончанию приема.
0: никакого эффекта.
1: запретить прерывание по окончанию приема.
* RXBUFF: запрещение прерывания при полном буфере приема.
0: никакого эффекта.
1: запретить прерывание при полном буфере приема.
* CP0: запрещение прерывания при совпадении сравнения 0.
0: никакого эффекта.
1: запретить прерывание при совпадении сравнения 0.
* СР1: запрещение прерывания при совпадении сравнения 1.
0: никакого эффекта.
1: запретить прерывание при совпадении сравнения 1.
* TXSYN: запрещение прерывания при синхронизации передачи.
0: никакого эффекта.
1: запретить прерывание при синхронизации передачи.
* RXSYN: запрещение прерывания при синхронизации приема.
0: никакого эффекта.
1: запретить прерывание при синхронизации приема.
Для регистра IMR:
* TXRDY: маска прерывания по готовности передачи.
0: прерывание по готовности передачи запрещено.
1: прерывание по готовности передачи разрешено.
• TXEMPTY: маска прерывания от пустой передачи.
0: прерывание от пустой передачи запрещено.
1: прерывание от пустой передачи разрешено.
• ENDTX: маска прерывания по окончанию передачи.
0: прерывание по окончанию передачи запрещено.
1: прерывание по окончанию передачи разрешено.
• TXBUFE: маска прерывания по пустому буферу передачи.
0: прерывание по пустому буферу передачи запрещено.
1: прерывание по пустому буферу передачи разрешено.
. RXRDY: маска прерывания по готовности приема.
0: прерывание по готовности приема запрещено.
1: прерывание по готовности приема разрешено.
• OVRUN: маска прерывания по переполнению приема.
0: прерывание по переполнению приема запрещено.
1: прерывание по переполнению приема разрешено.
• ENDRX: маска прерывания по окончанию приема.
0: прерывание по окончанию приема запрещено.
1: прерывание по окончанию приема разрешено.
* RXBUFF: маска прерывания при полном буфере приема.
0: прерывание при полном буфере приема запрещено.
1: прерывание при полном буфере приема разрешено.
* CP0: маска прерывания при совпадении сравнения 0.
0: прерывание при совпадении сравнения 0 запрещено.
1: прерывание при совпадении сравнения 0 разрешено.
* СР1: маска прерывания при совпадении сравнения 1.
0: прерывание при совпадении сравнения 1 запрещено.
1: прерывание при совпадении сравнения 1 разрешено.
* TXSYN: маска прерывания при синхронизации передачи.
0: прерывание при синхронизации передачи запрещено.
1: прерывание при синхронизации передачи разрешено.
* RXSYN: маска прерывания при синхронизации приема.
0: прерывание при синхронизации приема запрещено.
1: прерывание при синхронизации приема разрешено.
ГЛАВА 22
УНИВЕРСАЛЬНЫЙ
СИНХРОННО-АСИНХРОННЫЙ
ПРИЕМОПЕРЕДАТЧИК (USART)
22.1 . Основные особенности
Встроенный во все МК семейства AT32UC3 модуль универсального
синхронно-асинхронного приемопередатчика (USART) имеет следующие
основные особенности.
• Программируемый генератор задания скорости обмена.
• Дуплексная синхронная или асинхронная последовательная пере-
дача данных разрядностью от 5 до 9 битов:
- 1, 1,5 или 2 стоповых бита в асинхронном режиме, а также 1 или
2 стоповых бита в синхронном режиме;
- генерация бита четности и детектирование ошибок четности;
- детектирование ошибки кадровой синхронизации и ошибки пе-
реполнения;
- следование сначала СЗР или сначала МЗР в передаваемых/при-
нимаемых данных;
- опционально генерация и детектирование обрыва передачи;
- 8- или 16-кратная (относительно частоты скорости обмена) ча-
стота выборки при приеме;
- опционально аппаратная процедура установления связи RTS-
CTS;
- опционально управление модемными сигналами DTR-DSR-DCD-
RI;
- поддержка таймаута (интервала ожидания) приемника и интер-
вала Timeguard передатчика;
- опционально многоточечный режим с генерацией и детектирова-
нием адресов.
• Поддержка интерфейса RS-485 с драйвером сигнала управления.
• Поддержка протокола ISO7816 при Т = 0 или Т = 1 для обеспечения
связи со Smart-картами:
- обработка NACK, счетчик ошибок с лимитом повторов и итераций.
• Поддержка модуляции и демодуляции инфракрасного порта IrDA:
- обмен со скоростями до 115,2 кбит/с.
• Режим SPI:
- ведущий или ведомый;
- программируемые фаза и полярность последовательного синхро-
сигнала;
- частота последовательного синхросигнала SPI (SCK) до значения
МСК/4.
• Тестовые режимы:
- удаленный «шлейф», местный «шлейф», автоматическое «эхо».
• Поддержка соединения с двумя каналами PDCA:
- перемещение содержимого буферов без вмешательства ЦПУ.
Встроенный универсальный синхронно-асинхронный приемопе-
редатчик (USART) обеспечивает полную дуплексную универсальную
синхронно-асинхронную последовательную связь. Формат фрейма дан-
ных программируется в широких пределах (длина посылки данных, чет-
ность, количество стоповых битов), чтобы поддерживать максимальное
количество стандартов. Приемник USART производит обнаружение
ошибки четности, ошибки кадровой синхронизации и ошибки пере-
полнения. Время ожидания приемника позволяет обрабатывать фреймы
переменной длины, а передатчик USART с функцией timeguard облегча-
ет связь с медленными удаленными устройствами. Также поддержива-
ется многоточечная связь с помощью битовых операций адресации при
приеме и передаче.
Логика USART поддерживает три режима тестирования: удаленный
«шлейф», местный «шлейф» и автоматическое «эхо».
USART имеет операционные режимы, обеспечивающие поддержку ин-
терфейса шины RS-485, поддержку спецификации ISO7816 при Т = 0 или
Рис. 22.1. Блок-схема USART
Рис. 22.2. Блок-схема прикладного использования USART
Т = 1, слота Smart-карты, инфракрасных приемопередатчиков IrDA и связь
с модемными портами.
Аппаратная процедура установления связи позволяет производить
управление потоком данных путем автоматического управления сигналами
на выводах RTC и CTS.
. USART поддерживает связь с периферийным контроллером DMA
(PDCA), который позволяет производить перемещение данных в передат-
чик и из приемника USART. PDCA обеспечивает цепочечную организацию
буферизации данных без какого-либо вмешательства ЦПУ.
Блок-схема USART приведена на рис. 22.1, а блок-схема прикладного
использования USART — на рис. 22.2.
Описание сигналов, относящихся к интерфейсу USART, приведено
в табл. 22.1.
22.1.1. Линии ввода-вывода
Линии, используемые для организации связи с помощью интерфейса
USART, могут быть мультиплексированы с линиями GPIO. Для исполь-
зования USART необходимо предварительно сконфигурировать кон-
троллер GPIO, чтобы задать для требуемых линий USART их перифе-
рийные функции. Если линии ввода-вывода USART не используются
приложением, то они могут использоваться для других целей контрол-
лером GPIO.
Все линии модемного интерфейса USART в зависимости от конкреТ'
ных условий могут быть задействованы или не задействованы в составе
USART целевой пользовательской системы.
Чтобы воспрепятствовать переходу линии TXD в низкий уровень, когДа
модуль USART заблокирован, на этой линии необходимо использование
внутреннего подтянутого к «плюсу» питания резистора. Если используете
аппаратная процедура установления связи или режим модемного интер^
фейса USART, то на линии TXD также необходимо включить внутренний
подтянутый «плюсу» питания резистор.
Табл. 22.1. Описание сигналов интерфейса USART
"Имя вывода Описание вывода Тип вывода Активный уровень
Последовательный синхросигнал Вход/ выход
TXD Передача последовательных данных, или выход ведущего-вход ведомого (MOSI) в режиме ведущего SPI, или вход ведущего-выход ведомого (MISO) в режиме ведомого SPI Вход/ выход
RXD Прием последовательных данных, или вход ведущего-выход ведомого (MISO) в режиме ведущего SPI, или выход ведущего-вход ведомого (MOSI) в режиме ведомого SPI Вход
RI Индикация вызова Вход Низкий
DSR Готовность модема (данных) Вход Низкий
DCD Обнаружение несущей частоты данных Вход Низкий
DTR Готовность терминала Выход Низкий
CTS Готовность к передаче или выбор ведомого (NSS) в режиме ведомого SPI Вход Низкий
RTS Запрос передачи или выбор ведомого (NSS) в режиме ведущего SPI Выход Низкий
22.1.2. Управление питанием
Модуль USART не обеспечивается постоянной синхронизацией. Для исполь-
зования USART в приложении необходимо предварительно разрешить син-
хронизацию USART в менеджере питания (РМ). Однако если приложение не
требует проведения операций USART, синхросигнал USART может быть оста-
новлен, когда в нем нет необходимости, с возможностью последующего переза-
пуска. В этом случае USART возобновит свои операции с момента останова.
Конфигурирование USART не требует, чтобы синхросигнал USART
был разрешен.
22.1.3. Прерывания от USART
Линия прерывания от USART связана с одним из внутренних источников
контроллера прерываний. Использование прерываний от USART требует,
чтобы контроллер прерываний был предварительно сконфигурирован. Не-
обходимо заметить, что производитель не рекомендует использовать линию
Прерывания от USART в режиме чувствительности к перепаду сигнала.
22.2. Функциональное описание
Модуль USART способен управлять несколькими типами последователь-
ного синхронного или асинхронного обмена данными. Он поддерживает
следующие режимы связи:
• Дуплексная асинхронная последовательная передача данных с чис,
лом битов в посылке от 5 до 9:
- следование сначала СЗР или МЗР;
- 1, 1,5 или 2 «стоповых» бита;
- контроль четности, нечетности, маркирование, пробел или ни
один из перечисленных типов;
- 8- или 16-кратная частота выборки при приеме;
- опционально задается аппаратная процедура установления связи;
- опционально задается управление сигналами модемного интерфейса-
- опционально задается управление обрывом связи;
- опционально задается поддержка многоточечной последователь-
ной передачи данных.
• Высокоскоростная дуплексная синхронная последовательная пере-
дача данных с числом битов в посылке от 5 до 9:
- следование сначала СЗР или МЗР;
- 1 или 2 «стоповых» бита;
- контроль четности, нечетности, маркирование, пробел или ни
один из перечисленных типов;
- 8- или 16-кратная частота выборки при приеме;
- опционально задается аппаратная процедура установления связи;
- опционально задается управление сигналами модемного интерфейса;
- опционально задается управление обрывом связи;
- опционально задается поддержка многоточечной последователь-
ной передачи данных.
• Поддержка интерфейса RS-485 с драйвером управляющего сигнала.
• Поддержка стандарта ISO7816 с протоколом ТО или Т1 для связи со
Smart-картами:
- обработка NACK, счетчик ошибок с лимитом повторений и ите-
раций.
• Модуляция и демодуляция инфракрасного излучения для интер-
фейса IrDA.
• Режим SPI:
- ведущий или ведомый;
- программируемые фаза и полярность последовательного синхро-
сигнала;
- частота последовательного синхросигнала SPI (SCK) до значения
МСК/4.
• Тестовые режимы:
- удаленный «шлейф», местный «шлейф», автоматическое «эхо».
22.2.1. Генератор скорости обмена
Встроенный генератор скорости обмена USART обеспечивает генерацию
синхросигнала, задающего скорость обмена для приемника и передат-
чика. Источник тактирования генератора скорости обмена может быть
выбран с помощью битового поля USCLKS в регистре режима (MR) из
следующих источников:
Рис. 22.3. Блок-схема генератора скорости обмена USART
• задающая частота МСК;
• задающая частота, поделенная на значение делителя, который за-
дается программно, а по умолчанию равен 8;
• внешний синхросигнал, подаваемый на вывод SCK.
Логика генератора скорости обмена базируется на 16-разрядном дели-
теле, который программируется с помощью поля CD регистра генератора
скорости обмена (BRGR). Если поле CD программируется значением 0, то
генератор скорости обмена не генерирует никаких синхросигналов. Если
поле CD программируется значением 1, то делитель исключается из схемы
и становится неактивным.
Если в качестве источника синхросигнала выбран внешний сигнал на вы-
воде SCK, то длительность низких и высоких уровней сигнала SCK должна
быть больше, чем длительность периода задающего генератора (МСК). Частота
сигнала SCK должна быть не менее чем в 4,5 раза меньше, чем частота МСК.
Блок-схема генератора скорости обмена приведена на рис. 22.3.
22.2.1.1. Скорость обмена в асинхронном режиме
Если модуль USART конфигурируется для работы в асинхронном режиме,
то частота выбранного синхросигнала сначала делится на содержимое поля
CD регистра генератора скорости обмена (BRGR). Результирующий син-
хросигнал поступает на приемник в качестве синхросигнала выборки, для
чего делится на 16 или на 8 в зависимости от значения бита OVER в реги-
стре MR. Если бит OVER установлен, то частота выборки в приемнике в 8
Раз выше, чем скорость обмена. Если сброшен, то частота выборки в при-
емнике в 16 раз выше скорости обмена.
Вычисление скорости обмена в общем случае производится по следую-
щей формуле:
скорость обмена = SelectedClock / (8 х (2 — OVER) х CD),
гДе SelectedClock — выбранная частота источника синхронизации.
Приведенная формула дает максимальную скорость обмена, равную ча-
стоте МСК, разделенной на 8, с учетом того, что МСК является наиболь-
шим из возможных синхросигналов и что бит OVER установлен.
В табл. 22.2 показаны примеры вычисления значений поля CD для по-
лучения стандартного значения скорости обмена 38400 бит/с для различ-
ных значений частоты источника синхросигнала. В таблице также приве-
дены фактические значения результирующих скоростей обмена и ошибок
их задания.
Табл. 22.2. Примеры задания скорости обмена через USART (OVER =
в асинхронном режиме
Частота источ- ника синхро- сигнала, Гц Ожидаемая скорость обмена, бит/с Результат вычисления CD CD Фактическая скорость обмена, бит/с Ошибка
3 686 400 38 400 6,00 6 38 400,00 0,00%"
4 915 200 38 400 8,00 8 38 400,00 0,00%
5 000 000 38 400 8,14 8 39 062,50 1,70%
7 372 800 38 400 12,00 12 38 400,00 0,00%
8 000 000 38 400 13,02 13 38 461,54 0,16%
12 000 000 38 400 19,53 20 37 500,00 2,40%
12 288 000 38 400 20,00 20 38 400,00 0,00%
14 318 180 38 400 23,30 23 38 908,10 1,31%
14 745 600 38 400 24,00 24 38 400,00 0,00%
18 432 000 38 400 30,00 30 38 400,00 0,00%
24 000 000 38 400 39,06 39 38 461,54 0,16%
24 576 000 38 400 40,00 40 38 400,00 0,00%
25 000 000 38 400 40,69 40 38 109,76 0,76%
32 000 000 38 400 52,08 52 38 461,54 0,16%
32 768 000 38 400 53,33 53 38 641,51 0,63%
33 000 000 38 400 53,71 54 38 194,44 0,54%
40 000 000 38 400 65,10 65 38 461,54 0,16%
50 000 000 38 400 81,38 81 38 580,25 0,47% _
При OVER = 0 и при использовании в качестве источника синхросиг-
нала задающей частоты МСК скорость обмена рассчитывается по следую-
щей формуле:
скорость обмена = МСК / (16 х CD).
Ошибка задания скорости обмена рассчитывается по следующей формуле:
j _ ожидаемая скорость обмена * юо%
фактическая скорость обмена J
Не рекомендуется работать со значением ошибки выше чем 5%.
22.2.1.2. Дробная скорость обмена в асинхронном режиме
ГенеРат°Р скорости обмена имеет очевидный недостаток — он может гене-
иРовать только целые значения частоты синхросигнала. В приложении же
может потребоваться генератор дробной части (1/N) частоты синхросиг-
нала, который имел бы более высокое разрешение. Дробная часть частоты
синхросигнала может программироваться в поле FP регистра генератора
скорое™ обмена (BRGR). Дробная часть генератора активизирована, если
поле FP не равно 0. Разрешающая способность генератора дробной ча-
стИ _ одна восьмая значения делителя синхросигнала. Аппаратная логика
генератора дробной части доступна только при использовании нормаль-
ного режима USART. Дробное значение скорости обмена рассчитывается
с использованием следующей формулы:
скорость обмена = SelectedClock / (8 х (2 — OVER) х (CD + FP/8)).
•»
На рис. 22.4 приведена блок-схема генератора скорости обмена с актив-
ной дробной частью.
22.2.1.3. Скорость обмена в синхронном режиме или режиме
SPI
Если модуль USART конфигурируется для работы в синхронном режиме,
то для получения частоты скорости обмена выбранная частота источника
синхросигнала просто делится на значение поля CD из регистра BRGR:
скорость обмена = SelectedClock / CD.
Если в синхронном режиме выбрана внешняя частота источника син-
хросигнала (USCLKS=3), то эта частота должна подаваться непосредствен-
но на вывод SCK модуля USART. Никакой делитель в этом случае не акти-
вен. Значение, записанное в BRGR, при этом не имеет никакого значения.
Рис. 22.4. Блок-схема генератора скорости обмена с активной дробной ча-
стью
Внешняя частота синхросигнала должна быть не менее чем в 4,5 раза менк.
ше частоты системного синхросигнала МСК.
Когда в качестве источника выбрана внешняя частота SCK или вцу,
тренняя поделенная частота (МСК/DIV), то значение, записанное в поде
CD, должно быть четным, чтобы обеспечивать на выводе SCK соотноще.
ние по длительности импульс/пауза, равное 50:50.
Если выбрана внутренняя частота МСК, то генератор скорости обме-
на гарантирует рабочий цикл с соотношением по длительности импульс/
пауза 50:50 на выводе SCK, даже если значение, записанное в поле CD
нечетное.
22.2.1.4. Скорость обмена в режиме ISO7816
Спецификации стандарта ISO7816 определяют скорость обмена в соответ-
ствии со следующей формулой:
В = (Di / Fi) х f,
где:
• В — скорость обмена (бит/с),
• Di — коэффициент настройки скорости обмена,
• Fi — коэффициент деления частоты синхронизации,
• f — частота синхронизации ISO7816 (Гц).
Di — двоичное значение, закодированное в 4-битовом поле DI, как по-
казано в табл. 22.3. Fi — двоичное значение, закодированное в 4-битовом
поле FI, как показано в табл. 22.4. В табл. 22.5 приведены значения отно-
шения Fi/Di, которое является коэффициентом между частотой синхрони-
зации ISO7816 и скоростью обмена.
Если модуль USART сконфигурирован для работы в режиме ISO7816,
то значение синхросигнала, выбранное в поле USCLKS регистра режима
(MR), сначала делится на значение, записанное в поле CD регистра скоро-
Табл. 22.3. Двоичные и десятичные значения Di
Поле DI 0001 0010 ООН 0100 0101 ОНО 1000 1001_
Р1 , 1 2 4 8 16 32 12 (десятичное значение) 20
Табл. 22.4. Двоичные и десятичные значения Fi
Поле FI 0000 0001 0010 ООП 0100 0101 ОНО 1001 1010 1011 ПОР 110j_
Fi (деся-
тачное 372 372 558 744 1П6 1488 1860 512 768 1024 1536 2048
значе-
ние)
Табл. 22.5. Возможные значения отношения Fi/Di
j//£L 372 558 744 1116 1488 1860 512 768 1024 1536 2048
372 558 744 1116 1488 1860 512 768 1024 1536 2048
2 186 279 372 558 744 930 256 384 512 768 1024
4 93 139,5 186 279 372 465 128 192 256 384 512
8 46,5 69,75 93 139,5 186 232,5 64 96 128 192 256
16 23,25 34,87 46,5 69,75 93 116,2 32 48 64 96 128
32 11,62 17,43 23,25 34,87 46,5 58,13 16 24 32 48 64
12 31 46,5 62 93 124 155 42,66 64 85,33 128 170,6
20 18,6 27,9 37,2 55,8 74,4 93 25,6 38,4 51,2 76,8 102,4
Сти обмена (BRGR). Результирующий синхросигнал может быть подан на
вывод SCK для последующей подачи на входы синхронизации Smart-карты.
Это означает, что в регистре MR может быть установлен бит CLKO. Затем
синхросигнал делится на значение, записанное в поле FI_DI_RATIO ре-
гистра FI DI oTHonieHHH (FIDI). Это деление выполняется делителем вы-
борки, который позволяет в режиме ISO7816 производить деление на зна-
чение до 2047. Нецелые значения коэффициента Fi/Di не поддерживаются,
следовательно, необходимо записывать в поле FI_DI_RATIO значение,
как можно более близкое к ожидаемому значению. Поле FI_DI_RATIO по
умолчанию сброшено в значение 0x174 (372 в десятичном представлении),
а для режима ISO7816, в общем случае, по умолчанию заданы значения
Fi = 372 и Di = 1.
Диаграммы на рис. 22.5 показывают временное соотношение между
элементарным временным модулем (ETU), соответствующим времени пе-
редачи одного бита, и синхросигналом ISO7816.
22.2.2. Управление приемником и передатчиком
По умолчанию после сброса приемник USART заблокирован. Программа
Должна разрешить приемник путем установки бита RXEN в регистре ко-
манд (CR). Однако регистры приемника могут конфигурироваться до того,
как сам приемник будет разрешен. По умолчанию после сброса передатчик
USART также заблокирован. Программа должна разрешить передатчик пу-
тем установки бита TXEN в регистре команд (CR). Однако регистры пере-
датчика также могут конфигурироваться до того, как сам передатчик будет
FI_DI_RATIO циклов
синхросигнала ISO7816
Рис. 22.5. Элементарный временной модуль (ETU)
разрешен. Приемник и передатчик могут быть разрешены вместе или ц0
отдельности, независимо друг от друга.
Программа в любой момент может произвести сброс приемника илц
передатчика USART путем установки соответствующего бита (RSTRX илц
RSTTX) в регистре команд (CR). Команды сброса имеют такой же эффект
как и аппаратный сброс. Независимо от того, выполняется ли прием или
передача, обмен при таком сбросе немедленно останавливается.
Программа может также независимо отключить приемник или пере-
датчик установкой бита RXDIS или TXDIS соответственно в регистре CR.
Если приемник отключается в ходе приема символа, интерфейс USART
ожидает конца приема текущего символа и только после этого останавли-
вает прием. Если передатчик отключается в ход передачи, то интерфейс
USART ожидает конца передачи текущего символа и символа, хранящего-
ся в регистре временного хранения данных передачи (THR) и только после
этого останавливает передачу. Если программируется интервал timeguard
(см. ниже), то он будет обработан в нормальном режиме.
22.2.3. Синхронный и асинхронный режимы
22.2.3.1. Операции передатчика
Передатчик USART выполняет одну и ту же операцию и в синхронном,
и в асинхронном операционных режимах (SYNC = 0 или SYNC = 1). Один
«стартовый» бит, до 9 битов данных, один бит четности (опционально) и до
двух «стоповых» битов последовательно сдвигаются на вывод TXD по каж-
дому отрицательному перепаду (спаду) заданного программой последова-
тельного синхросигнала.
Количество битов данных выбирается полем CHRL и битом MODE9
в регистре режима (MR). Девять битов выбираются путем установки бита
MODE9 вне зависимости от значения поля CHRL. Характер бита четно-
сти задается согласно значению поля PAR в регистре MR. Может быть
задан контроль четности, нечетности, пробел, маркирование или ни-
какого бита четности. Поле MSBF в регистре MR задает, какой разряд
(СЗР или МЗР) будет передаваться первым при передаче символа. Если
поле MSBF имеет значение 1, то первым будет передан СЗР, если 0, то
МЗР. Количество «стоповых» битов выбирается полем NBSTOP в реги-
стре MR. В асинхронном режиме поддерживается только значение 1,5
«стоповых» бита.
Операция передачи символа иллюстрируется временными диаграмма-
ми, изображенными на рис. 22.6. Посылка символа производится путем за-
писи в регистр временного хранения данных передачи (THR). Передатчик
имеет два бита состояния в регистре состояния канала (CSR): бит TXRDY
(передатчик готов), который указывает, что регистр THR пуст, и бит TX-
EMPTY, который, указывает что все символы, записанные в регистр THR,
уже обработаны. Когда обработка текущего символа завершается, послед-
ний символ, записанный в регистр THR, помещается в сдвиговый регистр
Рис. 22.6. Операция передачи символа передатчиком USART
скорости обмена длплллпллшшшишшшллллл
Запись в
US_THR
TXRDY
TXEMPTY
Рис. 22.7. Возможные состояния передатчика USART
передатчика, и регистр THR становится пустым, что приводит к автомати-
ческой установке бита TXRDY.
Биты TXRDY и TXEMPTY сброшены, когда передатчик заблокирован.
Запись символа в регистр THR, в то время когда бит TXRDY находится
в активном уровне (установлен), не будет иметь никакого эффекта, и за-
писанный символ будет потерян.
Возможные состояния передатчика иллюстрируются временными диа-
граммами, изображенными на рис. 22.7.
22.2.3.2. Кодер Манчестера
В составе интерфейса USART имеется аппаратный блок для дополнитель-
ного кодирования выходной двоичной последовательности данных — кодер
Манчестера. Когда он используется, символы, передаваемые через USART,
кодируются в формате, основанном на двухфазном коде Манчестер II. Что-
бы разрешить этот режим, необходимо задать для битового поля MAN
Регистра MR значение 1. В зависимости от конфигурации полярности ло-
гический уровень (низкий или высокий) бита исходного символа после
кодирования по Манчестеру передается как перепад «1 в 0» или «О в 1». Та-
ким образом, при манчестерском кодировании переход всегда происходит
в середине каждого интервала передачи бита. Это требует вдвое большей
Ширины полосы пропускания канала передачи, чем оригинальный (исхо-
дный) NRZ-сигнал, однако данный код лучше защищен от ошибок.
Пример кодирования битовой последовательности по Манчестеру: ис-
ходный байт 0хВ1 (10110001) кодируется как 10 01 10 10 01 01 01 10 при
заданной по умолчанию полярности кодера. Временные диаграммы, при.
веденные на рис. 22.8, иллюстрируют указанную схему кодирования.
Манчестерское кодирование символа может также производиться пу-
тем добавления конфигурируемой последовательности преамбулы перед
началом последовательности (фрейма) данных. Последовательность преам-
булы может быть составлена из заданных чередований логических уровней
с программируемой продолжительностью от 1 до 15 интервалов передачи
бита. Если продолжительность преамбулы установлена в 0, то преамбула не
будет генерироваться до передачи символа. Возможные варианты чередова-
ния логических уровней преамбулы могут быть следующими: ALL_ONE,
ALL_ZERO, ONE ZERO или ZERO ONE. Эти варианты иллюстрируются
временными диаграммами, приведенными на рис. 22.9.
Конкретный вариант задается путем записи в битовое поле ТХ РР ре-
гистра MAN. Битовое поле TX_PL этого же регистра используется, что-
бы конфигурировать продолжительность преамбулы. Чтобы улучшить
гибкость кодирования, схема кодирования может быть сконфигурирована
с использованием поля TX_MPOL регистра MAN. Если поле TX_MPOL
имеет значение 0 (значение по умолчанию), то логический 0 исходного кода
кодируется переходом «О в 1», а логическая 1 кодируется переходом «1 в О».
Если поле TX_MPOL имеет значение 1, то логический 0 исходного кода
кодируется переходом «1 в 0», а логическая 1 — переходом «О в 1».
Кодированные
по Манчестеру
данные
данные
8-битовая преамбула “ALL_ONE"
Кодированные
по Манчестеру
данные
| SFD | данные
8-битовая преамбула "ALL_ZERO"
I I I I I I I I
Кодированные ________ » > » • । • »
по Манчестеру • 1 I• 1 I • I 1 I • I
данные Txd I-------------1 1 I------1--1 1 I------1---1 1 I------1--1 • L
I I I I I I I I
SFD данные
Кодированные
по Манчестеру
данные
SFD | данные
8-битовая преамбула "ZERO_ONE"
8-битовая преамбула “ONE_ZERO"
Рис. 22.9. Возможные варианты чередования логических уровней преамбУ'
лы при манчестерском кодировании с заданной по умолчанию
полярностью
Продолжительность преамбулы
задана равной О
Рис. 22.10. Примеры разделителя начала фрейма данных (SFD)
Разделитель начала фрейма данных (SFD) конфигурируется путем ис-
пользования поля ONEBIT регистра MR. SFD состоит из определяемой
пользователем последовательности, которая указывает на начало достовер-
ных данных. Примеры SFD иллюстрируются временными диаграммами,
изображенными на рис. 22.10.
Если SFD (в этом случае называемый «стартовым» битом) представляет
собой один бит (поле ONEBIT равно 1), то в нем закодирован по Манче-
стеру логический 0, и он указывает, что по линии буден передан новый
символ. Если SFD используется также для синхронизации (поле ONEBIT
равно 0), то по линии передается последовательность длительностью в три
битовых интервала, чтобы указать начало нового символа. Синхронизи-
рующий SFD сам по себе недопустим как фрагмент манчестерского кода,
так как перепад в нем происходит в середине второго битового интервала.
Используются две различных формы синхронизирующих SFD: для син-
хронизации команд и синхронизации данных. SFD синхронизации ко-
манды имеет высокий уровень в течение полутора битовых интервалов,
затем низкий уровень в течение следующих полутора битовых интервалов.
Если битовое поле MODSYNC в регистре MR имеет значение 1, то сле-
дующий символ — команда. Если поле MODSYNC имеет значение 0, то
следующий символ — данные. Когда используется прямой доступ к памя-
ти, поле MODSYNC может оперативно изменяться программой для моди-
фикации символов, расположенных в памяти. Когда этот режим разрешен,
поле VAR SYNC в регистре MR должно иметь значение 1. В этом случае
содержимое поля MODSYNC регистра MR игнорируется логикой кодера
и конфигурация синхронизации производится в поле TXSYNH регистра
THR. Формат символа USART при кодировании модифицируется и теперь
Включает в себя синхронизирующую информацию.
22.2.3.3. Компенсация «ухода» частоты синхросигнала
Аппаратная компенсация «ухода» частоты синхросигнала доступна только
в режиме 16-кратной частоты выборки. Встроенная в модуль USART ап-
16-кратная частота
выборки
RXD
Точка (момент)
выборки
Рис. 22.11. Работа аппаратной системы регенерации
паратная система регенерации позволяет скомпенсировать значительный
уход синхросигнала. Для разрешения работы этой системы должен быть
установлен соответствующий бит в регистре USART_MAN. Если на ли-
нии RXD имеет место один цикл выборки перед или после ожидаемого
перепада, то это считается нормой и никакая коррекция не производится.
Если на линии RXD имеют место от 4 до 2 циклов выборки перед ожидяр.
мым перепадом, то текущий битовый период автоматически сокращается
на один цикл выборки. Если на линии RXD имеют место от 2 до 3 циклов
выборки после ожидаемого перепада, то текущий битовый период автома-
тически удлиняется на один цикл выборки. Логика системы регенерации
рассматривает эти «лишние» циклы как «уход» и, таким образом, произво-
дит коррекцию. Работа аппаратной системы регенерации иллюстрируется
временными диаграммами, приведенными на рис. 22.11.
22.2.3.4. Асинхронный приемник
Если интерфейс USART сконфигурирован в асинхронном режиме (SYNC =
= 0), то на линии RXD аппаратная логика приемника производит выборки
внешних сигналов. Частота выборок может равняться 16- или 8-кратно-
му значению частоты синхросигнала скорости обмена, что задается битом
OVER в регистре режима (MR). Если в течение первой половины битового
интервала выборка возвращает результат 0, то в этом интервале логикой
приемника может быть детектирован как «стартовый» бит, так и бит дан-
ных, четности или «столовый» бит.
При заданной 16-кратной частоте выборок (OVER=0) «стартовый» бит
(при его наличии) детектируется на восьмой по счету выборке. Если это
происходит, то аппаратный счетчик выборок обнуляется и дальнейшее
детектирование битов данных, четности и «стопового» бита производится
уже при отсчете 16 циклов выборки от момента обнаружения «стартового»
бита. При заданной 8-кратной частоте выборок «стартовый» бит (при его
наличии) детектируется на четвертой по счету выборке. Если это проис-
ходит, то аппаратный счетчик выборок обнуляется и дальнейшее детекти-
рование битов данных, четности и «стопового» бита производится уже при
отсчете 8 циклов выборки от момента обнаружения «стартового» бита.
Количество информационных битов, режим посылки первого бита
и режим четности выбирается в приемнике теми же самыми битовыми
полями, что и в передатчике, т. е. CHRL, MODE9, MSBF и PAR соответ-
ственно. Количество «стоповых» битов не Оказывает никакого влияния на
Частота задания “I Г
скорости обмена |_____________________________|
ЛШ1ПЛЛЛШ1Л^^
RXD1_______________________II ~
Выборки t t I I t I t t I I I I I I I I I I I I I- I I 1
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Детектирование Выборки
’’стартового" бита DO
RXD и п
Выборки | | | t t t t t t t t t
123456701234
Режекция
“стартового"
бита
Рис. 22.12. Детектирование «стартового» бита в асинхронном режиме при-
емника USART
Пример 8 бит с контролем четности
Рис. 22.13. Прием символа в асинхронном режиме приемника USART
приемник, поскольку логика приемника реагирует только на один «столо-
вый» бит независимо от значения поля NBSTOP, чтобы обеспечить син-
хронизацию между приемником и передатчиком. Кроме того, когда пере-
датчик работает с одним «стоповым» битом, сразу после детектирования
«стопового» бита приемник ожидает новый «стартовый» бит.
Детектирование «стартового» бита и прием символа, когда USART ра-
ботает в асинхронном режиме, иллюстрируется временными диаграммами,
изображенными соответственно на рис. 22.12 и 22.13.
22.2.3.5. Декодер Манчестера
Когда битовое поле MAN регистра MR имеет значение 1, то разрешена
Работа манчестерского декодера. Декодер производит обнаружение пре-
амбулы и разделителя начала фрейма данных (SFD). Для приема кодиро-
ванных кодом Манчестера данных в интерфейсе USART выделена одна
Годная линия.
Опционально задаваемая последовательность преамбулы и ее продол-
жительность могут быть заданы в декодере независимо от настроек кодера.
Для конфигурирования длительности преамбулы в декодере используется
битовое поле RX_PL в регистре MAN. Если продолжительность преамбу-
лы установлена равной 0, то преамбула декодером не детектируется. Поляр-
ность входного потока данных декодера программируется битовым полем
Кодированные ------!----------------------p-|-j .---------------
по Манчестеру ' | | |_____________________
данные (
1 Т Т I Т детек1гиРование
I I I I • "стартового"
1 2 3 4 бита
Рис. 22.14. Детектирование «стартового» бита в манчестерском коде в асип
хронном режиме
RX_MPOL в регистре MAN. В зависимости от конкретного приложения
настройки преамбулы декодера можно сверить с аналогичными настрой,
ками кодера, которые задаются в поле RX_PP регистра MAN. Возможные
варианты чередования логических уровней преамбулы иллюстрируются
временными диаграммами, изображенными на рис. 22.9.
В отличие от преамбулы, логика работы разделителя начала фрейма
данных у манчестерского кодера и декодера различается. Так, если битовое
поле ONEBIT имеет значение 1, только закодированный по Манчестеру
логический 0 может быть детектирован как корректный разделитель на-
чала фрейма данных. Если поле ONEBIT имеет значение 0, то только син-
хронизирующий SFD детектируется как корректный разделитель начала
фрейма данных. Декодер работает, обнаруживая перепад в потоке входных
данных. Если выборки сигнала на линии RXD в течение одной четверти
битового интервала возвращают нулевой результат, то детектируется «стар-
товый» бит.
Типовой механизм детектирования «стартового» бита в манчестерском
коде иллюстрируют диаграммы, приведенные на рис. 22.14.
После этого приемник активизируется и начинает обнаружение преам-
булы и обнаружение разделителя начала фрейма данных, проводя выборку
данных в одной четверти, а затем в оставшихся трех четвертях битового ин-
тервала. Если детектируется корректная преамбула или разделитель начала
фрейма данных, то приемник продолжает декодирование потока входных
данных с той же самой синхронизацией. Если поток входных данных не
соответствует корректным преамбуле или разделителю начала фрейма дан-
ных, то приемник производит пересинхронизацию на следующий коррект-
ный перепад. Минимальный интервал времени, необходимый для оценки
корректности преамбулы или SFD, — три четверти битового интервала.
Если детектируется корректная преамбула (в случае ее наличия), сопро-
вождаемая корректным SFD, то поток входных данных декодируется в код
NRZ и результат декодирования передается в USART для обработки.
Случаи некорректной преамбулы иллюстрируют временные диаграм-
мы, изображенные на рис. 22.15.
Кодированные
по Манчестеру
данные
Несоответствие преамбулы Несоответствие преамбулы
ошибка кода Манчестера некорректная последовательность
Данные
Длительность преамбулы задана равной 8
Рис. 22.15. Случаи некорректной преамбулы
Кодированные —
по Манчестеру
данные
Длительность преамбулы
задана равной 4
Элементарный битовый
интервал
Ввод области символа USART I
11111111111111111111
Субпакет преамбулы
и разделитель начала
фрейма данных были
успешно декодированы
Детектирование
ошибки в
Манчестерском
коде
Рис. 22.16. Обнаружение ошибки в манчестерском коде
Когда входной декодированный поток данных передается в USART, при-
емник также способен обнаружить ошибку в коде Манчестера. Эта ошибка
представляет собой недостающий перепад в середине битового интерва-
ла. В этом случае будет автоматически установлен флаг MANE в регистре
CSR. Сбросить этот флаг можно путем записи 1 в бит RSTSTA регистра
команд (CR). Указанный случай иллюстрируется временными диаграмма-
ми, изображенными на рис. 22.16.
Когда SFD является синхронизирующим (ONEBIT = 0), то он поддер-
живает синхронизацию и команд, и данных. Если детектирована коррект-
ная синхронизация, то в соответствии с принятым символом производится
запись в битовое поле RXCHR регистра RHR, а поле RXSYNH модифи-
цируется. Поле RXCHR принимает значение 1, когда принятый символ —
команда, и значение 0, если принятый символ — данные. Этот механизм
облегчает и упрощает прямой доступ к памяти, поскольку и символ, и син-
хронизирующее поле содержатся в одном и том же регистре.
Поскольку декодер является модулем, используемым в униполярном
режиме, первый бит фрейма всегда должен быть переходом «0 в 1».
22.2.3.6. Радиоинтерфейс как приложение манчестерского
кодирования в USART
В этом разделе описываются принципы построения низкоскоростной си-
стемы передачи данных по радиоканалу, интегрированной с манчестер-
ским кодированием USART МК семейства AT32UC3. Система состоит из
микросхем передатчика и приемника, которые поддерживают амплитуд-
ную (ASK) и частотную (FSK) модуляцию. Цель построения данной си-
стемы состоит в том, чтобы получить полнодуплексную передачу символов
п° радиоканалу, используя две различные несущие частоты. Структурная
лок-схема системы приведена на рис. 22.17.
Модуль USART сконфигурирован как манчестерский кодер/декодер.
Рис. 22.18 показан пример ASK-модуляции, кодированной по Манче-
стеру потока данных.
Как можно видеть из рисунка, при модуляции логического 0 радио-
частотный сигнал отсутствует, а при модуляции логической 1 в канал из-
Лучается несущая частота.
Рис. 22.17. Структурная блок-схема системы передачи данных по радиока-
налу с использованием манчестерского кодирования USART
Поток данных NRZ
Кодированные по I
Манчестеру данные |
с заданной по умолчанию ухс| I
полярностью и униполярным |
Поток данных NRZ
выходом
Выход ASK-модулятора
с несущей частотой F0
Рис. 22.18. Пример ASK-модуляции, кодированного по Манчестеру потока
данных
Кодированные по I
Манчестеру данные ।
с заданной по умолчанию Txd I
полярностью и униполярным |
ВЫХОДОМ I
Выход FSK-модулятора
с несущими частотами
F0 и FO+смещение
Рис. 22.19. Пример FSK-модуляции, кодированного по Манчестеру потока
данных
На рис. 22.19 показан пример FSK-модуляции, кодированной по Ман-
честеру потока данных.
Как можно видеть из рисунка, при модуляции логического 0 и логиче-
ской 1 используются две различные несущие частоты: F0 и FO+смещение.
22.2.3.7. Синхронный приемник
В синхронном режиме (SYNC=1) приемник производит выборку сиг-
нала на линии RXD по каждому положительному перепаду (фронту)
Пример 8 бит данных, контроль четности, 1 "столовый" бит
Рис. 22.20. Прием символа в синхронном режиме
синхросигнала формирования скорости обмена. Если логика приемника
обнаруживает низкий уровень, то рассматривает его как «старт» (нача-
ло) приема. После этого принимаются все биты данных, бит четности,
«стоповые» биты, и приемник ожидает следующего «стартового» бита.
Режим синхронных операций обеспечивает возможность высокоскорост-
ной передачи данных.
Конфигурационные битовые поля в синхронном режиме те же самые,
что и в асинхронном. Прием символа в синхронном режиме иллюстриру-
ется временными диаграммами, изображенными на рис. 22.20.
22.2.3.8. Операции приемника
Когда прием символа завершается, принятый символ автоматически пе-
ремещается в регистр временного хранения информации приема (RHR)
и автоматически устанавливается бит RXRDY в регистре состояния
(CSR). Если прием символа завершается в то время как бит RXRDY уже
установлен, автоматически устанавливается бит OVRE (ошибка пере-
полнения). При этом последний принятый символ автоматически пере-
мещается в регистр RHR и «затирает» предыдущий принятый символ.
Бит OVRE может быть сброшен путем записи 1 в бит RSTSTA регистра
команд (CR).
Состояние приемника при приеме символов в синхронном режиме ил-
люстрируется временными диаграммами, изображенными на рис. 22.21.
Рис. 22.21. Состояние приемника при приеме символов в синхронном ре-
жиме
22.2.3.9. Контроль четности
Интерфейс USART поддерживает пять режимов контроля четности, вы-
бираемых путем программирования битового поля PAR в регистре режима
(MR). В поле PAR можно также разрешить многоточечный режим, о чем
будет рассказано в следующем разделе.
Если выбрана проверка на четность, то генератор четности передат-
чика управляет битом четности, задавая ему значение 0, если количество
единиц в битах данных является четным, и 1, если нечетным. Провероч-
ное устройство четности приемника считает количество принятых единиц
в битах и сообщает об ошибке четности, если значение принятого бита
четности ему не соответствует.
Если выбрана проверка на нечетность, генератор четности передатчика
управляет битом четности, задавая ему значение 1, если количество еди-
ниц в битах данных является четным, и 0, если нечетным.
Если используется маркирование четности, то генератор четности пере-
датчика управляет битом четности, задавая ему значение 1 для всех сим-
волов. Проверочное устройство четности приемника сообщает об ошибке,
если принятый бит четности равен 0.
Если используется пробел четности, то генератор четности передатчи-
ка управляет битом четности, задавая ему значение 0 для всех символов.
Проверочное устройство четности приемника сообщает об ошибке, если
принятый бит четности равен 1. Если контроль четности заблокирован, то
передатчик не генерирует никакого бита четности, а приемник не сообщает
ни о какой ошибке четности.
В табл. 22.6 показан пример бита четности для символа 0x41 (его ASCII-
код соответствует символу «А») в зависимости от конфигурации режима
четности USART.
Табл. 22.6. Примеры режимов контроля четности
Символ Шестнадцате- ричное пред- ставление Двоичное представление Бит четности Режим четности
А 0x41 0100 0001 1 Нечетность
А 0x41 0100 0001 0 Четность
А 0x41 0100 0001 1 Маркер
А 0x41 0100 0001 0 Пробел
А 0x41 0100 0001 Нет Нет
Когда приемник обнаруживает ошибку четности, то автоматически
устанавливается бит PARE (ошибка четности) в регистре состояния кана-
ла (CSR). Бит PARE может быть сброшен путем записи 1 в бит RSTSTA
регистра команд (CR). Указанные операции иллюстрируются временными
диаграммами, изображенными на рис. 22.22.
лллшшшшлятплгшлл.
—I I I I I I Ij I "I [~
« г,л г., Ж5?„
’3 DO D1 D2 D3 D4 D5 D6 D7
Запись в
US_CR
RSTSTA = 1
Рис. 22.22. Обнаружение ошибки четности
22.2.3.10. Многоточечный режим
Если битовое поле PAR в регистре режима (MR) программируется значе-
нием 0x06 или 0x07, то интерфейс USART функционирует в многоточеч-
ном режиме. Этот режим аппаратно дифференцирует (разделяет) символы
данных и символы адреса. Данные передаются с битом четности, равным
0, а адреса передаются с битом четности, равным 1.
Если интерфейс USART сконфигурирован в многоточечном режиме, то
логика приемника устанавливает флаг ошибки четности PARE, когда при-
нятый бит четности равен 1, а передатчик способен передать символ с би-
том четности, равным 1, когда в регистре команд поле SENDA равно 1.
Чтобы обработать ошибку четности, бит PARE следует сбросить. Это ав-
томатически происходит, когда в регистре команд программно устанавли-
вается бит RSTSTA.
Передатчик передает байт адреса (с установленным битом четности),
когда производится программная запись 1 в поле SENDA регистра CR.
В этом случае следующий байт, записанный в THR, будет передан как
байт адреса. Любой символ, записанный в THR, без записи в поле SENDA,
передается в нормальном режиме с битом четности, равным 0, т. е., как
байт данных.
22.2.3.11. Интервал Timeguard передатчика
Аппаратная логика timeguard позволяет передатчику интерфейса USART ра-
ботать с медленными удаленными устройствами. Функция timeguard дает
возможность передатчику вставить интервал неактивного состояния (time-
SUard) на линии TXD между двумя символами. Это неактивное состояние
Фактически действует как длинный «столовый» бит. Продолжительность ин-
тервала неактивного состояния конфигурируется в битовом поле TG регистра
Передатчика timeguard (TTGR). Когда это поле программируется значением
Никакой интервал timeguard не генерируется. В ином случае передатчик
Удерживает высокий уровень на линии TXD после каждого переданного бай-
та в течение количества битовых интервалов, запрограммированного в поле
^G, в дополнение к заданному количеству «стоповых» битов.
TG = 4
Частота задания
скорости обмена
ЛПЛЛЛЛШШ^^
TG = 4
TXD
DO 01 02 03 04 D5 D6 D7
TXRDY
TXEMPTY
Запись в
US_THR
‘5 DO DI D2 03 D4 05 D6 07
I ‘’ll
Рис. 22.23. Интервал timeguard передатчика
Как иллюстрируется временными диаграммами, изображенными на
рис. 22.23, заданное значение timeguard влияет на состояние битов TXRDY
и TXEMPTY. Бит TXRDY устанавливается только в том случае, когда пере-
дается «стартовый» бит следующего символа. Таким образом, бит TXRDY
остается в низком уровне в течение интервала timeguard, если в THR был
записан символ. Бит TXEMPTY остается в низком уровне, пока не закан-
чивается интервал timeguard, так как timeguard является частью текущего
передаваемого символа.
В табл. 22.7 указывается максимальная абсолютная продолжительность
интервалов timeguard, которые передатчик может обработать при заданной
скорости обмена.
Табл. 22.7. Максимальная длительность интервала timeguard в зависимости
от скорости обмена
Скорость обмена, бит/с Длительность битового интервала, мкс Длительность интервала timeguard, мс _
1200 833 212,50
9600 104 26,56
14400 69,4 17,71
19200 52,1 13,28
28800 34,7 8,85
33400 29,9 7,63
56000 17,9 4,55
57600 17,4 4,43
115200 8,7 2,21
22.2.3.12. Тайм-аут приемника
Тайм-аут приемника обеспечивает поддержку обработки фреймов пере'
менной длины. Логика тайм-аута обнаруживает неактивное состояние
линии RXD. Когда обнаруживается тайм-аут, автоматически уста-
навливается бит TIMEOUT в регистре состояния канала (CSR) и может
gblTb сгенерировано прерывание, указывая, таким образом, на конец
фрейма.
Длительность тайм-аута задержки (время, в течение которого приемник
ожидает поступление нового символа) задается в битовом поле ТО регистра
тайм-аута приемника (RTOR). Если поле ТО программируется значением
q то тайм-аут заблокирован и не детектируется. Бит TIMEOUT в регистре
CSR остается равным 0. В ином случае приемник загружает 16-разрядный
счетчик заданным в поле ТО значением. Этот счетчик декрементируется
в каждом битовом интервале и перезагружается каждый раз при приеме
нового символа. Если счетчик досчитывает до 0, то автоматически устанав-
ливается бит TIMEOUT в регистре состояния.
Пользовательской программе предоставляются также следующие воз-
можности:
• остановка счетчика, пока не будет принят новый символ. Эта воз-
можность реализуется путем записи 1 в бит STTTO (начало тайм-
аута) регистра команд (CR). В этом случае, неактивное состояние
линии RXD до приема нового символа не будет поддерживать
тайм-аут;
• генерация периодического прерывания, когда никакие символы не
принимаются. Эта возможность реализуется путем записи 1 в бит
RETTO (перезагрузка и начало тайм-аута) регистра CR. Если выпол-
нена запись в бит RETTO, то счетчик начинает считать на убывание
немедленно от значения, записанного в поле ТО. Это разрешает ге-
нерацию периодического прерывания с тем, чтобы пользователь-
ский тайм-аут мог быть обработан, например, когда на клавиатуре
не нажата никакая клавиша.
Табл. 22.8. Максимальные значения тайм-аута
Скорость обме- на, бит/с Длительность битового интервала, мкс Длительность тайм-аута, мс
600 1667 109225
1200 833 54613
2400 417 27306
4800 208 13653
9600 104 6827
14400 69 4551
19200 52 3413
28800 35 2276
33400 30 1962
56000 18 1170
57600 17 1138
_ 200000 5 328
Рис. 22.24. Блок-схема аппаратной логики тайм-аута
Блок-схема аппаратной логики тайм-аута показана на рис. 22.24.
В табл. 22.8 указывается максимальная продолжительность тайм-аута для
нескольких стандартных значений скорости обмена.
22.2.3.13. Ошибка синхронизации фреймов
Аппаратная логика приемника способна обнаруживать ошибки фреймовой
(кадровой) синхронизации. Ошибка кадровой синхронизации случается,
когда приемник детектирует низкий уровень «стопового» бита из приня-
того символа. Это может произойти, когда приемник и передатчик полно-
стью рассинхронизировались при обмене.
Об ошибке кадровой синхронизации программа может судить по уста-
новке бита FRAME в регистре состояния канала (CSR). Бит FRAME ав-
томатически устанавливается в середине интервала «стопового» бита, как
только детектируется ошибка кадровой синхронизации. Бит FRAME мо-
жет быть сброшен путем записи 1 в бит RSTSTA регистра команд (CR).
Состояние USART, связанное с ошибкой синхронизации фрейма, ил-
люстрируется временными диаграммами, изображенными на рис. 22.25.
22.2.3.14. Обрыв передачи
Пользовательская программа может инициировать генерацию передатчи-
ком условия (состояния) обрыва на линии TXD. При обрыве передачи сиг-
нал на линии TXD переводится в низкий уровень на время, требуемое на
передачу не менее чем одного символа. Состояние обрыва эквивалентно
XXZZ
Рис. 22.25. Состояние USART, связанное с ошибкой синхронизации фрейма
оедаче числа 0x00 с битом четности и «стоповым» битом, равными 0.
?грй этом передатчик удерживает линию TXD в низком уровне на время
е меньшее, чем время передачи одного символа, до инициации отмены
остояния обрыва пользовательской программой.
Обрыв инициируется путем записи 1 в бит STTBRK регистра команд
(CR)- Эта операция может быть произведена в любое время, например,
когда передатчик пуст (отсутствуют символы во всех сдвиговых регистрах
и в THR) или когда передается символ. Если обрыв инициируется во вре-
сдвига (передачи) символа, то передача завершается, после чего линия
TXD переходит в низкий уровень.
Как только подается команда инициировать обрыв передачи (STTBRK),
последующие команды STTBRK игнорируются аппаратной логикой USART
до завершения обрыва.
Состояние обрыва отменяется путем записи 1 в бит STPBRK регистра
CR. Если команда STPBRK подается до завершения минимальной продол-
жительности обрыва (один символ, включая «столовый» бит, биты данных,
бит четности и «стоповые» биты), то передатчик гарантирует, что состоя-
ние обрыва будет завершено с соблюдением его минимальной продолжи-
тельности.
Передатчик рассматривает обрыв как передаваемый символ, т. е. ко-
манды STTBRK и STPBRK воспринимаются им только в случае, если бит
TXRDY в CSR находится в высоком уровне, а начало состояния обрыва
сбрасывает биты TXRDY и TXEMPTY, как будто передатчиком произво-
дится обработка символа.
Одновременная запись 1 в биты STTBRK и STPBRK регистра CR мо-
жет привести к непредсказуемому результату. Все команды STPBRK без
предыдущей команды STTBRK логикой игнорируются. Байт, записанный
в регистр временного хранения данных передачи в то время, как подана
команда обрыва, но сам обрыв еще не начат, игнорируется.
После завершения состояния обрыва передатчик возвращает линию
TXD в высокий уровень на время не меньшее, чем 12 битовых интервалов.
Таким образом, передатчик гарантирует, что удаленный приемник кор-
ректно детектирует окончание передачи при обрыве и начало следующего
символа. Если запрограммирован интервал timeguard длительностью более
Рис. 22.26. Выполнение команд начала обрыва (STTBRK) и завершения об-
рыва (STPBRK) на линии TXD
12, то линия TXD будет поддерживаться в высоком уровне в течение перио-
да timeguard. После этого передатчик возобновляет нормальные операции.
Временные диаграммы, приведенные на рис. 22.26, иллюстрируют вы-
полнение команд начала обрыва (STTBRK) и завершения обрыва (STP.
BRK) на линии TXD.
22.2.3.15. Обрыв приема
Приемник обнаруживает состояние обрыва, когда все биты данных, бит четно-
сти и «стоповые» биты принятого символа находятся в низком уровне. Это со-
ответствует детектированию ошибки кадровой синхронизации с принятым
значением данных 0x00, но бит FRAME при этом остается в низком уровне.
Когда детектируется низкий уровень «стопового» бита, приемник уста-
навливает бит RXBRK в регистре CSR. Этот бит может быть сброшен пу-
тем записи 1 в бит RSTSTA регистра команд (CR).
Конец состояния обрыва на стороне приема обнаруживается по вы-
сокому уровню длительностью не менее 2/16 битового интервала в асин-
хронном режиме или при возвращении высокого уровня в одной выборке
в синхронном режиме. При обнаружении конца состояния обрыва прием-
ник устанавливает бит RXBRK.
22.2.3.16. Аппаратная процедура установления связи
Интерфейс USART реализует аппаратную процедуру установления связи
с внепотоковым (аппаратным) управлением потоком данных. Для связи
с удаленным устройством при этом используются выводы интерфейса RTS
и CTS, как показано на рис. 22.27. Управление потоком реализуется сигна-
лами, передаваемыми по этим линиям.
Задание для USART режима работы с аппаратной процедурой установ-
ления связи производится путем записи в битовое поле USART_MODE
регистра режима (MR) значения 0x2.
Поведение USART, когда разрешена аппаратная процедура установле-
ния, связи аналогично поведению в стандартном синхронном или асин-
хронном режиме, за исключением того, что приемник управляет выводом
RTS, а уровень сигнала на выводе CTS изменяет поведение передатчика,
как будет описано ниже. Использование этого режима требует задейство-
вания для приема канала PDCA. Передатчик может обрабатывать аппарат-
ную процедуру установления связи в любом случае.
Рис. 22.27. Соединение USART МК с удаленным устройством для реализа-
ции аппаратной процедуры установления связи
RXDIS = 1
RTS
rxbuff
Запись в
US.CR
Рис. 22.28. Работа приемника, если разрешена аппаратная процедура уста-
новления связи
RXD
RXEN = 1
Рис. 22.29. Работа передатчика, если разрешена аппаратная процедура уста-
новления связи
Временные диаграммы, приведенные на рис. 22.28, иллюстрируют
работу приемника, если разрешена аппаратная процедура установления
связи. Вывод RTS удерживается в высоком уровне, если приемник забло-
кирован или находится в состоянии RXBUFF (буфер приема полон). По-
следний сигнал с активным высоким уровнем исходит из канала PDCA.
Как правило, удаленное устройство не производит передачу, когда его вы-
вод CTS (управляемый выводом RTS приемника) находится в высоком
уровне. Как только работа приемника разрешается, он сбрасывает уровень
на выводе RTS, что указывает удаленному устройству на возможность на-
чать передачу. Задание нового буфера в PDCA сбрасывает бит состояния
RXBUFF, что в результате также приводит к сбросу RTS.
Временные диаграммы, приведенные на рис. 22.29, иллюстрируют работу
передатчика при разрешенной аппаратной процедуре установления связи. Ак-
тивный уровень на выводе CTS блокирует передатчик. Если в это время про-
изводится обработка символа, передатчик блокируется только после того, как
завершается передача текущего символа. Передача следующего символа будет
произведена только после перехода сигнала на выводе CTS в низкий уровень.
22.2.4. Режим ISO7816
Интерфейс USART МК семейства AT32UC3 имеет 18О7816-совместимый
операционный режим. Этот режим позволяет обмениваться данными со
Smart-картами и модулями защиты доступа (SAM), имеющими интерфейс
ISO7816. Интерфейс USART в режиме ISO7816 поддерживает протоколы
Т = 0 и Т — 1, определенные спецификациями ISQ7816.
Перевод USART в режим ISO7816 производится путем записи в поле
USART MODE регистра режима (MR) значения 0x4 для протокола Т = 0
и значения 0x5 для протокола Т = 1.
Стандарт ISO7816 обеспечивает полудуплексный обмен через одну дву-
направленную линию. Значения скорости обмена, задаваемые делением
Частоты синхросигнала, указаны в табл. 22.2.
USART
SCK
TXD
CLK
I/O
Smart-
карта
Рис. 22.30. Соединение USART MK co Smart-картой
Интерфейс USART МК соединяется co Smart-картой, как показано ца
рис. 22.30. Линия TXD при этом становится двунаправленной, а генератор
скорости обмена обеспечивает синхросигнал ISO7816 на линии SCK. Дву.
направленная линия TXD управляется выходом передатчика только в том
случае, когда передатчик активен. Эта линия также подключена к входу
приемника. Интерфейс USART при этом является ведущим устройством
поскольку он генерирует синхросигнал.
При работе в режиме ISO7816 по протоколу Т = 0 или Т = 1 установ-
лен символьный формат передачи данных. Конфигурация этого формата
включает 8 бит данных, бит четности и 1 или 2 «стоповых» бита незави-
симо от значений, записанных в полях CHRL, MODE9, PAR и CHMODE.
Поле MSBF может использоваться, чтобы задать передачу сначала МЗР или
СЗР. Бит четности (PAR) может использоваться, чтобы задавать для пере-
дачи нормальный или инверсный режим.
Интерфейс USART не может работать одновременно в режимах прием-
ника и передатчика, так как связь является однонаправленной в каждый
момент времени. Исходя из этого, USART должен оперативно конфигури-
роваться программой в требуемом режиме, разрешая или блокируя прием-
ник или передатчик. Разрешение и приемника, и передатчика в один и тот
же момент времени в режиме ISO7816 может привести к непредсказуемому
результату.
Спецификации ISO7816 определяют обратный формат передачи. Биты
данных символа должны передаваться по линии ввода-вывода в их отрица-
тельных значениях. Поскольку интерфейс USART МК аппаратно не под-
держивает этот формат, то пользовательская программа должна сама вы-
полнять операцию «исключающее ИЛИ» для передаваемых данных перед
их записью в регистр временного хранения данных передачи (THR) или
после чтения принятых данных из регистра временного хранения данных
приема (RHR).
22.2.4.1. Протокол Т = 0
По спецификациям протокола Т = 0 передаваемый символ состоит из одно-
го «стартового» бита, восьми бит данных, одного бита четности и защит-
ного интервала (guard time) длительностью в два битовых интервала. Пере-
датчик сдвигает биты при передаче и не управляет линией ввода-вывоДа
в течение защитного интервала. Если никакая ошибка четности не детек-
тирована, то линия ввода-вывода остается в высоком уровне в течение за-
щитного интервала и передатчик может производить передачу следующего
символа, как показано на рис. 22.31.
Рис. 22.31. Протокол Т = 0 без ошибки четности
Рис. 22.32. Протокол Т = 0 с ошибкой четности
Если приемник детектирует ошибку четности, то он сбрасывает линию
ввода-вывода в низкий уровень в течение защитного интервала, как по-
казано на рис. 22.32.
Этот сброс линии ввода-вывода называется флагом ошибки NACK, т. е.,
«отсутствием подтверждения». В этом случае неудачная передача символа
длится на один битовый интервал больше, поскольку к неизменной дли-
тельности защитного интервала прибавляется длительность флага ошибки,
равная одному битовому интервалу.
Когда интерфейс USART является приемником и детектирует ошиб-
ку, то он не загружает принятый с ошибкой символ в регистр времен-
ного хранения данных приема (RHR), а устанавливает бит PARE в ре-
гистре состояния (SR), с тем чтобы программное обеспечение могло
обработать ошибку.
Помимо фиксации каждой ошибки приемник USART также произво-
дит запись их общего количества. Это значение может быть прочитано
в регистре количества ошибок (NER). В битовое поле NB_ERRORS этого
регистра можно сделать запись значения до 255 ошибок. Программное чте-
ние регистра NER автоматически обнуляет поле NB_ERRORS.
Интерфейс USART может быть также сконфигурирован, чтобы запре-
тить детектирование ошибок. Это достигается путем установки бита INACK
в регистре режима (MR). Если бит INACK имеет значение 1, то сигнал ни
от какой ошибки не управляет линией ввода-вывода, даже если детекти-
рована ошибка четности, однако при этом автоматически устанавливается
бит INACK в регистре состояния (SR). Бит INACK может быть сброшен
Путем записи 1 в бит RSTNACK регистра команд (CR). Кроме того, если
бит INACK был установлен, то принятый с ошибкой символ сохраняется
в регистре временного хранения данных приема, как будто никакая ошиб-
ка не произошла. Однако при этом не устанавливается бит RXRDY.
Когда USART передает символ и получает флаг ошибки NACK, то он
Может автоматически повторить передачу этого символа перед переходом
к передаче следующего. Повторение передачи разрешается путем записи
в битовое поле MAX_ITERATION регистра режима (MR) значения, боль,
шего 0. Каждый символ может быть передан до восьми раз: первая передо
ча плюс семь повторений. Если значение поля MAX_ITERATION не рав,
няется нулю, интерфейс USART повторяет неудачную передачу символа
количество раз, равное загруженному в MAX_ITERATION значению.
Когда количество повторений передачи символа через USART дости-
гает значения MAX_ITERATION, автоматически устанавливается бит
ITERATION в регистре состояния канала (CSR). Если текущее повторе-
ние символа корректно принято приемником, то дальнейшие повторения
прекращаются, а аппаратный итеративный счетчик обнуляется. Бит IT-
ERATION в регистре CSR может быть сброшен путем записи 1 в бит RSIT
регистра команд.
Приемник может ограничить количество флагов ошибки NACK, после-
довательно передаваемых удаленному передатчику. Эта возможность задает-
ся путем установки бита DSNACK в регистре режима (MR). Максимальное
количество передаваемых флагов NACK задается в поле MAX_ITERATION.
Как только количество переданных флагов NACK достигает значения
MAX_ITERATION, логика приемника считает символ корректно приня-
тым, по линии передается подтверждение о приеме, а в регистре состояния
канала устанавливается бит ITERATION.
22.2.4.2. Протокол Т = 1
При функционировании USART в режиме ISO7816 по протоколу Т = 1
формат передачи подобен асинхронному формату с одним «стоповым» би-
том. Бит четности генерируется при передаче и проверяется при приеме.
Детектирование приемником ошибок четности автоматически устанавли-
вает бит PARE в регистре состояния канала (CSR).
22.2.5. Режим IrDA
Интерфейс USART МК семейства AT32UC3 поддерживает полудуплексную
двухточечную беспроводную связь в режиме IrDA. Он имеет встроенные
модулятор и демодулятор, которые позволяют непосредственно подклю-
чать инфракрасные приемопередатчики к МК, как показано на рис. 22.33.
Модулятор и демодулятор поддерживают спецификацию IrDA версии 1-1,
обеспечивая скорость обмена данными от 2,4 до 115,2 кбит/с.
Рис. 22.33. Связь USART с приемопередатчиком IrDA
режим IrDA интерфейса USART разрешается путем записи в битовое
ле USART_MODE в регистре режима (MR) значения 0x8. Регистр филь-
оа IrDA (IF) позволяет сформировать фильтр демодулятора. Передатчик
Приемник USART работают в нормальном асинхронном режиме с до-
йтупНостыо всех параметров. Следует заметить, что в режиме IrDA как
модулятор, так и демодулятор активны.
Приемник и передатчик могут быть разрешены или заблокированы
в соответствии с требуемым направлением передачи данных.
22.2.5.1. Модуляция IrDA
для скоростей обмена до 115,2 кбит/с включительно используется схема
модуляции (линейный код) RZI. Логический 0 исходной битовой последо-
вательности модулируется световым импульсом длительностью 3/16 бито-
вого интервала. Логической 1 соответствует отсутствие светового импуль-
са. Некоторые примеры длительностей импульса модуляции сигнала IrDA
приведены в табл. 22.9.
Временные диаграммы, изображенные на рис. 22.34, иллюстрируют
пример передачи символа.
22.2.5.2. Скорость обмена IrDA
В табл. 22.10 приведены примеры нескольких значений скорости обмена
IrDA, соответствующих им значений битового поля CD, значений ошибки
Табл. 22.9. Длительность импульса модуляции IrDA
Скорость обмена, Кбит/с Длительность импульса (3/16), мкс
2,4 78,13
9,6 19,53
19,2 9,77
38,4 4,88
57,6 3,26
_ 115,2 1,63
Рис. 22.34. Пример передачи символа через IrDA
Табл. 22.10. Скорости обмена IrDA
Периферийная тактовая частота, Гц Скорость обмена, бит/с CD Ошибка скорости обмена Длительность имГ" пульса модуляции IrDA, мкс
3686400 115200 2 0,00% 1,63 ~~~
20000000 115200 11 1,38% 1,63
32768000 115200 18 1,25% 1,63
40000000 115200 22 1,38% 1,63
3686400 57600 4 0.00% 3,26
20000000 57600 22 1,38% 3,26
32768000 57600 36 1,25% 3,26
40000000 57600 43 0.93% 3,26
3686400 38400 6 0,00% 4,88
20000000 38400 33 1,38% 4,88
32768000 38400 53 0,63% 4,88
40000000 38400 65 0,16% 4,88
3686400 19200 12 0,00% 9,77
20000000 19200 65 0,16% 9,77
32768000 19200 107 0,31% 9,77
40000000 19200 130 0,16% 9,77
3686400 9600 24 0,00% 19,53
20000000 9600 130 0,16% 19,53
32768000 9600 213 0,16% 19,53
40000000 9600 260 0,16% 19,53
3686400 2400 96 0,00% 78,13
20000000 2400 521 0,03% 78,13
32768000 2400 853 0,04% 78,13 __
задания скорости обмена и длительности импульса модуляции. При зада-
нии скорости обмена необходимо учитывать, что максимально допустимая
ошибка составляет 1,87%.
22.2.5.3. Демодулятор IrDA
Демодулятор IrDA построен на основе приемного фильтра, составленного
из 8-разрядного счетчика на убывание, который загружается значением,
записанным в регистр IF. Когда на выводе RXD детектируется внешний
отрицательный перепад (спад), счетчик фильтра начинает считать на убы-
вание импульсы задающей частоты (МСК). Если на выводе RXD детекти-
руется внешний положительный перепад (фронт), счетчик останавливает
счет и перезагружается из регистра IF. Если значение счетчика достигает 0,
мск .лллллллллллл^^
RXD и_____________________г
Значение t I I t t I
счетчика 6 5 4 3 2 6
t I t I I t I Выделение
6 5 4 3 2 1 0 импульса
Режекция
импульса
Вход --------------------------
приемника
Рис. 22.35. Операции демодулятора IrDA
а никакого положительного перепада не детектируется, то аппаратная ло-
гика переводит вход приемника в низкий уровень на время, равное одному
битовому интервалу.
Операции демодулятора IrDA иллюстрируются временными диаграм-
мами, изображенными на рис. 22.35.
Поскольку режим IrDA использует ту же самую аппаратную логику, что
и ISO7816, необходимо следить, чтобы в поле FI_DI_RATIO регистра FIDI
было записано значение, большее 0, чтобы обеспечить корректный обмен
через IrDA.
22.2.6. Режим RS-485
Интерфейс USART МК семейства AT32UC3 имеет аппаратную логику под-
держки режима RS-485, обеспечивающую управление драйвером линии.
При работе в режиме RS-485 USART функционирует подобно функциониро-
ванию в асинхронном или синхронном режиме с доступностью всех соответ-
ствующих параметров. Особенность режима RS-485 заключается в том, что
вывод RTS устанавливается аппаратной логикой в высокий уровень, когда
работает передатчик. Уровнем на выводе RTS управляет бит TXEMPTY. Ти-
пичная схема подключения USART к шине RS-485 показана на рис. 22.36.
Интерфейс USART переводится в режим RS-485 путем программиро-
вания битового поля USART_MODE в регистре режима (MR) значением
0x1. Вывод RTS имеет уровень, инверсный состоянию бита TXEMPTY.
Вывод RTS остается в высоком уровне, когда генерируется timeguard, с тем
чтобы линия могла остаться управляемой после завершения передачи по-
следнего символа.
Временные диаграммы, изображенные на рис. 22.37, иллюстрируют
пример формы сигнала на выводе RTS в ходе передачи символа, когда раз-
решен timeguard.
Дифференциальная шина
RS-485
Рис. 22.36. Подключение USART к шине RS-485
Рис. 22.37. Пример формы сигнала на выводе RTS в ходе передачи символа,
когда разрешен timeguard
22.2.7. Режим модема
Интерфейс USART МК семейства AT32UC3 имеет аппаратную логику
поддержки режима модема, которая обеспечивает управление следующи-
ми стандартными модемными сигналами: DTR (готовность терминала
(DTE)), DSR (готовность модема (DCE)), RTS (запрос передачи), CTS (го-
товность к передаче), DCD (обнаружение несущей частоты данных) и RI
(индикация вызова).
При работе в модемном режиме USART ведет себя как устройство DTE
(«терминальное оборудование пользователя»), поскольку он управляет со-
стоянием выводов DTR и RTS и может детектировать изменение уровней
на выводах DSR, DCD, CTS и RI.
Перевод логики USART в модемный режим производится путем за-
писи в битовое поле USART MODE регистра режима (MR) значения
0x3. При работе в модемном режиме USART функционирует подобно
функционированию в асинхронном режиме с доступностью всех соот-
ветствующих параметров.
Табл. 22.11. Соответствие сигналов USART стандартным модемным сиг-
налам
Вывод USART V.24 CCITT
TXD 2 103
RTS 4 105
DTR 20 108.2
RXD 3 104
CTS 5 106
DSR 6 107
DCD 8 109
RI 22 125
g табл. 22.11 приведено соответствие сигналов USART стандартным мо-
еМнЫМ сигналам. Управление выходом DTR производится путем записи
в биты DTRDIS и DTREN регистра команд (CR). Команда отключения
перевоДит соответствующий вывод в его неактивный (высокий) уровень,
команда включения переводит соответствующий вывод в его активный
(низкий) уровень.
Логика модемного режима USART детектирует изменения уровней на вы-
водах RI, DSR, DCD и CTS. При обнаружении такого изменения автоматиче-
ски устанавливаются соответствующие биты RIIC, DSRIC, DCDIC и CTSIC
в регистре состояния канала (CSR) и может быть сгенерировано прерывание.
Это состояние автоматически сбрасывается при чтении регистра CSR. Кроме
того, детектирование изменения уровня CTS автоматически отключает пере-
датчик, когда это детектирование происходит в его неактивном состоянии.
Если детектирование перепада CTS происходит при передаче символа, то эта
передача завершается прежде, чем блокируется передатчик.
22.2.8. Режим SPI
В дополнение к «штатному» встроенному интерфейсу SPI, который был
описан в разделе «Последовательный периферийный интерфейс (SPI)», МК
семейства AT32UC3 поддерживают функционирование интерфейса USART
в режиме SPI. Модуль USART AT32UC3 может работать в режиме ведущего
или ведомого SPI.
Функционирование SPI в режиме ведущего задается путем записи значе-
ния ОхЕ в битовое поле USART MODE регистра режима. В режиме ведуще-
го SPI выводам USART и линиям SPI задаются следующие соответствия:
• линия MOSI шины SPI управляется выходом TXD USART,
• линия MISO шины SPI управляется входом RXD USART,
• линия SCK шины SPI управляется выходом SCK МК,
• линия NSS шины SPI управляется выходом RTS МК.
Функционирование SPI в режиме ведомого задается путем записи значе-
ния OxF в битовое поле USART_MODE регистра режима. В режиме ведомо-
го SPI выводам USART и линиям SPI задаются следующие соответствия:
• линия MOSI шины SPI управляется входом RXD USART,
• линия MISO шины SPI управляется выходом TXD USART,
• линия SCK шины SPI управляется входом SCK МК,
• линия NSS шины SPI управляется входом CTS МК.
Чтобы избежать непредсказуемого поведения модуля USART в режиме
SPI, любое изменение режима SPI должно сопровождаться программным
сбросом передатчика и приемника (кроме начальной конфигурации после
аппаратного сброса).
22.2.8.1. Скорость обмена
В режиме SPI генератор задания скорости обмена работает таким же об-
разом, как и в синхронном режиме USART. Однако при этом имеются
следующие ограничения.
В режиме ведущего SPI:
• внешний последовательный синхросигнал SCK не должен задавать,
ся (USCLKS * 0x3), а бит CLKO в регистре режима (MR) долхец
быть всегда установлен, чтобы корректно генерировать последова-
тельный синхросигнал на выводе SCK;
• чтобы обеспечивать корректные операции приемника и передат-
чика, значение, записанное в поле CD, должно быть больше или
равно 4;
• если в качестве источника синхросигнала задана поделенная
опорная частота (МСК/DIV), то значение, записанное в поле
CD, должно быть четным, чтобы гарантировать отношение долей
низкой и высокой частей периода на выводе SCK, равное 50:50.
Это значение может быть нечетным только в том случае, если
в качестве источника синхросигнала задана неподеленная опор-
ная частота (МСК).
В режиме ведомого SPI:
• внешний последовательный синхросигнал (SCK) выбирается неза-
висимо от значения поля USCLKS в регистре режима (MR). Значе-
ние, записанное в поле BRGR, не будет иметь никакого эффекта,
потому что на вывод SCK USART будет поступать внешний после-
довательный синхросигнал от ведущего;
• чтобы обеспечивать корректные операции приемника и передатчи-
ка, значение частоты внешнего последовательного синхросигнала
(SCK) должно быть не менее, чем в 4 раза ниже, чем системная за-
дающая частота.
22.2.8.2. Передача данных
При передаче данных информационные разряды (числом до 9) после-
довательно сдвигаются через вывод TXD при каждом положительном
или отрицательном перепаде (в зависимости от значений полей CPOL
и СРНА) импульсов заданного последовательного синхросигнала.
При этом нет никаких «стартовых» битов, битов четности и «стоповых»
битов.
Количество информационных разрядов задается битовыми полями
CHRL и MODE9 в регистре режима (MR). 9 разрядов выбирается путем
установки бита MODE9 независимо от значения поля CHRL. В режиме
ведущего или ведомого SPI первым всегда передается СЗР.
Возможно задание четырех комбинаций полярности и фазы последо-
вательного синхросигнала. Полярность задается битом CPOL в регистре
режима. Фаза задается битом СРНА в том же регистре. Эти два параме-
тра определяют перепад синхросигнала, по которому производятся выдача
и выборка данных. Поскольку каждый из этих двух параметров имеет два
возможных значения, в результате получаются четыре возможных ком-
бинации, которые являются несовместимыми друг с другом. Необходи-
мо заметить, что ведущее и связанное с ним ведомое устройства должны
использовать одинаковые параметры полярности и фазы синхросигнала.
СРНА=1
Рис. 22.38. Формат передачи через SPI: СРНА = 1, передача 8 битов
Рис. 22.39. Формат передачи через SPI: СРНА = 0, передача 8 битов
Если в приложении используются несколько ведомых устройств и для них
задана различная конфигурация, то ведущее устройство должно реконфи-
гурировать свои параметры каждый раз, когда ему необходимо связаться
с новым ведомым.
Табл. 22.12. Режимы протоколов шины SPI модуля USART
Режим SPI CPOL СРНА
. 0 0 1
1 0 0
2 1 1
3 1 0
В табл. 22.12 перечислены четыре возможных режима шины SPI и соок
ветствующие им параметры настройки интерфейса. Временные диаграмм^
показанные на рис. 22.38, 22.39, иллюстрируют примеры передачи данных
в различных режимах.
22.2.8.3. Передача символа
Передача символа производится путем записи в регистр временного хране-
ния данных передачи (THR). Передатчик использует для индикации своего
текущего состояния два бита в регистре состояния канала (CSR): TXRDY
(передатчик готов), который указывает, что регистр THR пуст, и TXEMP-
TY, который указывает, что все записанные в THR символы были обрабо-
таны. Когда обработка текущего символа завершается, последний символ,
записанный в THR, автоматически перемещается в сдвиговый регистр пе-
редатчика и THR становится пустым, что вызывает автоматическую уста-
новку бита TXRDY.
Как бит TXRDY, так и бит TXEMPTY остаются в низком уровне, ког-
да передатчик заблокирован. Запись символа в регистр THR, когда бит
TXRDY находится в низком уровне, не будет иметь никакого эффекта,
а записанный символ будет потерян.
Если модуль USART находится в режиме ведомого SPI и от ведуще-
го поступает запрос на передачу ему символа, в то время как регистр
временного хранения данных передачи (THR) пуст, у ведомого автома-
тически установится бит UNRE (ошибка недогрузки). Вывод TXD в те-
чение этого времени будет оставаться в высоком уровне. Бит UNRE
сбрасывается путем записи 1 в бит RSTSTA (состояние сброса) регистра
управления (CR).
В режиме ведущего SPI линия выбора ведомого (NSS) переводится
в низкий уровень за один битовый интервал до передачи на шину СЗР
и возвращается в высокий уровень через один битовый интервал по-
сле передачи МЗР. Между передачами символа линия выбора ведомого
(NSS) всегда переводится в высокий уровень на время, равное мини-
мум трем битовым интервалам. Однако чтобы обращаться к ведомым
устройствам, поддерживающим режим CSAAT (выбор микросхемы ак-
тивен после передачи), линия выбора ведомого (NSS) может быть про-
граммно переведена в низкий уровень путем записи 1 в бит RTSEN ре-
гистра управления (CR). При этом линия выбора ведомого (NSS) может
быть переведена в высокий уровень только путем записи 1 в бит RTSDIS
регистра управления (CR), например, когда все данные уже переданы
ведомому устройству.
В режиме ведомого SPI для инициализации передачи символа пере-
датчик не требует наличия отрицательного перепада на линии выбо-
ра ведомого (NSS), а требует только низкий уровень на этой линий.
Однако, этот низкий уровень должен присутствовать на линии выбора
ведомого (NSS) в течение времени, не меньшего одного битового интер-
вала перед первым периодом последовательного синхросигнала, соот-
ветствующим СЗР.
22.2.8.4. Прием символа
^огДа прием символа в приемнике завершается, принятый символ авто-
матически перемещается в регистр временного хранения данных приема
zr.HR) и автоматически устанавливается бит RXRDY в регистре состояния
zCSR)- Если прием символа завершается, когда бит RXRDY уже установ-
ки, автоматически устанавливается бит OVRE (ошибка переполнения).
Последний принятый символ перемещается в регистр RHR и «затирает»
предыдущий принятый символ. Бит OVRE может быть сброшен путем за-
писи 1 в бит RSTSTA регистра управления.
Чтобы гарантировать корректное поведение приемника в режиме ведо-
мого SPI, ведущее устройство, посылая ему фрейм, должно гарантировать
минимальную задержку в один битовый интервал перед каждой переда-
чей символа. Приемник не требует наличия отрицательного перепада на
линии выбора ведомого (NSS), а требует только низкий уровень на этой
линии. Однако этот низкий уровень должен присутствовать на линии вы-
бора ведомого (NSS) в течение времени, не меньшего одного битового
интервала перед первым периодом последовательного синхросигнала, со-
ответствующим СЗР.
22.2.8.5. Тайм-аут приемника
Поскольку в режиме SPI последовательный синхросигнал, задающий
скорость приема данных приемником, активен только во время переда-
чи данных передатчиком, поддержка тайм-аута приемника в этом режи-
ме невозможна, независимо от значений тайм-аута (поле ТО) в регистре
тайм-аута (RTOR).
22.2.9. Режимы тестирования
Интерфейс USART может программироваться для работы в трех раз-
личных тестовых режимах. Один из них (внутренний «шлейф») позво-
ляет производить самодиагностику USART. В режиме «шлейфа» выводы
USART, используемые для связи, ни с чем не соединены или сконфи-
гурированы в соответствии с организацией внутреннего или внешнего
«шлейфа».
22.2.9.1. Нормальный режим и режим автоматического
«эха»
В нормальном режиме вывод RXD подключен внутри МК к входу при-
емника, а вывод TXD подключен к выходу передатчика, как показано на
Рис. 22.40.
Режим автоматического «эха» позволяет производить побитовую воз-
вратную передачу (ретрансляцию) для удаленного устройства. Когда бит
Принимается через вывод RXD, он сразу же передается на вывод TXD, как
Показано на рис. 22.41. В этом режиме конфигурирование передатчика не
Приемник
Передатчик
Рис. 22.41. Схемная конфигурация режима автоматического «эха» USART
Приемник
Передатчик
Рис. 22.40. Схемная конфигурация нормального режима USART
оказывает никакого влияния на вывод TXD. Вывод RXD остается подклю-
ченным к входу приемника, и, таким образом, приемник в этом режиме
остается активным.
22.2.9.2. Режим местного «шлейфа» и режим удаленного
«шлейфа»
В режиме местного «шлейфа» выход передатчика внутри МК подключается
непосредственно к входу приемника, как показано на рис. 22.42. Ножки
МК TXD и RXD при этом не используются. Вывод RXD не оказывает
никакого влияния на приемник, а вывод TXD всегда находится в высоком
уровне, как в неактивном режиме (Idle state).
В режиме удаленного «шлейфа» вывод RXD непосредственно подклю-
чается внутри МК к выводу TXD, как показано на рис. 22.43. Передатчик
и приемник при этом заблокированы и не используются. Этот режим по-
зволяет производить побитовую возвратную передачу (ретрансляцию) для
удаленного устройства.
Приемник
Передатчик
Рис. 22.42. Схемная конфигурация режима местного «шлейфа» USART
Приемник
Передатчик
Рис. 22.43. Схемная конфигурация режима удаленного «шлейфа» USART
22.3. Пользовательский интерфейс
Пользовательский интерфейс USART представлен специальными реги-
страми МК, перечисленными в табл. 22.13.
Табл. 22.13. Отображение регистров USART
Смеше- ние Регистр Имя Доступ Значение после сброса
—• CR Только запись
0x0000 Регистр управления USART -
0x0004 Регистр режима USART MR Чтение/запись -
0x0008 Регистр разрешения прерываний от USART IER Только запись -
ОхОООС Регистр запрещения прерываний от USART IDR Только запись -
0x0010 Регистр маски прерываний от USART IMR Только чтение 0x0
0x0014 Регистр состояния канала USART CSR Только чтение -
0x0018 Регистр временного хранения данных приема USART RHR Только чтение 0x0
0х001С Регистр временного хранения данных передачи USART THR Только запись -
0x0020 Регистр генератора задания скорости обмена через USART BRGR Чтение/запись 0x0
0x0024 Регистр тайм-аута приемника USART RTOR Чтение/запись 0x0
0x0028 Регистр timeguard передатчика USART TTGR Чтение/запись 0x0
0х2С— ОхЗС Зарезервировано - - -
0x0040 Регистр отношения FI DI FIDI Чтение/запись 0x174
0x0044 Регистр количества ошибок NER Только чтение -
0x0048 Зарезервировано - - -
0х004С Регистр фильтра IrDA IF Чтение/запись 0x0
0x0050 Регистр кодера и декодера Манчестера MAN Чтение/запись 0x30011004
0х5С— 0xF8 Зарезервировано - - -
Табл. 22.13. (окончание
Смеще- Регистр Имя Доступ ние Значений" после сброса
OxFC Регистр версии USART US_VERSION Только чтение 0x100— Зарезервировано для 0x0- "
0x128 регистров PDCA
22.3.1. Регистр управления USART CR
Битовая структура регистра показана в табл. 22.14.
Табл. 22.14. Битовая структура регистра управления USART CR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - RTSDIS /RCS RTSEN /FCS DTRDIS DTREN
15 14 13 12 11 10 9 8
RETTO RSTNACK RSTIT SENDA STTTO STPBRK STTBRK RSTSTA
7 6 5 4 3 2 1 0
TXDIS TXEN RXDIS RXEN RSTTX RSTRX - -
* RSTRX: сброс приемника.
0: никакого эффекта.
1: сбрасывается приемник.
* RSTTX: сброс передатчика.
0: никакого эффекта.
1: сбрасывается передатчик.
* RXEN: разрешение приемника.
0: никакого эффекта.
1: разрешить приемник, если RXDIS = 0.
• RXDIS: отключение приемника.
0: никакого эффекта.
1: отключить приемник.
* TXEN: разрешение передатчика.
0: никакого эффекта.
1: разрешить передатчик, если TXDIS = 0.
* TXDIS: отключение передатчика.
0: никакого эффекта.
1: отключить передатчик.
. RSTSTA: сброс битов состояния.
0: никакого эффекта.
1: сбрасываются биты состояния PARE, FRAME, OVRE, MANERR
rXBRK в регистре CSR.
11 . STTBRK: начало обрыва.
0: никакого эффекта.
1: начать обрыв передачи после перемещения символов в регистр
fHR и в сдвиговый регистр передачи. Никакого эффекта, если обрыв
уже длится.
. STPBRK: конец обрыва.
0: никакого эффекта.
1: закончить обрыв передачи после длительности обрыва минимум один
символьный интервал и далее передавать высокий уровень в течение 12 би-
товых интервалов. Никакого эффекта, если никакой обрыв не длится.
• STTTO: начало тайм-аута.
0: никакого эффекта.
1: запустить интервал ожидания символа перед синхронизацией счет-
чика тайм-аута. Сбрасывается бит состояния TIMEOUT в CSR.
• SENDA: передать адрес.
0: никакого эффекта.
1: следующий символ, записанный в THR, передается с установленным
битом адреса (четности). Справедливо только для многоточечного режима.
• RSTIT: сброс итераций.
0: никакого эффекта.
1: сбросить поле ITERATION в CSR. Никакого эффекта, если режим
ISO7816 не разрешен.
• RSTNACK: сброс «неподтверждения».
0: никакого эффекта.
1: сброс поля NACK в регистре CSR.
• RETTO: рестарт тайм-аута.
0: никакого эффекта.
1: рестарт тайм-аута.
* DTREN: DTR разрешить.
0: никакого эффекта.
1: переводит вывод DTR в 0.
• DTRDIS: DTR отключить.
0: никакого эффекта.
1: переводит вывод DTR в 1.
* RTSEN: RTS разрешить.
0: никакого эффекта.
1: переводит вывод RTS в 0.
• RTSEN/FCS: RTS разрешить/активировать выбор микросхемы SPI.
Если USART не работает в режиме ведущего SPI (USART_MODE ф ОхЕ):
0: никакого эффекта.
1: переводит вывод RTS в 0.
Если USART работает в режиме ведущего SPI (USART_MODE = ОхЕ):
FCS = 0: никакого эффекта.
FCS = 1: переводит линию выбора ведомого NSS (ножка RTS) в низ-
кий уровень (даже если USART не производит передачу), чтобы обратиться
к внешнему ведомому устройству SPI, поддерживающему режим CSAAT
(выбор микросхемы активен после передачи).
• RTSDIS/RCS: RTS отключить/дезактивировать выбор микросхемы
SPI.
Если USART не работает в режиме ведущего SPI (USARTJMODE Ф ОхЕ):
0: никакого эффекта.
1: переводит вывод RTS в 1.
Если USART работает в режиме ведущего SPI (USART_MODE = ОхЕ):
RCS = 0: никакого эффекта.
RCS = 1: переводит линию выбора ведомого NSS (ножка RTS) в высо-
кий уровень.
22.3.2. Регистр режима USART MR
Битовая структура регистра показана в табл. 22.15.
Табл. 22.15. Битовая структура регистра режима USART MR
31 30 29 28 27 26 25 24
ONEBIT MODSYNC MAN FILTER - MAXJTERATION
23 22 21 20 19 18 17 16
- VAR_SYNC DSNACK INACK OVER CLKO MODE9 MSBF/CPOL
15 14 13 12 11 10 9 8
CHMODE NBSTOP PAR SYNC/CPHA
7 6 5 4 3 2 1 0
CHRL USCLKS USART.MODE
• USARTJMODE: режим USART.
Возможные значения этого поля приведены в табл. 22.16.
Табл. 22.16. Возможные значения битового поля USART_MODE
USART_MODE Режим USART _
0 0 0 0 Нормальный
0 0 0 1 RS-485
0 0 1 0 Аппаратная процедура установления связи
0 0 1 1 Модем
0 1 0 0 IS07816. Протокол: Т = 0
Табл. 22.16.
(окончание)
USART_MODE_________________________Режим USART
о”- 1 1 О IS07816. Протокол: Т = 1
! О 0 0 IrDA
1 1 1 0 Ведущий SPI
1 1 1 1 Ведомый SPI
Прочие Зарезервировано
• USCLKS: выбор синхросигнала.
Возможные значения этого поля приведены в табл. 22.17.
Табл. 22.17. Возможные значения битового поля USCLKS
USCLKS Выбранный источник синхронизации
0 0 МСК
0 1 МСК / DIV
1 0 Зарезервировано
1 1 SCK (внешний источник)
* CHRL: длительность символа в битах.
Возможные значения этого поля приведены в табл. 22.18.
Табл. 22.18. Возможные значения битового поля CHRL
CHRL Длительность символа
0 0 5 битов
0 1 6 битов
1 0 7 битов
1 1 8 битов
* SYNC/CPHA: выбор режима синхронизации/фаза последовательного
синхросигнала SPI.
Если USART не работает в режиме SPI (USART MODE * ОхЕ и OxF):
SYNC - 0: USART работает в асинхронном режиме.
SYNC = 1: USART работает в синхронном режиме.
Если USART работает в режиме SPI (USART_MODE = ОхЕ или OxF):
СРНА = 0: данные изменяются по положительному перепаду SPCK
и фиксируются по следующему перепаду SPCK.
СРНА = 1: данные фиксируются по положительному перепаду SPCK
и изменяются по следующему перепаду SPCK.
Бит СРНА'определяет, какой перепад SPCK изменяет данные, и какой
Перепад фиксирует данные на шине. Бит СРНА используется совместно
с битом CPOL, чтобы задать требуемую комбинацию «фаза/полярность»
синхросигнала между ведущим и ведомыми устройствами.
• PAR: тип контроля четности.
Возможные значения этого поля приведены в табл. 22.19.
Табл. 22.19. Возможные значения битового поля PAR
PAR Тип контроля четности
0 0 0 Проверка на четность
0 0 1 Проверка на нечетность
0 1 0 Бит четности задается равным 0 (пробел)
0 1 1 Бит четности задается равным 1 (маркер)
1 0 X Никакого контроля четности
1 1 X Многоточечный режим
• NBSTOP: количество «стоповых» битов.
Возможные значения этого поля приведены в табл. 22.20.
Табл. 22.20. Возможные значения битового поля NBSTOP
NBSTOP Асинхронный режим (SYNC = 0) Синхронный режим (SYNC = 1)
0 0 1 «столовый» бит 1 «столовый» бит
0 1 1,5 «стоповых» бита Зарезервировано
1 0 2 «стоповых» бита 2 «стоповых» бита
1 1 Зарезервировано Зарезервировано
* CHMODE: режим канала.
Возможные значения этого поля приведены в табл. 22.21.
Табл. 22.21. Возможные значения битового поля CHMODE
CHMODE Описание режима
0 0 Нормальный режим
0 1 Автоматическое «эхо». Вход приемника связан с выводом TXD.
1 0 Местный «шлейф». Выход передатчика связан с входом приемника.
1 1 Удаленный «шлейф». Вывод RXD внутри МК связан с выводом TXD. _
• MSBF/CPOL: порядок следования битов/полярность последовательного
синхросигнала SPI
Если USART не работает в режиме SPI (USART MODE ОхЕ и OxF):
MSBF = 0: младший значащий разряд (МЗР) передается/принимаетсл
первым.
MSBF = 1: старший значащий разряд (СЗР) передается/принимается
первым-
Если USART работает в режиме SPI (ведущий или ведомый, USART_
MODE = ОхЕ или OxF):
CPOL = 0: неактивное состояние SPCK — уровень логического 0.
CPOL = 1: неактивное состояние SPCK — уровень логической 1.
Бит CPOL используется, чтобы определить неактивное состояние
последовательного синхросигнала (SPCK). Этот бит используется со-
вместно с битом СРНА, чтобы задать требуемую комбинацию «фаза/
полярность» синхросигнала между ведущим и ведомыми устройст-
вами.
* MODE9: 9-битовая длительность символа.
0: поле CHRL определяет длительность символа.
1: 9-битовая длительность символа.
* CLKO: выбор выхода синхронизации.
0: USART не управляет выводом SCK.
1: USART управляет выводом SCK, если поле USCLKS не выбирает
внешний источник синхронизации SCK.
* OVER: режим частоты выборки.
0: 16-кратная частота выборки.
1: 8-кратная частота выборки.
• INACK: запрет «неподтверждения».
0: NACK генерируется.
1: NACK не генерируется.
• DSNACK: отключить последовательный NACK.
0: NACK передается по линии ISO, как только в принятом символе
происходит ошибка четности (если бит INACK не установлен).
1: последовательно происходящие ошибки четности подсчитываются
до значения, указанного в поле MAX ITERATION. Эти ошибки четности
генерируют NACK на линии ISO. Как только указанное значение дости-
гается, NACK перестает передаваться по линии ISO. Устанавливается флаг
ITERATION.
*VAR_SYNC: переменная синхронизация разделителя начала синхрониза-
ции фрейма команд/данных.
0: определяемая пользователем конфигурация поля синхронизации ко-
манды или данных в зависимости от значения поля SYNC.
1: поле синхронизации модифицируется, когда символ записывается
в регистр THR.
• MAXITERATION
Определяет максимальное количество итераций в режиме ISO7816, для
протокола Т = 0.
* FILTER: фильтр на линии приемника инфракрасного излучения.
0: USART не фильтрует линию приема.
1: USART фильтрует линию приема, используя фильтр с тремя выбор-
ками (период 1/16 битового интервала).
• MAN: разрешение манчестерского кодера/декодера.
0: манчестерский кодер/декодер заблокирован.
1: манчестерский кодер/декодер разрешен.
• MODSYNC: режим синхронизации при манчестерском кодировании.
0: стартовый манчестерский бит — переход «0 в 1».
1: стартовый манчестерский бит — переход «1 в 0».
• ONEBIT: селектор разделителя начала фрейма.
0: разделитель начала фрейма — поле синхронизации команд или дац,
ных (COMMAND SYNC или DATA SYNC).
1: разделитель начала фрейма — один бит.
22.3.3. Регистры разрешения/запрещения/маски прерываний
от USART IER/IDR/IMR
Битовая структура каждого из этих регистров показана в табл. 22.22.
Табл. 22.22. Битовая структура каждого из регистров разрешения/запреще-
ния/маски прерываний от USART IER/IDR/IMR
31 30 29 28 27 26 25 24
- - - - - - - MANE
23 22 21 20 19 18 17 16
- - - MANE CTSIC DCDIC DSRIC RIIC
15 14 13 12 11 10 9 8
- - NACK RXBUFF TXBUFE ITER/UNRE TXEMPTY TIMEOUT
7 6 5 4 3 2 1 0
PARE FRAME OVRE ENDTX ENDRX RXBRK TXRDY RXRDY
Для регистра IER:
* RXRDY: разрешение прерывания RXRDY.
* TXRDY: разрешение прерывания TXRDY.
* RXBRK: разрешение прерывания при обрыве приемника.
* ENDRX: разрешение прерывания по окончании приема.
* ENDTX: разрешение прерывания по окончании передачи.
* OVRE: разрешение прерывания при ошибке переполнения.
* FRAME: разрешение прерывания при ошибке кадровой синхронизации.
* PARE: разрешение прерывания при ошибке четности.
* TIMEOUT: разрешение прерывания при тайм-ауте.
• TXEMPTY: разрешение прерывания TXEMPTY.
• ITER/UNRE: разрешение итеративного прерывания/прерывания от
ошибки недогрузки SPI.
• TXBUFE: разрешение прерывания при пустом буфере.
* RXBUFF: разрешение прерывания при полном буфере.
. NACK: разрешение прерывания при «неподтверждении».
. RIIC: разрешение изменения входа индикации вызова.
. DSRIC: разрешение изменения входа готовности данных.
. DCDIC: разрешение изменения входа обнаружения несущей частоты
данных-
. CTSIC: разрешение изменения входа готовности к передаче.
• MANE: разрешение прерывания при манчестерской ошибке.
0: никакого эффекта.
1: разрешить соответствующее прерывание.
Для регистра IDR:
* RXRDY: запрещение прерывания RXRDY.
• TXRDY: запрещение прерывания TXRDY.
• RXBRK: запрещение прерывания при обрыве приемника.
• ENDRX: запрещение прерывания по окончании приема.
« ENDTX: запрещение прерывания по окончании передачи.
• OVRE: запрещение прерывания при ошибке переполнения.
• FRAME: запрещение прерывания при ошибке кадровой синхрони-
зации.
* PARE: запрещение прерывания при ошибке четности.
* TIMEOUT: запрещение прерывания при тайм-ауте.
• TXEMPTY: запрещение прерывания TXEMPTY.
• ITER/UNRE: запрещение итеративного прерывания/прерывания от
ошибки недогрузки SPI.
* TXBUFE: запрещение прерывания при пустом буфере.
* RXBUFF: запрещение прерывания при полном буфере.
* NACK: запрещение прерывания при «неподтверждении».
* RIIC: запрещение изменения входа индикации вызова.
* DSRIC: запрещение изменения входа готовности данных.
* DCDIC: запрещение изменения входа обнаружения несущей частоты
данных.
• CTSIC: запрещение изменения входа готовности к передаче.
• MANE: запрещение прерывания при манчестерской ошибке.
0: никакого эффекта.
1: запретить соответствующее прерывание.
Для регистра IMR:
* RXRDY: маска прерывания RXRDY.
* TXRDY: маска прерывания TXRDY.
* RXBRK: маска прерывания при обрыве приемника.
* ENDRX: маска прерывания по окончании приема.
* ENDTX: маска прерывания по окончании передачи.
* OVRE: маска прерывания при ошибке переполнения.
* FRAME: маска прерывания при ошибке кадровой синхронизации.
* PARE: маска прерывания при ошибке четности.
• TIMEOUT: маска прерывания при тайм-ауте.
• TXEMPTY: маска прерывания TXEMPTY.
• ITER/UNRE: маска итеративного прерывания/прерывания от ошибки
Недогрузки SPI.
* TXBUFE: маска прерывания при пустом буфере.
• RXBUFF: маска прерывания при полном буфере.
* NACK: маска прерывания при «неподтверждении».
• RIIC: маска изменения входа индикации вызова.
* DSRIC: маска изменения входа готовности данных.
* DCDIC: маска изменения входа обнаружения несущей частоты данных
• CTSIC: маска изменения входа готовности к передаче.
* MANE: маска прерывания при манчестерской ошибке.
0: соответствующее прерывание запрещено.
1: соответствующее прерывание разрешено.
Замечание переводчика. В оригинальной документации производителя
битовая структура каждого из этих регистров содержит поле MANE, ука.
занное в двух местах, без каких-либо пояснений.
22.3.4 . Регистр состояния канала USART CSR
Битовая структура регистра показана в табл. 22.23.
Табл. 22.23. Битовая структура регистра состояния канала USART CSR
31 30 29 28 27 26 25 24
- - - - - - - MANERR
23 22 21 20 19 18 17 16
CTS DCD DSR RI CTSIC DCDIC DSRIC RIIC
15 14 13 12 11 10 9 8
- - NACK RXBUFF TXBUFE ITER/ UNRE TXEMPTY TIM- EOUT,
7 6 5 4 3 2 1 0 _
PARE FRAME OVRE ENDTX ENDRX RXBRK TXRDY RXRDY.
* RXRDY: готовность приемника.
0: ни один законченный символ не был принят с момента последнего
чтения регистра RHR или с момента блокировки приемника. Если симво-
лы были приняты, когда приемник был заблокирован, то после разреше"
ния приемника бит RXRDY автоматически устанавливается.
1: не менее чем один законченный символ был принят и регистр RHR
после этого еще не читался программой.
• TXRDY: готовность передатчика.
0: символ находится в регистре THR и логика «ожидает» его перемеШС'
ния в сдвиговый регистр передатчика или была подана команда STTBRK’
или передатчик был заблокирован. Как только передатчик разрешается,
бит TXRDY автоматически устанавливается.
*. нет символа в THR.
. RXBRK: обрыв приема/конец обрыва.
0: никакой обрыв приема или конец обрыва не был детектирован после
последнего RSTSTA.
1: обрыв приема или конец обрыва был детектирован после последнего
RSTSTA.
. ENDRX: конец передачи приемника.
0: сигнал конца передачи от канала PDCA приемника неактивен.
1: сигнал конца передачи от канала PDCA приемника активен.
• ENDTX: конец передачи передатчика.
0: сигнал конца передачи от канала PDCA передатчика неактивен.
1: сигнал конца передачи от канала PDCA передатчика активен.
• OVRE: ошибка переполнения.
0: никакая ошибка переполнения не произошла после последнего сбро-
са битов состояния (RSTSTA).
1: не менее одной ошибки переполнения произошло после последнего
сброса битов состояния (RSTSTA).
* FRAME: ошибка кадровой синхронизации.
0: никакой «столовый» бит низкого уровня не был детектирован после
последнего сброса битов состояния (RSTSTA).
1: не менее, чем один «столовый» бит низкого уровня был детектирован
после последнего сброса битов состояния (RSTSTA).
* PARE: ошибка четности.
0: никакая ошибка четности не была детектирована после последнего
сброса битов состояния (RSTSTA).
1: не менее одной ошибки четности было детектировано после послед-
него сброса битов состояния (RSTSTA).
• TIMEOUT: тайм-аут приемника.
0: не было тайм-аута, так как после последней команды начала тайм-
аута (STTTO в CR) регистр тайм-аута содержит 0.
1: был тайм-аут после последней команды начала тайм-аута (STTTO
в CR).
• TXEMPTY: передатчик пуст.
0: есть символы в регистре THR или в сдвиговом регистре передатчика
или передатчик заблокирован.
1: и регистр THR, и сдвиговый регистр передатчика пусты.
* ITER/UNRE: количество итераций достигло максимального значения/
ошибка недогрузки SPI.
Если USART не работает в режиме ведомого SPI (USART_MODE *
* OxF):
ITER = 0: максимальное количество итераций не было достигнуто по-
сле последнего сброса битов состояния (RSTSTA).
ITER = 1: максимальное количество итераций было достигнуто после
Последнего сброса битов состояния (RSTSTA).
Если USART работает в режиме ведомого SPI (USART_MODE =
= OxF):
UNRE = 0: никакая ошибка недогрузки SPI не произошла после по-
следнего сброса битов состояния (RSTSTA).
UNRE = 1: не менее чем одна ошибка недогрузки SPI произошла после
последнего сброса битов состояния (RSTSTA).
• TXBUFE: буфер передачи пуст.
0: сигнал пустого буфера от канала PDCA передатчика неактивен.
1: сигнал пустого буфера от канала PDCA передатчика активен.
• RXBUFF: буфер приема полон.
0: сигнал полного буфера от канала PDCA приемника неактивен.
1: сигнал полного буфера от канала PDCA приемника активен.
• NACK: «неподтверждение».
0: никакое «неподтверждение» не было детектировано после последнего
сброса «неподтверждения» (RSTNACK).
1: не менее одного «неподтверждения» было детектировано после по-
следнего сброса «неподтверждения» (RSTNACK).
• RIIC: флаг изменения входа индикации вызова.
0: никакое изменение не было детектировано на выводе RI после по-
следнего чтения CSR.
1: не менее одного изменения было детектировано на выводе RI после
последнего чтения CSR.
* DSRIC: флаг изменения входа готовности данных.
0: никакое изменение не было детектировано на выводе DSR после по-
следнего чтения CSR.
1: не менее одного изменения было детектировано на выводе DSR после
последнего чтения CSR.
* DCDIC: флаг изменения входа обнаружения несущей частоты данных.
0: никакое изменение не было детектировано на выводе DCD после по-
следнего чтения CSR.
1: не менее одного изменения было детектировано на выводе DCD по-
сле последнего чтения CSR.
* CTSIC: флаг изменения входа готовности к передаче.
0: никакое изменение не было детектировано на выводе CTS после по-
следнего чтения CSR.
1: не менее одного изменения было детектировано на выводе CTS после
последнего чтения CSR.
* RI: отображение входа RI.
0: RI - в 0.
1: RI - в 1.
* DSR: отображение входа DSR.
0: DSR - в 0
1: DSR - в 1.
• DCD: отображение входа DCD.
0: DCD - в 0.
1: DCD - в 1.
• CTS: отображение входа CTS.
0: CTS - в 0.
1: CTS - в 1.
. MANERR: манчестерская ошибка.
0: никакая манчестерская ошибка не была детектирована после послед-
него сброса битов состояния (RSTSTA).
1: не менее одной манчестерской ошибки было детектировано после по-
следнего сброса битов состояния (RSTSTA).
22.3.5. Регистр временного хранения данных приема USART
RHR
Битовая структура регистра показана в табл. 22.24.
Табл. 22.24. Битовая структура регистра временного хранения данных при-
ема USART RHR
31 30 219 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
RXSYNH - - - - - - RXCHR
7|6|5|4|3|2|l|0
RXCHR
* RXCHR: принятый символ.
Последний принятый символ, если бит RXRDY регистра CSR установ-
лен.
* RXSYNH: принятое поле синхронизации.
0: последний принятый символ — данные.
1: последний принятый символ — команда.
22.3.6. Регистр временного хранения данных передачи
USART THR
Битовая структура регистра показана в табл. 22.25.
Табл. 22.25. Битовая структура регистра временного хранения данных пере-
дачи USART THR
_ 31 ' 30 29 28 27 26 25 24
- - - - - - - -
Табл. 22.25.
(окончание)
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
TXSYNH - - - - - - TXCHR*
7 6 5 4 3 2 1 0
TXCHR
* TXCHR: символ, который будет передан.
Следующий символ, который будет передан после текущего символа,
если бит TXRDY регистра CSR не установлен.
* TXSYNH: поле синхронизации, которое будет передано.
0: следующий переданный символ будет закодирован как данные. Раз-
делитель начала фрейма — DATA SYNC.
1: следующий переданный символ будет закодирован как команда. Раз-
делитель начала фрейма — COMMAND SYNC.
22.3.7. Регистр генератора скорости обмена через USART
BRGR
Битовая структура регистра показана в табл. 22.26.
Табл. 22.26. Битовая структура регистра генератора скорости обмена через
USART BRGR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - FP
15 14 13 12 11 10 9 8
CD
6 5 4 3 2 1
CD
* CD: делитель частоты синхросигнала.
Возможные значения этого поля приведены в табл. 22.27.
Табл. 22.27. Возможные значения поля CD
CD USART_MODE не соответствует режиму ISO7816 USARTMODE соответствует режиму ISO7816
SYNC = 0 SYNC = 1 или USART_MODE соответствует режиму SPI (ведущего или ведомого)
OVER = 0 OVER = 1
0 Частота задания скорости обмена отключена
От 1 до 65535 Скорость обмена = = выбранная частота/16/CD Скорость обмена = = выбранная частота/8/CD Скорость обмена = = выбранная частота/CD Скорость обмена = = выбранная частота/CD/ FI_DI_RATIO
* FP: дробная часть делителя.
0: дробная часть делителя заблокирована.
1—7: задание скорости обмена определяется значением FP х 1/8.
22.3.8. Регистр тайм-аута приемника USART RTOR
Битовая структура регистра показана в табл. 22.28.
Табл. 22.28. Битовая структура регистра тайм-аута приемника USART
RTOR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
ТО
7 6 5 4 3 2
ТО
• ТО: значение тайм-аута.
0: тайм-аут приемника заблокирован.
1—65535: тайм-аут приемника разрешен и время задержки тайм-аута
равно значению ТО х (битовый интервал).
22.3.9. Регистр timeguard передатчика USART TTGR
Битовая структура регистра показана в табл. 22.29.
Табл. 22.29. Битовая структура регистра timeguard передатчика USART
TTGR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 Т 3 G 2 1 0
* TG: значение интервала timeguard.
0: timeguard передатчика заблокирован.
1—255: timeguard передатчика разрешен и время задержки timeguard
равно значению TG х (битовый интервал).
22.3.10. Регистр отношения Fl DI USART FIDI
Битовая структура регистра показана в табл. 22.30.
Табл. 22.30. Битовая структура регистра отношения FI DI USART FIDI
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16 __
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - FI DI_RATIO _
FI DI RATIO
. FI_DI_RATIO: отношение FI к DI
0: если выбран режим ISO7816, то генератор скорости обмена не гене-
рирует никакого сигнала.
F 1—2047: если выбран режим ISO7816, то скорость обмена задается ча-
стотой, равной значению SCK / FI_DI_RATIO.
22.3.11. Регистр количества ошибок USART NER
Битовая структура регистра показана в табл. 22.31.
Табл. 22.31. Битовая структура регистра количества ошибок USART NER
31 30 29 28 27 26 25 24
- - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 и 10 9 8
- - - - - - - -
6 5 4 3 2 1
NB ERRORS
• NB_ERRORS: количество ошибок.
Общее количество ошибок, которое произошло в ходе обмена в режи-
ме ISO7816. Этот регистр автоматически обнуляется при его программном
чтении.
22.3.12. Регистр фильтра IrDA USART IF
Битовая структура регистра показана в табл. 22.32.
Табл. 22.32. Битовая структура регистра фильтра IrDA USART IF
— 31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
_ 15 14 13 12 11 10 9 8
- - - - - - -
Табл. 22.32.
(окончание)
7 6 5 4 3 2 1 0
IRDA_FILTER
• IRDA_FILTER: фильтр IrDA.
Задать фильтр для демодулятора IrDA.
22.3.13. Регистр манчестерских кодера и декодера USART
MAN
Битовая структура регистра показана в табл. 22.33.
Табл. 22.33. Битовая структура регистра манчестерских кодера и декодера
USART MAN
31 30 29 28 27 26 25 24
- DRIFT - RX_MPOL - - RX _РР
23 22 21 20 19 18 17 16
- - - - RX_PL
15 14 13 12 11 10 9 8
- - - TX_MPOL - - ТХ _PP
7 6 5 4 3 2 1 0
- - - - ТХ. _PL
* TX PL: продолжительность преамбулы передатчика.
0: формирование последовательности преамбулы передатчика заблоки-
ровано.
1—15: продолжительность преамбулы равна значению TX_PL х (бито-
вый интервал).
* ТХ РР: форма преамбулы передатчика.
Возможные значения этого поля приведены в табл. 22.34.
Табл. 22.34. Возможные значения поля ТХ_РР
TX-PP Заданная по умолчанию полярность формы преамбулы (значение поля ТХ MPOL не задано) _
0 0 ALL_ONE
0 1 ALL_ZERO
1 0 ZERO_ONE
1 1 ONE_ZERO
• TX_MPOL: полярность кода Манчестера передатчика.
0: логический 0 кодируется как переход «0 в 1», логическая 1 кодируется
каК переход «1 в 0».
1: логический 0 кодируется как переход «1 в 0», логическая 1 кодируется
как переход «0 в 1».
• RX_PL: продолжительность преамбулы приемника.
0: детектирование последовательности преамбулы приемником забло-
кировано.
1—15: продолжительность детектируемой преамбулы равна значению
rX_PL х (битовый интервал).
* RX_PP: форма детектируемой приемником преамбулы.
Возможные значения этого поля приведены в табл. 22.35.
Табл. 22.35. Возможные значения поля RX_PP
RX_PP Заданная по умолчанию полярность формы преамбулы (значение поля RX_MPOL не задано)
0 0 ALL_ONE
0 1 ALL_ZERO
1 0 ZERO_ONE
1 1 ONE_ZERO
* RX MPOL: полярность кода Манчестера приемника.
0: логический 0 кодируется как переход «0 в 1», логическая 1 кодируется
как переход «1 в 0».
1: логический 0 кодируется как переход «1 в 0», логическая 1 кодируется
как переход «0 в 1».
* DRIFT: компенсация «ухода».
0: интерфейс USART не может скомпенсировать существенный уход
синхросигнала.
1: интерфейс USART может скомпенсировать уход синхросигнала.
При этом необходимо разрешить режим 16-кратной частоты выборки.
22.3.14. Регистр версии USART US_VERSION
Битовая структура регистра показана в табл. 22.36.
Табл. 22.36. Битовая структура регистра версии USART US_VERSION
— 31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - MFN
Табл. 22.36. (окончание)
15 14 13 12 11 1 ю 9 8
- - - - VERSION
7 6 5 4 3 2 1 0 '
VERSION
VERSION: зарезервировано.
MFN: зарезервировано.
ГЛАВА 23
КОНТРОЛЛЕР СТАТИЧЕСКОЙ
ПАМЯТИ (SMC)
23.1. Основные особенности
Встроенный контроллер статической памяти (SMC) входит в состав только
МК подсемейства AT32UC3A. Модуль SMC имеет следующие основные
особенности:
• имеется возможность выбора до 4 внешних микросхем памяти;
• в выбранной микросхеме поддерживается адресное пространство
объемом до 64М;
• поддерживается 8-, 16- или 32-разрядная шина данных;
• имеется возможность перемещения слов, полуслов, байт данных;
• наличие линий выбора и записи байта;
• программируемая установка длительностей импульса и задержки
для сигналов чтения для выбранной внешней микросхемы;
• программируемая установка длительностей импульса и задержки
для сигналов записи для выбранной внешней микросхемы;
• программируемая установка резервного времени данных для вы-
бранной внешней микросхемы;
• согласуется с внешним модулем ЖКИ;
• поддержка ожидания внешнего запроса;
• автоматическое переключение в режим медленной синхронизации;
• поддержка асинхронного чтения в постраничном режиме с разме-
ром страницы от 4 до 32 байт.
Контроллер статической памяти генерирует сигналы управления
доступом к внешним устройствам памяти или периферийным устрой-
ствам. Контроллер имеет 4 линии выбора внешних микросхем и 26-раз-
рядную адресную шину. 32-разрядная шина данных SMC может быть
сконфигурирована для обмена с 8-, 16- или 32-разрядными внешни-
ми устройствами. Раздельные сигналы управлением чтением и записью
в SMC являются полностью конфигурируемыми по своим временным
параметрам.
Модуль SMC может функционировать в состоянии ожидания запро-
сов от внешних устройств, чтобы продлить текущий доступ к ним. SMC
автоматически поддерживает медленный режим синхронизации. В этом
режиме он переключается из сконфигурированной пользователем формы
сигналов управления чтением и записью в форму, соответствующую режи-
му медленной синхронизации.
Рис. 23.1. Блок-схема контроллера статической памяти (SMC)
Модуль SMC поддерживает асинхронное блочное чтение при доступе
в постраничном режиме для страниц размером до 32 байт.
Блок-схема контроллера SMC приведена на рис. 23.1. Описание сигна-
лов, относящихся к интерфейсу SMC, приведено в табл. 23.1.
Описание мультиплексированных между собой сигналов, относящихся
к интерфейсу SMC, приведено в табл. 23.2.
23.2. Примеры применения
На рис. 23.2 показан пример подключения к МК через интерфейс SMC
микросхем статической памяти.
Выводы МК, используемые контроллером SMC, могут быть мультиплек-
сированы с линиями GPIO. Программа должна сначала сконфигурировать
контроллер GPIO, а затем назначить выводам SMC их периферийные функ-
ции. Если линии ввода-вывода, относящиеся к SMC, не используются прило-
жением, то они могут использоваться для других целей в контроллере GPIO.
Модуль SMC поддерживает до 26 линий адреса: [25:0]. Это позволя-
ет с помощью каждой линии выбора внешней микросхемы обращаться
Табл. 23.1. Описание сигналов интерфейса SMC
вывода Описание вывода Тип вывода Активный уровень
54сГ[5:0] Линии выбора микросхем контроллера статической памяти Выход Низкий
NRD Сигнал чтения Выход Низкий
NWR0/NWE Сигнал записи 0/разрешения записи Выход Низкий
A0/NBS0 Сигнал разряда 0 адреса/выбора байта 0 Выход Низкий
NWR1/NBS1 Сигнал записи 1/выбора байта 1 Выход Низкий
A1/NWR2/NBS2 Сигнал разряда 1 адреса/записи 2/ выбора байта 2 Выход Низкий
NWR3/NBS3 Сигнал записи 3/выбора байта 3 Выход Низкий
А[25:2] Адресная шина Выход
D [31:0] Шина данных Вход/ выход
NWAIT Сигнал внешнего запроса ожидания Вход Низкий
к адресному пространству памяти размером до 64М. Адресные линии [25:0]
являются значащими только для памяти с 8-разрядной организацией, ли-
нии [25:1] являются значащими для памяти с 16-разрядной организацией,
а линии [25:2] — для памяти с 32-разрядной организацией.
На рис. 23.3 показан пример подключения к МК через интерфейс SMC
восьми внешних устройств памяти.
Для каждой внешней выбранной микросхемы может быть индиви-
дуально задана ширина шины данных, равная 8, 16 или 32 разрядам.
Эта опция управляется битовым полем DBW регистра режима (MODE)
для соответствующей выбранной микросхемы. На рис. 23.4а и 23.46 по-
казаны схемы подключения к МК внешней микросхемы памяти с ор-
ганизацией 512к х 8 и 512к х 16 соответственно. На рис. 23.4в показа-
на схема подключения к МК двух внешних 16-разрядных микросхем
памяти, рассматриваемых контроллером SMC как одна 32-разрядная
микросхема.
Табл. 23.2. Описание мультиплексированных сигналов интерфейса SMC
Мультиплексированные сигналы Выбираемые функции
NWR0 NWE Доступ с записью или выбором байта
АО NBS0 8- или 16/32-разрядная шина данных
NWR1 NBS1 Доступ с записью или выбором байта
А1 NWR2 NBS2 8- или 16/32-разрядная шина данных, а также
доступ с записью или выбором байта
NWR3 NBS3 Доступ с записью или выбором байта
Рис. 23.2. Пример подключения к МК через интерфейс SMC микросхем
статической памяти
Каждая выбранная микросхема с 16- или 32-разрядной шиной данных
может работать с одним из двух различных типов доступа для записи: до-
ступом с записью байта или доступом с выбором байта. Различия между
этими типами доступа будут показаны ниже. Эта опция управляется бито-
вым полем ВАТ регистра режима (MODE) для соответствующей выбран-
ной микросхемы.
Рис. 23.3. Пример подключения к МК через интерфейс SMC восьми внеШ'
них устройств памяти
D[7.0] D[7:0]
А[18:2] — А[18:2]
АО — АО
SMC А1 NWE — А1 Разрешение записи
NRD — Разрешение чтения
NCS[2] — Выбор микросхемы
памяти
a
D[15:0] А[19:2] А1 SMC NBS0 NBS1 NWE NRD NCS[2] D[15:0] A[18:1] A[0] Разрешение старшего байта Разрешение младшего байта Разрешение записи Разрешение чтения Выбор микросхемы памяти
б
ми-
Рис. 2374. Схемы подключения к МК через интерфейс SMC внешних
кросхем памяти
Доступ с записью байта в контроллере SMC поддерживается индиви-
дуально для каждой микросхемы сигналом записи байта и единственным
сигналом чтения.
• Для 16-разрядных устройств: SMC обеспечивает сигналы NWRo
и NWR1 записи байта 0 (младший байт) и байта 1 (старший байт) соответ-
ственно 16-разрядной шины. Кроме того, SMC обеспечивает единствен-
ный сигнал чтения (NRD). Доступ с записью байта используется, чтобы
подключить к МК два 8-разрядных устройства памяти как одно 16-раз-
рядное.
• Для 32-разрядных устройств: SMC обеспечивает сигналы NWR0,
NWR1, NWR2 и NWR3 записи байта 0 (младший байт), байта 1, байта 2
и байта 3 (старший байт) соответственно 32-разрядной шины. Кроме того,
SMC обеспечивает единственный сигнал чтения (NRD). Доступ с записью
байта используется, чтобы подключить к МК четыре 8-разрядных устрой-
ства памяти как одно 32-разрядное.
Доступ с записью байта иллюстрируется схемой, изображенной на
рис. 23.5.
В режиме доступа с выбором байта в контроллере SMC операции чте-
ния/записи можно разрешить/запретить на уровне байта. В этом режиме
контроллер SMC поддерживает индивидуальный для каждого байта в сло-
ве или двойном слове сигнал выбора байта. Один сигнал NRD и один
сигнал NWE в этом режиме управляют чтением и записью.
Рис. 23.5. Подключение к МК внешних микросхем памяти при доступе
с записью байта
• Для 16-разрядных устройств: SMC обеспечивает сигналы выбора
I<[BS0 и NBS1 байта 0 (младший байт) и байта 1 (старший байт) соответ-
ственно 16-разрядной шины. Доступ с выбором байта используется, чтобы
подключить к МК одно 16-разрядное устройство.
• Для 32-разрядных устройств: SMC обеспечивает сигналы выбо-
ра NBSO, NBS1, NBS2 и NBS3 байта 0 (младший байт), байта 1, байта
2 и байта 3 (старший байт) соответственно 32-разрядной шины. Доступ
с выбором байта используется, чтобы подключить к МК два 16-разрядных
устройства.
Доступ с выбором байта иллюстрируется схемой, изображенной на
рис. 23.6. На схеме показано, как подключить два 16-разрядных устройства
к 32-разрядной шине данных в режиме выбора байта с использованием
сигнала NCS3.
В зависимости от содержимого битового поля ВАТ при подключении
внешних микросхем в МК используются только сигналы записи или сиг-
налы выбора байта контроллера SMC. С целью экономии линий интерфей-
са производитель сделал сигналы управления интерфейса SMC мульти-
плексированными. В табл. 23.3 показано, какие сигналы SMC могут быть
Рис. 23.6. Подключение к МК внешних микросхем памяти при доступе
с выбором байта
мультиплексированы в зависимости от ширины шины данных и типа до-
ступа к байту.
Для 32-разрядных устройств не используются адресные разряды До
и А1. Для 16-разрядных устройств не используется разряд АО. Когда задана
опция выбора байта, не используются сигналы NWR1 и NWR3. Когда за-
дана опция записи байта, не используются сигналы NBS0 к NBS3.
Табл. 23.3. Мультиплексирование сигналов SMC в зависимости от ширины
шины данных и типа доступа к байту
Имя сигнала 32-разрядная шина 16-разрядная шина 8-разряд- ная шина
Тип устройства 1x32 2х 16 4x8 1 X 16 2x8 1x8
разряда разрядов разрядов разрядов разрядов разрядов
Тип доступа Выбор Выбор Запись Выбор Запись
к байту (ВАТ) байта байта байта байта байта
NBS0_A0 NBS0 NBS0 NBS0 АО
NWE_NWR0 NWE NWE NWR0 NWE NWR0 NWE
NBS1_NWR1 NBS1 NBS1 NWR1 NBS1 NWR1
NBS2_NWR2_A1 NBS2 NBS2 NWR2 А1 А1 А1
NBS3_NWR3 NBS3 NBS3 NWR3
Для получения дополнительной информации о протоколах записи
и чтения SMC, режиме медленной синхронизации, пользовательском ин-
терфейсе, режиме асинхронного чтения в постраничном режиме и других
особенностях конфигурирования SMC рекомендуется обратиться к источ-
нику [3].
ГЛАВА 24
КОНТРОЛЛЕР SDRAM (SDRAMC)
24.1. Основные особенности
Встроенный контроллер динамической памяти SDRAM (SDRAMC) входит
в состав только МК подсемейства AT32UC3A. Модуль SDRAMC имеет сле-
дующие основные особенности.
• Поддержка различных типов внешних устройств памяти:
- с размером строки адресуемой памяти: 2к, 4к, 8к;
- устройств SDRAM с двумя или четырьмя внутренними банками;
- устройств SDRAM с 16- или 32-разрядной организацией данных.
• Возможность конфигурирования следующих параметров:
- доступ к байту, полуслову, слову;
- автоматический разрыв страниц при достижении границы памяти;
- программирование синхронизации временных параметров;
- автоматическая операция регенерации с программируемой часто-
той регенерации;
- автоматическое обновление параметров DS, TCR и PASR (при-
меняется в устройствах SDRAM мобильных телефонов).
• Возможности по энергосбережению:
- саморегенерация, поддержка режимов с «отключенным» питани-
ем и с «глубоко отключенным» питанием;
- поддержка устройств SDRAM, применяемых в мобильных те-
лефонах.
• Обнаружение ошибок:
- генерация прерывания при ошибке регенерации.
• Программная инициализация SDRAM при включении питания.
• Поддержка формата неактивности сигнала CAS, равного 1, 2 и 3.
Контроллер SDRAM расширяет возможности встроенной памяти МК,
обеспечивая интерфейс с внешним 16- или 32-разрядным устройством
SDRAM. Модуль SDRAMC поддерживает размер страницы памяти в диа-
пазоне от 2048 до 8192 и количество столбцов в диапазоне от 256 до 2048.
Под держивается доступ к байту, полуслову и слову, а также блочные чтение
и запись при единичной длительности блока. Также SDRAMC поддержи-
вает формат неактивности сигнала CAS, равный 1, 2 и 3.
Различные режимы доступа, поддерживаемые SDRAMC: саморегенера-
ция, «отключенное» питание и «глубоко отключенное» питание, — позво-
ляют экономить мощность, потребляемую устройствами SDRAM.
Блок-схема контроллера SDRAM показана на рис. 24.1. Описание сиг-
налов, относящихся к интерфейсу SDRAMC, приведено в табл. 24.1.
SDCK
SDCKE
SDCS
BA[1.0]
RAS
CAS
SDWE
NBS[3 0]
SDRAMCA[120]
D[310]
Рис. 24.1. Блок-схема контроллера SDRAM (SDRAMC)
Табл. 24.1. Описание сигналов интерфейса SDRAMC
Имя вывода Описание вывода Тип вы- вода Активный уровень
SDCK Синхросигнал SDRAM Выход
SDCKE Разрешение синхросигнала SDRAM Выход Высокий
SDCS Выбор микросхемы контроллером SDRAM Выход Низкий
ВА[1:0] Сигнал выбора банка Выход
RAS Сигнал строк Выход Низкий
CAS Сигнал столбцов Выход Низкий
SDWE Разрешение записи в SDRAM Выход Низкий
NBS[3:0] Сигнал разрешения маски данных Выход Низкий
SDRAMC_A [12:0] Адресная шина Выход
D [31:0] Шина данных Вход/ выход
24.2. Примеры применения
На рис. 24.2 показан пример подключения внешних устройств SDRAM
к МК с помощью контроллера SDRAM с использованием 32-разрядной
шины данных. На рис. 24.3 показан аналогичный пример с использова-
D0-D31
RAS
CAS
SDCK
SDCKE
SDWE
NBSO
NBS1
NBS2
NBS3
Контроллер
SDRAM
SDRAMC_A[0-12]
BAG
BA1
SDRAMC_A[0-9], SDRAMC_A11
SDRAMC АГ0-9], SDRAMC_A11
A0-A9, A11
A10
BAO
BA1
A0-A9, A11
A10
BAO
BA1
SDRAMC AIOK
BAO “\
BA1
SDRAMC A10\
BAO “\
BA1
D24-D31
CLK
WE
RAS
CAS
DQM
A0-A9, A11
A10
BAO
BA1
A0-A9, A11
A10
BAO
BA1
SDRAMC АГ0-91. SDRAMC A11
SDRAMC AIOK
BAO
RA1
SDRAMC АГ0-9], SDRAMC_A11
SDRAMC AlS\
BAO
BA1 "X
2Mx8
SDRAM
D0-D7
CS
CLK
CKE
WE
RAS
CAS
DQM
2M x 8
SDRAM
D0-D7
CS
CLK
CKE
WE
RAS
CAS
DQM
2M x 8
SDRAM
D0-D7
CS
CLK
CKE
WE
RAS
CAS
DQM
2M x 8
SDRAM
D0-D7
Рис. 24.2. Подключение внешних устройств SDRAM к МК с помощью контроллера SDRAM с использованием 32-раз-
рядной шины данных
Рис. 24.3. Подключение внешних устройств SDRAM к МК с помощью контроллера SDRAM с использованием 16-раз-
рядной шины данных
лиеМ 16-разрядной шины данных. Необходимо отметить, что эти приме-
ры иллюстрируют прямое подключение внешних устройств к контроллеру
jjpRAM без использования интерфейса внешней шины (EBI) или кон-
троллера GPIO.
Для получения дополнительной информации о программном интер-
фейсе SDRAMC, последовательности инициализации внешних устройств
SDRAM, протоколах записи и чтения, режимах энергопотребления
и пользовательском интерфейсе SDRAMC рекомендуется обратиться
к источнику [3].
ГЛАВА 25
ИНТЕРФЕЙС ETHERNET MAC
(MACB)
25.1. Основные особенности
Входящий в состав только МК подсемейства AT32UC3A модуль интерфей-
са Ethernet МАС (МАСВ) имеет следующие основные особенности.
• Совместим со стандартом IEEE 802.3.
• Поддерживает операции со скоростями обмена 10 и 100 Мбит/с.
• Поддерживает полно- и полудуплексные операции.
• Имеет регистры подсчета статистики.
• Поддерживает интерфейс физического уровня MII/RMII.
• Может генерировать прерывания при завершении передачи и приема.
• Поддерживает (в режиме ведущего) каналы DMA для приема и пе-
редачи.
• Имеет приемный и передающий буфера FIFO.
• Автоматически генерирует контрольные поля Pad и CRC в переда-
ваемых фреймах.
• Автоматически отбрасывает принятые с ошибками фреймы.
• Имеет логику проверки адреса, распознающей до четырех заданных
уникальных 48-разрядных адресов.
• Поддерживает режим Promiscuous, в котором все корректные при-
нятые фреймы копируются в память.
• Поддерживает управление физическими уровнями с помощью ин-
терфейса MDIO.
• Поддерживает внешний сигнал совпадения адреса принятых фреймов.
• Поддерживает полудуплексное управление потоком данных, допу-
скающее столкновения входящих фреймов.
• Поддерживает полнодуплексное управление потоком данных с рас-
познаванием входящих фреймов паузы и аппаратную генерацию
передаваемых фреймов паузы.
• Поддерживает некоторые операции стандарта 802.IQ VLAN.
• Имеет множества приемных и передающих буферов фреймов.
• Поддерживает «просыпание» в LAN.
• Поддерживает гигантские фреймы, содержащие до 10240 байтов.
Выводы МК, используемые интерфейсом МАСВ, могут быть мульти-
плексированы с линиями контроллера GPIO. Программа должна предва-
рительно сконфигурировать контроллер GPIO, прежде чем назначить для
выводов МАСВ их периферийные функции.
Синхросигнал МАСВ генерируется менеджером питания. Перед ис-
пользованием МАСВ в приложении программа должна гарантировать, что
синхросигнал МАСВ разрешен в менеджере питания. На модуль МАСВ
поступает задающая частота (МСК).
Модуль синхронизации в составе МАСВ требует, чтобы частота шинно-
го синхросигнала МАСВ (hclk), определяемая по формуле macb_tx/rx_clk,
была равна 25 МГц при скорости обмена 100 Мбит/с и 2,5 МГц при скоро-
сти обмена 10 Мбит/с в режиме МП, а также 50 МГц при скорости обмена
100 Мбит/с и 5 МГц при скорости обмена 10 Мбит/с в режиме RMII.
Чтобы предотвратить ошибки на шине, операции МАСВ должны быть
завершены перед переходом в «спящий» режим (sleep).
К интерфейсу МАСВ подключена линия прерываний, соединенная
с контроллером прерываний. Обработка прерываний от МАСВ требует
программирования контроллера прерывания перед конфигурированием
МАСВ.
Блок-схема ЕМАС устройств AT32UC3A приведена на рис. 25.1.
25.2. Функциональное описание
С помощью регистров управления МАСВ производится управление ин-
терфейсом MDIO, настройками DMA, началом передачи фрейма, а также
выбор режима работы (полно- или полудуплексного).
Приемный блок МАСВ проверяет корректность преамбулы, фрейм FSC,
совпадение и длительность принятых фреймов для блока проверки адреса
и интерфейса DMA.
Передающий блок получает данные от интерфейса DMA, добавляет
К ним преамбулу и, в случае необходимости, фрейм FSC и передает данные
согласно протоколу CSMA/CD (протокол коллективного доступа с опро.
сом несущей и обнаружением коллизий). Начало передачи задерживается
если активен сигнал CRS (опрос несущей).
Если сигнал COL (коллизия) в течение передачи становится активным
то передача повторяется. Следует заметить, что сигналы CRS и COL нё
играют никакой роли в полнодуплексном режиме.
Блок DMA соединяется с внешней памятью через свой интерфейс к вы-
сокоскоростной шине (HSB). Этот интерфейс содержит буферы FIFO пере-
дачи и приема для буферизации данных фрейма. Буфер FIFO загружается
при передаче и пустеет при приеме, когда используются операции шины
HSB. Принятые данные не пересылаются в память до того, как прове-
рочное устройство адреса не решит, что фрейм должен быть скопирован
в память. Принятые или передаваемые фреймы сохраняются в одном или
более буферах. Приемные буфера имеют установленный размер 128 байт.
Буфера передачи имеют размер в диапазоне от 0 до 2047 байт, а один фрейм
может занимать до 128 буферов.
25.2.1. Интерфейс памяти
Данные фрейма по мере его приема перемещаются из МАСВ в интерфейс
DMA. Все передачи производятся 32-разрядными словами, а в одном сеан-
се доступа могут быть переданы порции данных размером 2, 3 или 4 сло-
ва. Количество данных в одной порции при доступе не может превышать
шестнадцатибайтовую границу. Заданный по умолчанию размер данных —
порция из 4 слов. Порции размером меньше четырех слов могут использо-
ваться, чтобы переместить данные в начало или в конец буфера.
Контроллер DMA выполняет шесть типов операций на шине. В поряд-
ке убывания приоритета это следующие операции.
1. Запись менеджера приемного буфера.
2. Чтение менеджера приемного буфера.
3. Чтение передаваемых данных DMA.
4. Запись принимаемых данных DMA.
5. Чтение менеджера передающего буфера.
6. Запись менеджера передающего буфера.
25.2.1.1 . Буфер FIFO
Глубина буфера FIFO МАСВ составляет 124 байта. Как правило, данные
перемещаются в/из FIFO порциями размером в четыре слова. При приеме
запрос шины обрабатывается, когда буфер FIFO содержит четыре слова
и имеет свободное пространство еще для трех. При передаче запрос к шине
генерируется, когда в буфере FIFO имеется свободное пространство для че-
тырех слов, или когда имеется пространство для двух слов, но если следую-
щая передача должна производиться только одним или двумя словами.
Следует заметить, что задержка шины должна быть меньше, чем время,
которое требуется на прием или на загрузку в буфер FIFO и передачу трех
слов (12 байт) данных.
цри скорости обмена 100 Мбит/с требуется 960 нс, чтобы передать или
оинять 12 байтов данных. Кроме того, шесть циклов задающего генера-
ора необходимы для загрузки данных из шины в FIFO. Для частоты за-
аюшего генератора 60 МГц это время составит 100 нс, а задержка шины
равна 860 нс.
25.2.1.2 . Приемные буферы
Принятые фреймы, включая опционально задаваемые поля CRC/FCS, за-
писываются в приемные буферы, сохраняясь, таким образом, в памяти.
Каждый приемный буфер имеет размер 128 байт. Начальный адрес разме-
щения каждого приемного буфера хранится в памяти в списке описателей
(дескрипторов) приемных буферов, на который указывает регистр указате-
ля очереди приемных буферов. Этот адрес является адресом слова.
Для первого буфера размещение начала может быть смещено на интер-
вал до трех байт в зависимости от значения, записанного в биты 14 и 15
регистра сетевой конфигурации. Если размещение начала буфера смещено,
то доступный размер первого буфера фрейма уменьшается на соответству-
ющее количество байт.
Каждый элемент (точка входа) списка дескрипторов состоит из двух
слов, первое из которых является адресом приемного буфера, а второе —
словом состояния приема. Если размер принимаемого фрейма превыша-
ет размер буфера, то слово состояния используемого буфера записывается
с нулями в бите «начало фрейма» и в битах смещения. В нулевой бит поля
адреса записывается единица, чтобы показать, что данный буфер исполь-
зуется. Менеджер приемного буфера в этом случае читает размещение сле-
дующего приемного буфера и заполняет его принятым фреймом данных.
Финальное слово состояния буферного дескриптора содержит окончатель-
ное состояние фрейма. Подробности дескрипторного списка приемного бу-
фера иллюстрируются в табл. 25.1.
Чтобы принимать фреймы, буферные дескрипторы должны быть ини-
циализированы путем записи соответствующего адреса в биты от 31 до
2 в слове 0 каждой точки входа списка. В нулевой разряд должен быть
записан 0. Первый разряд (wrap-бит) указывает последнюю точку входа
в списке.
Размещение начала дескрипторного списка приемных буферов должно
быть записано в регистр указателя очереди приемных буферов перед уста-
новкой бита разрешения приема в сетевом регистре команд. Как только
приемный блок начинает запись данных принятого фрейма в приемный
буфер FIFO, менеджер приемного буфера читает первый указатель раз-
мещения буфера в регистре указателя очереди. Если в этом случае блок
Фильтра индицирует, что фрейм должен быть скопирован в память, то
Е>МА начинает операцию записи принимаемых данных в приемный буфер.
Если происходит ошибка, то буфер восстанавливается (возвращается для
Дальнейшего использования). Если текущий буферный указатель содержит
Установленный wrap-бит или 1024-й дескриптор, то следующее очередное
Размещение буфера читается из начала приемного дескрипторного списка.
Табл. 25.1. Дескриптор точки входа приемного буфера
Разряд Функция_____________________________________________________
Слово О
31:2 Адрес начала буфера
1 Wrap-бит — метка последнего описателя в дескрипторном списке при-
емных буферов
О Ownership-бит — должен быть нулевым для МАСВ, чтобы МАСВ мог
записать данные в приемный буфер. МАСВ устанавливает этот бит
(задает статус буфера — used), как только фрейм успешно записывает-
ся в память. Пользовательская программа должна сбросить этот бит
для задания возможности нового использования буфера
Слово 1
31 Обнаружен глобальный широковещательный адрес
30 Совпадение с групповым адресом
29 Совпадение с индивидуальным адресом
28 Совпадение с внешним адресом
27 Зарезервирован для будущего использования
26 Совпадение с регистром уникального адреса 1
25 Совпадение с регистром уникального адреса 2
24 Совпадение с регистром уникального адреса 3
23 Совпадение с регистром уникального адреса 4
22 Совпадение с идентификатором (ID) типа
21 Детектирован тэг VLAN (т. е. идентификатор типа 0x8100)
20 Детектирован приоритетный тэг (т. е. идентификатор типа 0x8100
и нулевой идентификатор VLAN)
19:17 Приоритетный VLAN. (Это поле корректно только в случае, если
установлен бит 21.)
16 Бит индикатора формата конкатенации (CFI). (Это поле корректно
только в случае, если установлен бит 21.)
15 Конец фрейма — когда буфер содержит конец фрейма. Если бит конца
фрейма не установлен, то единственное иное корректное состояние
задается битами 12, 13 и 14
14 Начало фрейма — когда буфер содержит начало фрейма. Если оба
бита 15 и 14 установлены, то буфер содержит целый фрейм
13:12 Смещение приемного буфера — указывает количество байт, на кото-
рое данные в первом буфере смещены от слова адреса. Модифици-
руется текущими значениями из сетевого регистра конфигурации.
Если режим гигантского фрейма разрешен битом 3 сетевого регистра
конфигурации, тогда биты 13:12 дескриптора точки входа приемного
буфера используются для индикации значений битов 13:12 длитель-
ности фрейма
11:0 Длительность фрейма, включая поле FCS (если оно выбрано). Если
выбран режим гигантского фрейма, то также используются биты 13:12
дротивном случае, следующее очередное размещение приемного буфера
дтается из следующего слова в памяти.
4 Имеющийся ll-разрядный счетчик максимально подсчитывает до 2048
дов размещения точек входа дескрипторного списка приемных буферов.
Содержимое счетчика суммируется со значением, первоначально записан-
НЫМ в РегистР указателя очереди приемных буферов, чтобы в результате
обеспечивать указание на список. Чтение регистра указателя очереди при-
емных буферов возвращает значение указателя, которое является точкой
входа, к которой производится текущее обращение. Счетчик сбрасывается
после достижения состояния, соответствующего дескриптору с установ-
ленным wrap-битом, или переполняется и сбрасывается после подсчета
1024 дескрипторов. Значение, записанное в регистр указателя приемных
буферов, может быть любым выровненным по границам слова адресом при
условии, что имеется не менее, чем 2048 доступных слов между значением
указателя и вершиной памяти.
В спецификации системной шины указано, что порции данных при
размещении в памяти не должны выходить за границы 1к. Чтобы при
записи менеджером приемного буфера порции из двух слов можно было
гарантировать выполнение указанного требования, лучше всего в реги-
стре указателя записывать в три младших значащих разряда нули. Когда
приемный буфер используется, менеджер приемного буфера устанавливает
нулевой разряд слова 0 дескриптора, что индицирует статус данного бу-
фера (статус used). Если детектируется ошибка, то приемный буфер, ис-
пользуемый в текущий момент, восстанавливается в прежнее состояние.
Предыдущие буферы при этом не восстанавливаются. Пользовательская
программа должна опросить биты used в дескрипторах буфера, чтобы
узнать, сколько фреймов было принято. Она также должна контролиро-
вать биты начала и конца фрейма, не полагаясь на значение, возвращае-
мое регистром указателя очереди приемных буферов. Фреймы с ошибками
поля CRC, чрезмерные длинные фреймы или фреймы некорректной дли-
ны подсчитываются в регистрах статистики, а их фрагменты могут быть
сохранены в приемных буферах. Программное обеспечение может обна-
ружить это путем поиска битов начала фрейма после битов конца фрейма
в дескрипторах буфера.
При нормальной работе системы Ethernet не должно быть чрезмер-
но длинных фреймов или фреймов, бблыпих 128 байт, а также фреймов
с ошибками CRC/FCS. Коллизии фреймов, меньших 128 байт, являются
весьма редким явлением.
Если нулевой бит слова 0 находится в высоком состоянии, когда менед-
жер приемного буфера читает размещение приемного буфера, это значит,
что буфер уже использовался и не может использоваться снова, пока про-
грамма не сбросит нулевой бит. В этом случае блок DMA устанавливает
бит недоступности буфера в регистре состояния приема и генерирует за-
прос прерывания.
Если нулевой бит находится в высоком состоянии, когда менеджер при-
емного буфера читает размещение приемного буфера, то фрейм отвергает-
ся, а регистр статистики ошибок ресурса приема инкрементируется.
Состояние переполнения приема происходит, когда шина не предостав,
ляется вовремя или в случае, если сигнал HRESP не находится в «благо-
получном» состоянии ОК (шинная ошибка). В состоянии переполнения
приема генерируется запрос прерывания переполнения приема, а прием-
ный буфер, в который в текущий момент производится запись, восстанав-
ливается.
Если бит 17 сетевого регистра конфигурации установлен, то поле Fc$
принимаемых фреймов не должно копироваться в память. В этом случае
длительность фрейма, указанная в поле состояния приема, должна быть
уменьшена на четыре байта.
25.2.1.3. Передающий буфер
Фреймы, подлежащие передаче, сохраняются в одном или более передаю-
щих буферах. Передающий буфер может иметь размер в диапазоне между О
и 2047 байт, так что возможна передача фреймов, больших максимальной
длительности, указанной в стандарте IEEE 802.3. Нулевые размеры буфера
допускаются. Максимальное количество буферов, разрешенных для каждо-
го передаваемого фрейма, равно 128.
Адреса размещения начала каждого передающего буфера в памяти со-
храняются в дескрипторном списке передающих буферов, на который ука-
зывает регистр указателя очереди передающих буферов. Каждая точка вхо-
да списка состоит из двух слов, первое из которых содержит адрес байта
начала передающего буфера, а второе — контекст состояния и управления
передачи. Фреймы могут передаваться с или без автоматической генера-
ции контрольной суммы (CRC). Если CRC автоматически генерируется,
то автоматически выбирается минимальная длительность фреймов, равная
64 байта. Подробности дескрипторного списка передающего буфера иллю-
стрируются табл. 25.2.
Чтобы произвести передачу фреймов, буферные дескрипторы должны
быть инициализированы путем записи соответствующих адресов началь-
ного байта в биты от 31 до 0 в слове 0 каждой точки входа списка. Слово 1
дескриптора буфера инициализируется информацией управления, которая
задает размер буфера, следует ли производить передачу с CRC и является
ли буфер последним буфером в фрейме.
После окончания передачи биты управления записываются в слово 1
первого буфера вместе с битом used и другой информацией состояния. Бит
31 (used) должен быть нулевым, когда производится чтение слова управ-
ления, если должна быть произведена передача. В этот бит записывается
1, когда фрейм передан. Биты 27, 28 и 29 индицируют состояния различ-
ных ошибок. Бит 30 (wrap-бит) может быть установлен для любого буфера
в пределах фрейма. Если этот бит не установлен по истечении 1024 де-
скрипторов, то указатель очереди передачи сбрасывается в начальное со-
стояние подобно указателю очереди приема.
Запись в регистр указателя очереди передающих буферов не должна
производиться, когда осуществляется передача. Если новое значение за-
писывается в регистр указателя очереди передающих буферов, то указатель
Табл. 25.2. Дескриптор точки входа передающего буфера
pgnju функция_____________________________________________________
Слово о
ЗРО Адрес байта начала буфера
Слово 1
Признак использования (used). Этот бит должен быть нулевым для
МАСВ, чтобы можно было читать данные из передающего буфера.
МАСВ устанавливает этот бит для первого буфера фрейма, как только
этот фрейм был успешно передан. Пользовательская программа долж-
на сбросить этот бит прежде, чем буфер будет использоваться снова.
Замечание. Этот бит установлен только для первого буфера в фрейме
в отличие от приема, где все буфера имеют бит used, используемый
однократно
30 Wrap-бит — метка последнего описателя в дескрипторном списке
передающих буферов
29 Предел повторений превышен, детектирована ошибка передачи
28 Передача недогружена. Установка этого бита происходит также, когда
сигнал HRESP не ОК (имеется шинная ошибка), или когда передан-
ные данные не могли быть выбраны вовремя, или буфера истощаются
в середине фрейма
27 Буфера истощаются в середине фрейма
26:17 Зарезервированы
16 No CRC (нет CRC). Когда этот бит установлен, код CRC не добавляет-
ся в конец текущего фрейма. Этот бит должен быть установлен только
для последнего буфера фрейма
15 Последний буфер. Когда этот бит установлен, он указывает, что был
достигнут последний буфер в текущем фрейме
14:11 Зарезервированы
10:0 Размер буфера
очереди автоматически сбросится к указанию на начало новой очереди.
Если передача запрещена путем записи в бит 3 регистра сетевого управле-
ния МАСВ, то регистр указателя очереди передающих буферов автомати-
чески сбрасывается к указанию на начало очереди передачи.
Как только очередь передачи инициализирована, передача активирует-
ся путем записи в бит 9 (старт передачи) сетевого регистра команд МАСВ.
Передача приостанавливается, когда читается буферный дескриптор с уста-
новленным битом used, или если происходит ошибка передачи, или при за-
писи в бит останова передачи регистра сетевого управления МАСВ. Переда-
ча также приостанавливается, если принимается фрейм паузы при условии,
что установлен бит разрешения паузы в регистре сетевой конфигурации.
Допускается перезапись бита старта, когда производится передача.
Управление передачей осуществляется с помощью переменной tx_go
(TGO), которая может быть прочитана в регистре состоянии передачи как
бит 3. Переменная tx_go сброшена в следующих случаях:
• передача запрещена;
• читается буферный дескриптор с установленным wrap-битом;
• новое значение записано в регистр указателя очереди передающие
буферов;
• произведена запись в бит 10 (txhalt, останов передачи) сетевого ре-
гистра команд;
• имеется ошибка передачи, например, слишком много повторений
или недогрузка передачи.
Чтобы установить tx go, следует произвести запись в бит 9 (tx start
старт передачи) сетевого регистра команд. Останов передачи не наступит
до окончания обработки любой текущей передачи. Если в течение пере-
дачи мультибуферного фрейма происходит коллизия, автоматически пере-
запускается передача из первого буфера фрейма. Если бит used читается во
время передачи мультибуферного фрейма, то это интерпретируется и об-
рабатывается логикой как ошибка передачи. Передача при этом останавли-
вается, генерируется сигнал ошибки tx_er, и поле FCS указывает на сбой.
Если передача останавливается из-за ошибки передачи, то указатель
очереди передачи автоматически сбрасывается к указанию на начало оче-
реди передачи. Исходя из этого, пользовательская программа должна пере-
инициализировать очередь передачи после ошибки передачи.
Если передача останавливается из-за бита used, прочитанного в начале
фрейма, указатель очереди передачи не сбрасывается и старт последующей
передачи начинается с того же самого дескриптора.
25.2.2. Передающий блок
Передающий блок МАСВ передает фреймы в соответствии с протоко-
лом Ethernet IEEE 802.3 CSMA/CD. Старт передачи фрейма производится
с добавленной преамбулой и разделителем начала фрейма. Данные в него
поступают из буфера FIFO пословно. Младший полубайт данных пере-
дается первым. В случае необходимости к данным может быть прибавлено
дополнение, чтобы увеличить размер фрейма до 60 байт. Контроль CRC
рассчитывается как 32-разрядный полиномиальный. Этот код инвертиру-
ется и добавляется в конец фрейма, увеличивая размер фрейма минимум
до 64 байт. Если бит No CRC не установлен в слове 1 последнего буфер-
ного дескриптора передаваемого фрейма, то код CRC в конец фрейма не
добавляется.
В полнодуплексном режиме фреймы передаются немедленно. «Проти-
вонаправленные» фреймы передаются минимально за 96 интервалов пере-
дачи бита, чтобы гарантировать межфреймовую запрещенную зону.
В полудуплексном режиме, передатчик предварительно производит
проверку активности несущей. Если она активна, то он ждет ее деактива-
ции, а затем начинает передачу после межфреймовой запрещенной зоны
размером 96 интервалов передачи бита. Если сигнал коллизии активиру-
ется в течение передачи, передатчик передает jam-последовательность из
32 битов, взятых из регистра данных, а затем повторяет передачу после
истечения времени выдержки (back-off time).
Время выдержки (back-off time) основано на логической функции XOR
десяти младших значащих битов данных, поступающих из буфера FIFO
Передачи, и выхода датчика псевдослучайного 10-разрядного числа. Коли-
чество используемых битов зависит от количества выявленных коллизий.
После первой коллизии используется 1 бит, после второй — 2 и т. д. до 10.
Для более, чем десяти коллизий используются все 10 битов. Если 16 по-
пыток передачи вызвали коллизии, то индицируется ошибка и никакие
дальнейшие попытки передачи не делаются.
Если передается содержимое недозагруженного DMA, то сбойный CRC
автоматически добавляется в конец фрейма с использованием того же са-
мого механизма, как и в случае jam-последовательности. При этом перехо-
дит в активный уровень сигнал tx_er. Для корректно сконфигурированной
системы указанный случай никогда не должен иметь место.
Если в полудуплексном режиме в сетевом регистре команд установ-
лен бит ВР (обратное давление), то передающий блок передает 64 бита
данных, которые могут состоять из 16 полубайтов «1011» или передает на
скорости обмена 64 в течение одной секунды всякий раз, когда «видит»
входящий фрейм, чтобы таким образом создать коллизию. Этот меха-
низм обеспечивает способ управления потоком данных в полудуплекс-
ном режиме.
25.2.3. Поддержка фрейма паузы
Начало фрейма паузы в соответствии со стандартом 802.3 происходит сле-
дующим образом.
Сетевой регистр конфигурации МАСВ содержит бит разрешения паузы
приема (бит 13). Если принимается корректный фрейм паузы, то регистр
времени паузы модифицируется значением времени фрейма паузы неза-
висимо от его текущего содержимого и независимо от состояния бита 13
регистра конфигурации. Прерывание от фрейма паузы (бит 12) генериру-
ется, когда фрейм паузы принят в случае, если оно разрешено в регистре
маски прерываний. Если сетевом регистре конфигурации установлен бит
13 и значение регистра времени паузы является ненулевым, то никакой
новый фрейм не будет передан, пока регистр времени паузы не будет де-
крементирован до нуля.
Загрузка нового времени паузы и, следовательно, приостановка пере-
дачи происходит только тогда, когда МАСВ сконфигурирован в дуплекс-
ном режиме. Если МАСВ функционирует в полудуплексном режиме, пауза
передачи отсутствует, но прерывание от принятого фрейма паузы все же
генерируется.
Корректный фрейм паузы определяется, как наличие адреса назначе-
ния, который соответствует любому адресу, сохраненному в регистре уни-
кального адреса 1 или равен 0х0180С2000001, а также имеет идентифика-
тор (ID) типа фрейма управления МАС, равный 0x8808, и код операции
паузы 0x0001 (см. табл. 25.3).
Фреймы паузы, которые имеют FCS или другие ошибки, обрабаты-
ваются логикой как недопустимые и отвергаются. Корректные фрей-
Табл. 25.3. Начало фрейма паузы в соответствии со стандартом 802.3
Адрес Адрес Тип (фрейм Код операции Время"
назначения источника управления МАС) паузы паузы
0х0180С2000001 6 байт 0x8808 0x0001 ГбайтГ"
мы паузы вызывают инкрементирование регистра статистики приятых
фреймов паузы.
Регистр времени паузы декрементируется через каждые 512 интервалов
передачи бита (т. е. через каждые 128 периодов частоты rx clk в режиме
полубайтов), как только передача останавливается. В режиме тестирова-
ния декрементирование регистра осуществляется в каждом цикле rx_clk
как только передача остановилась, если в сетевом регистре конфигурации
установлен бит 12 (повтор тестирования). Если разрешающий паузу бит 13
не установлен в сетевом регистре конфигурации, тогда декрементирование
происходит независимо от того, остановилась ли передача или нет.
Прерывание от фрейма паузы генерируется всякий раз, когда регистр
времени паузы декрементируется до нуля, если оно разрешено в регистре
маски прерываний.
Автоматическая передача фреймов паузы будет произведена, если
в течение передачи паузы будут установлены биты сетевого регистра
управления tx_pause (бит 11) и tx_pause_zero (бит 12) или если пере-
ключится входной сигнал tx pause. Однако в этом случае фрейм паузы
будет передан только в том случае, если в регистре сетевой конфигура-
ции выбран полнодуплексный режим, а в регистре сетевого управления
разрешена передача.
Передача фрейма паузы производится немедленно, если передача неак-
тивна или если передача активна между текущим фреймом и следующим
фреймом, который должен быть передан. Передаваемый фрейм паузы со-
стоит из следующих элементов:
• адрес назначения 01-80-С2-00-00-01,
• адрес источника, взятый из регистра уникального адреса 1,
• идентификатор (ID) типа 88-08 (фрейм управления МАС),
• код операции паузы 00-01,
• квант паузы,
• заполнение, состоящее из 00, чтобы достроить фрейм до минималь-
ной длины фрейма,
• правильное поле FCS.
Квант паузы, используемый в сгенерированном фрейме, зависит от ис-
точника запуска (триггера) фрейма следующим образом.
1. Если в бит 11 записана логическая 1, квант паузы берется из ре-
гистра передачи кванта паузы. Этот регистр по умолчанию после
сброса содержит максимальное значение, равное OxFFFF.
2. Если в бит 12 записана логическая 1, квант паузы является нулевым.
3. Если переключается вход tx_pause, а вход tx_pause_zero до этого
переключения удерживается в низком уровне, то квант паузы берет-
ся из регистра передачи кванта паузы.
4. Если переключается вход tx_pause, а вход tx_pause_zero до этого
переключения удерживается в высоком уровне, то квант паузы яв-
ляется нулевым.
После передачи никакие прерывания не генерируются, а единствен-
ным регистром статистики, который при этом инкрементируется, является
регистр статистики переданных фреймов паузы.
25.2.4 . Приемный блок
Приемный блок проверяет корректность преамбулы, поля FCS, совме-
щения и размера, предоставляет принятые фреймы блоку DMA и предо-
ставляет адреса назначения фреймов для использования блоком проверки
адреса. Если в течение приема фрейма установлено, что фрейм слишком
длинный, или переходит в активный уровень сигнал гх_ег, то блоку DMA
передается сигнал индикации сбойного фрейма. Блок DMA в этом случае
прекращает перемещать данные в память. В конце приема фрейма прием-
ный блок указывает блоку DMA, является ли фрейм хорошим или сбой-
ным. Блок DMA восстанавливает текущий приемный буфер, если фрейм
был сбойным.
Сигналы приемного блока инкрементируют статистику (регистры ста-
тистики) ошибок установки, статистику ошибок CRC (FCS), статистику
коротких фреймов, статистику длинных фреймов, статистику ошибок бес-
смысленных данных, статистику принятых ошибочных символов и стати-
стику несоответствия длительности битовых полей.
Бит разрешения гигантских фреймов в сетевом регистре конфигурации
позволяет МАСВ принимать гигантские фреймы размером до 10240 байт.
Эта операция не описывается стандартом IEEE 802.3 и по умолчанию за-
прещена. Когда гигантские фреймы разрешены, то принятые фреймы,
имеющие размер больше, чем 10240 байт, отвергаются.
25.2.5 . Блок проверки адреса
Блок проверки адреса (фильтр адресов) указывает блоку DMA, какие при-
нятые фреймы следует копировать в память. Будет ли скопирован фрейм,
зависит от того, разрешены ли в регистре сетевой конфигурации состояние
совпадения для внешнего вывода, содержится ли адрес назначения фрейма
в хэш-регистрах и регистрах адреса назначения фрейма. При этом МАСВ
не проверяет адрес источника фрейма. При условии, что бит 18 сетево-
го регистра конфигурации не установлен, фрейм не копируется в память,
если МАСВ производит передачу в полудуплексном режиме и в это время
Принимает адрес назначения. Если бит 18 из сетевого регистра конфигура-
ции установлен, фреймы могут быть приняты (скопированы в память) при
передаче в полудуплексном режиме.
Следует заметить, что в фреймах Ethernet производится побайтовая
передача, причем первым передается МЗР. Первые шесть байт (48 бит)
фрейма Ethernet составляют адрес назначения. Первый бит адреса назна-
чения (младший бит первого байта фрейма) является битом индикации
группового/индивидуального адреса: он равен единице для группового
адреса и нулю для индивидуального. Адрес, состоящий из одних еди.
ниц, — это широковещательный адрес, что является специальным случа'
ем группового адреса.
МАСВ поддерживает распознавание четырех уникальных (заданных)
адресов. Каждый заданный адрес требует наличия двух регистров: реги-
стра основания заданного адреса и регистра вершины заданного адреса
Регистр основания заданного адреса содержит первые четыре байта адреса
назначения, а регистр вершины заданного адреса — последние два байта.
Хранимые в этих регистрах адреса могут быть уникальными, групповыми
локальными или универсальными.
Адрес назначения принятых фреймов сравнивается с содержимым ре-
гистров уникальных адресов, как только это содержимое активируется.
Содержимое этих регистров дезактивируется при сбросе или при записи
в регистр основания заданного адреса. Содержимое этих регистров акти-
вируется при записи в регистр вершины заданного адреса. Если результи-
рующий адрес фрейма совпадает с активным адресом, то фрейм копиру-
ется в память.
Следующий пример иллюстрирует использование регистров совпаде-
ния адреса для адреса МАС со значением 21:43:65:87:А9:СВ.
Преамбула 55
SFD D5
DA (Октет 0-МЗР) 21
DA (Октет 1) 43
DA (Октет 2) 65
DA (Октет 3) 87
DA (Октет 4) А9
DA (Октет 5—СЗР) СВ
SA (МЗР) 00
SA00
SA00
SA00
SA00
SA (СЗР) 43
SA (МЗР) 21
Вышеприведенная последовательность иллюстрирует начало фрей-
ма Ethernet. Порядок следования байтов при передаче соответствует
направлению сверху вниз. Для достижения совпадения с указанным
заданным адресом в регистрах совпадения должны быть записаны сле-
дующие значения:
• базовый адрес + 0x98: 0x87654321 (основание),
• базовый адрес + 0х9С: 0х0000СВА9 (вершина).
Для достижения совпадения с регистром типа идентификатора (ID)
в него должно быть записано следующее значение:
• базовый адрес + 0хВ8: 0x00004321.
25.2.6 . Широковещательный адрес
тПиРоКОВещательнь1Й адРес’ имеющий значение OxFFFFFFFFFFFF, не
спознается, если установлен бит нераспознавания широковещательного
адреса в сетевом регистре конфигурации.
25.2.7 . Хеш-адресация
регистр хеш-адреса длиной 64 бита занимает два адресуемых слова в про-
странстве памяти МК. МЗР хранятся в основании хэш-регистра, а СЗР —
в его вершине.
Индивидуальная и групповая хэш-адресация разрешается соответству-
ющими битами в сетевом регистре конфигурации МАСВ. При этом про-
изводится режекция хэш-совпадения фрейма. Адрес назначения в 64-раз-
рядном хэш-регистре уменьшается до 6-разрядного индекса (hash_index)
с помощью использования некоторой хеш-функции. Эта хеш-функция ре-
ализует логическую функцию «Исключающее ИЛИ» для каждого шестого
бита адреса назначения, как показано ниже:
hashjndex [5] = da [5]л da [11]л da [17]л da [23]л da [29]л da [35]л da [41]л da [47]
hash Jndex [4] = da [4]л da [10]л da [16]л da [22]л da [28]л da [34]л da [40]л da [46]
hashjndex [3] = da [3]л da [09]л da [15]л da [21]л da [27]л da [33]л da [39]л da [45]
hashjndex [2] = da [2]л da [08]л da [14]л da [20]л da [26]л da [32]л da [38]л da [44]
hashjndex [1] = da [1]л da [07]л da [13]л da [19]л da [25]л da [31]л da [37]л da [43]
hashjndex [0] = da [0]л da [06]л da [12]л da [18]л da [24]л da [30]л da [36]л da [42]
da[0] представляет собой МЗР первого принятого байта, т. е. индикатор
группового/индивидуального адреса, a da[47] представляет собой СЗР по-
следнего принятого байта.
Таким образом, хэш-индекс может указывать на состояние одного бита
в хэш-регистре. По состоянию этого бита можно сделать вывод, имеет ли
фрейм групповую или индивидуальную адресацию.
О совпадении с групповым адресом сигнализирует установленное со-
стояние бита разрешения группового адреса. При этом da[0] равен 1, что
указывает на установленное состояние бита разрешения группового адреса
в хэш-регистре.
О совпадении с индивидуальным адресом сигнализирует установлен-
ное состояние бита разрешения индивидуального адреса. При этом da[0]
Равен 0, что указывает на установленное состояние бита разрешения инди-
видуального адреса в хэш-регистре.
Чтобы принимать все фреймы с групповой адресацией, в хэш-регистре
должен быть установлены все биты, а в сетевом регистре конфигурации
Должен быть установлен бит разрешения групповой адресации.
25.2.8 . Совпадение с внешним адресом
Действие сигнала внешнего адреса (earn) разрешается битом 9 сетевого ре-
гистра конфигурации. Когда оно разрешено, фильтр адресов пересылает
фрейм в память, а сигнал состояния совпадения с внешним адресом бд0_
кирует DMA, если внешний сигнал соответствия адреса находится в ак-
тивном уровне (от источника, внешнего по отношению к МАСВ).
Чтобы DMA мог скопировать фрейм в память, внешний сигнал адреСа
должен перейти в активный уровень до того, как четыре слова будут за_
гружены в приемный буфер FIFO.
25.2.9 . Режим копирования всех фреймов (Promiscuous)
Если в сетевом регистре конфигурации МАСВ установлен бит разрешения
копирования всех фреймов, то все фреймы копируются в память без гене-
рации ошибок. Например, фреймы, которые являются слишком длинны-
ми, а также короткие фреймы, или фреймы, имеющие ошибки FCS, или
с перешедшим в активный уровень сигналом гхег в ходе приема, а также
все другие. При этом фреймы с ошибкой FCS копируются в память, если
установлен бит 19 в сетевом регистре конфигурации.
25.2.10 . Проверка типа идентификатора
Содержимое регистра проверки типа идентификатора (ID) type id срав-
нивается с идентификатором (ID) размера/типа принятых фреймов (т. е.
байтами 13 и 14). Бит 22 в дескрипторе состояния приемного буфера уста-
навливается, если есть совпадение. По умолчанию после сброса состояние
этого регистра нулевое и вряд ли совпадет с идентификатором размера/
типа любого корректного Ethernet-фрейма.
Замечание, совпадение типа идентификатора не оказывает влияния на
то, будет ли фрейм скопирован в память.
25.2.11 . Поддержка VLAN
Тэг (метка) VLAN Ethernet 802.1Q показан в табл. 25.4.
Тэг VLAN вставляется в 13-й байт фрейма путем суммирования допол-
нительных четырех байтов с фреймом. Если VID (идентификатор VLAN)
является нулевым (0x000), то это указывает на отмеченный приорите-
том фрейм. МАС может поддерживать размер фрейма до 1536 байт, что
на 18 байт больше, чем оригинальный размер фрейма Ethernet, равный
1518 байт. Это достигается путем установки бита 8 в сетевом регистре кон-
фигурации МАСВ.
Информацию об отмеченных VLAN фреймах дают следующие биты
в дескрипторном слове приемного буфера.
Табл. 25.4. Тэг VLAN 802.1Q
TPID (идентификатор протокола тэга) TCI (информация управления тэга)
16 бит 16 бит
0x8100
Первые 3 бита — биты приоритета,
затем бит CFI, затем 12 битов VID
. Бит 21 установлен, если принятый фрейм отмечен VLAN (т. е. имеет
тип идентификатора (ID) 0x8100).
. Бит 20 установлен, если принятый фрейм, отмечен приоритетом
(т. е. имеет тип идентификатора 0x8100 и пустой указатель VID).
Если бит 20 установлен, то бит 21 установлен также.
. Биты 19, 18 и 17 задают приоритет, если бит 21 установлен.
• Бит 16 задает CFI, если бит 21 установлен.
25.2.12 . Обслуживание PHY
Протокол физического уровня Physical layer protocol (PHY) в общем случае
определяет часть физического уровня интерфейса обмена данными, не за-
висящую от среды передачи. В данном случае под PHY понимается устрой-
ство — адаптер логических сигналов интерфейса МАСВ МК к физическим
цепям интерфейса Ethernet.
Регистр обслуживания PHY по имени MAN обеспечивает МАСВ воз-
можность связаться с PHY посредством интерфейса MDIO. Эта возмож-
ность используется в ходе установления связи, чтобы гарантировать, что
МАСВ и PHY сконфигурированы с одинаковым быстродействием и ду-
плексной конфигурацией.
Регистр обслуживания PHY реализован как сдвиговый регистр. За-
пись в этот регистр начинает операцию сдвига, об окончании которой
сообщает установка бита 2 в сетевом регистре конфигурации. (Прибли-
зительно через 2000 циклов частоты МСК в сетевом регистре конфигу-
рации бит 10 сбрасывается, а бит 11 устанавливается). Установка бита
2 вызывает генерацию прерывания. В это время из регистра выводится
СЗР через вывод MDIO, а МЗР модифицируется на выводе MDIO по
каждому циклу MDC. Это вызывает передачу фрейма обслуживания
PHY через MDIO.
Чтение в ходе операции сдвига возвращает текущее содержимое сдвиго-
вого регистра. В конце операции обслуживания биты регистра сдвигаются
назад в их первоначальное состояние.
Интерфейс MDIO может читать предложение IEEE 802.3 с 45 PHY,
а также с 22 PHY. Для чтения предложений с 45 PHY в биты [31:28] должно
быть записано значение 0x0011. Для получения дополнительной информа-
ции см. ниже описание сетевого регистра конфигурации.
25.2.13 . Независимый от среды интерфейс
Ethernet МАС способен осуществлять обмен с внешними устройствами
с помощью интерфейсов RMII и МП. Бит RMII в регистре USRIO управ-
ляет выбором интерфейса. Когда этот бит установлен, выбран интерфейс
RMII, в противном случае, — интерфейс МП.
Интерфейсы МП и RMII поддерживают скорости передачи 10 Мбит/с
и 100 Мбит/с, как описано в стандарте IEEE 802.3u. Сигналы, используе-
мые интерфейсами МП и RMII, описаны в табл. 25.5.
Табл. 25.5. Описание выводов RMII и МИ
Имя вывода Mil RMII
ETXCK_EREFCK ECRS ECOL ETXCK: синхросигнал передачи ECRS: наличие несущей ECOL: обнаружение коллизий EREFCK: опорный синхросигнал
ERXDV ERXDV: корректные данные ECRSDV: наличие несущей/корректные данные
ERX0-ERX3 ERX0-ERX3: 4 бита принимаемых данных ERX0-ERX1: 2 бита принимаемых данных
ERXER ERXCK ERXER: ошибка приема ERXCK: синхросигнал приема ERXER: ошибка приема
ETXEN ETXEN: разрешение передачи ETXEN: разрешение передачи
ETX0-ETX3 ETXER ETX0-ETX3: 4 бита передаваемых данных ETXER: ошибка передачи ЕТХ0-ЕТХ1: 2 бита передаваемых данных
Смысл использования RMII по сравнению с МП состоит в том, что-
бы обеспечить меньшее количество выводов. Например, RMII использует
2 бита передаваемых данных (ЕТХО и ЕТХ1) и 2 бита принимаемых данных
(ERX0 и ERX1). Для скорости передачи 100 Мбит/с RMII использует опор-
ный синхросигнал (ETXCK_EREFCK) с частотой 50 МГц.
Для операций RMII и МП используются одни и те же внутренние
сигналы. Передаваемые и принимаемые биты конвертируются в 4- или
2-разрядные посылки параллельного формата, которые синхронизиру-
ются удвоенной по сравнению со скоростью передачи частотой. Сигна-
лы наличия несущей и корректных данных в RMII объединены в сиг-
нал ECRSDV. Этот сигнал содержит информацию о наличии несущей,
состоянии буфера FIFO и корректности данных. Флаги ошибки пере-
дачи (ETXER) и обнаружения коллизий (ECOL) в режиме RMII не ис-
пользуется.
25.3. Программирование интерфейса МАСВ
25.3.1. Инициализация
Инициализация конфигурации МАСВ (например, частотных коэффи-
циентов) должна производиться, когда приемный и передающий блоки
МАСВ отключены. Более подробная информация об инициализации
приведена ниже в описании сетевого регистра управления и сетевого
регистра конфигурации.
25.3.1.1. Список приемных буферов
Принимаемые данные записываются в некоторые области данных (буфе-
оы) в системной оперативной памяти. Эти буферы перечисляются в другой
структуре данных, которая также постоянно находится в оперативной па-
мяти. Эта структура данных (очередь приемных буферов) является после-
довательностью дескрипторных входов, как было описано выше. Список
приемных буферов схематично изображен на рис. 25.2.
Для создания списка приемных буферов необходимо произвести сле-
дующие действия.
1. Распределить количество (п) буферов по 128 байт в системной опе-
ративной памяти.
2. Распределить п областей размером по 2 слова для дескрипторных
входов приемных буферов в системной оперативной памяти и соз-
дать п точек входа в этом списке. Отметить все входы в этом списке,
как принадлежащие МАСВ, т. е. биты 0 в словах 0 указанных об-
ластей должны быть сброшены.
3. Если определено меньше, чем 1024 буфера, то последний дескрип-
тор должен быть помечен wrap-битом (бит 1 в слове 0 должен быть
установлен).
4. Записать адрес дескрипторного входа приемного буфера в регистр
указатель очереди приемных буферов МАСВ.
5. Разрешить работу приемного блока путем записи в регистры рас-
познавания адреса, а затем в сетевой регистр команд МАСВ.
25.3.1.2. Список передающих буферов
Передаваемые данные читаются из некоторых областей данных (буферов)
в системной оперативной памяти. Эти буферы перечисляются в другой
структуре данных, которая также постоянно находится в оперативной па-
мяти. Эта структура данных (очередь передающих буферов) является по-
следовательностью дескрипторных входов, как было описано выше.
(в памяти)
Список дескрипторов
приемных буферов
(в памяти)
Рис. 25.2. Список приемных буферов
Для создания списка передающих буферов необходимо произвести сле-
дующие действия.
1. Распределить количество (п) буферов размером от 1 до 2047 байт
данных, подлежащих передаче, в системной оперативной памяти.
В одном фрейме можно передавать до 128 буферов.
2. Распределить п областей размером по 2 слова для дескрипторных
входов передающих буферов в системной оперативной памяти и соз-
дать п точек входа в этом списке. Отметить все входы в этом списке
как принадлежащие МАСВ, то есть биты 31 в словах 1 указанных
областей должны быть сброшены.
3. Если определено меньше, чем 1024 буфера, то последний дескрип-
тор должен быть помечен wrap-битом (бит 30 в слове 1 должен быть
установлен).
4. Записать, адрес дескрипторного входа передающего буфера в ре-
гистр указатель очереди передающих буферов МАСВ.
5. Разрешить работу передающего блока путем записи в сетевой ре-
гистр команд МАСВ.
25.3.1.3. Совпадение адреса
В пару хеш-регистров адресов МАСВ и в четыре пары регистров заданных
уникальных адресов должны быть записаны некоторые требуемые значе-
ния. Каждая пара регистров состоит из регистра основания и регистра вер-
шины, причем запись в регистр основания всегда должна производиться
первой. Функция совпадения адреса отключается для регистровой пары
заданного адреса после записи в регистр основания и вновь включается по-
сле записи в регистр вершины. Запись в каждую регистровую пару может
быть произведена в любое время независимо от того, включен или отклю-
чен приемный блок.
25.3.1.4. Прерывания
Имеется 14 состояний (условий) прерывания, которые детектируются
в МАСВ. Они объединены в соответствии с логической функцией ИЛИ
для поступления на одну линию прерывания. При получении сигнала пре-
рывания ЦПУ запускает подпрограмму обработки прерывания, которая
читает регистр состояния прерывания МАСВ для уточнения его источ-
ника. Этот регистр при чтении автоматически обнуляется. По умолчанию
после сброса все прерывания, в том числе прерывания от МАСВ запре-
щены. Для разрешения и запрещения прерываний от МАСВ используются
соответствующие регистры разрешения, запрещения и маски прерываний
от МАСВ.
25.3.1.5. Передача фреймов
Для осуществления передачи фрейма через МАСВ необходимо произвести
следующие действия.
1. Разрешить передачу в сетевом регистре команд.
2. Распределить участки системной памяти для данных, подлежащих
передаче. Эти участки могут и не следовать друг за другом непре-
рывно, но их границы должны лежать в границах байта.
3. Задать список буферов передачи.
4. Задать в сетевом регистре команд разрешение передачи и разреше-
ние прерываний.
5. Записать данные, подлежащие передаче, в буферы передачи.
6. Записать адрес в дескрипторный указатель очереди передающих
буферов.
7. Записать установки управления и размера в слово 1 дескрипторного
входа передающего буфера.
8. Записать (установить) бит начала передачи в сетевом регистре
команд.
25.3.1.6. Прием фреймов
Когда фрейм принят и блок приема включен, логика МАСВ проверяет
адрес и в перечисленных ниже случаях принятый фрейм записывается си-
стемную память:
• если его адрес совпадает с содержимым одного из четырех реги-
стров заданных уникальных адресов;
• если его адрес соответствует функции хешированного адреса;
• если его адрес является широковещательным (OxFFFFFFFFFFFF)
и в МАСВ разрешен широковещательный режим;
• если модуль МАСВ сконфигурирован, чтобы копировать в память
все фреймы;
• если бит БАМ был переведен в активный уровень прежде, чем че-
тыре слова были загружены в буфер FIFO.
Регистр указателя очереди приемных буферов после приема фрейма
указывает на следующую точку входа, адрес которой МАСВ использу-
ет как адрес системной памяти для записи туда фрейма. После полной
и успешной записи принятого фрейма в системную память МАСВ об-
новляет дескрипторный вход приемного буфера для соответствующего
адреса и помечает его область как принадлежащую пользовательской
программе. Как только эти операции завершаются, генерируется пре-
рывание от МАСВ. Пользовательская программа в этом случае должна
обработать данные в буфере, а затем «возвратить» буфер путем сброса его
ownership-бита.
Если МАСВ не способен записывать данные со скоростью, соот-
ветствующей скорости входящего фрейма, то будет сгенерировано пре-
рывание переполнения приема. Если приемный буфер недоступен, т. е.
следующий буфер все еще принадлежит пользовательской программе, то
генерируется прерывание недоступности приемного буфера. Если фрейм
не принимается успешно, то инкрементируется соответствующий регистр
статистики и фрейм отвергается без информирования об этом пользова-
тельской программы.
25.4. Пользовательский интерфейс
Пользовательский интерфейс МАСВ представлен специальными регистр^
ми МК, перечисленными в табл. 25.6.
Табл. 25.6. Отображение регистров Ethernet МАС (МАСВ)
Сме- щение Регистр Имя Доступ Значение после сброса
0x00 Сетевой регистр команд МАСВ NCR Чтение/ запись 0 "
0x04 Сетевой регистр конфигурации МАСВ NCFG Чтение/ запись 0x800
0x08 Сетевой регистр состояния МАСВ NSR Только чтение -
ОхОС Зарезервировано - - -
0x10 Зарезервировано - - -
0x14 Регистр состояния передачи МАСВ TSR Чтение/ запись 0х0000_0000
0x18 Регистр указателя очереди прием- ных буферов МАСВ RBQP Чтение/ запись 0х0000_0000
0х1С Регистр указателя очереди передаю- щих буферов МАСВ TBQP Чтение/ запись 0х0000_0000
0x20 Регистр состояния приема МАСВ RSR Чтение/ запись 0х0000_0000
0x24 Регистр состояния прерываний от МАСВ ISR Чтение/ запись 0х0000_0000
0x28 Регистр разрешения прерываний от МАСВ IER Только запись -
0х2С Регистр запрещения прерываний от МАСВ IDR Только запись -
0x30 Регистр маски прерываний от МАСВ IMR Только чтение 0x0000_3FFF
0x34 Регистр обслуживания PHY МАСВ MAN Чтение/ запись 0х0000_0000
0x38 Регистр времени паузы МАСВ PTR Чтение/ запись 0х0000_0000
ОхЗС Регистр принятых фреймов паузы МАСВ PFR Чтение/ запись 0х0000_0000
0x40 Регистр переданных ОК фреймов МАСВ FTO Чтение/ запись 0х0000_0000
0x44 Регистр единичных коллизий фрей- мов МАСВ SCF Чтение/ запись 0х0000_0000
0x48 Регистр множественных коллизий фреймов МАСВ MCF Чтение/ запись 0x0000-0000
Табл. 25.6.
(продолжение)
'сме- щение^ Регистр Имя Доступ Значение после сброса
0х4С Регистр принятых ОК фреймов МАСВ FRO Чтение/ запись 0х0000_0000
0x50 Регистр ошибок последовательности проверки фрейма МАСВ FCSE Чтение/ запись 0х0000_0000
0x54 Регистр ошибок установок МАСВ ALE Чтение/ запись 0х0000_0000
0x58 Регистр задержанных переданных фреймов МАСВ DTF Чтение/ запись 0х0000_0000
0х5С Регистр последних коллизий МАСВ LCOL Чтение/ запись 0х0000_0000
0x60 Регистр чрезмерных коллизий МАСВ EXCOL Чтение/ запись 0х0000_0000
0x64 Регистр ошибок недогрузки переда- чи МАСВ TUND Чтение/ запись 0х0000_0000
0x68 Регистр ошибок опроса несущей МАСВ CSE Чтение/ запись 0х0000_0000
ОхбС Регистр ошибок ресурса приема МАСВ RRE Чтение/ запись 0х0000_0000
0x70 Регистр ошибок переполнения приема МАСВ ROV Чтение/ запись 0х0000_0000
0x74 Регистр ошибок приема символа МАСВ RSE Чтение/ запись 0x0000-0000
0x78 Регистр ошибок чрезмерной длины МАСВ ELE Чтение/ запись 0x0000-0000
0х7С Регистр приема бессмысленных данных ЕМАС RJA Чтение/ запись 0x0000-0000
0x80 Регистр уменьшенных фреймов МАСВ USF Чтение/ запись 0x0000-0000
0x84 Регистр ошибок тестирования SQE МАСВ STE Чтение/ запись 0x0000-0000
0x88 Регистр несовпадения поля длины при приеме МАСВ RLE Чтение/ запись 0x0000-0000
0х8С Регистр переданных фреймов паузы МАСВ TPF Чтение/ запись 0x0000-0000
0x90 Основание хэш-регистра (разряды [31:0]) МАСВ HRB Чтение/ запись 0x0000-0000
0x94 Вершина хэш-регистра (разряды [63:32]) МАСВ HRT Чтение/ запись 0x0000-0000
0x98 Регистр основания заданного адреса 1 МАСВ SAIB Чтение/ запись 0x0000-0000
Табл. 25.6.
(окончание)
Сме- щение Регистр Имя Доступ Значение после сброса
0х9С Регистр вершины заданного адреса 1 МАСВ SA1T Чтение/ запись 0х0000_0000~
ОхАО Регистр основания заданного адреса 2 МАСВ SA2B Чтение/ запись 0х0000_0000
0хА4 Регистр вершины заданного адреса 2 МАСВ SA2T Чтение/ запись 0х0000_0000
0хА8 Регистр основания заданного адреса 3 МАСВ SA3B Чтение/ запись 0х0000_0000
ОхАС Регистр вершины заданного адреса 3 МАСВ SA3T Чтение/ запись 0х0000_0000
ОхВО Регистр основания заданного адреса 4 МАСВ SA4B Чтение/ запись 0х0000_0000
0хВ4 Регистр вершины заданного адреса 4 МАСВ SA4T Чтение/ запись 0х0000_0000
0хВ8 Регистр проверки типа идентификатора (ID) МАСВ TID Чтение/ запись 0х0000_0000
ОхВС Регистр передачи кванта паузы TPQ Чтение/ запись 0x0000_FFFF
ОхСО Пользовательский регистр ввода/ вывода МАСВ USRIO Чтение/ запись 0х0000_0000
0хС4 Регистр «след LAN» WOL Чтение/ запись 0х0000_0000
0хС8— OxFC Зарезервировано - - -
25.4.1. Сетевой регистр команд МАСВ NCR
Битовая структура регистра показана в табл. 25.7.
Табл. 25.7. Битовая структура сетевого регистра команд МАСВ NCR
31 30 29 28 27 26 25 24 __
- - - - - - - -
23 22 21 20 19 18 17 16 _
- - - - - - - ”
15 14 13 12 11 10 9 8 _
- - - TZQ TPF THALT TSTART РВ
Табл. 25.7.
(окончание)
7 6 5 4 3 2 1 0
"WESTAT INCSTAT CLRSTAT МРЕ ТЕ RE - LB
* LB: петля («шлейф»).
Переводит в активный уровень сигнал «шлейф» в PHY.
* RE: разрешение приема.
Когда этот бит установлен, приемнику МАСВ разрешается принимать
данные. Когда сброшен, прием фрейма немедленно прекращается и при-
емный буфер FIFO сбрасывается. Регистр указателя очереди приема при
этом не затрагивается.
* ТЕ: разрешение передачи.
Когда этот бит установлен, передатчику Ethernet разрешается пере-
давать данные. Когда сброшен, передача останавливается немедленно,
передающий буфер FIFO сбрасывается и регистр указателя очереди
передачи сбрасывается к указанию на начало списка дескрипторов пе-
редачи.
* МРЕ: разрешение порта управления.
Когда этот бит установлен, разрешена работа порта управления. Ког-
да сброшен, линия MDIO имеет высокоимпендансное состояние, а линия
MDC находится в низком уровне.
• CLRSTAT: сброс регистров статистики.
Этот бит доступен только для записи. Запись в него 1 сбрасывает реги-
стры статистики.
• INCSTAT: инкремент регистров статистики.
Этот бит доступен только для записи. Запись в него 1 инкрементирует
все регистры статистики в тестовых целях.
• WESTAT: разрешение записи в регистры статистики.
Установка этого бита делает регистры статистики доступными для за-
писи в тестовых целях.
* РВ: обратное давление.
Если этот бит установлен в полудуплексном режиме, то это приводит
к коллизиям для всех принятых фреймов.
• TSTART: старт передачи.
Запись 1 в этот бит начинает передачу.
• THALT: останов передачи.
Запись 1 в этот бит останавливает передачу, как только заканчивается
любая текущая передача фрейма.
• TPF: передача фрейма паузы.
Запись 1 в этот бит приведет к передаче фрейма паузы с квантом паузы,
взятом из регистра передачи кванта паузы, в ближайшее доступное время
Неактивности передатчика.
• TZQ:-передача фрейма паузы с нулевым квантом.
Запись 1 в этот бит приведет к передаче фрейма паузы с нулевым кван-
том паузы в ближайшее доступное время неактивности передатчика.
25.4.2. Сетевой регистр конфигурации МАСВ NCFGR
Битовая структура регистра показана в табл. 25.8.
Табл. 25.8. Битовая структура сетевого регистра конфигурации МАСВ
NCFGR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - IRXFCS EFRHD DRFCS RLCE ~
15 14 13 12 11 10 9 8
RBOF РАЕ RTY CLK ЕАЕ BIG
7 6 5 4 3 2 1 0
UNI MTI NBC CAF JFRAME - FD SPD
* SPD: быстродействие.
Устанавливается для указания на операции 100 Мбит/с, сбрасывается
для указания на операции 10 Мбит/с. Значение этого бита отображено на
вывод speed.
* FD: полный дуплекс.
Если этот бит установлен, то переданные в состоянии коллизии сим-
волы игнорируются, а также при передаче и при приеме производит-
ся опрос несущей. При этом также контролируется состояние вывода
half_duplex.
* CAF: копировать все фреймы.
Когда бит установлен, все корректные фреймы принимаются.
* JFRAME: гигантские фреймы.
Бит устанавливается, чтобы разрешать прием гигантских фреймов раз-
мером до 10240 байт.
* NBC: нет широковещательного доступа.
Когда бит установлен, фреймы, которые адресуются по широковеща-
тельному адресу, не принимаются.
* MTI: разрешение группового хэша.
Когда бит установлен, групповые фреймы принимаются, когда хеш-
функция шести битов адреса назначения указывает на бит, который уста-
новлен в хэш-регистре.
* UNI: разрешение индивидуального хэша.
Когда бит установлен, индивидуальные фреймы принимаются, когда
хеш-функция шести битов адреса назначения указывает на бит, который
установлен в хэш-регистре.
* BIG: принимать 1536-байтовые фреймы.
Установка этого бита означает, что МАСВ принимает фреймы длиной
до 1536 байт. В противном случае, МАСВ отбрасывал бы любой фрейм
длиной более, чем 1518 байт.
• ЕАЕ: разрешение внешнего совпадения адреса.
Когда этот бит установлен, вывод earn может использоваться, чтобы
копировать фреймы в память.
* CLK: делитель для получения синхросигнала MDC.
Устанавливается в соответствии со значением системной тактовой ча-
стоты МСК. Значение этого поля определяется тем, как поделена систем-
ная тактовая частота для генерации MDC. Для соответствия со стандартом
802.3 значение MDC не должно превышать 2,5 МГц. (Только частота MDC
активна в течение операций чтения и записи MDIO.) Возможные значения
этого поля приведены в табл. 25.9.
Табл. 25.9. Возможные значения битового поля CLK
CLK MDC
00 01 10 11 МСК, поделенная на 8 (МСК до 20 МГц) МСК, поделенная на 16 (МСК до 40 МГц) МСК, поделенная на 32 (МСК до 80 МГц) МСК, поделенная на 64 (МСК до 160 МГц)
• RTY: повторение теста.
Бит должен быть сброшен в нормальном режиме.
• РАЕ: разрешение паузы.
Когда бит установлен, передача делает паузу, когда принимается кор-
ректный фрейм паузы.
* RBOF: смещение буфера приема.
Индицирует количество байт, на которое принятые данные смещены
от начала первых данных в приемном буфере. Возможные значения этого
поля приведены в табл. 25.10.
Табл. 25.10. Возможные значения битового поля RBOF
RBOF Смещение
00 01 10 и Никакого смещения от начала приемного буфера Однобайтовое смещение от начала приемного буфера Двухбайтовое смещение от начала приемного буфера Трехбайтовое смещение от начала приемного буфера
* RLCE: разрешение проверки поля длительности приема.
Когда бит установлен, фреймы с длиной короче, чем указано в их полях
длительности, отвергаются. Фреймы, содержащие в байтах 13 и 14 типа
идентификатора значение ID = 0600, не подсчитываются в качестве оши-
бок длительности.
• DRFCS: неверное поле FCS при приеме.
Когда бит установлен, поле FCS принятых фреймов не может быть ско-
пировано в память.
• EFRHD:
Разрешение приема фреймов в полудуплексном режиме при передаче.
• IRXFCS: игнорировать RX FCS.
Когда бит установлен, фреймы с ошибками FCS/CRC не отвергаются
и статистика ошибок FCS не подсчитывается. В нормальном режиме этот
бит должен быть сброшен.
25.4.3. Сетевой регистр состояния МАСВ NSR
Битовая структура регистра показана в табл. 25.11.
Табл. 25.11. Битовая структура сетевого регистра состояния МАСВ NSR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - IDLE MDIO LINK
• LINK:
Бит возвращает состояние вывода link.
• MDIO:
Бит возвращает состояние вывода mdio_in. Чтобы читать фреймы
управления используйте регистр обслуживания PHY, а не этот бит.
• IDLE:
О = логика PHY выполняет операции.
1 = логика управления PHY в состоянии idle, т. е. завершила операции.
25.4.4. Регистр состояния передачи МАСВ TSR
Битовая структура регистра показана в табл. 25.12.
Табл. 25.12. Битовая структура регистра состояния передачи МАСВ TSR
31 30 29 28 27 26 25 24
- - - - - - - -
Табл. 25.12.
(окончание)
' 23 22 21 20 19 18 17 16
. - - - - - - -
15 14 13 12 11 10 9 8
.—•— - - - - - - -
7 6 5 4 3 2 1 0
- UND СОМР ВЕХ TGO RLE COL UBR
Чтение этого регистра возвращает подробности состояния передачи.
После чтения биты регистра могут быть индивидуально сброшены путем
записи в них 1. Невозможно установить биты этого регистра путем про-
граммной записи в них единиц.
• UBR: чтение used-бита.
Если этот бит установлен, дескриптор передающего буфера читается
с его used-битом. Бит сбрасывается путем записи в него 1.
* COL: произошла коллизия.
Бит устанавливается аппаратно при происшедшей коллизии. Бит сбра-
сывается путем записи в него 1.
* RLE: превышение предела повторения.
Бит сбрасывается путем записи в него 1.
• TGO: идет передача.
Если бит в высоком уровне, передача активна.
* ВЕХ: буфера заканчиваются в середине фрейма.
Если буфера заканчиваются в течение передачи фрейма, то следует
останов передачи, поле FCS будет сбойным, а также перейдет в активный
уровень сигнал tx er. Бит сбрасывается путем записи в него 1.
* СОМР: передача закончена.
Этот бит устанавливается, когда фрейм передан. Бит сбрасывается пу-
тем записи в него 1.
• UND: недогрузка передачи.
Этот бит устанавливается, когда при передаче блок DMA не смог про-
читать данные из памяти, а также когда не была своевременно предостав-
лена шина, потому что был возвращен сигнал no OK hresp (шинная ошиб-
ка), или потому, что в середине передачи фрейма был прочитан used-бит.
Если это происходит, передатчик задает сбойный CRC. Бит сбрасывается
путем записи в него 1.
25.4.5. Регистр указателя очереди приемных буферов МАСВ
RBQP
Битовая структура регистра показана в табл. 25.13.
Табл. 25.13. Битовая структура регистра указателя очереди приемных буфе-
ров МАСВ RBQP
31 30 29 28 27 26 25 24
ADDR
23 22 21 | 20 19 18 17 16
ADDR
15 14 13 12 11 10 9 8
ADDR
7 6 5 4 3 2 1 0
ADDR - -
Этот регистр указывает на точку входа в очереди приемных буферов
(дескрипторный список), используемую в текущее время. В него записыва-
ется начальный адрес размещения дескрипторного списка приемных буфе-
ров. Сброс к указанию на минимальное значение производится после 1024
буфера или когда установлен wrap-бит.
Чтение этого регистра возвращает адрес размещения дескриптора,
к которому в настоящее время производится обращение. Пользовательское
программное обеспечение не должно использовать этот регистр для того,
чтобы определять, не следует ли сбросить указатель дескрипторов по исте-
чении 1024 дескрипторов. Вместо этого программное обеспечение должно
производить проверку used-битов в дескрипторной очереди.
Рекомендуется, чтобы в бит 2 этого регистра всегда записывался 0.
* ADDR: адрес указателя очереди приемных буферов.
Записывается как начальный адрес приемной очереди, читается как
указатель на текущий используемый буфер.
25.4.6. Регистр указателя очереди передающих буферов
МАСВ TBQP
Битовая структура регистра показана в табл. 25.14.
Табл. 25.14. Битовая структура регистра указателя очереди передающих бу-
феров МАСВ TBQP
31 30 29 28 27 26 25 24
ADDR
23 22 21 20 19 18 17 16
ADDR
Табл. 25.14. (окончание)
15 14 13 12 11 10 9 8
ADDR
7 6 5 4 3 2 1 0
ADDR - -
Этот регистр указывает на точку входа буферной очереди передачи
(дескрипторный список), используемую в текущее время. В регистр запи-
сывается начальный адрес размещения дескрипторного списка передаю-
щих буферов. Сброс к указанию на минимальное значение производится
после 1024 буфера или когда установлен wrap-бит. Этот регистр может
быть записан, только когда бит 3 в регистре состояния передачи находит-
ся в низком уровне.
Рекомендуется, чтобы в бит 2 этого регистра всегда записывался 0.
• ADDR: адрес указателя очереди передающих буферов.
Записывается как начальный адрес передающей очереди, читается как ука-
затель на первый буфер передаваемого или подлежащего передаче фрейма.
25.4.7. Регистр состояния приема МАСВ RSR
Битовая структура регистра показана в табл. 25.15.
Табл. 25.15. Битовая структура регистра состояния приема МАСВ RSR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - OVR REC BNA
Чтение этого регистра возвращает детали состояния приема. После
чтения биты регистра могут быть индивидуально сброшены путем записи
в них 1. Биты этого регистра невозможно установить путем записи в них 1.
• BNA: буфер недоступен.
Была сделана попытка перейти к новому буферу, но указатель указы-
вает, что этот буфер принадлежит ЦПУ. Блок DMA перечитывает указа-
тель каждый раз, когда начинается новый фрейм до тех пор, пока не будет
обнаружен корректный указатель. Этот бит устанавливается при каждой
неудачной попытке, даже если после сброса бита не был прочитан ни одцц
корректный указатель. Бит сбрасывается путем записи в него 1.
* REC: принят фрейм.
Одна или более фреймов были приняты и помещены в память. Бит
сбрасывается путем записи в него 1.
• OVR: переполнение приема.
Блок DMA не смог сохранить принятый фрейм в памяти, потому что
или шина не была предоставлена вовремя, или был возвращен код not
OK hresp (шинная ошибка). Если это происходит, буфер возвращается.
Этот бит сбрасывается путем записи в него 1.
25.4.8. Регистры состояния/разрешения/запрещения/маски
прерываний МАСВ ISR/IER/IDR/IMR
Битовая структура каждого из этих регистров показана в табл. 25.16.
Табл. 25.16. Битовая структура регистров состояния/разрешения/запреще-
ния/маски прерываний МАСВ ISR/IER/IDR/IMR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - PTZ PFR HRESP ROVR LINK -
7 6 5 4 3 2 1 0
ТСОМР TXERR RLE TUND TXUBR RXUBR RCOMP MFD
Для регистра ISR:
• MFD: фрейм управления завершен.
. Регистр обслуживания PHY завершил свои операции. Сбрасывается
при чтении.
• RCOMP: прием завершен.
Фрейм был сохранен в памяти. Сбрасывается при чтении.
• RXUBR: прочитанный used-бит при приеме.
Бит устанавливается, когда в дескрипторе приемного буфера читается
установленный used-бит. Сбрасывается при чтении.
• TXUBR: прочитанный used-бит при передаче.
Бит устанавливается, когда в дескрипторе передающего буфера читается
установленный used-бит. Сбрасывается при чтении.
• TUND: недогрузка передающего буфера Ethernet.
При передаче DMA не выбрал данные фрейма, подлежащие передаче,
иЛи сигнал hresp возвращен не как ОК. Этот бит также устанавливается,
если установленный used-бит прочитан в середине фрейма или когда
произведена новая запись в указатель очереди передачи. Сбрасывается
при чтении.
• RLE: превышен предел повторений.
Сбрасывается при чтении.
• TXERR: ошибка передачи.
Передающие буферы заканчиваются в середине фрейма, что является
ошибкой передачи. Сбрасывается при чтении.
• ТСОМР: передача завершена.
Бит устанавливается, когда фрейм передан. Сбрасывается при чтении.
• LINK: изменение сигнала link.
Бит устанавливается, когда изменяется внешний сигнал link. Сбрасы-
вается при чтении.
• ROVR: переполнение приема.
Бит устанавливается, когда устанавливается бит состояния переполне-
ния приема. Сбрасывается при чтении.
• HRESP: сигнал hresp not OK.
Бит устанавливается, когда блок DMA видит шинную ошибку. Сбрасы-
вается при чтении.
* PFR: принят фрейм паузы.
Установка этого бита указывает, что была принята корректная пауза.
Сбрасывается при чтении.
• PTZ: нулевое время паузы.
Бит устанавливается, когда регистр времени паузы (0x38) декрементиру-
ется до нулевого состояния. Сбрасывается при чтении.
Для регистра IER:
* MFD: фрейм управления завершен.
Разрешить прерывание по завершению фрейма управления.
* RCOMP: прием завершен.
Разрешить прерывание по завершению приема.
* RXUBR: прочитанный used-бит при приеме.
Разрешить прерывание при чтении used-бита при приеме.
* TXUBR: прочитанный used-бит при передаче.
Разрешить прерывание при чтении used-бита при передаче.
* TUND: недогрузка передающего буфера Ethernet.
Разрешить прерывание при недогрузке передающего буфера.
* RLE: превышен предел повторений.
Разрешить прерывание при превышении предела повторений.
* TXERR: ошибка передачи.
Разрешить прерывание, когда передающие буферы заканчиваются в се-
редине фрейма.
• ТСОМР: передача завершена.
Разрешить прерывание при завершении передачи.
• LINK: изменение сигнала link.
Разрешить прерывание при изменении внешнего сигнала link.
* ROVR: переполнение приема.
Разрешить прерывание при переполнении приема.
* HRESP: сигнал hresp not OK.
Разрешить прерывание при сигнале hresp not OK.
* PFR: принят фрейм паузы.
Разрешить прерывание при приеме корректной паузы.
• PTZ: нулевое время паузы.
Разрешить прерывание, когда регистр времени паузы декрементируется
до нулевого состояния.
Для регистра IDR:
• MFD: фрейм управления завершен.
Запретить прерывание по завершению фрейма управления.
* RCOMP: прием завершен.
Запретить прерывание по завершению приема.
• RXUBR: прочитанный used-бит при приеме.
Запретить прерывание при чтении used-бита при приеме.
• TXUBR: прочитанный used-бит при передаче.
Запретить прерывание при чтении used-бита при передаче.
• TUND: недогрузка передающего буфера Ethernet.
Запретить прерывание при недогрузке передающего буфера.
* RLE: превышен предел повторений.
Запретить прерывание при превышении предела повторений.
* TXERR: ошибка передачи.
Запретить прерывание, когда передающие буферы заканчиваются в се-
редине фрейма.
* ТСОМР: передача завершена.
Запретить прерывание при завершении передачи.
* LINK: изменение сигнала link.
Запретить прерывание при изменении внешнего сигнала link.
* ROVR: переполнение приема.
Запретить прерывание при переполнении приема.
* HRESP: сигнал hresp not OK.
Запретить прерывание при сигнале hresp not OK.
* PFR: принят фрейм паузы.
Запретить прерывание при приеме корректной паузы.
* PTZ: нулевое время паузы.
Запретить прерывание, когда регистр времени паузы декрементируется
до нулевого состояния.
Для регистра IMR:
* MFD: фрейм управления завершен.
Маска прерывания по завершению фрейма управления.
* RCOMP: прием завершен.
Маска прерывания по завершению приема.
* RXUBR: прочитанный used-бит при приеме.
Маска прерывания при чтении used-бита при приеме.
• TXUBR: прочитанный used-бит при передаче.
Маска прерывания при чтении used-бита при передаче.
* TUND: недогрузка передающего буфера Ethernet.
Маска прерывания при недогрузке передающего буфера.
• RLE: превышен предел повторений.
Маска прерывания при превышении предела повторений.
* TXERR: ошибка передачи.
Маска прерывания, когда передающие буферы заканчиваются в сере-
дине фрейма.
• ТСОМР: передача завершена.
Маска прерывания при завершении передачи.
* LINK: изменение сигнала link.
Маска прерывания при изменении внешнего сигнала link.
* ROVR: переполнение приема.
Марка прерывания при переполнении приема.
• HRESP: сигнал hresp not OK.
Маска прерывания при сигнале hresp not OK.
• PFR: принят фрейм паузы.
Маска прерывания при приеме корректной паузы.
* PTZ: нулевое время паузы.
Маска прерывания, когда регистр времени паузы декрементируется до
нулевого состояния.
25.4.9. Регистр обслуживания PHY МАСВ MAN
Битовая структура регистра показана в табл. 25.17.
Табл. 25.17. Битовая структура регистра обслуживания PHY МАСВ MAN
31 30 29 28 27 26 25 24
SOF RW PHYA
23 22 21 20 19 18 17 16
PHYA REGA CODE
15 14 13 12 11 10 9 8
DATA
7 6 5 4 3 2 1 0
DATA
* DATA: данные.
При операции записи это в поле записываются данные, которые будут
записаны в PHY. После операции чтения это поле содержит данные чтения
из PHY.
• CODE:
Должно быть записано значение 10. Чтение возвращает то, что записано.
• REGA: адрес регистра.
Определяет регистр для доступа в PHY.
• PHYA: адрес PHY.
• RW: чтение/запись.
Чтение — 10, запись — 01. Любые другие значения являются недопусти-
мыми для фрейма управления PHY.
* SOF: начало фрейма.
Должно быть записано значение 01 для корректного фрейма.
25.4.10. Регистр времени паузы МАСВ PTR
Битовая структура регистра показана в табл. 25.18.
Табл. 25.18. Битовая структура регистра времени паузы МАСВ PTR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
PTIME
7 6 5 4 3 2 1 0
PTIME
• РИМЕ: время паузы.
Сохраняет текущее значение регистра времени паузы, который декре-
ментируется каждые 512 интервалов передачи бита.
25.4.11. Основание/вершина хэш-регистра МАСВ HRB/HRT
Битовая структура каждого из этих регистров показана в табл. 25.19.
Табл. 25.19. Битовая структура основания/вершины хэш-регистра МАСВ
HRB/HRT
31 30 29 28 27 26 25 24
ADDR
23 22 21 20 19 18 17 16
ADDR
Табл. 25.19.
(окончание)
14 13 12 1 Ч_ 10 [ 9 8
ADDR
" 7 6 5 4 3 2 1 0
ADDR
Для регистра HRB:
♦ ADDR.
Биты 31:0 адреса хэш-регистра.
Для регистра HRT:
• ADDR.
Биты 63:32 адреса хэш-регистра.
25.4.12. Регистр основания заданного уникального адреса
х МАСВ SAxB, где (х = 1, 2, 3, 4)
Битовая структура регистра показана в табл. 25.20.
Табл. 25.20. Битовая структура регистра основания заданного уникального
адреса х МАСВ SAxB
31 30 29 28 27 26 25 24
ADDR
23 22 21 20 19 18 17 16
ADDR
15 14 13 12 11 10 9 8
ADDR
7 6 5 4 3 2 1 0
ADDR • ADDR. Младшие значащие разряды адреса назначения. Нулевой бит указыва- ет, является ли адрес групповым или индивидуальным.
25.4.13. Регистр вершины заданного уникального адреса х
МАСВ SAxT, где (х = 1, 2, 3, 4)
Битовая структура регистра показана в табл. 25.21.
Табл. 25.21. Битовая структура регистра вершины заданного уникального
адреса х МАСВ SAxT
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
ADDR
7 6 5 4 3 2 1 0
ADDR
• ADDR.
Старшие значащие разряды адреса назначения (биты адреса с 47 до 32).
25.4.14. Регистр проверки типа идентификатора (ID) МАСВ
TID
Битовая структура регистра показана в табл. 25.22.
Табл. 25.22. Битовая структура регистра проверки типа идентификатора
(ID) МАСВ TID
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
TID
7 6 5 4 3 2 1 0
TID
* TID: проверка типа идентификатора.
Для использования при сравнениях с полем «Тип ID/Длительность»
(TypelD/Length) принятых фреймов.
25.4.15. Регистр передачи кванта паузы МАСВ TPQ
Битовая структура регистра показана в табл. 25.23.
Табл. 25.23. Битовая структура регистра передачи кванта паузы МАСВ
TPQ
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
15 | 14 | 13 | 12 I 11 | 10 | 9 | 8
TPQ
7|6|5|4|3|2|1|О
TPQ
* TPQ: передаваемый квант паузы.
Используемое при аппаратной генерации фрейма паузы значение кван-
та паузы.
25.4.16. Пользовательский регистр ввода-вывода МАСВ
USRIO
Битовая структура регистра показана в табл. 25.24.
Табл. 25.24. Битовая структура пользовательского регистра ввода-вывода
МАСВ USRIO
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
13 14 13 12 11 10 9 8
- - - - - -
7 6 5 4 3 2 1 0
- - - - TX_PAUSE_ ZERO ТХ_ PAUSE EAM RMII
• RMII.
Когда этот бит установлен, то разрешен режим МП. Когда сброшен,
разрешен режим RMII.
• ЕАМ.
Когда этот бит установлен, фрейм будет копироваться в память, если
это разрешено битом ЕАЕ в регистре NCFGR. В противном случае, фрейм
не будет копироваться в память.
• TX_PAUSE.
Переключение этого бита вызывает передачу фрейма паузы.
• TX_PAUSE_ZERO.
Этим битом выбирается нулевое содержимое или содержимое регистра
передачи кванта паузы в кванте паузы передаваемого фрейма паузы.
25.4.17. Регистр «след LAN» МАСВ WOL
Битовая структура регистра показана в табл. 25.25.
Табл. 25.25. Битовая структура регистра «след LAN» МАСВ WOL
31 30 29 28 27 26 25 24
- - - - - , - - -
23 22 21 20 19 18 17 16
- - - - MTI SA1 ARP MAG
15 14 13 12 11 10 9 8
IP
6 5 4 3 2 1
IP
• IP: запрос ARP IP-адреса.
Содержимое поля задает младшие 16 битов нужного адреса IP, с кото-
рыми производится сравнение, и в случае совпадения генерируется собы-
тие «след LAN». Нулевое значение не вызывает генерацию этого события,
даже если это значение совпадет со значением из принятого фрейма.
* MAG: разрешение события «магического» пакета.
Когда этот бит установлен, событие «магического» пакета переводит
вывод wol в активный уровень.
• ARP: разрешение события ARP.
Когда бит установлен, событие запроса ARP переводит вывод wol в ак-
тивный уровень.
* SA1: разрешение события регистра заданного уникального адреса 1.
Когда бит установлен, событие регистра заданного уникального адреса
1 переводит вывод wol в активный уровень.
• MTI: разрешение события группового хэша.
Когда бит установлен, событие группового хэша переводит вывод wol
в активный уровень.
25.4.18. Статистические регистры МАСВ
Эти регистры автоматически сбрасываются в нулевое состояние при про-
граммном чтении и при аппаратном переполнении свыше их максималь-
ного значения. Они должны читаться программой достаточно часто, чтобы
предотвращать потери данных. Приемные регистры статистики инкремен-
тируются только в том случае, когда в сетевом регистре команд установлен
бит разрешения приема. Чтобы можно было записывать в эти регистры,
в сетевом регистре команд должен быть установлен бит 7. Блок статистиче-
ских регистров содержит регистры, перечисленные ниже.
25.4.18.1. Регистр принятых фреймов паузы МАСВ PFR
Битовая структура регистра показана в табл. 25.26.
Табл. 25.26. Битовая структура регистра принятых фреймов паузы МАСВ
PFR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
FROK
7 6 5 4 3 2 1 0
_ FROK
* FROK: принятые ОК фреймы паузы.
16-разрядный регистр, считающий количество корректных при-
нятых фреймов паузы. Корректный фрейм имеет длину 64—1518 байт
(1536 байт, если установлен бит BIG (8) в сетевом регистре конфигура-
ции NCFGR, 10240 байт, если установлен бит JFRAME (3) в сетевом
Регистре конфигурации NCFGR) и не имеет ошибок FCS или ошибок
приема символа.
25.4.18.2. Регистр переданных ОК фреймов МАСВ FTO
Битовая структура регистра показана в табл. 25.27.
Табл. 25.27. Битовая структура регистра переданных ОК фреймов МАСВ
FTO
31 30 29 28 27 26 25 24^
- - - - - - -
23 22 21 20 19 18 17 16
FTOK
15 14 13 12 11 10 9 8
FTOK
7 6 5 4 3 2 1 0
FTOK
* FTOK: переданные ОК фреймы. 24-разрядный регистр, считающий количество успешно переданных фреймов, т. е. без недогрузки и без слишком большого числа повторений.
25.4.18.3. Регистр единичных коллизий фреймов МАСВ SCF
Битовая структура регистра показана в табл. 25.28.
Табл. 25.28. Битовая структура регистра единичных коллизий фреймов
МАСВ SCF
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
SCF
6 5 4 3 2 1
SCF
* SCF: единичные коллизии фреймов.
16-разрядный регистр, считающий количество фреймов, испытавших
единичные коллизии, прежде чем они были успешно переданы.
25.4.18.4. Регистр множественных коллизий фреймов МАСВ
MCF
ритовая структура регистра показана в табл. 25.29.
Табл. 25.29. Битовая структура регистра множественных коллизий фреймов
МАСВ MCF
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
MCF
7 6 5 4 3 2 1 0
MCF
* MCF: множественные коллизии фреймов.
16-разрядный регистр, считающий количество фреймов, испытавших от
двух до пятнадцати коллизий, прежде чем они были успешно переданы.
25.4.18.5. Регистр принятых ОК фреймов МАСВ FRO
Битовая структура регистра показана в табл. 25.30.
Табл. 25.30. Битовая структура регистра принятых ОК фреймов МАСВ
FRO
30 29 28 27 26 25 24
__ 23 22 21 20 19 18 17 16
FROK
. 15 14 13 12 11 10 9 8
FROK
7 6 5 4 3 2 1 0
FROK
* FROK: принятые OK фреймы.
24-разрядный регистр, считающий количество корректных принятых
фреймов, т. е. фреймов с распознанным адресом и успешно скопирован-
ных в память. Корректный фрейм имеет длину 64—1518 байт (1536 байт
если в сетевом регистре конфигурации NCFGR установлен бит 8 (BIG)'
10240 байт, если в сетевом регистре конфигурации NCFGR установлен бит
3 (JFRAME)) и не имеет ошибки FCS или ошибки приема символа.
25.8.18.6. Регистр ошибок последовательности проверки
фреймов МАСВ FCSE
Битовая структура регистра показана в табл. 25.31.
Табл. 25.31. Битовая структура регистра ошибок последовательности про-
верки фреймов МАСВ FCSE
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
FCSE
* FCSE: ошибки последовательности проверки фреймов.
8-разрядный регистр, считающий фреймы, которые содержат целое чис-
ло байт, имеют ошибку CRC и длину от 64 до 1518 байт (1536 байт, если в се-
тевом регистре конфигурации NCFGR установлен бит 8 (BIG), 10240 байт,
если в сетевом регистре конфигурации NCFGR установлен бит 3 (JFRAME)).
Этот регистр также инкрементируется, если детектируется ошибка символа
и фрейм имеет корректную длину и содержит целое число байт.
25.4.18.7. Регистр ошибок установок МАСВ ALE
Битовая структура регистра показана в табл. 25.32.
Табл. 25.32. Битовая структура регистра ошибок установок МАСВ ALE
31 30 29 28 27 26 25 24
- - - - - - - -
Табл. 25.32.
(окончание)
' 23 22 21 20 19 18 17 16
.1 - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
ALE
* ALE: ошибки установок.
8-разрядный регистр, считающий фреймы, содержащие не целое число
байт и имеющие ошибки CRC, когда их длина усечена до целого числа
байт и лежит в диапазоне от 64 до 1518 байт (1536 байт, если в сетевом
регистре конфигурации NCFGR установлен бит 8 (BIG), 10240 байт, если
в сетевом регистре конфигурации NCFGR установлен бит 3 (JFRAME)).
Этот регистр также инкрементируется, если детектируется ошибка символа
и фрейм имеет корректную длину и содержит не целое число байт.
25.4.18.8. Регистр задержанных переданных фреймов МАСВ DTF
Битовая структура регистра показана в табл. 25.33.
Табл. 25.33. Битовая структура регистра задержанных переданных фреймов
МАСВ DTF
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
15 14 13 12 11 10 9 8
DTF
_ 7 6 5 4 3 2 1 0
DTF
* DTF: задержанные переданные фреймы.
16-разрядный регистр, считающий количество фреймов, подвергшихся
задержке при первой попытке их передачи. Фреймы, участвующие в какой-
либо коллизии, или фреймы, подвергшиеся недогрузке передачи, здесь не
подсчитываются.
25.4.18.9. Регистр последних коллизий МАСВ LCOL
Битовая структура регистра показана в табл. 25.34.
Табл. 25.34. Битовая структура регистра последних коллизий МАСВ LCOL
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - -
15 14 13 12 11 10 9 8
- - - - - - -
7 6 5 4 3 2 1 0
LCOL
* LCOL: последние коллизии.
8-разрядный регистр, считающий количество фреймов, подвергшихся
коллизиям после истечения интервала слота (512 бит). Последняя коллизия
подсчитывается дважды: как просто коллизия и как последняя коллизия.
25.4.18.10. Регистр чрезмерных коллизий МАСВ EXCOL
Битовая структура регистра показана в табл. 25.35.
Табл. 25.35. Битовая структура регистра чрезмерных коллизий МАСВ
EXCOL
31 30 29 28 27 26 25 24 _
- - - - - - - -
23 22 21 20 19 18 17 16 -
- - - - - - - -
15 14 13 12 11 10 9 8__
- - - - - - -
7 6 5 4 3 2 1 0_
EXCOL
• EXCOL: чрезмерные коллизии.
8-разрядный регистр, считающий количество фреймов, которые не
смогли быть переданы, потому что они испытали 16 коллизий.
25.4.18.11. Регистр ошибок недогрузки передачи МАСВ
TUND
Битовая структура регистра показана в табл. 25.36.
Табл. 25.36. Битовая структура регистра ошибок недогрузки передачи МАСВ
TUND
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
6 5 4 3 2 1
TUND
• TUND: недогрузка передачи.
8-разрядный регистр, считающий количество фреймов, не переданных
из-за недогрузки передачи DMA. Если этот регистр инкрементируется, то
никакой другой регистр статистики не инкрементируется.
25.4.18.12. Регистр ошибок опроса несущей МАСВ CSE
Битовая структура регистра показана в табл. 25.37.
Табл. 25.37. Битовая структура регистра ошибок опроса несущей МАСВ
CSE
_ 31 30 29 28 27 26 25 24
- - - - - - -
_ 23 22 21 20 19 18 17 16
- - - - - - - -
_ 15 14 13 12 11 10 9 8
- - - - - - - -
Табл. 25.37.
(окончание)
7 6 5 4 J г 2 1 0
CSE
• CSE: ошибки опроса несущей.
8-разрядный регистр, считающий количество переданных фреймов,
для которых опрос несущей не был отмечен в течение передачи или для
которых опрос несущей не перешел в активный уровень, будучи переве-
денным в активный уровень в переданном фрейме без коллизии (без недо-
грузки). Инкрементируется только в полудуплексном режиме. Появление
одной ошибки опроса несущей должно инкрементировать этот регистр.
Детектирование ошибки опроса несущей не затрагивает содержимое дру-
гих статистических регистров.
25.4.18.13. Регистр ошибок ресурса приема МАСВ RRE
Битовая структура регистра показана в табл. 25.38.
Табл. 25.38. Битовая структура регистра ошибок ресурса приема МАСВ
RRE
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
RRE
6 5 4 3 2 1
RRE
* RRE: ошибки ресурса приема.
16-разрядный регистр, считающий количество фреймов, которые име-
ли совпадающий адрес, но не могли быть скопированы в память, потому
что не был доступен приемный буфер.
25.4.18.14. Регистр ошибок переполнения приема МАСВ
ROVR
Битовая структура регистра показана в табл. 25.39.
Табл. 25.39. Битовая структура регистра ошибок переполнения приема
МАСВ ROVR
30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - -
•
7 6 5 4 3 2 1 0
ROVR
• ROVR: переполнение приема.
8-разрядный регистр, считающий количество фреймов, адреса которых
были распознаны, но эти фреймы не были скопированы в память из-за
переполнения DMA.
25.4.18.15. Регистр ошибок приема символа МАСВ RSE
Битовая структура регистра показана в табл. 25.40.
Табл. 25.40. Битовая структура регистра ошибок приема символа МАСВ
RSE
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
_ 15 14 13 12 11 10 9 8
- - - - - - - -
6 5 4 3 2 1
RSE
* RSE: ошибки приема символа.
8-разрядный регистр, считающий количество фреймов, для которых
сигнал гх_ег перешел в активный уровень в течение приема. Ошибкой
приема символа считается ошибка FCS или ошибка установок, если длина
фрейма составляет от 64 до 1518 байт (1536 байт, если в сетевом регистре
конфигурации NCFGR установлен бит 8 (BIG), 10240 байт, если в сетевой
регистре конфигурации NCFGR установлен бит 3 (JFRAME)). Если фрейм
имеет большую длину, то это регистрируется как ошибка приема бессмыс-
ленных данных.
25.4.18.16. Регистр ошибок чрезмерной длины МАСВ ELE
Битовая структура регистра показана в табл. 25.41.
Табл. 25.41. Битовая структура регистра ошибок чрезмерной длины МАСВ
ELE
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8 •
- - - - - - - -
7 6 5 4 3 2 1 0
EXL
* EXL: ошибки чрезмерной длины.
8-разрядный регистр, считающий количество фреймов, превышаю-
щих по длине 1518 байт (1536 байт, если в сетевом регистре конфи-
гурации NCFGR установлен бит 8 (BIG), 10240 байт, если в сетевом
регистре конфигурации NCFGR установлен бит 3 (JFRAME)), но не
имеющих ни одной ошибки CRC, ошибки установок и ошибки приема
символа.
25.4.18.17. Регистр приема бессмысленных данных МАСВ
RJA
Битовая структура регистра показана в табл. 25.42.
Табл. 25.42. Битовая структура регистра приема бессмысленных данных
МАСВ RJA
31 30 29 28 27 26 25 24 -
- - - - - - - -
Табл. 25.42. (окончание)
2? 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - -
7 — 1 1 ? 1 4 3 2 1 0
RJB
• RJB: прием бессмысленных данных.
8-разрядный регистр, считающий количество фреймов, превышающих
по длине 1518 байт (1536 байт, если в сетевом регистре конфигурации NCF-
GR установлен бит 8 (BIG), 10240 байт, если в сетевом регистре конфигура-
ции NCFGR установлен бит 3 (JFRAME)) и имеющих также ошибку CRC,
ошибку установок или ошибку приема символа.
25.4.18.18. Регистр уменьшенных фреймов МАСВ USF
Битовая структура регистра показана в табл. 25.43.
Табл. 25.43. Битовая структура регистра уменьшенных фреймов МАСВ USF
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
USF .
* USF: уменьшенные фреймы.
8-разрядный регистр, считающий количество принятых фреймов, име-
ющих длину меньше, чем 64 байта, но не имеющих ни одной ошибки CRC,
ошибки установок и ошибки приема символа.
25.4.18.19. Регистр ошибок тестирования SQE МАСВ STE
Битовая структура регистра показана в табл. 25.44.
Табл. 25.44. Битовая структура регистра ошибок тестирования SQE МДСй
STE
31 30 29 28 27 26 25 24^
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - -
15 14 13 12 и 10 9 8
- - - - - - - -
SQER
* SQER: ошибки тестирования SQE.
8-разрядный регистр, считающий количество принятых фреймов, в ко-
торых сигнал col не был переведен в активный уровень в течение 96 ин-
тервалов передачи бита с момента перехода в пассивный уровень сигнала
tx_en в полудуплексном режиме.
25.4.18.20. Регистр несовпадения поля длины при приеме
МАСВ RLE
Битовая структура регистра показана в табл. 25.45.
Табл. 25.45. Битовая структура регистра несовпадения поля длины при при-
еме МАСВ RLE
31 30 29 28 27 26 25 24 __
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8 _
- - - - - - - -
7 6 5 4 3 2 1 0
RLFM
• RLFM: несовпадение поля длины при приеме.
8-разрядный регистр, считающий количество принятых фреймов, име-
ющих реальную длину короче, чем длину, извлеченную из поля длины.
Проверка разрешается с помощью бита 16 сетевого регистра конфигурации,
фреймы, содержащие идентификатор типа в байтах 13 и 14 (т. е. иденти-
фикатор длины/типа ID больший или равный 0x0600), не подсчитываются
как ошибки поля длины.
25.4.18.21. Регистр переданных фреймов паузы МАСВ TPF
Битовая структура регистра показана в табл. 25.46.
Табл. 25.46. Битовая структура регистра переданных фреймов паузы МАСВ
TPF
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
TPF
7 6 5 4 3 2 1 0
TPF
* TPF: переданные фреймы паузы.
16-разрядный регистр, считающий количество переданных фреймов
паузы.
ГЛАВА 26
ИНТЕРФЕЙС USB OTG
(USBB)
26.1. Основные особенности
Входящий в состав всех МК семейства AT32UC3 модуль интерфейса USB
On-The-Go (USBB) имеет следующие основные особенности:
• совместимость со спецификацией USB 2.0, поддержка полно-/низ-
коскоростного режимов (FS/LS) и On-The-Go (OTG), скорость об-
мена до 12 Мбит/с;
• 7 каналов/конечных точек;
• 960 байт встроенной двухпортовой оперативной памяти (DPRAM)
для каналов/конечных точек;
• до двух банков памяти на канал/конечную точку (кроме канала/
конечной точки управления);
• гибкая конфигурация канала/конечной точки и управление выде-
ленными каналами DMA;
• приемопередатчики на кристалле включая возможность подтягивания
линий к «плюсу» питания и общему проводу (Pull-Ups/Pull-downs);
• кнопочный интерфейс OTG, включающий аналоговый компаратор
VBUS на кристалле.
Модуль устройства универсальной последовательной шины (USB) МК
AT32UC3 соответствует спецификации USB 2.0, однако не обеспечивает
поддержки высокоскоростного режима USB (480 Мбит/с).
Каждый канал/конечная точка модуля USB может быть сконфигуриро-
ван для одного из нескольких типов передачи. Канал/конечная точка мо-
жет быть связан с одним или более банками двухпортовой оперативной па-
мяти с целью хранения там текущих данных. Если используется несколько
банков (режим «пинг-понга»), то в один банк DPRAM производит чтение
или запись ЦПУ или DMA, в то время как в другой производит чтение
или запись макроядро модуля USB. Эта способность присуща изохронным
каналам/конечным точкам.
Аппаратную конфигурацию модуля USB AT32UC3C иллюстрирует со-
держимое табл. 26.1.
Теоретически максимальная конфигурация канала/конечной точки
(1600 байт) превышает реальный размер DPRAM (960 байт). Пользователь
должен помнить об этом при конфигурировании каналов/конечных точек.
Полностью задействовать все 960 байт DPRAM пользователь может, на-
пример, используя конфигурацию, описанную в табл. 26.2.
Табл. 26.1. Описание каналов/конечных точек модуля USB
’ Канал/ конеч- ная точка Мнемони- ческое обо- значение Макси- мальный размер Макси- мальное количество банков DMA Тип
0 РЕРО 64 байта 1 Нет Управление
1 РЕР1 64 байта 2 Есть Изохронные/Масси- вы/По прерыванию
2 РЕР2 64 байта 2 Есть Изохронные/Масси- вы/По прерыванию
3 РЕРЗ 64 байта 2 Есть Изохронные/Масси- вы/По прерыванию
4 РЕР4 64 байта 2 Есть Изохронные/Масси- вы/По прерыванию
5 РЕР5 256 байт 2 Есть Изохронные/Масси- вы/По прерыванию
6 РЕР6 256 байт 2 Есть Изохронные/Масси-
Блок-схема модуля USB показана на рис. 26.1.
Контроллер USB представляет собой аппаратное устройство, обеспечи-
вающее доступ через интерфейс USB к массиву данных, хранимому в двух-
портовой оперативной памяти (DPRAM).
Контроллер USB требует для своей работы синхросигнала с частотой
48 МГц ± 0,25%, который является универсальным синхросигналом USB,
генерируемым в менеджере питания с помощью одной из систем ФАПЧ.
Синхросигнал 48 МГц используется, чтобы генерировать синхросигналы
с частотами 12 МГц для полноскоростного режима или 1,5 МГц для низ-
коскоростного режима, принимать через шину USB дифференциальные
данные, а также передавать данные в соответствующем скоростном режиме
USB-устройства.
Табл. 26.2. Пример конфигурации каналов/конечных точек с использова-
нием всего объема DPRAM
Канал/конечная точка Мнемоническое обозначение Максимальный размер Количество банков
0 РЕРО 64 байта 1
1 РЕР1 64 байта 2
2 РЕР2 64 байта 2
3 РЕРЗ 64 байта 1
4 РЕР4 64 байта 1
5 РЕР5 256 байт 1
6 РЕР6 256 байт 1
Рис. 26.1. Блок-схема модуля USB
В зависимости от операционного режима модуля USB (только устрой-
ство, редуцированный хост или режим OTG) и источника питания модуля
(питание от шины или автономное) возможны различные способы постро-
ения прикладных схем включения USB. Возможные варианты прикладных
схем показаны на рис. 26.2—рис. 26.4.
Рис. 26.2. Режим устройства модуля USB с питанием от шины
Рис. 26.3. Режим устройства модуля USB с автономным питанием
Описание сигналов, относящихся к модулю USB, приведено
в табл. 26.3.
Линии USB_VBOF и USB_ID мультиплексированы с линиями кон-
троллера GPIO и могут быть также мультиплексированы с линиями дру-
гих периферийных устройств. Чтобы использовать их функции, связанные
с USB, необходимо сначала соответствующим образом сконфигурировать
контроллер GPIO. Кроме того, если используется линия USB_ID, контрол-
лер GPIO должен быть сконфигурирован так, чтобы включить встроенный
подтягивающий к «плюсу» питания резистор на этой линии.
Если линии USB_VBOF или USB_ID не используются приложением,
то соответствующие им линии могут использоваться для других целей кон-
троллером GPIO или другими периферийными устройствами.
Перед использованием USB необходимо гарантировать, что генерация
универсального синхросигнала USB (USB GCLK) с частотой 48 МГц раз-
решена в менеджере питания.
К интерфейсу USB подключена линия прерывания, соединенная с кон-
троллером прерываний. Чтобы обрабатывать прерывания от USB, контрол-
лер прерывания должен быть предварительно сконфигурирован.
Рис. 26.4. Режим хоста и OTG модуля USB
Табл. 26.3. Описание сигналов модуля USB
Имя вывода Описание вывода Тип вывода Активный уровень
USB_VBOF USB VBus On/Off: порт управления питанием шины Выход Инверсный к сигналу VBUSPO
VBUS VBus: порт наблюдения за питанием шины Вход Высокий
D- Data-: порт дифференциальной отрицательной линии данных Вход/ Выход N/A
D+ Data+: порт дифференциальной положительной линии Вход/ Выход N/A
данных
USBJD USB Identification: идентификационный порт разъема Вход Низкий: подключен разъем Mini-A. Высокий (Z-состояние): под- ключен разъем Mini-B
26.2. Функциональное описание
26.2.1. Общие операции USB
После аппаратного сброса по умолчанию USB-контроллер отключен. Ког-
да его работа разрешается, он начинает функционировать или в режиме
устройства, или в режиме хоста согласно детектированному значению
идентификатора (ID).
Если вывод USB_ID не подключен к общему проводу, то бит иденти-
фикатора оказывается аппаратно установленным (встроенный подтягива-
ющий к «плюсу» питания резистор на линии USB_ID в контроллере GPIO
нужно включить), и USB-контроллер переходит в режим устройства.
Если вывод USB_ID подключен к общему проводу, то бит идентифи-
катора оказывается аппаратно сброшенным, и USB-контроллер переходит
в режим хоста.
Возможные состояния USB-контроллера иллюстрируются на рис. 26.5.
После аппаратного сброса, USB-контроллер находится в состоянии
сброса. Это состояние характеризуется следующими особенностями:
• макроядро USB отключено (USBE = 0);
• синхронизация макроядра остановлена, чтобы минимизировать по-
требляемую мощность (FRZCLK = 1);
• кнопочный интерфейс находится в режиме приостановки;
• внутренние регистры режимов устройства и хоста сброшены;
• память DPRAM не сброшена и доступна;
• идентификатор и VBUS-биты, доступные только для чтения, отра-
жают состояния линий входов USB_ID и VBUS;
Рис. 26.5. Возможные состояния USB-контроллера
• в битовые поля OTGPADE, VBUSPO, FRZCLK, USBE, UIDE, UI-
MOD и LS может быть произведена программная запись, с тем
чтобы сконфигурировать кнопочный интерфейс и скорость перед
включением макроядра USB, однако эти значения вступят в силу
только после включения макроядра.
После установки бита USBE USB-контроллер переходи в режим устрой-
ства или хоста в неактивном состоянии. USB-контроллер может быть от-
ключен в любое время путем программного сброса бита USBE. Фактиче-
ски, сброс USBE действует как аппаратный сброс, за исключением того,
что значения полей OTGPADE, VBUSPO, FRZCLK, UIDE, UIMOD и LS
при этом не сбрасываются.
26.2.1.1. Прерывания от USB
Как уже говорилось, для интерфейса USB назначен один вектор прерыва-
ния. На рис. 26.6 показана структура системы прерываний от USB.
Имеются два вида общих прерываний, связанных с USB-контроллером:
прерывания обработки, т. е. вызванные процессами, связанными с обра-
боткой, и прерывания исключений, т. е. вызванные ошибками (не связаны
с исключениями ЦПУ).
Обработка генерирует следующие прерывания:
• прерывание изменения идентификатора ID (IDTI);
• прерывание изменения VBus (VBUSTI);
• прерывание SRP (SRPI);
• прерывание по смене ролей (ROLEEXI).
Исключения генерируют следующие прерывания:
• прерывание ошибки VBus (VBERRI);
• прерывание ошибки разъема типа В В-Connection (BCERRI);
• прерывание ошибки HNP (HNPERRI);
• прерывание по таймауту приостановки (STOI).
USBCON IDTE
USBCON VBUSTE
USBSTA SRPI
USBSTA VBERRI
USBSTA BCERRI
USBSTA ROLEEXI
USBSTA HNPERRI
USBSTA STOI —ГЛ___________
USBCON STOE
Общие прерывания
от USB
UESTAX TXINI —ГЛ
UECONX TXINE
UESTAX RXOUTI —ГЛ
C^UECONX RXOUTE
UESTAX RXSTPI —ГЛ_________________
^UECONX RXSTPE
UESTAX UNDERFI —ГЛ
C=^UECONX UNDERFE
UESTAX NAKOUTI —ГЛ
£=UECONX NAKOUTE
UESTAX NAKINI —ГЛ________________
UECONX NAKINE
UESTAX OVERFI —ГЛ_________________
UECONX OVERFE
UESTAX STALLED! —ГЛ________________
VlECONX STALLEDE
UESTAX CRCERRI —ГЛ_________________
UECONX CRCERRE
UESTAX SHORTPACKET —ГЛ_________________
UECONX SHORTPACKETE
UESTAX NBUSYBK —ГЛ_________________
C=UECONX NBUSYBKE
UDINTE SUSPE
UDINT SOF —ГЛ
C= UDINTE SOFE
_ uuinicvnoi ----1 A.
Прерывания от U=£|
конечной точки X
USB-устройства
«-=L
UDINTE EORSTE
UDINTE WAKEUPE
UDDMAX.STATUS EOT.STA —ГЛ____________________________
UDDMAX.CONTROL EOT.IRQ.EN
UDDMAX.STATUS EOCH.BUFF.STA —ГЛ
UDDMAX.CONTROL EOBUFFJRQ.EN
UDDMAX.STATUS DESC.LD.STA —ГЛ___________________________
UDDMAX.CONTROL DESC.LD.IRQ.EN
Прерывания от
канала X DMA
USB-устройства
«-= UDINTE EORSME
UDINTUPRSM —ГЛ________________
UDINTE UPRSME
UDINTE EPXINTE
•UDINTDMAXINT —ГЛ_________________
UDINTE DMAXINTE
Прерывания от
USB-устройства
Прерывания
от USB
UPSTAX RXJ Nl —ГЛ
Е=иРСОНХ RXINE
UPSTAX TXOUTI —ГЛ______________
C^UPCONXTXOUTE
UPSTAX TXSTPI —ГЛ_____________
I——UPCONX TXSTPE
UPSTAX UNDERFI —ГЛ
1—“\jPCONX UNDERFIE
UPSTAX PERRI —ГЛ______________
VlPCONX PERRE
UPSTAX NAKEDI —ГЛ______________
°=иРСОНХ NAKEDE
UPSTAX OVERFI —ГЛ__________________
^UPCONX OVERFIE
UPSTAX RXSTALLDI —ГЛ_________________
E^UPCONX RXSTALLDE
UPSTAX CRCERRI —ГЛ_______.__________
C^UPCONXCRCERRE
UPSTAX SHORTPACKETI —ГЛ__________________
UPCONX SHORTPACKETIE
UPSTAX NBUSYBK —ГЛ
UPCONX NBUSYBKE
UHDMAX.STATUS EOT.STA
UHDMAX.STATUS EOCH.BUFF.STA
UHDMAX.CONTROL EOT.IRQ.EN
UHDMAX.STATUS DESC.LD.STA
UHINTDCONNI —ГЛ
C=UHINTE DCONNIE
UHINTDDISCI —ГЛ______________
UHINTE DDISCIE
UHINTRSTI —ГЛ
Cb^UHINTE RSTIE
UHINTRSMEDI —ГЛ——____________
UHINTE RSMEDIE
UHINTRXRSMI —ГЛ______________
C^UHINTE RXRSMIE
UHINTHSOFI —ГЛ _____________
....... , ^=UHINTE HSOFIE
ЗДмт.нщир;>-гл_______________
UHINTE HWUPIE
— UHINT PXINT —ГЛ ____________
Cb^UHINTE PXINTE
------------UHINT DMAXINT —ГЛ.____________
USES? сЛдатвомлхитЕ
Прерывания от
канала X
USB-хоста
UHDMAX.CONTROL EOBUFFJRQ.EN
UHDMAX.CONTROL DESC.LD.IRQ.EN
Прерывания
£ 'J > x Асинхронные источники прерывания
Рис. 26.6. Структура системы прерываний от USB
26.2.1.2. Режимы питания USB
Когда МК находится в режиме выполнения программы, все его синхросиг-
налы могут работать, включая синхросигнал USB.
В нерабочем режиме МК (Idle) работа ЦПУ приостановлена и тактовый
сигнал ЦПУ также остановлен.- МК «пробуждается» при любом прерыва-
нии от USB.
В режиме Frozen модуль USB функционирует так же, как и в нера-
бочем режиме, за исключением того, что модуль шины HSB остановлен
и поэтому механизм DMA USB, который является ведущим для шины
HSB, не может использоваться. По этой причине механизм DMA USB
должен быть остановлен перед переходом в режим Frozen, чтобы избе-
жать его ошибочного поведения. МК «пробуждается» при любом пре-
рывании от USB.
В режимах Standby, Stop и Static модуль USB функционирует так
же, как и в режиме Frozen, за исключением того, что универсальный
сИНхросигнал USB и другие синхросигналы остановлены, поэтому ма-
кроядро USB не функционирует. Никакое прерывание USB не может
«пробудить» МК в этих режимах, даже асинхронные источники пре-
рывания.
В нормальном режиме и в режимах Idle и Frozen макроядро USB мо-
жет быть остановлено путем установки бита FRZCLK, чтобы уменьшить
потребляемую мощность. Программное обращение к нижеперечисленным
элементам возможно только нормальном в режиме:
• битовые поля OTGPADE, VBUSPO, FRZCLK, USBE, UIDE, UI-
MOD и LS;
• память DPRAM (через регистры USB_FIFOX_DATA, но не через
передачу по шине USB).
Кроме того, когда бит FRZCLK установлен, прерывание от USB могут
вызвать только асинхронные источники прерывания:
• прерывание изменения идентификатора ID (IDTI);
• прерывание изменения VBus (VBUSTI);
• прерывание по «пробуждению» (WAKEUP);
• прерывание по «пробуждению» хоста (HWUPI).
В периферийном режиме USB (Suspend) бит UDINT.SUSP указывает,
что линия USB находится в приостановленном состоянии. В этом слу-
чае приемопередатчик данных USB автоматически переходит в состояние
приостанови, чтобы уменьшить энергопотребление.
26.2.1.3. Управление скоростью USB
Когда интерфейс USB находится в режиме устройства, выбор скорости
(полная/низкая) зависит от того, какая из линий D+ или D— подтянута че-
рез встроенный резистор к «плюсу» питания. Бит LS позволяет подключать
встроенный резистор к линии D+ (полноскоростной режим — full-speed)
vbusQ
d+Q
d-Q
LIDCON.DETACH
UDCON.LS
Рис. 26.7. Выбор скорости в режиме устройства USB
или к линии D- (медленноскоростной режим — low-speed). Бит LS должен
быть сконфигурирован прежде, чем производится подключение внешнего
устройства, что может быть сделано путем сброса бита DETACH. После
сброса по умолчанию бит DETACH имеет значение 1.
Выбор скорости в режиме устройства USB иллюстрируется рис. 26.7.
Когда интерфейс USB находится в режиме хоста, встроенные подтяги-
вающие резисторы подключены к обеим линиям D+ и D—, а интерфейс
USB детектирует скорость подключенного к хосту внешнего устройства,
которая индицируется в битовом поле SPEED.
26.2.1.4. Управление DPRAM
Каналы и конечные точки USB могут быть распределены в возрастающем
порядке (от канала/конечной точки 0 до последнего распределяемого ка-
нала/конечной точки). Программа должна конфигурировать их в том же
самом порядке.
Распределение канала/конечной точки ki начинается, когда программа
устанавливает ее бит ALLOC. После этого аппаратные средства распре-
деляют область памяти в DPRAM, находящуюся между ki—1 и ki+1 ка-
налами/конечными точками. При этом происходит наложение на область
памяти канала/оконечной точки ki+1, и содержащиеся там данные теря-
ются. Следующие каналы/конечные точки (начиная с ki+2) при этом не
затрагиваются.
Отключение канала (PENX = 0) или конечной точки (EPENX = 0)
не сбрасывает ни его бит ALLOC, ни его текущую конфигурацию (поля
РВК/ЕРВК, PSIZE/EPSIZE, PTOKEN/EPDIR, PTYPE/EPTYPE, PEP-
NUM, INTFRQ). Для освобождения области памяти, занимаемой от-
ключенным каналом/конечной точкой, программа должна сбросить его
бит ALLOC. В этом случае область памяти канала/конечной точки ki+1
U(P/E)RST (E)PENX = 1
U(P/E)CFGX ALLOC = 1
Каналы/конечные точки
0..5
Активизированы
Канал/конечная точка 3
Отключена
Канал/конечная точка 3 Канал/конечная точка 3
Освобождение памяти
Активизирована
Рис. 26.8. Типичный пример распределения и реорганизации DPRAM
сдвигается на освободившееся место, а данные из этой области теряются.
Следующие каналы/конечные точки (начиная с ki+2) при этом не затра-
гиваются.
Типичный пример распределения и реорганизации DPRAM иллюстри-
руют диаграммы, изображенные на рис. 26.8.
Комментарии к примеру.
• Сначала каналы/конечные точки от 0 до 5 разрешаются, конфигу-
рируются и распределяются в возрастающем порядке. Каждый ка-
нал/конечная точка имеет свою область памяти в DPRAM.
• Если канал/конечная точка 3 отключается программой, то его па-
мять сохраняется распределенной.
• Чтобы освободить эту память, бит ALLOC канала/конечной точки 3
сбрасывается программой. При этом область памяти канала/конеч-
ной точки 4 сдвигается вниз на освободившееся место, но область
канала/конечной точки 5 при этом не затрагивается.
• Наконец, если программа реконфигурирует канал/конечную точ-
ку 3 с большим, чем ранее, размером, то контроллер распределяет
под нее область памяти, расположенную после области памяти
канала/конечной точки 2, и автоматически сдвигает вверх область
памяти канала/конечной точки 4. При этом область памяти кана-
ла/конечной точки 5 не двигается, поэтому возникает конфликт
памяти в виде перекрытия областей памяти каналов/конечных
точек 4 и 5. Данные этих каналов/конечных точек оказываются
потерянными.
Примечания к комментариям.
• Данные канала/конечной точки 0 не могут быть потеряны описан-
ным выше образом (кроме как в случае, если ее область памяти
освобождается), поскольку распределение памяти и ее освобожде-
ние могут затронуть только каналы/конечные точки с более стар-
шими номерами.
• Дезактивация и последующая активация одного и того же канала/
конечной точки с той же самой конфигурацией временно изменяют
только значение указателя в контроллере DPRAM и размер области
памяти, отведенной для этого канала/конечной точки, но ничего
не изменяют в самой DPRAM. По этой причине конечные точки
с более старшими номерами после указанных операций не изме-
няют своего местоположения в памяти, а их данные сохраняются,
если для них не производились запись или чтение во время дезак-
тивации и последующей активации младшего по отношению к ним
канала/конечной точки.
• Когда программа устанавливает бит ALLOC, бит CFGOK автома-
тически устанавливается только в том случае, если сконфигури-
рованные размер и количество банков корректны по отношению
к их максимальным разрешенным значениям для конечной точки
и к максимальному размеру буфера FIFO (т. е. размеру DPRAM).
При этом логика установки бита CFGOK не учитывает конфликты
распределения памяти.
Рис. 26.9. Поведение кнопочного интерфейса USB
26.2.1.5. Поведение кнопочного интерфейса
Поведение кнопочного интерфейса USB показано на рис. 26.9.
• В неактивном состоянии МК (Idle) кнопочный интерфейс перехо-
дит в режим потребления малой мощности.
• В активном состоянии МК кнопочный интерфейс функционирует.
Рис. 26.10 иллюстрирует события, приводящие к изменению состояния
кнопочного интерфейса.
Флаг прерывания от приостановки (SUSP) автоматически устанавли-
вается, а флаг прерывания от «пробуждения» (WAKEUP) автоматически
сбрасывается, когда модуль USB обнаруживает на шине состояние «при-
остановки». Это событие автоматически переводит кнопочный интерфейс
USB в неактивное состояние (Idle). Обнаружение события, способного
вывести кнопочный интерфейс из неактивного режима, автоматически
устанавливает бит WAKEUP, сбрасывает бит SUSP и «пробуждает» кно-
почный интерфейс. Кроме того, кнопочный интерфейс переходит в неак-
тивное состояние, если макроядро USB отключено или если установлен
бит DETACH. Возвращение кнопочного интерфейса в активное состояние
происходит, когда USBE = 1 и DETACH = 0.
SUSP
Детектирована
приостановка
Аппаратный сброс при "пробуждении"
WAKEUP
Состояние PAD
Активный режим
Программный сброс для подтверждения
прерывания
Активный режим
Рис. 26.10. События, приводящие к изменению состояния кнопочного ин-
терфейса
26.2.1.6. Настройка таймеров OTG
Пользовательская программа имеет возможность дополнительно настроить
работу некоторых таймеров OTG с помощью битовых полей TIMPAGE и TIM-
VALUE. Поле TIMPAGE используется, чтобы выбрать таймер OTG, к кото-
рому требуется обратиться, а поле TIMVALUE указывает значение тайм-аута
выбранного таймера. Поля TIMPAGE и TIMVALUE доступны для чтения
и записи. Перед их записью программа должна разблокировать доступ для
записи путем установки бита UNLOCK. Это не требуется при доступе для
чтения, кроме как в случае доступа к полю TIMPAGE, если в него необходимо
сделать запись, чтобы прочитать поле TIMVALUE другого таймера OTG.
Возможные значения битовых полей TIMPAGE и TIMVALUE показа-
ны в табл. 26.4.
Табл. 26.4. Настройка таймеров OTG
TIMVALUE TIMPAGE
00b: Тайм-аут AwaitVrise 01b: Тайм-аут VbBusPulsing 10b: Тайм-аут PdTmOutCnt lib: Тайм-аут SRPDetTmOut
00b: 20 mc 15 mc 93 mc 10 mc
01b: 50 mc 23 mc 105 mc 100 mc
10b: 70 mc 31 mc 118 mc 1 MC
11b: 100 mc 40 mc 131 mc 11 MC
26.2.1.6 . Обнаружение подключения внешнего устройства
Подключение к модулю USB внешнего устройства детектируется логикой
USB с помощью кнопочного интерфейса VBUS. На рис. 26.11 показана
внутренняя схема детектора подключения.
Рис. 26.11. Внутренняя схема детектора подключения к USB внешнего
устройства
Логика управления кнопочного интерфейса VBUS выводит два сигнала:
• сигнал Session_valid, имеющий высокий уровень, когда напряжение
на ножке кнопки VBUS больше или равно 1,4 В;
• сигнал Va_Vbus_valid, имеющий высокий уровень, когда напряже-
ние на ножке кнопки VBUS больше или равно 4,4 В.
В режиме устройства состояние бита VBUS следует за состоянием вы-
вода компаратора Session_valid:
• устанавливается, когда напряжение на ножке кнопки VBUS больше
или равно 1,4 В;
• сбрасывается, когда напряжение на ножке кнопки VBUS мень-
ше 1,4 В.
В режиме хоста состояние бита VBUS следует за состоянием гистерези-
са, основанного на значениях сигналов Session_valid и Va_Vbus_valid:
• устанавливается, когда напряжение на ножке кнопки VBUS больше
или равно 4,4 В;
• сбрасывается, когда напряжение на ножке кнопки VBUS меньше
1,4 В.
Прерывание по перепаду VBus (VBUSTI) генерируется при каждом пе-
репаде бита VBUS. Бит VBUS будет меняться описанным выше образом
вне зависимости от того, включено ли макроядро USB или нет.
26.2.1.7 . Обнаружение идентификатора (ID)
Схема, изображенная на рис. 26.12, иллюстрирует, как детектируются пере-
пады на линии идентификатора (ID).
Режим USB (режим устройства или хоста) может быть детектирован
или с помощью ножки USBJD, или путем программного опроса бита UI-
MOD с учетом значения бита UIDE. Это позволяет использовать ножку
USB_ID как универсальную линию ввода-вывода, даже когда интерфейс
USB разрешен.
По умолчанию для ножки USB_ID выбрана ее периферийная функция
(UIDE = 1), и макроядро USB находится в режиме устройства (ID = 1), что
соответствует случаю, когда разъем Mini-A к модулю USB не подключен,
а подключен разъем Mini-B или вообще не подключен никакой разъем.
Рис. 26.12. Внутренняя схема детектора перепадов идентификатора (ID)
В этом случае состояние ножки USB_ID сохраняется в высоком уровне за
счет встроенного подтянутого к «плюсу» питания резистора контроллера
GPIO (который нужно включить, если используется USB_ID).
Прерывание по изменению идентификатора (IDTI) генерируется по
каждому перепаду бита идентификатора, т. е. когда подключается или от-
ключается разъем Mini-A (в режиме хоста). Этого не происходит, когда
подключается или отключается разъем Mini-B (режим устройства). Бит ID
будет меняться описанным выше образом вне зависимости от того, вклю-
чено ли макроядро USB или нет.
26.2.2. Операции USB-устройства
В режиме устройства USB-контроллер поддерживает полно-/низкоскорост-
ной режимы (FS/LS) передачи данных. В дополнение к заданной по умол-
чанию конечной точке управления поддерживаются еще шесть конечных
точек, которые могут быть сконфигурированы как изохронные, массивы
или по прерыванию, как показано в табл. 26.1. Режим устройства стартует
в неактивном состоянии (Idle), так что энергопотребление кнопочного ин-
терфейса уменьшено до минимума.
26.2.2.1. Включение питания и сброс
Диаграмма, изображенная на рис. 26.13, описывает возможные состояния
USB-контроллера в режиме устройства.
После аппаратного сброса USB-контроллер в режиме устройства нахо-
дится в состоянии сброса. В этом состоянии USB-контроллер характеризу-
ется следующими особенностями:
• синхросигнал макроядра остановлен, чтобы минимизировать по-
требляемую мощность (FRZCLK = 1);
• внутренние регистры режима устройства сброшены;
• банки памяти конечной точки освобождены;
• ни линия D+, ни линия D— не подтянуты к «плюсу» питания
(DETACH = 1). Линия D+ или линия D— будут подтянуты к «плю-
RESET
Рис. 26.13. Возможные состояния USB-контроллера в режиме устройства
су» питания в соответствии с выбранной скоростью, как только бит
DETACH будет сброшен, а вывод VBus подключен, как было описа-
но в разделе «Управление скоростью USB».
Когда макроядро USB включается (USBE = 1) в режиме устройства
(ID = 1), то сразу переходит в неактивное состояние с минимальной по-
требляемой мощностью. При этом не требуется активизация синхросиг-
нала USB.
Режим устройства контроллера USB может быть отключен и сброшен
в любое время путем отключения макроядра USB (USBE = 0) или путем
перехода в режим хоста (ID = 0).
26.2.2.2. Сброс USB
Сброс шины USB управляется аппаратно. Он инициализируется в USB-
устройстве при его подключении к хосту. Когда сброс USB детектируется
логикой устройства, USB-контроллер выполняет следующие операции.
• Все конечные точки отключаются, кроме заданной по умолчанию
конечной точки управления.
• Заданная по умолчанию конечная точка управления сбрасывается.
• Последовательность переключателя данных заданной по умолча-
нию конечной точки управления сбрасывается.
• В конце процесса сброса генерируется прерывание по окончанию
сброса (EORST).
26.2.2.3. Сброс конечной точки
Конечная точка может быть сброшена в любое время путем установки ее
бита EPRSTX в регистре UERST. Это рекомендуется делать перед началом
использования конечной точки после аппаратного сброса или когда при-
нимается сброс по шине USB. При этом сбрасываются следующие узлы
и модули:
• внутренний конечный автомат этой конечной точки,
• приемный и передающий банк счетчиков буфера FIFO,
• все регистры этой конечной точки (UECFGX, UESTAX, UECONX),
кроме битовых полей ее конфигурации (ALLOC, ЕРВК, EPSIZE,
EPDIR, EPTYPE) и битового поля последовательности переключа-
теля данных (DTSEQ). Необходимо заметить, что источники пре-
рывания, расположенные в регистре UESTAX, не сбрасываются,
когда принимается сброс по шине USB.
Конфигурация конечной точки при этом остается активной, и сама ко-
нечная точка все еще остается включенной.
Сброс конечной точки может быть связан с очисткой последователь-
ности переключателя данных как ответом на запрос CLEAR_FEATURE
USB. Это может быть достигнуто установкой бита RSTDT (путем установ-
ки бита RSTDTS).
В конце процедуры сброса программа должна сбросить бит EPRSTX,
чтобы завершить операцию сброса и начать использование буфера FIFO.
Рис. 26.14. Алгоритм активации конечной точки
26.2.2.4. Активация конечной точки
Конечная точка поддерживается неактивной и сбрасывается, пока она от-
ключена (EPENX = 0). Битовое поле последовательности переключателя
данных (DTSEQ) также сбрасывается. Чтобы активизировать конечную
точку, необходимо выполнить алгоритм, который иллюстрируется блок-
схемой, изображенной на рис. 26.14.
Пока конечная точка не будет правильно сконфигурирована (CFGOK =
= 0), USB-контроллер не будет производить подтверждение пакетов, пере-
даваемых хостом для этой конечной точки.
Бит CFGOK устанавливается аппаратно только в том случае, если скон-
фигурированные размер и количество банков корректны по отношению к их
максимальным допустимым значениям для конечной точки (см. табл. 26.2)
и к максимальному размеру буфера FIFO (т. е. размеру DPRAM).
26.2.2.5. Установка адреса
Адрес USB-устройства устанавливается согласно USB-протоколу в следую-
щем порядке.
• После всех видов сбросов, адрес USB-устройства — 0.
• Хост начинает транзакцию установки (SETUP) с запроса SET_
ADDRESS(addr).
• Программа делает запись этого адреса в битовое поле UADD, остав-
ляя бит ADDEN сброшенным, так что действующий адрес все еще
остается равным 0.
• Программа посылает пакет IN нулевой длины от конечной точки
управления.
• Программа разрешает записанный хостом адрес USB-устройства
путем установки бита ADDEN. Как только адрес USB-устройства
сконфигурирован, контроллер начинает фильтровать пакеты, чтобы
принимать только те из них, которые содержат адрес, сохраненный
в UADD.
Биты UADD и ADDEN не должны записываться программой одновре-
менно, а сбрасываются они аппаратно в следующих случаях:
• при аппаратном сбросе,
• когда макроядро USB отключено (USBE = 0),
• когда детектируется сброс USB.
Когда бит UADD или бит ADDEN сброшен, используется заданный по
умолчанию адрес устройства, равный 0.
26.2.2.6. Приостановка и «пробуждение»
Когда неактивное состояние шины USB детектируется логикой USB-
контроллера в течение 3 мс, USB-контроллер генерирует прерывание от
приостановки (SUSP). В этом случае программа может установить бит
FRZCLK, чтобы уменьшить потребляемую мощность. МК может также
программно перейти в «спящий» режим Idle или Frozen, чтобы понизить
потребляемую мощность.
Чтобы выйти из режима приостановки, программа должна ждать преры-
вания от «пробуждения» (WAKEUP), которое генерируется, когда детекти-
руется событие, вызывающее «пробуждение», а затем сбросить FRZCLK.
Поскольку прерывания от «пробуждения» генерируются, когда детек-
тируется событие, вызывающее «пробуждение», это может произойти, ког-
да USB-контроллер находится или не находится в режиме приостановки.
Прерывания SUSP и WAKEUP, таким образом, независимы друг от друга
за исключением того, что флаг одного из них сбрасывается аппаратно, ког-
да другой устанавливается.
26.2.2.7. Удаленное «пробуждение»
Удаленный запрос «пробуждения» (также известный как резюме Upstream) —
единственный запрос, который устройство может послать по собственной
инициативе, однако устройству необходимо заранее разрешить это запро-
сом DEVICE_REMOTE_WAKEUP от хоста. Происходит это в следующем
порядке.
• Сначала USB-контроллер должен детектировать состояние прио-
становки на шине, т. е. удаленный запрос «пробуждения» можно
послать только после того, как будет сгенерировано прерывание
SUSP.
• Программа в этом случае может установить бит RMWKUP, что-
бы послать резюме Upstream хосту для удаленного «пробуждения».
Это будет автоматически сделано USB-контроллером после 5 мс
бездеятельности на шине USB.
• Когда USB-контроллер посылает резюме Upstream, генерируется
прерывание от резюме Upstream (UPRSM) и бит SUSP сбрасывает-
ся аппаратно.
• Бит RMWKUP сбрасывается аппаратно в конце резюме Upstream.
• Если контроллер обнаруживает корректный сигнал «окончание ре-
зюме» от хоста, то генерируется прерывание от окончания резюме
(EORSM).
26.2.2.8. Запрос останова (STALL)
Для каждой конечной точки управление остановом (STALL) реализуется
с использованием следующих механизмов:
• бит запроса STALL (STALLRQ), чтобы инициализировать запрос
STALL;
• прерывание STALL (STALLEDI), генерируемое, когда посылается
STALL.
Чтобы ответить на последовавший запрос STALL, должен быть уста-
новлен бит STALLRQS, задающий функцию STALLRQ. Все последующие
запросы будут отвергаться (бит RXOUTI не будет устанавливаться), в том
числе и посылки STALL, пока бит STALLRQ будет в сброшенном состоя-
нии. Этот бит сбрасывается аппаратно, когда получен новый пакет STALL
(для конечных точек управления), или программно, когда программа уста-
навливает бит STALLRQC.
Каждый раз, когда происходит STALL, в USB-контроллере устанавли-
вается флаг STALLEDI и генерируется прерывание EPXINT.
26.2.2.9. Особенности конечных точек управления
Если конечной точкой управления, которая запрашивает STALL, принят
пакет SETUP, то генерируется прерывание по приему SETUP (RXSTPI)
и STALLRQ, а бит STALLEDI сбрасывается аппаратно. Пакет SETUP дол-
жен быть подтвержден.
Указанный механизм упрощает управление процессом нумерации. Если
команда не поддерживается или содержит ошибку, то программа запраши-
вает STALL и может возвратиться к основной задаче, ожидая следующего
запроса SETUP.
Механизм повторения имеет приоритет над установлением связи STALL.
Установление связи STALL посылается, если установлен бит STALLRQ
и если не требуется производить никакого повторения.
26.2.2.10. Управление конечными точками управления
Запросы SETUP всегда должны подтверждаться. Когда новый пакет SETUP
получен, генерируется прерывание по приему SETUP (RXSTPI), но не
прерывание по приему данных (RXOUTI). Биты FIFOCON и RWALL для
конечных точек управления являются незначащими, поэтому программа
никогда не использует их для этих конечных точек. При чтении эти биты
будут возвращать 0.
Управление конечными точками управления реализуется с использова-
нием следующих механизмов:
Рис. 26.15. Управление записью
• прерывание по приему SETUP (RXSTPI), которое генерируется, когда
новый пакет SETUP получен, и которое должно быть сброшено про-
граммно, чтобы подтвердить пакет и поместить его в свободный банк;
• прерывание по приему данных OUT (RXOUTI), которое генери-
руется, когда новый пакет OUT получен, и которое должно быть
сброшено программно, чтобы подтвердить пакет и поместить его
в свободный банк;
• прерывание от передачи данных IN (TXINI), которое генерируется,
когда текущий банк готов к приему нового пакета IN, и которое
должно быть сброшено программно, чтобы послать пакет.
Временные диаграммы, изображенные на рис. 26.15, иллюстрируют
управление транзакцией записи. Во время стадии состояния (на рисун-
ке — область STATUS) USB-контроллер не будет обязательно посылать
подтверждение (NAK) в первом маркере IN в следующих случаях:
• если программа знает точное количество дескрипторных байтов,
которые должны читаться, то в этом случае она может ожидать ста-
дию состояния и посылать пакет нулевой длины после следующего
маркера IN;
• если программа может читать байты и ждать прерывание NAK IN
(NAKINI), которое свидетельствует о том, что хост послал все бай-
ты и что транзакция находится теперь в стадии состояния.
Временные диаграммы, изображенные на рис. 26.16, иллюстрируют
управление транзакцией чтения. При USB-контроллер должен справляться
с одновременными запросами записи от ЦПУ и от USB-хоста.
Подтверждение установления связи NAK всегда генерируется первой
командой стадии состояния (на рисунке — область STATUS). Когда USB-
контроллер обнаруживает стадию состояния, все данные, записанные
ЦПУ, теряются и сброс TXINI не имеет никакого эффекта. При этом про-
грамма должна проверить, закончена ли передача или прием.
Повторная передача OUT всегда должна быть подтверждена (АСК).
При этом устанавливаются биты RXOUTI и TXINI. Обработку такой си-
туации производит следующий алгоритм:
set TXINI
wait for RXOUTI OR TXINI
if RXOUTI, then clear flag and return
if TXINI, then continue.
SETUP
Щина USB
RXSTPI
RXOUTI
TXINI
DATA
разрешение
записи USB-хосту
STATUS
разрешение Г
записи ЦПУ I
Рис. 26.16. Управление чтением
При получении пакета нулевой длины программа должна позаботиться
о том, чтобы счетчик байтов был сброшен.
26.2.2.11. Управление конечными точками IN
Пакеты IN посылаются USB-контроллером устройства в ответ на запросы
IN от хоста. Все данные могут быть записаны программно с подтвержде-
нием или не подтверждением заполнения банка.
Предварительно конечная точка должна быть сконфигурирована. Бит
TXINI устанавливается аппаратно одновременно с установкой FIFOCON,
когда текущий банк свободен. Это вызывает прерывание EPXINT, если
TXINE = 1.
Бит TXINI сбрасывается программно путем установки бита TXINIC,
чтобы подтвердить прерывание, что не оказывает никакого влияния на
буфер FIFO конечной точки.
В этом случае программа производит запись в буфер FIFO и сбрасы-
вает бит FIFOCON, чтобы позволить USB-контроллеру посылать дан-
ные. Если конечная точка IN составлена из множества банков, то произ-
водится также переключение на следующий банк. При этом биты TXINI
и FIFOCON модифицируются аппаратно в соответствии с состоянием
следующего банка. Бит TXINI будет всегда сбрасываться перед сбросом
FIFOCON.
Рис. 26.17. Операции конечной точки IN с одним банком данных
TXINI
SW
FIFOCON
запись данных ЦПУ
BANK О
DATA
(банк 0)
п
SW
I
“1
SW запись данных ЦПУ
J BANK 1
IN
DATA
(банк 1)
ЦПУ
BANKO
Рис. 26.18. Операции конечной точки IN с двумя банками данных
Бит RWALL устанавливается аппаратно, когда текущий банк не полон,
т. е. когда программа может записывать дальнейшие данные в буфер FIFO.
Временные диаграммы, изображенные на рис. 26.17, иллюстрируют
операции конечной точки IN с одним банком данных, а на рис. 26.18 —
с двумя банками данных.
Данные записываются программой в следующем порядке:
• когда банк пуст, биты TXINI и FIFOCON, установлены, триггеры
вызывают прерывание EPXINT, если TXINE = 1;
• программа подтверждает прерывание, сбрасывая TXINI;
• программа записывает данные в текущий банк, используя буфер FIFO
канала/конечной точки X. Запись производится в регистр данных
(USB_FIFOX_DATA) до записи всего фрейма данных или до запол-
нения банка (в последнем случае бит RWALL сбрасывается аппаратно,
а содержимое поля BYCT достигает размера конечной точки в байтах);
• программа позволяет USB-контроллеру послать содержимое банка
и переключиться на следующий банк путем сброса FIFOCON.
Если конечная точка использует несколько банков, то текущий банк
может быть записан программой, в то время как предыдущий банк чита-
Отключить прерывание TXINI
Аборт основан на том факте,
тот никакой банк не занят, т е ,
ничего не нужно посылать
Уничтожить последний
записанный банк
Ожидать конца процедуры
Рис. 26.19. Блок-схема алгоритма управления стадией «аборт>
ется хостом. Когда программа сбрасывает FIFOCON, следующий банк уже
может быть свободен, и бит TXINI устанавливается немедленно.
Переход в стадию «аборт» может быть произведен, когда в ходе ста-
дии IN получен пакет нулевой длины OUT. Чтобы уничтожить послед-
ний записанный банк, используется бит KILLBK. Для управления стадией
«аборт» производитель рекомендует применить алгоритм, блок-схема кото-
рого изображена на рис. 26.19.
26.2.2.12. Управление конечными точками OUT
Пакеты OUT посылает хост. Все данные могут читаться программой, ко-
торая подтверждает или не подтверждает банк, если он пуст. Конечная
точка предварительно должна быть сконфигурирована. Бит RXOUTI уста-
навливается аппаратно одновременно с битом FIFOCON, когда текущий
банк полон. Это вызывает прерывание EPXINT, если RXOUTE = 1. Чтобы
подтвердить прерывание, бит RXOUTI должен быть сброшен программно
путем установки бита RXOUTIC, что не оказывает никакого эффекта на
буфер FIFO конечной точки. Потом программа читает буфер FIFO и сбра-
сывает бит FIFOCON, чтобы обеспечит указание на свободный банк. Если
конечная точка составлена из множества банков, произойдет переключение
на следующий банк. Биты RXOUTI и FIFOCON модифицируются аппа-
ратно в соответствии с состоянием следующего банка. Бит RXOUTI будет
всегда сбрасываться перед сбросом FIFOCON.
Рис. 26.20. Операции конечной точки OUT с одним банком данных
Рис. 26.21. Операции конечной точки OUT с двумя банками данных
Бит RWALL будет устанавливаться аппаратно, когда текущий банк не пуст
т. е. когда программа может читать дальнейшие данные из буфера FIFO.
Временные диаграммы, изображенные на рис. 26.20, иллюстрируют
операции конечной точки OUT с одним банком данных, а на рис. 26.21 —
с двумя банками данных.
Данные читаются программой в следующем порядке:
• Когда банк полон, биты RXOUTI и FIFOCON устанавливаются.
Их установка является триггерами, вызывающими прерывание
EPXINT, если RXOUTE = 1;
• Программа подтверждает прерывание, сбрасывая RXOUTI;
• программа может читать счетчик байтов текущего банка в битовом
поле BYCT, чтобы знать, сколько байтов следует прочитать, вместо
того, чтобы опрашивать RWALL;
• программа читает данные из текущего банка, используя буфер FIFO
канала/конечной точки X. Чтение производится путем чтения ре-
гистра данных (USB FIFOX DATA) до прочтения всего фрейма
данных или до опустения банка (в последнем случае бит RWALL
сбрасывается аппаратно, а содержимое битового поля BYCT дости-
гает 0);
• программа освобождает банк и производит переключение на сле-
дующий банк путем сброса FIFOCON.
Если конечная точка использует несколько банков, текущий банк может
читаться программой, в то время как в следующий производится запись со
стороны хоста. Когда программа сбрасывает FIFOCON, следующий банк
может быть уже готов, и RXOUTI устанавливается немедленно.
Для изохронных конечных точек IN/OUT может иметь место ошибка
антипереполнения. Она вызывает прерывание антипереполнения (UN-
DERFI), которое является триггером прерывания EPXINT, если UNDER-
FE = 1.
Антипереполнение может произойти в течение стадии IN, если хост
пытается читать из пустого банка. В этом случае USB-контроллер автома-
тически посылает пакет нулевой длительности.
Антипереполнение не может произойти в течение стадии OUT во время
активности ЦПУ, так как программа может читать только в том случае,
если банк не пуст (RXOUTI = 1 или RWALL = 1). Однако антиперепол-
нение может также произойти в течение стадии OUT, если хост посылает
пакет, в то время как банк уже полон. Как правило, ЦПУ не может доста-
точно быстро обработать эту ситуацию и пакет теряется.
Антипереполнение не может произойти в течение стадии IN во вре-
мя активности ЦПУ, так как программа может производить запись только
в том случае, если банк не полон (TXINI = 1 или RWALL = 1).
Для всех типов конечных точек может иметь место ошибка переполне-
ния. Она вызывает прерывание переполнения (OVERFI), которое является
триггером прерывания EPXINT, если OVERFE = 1.
Переполнение может произойти в течение стадии OUT, если хост пыта-
ется записывать в банк, который является слишком маленьким для пакета.
Пакет подтверждается, а прерывание по приему данных (RXOUTI) генери-
руется, как будто никакое переполнение не произошло. Банк заполняется
начальными байтами пакета, которые в него входят.
Переполнение не может произойти в течение стадии IN во время ак-
тивности ЦПУ, так как программа может производить запись только в том
случае, если банк не полон (TXINI = 1 или RWALL - 1).
Для изохронных конечных точек может иметь место ошибка кон-
трольной суммы (CRC). Она вызывает генерацию прерывания от ошибки
CRC (CRCERRI), которое является триггером прерывания EPXINT, если
CRCERRE = 1.
Ошибка CRC может произойти в течение стадии OUT, если USB-
контроллер обнаруживает разрушенный принятый пакет. Пакет сохраня-
ется в банке, как будто никакая ошибка CRC не произошла (RXOUTI
установлен).
26.2.2.13. Прерывания USB-устройства
USB-устройство имеет систему прерываний, структура которой иллюстри-
руется блок-схемой, изображенной на рис. 26.6. Может быть два вида пре-
рываний USB-устройства: прерывания, генерируемые как часть процесса
нормальной обработки, и прерывания, генерируемые при исключениях,
т. е. ошибках (не связанны с исключениями ЦПУ).
Глобальные прерывания USB-устройства, связанные с обработкой:
• прерывание при приостановке (SUSP);
• прерывание при начале фрейма (SOF) без ошибки CRC в номере
фрейма (FNCERR = 0);
• прерывание по окончании сброса (EORST);
• прерывание при «пробуждении» (WAKEUP);
• прерывание от окончания резюме (EORSM);
• прерывание при резюме Upstream (UPRSM);
• прерывание от конечной точки X (EPXINT);
• прерывание от канала DMA X (DMAXINT).
Глобальные прерывания USB-устройства, связанные с исключениями:
• прерывание при начале фрейма (SOF) с ошибкой CRC в номере
фрейма (FNCERR = 1).
Прерывания конечной точки устройства, связанные с обработкой:
• прерывание по передаче данных IN (TXINI);
• прерывание по приему данных OUT (RXOUTI);
• прерывание по приему SETUP (RXSTPI);
• прерывание от короткого пакета (SHORTPACKET);
• прерывание от количества занятых банков (NBUSYBK).
Прерывания конечной точки устройства, связанные с исключениями:
• прерывание от антипереполнения (UNDERFI);
• прерывание при подтверждении (NAK) OUT (NAKOUTI);
• прерывание при подтверждении (NAK) IN (NAKINI);
• прерывание от переполнения (OVERFI);
• прерывание от останова STALL (STALLEDI);
• прерывание от ошибки CRC (CRCERRI);
Прерывания DMA, связанные с обработкой:
• прерывание по окончанию состояния передачи через USB (EOT
STA);
• прерывание по окончанию состояния буфера канала (ЕОСН
BUFF_STA);
• прерывание по загрузке дескриптора состояния (DESC_LD_STA).
Прерывания DMA, связанные с исключениями, отсутствуют.
26.2.3. Операции USB-хоста
26.2.3.1. Описание каналов
Для USB-контроллера в режиме хоста термин «канал» используется вме-
сто термина «конечная точка» (используемого в режиме устройства). Ве-
дущий канал соответствует конечной точке устройства, как показано на
рис. 26.22.
В режиме хоста USB-контроллер связывает канал с конечной точкой
устройства, рассматривая дескрипторы конфигурации устройства.
26.2.3.2. Включение питания и сброс
Возможные состояния USB-контроллера в режиме хоста иллюстрируются
блок-схемой, изображенной на рис. 26.23.
После аппаратного сброса USB-контроллер, работающий в режиме
хоста, находится в состоянии сброса. Когда макроядро USB включает-
ся (USBE = 1) в режиме хоста (ID = 0), его состояние в режиме хоста
становится неактивным (Idle). В этом состоянии USB-контроллер ждет
подключения к нему устройства. При этом он потребляет минимальную
мощность.
Кнопочный интерфейс USB должен быть также в неактивном состоя-
нии. Как только внешнее USB-устройство подключается к хосту, макроя-
дро USB переходит в состояние готовности, что, однако, не требует обяза-
тельной активации синхронизации USB.
Рис. 26.22. Коммуникационный поток USB
Рис. 26.23. Состояния USB-контроллера в режиме хоста
USB-контроллер переходит в состояние приостановки, когда в состо-
янии приостановки находится шина USB, т. е. когда хост не генерирует
фрейм начала. В этом состоянии USB-контроллер потребляет минималь-
ную мощность.
USB-контроллер в режиме хоста выходит из состояния приостановки при
старте генерации посылок «начало фрейма» (SOF) на линии шины USB.
26.2.3.3. Обнаружение хостом подключенного устройства
USB-устройство обнаруживается на шине USB-контроллером, работающим
в режиме хоста, когда линия D+ или линия D— шины перестает оставаться
в низком уровне, т. е. когда к линии D+ или к линии D— подключается
подтянутый к «плюсу» питания резистор. Чтобы сделать возможным обна-
ружение устройства, хост должен обеспечить подачу напряжения питания
для устройства на линию VBus, что достигается установкой бита VBUSRQ
(путем установки бита VBUSRQS).
Отключение от шины USB-устройства обнаруживается хостом, когда
и линия D+, и линия D— переходят в низкий уровень.
26.2.3.4. Сброс шины USB
USB-контроллер передает сброс шины USB, когда программа устанавли-
вает бит RESET. Когда происходит сброс шины USB, генерируется преры-
вание от посылки сброса (RSTI). В этом случае все каналы отключаются
и освобождаются.
Если до сброса шина находилась в состоянии приостановки (SOFE = 0),
USB-контроллер автоматически меняет его на состояние «резюме». При этом
генерируется прерывание от «пробуждения» хоста (HWUPI) и аппаратно
устанавливается бит SOFE, чтобы немедленно после сброса USB генериро-
вать посылки «начало фрейма» (SOF).
26.2.3.5. Сброс канала
Канал может быть сброшен в любой момент путем установки соответству-
ющего ему бита PRSTX в регистре UPRST. Сброс канала рекомендуется
производить перед его использованием после аппаратного сброса или по-
сле передачи сброса по шине USB. Сброс канала включает в себя сбросы
следующих узлов:
• внутренний конечный автомат этого канала;
• счетчики приемного и передающего банков буфера FIFO;
• все регистры этого канала (UPCFGX, UPSTAX, UPCONX), кроме
битовых полей его конфигурации (ALLOC, РВК, PSIZE, PTOKEN,
PTYPE, PEPNUM, INTFRQ) и битового поля DTSEQ.
После сброса канала его конфигурация остается активной, а сам канал
остается включенным.
Сброс канала может быть ассоциирован с очисткой последовательности
переключения данных. Эта операция может быть достигнута путем уста-
новки бита RSTDT (установки бита RSTDTS).
В заключение последовательности сброса программа должна сбросить
бит PRSTX, чтобы завершить операцию сброса и начать использование
буфера FIFO.
26.2.3.6. Активация канала
Канал может удерживаться в неактивном состоянии и состоянии сброса
как угодно долго, если он отключен (PENX = 0). Битовое поле последо-
вательности переключения данных (DTSEQ) при этом также находится
в сброшенном состоянии.
Включение канала
Конфигурирование канала.
- частота запросов прерывания,
- номер конечной точки;
-тип,
- маркер,
- размер;
- количество банков
Распределение сконфигурированных
банков DPRAM
Тестирование корректности
конфигурации канала
Рис. 26.24. Алгоритм активации канала USB
Для активации канала рекомендуется использовать алгоритм, блок-
схема которого приведена на рис. 26.24.
Пока канал правильно не конфигурирован (CFGOK = 0), USB-
контроллер через этот канал не сможет посылать пакеты для внешнего
USB-устройства. Бит CFGOK устанавливается аппаратно только в том слу-
чае, если сконфигурированные значения размера и заданного количества
банков корректны по сравнению с их максимальными допустимыми зна-
чениями для канала (см. табл. 26.1) и с максимальными допустимыми раз-
мерами буфера FIFO (т. е. размером DPRAM).
Как только канал корректно сконфигурирован (CFGOK = 1), только
битовые поля PTOKEN и INTFRQ могут быть изменены программно.
При этом поле INTFRQ не является значащим для каналов, не использую-
щих прерывания.
При старте нумерации программа получает дескриптор устройства, по-
сылая запрос GET_DESCRIPTOR USB. Этот дескриптор содержит значе-
ние максимального заданного по умолчанию размера пакета для конечной
точки управления (bMaxPacketSizeO), исходя из которого программа кор-
ректирует заданное по умолчанию значение этого параметра и далее пере-
дает пакеты этого заданного размера.
26.2.3.7. Установка адреса
Как только USB-устройство ответило на запрос хоста с используемым по
умолчанию адресом устройства, равным 0, хост назначает устройству но-
вый адрес. USB-контроллер хоста должен послать сброс USB-устройству,
а затем послать запрос установки (SETUP) SET_ADDRESS(addr) с новым
адресом устройства. Как только эта транзакция установки заканчивается,
программа записывает новый адрес в битовое поле HADDR. Все после-
дующие запросы во всех каналах будут выполняться с использованием уже
нового адреса.
Когда хост посылает сброс USB, битовое поле HADDR сбрасывается
аппаратно, а последующие запросы хоста будут выполняться с использова-
нием заданного по умолчанию адреса, равного 0.
26.2.3.8. Удаленное «пробуждение»
В режиме хоста USB-контроллер вводит состояние приостановки, когда
сбрасывается бит SOFE. Когда посылки «начало фрейма» (SOF) перестают
посылаться по шине USB, USB-устройство переходит в состояние приоста-
новки через 3 мс.
Устройство «пробуждает» хост путем посылки резюме Upstream (осо-
бенность удаленного «пробуждения»). Когда USB-контроллер хоста обна-
руживает наличие активности на шине USB, он генерирует прерывание
от «пробуждения» хоста (HWUPI). Если активное состояние шины со-
ответствует резюме Upstream (К-состоянию), то генерируется прерывание
по приему Upstream (RXRSMI). Программа должна сгенерировать резюме
Downstream в пределах временного интервала, равного 1 мс, и не менее чем
через 20 мс установить бит RESUME. Она принудительно устанавливает
бит SOFE перед установкой RESUME, чем вводит состояние готовности,
в противном случае, установка RESUME не будет иметь эффекта.
26.2.3.9. Управление каналами управления
Транзакция управления состоит из трех стадий:
• SETUP;
• данные (IN или OUT);
• состояние (OUT или IN).
Программа должна изменять маркер канала на каждой стадии. Для ка-
нала управления, и только для него, каждый маркер назначает определен-
ную начальную последовательность переключения данных:
• SETUP: DataO;
• IN: Datal;
• OUT: Datal.
26.2.3.10. Управление каналами IN
Пакеты IN посылаются USB-контроллером устройства в ответ на запросы
IN от хоста. Все данные могут читаться программой, которая подтверждает
или не подтверждает банк, если банк пуст. Предварительно канал должен
быть сконфигурирован.
Когда хост требует данные от устройства, его программа должна за-
ранее выбрать режим запроса IN с помощью бита INMODE. Этот выбор
имеет следующие особенности:
• когда бит INMODE сброшен, USB-контроллер выполнит (INRQ + 1)
запросов IN, прежде чем канал будет «закреплен», т. е. передача че-
рез него будет остановлен;
• когда бит INMODE установлен, USB-контроллер будет выполнять
запросы IN бесконечно, пока когда канал не будет «закреплен» йро-
граммно.
Генерация запроса IN начинается, когда с канала снимается «закрепле-
ние» (PFREEZE = 0). Бит RXINI устанавливается аппаратно одновременно
с битом FIFOCON, когда текущий банк полон. Это вызывает прерывание
PXINT, если RXINE = 1.
Рис. 26.25. Операции канала IN с одним банком данных
Рис. 26.26. Операции канала IN с двумя банками данных
Бит RXINI сбрасывается программно путем установки бита RXINIC,
чтобы подтвердить прерывание, что не оказывает никакого эффекта на
буфер FIFO канала. После этого программа читает из буфера FIFO и сбра-
сывает бит FIFOCON для переключения на свободный банк. Если канал
IN составлен из множества банков, то при этом также происходит пере-
ключение на следующий банк. Биты RXINI и FIFOCON модифицируются
аппаратно в соответствии с состоянием следующего банка. Бит RXINI бу-
дет всегда сбрасываться перед сбросом FIFOCON.
Бит RWALL устанавливается аппаратно, когда текущий банк не пуст, та-
ким образом, программа может читать дальнейшие данные из буфера FIFO.
Временные диаграммы, изображенные на рис. 26.25, иллюстрируют
операции канала IN с одним банком данных, а на рис. 26.26 — с двумя
банками данных.
26.2.3.11. Управление каналами OUT
Пакеты OUT посылает хост. Все данные могут быть записаны программой,
которая подтверждает или не подтверждает банк, если он полон. Предва-
рительно канал должен быть сконфигурирован и с него должно быть снято
«закрепление».
Бит TXOUTI устанавливается аппаратно одновременно с битом FIFO-
CON, когда текущий банк свободен. Это вызывает прерывание PXINT,
если TXOUTE = 1.
Бит TXOUTI должен быть сброшен программно путем установки бита
TXOUTIC, чтобы подтвердить прерывание, что не оказывает никакого эф-
Рис. 26.27. Операции канала OUT с одним банком данных
Рис. 26.28. Операции канала OUT с двумя банками данных без задержки
коммутации банков
фекта на буфер FIFO канала. После этого программа записывает в буфер
FIFO и сбрасывает бит FIFOCON, чтобы разрешить USB-контроллеру по-
сылать данные. Если канал составлен из множества банков, то происходит
также переключение на следующий банк. Биты TXOUTI и FIFOCON мо-
дифицируются аппаратно в соответствии с состоянием следующего банка.
Бит TXOUTI всегда будет сбрасываться перед сбросом FIFOCON.
Бит RWALL устанавливается аппаратно, когда текущий банк не полон,
т. е. когда программа может записывать дальнейшие данные в буфер FIFO.
Следует заметить, что если программа решает переключить USB-
контроллер в состояние приостановки путем сброса бита SOFE в то время
как банк готов к передаче, USB-контроллер автоматически выходит из это-
го состояния и посылает банк.
Временные диаграммы, изображенные на рис. 26.27, иллюстрируют
операции канала OUT с одним банком данных, на рис. 26.28 — с двумя
банками данных без задержки коммутации банков, а на рис. 26.29 — с дву-
мя банками данных с задержкой коммутации банков.
26.2.3.12. Ошибка CRC
Эта ошибка может иметь место только для изохронных каналов IN.
Она вызывает генерацию прерывания от ошибки CRC (CRCERRI), кото-
Рис. 26.29. Операции канала OUT с двумя банками данных с задержкой
коммутации банков
рое является триггером прерывания EPXINT, если CRCERRE = 1. Ошиб-
ка CRC может произойти в течение стадии IN, если USB-контроллер об-
наруживает разрушенный принятый пакет. Этот пакет IN сохраняется
в банке, как будто никакая ошибка CRC не произошла (генерируется
RXINI).
26.2.3.13. Прерывания USB-хоста
USB-хост имеет систему прерываний, структура которой иллюстрируется
блок-схемой, изображенной на рис. 26.6. Может быть два вида прерываний
USB-хоста: прерывания, генерируемые как часть процесса нормальной об-
работки, и прерывания, генерируемые при исключениях, т. е. ошибках (не
связаны с исключениями ЦПУ).
Глобальные прерывания USB-хоста, связанные с обработкой:
• прерывание от подключения устройства (DCONNI);
• прерывание от отключения устройства (DDISCI);
• прерывание по посылке сброса USB (RSTI);
• прерывание по посылке резюме Downstream (RSMEDI);
• прерывание по приему резюме Upstream (RXRSMI);
• прерывания по началу фрейма хоста (HSOFI);
• прерывания по «пробуждению» хоста (HWUPI);
• прерывание от канала X USB (PXINT);
• прерывание от канала DMA X (DMAXINT).
Глобальные прерывания USB-хоста, связанные с исключениями, от-
сутствуют.
Глобальные прерывания канала USB-хоста, связанные с обработкой:
• прерывание от приема данных IN (RXINI);
• прерывание от передачи данных OUT (TXOUTI);
• прерывание от передачи SETUP (TXSTPI);
• прерывание от короткого пакета (SHORTPACKETI);
• прерывание от количества занятых банков (NBUSYBK).
Глобальные прерывания канала USB-хоста, связанные с исключе-
ниями:
• прерывание от антипереполнения (UNDERFI);
• прерывание от ошибки канала (PERRI);
• прерывание от подтверждения NAK (NAKEDI);
• прерывание от переполнения (OVERFI);
• рерывание от получения STALL (RXSTALLDI);
• прерывание от ошибки CRC (CRCERRI).
Глобальные прерывания DMA USB-хоста, связанные с обработкой:
• прерывание по окончанию состояния перемещения через USB (ЕОТ_
STA);
• прерывание по окончанию состояния буфера канала (EOCH_BUFF_
STA);
• прерывание по состоянию загрузки дескриптора (DESC_LD_STA).
Глобальные прерывания DMA USB-хоста, связанные с исключениями,
отсутствуют.
26.2.4. Операции DMA USB
Пакеты USB любой длины могут передаваться, когда это требуется USB-
контроллеру. При передаче всегда используется последовательная адресация.
Из сказанного следует, что в случае высокой производительности USB-
контроллера оба порта USB получат выигрыш при использовании «инкре-
ментированного блока неопределенной длины», и среднее время ожидания
доступа ведомых устройств HSB в связи с этим может быть уменьшено.
Модуль DMA использует слово «инкрементированного блока неопреде-
ленной длины» размером до 256 «ударов» для передач данных и загрузки
дескриптора канала. Передача блока по шине HSB может длиться время,
равное времени передачи пакета USB, если она не прерывается арбитражем
HSB или пересечением характерной для HSB границы размером 1к.
Данные пакета HSB в блоке могут быть заблокированы в буфере DMA
для увеличения ширины полосы пропускания шины HSB. Из соображе-
ний оптимизации полосы пропускания шины производитель установил,
что в отдельном блоке HSB может быть до 128 слов для каналов/конечных
точек массивов и до 256 слов для изохронных каналов/конечных точек.
Значение максимальной длины блока управляется задаваемым для кон-
троллера USB размером канала/конечной точки (PSIZE/EPSIZE) и длиной
байта DMA (CH_BYTE_LENGTH).
Средняя производительность USB-контроллера может достигать 1,5 Мбит/с.
Пословный доступ позволяет в четыре раза сократить сегмент полосы пропу-
скания HSB, требуемый для USB, по сравнению с побайтовым доступом.
Блок-схема, изображенная на рис. 26.30, иллюстрирует список переда-
точной цепочки DMA USB.
26.3. Пользовательский интерфейс
Пользовательский интерфейс модуля USB представлен специальными ре-
гистрами МК, перечисленными в табл. 26.5, 26.6.
Рис. 26.30. Список передаточной цепочки DMA USB
Табл. 26.5. Отображение регистров USB
Смеше- ние Регистр Имя Доступ Значение после сброса
"охоооо Генеральный регистр управления устройством UDCON Чтение/ запись 0x00000100
0x0004 Регистр глобальных прерываний устройства UDINT Только чтение 0x00000000
0x0008 Регистр сброса глобальных прерываний устройства UDINTCLR Только запись 0x00000000
ОхОООС Регистр установки глобаль- ных прерываний устройства UDINTSET Только запись 0x00000000
0x0010 Регистр разрешения глобальных прерываний устройства UDINTE Только чтение 0x00000000
0x0014 Регистр сброса разрешения глобальных прерываний устройства UDINTECLR Только запись 0x00000000
0x0018 Регистр установки разрешения глобальных прерываний устройства UDINTESET Только запись 0x00000000
0х001С Регистр разрешения/сброса конечной точки UERST Чтение/ запись 0x00000000
0x0020 Регистр количества фреймов устройства UDFNUM Только чтение 0x00000000
0x0024— Зарезервировано - - -
OxOOFC
0x0100 Регистр конфигурации конечной точки 0 UECFG0 Чтение/ запись 0x00000000
0x0104 Регистр конфигурации конечной точки 1 UECFG1 Чтение/ запись 0x00000000
0x0108 Регистр конфигурации конечной точки 2 UECFG2 Чтение/ запись 0x00000000
ОхОЮС Регистр конфигурации конечной точки 3 UECFG3 Чтение/ запись 0x00000000
0x0110 Регистр конфигурации конечной точки 4 UECFG4 Чтение/ запись 0x00000000
0x0114 Регистр конфигурации конечной точки 5 UECFG5 Чтение/ запись 0x00000000
0x0118 Регистр конфигурации конечной точки 6 UECFG6 Чтение/ запись 0x00000000
+0x004— Зарезервировано - - -
0х012С
0x0130 Регистр состояния конечной точки 0 UESTA0 Только чтение 0x00000100
Табл. 26.5.
(продолжение)
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0134 Регистр состояния конечной точки 1 UESTA1 Только чтение OxOOOOOlOo"
0x0138 Регистр состояния конечной точки 2 UESTA2 Только чтение 0x00000100
0х013С Регистр состояния конечной точки 3 UESTA3 Только чтение 0x00000100
0x0140 Регистр состояния конечной точки 4 UESTA4 Только чтение 0x00000100
0x0144 Регистр состояния конечной точки 5 UESTA5 Только чтение 0x00000100
0x0148 Регистр состояния конечной точки 6 UESTA6 Только чтение 0x00000100
+0x004— 0х015С Зарезервировано - - -
0x0160 Регистр сброса состояния конечной точки 0 UESTA0CLR Только запись 0x00000000
0x0164 Регистр сброса состояния конечной точки 1 UESTA1CLR Только запись 0x00000000
0x0168 Регистр сброса состояния конечной точки 2 UESTA2CLR Только запись 0x00000000
0х016С Регистр сброса состояния конечной точки 3 UESTA3CLR Только запись 0x00000000
0x0170 Регистр сброса состояния конечной точки 4 UESTA4CLR Только запись 0x00000000
0x0174 Регистр сброса состояния конечной точки 5 UESTA5CLR Только запись 0x00000000
0x0178 Регистр сброса состояния конечной точки 6 UESTA6CLR Только запись 0x00000000
0х017С Регистр сброса состояния конечной точки 7 UESTA7CLR Только запись 0x00000000
0x0180 Регистр сброса состояния конечной точки 8 UESTA8CLR Только запись 0x00000000
+0x04— 0х018С Зарезервировано - - -
0x0190 Регистр установки состоя- ния конечной точки 0 UESTA0SET Только запись 0x00000000
0x0194 Регистр установки состоя- ния конечной точки 1 UESTA1SET Только запись 0x00000000
0x0198 Регистр установки состоя- ния конечной точки 2 UESTA2SET Только запись 0x00000000
Табл. 26.5.
(продолжение)
Смеше- ние Регистр Имя Доступ Значение после сброса
"0х019С Регистр установки состоя- ния конечной точки 3 UESTA3SET Только запись 0x00000000
OxOlAO Регистр установки состоя- ния конечной точки 4 UESTA4SET Только запись 0x00000000
0х01А4 Регистр установки состоя- ния конечной точки 5 UESTA5SET Только запись 0x00000000
0х01А8 Регистр установки состоя- ния конечной точки 6 UESTA6SET Только запись 0x00000000
OxOlAC Регистр установки состоя- ния конечной точки 7 UESTA7SET Только запись 0x00000000
OxOlBO Регистр установки состоя- ния конечной точки 8 UESTA8SET Только запись 0x00000000
+0x04- OxOlBC Зарезервировано - - -
OxOlCO Регистр управления конечной точки 0 UECON0 Только чтение 0x00000000
0x01C4 Регистр управления конечной точки 1 UECON1 Только чтение 0x00000000
0x01C8 Регистр управления конечной точки 2 UECON2 Только чтение 0x00000000
OxOlCC Регистр управления конечной точки 3 UECON3 Только чтение 0x00000000
OxOlDO Регистр управления конечной точки 4 UECON4 Только чтение 0x00000000
0x01D4 Регистр управления конечной точки 5 UECON5 Только чтение 0x00000000
0x01D8 Регистр управления конечной точки 6 UECON6 Только чтение 0x00000000
+0x04— OxOlEC Зарезервировано - - -
OxOlFO Регистр управления уста- новкой конечной точки 0 UECON0SET Только запись 0x00000000
0x01 F4 Регистр управления уста- новкой конечной точки 1 UECON1SET Только запись 0x00000000
0x01F8 Регистр управления уста- новкой конечной точки 2 UECON2SET Только запись 0x00000000
0x01 FC Регистр управления уста- новкой конечной точки 3 UECON3SET Только запись 0x00000000
0x0200 Регистр управления уста- новкой конечной точки 4 UECON4SET Только запись 0x00000000
Табл. 26.5. (продолжение)
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0204 Регистр управления уста- новкой конечной точки 5 UECON5SET Только запись 0x00000000"
0x0208 Регистр управления уста- новкой конечной точки 6 UECON6SET Только запись 0x00000000
0х020С Регистр управления уста- новкой конечной точки 7 UECON7SET Только запись 0x00000000
0x0210 Регистр управления уста- новкой конечной точки 8 UECON8SET Только запись 0x00000000
+0x04— Зарезервировано - - -
0х021С
0x0220 Регистр управления сбросом конечной точки 0 UECON0CLR Только запись 0x00000000
0x0224 Регистр управления сбросом конечной точки 1 UECON1CLR Только запись 0x00000000
0x0228 Регистр управления сбросом конечной точки 2 UECON2CLR Только запись 0x00000000
ОхО22С Регистр управления сбросом конечной точки 3 UECON3CLR Только запись 0x00000000
0x0230 Регистр управления сбросом конечной точки 4 UECON4CLR Только запись 0x00000000
0x0234 Регистр управления сбросом конечной точки 5 UECON5CLR Только запись 0x00000000
0x0238 Регистр управления сбросом конечной точки 6 UECON6CLR Только запись 0x00000000
0х023С Регистр управления сбросом конечной точки 7 UECON7CLR Только запись 0x00000000
0x0240 Регистр управления сбросом конечной точки 8 UECON8CLR Только запись 0x00000000
+0x04— Зарезервировано - - -
ОхОЗОС
0x0310 Регистр адреса следующего дескриптора канала DMA 1 устройства UDDMA1_ NEXTDESC Чтение/ запись 0x00000000
0x0314 Регистр адреса HSB канала DMA 1 устройства UDDMA1_ ADDR Чтение/ запись 0x00000000
0x0318 Регистр управления канала DMA 1 устройства UDDMA1_ CONTROL Чтение/ запись 0x00000000
0х031С Регистр состояния канала DMA 1 устройства UDDMA1_ STATUS Чтение/ запись 0x00000000
0x0320 Регистр адреса следующего дескриптора канала DMA 2 устройства UDDMA2_ NEXTDESC Чтение/ запись 0x00000000
Табл. 26.5.
(продолжение)
Смеше- ние Регистр Имя Доступ Значение после сброса
"0x0324 Регистр адреса HSB канала DMA 2 устройства UDDMA2_ ADDR Чтение/ запись 0x00000000
0x0328 Регистр управления канала DMA 2 устройства UDDMA2_ CONTROL Чтение/ запись 0x00000000
0х032С Регистр состояния канала DMA 2 устройства UDDMA2_ STATUS Чтение/ запись 0x00000000
0x0330 Регистр адреса следующего дескриптора канала DMA 3 устройства UDDMA3_ NEXTDESC Чтение/ запись 0x00000000
0x0334 Регистр адреса HSB канала DMA 3 устройства UDDMA3_ ADDR Чтение/ запись 0x00000000
0x0338 Регистр управления канала DMA 3 устройства UDDMA3_ CONTROL Чтение/ запись 0x00000000
ОхОЗЗС Регистр состояния канала DMA 3 устройства UDDMA3_ STATUS Чтение/ запись 0x00000000
0x0340 Регистр адреса следующего дескриптора канала DMA 4 устройства UDDMA4_ NEXTDESC Чтение/ запись 0x00000000
0x0344 Регистр адреса HSB канала DMA 4 устройства UDDMA4_ ADDR Чтение/ запись 0x00000000
0x0348 Регистр управления канала DMA 4 устройства UDDMA4_ CONTROL Чтение/ запись 0x00000000
0х034С Регистр состояния канала DMA 4 устройства UDDMA4_ STATUS Чтение/ запись 0x00000000
0x0350 Регистр адреса следующего дескриптора канала DMA 5 устройства UDDMA5_ NEXTDESC Чтение/ запись 0x00000000
0x0354 Регистр адреса HSB канала DMA 5 устройства UDDMA5_ ADDR Чтение/ запись 0x00000000
0x0358 Регистр управления канала DMA 5 устройства UDDMA5_ CONTROL Чтение/ запись 0x00000000
0х035С Регистр состояния канала DMA 5 устройства UDDMA5_ STATUS Чтение/ запись 0x00000000
0x0360 Регистр адреса следующего дескриптора канала DMA 6 устройства UDDMA6_ NEXTDESC Чтение/ запись 0x00000000
0x0364 Регистр адреса HSB канала DMA 6 устройства UDDMA6_ ADDR Чтение/ запись 0x00000000
0x0368 Регистр управления канала DMA 6 устройства UDDMA6_ CONTROL Чтение/ запись 0x00000000
ОхОЗбС Регистр состояния канала DMA 6 устройства UDDMA6_ STATUS Чтение/ запись 0x00000000
Табл. 26.5.
(продолжение)
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0370- Зарезервировано - -
0x03FC
0x0400 Генеральный регистр управления хоста UHCON Чтение/ запись 0x00000000
0x0404 Глобальный регистр прерываний хоста UHINT Только чтение 0x00000000
0x0408 Глобальный регистр сброса прерываний хоста UHINTCLR Только запись 0x00000000
0х040С Глобальный регистр установки прерываний хоста UHINTSET Только запись 0x00000000
0x0410 Глобальный регистр разрешения прерываний хоста UHINTE Только чтение 0x00000000
0x0414 Глобальный регистр сброса разрешения прерываний хоста UHINTECLR Только запись 0x00000000
0x0418 Глобальный регистр установки разрешения прерываний хоста UHINTESET Только запись 0x00000000
0х041С Регистр включения/сброса канала UPRST Чтение/ запись 0x00000000
0x0420 Регистр количества фреймов хоста UHFNUM Чтение/ запись 0x00000000
0x0424 Регистр адреса 1 хоста UHADDR1 Чтение/ запись 0x00000000
0x0428 Регистр адреса 2 хоста UHADDR2 Чтение/ запись 0x00000000
+0x04— Зарезервировано - - -
0x04FC
0x0500 Регистр конфигурации канала 0 UPCFG0 Чтение/ запись 0x00000000
0x0504 Регистр конфигурации , канала 1 UPCFG1 Чтение/ запись 0x00000000
0x0508 Регистр конфигурации канала 2 UPCFG2 Чтение/ запись 0x00000000
0х050С Регистр конфигурации канала 3 UPCFG3 Чтение/ запись 0x00000000
0x0510 Регистр конфигурации канала 4 UPCFG4 Чтение/ запись 0x00000000
Табл. 26.5.
(продолжение)
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0514 Регистр конфигурации канала 5 UPCFG5 Чтение/ запись 0x00000000
0x0518 Регистр конфигурации канала 6 UPCFG6 Чтение/ запись 0x00000000
+0x04— 0х052С Зарезервировано - - -
0x0530 Регистр статуса канала 0 UPSTA0 Только чтение 0x00000000
0x0534 Регистр статуса канала 1 UPSTA1 Только чтение 0x00000000
0x0538 Регистр статуса канала 2 UPSTA2 Только чтение 0x00000000
0х053С Регистр статуса канала 3 UPSTA3 Только чтение 0x00000000
0x0540 Регистр статуса канала 4 UPSTA4 Только чтение 0x00000000
0x0544 Регистр статуса канала 5 UPSTA5 Только чтение 0x00000000
0x0548 Регистр статуса канала 6 UPSTA6 Только чтение 0x00000000
+0x04— 0х055С Зарезервировано - - -
0x0560 Регистр сброса состояния канала 0 UPSTA0CLR Только запись 0x00000000
0x0564 Регистр сброса состояния канала 1 UPSTA1CLR Только запись 0x00000000
0x0568 Регистр сброса состояния канала 2 UPSTA2CLR Только запись 0x00000000
0х056С Регистр сброса состояния канала 3 UPSTA3CLR Только запись 0x00000000
0x0570 Регистр сброса состояния канала 4 UPSTA4CLR Только запись 0x00000000
0x0574 Регистр сброса состояния канала 5 UPSTA5CLR Только запись 0x00000000
0x0578 Регистр сброса состояния канала 6 UPSTA6CLR Только запись 0x00000000
+0x04— 0х058С Зарезервировано - - -
0x0590 Регистр установки состоя- ния канала 0 UPSTA0SET Только запись 0x00000000
Табл. 26.5. (продолжение)
Смеще- ние Регистр Имя Доступ Значение после сброса
0x0594 Регистр установки состоя- ния канала 1 UPSTA1SET Только запись 0x00000000^
0x0598 Регистр установки состояния канала 2 UPSTA2SET Только запись 0x00000000
0х059С Регистр установки состояния канала 3 UPSTA3SET Только запись 0x00000000
0х05А0 Регистр установки состояния канала 4 UPSTA4SET Только запись 0x00000000
0х05А4 Регистр установки состояния канала 5 UPSTA5SET Только запись 0x00000000
0х05А8 Регистр установки состояния канала 6 UPSTA6SET Только запись 0x00000000
+0x04— 0х05ВС Зарезервировано - - -
0х05С0 Регистр управления каналом 0 UPCON0 Только чтение 0x00000000
0х05С4 Регистр управления каналом 1 UPCON1 Только чтение 0x00000000
0х05С8 Регистр управления каналом 2 UPCON2 Только чтение 0x00000000
0х05СС Регистр управления каналом 3 UPCON3 Только чтение 0x00000000
0x05D0 Регистр управления каналом 4 UPCON4 Только чтение 0x00000000
OxO5D4 Регистр управления каналом 5 UPCON5 Только чтение 0x00000000
Ox05D8 Регистр управления каналом 6 UPCON6 Только чтение 0x00000000
0x05DC Регистр управления каналом 7 UPCON7 Только чтение 0x00000000
+0x04— 0x05EC Зарезервировано - - -
0x05F0 0x05F4 0x05F8 0x05FC Регистр управления установкой канала 0 Регистр управления установкой канала 1 Регистр управления установкой канала 2 Регистр управления установкой канала 3 UPCON0SET UPCON1SET UPCON2SET UPCON3SET Только запись Только запись Только запись Только запись 0x00000000 0x00000000 0x00000000 0x00000000
Табл. 26.5.
(продолжение)
"смеше- ние Регистр Имя Доступ Значение после сброса
0x0600 Регистр управления установкой канала 4 UPCON4SET Только запись 0x00000000
0x0604 Регистр управления установкой канала 5 UPCON5SET Только запись 0x00000000
0x0608 Регистр управления установкой канала 6 UPCON6SET Только запись 0x00000000
+0x04— 0х0б1С Зарезервировано - - -
0x0620 Регистр управления сбросом канала 0 UPCON0CLR Только запись 0x00000000
0x0624 Регистр управления сбросом канала 1 UPCON1CLR Только запись 0x00000000
0x0628 Регистр управления сбросом канала 2 UPCON2CLR Только запись 0x00000000
0х062С Регистр управления сбросом канала 3 UPCON3CLR Только запись 0x00000000
0x0630 Регистр управления сбросом канала 4 UPCON4CLR Только запись 0x00000000
0x0634 Регистр управления сбросом канала 5 UPCON5CLR Только запись 0x00000000
0x0638 Регистр управления сбросом канала 6 UPCON6CLR Только запись 0x00000000
+0x04— 0х064С Зарезервировано - - -
0x0650 Регистр запроса IN канала 0 UPINRQ0 Чтение/ запись 0x00000000
0x0654 Регистр запроса IN канала 1 UPINRQ1 Чтение/ запись 0x00000000
0x0658 Регистр запроса IN канала 2 UPINRQ2 Чтение/ запись 0x00000000
0х065С Регистр запроса IN канала 3 UPINRQ3 Чтение/ запись 0x00000000
0x0660 Регистр запроса IN канала 4 UPINRQ4 Чтение/ запись 0x00000000
0x0664 Регистр запроса IN канала 5 UPINRQ5 Чтение/ запись 0x00000000
0x0668 Регистр запроса IN канала 6 UPINRQ6 Чтение/ запись 0x00000000
ОхОббС— 0х067С Зарезервировано - - -
Табл. 26.5. (продолжение)
Смеще- ние Регистр Имя Доступ Значений после сбро^^
0x0680 Регистр ошибки канала 0 UPERR0 Чтение/ запись ОхОООООООо"
0x0684 Регистр ошибки канала 1 UPERR1 Чтение/ запись 0x00000000
0x0688 Регистр ошибки канала 2 UPERR2 Чтение/ запись 0x00000000
0х068С Регистр ошибки канала 3 UPERR3 Чтение/ запись 0x00000000
0x0690 Регистр ошибки канала 4 UPERR4 Чтение/ запись 0x00000000
0x0694 Регистр ошибки канала 5 UPERR5 Чтение/ запись 0x00000000
0x0698 Регистр ошибки канала 6 UPERR6 Чтение/ запись 0x00000000
+0x04— 0х070С Зарезервировано - - -
0x0710 Регистр адреса следующего дескриптора канала 1 DMA хоста UHDMA1_ NEXTDESC Чтение/ запись 0x00000000
0x0714 Регистр адреса HSB канала 1 DMA хоста UHDMA1_ ADDR Чтение/ запись 0x00000000
0x0718 Регистр управления канала 1 DMA хоста UHDMA1_ CONTROL Чтение/ запись 0x00000000
0х071С Регистр статуса канала 1 DMA хоста UHDMA1_ STATUS Чтение/ запись 0x00000000
0x0720 Регистр адреса следующего дескриптора канала 2 DMA хоста UHDMA2_ NEXTDESC Чтение/ запись 0x00000000
0x0724 Регистр адреса HSB канала 2 DMA хоста UHDMA2_ ADDR Чтение/ запись 0x00000000
0x0728 Регистр управления канала 2 DMA хоста UHDMA2_ CONTROL Чтение/ запись 0x00000000
0х072С Регистр статуса канала 2 DMA хоста UHDMA2_ STATUS Чтение/ запись 0x00000000
0x0730 Регистр адреса следующего дескриптора канала 3 DMA хоста UHDMA3_ NEXTDESC Чтение/ запись 0x00000000
0x0734 Регистр адреса HSB канала 3 DMA хоста UHDMA3_ ADDR Чтение/ запись 0x00000000
0x0738 Регистр управления канала 3 DMA хоста UHDMA3_ CONTROL Чтение/ запись 0x00000000
Табл. 26.5. (продолжение)
Смеще- ние Регистр Имя Доступ Значение после сброса
"taO73C Регистр статуса канала 3 DMA хоста UHDMA3_ STATUS Чтение/ запись 0x00000000
0x0740 Регистр адреса следующего дескриптора канала 4 DMA хоста UHDMA4_ NEXTDESC Чтение/ запись 0x00000000
0x0744 Регистр адреса HSB канала 4 DMA хоста UHDMA4_ ADDR Чтение/ запись 0x00000000
0x0748 Регистр управления канала 4 DMA хоста UHDMA4_ CONTROL Чтение/ запись 0x00000000
0х074С Регистр статуса канала 4 DMA хоста UHDMA4_ STATUS Чтение/ запись 0x00000000
0x0750 Регистр адреса следующего дескриптора канала 5 DMA хоста UHDMA5_ NEXTDESC Чтение/ запись 0x00000000
0x0754 Регистр адреса HSB канала 5 DMA хоста UHDMA5_ ADDR Чтение/ запись 0x00000000
0x0758 Регистр управления канала 5 DMA хоста UHDMA5_ CONTROL Чтение/ запись 0x00000000
0х075С Регистр статуса канала 5 DMA хоста UHDMA5_ STATUS Чтение/ запись 0x00000000
0x0760 Регистр адреса следующего дескриптора канала 6 DMA хоста UHDMA6_ NEXTDESC Чтение/ запись 0x00000000
0x0764 Регистр адреса HSB канала 6 DMA хоста UHDMA6_ ADDR Чтение/ запись 0x00000000
0x0768 Регистр управления канала 6 DMA хоста UHDMA6_ CONTROL Чтение/ запись 0x00000000
0х076С Регистр статуса канала 6 DMA хоста UHDMA6_ STATUS Чтение/ запись 0x00000000
0x0770— 0x07FC Зарезервировано - - -
0x0800 Генеральный регистр управления USB USBCON Чтение/ запись 0x03004000
0x0804 Генеральный регистр статуса USB USBSTA Только чтение 0x00000400
0x0808 Генеральный регистр сброса состояния USBSTACLR Только запись 0x00000000
0х080С Генеральный регистр установки состояния USBSTASET Только запись 0x00000000
0x0810— 0x0814 Зарезервировано - - -
Табл. 26.5. (окончание)
Смеще- ние Регистр Имя Доступ Значение после сбро^^
0x0818 Регистр версии IP UVERS Только 0x00000260^
0х081С Регистр особенностей IP UFEATURES чтение Только 0x00012467
0x0820 Регистр размера адреса РВ UADDRSIZE чтение Только 0x00001000
0x0824 IP Регистр 1 имени IP UNAME1 чтение Только 0x48555342
0x0828 Регистр 2 имени IP UNAME2 чтение Только («HUSB») 0x004F5447
0х082С Регистр состояния UFSM чтение Только («\0OTG») 0x00000009
0x0830— OxOBFC конечного автомата USB Зарезервировано - чтение -
Табл. 26.6. Отображение регистров HSB USB
Смещение Регистр Имя Доступ Значение после сброса
0x00000- OxOFFFC Регистр данных буфера FIFO канала/конечной точки 0 USB_ FIFO0_DATA Чтение/ запись Неопре- деленное
0x10000- OxlFFFC Регистр данных буфера FIFO канала/конечной точки 1 USB_ FIFO1_DATA Чтение/ запись Неопре- деленное
0x20000— 0x2FFFC Регистр данных буфера FIFO канала/конечной точки 2 USB_ FIFO2_DATA Чтение/ запись Неопре- деленное
0x30000- 0x3FFFC Регистр данных буфера FIFO канала/конечной точки 3 USB_ FIFO3_DATA Чтение/ запись Неопре- деленное
0x40000— 0x4FFFC Регистр данных буфера FIFO канала/конечной точки 4 USB_ FIFO4_DATA Чтение/ запись Неопре- деленное
0x50000— 0x5FFFC Регистр данных буфера FIFO канала/конечной точки 5 USB_ FIFO5_DATA Чтение/ запись Неопре- деленное
0x60000- 0x6FFFC Регистр данных буфера FIFO канала/конечной точки 6 USB_ FIFO6_DATA Чтение/ запись Неопре- деленное
+0x00004— OxFFFFC Зарезервировано - - -
26.3.1. Генеральный регистр управления USB USBCON
Битовая структура регистра показана в табл. 26.7.
Табл. 26.7. Битовая структура генерального регистра управления USB
USBCON
"Tl 30 29 28 27 26 25 24
- - - - - UIMOD UIDE
23 22 21 20 19 18 17 16
- UNLOCK TIMPAGE - - TIMVALUE
15 14 13 12 11 10 9 8
USBE FRZCLK VBUSPO OTGPADE HNPREQ SRPREQ SRPSEL VBUSHWC
7 6 5 4 3 2 1 0
STOE HNPERRE ROLEEXE BCERRE VBERRE SRPE VBUSTE IDTE
• IDTE: разрешение прерывания от перепада идентификатора (ID).
1: разрешено прерывание от перепада идентификатора (IDTI).
0: запрещено прерывание от перепада идентификатора (IDTI).
* VBUSTE: разрешение прерывания VBus.
1: разрешено прерывание от перепада VBus (VBUSTI).
0: запрещено прерывание от перепада VBus (VBUSTI).
* SRPE: разрешение прерывания от SRP.
1: разрешено прерывание SRP (SRPI).
0: запрещено прерывание SRP (SRPI).
* VBERRE: разрешение прерывания от ошибки VBus.
1: разрешено прерывание от ошибки VBus (VBERRI).
0: запрещено прерывание от ошибки VBus (VBERRI).
* BCERRE: разрешение прерывания от ошибки подключения разъема
типа В.
1: разрешено прерывание от ошибки подключения разъема типа В
(BCERRI).
0: запрещено прерывание от ошибки подключения разъема типа В
(BCERRI).
* ROLEEXE: разрешение прерывания от смены роли.
1: разрешено прерывание от смены роли (ROLEEXI).
0: запрещено прерывание от смены роли (ROLEEXI).
* HNPERRE: разрешение прерывания от ошибки HNP.
1: разрешено прерывание от ошибки HNP (HNPERRI).
0: запрещено прерывание от ошибки HNP (HNPERRI).
* STOE: разрешение прерывания от тайм-аута приостановки.
1: разрешено прерывание от тайм-аута приостановки (STOI).
0: запрещено прерывание от тайм-аута приостановки (STOI).
• VBUSHWC: аппаратное управление VBus.
1: отключено аппаратное управление ножкой вывода USB_VBOF.
0: разрешено аппаратное управление ножкой вывода USB VBOF.
Если этот бит сброшен, то макроядро USB реагирует на проблемы Vfius
и в случае их возникновения сбрасывает уровень на выводе USB_VBOF.
• SRPSEL: выбор SRP.
1: выбор пульсации VBus как метода SRP.
0: выбор пульсации на линии данных как метода SRP.
• SRPREQ: запрос SRP.
1: инициализация SRP, когда USB-контроллер находится в режиме
устройства.
Сбрасывается аппаратно, когда контроллер инициализирует SRP.
• HNPREQ: запрос HNP.
Когда USB-контроллер находится в режиме устройства:
1: инициализация HNP.
Сбрасывается аппаратно, когда контроллер инициализирует HNP.
Когда контроллер находится в режиме хоста:
1: прием HNP.
0: в ином случае.
* OTGPADE: включение кнопочного интерфейса OTG.
1: включен кнопочный интерфейс OTG.
0: отключен кнопочный интерфейс OTG.
Следует заметить, что этот бит может быть установлен/сброшен
даже в том случае, если USBE = 0 или FRZCLK = 1. Отключение USB-
контроллера (сброс бита USBE) не сбрасывает этот бит.
• VBUSPO: полярность VBus.
Когда бит сброшен, сигнал на выводе USB_VBOF находится в его за-
данном по умолчанию режиме (активный высокий уровень).
Когда бит установлен, сигнал на выводе USB_VBOF инвертирован (ак-
тивный низкий уровень).
Эта особенность придает модулю универсальность. Она может быть по-
лезной при управлении VBus внешним модулем питания.
Следует заметить, что этот бит может быть установлен/сброшен
даже в том случае, если USBE = 0 или FRZCLK = 1. Отключение USB-
контроллера (сброс бита USBE) не сбрасывает этот бит.
* FRZCLK: остановка синхросигнала USB.
1: отключены входы синхронизации (способность обнаружения резюме
все еще активна), что уменьшает потребляемую мощность. В этом состоя-
нии все регистры становятся доступными только для чтения.
0: включены входы синхронизации.
Следует заметить, что этот бит может быть установлен/сброшен
даже в том случае, если USBE = 0 или FRZCLK = 1. Отключение USB-
контроллера (сброс бита USBE) не сбрасывает этот бит, но приводит к оста-
новке синхросигнала.
* USBE: включение макроядра USB.
1: USB-контроллер включен.
0: USB-контроллер отключен и сброшен, USB-приемопередатчик
и входы синхронизации USB-контроллера также отключены. В этом со-
стоянии все регистры становятся доступными только для чтения и сбра-
сываются.
Следует заметить, что этот бит может быть установлен/сброшен даже
том случае, если USBE = 0 или FRZCLK = 1.
В • TIMVALUE: значение таймера.
1: инициализация нового значения специального регистра таймера, вы-
бранного TIMPAGE.
• TIMPAGE: страница таймера.
Содержит значение страницы, записываемое, чтобы обратиться к спе-
циальному регистру таймера.
* UNLOCK: разблокировка доступа к таймеру.
1: поля TIMPAGE и TIMVALUE разблокированы перед их записью.
0: поля TIMPAGE и TIMVALUE заблокированы.
Следует заметить, что поля TIMPAGE и TIMVALUE могут читаться
всегда, независимо от значения поля UNLOCK.
• UIDE: разрешение функционирования вывода USB_ID.
1: выбор режима USB (устройство/хост) производится с помощью вы-
вода USBID.
0: выбор режима USB (устройство/хост) производится с помощью бита
UIMOD.
Следует заметить, что этот бит может быть установлен/сброшен
даже в том случае, если USBE = 0 или FRZCLK = 1. Отключение USB-
контроллера (сброс бита USBE) не сбрасывает этот бит.
• UIMOD: режим макроядра USB.
Значение этого бита не играет никакой роли, когда UIDE = 1 (активен
вывод USB_ID).
1: выбран режим USB-устройства.
0: выбран режим USB-хоста.
Следует заметить, что этот бит может быть установлен/сброшен
даже в том случае, если USBE = 0 или FRZCLK = 1. Отключение USB-
контроллера (сброс бита USBE) не сбрасывает этот бит.
26.3.2. Генеральный регистр статуса USB USBSTA
Битовая структура регистра показана в табл. 26.8.
Табл. 26.8. Битовая структура генерального регистра статуса USB USBSTA
__ 31 30 29 28 27 26 25 24
- - - - - - - -
_ 23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - SPEED VBUS ID VBUSRQ -
Табл. 26.8. (окончание)
7 6 5 4 3 2 1 (Г""
STOI HNPERRI ROLEEXI BCERRI VBERRI SRPI VBUSTI idtF~
• IDTI: флаг прерывания от перепада идентификатора (ID).
Асинхронное прерывание. Устанавливается аппаратно, когда на ножке
входа USB_ID детектируется положительный или отрицательный пере-
пад. Это вызывает прерывание USB, если IDTE — 1. Должен быть сброщец
программно (путем установки бита IDTIC), чтобы подтвердить это пре-
рывание. Предварительно нужно включить входы синхронизации USB.
Следует заметить, что это прерывание может быть сгенерировано, даже
если синхросигнал остановлен битом FRZCLK.
* VBUSTI: флаг прерывания от перепада Vbus.
Асинхронное прерывание. Устанавливается аппаратно, когда на ножке входа
кнопочного интерфейса VBUS детектируется положительный или отрицатель-
ный перепад. Это вызывает прерывание USB, если VBUSTE = 1. Должен быть
сброшен программно (путем установки бита VBUSTIC), чтобы подтвердить это
прерывание. Предварительно нужно включить входы синхронизации USB.
Следует заметить, что это прерывание может быть сгенерировано, даже
если синхросигнал остановлен битом FRZCLK.
* SRPI: флаг прерывания от SRP.
Может использоваться только в режиме хоста. Устанавливается ап-
паратно, когда детектируется SRP. Это вызывает прерывание USB, если
SRPE = 1. Должен быть сброшен программно (путем установки бита
SRPIC), чтобы подтвердить это прерывание.
* VBERRI: флаг прерывания от ошибки VBus.
В режиме хоста, устанавливается аппаратно, когда детектируется шум на
VBus. Это вызывает прерывание USB, если VBERRE = 1. Должен быть сбро-
шен программно (путем установки бита VBERRIC), чтобы подтвердить это
прерывание. Предварительно нужно включить входы синхронизации USB.
Следует заметить, что если происходит проблема с VBus, то прерывание
VBERRI будет сгенерировано, даже если макроядро USB не перейдет в со-
стояние ошибки из-за VBUSHWC - 1.
* BCERRI: флаг прерывания ошибки подключения разъема В-типа.
В режиме хоста устанавливается аппаратно, когда при подключении
разъема В-типа происходит ошибка. Это вызывает прерывание USB, если
BCERRE = 1. Должен быть сброшен программно (путем установки бита
BCERRIC), чтобы подтвердить это прерывание.
* ROLEEXI: флаг прерывания от смены роли.
Устанавливается аппаратно, когда USB-контроллер успешно переклю-
чает свой режим в результате HNP-переговоров (с хоста на устройство или
с устройства на хост). Это вызывает прерывание USB, если ROLEEXE - 1-
Должен быть сброшен программно (путем установки бита ROLEEXIC),
чтобы подтвердить это прерывание.
* HNPERRI: флаг прерывания от ошибки HNP.
В режиме устройства устанавливается аппаратно, когда в течение HNP-
переговоров была детектирована ошибка. Это вызывает прерывание USB,
если HNPERRE = 1. Должен быть сброшен программно (путем установки
бита HNPERRIC), чтобы подтвердить это прерывание.
• STOI: флаг прерывания от тайм-аута приостановки.
В режиме хоста устанавливается аппаратно, когда детектируется ошиб-
ка из-за истечения тайм-аута (больше 200 мс) после наступления состоя-
ния приостановки. Это вызывает прерывание USB, если STOE = 1. Должен
быть сброшен программно (путем установки бита STOIC), чтобы подтвер-
дить это прерывание.
• VBUSRQ: запрос VBus.
В режиме хоста устанавливается программно (путем установки бита
VBUSRQS), чтобы установить активный уровень на ножке выхода USB_
VBOF с тем, чтобы разрешить использование VBus в качестве источника
электропитания. Сбрасывается программно путем установки бита VBUS-
RQC. Также сбрасывается аппаратно, когда происходит ошибка VBus, если
при этом VBUSHWC = 0.
* ID: состояние ножки USB_ID.
Устанавливается/сбрасывается аппаратно и отражает состояние ножки
входа USB_ID, даже если USBE = 0.
• VBUS: уровень VBus.
Устанавливается/сбрасывается аппаратно и отражает состояние ли-
нии VBus, даже если USBE = 0. Этот бит может использоваться в режиме
устройства, чтобы контролировать состояние шины USB при подключении
приложения.
* SPEED: состояние скорости.
Устанавливается аппаратно согласно текущему режиму скорости USB-
контроллера. Используется только в режиме хоста. Возможные значения
этого битового поля приведены в табл. 26.9.
Табл. 26.9. Значения битового поля SPEED
SPEED Состояние скорости
0 0 Режим FULL-SPEED
1 0 Режим LOW-SPEED
X 1 Зарезервировано
* CLKUSABLE: пригодный для использования синхросигнал UTMI.
Устанавливается аппаратно, чтобы указать, что синхросигнал UTMI
с частотой 30 МГц является пригодным для использования.
Примечание переводчика. В таблице битовой структуры регистра ори-
гинальной документации производителя это поле почему-то не обо-
значено.
26.3.3. Генеральный регистр сброса состояния USB
USBSTACLR
Битовая структура регистра показана в табл. 26.10.
Табл. 26.10. Битовая структура генерального регистра сброса состоя
ния USB USBSTACLR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - VBUSRQC -
7 6 5 4 3 2 1 0
STOIC HNPERRIC ROLEEXIC BCERRIC VBERRIC SRPIC VBUSTIC IDTIC
* IDTIC: сброс флага прерывания от перепада идентификатора
Устанавливается, чтобы сбросить IDTI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* VBUSTIC: сброс флага прерывания от перепада VBus.
Устанавливается, чтобы сбросить VBUSTI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* SRPIC: сброс флага прерывания от SRP.
Устанавливается, чтобы сбросить SRPI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* VBERRIC: сброс флага прерывания от ошибки VBus.
Устанавливается, чтобы сбросить VBERRI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* BCERRIC: сброс флага прерывания от ошибки подключения разъема
В-типа.
Устанавливается, чтобы сбросить BCERRI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* ROLEEXIC: сброс флага прерывания от смены роли.
Устанавливается, чтобы сбросить ROLEEXI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• HNPERRIC: сброс флага прерывания от ошибки HNP.
Устанавливается, чтобы сбросить HNPERRI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* STOIC: сброс флага прерывания от тайм-аута приостановки.
Устанавливается, чтобы сбросить STOI.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• VBUSRQC: сброс запроса VBus.
Устанавливается, чтобы сбросить VBUSRQ.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
26.3.4. Генеральный регистр установки состояния USB
USBSTASET
Битовая структура регистра показана в табл. 26.11.
Табл. 26.11. Битовая структура генерального регистра установки состояния
USB USBSTASET
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - VBUSRQS -
7 6 5 4 3 2 1 0
STOIS HNPERRIS ROLEEXIS BCERRIS VBERRIS SRPIS VBUSTIS IDTIS
* 1DTIS: установка флага прерывания от перепада идентификатора.
Устанавливается, чтобы установить IDTI, что может потребоваться для
Целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* VBUSTIS: установка флага прерывания от перепада VBus.
Устанавливается, чтобы установить VBUSTI, что может потребоваться
Для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* SRPIS: установка флага прерывания от SRP.
Устанавливается, чтобы установить SRPI, что может потребоваться для
Целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• VB ERRIS: установка флага прерывания от ошибки VBus.
Устанавливается, чтобы установить VBERRI, что может потребоваться
для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* BCERRIS: установка флага прерывания от ошибки подключения разь.
ема В-типа.
Устанавливается, чтобы установить BCERRI, что может потребоваться
для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* ROLEEXIS: установка флага прерывания от смены роли.
Устанавливается, чтобы установить ROLEEXI, что может потребоваться
для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* HNPERRIS: установка флага прерывания от ошибки HNP.
Устанавливается, чтобы установить HNPERRI, что может потребовать-
ся для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* STOIS: установка флага прерывания от тайм-аута приостановки.
Устанавливается, чтобы установить STOI, что может потребоваться для
целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• VBUSRQS: установка запроса VBus.
Устанавливается, чтобы установить VBUSRQ.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
26.3.5. Регистр версии IP USB UVERS
Битовая структура регистра показана в табл. 26.12.
Табл. 26.12. Битовая структура регистра версии IP USB UVERS
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - METAL_FIX_NUM__
15 14 13 12 11 10 9 8 _
VERSION NUM
Табл. 26.12. (окончание)
""~2 I 6 | 5 | 4 | 3 | 2 | 1 | о ~
' " VERSION NUM ~
• VERSION_NUM: номер версии IP.
Это поле содержит номер версии IP макроядра USB. Каждая цифра
номера версии содержится в отдельном полубайте, например, версии 2.6.0
соответствует число 0x0260.
• METAL_FIX_NUM: фиксированный в «металле» номер.
Это поле содержит фиксированный в «металле» номер IP макроядра
USB.
26.3.6. Регистр особенностей IP USB UFEATURES
Битовая структура регистра показана в табл. 26.13.
Табл. 26.13. Битовая структура регистра особенностей IP USB
UFEATURES
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
BYTEWRITE _DPRAM FIFO_MAX_SIZE DMA_FIFO_WORD_DEPTH
7 6 5 4 3 2 1 0
DMA-BUFFER _SIZE DMA_CHANNEL_NBR EPT_NBR_MAX
• EPT_NBR_MAX: максимальное количество каналов/конечных точек.
Это поле содержит значение количества аппаратно реализованных ка-
налов/конечных точек. Возможные значения этого битового поля приведе-
ны в табл. 26.14.
Табл. 26.14. Значения битового поля EPT_NBR_MAX
EPT_NBR_MAX Максимальное количество каналов/конечных точек
0 0 0 0 16
0 0 0 1 1
Табл. 26.14.
EPT_NBR_MAX
О О 1 о
(окончание)
Максимальное количество """"""
каналов/конечных точек
2
1111
• DMA_CHANNEL_NBR: количество каналов DMA.
Это поле содержит значение количества аппаратно реализованных
каналов DMA. Возможные значения этого битового поля приведены
в табл. 26.15.
Табл. 26.15. Значения битового поля DMA_CHANNEL_NBR
DMA_CHANNEL_NBR Максимальное количество каналов DMA
0 0 0 Зарезервировано
0 0 1 1
0 1 0 2
1 1 1 7
• DMA_BUFFER_SIZE: размерность буфера DMA.
Это поле содержит значение размерности буфера DMA. Если это
поле имеет значение 0, то размерность буфера DMA — 16 бит, если 1 —
24 бита.
• DMA_FIFO_WORD_DEPTH: глубина в словах буфера FOFO.
Это поле содержит значение глубины в словах буфера FIFO DMA. Воз-
можные значения этого битового поля приведены в табл. 26.16.
Табл. 26.16. Значения битового поля DMA_FIFO_WORD_DEPTH
DMA_FIFO_WORD_DEPTH Глубина в словах буфера FOFO __
0 0 0 0 16
0 0 0 1 1
0 0 1 0 2
1 1 1 1 15 __
• FIFO_MAX_SIZE: максимальный размер буфера FIFO.
Это поле содержит значение максимального размера буфера FIFO, т. е.
размер DPRAM. Возможные значения этого битового поля приведены
в табл. 26.17.
Табл. 26.17. Значения битового поля FIFO_MAX_SIZE
' fifo_max_size Максимальный размер буфера FIFO
'"’"’о 0 0 <256 байтов
0 0 1 <512 байтов
0 1 0 <1024 байта
0 1 1 <2048 байтов
1 0 0 <4096 байтов
1 0 1 <8192 байта
1 1 0 <16384 байта
1 1 1 > 16384 байта
• BYTE_WRITE_DPRAM: возможность побайтовой записи DPRAM
Значение этого поля указывает, возможна ли побайтовая запись
в DPRAM. Если поле имеет значение 0, то побайтовая запись в DPRAM
может быть осуществлена с помощью теневой логики интерфейса IP ма-
кроядра USB. Если поле имеет значение 1, DPRAM сама по себе обладает
способностью к побайтовой записи.
26.3.7. Регистр размера адреса РВ IP USB UADDRSIZE
Битовая структура регистра показана в табл. 26.18.
Табл. 26.18. Битовая структура регистра размера адреса РВ IP USB
UADDRSIZE
31 30 29 28 27 26 25 24
UADDRSIZE
23 22 21 20 19 18 17 16
UADDRSIZE
15 14 13 12 11 10 9 8
UADDRSIZE
7 6 5 4 3 2 1 0
UADDRSIZE
• UADDRSIZE: размер адреса PB IP.
Это поле содержит значение размера области адресов РВ, зарезервиро-
ванной для интерфейса IP макроядра USB.
26.3.8. Регистр 1 имени IP USB UNAME1
Битовая структура регистра показана в табл. 26.19.
Табл. 26.19. Битовая структура регистра 1 имени IP USB UNAME1
31 30 29 28 27 26 25 24
UNAME1
«н»
23 22 21 20 19 18 17 16
UNAME1 «и»
15 14 13 12 11 10 9 8
UNAME1
«s»
7 6 5 4 3 2 1 0
UNAME1
«В»
• UNAME1: часть 1 имени IP.
Это поле содержит значение 1-й части ASCII-кодированного имени IP
макроядра USB.
26.3.9. Регистр 2 имени IP USB UNAME2
Битовая структура регистра показана в табл. 26.20.
Табл. 26.20. Битовая структура регистра 2 имени IP USB UNAME2
31 30 29 28 27 26 25 24 _
UNAME2
«\0»
23 22 21 20 19 18 17 16 .
UNAME2
«о»
Табл. 26.20.
(окончание)
' 15 14 13 12 | 11 1 ю 9 8
-— UNAME2
—‘ «Т»
7 6 5 4 3 2 1 0
UNAME2
«G»
• UNAME2: часть 2 имени IP.
Это поле содержит значение 2-й части ASCII-кодированного имени IP
макроядра USB.
26.3.10. Регистр состояния конечного автомата USB USBFSM
Битовая структура регистра показана в табл. 26.21
Табл. 26.21. Битовая структура регистра состояния конечного автомата USB
USBFSM
31 30 29 28 27 26 25 24
USBFSM
23 22 21 20 19 18 17 16
USBFSM
15 14 13 12 11 10 9 8
USBFSM
6 5 4 3 2 1
USBFSM
• USBFSM
Это полесодержит значение, соответствующее состоянию USB-контроллера.
Возможные значения этого битового поля приведены в табл. 26.22.
Табл. 26.22. Значения битового поля USBFSM
USBFSM
Описание
0 a_idle state: это начальное состояние для A-устройств (когда на ножке
ID - 0)
Табл. 26.22. (окончание)
USBFSM Описание
1 a_wait_vrise: в этом состоянии A-устройство ожидает, когда напряже- ние на Vbus превысит значение корректного порога VBus (4,4 В)
2 a_wait_bcon: в этом состоянии A-устройство ожидает В-устройство, чтобы сообщить о подключении
3 a_host: в этом состоянии A-устройство, которое работает в режиме хоста, является функционирующим
4 a_suspend: A-устройство, функционирующее как хост, находится в состоянии приостановки
5 6 a_peripheral: A-устройство работает как периферийное устройство a_wait_vfall: в этом состоянии A-устройство ожидает, когда напряжение на Vbus станет ниже корректного порога сессии (1,4 В)
7 a_vbus_err: в этом состоянии A-устройство ожидает восстановления предыдущего состояния, чтобы перейти в это состояние
8 a_wait_discharge: в этом состоянии A-устройство ожидает данных на линии usb (100 мкс)
9 b_idle: это начальное состояние для В-устройства (когда на ножке ID - 1)
10 b_peripheral: в этом состоянии В-устройство функционирует как периферийное устройство
11 b_wait_begin_hnp: в этом состоянии В-устройство находится в состоянии приостановки и ждет до 3 мс перед инициализацией HNP-протокола, если требуется
12 b_wait_discharge: в этом состоянии В-устройство ожидает данных на линии usb (100 мкс) перед тем, как стать хостом
13 b_wait_acon: в этом состоянии В-устройство ожидает A-устройства, что- бы сообщить о подключении, прежде чем В-устройство станет хостом
14 15 b_host: в этом состоянии В-устройство функционирует как хост b_srp_init: в этом состоянии В-устройство пытается запустить сессию, используя SRP-протокол
26.3.11. Регистры USB-устройства
26.3.11.1. Генеральный регистр управления устройством USB
UDCON
Битовая структура регистра показана в табл. 26.23.
Табл. 26.23. Битовая структура генерального регистра управления устрой-
ством USB UDCON
31 30 29 28 27 26 25 24
- - - - - - - -
Табл. 26.23.
(окончание)
"Тз 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
- - LS - - RMWKUP DETACH
7 6 5 4 3 2 1 0
"adden UADD
• UADD: адрес USB.
Устанавливается, чтобы сконфигурировать адрес устройства.
Сбрасывается аппаратно после получения сброса USB.
• ADDEN: разрешение доступа.
Устанавливается, чтобы активизировать поле UADD (USB-адрес).
Сбрасывается аппаратно после получения сброса USB. Программный
сброс этого бита не имеет никакого эффекта.
* DETACH: отключение.
Устанавливается, чтобы физически отключить устройство (отключает
встроенные подтянутые к плюсу «питания» резисторы от линий D+ и D—).
Сбрасывается, чтобы повторно подключить устройство.
• RMWKUP: удаленное «пробуждение».
Устанавливается, чтобы послать резюме upstream в хост для его уда-
ленного «пробуждения». Сбрасывается аппаратно после получения сброса
USB или сразу после посылки резюме upstream. Программный сброс этого
бита не имеет никакого эффекта.
* LS: вызов низкоскоростного (Low-Speed) режима.
Устанавливается, чтобы вызвать низкоскоростной режим. Сбрасывает-
ся, чтобы не вызывать этот режим. В этом случае активен полноскорост-
ной (full-speed) режим.
Следует заметить, что этот бит может быть установлен/сброшен, даже
если USBE = 0 или FRZCLK = 1. Отключение USB контроллера (сброс
бита USBE) не сбрасывает этот бит.
26.3.11.2. Регистр глобальных прерываний устройства USB
UDINT
Битовая структура регистра показана в табл. 26.24.
Табл. 26.24. Битовая структура регистра глобальных прерываний устройства
USB UDINT
31 30 29 28 27 26 25 24
- DMA6INT DMA5INT DMA4INT DMA3INT DMA2INT DMA1INT -
Табл. 26.24.
(окончание)
23 22 21 20 19 18 17 1б22~
- - - - - EP6INT EP5INT EP4INT'
15 14 13 12 11 10 9 8
EP3INT EP2INT EP1INT EP0INT - - - -
7 6 5 4 3 2 1 0
- UPRSM EORSM WAKEUP EORST SOF - SUSP~~
• SUSP: флаг прерывания от приостановки.
Устанавливается аппаратно, когда USB детектирует «приостановку», т. е.
неактивное состояние шины в течение 3 периодов фрейма (J-состояние
в течение 3 мс). Это вызывает прерывание USB, если SUSPE = 1. Этот бит
должен быть сброшен программно (путем установки бита SUSPC), чтобы
подтвердить прерывание. Сбрасывается аппаратно, когда генерируется пре-
рывание от «пробуждения» (WAKEUP).
* SOF: флаг прерывания от начала фрейма.
Устанавливается аппаратно, когда USB детектирует PID «начало фрей-
ма» (каждую 1 мс). Это вызывает прерывание USB, если SOFE = 1. Поле
FNUM модифицируется. Этот бит должен быть сброшен программно (пу-
тем установки бита SOFC), чтобы подтвердить прерывание.
* EORST: флаг прерывания по окончанию сброса.
Устанавливается аппаратно, когда USB детектирует «окончание сброса».
Это вызывает прерывание USB, если EORSTE = 1. Этот бит должен быть
сброшен программно (путем установки бита EORSTC), чтобы подтвердить
прерывание.
* WAKEUP: флаг прерывания от «пробуждения».
Асинхронное прерывание. Устанавливается аппаратно, когда USB-
контроллер «пробуждается» отфильтрованным активным сигналом на ли-
ниях (не резюме upstream). Это вызывает прерывание, если WAKEUPE = 1.
Этот бит должен быть сброшен программно (путем установки бита WAKE-
UPC), чтобы подтвердить прерывание, однако, предварительно должны
быть разрешены входы синхронизации USB. Сбрасывается аппаратно, ког-
да генерируется прерывание от приостановки (SUSP).
Следует заметить, что это прерывание может быть сгенерировано, даже
если синхросигнал USB остановлен битом FRZCLK.
* EORSM: флаг прерывания от окончания резюме.
Устанавливается аппаратно, когда USB детектирует корректный сиг-
нал «окончание резюме». Это вызывает прерывание USB, если EORSME —
1. Этот бит должен быть сброшен программно (путем установки бита
EORSMC), чтобы подтвердить прерывание.
* UPRSM: флаг прерывания резюме upstream.
Устанавливается аппаратно, когда USB-контроллер посылает сигнал
резюме, называемый «резюме upstream». Это вызывает прерывание USB,
если UPRSME = 1. Этот бит должен быть сброшен программно (путем
установки бита UPRSMC), чтобы подтвердить прерывание, однако, пред-
варительно должны быть разрешены входы синхронизации USB.
• EPXINT, X, где X = [0.. 6]: флаг прерывания от конечной точки X.
Устанавливается аппаратно, когда прерывание вызвано конечной точ-
кой X (UESTAX, UECONX). Это вызывает прерывание USB, если ЕРХ-
INTE = 1. Этот бит сбрасывается аппаратно, когда источник прерывания
обслуживается.
• DMAXINT, X, где X = [1.. 6]: флаг прерывания от канала DMA X.
Устанавливается аппаратно, когда прерывание вызвано каналом DMA
X. Это вызывает прерывание USB, если DMAXINTE = 1. Этот бит сбрасы-
вается аппаратно, когда прерывания UDDMAX_STATUS сбрасывается.
26.3.11.3. Регистр сброса глобальных прерываний
устройства USB UDINTCLR
Битовая структура регистра показана в табл. 26.25.
Табл. 26.25. Битовая структура регистра сброса глобальных прерываний
устройства USB UDINTCLR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- UPRSMC EORSMC WAKEUPC EORSTC SOFC SUSPC
* SUSPC: сброс флага прерывания от приостановки.
Устанавливается, чтобы сбросить SUSP.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
* SOFC: сброс флага прерывания от начала фрейма.
Устанавливается, чтобы сбросить SOF.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
* EORSTC: сброс флага прерывания от окончания сброса.
Устанавливается, чтобы сбросить EORST.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
* WAKEUPC: сброс флага прерывания от «пробуждения».
Устанавливается, чтобы сбросить WAKEUP.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
« EORSMC: сброс флага прерывания от окончания резюме.
Устанавливается, чтобы сбросить EORSM.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
* UPRSMC: сброс флага прерывания от резюме upstream.
Устанавливается, чтобы сбросить UPRSM.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
26.3.11.4. Регистр установки глобальных прерываний
устройства USB UDINTSET
Битовая структура регистра показана в табл. 26.26.
Табл. 26.26. Битовая структура регистра установки глобальных прерываний
устройства USB UDINTSET
31 30 29 28 27 26 25 24
- DMA6INTS DMA5INTS DMA4INTS DMA3INTS DMA2INTS DMA1INTS -
23 22 21 20 19 18 17 16
- - - . - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- UPRSMS EORSMS WAKEUPS EORSTS SOFS - SUSPS
* SUSPS: установка флага прерывания от приостановки.
Устанавливается, чтобы установить SUSP, что может быть полезно для
целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
* SOFS: установка флага прерывания от начала фрейма.
Устанавливается, чтобы установить SOF, что может быть полезно для
целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
* EORSTS: установка флага прерывания от окончания сброса.
Устанавливается, чтобы установить EORST, что может быть полезно
для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
• WAKEUPS: установка флага прерывания от «пробуждения».
Устанавливается, чтобы установить WAKEUP, что может быть полезно
для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
• EORSMS: установка флага прерывания от окончания резюме.
Устанавливается, чтобы установить EORSM, что может быть полезно
для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
* UPRSMS: установка флага прерывания от резюме upstream.
Устанавливается, чтобы установить UPRSM, что может быть полезно
для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
• DMAXINTS, X, где X = [1...6]: установка флага прерывания от канала
DMAX.
Устанавливается, чтобы установить DMAXINT, что может быть полез-
но для целей тестирования или отладки.
Сброс этого бита не имеет никакого эффекта.
Это флаг всегда читается как 0.
26.3.11.5. Регистр разрешения глобальных прерываний
устройства USB UDINTE
Битовая структура регистра показана в табл. 26.27.
Табл. 26.27. Битовая структура регистра разрешения глобальных прерыва-
ний устройства USB UDINTE
30 29 28 27 26 25 24
DMA6INTE DMA5INTE DMA4INTE DMA3INTE DMA2INTE DMA1INTE -
__ 23 22 21 20 19 18 17 16
- - - - - EP6INTE EP5INTE EP4INTE
15 14 13 12 11 10 9 8
EP3INTE EP2INTE EP1INTE EP0INTE - - - -
7 6 5 4 3 2 1 0
- UPRSME EORSME WAKEUPE EORSTE SOFE - SUSPE
• SUSPE: разрешение прерывания от приостановки.
Устанавливается программно (путем установки бита SUSPES), чтобы
разрешить прерывание от приостановки (SUSP).
Сбрасывается программно (путем установки бита SUSPEC), чтобы за-
претить прерывание от приостановки (SUSP).
* SOFE: разрешение прерывания от начала фрейма.
Устанавливается программно (путем установки бита SOFES), чтобы
разрешить прерывание от начала фрейма (SOF).
Сбрасывается программно (путем установки бита SOFEC), чтобы за-
претить прерывание от начала фрейма (SOF).
* EORSTE: разрешение прерывания от окончания сброса.
Устанавливается программно (путем установки бита EORSTES), чтобы
разрешить прерывание от окончания сброса (EORST).
Сбрасывается программно (путем установки бита EORSTEC), чтобы за-
претить прерывание от окончания сброса (EORST).
* WAKEUPE: разрешение прерывания от «пробуждения».
Устанавливается программно (путем установки бита WAKEUPES), что-
бы разрешить прерывание от «пробуждения» (WAKEUP).
Сбрасывается программно (путем установки бита WAKEUPEC, чтобы
запретить прерывание от «пробуждения» (WAKEUP).
* EORSME: разрешение прерывания от окончания резюме.
Устанавливается программно (путем установки бита EORSMES), чтобы
разрешить прерывание от окончания резюме (EORSM).
Сбрасывается программно (путем установки бита EORSMEC), чтобы
запретить прерывание от окончания резюме (EORSM).
* UPRSME: разрешение прерывания от резюме upstream.
Устанавливается программно (путем установки бита UPRSMES), чтобы
разрешить прерывание от резюме upstream (UPRSM).
Сбрасывается программно (путем установки бита UPRSMEC), чтобы
запретить прерывание от резюме upstream (UPRSM).
* EPXINTE, X, где X = [0.. 6]: разрешение прерывания от конечной точки X.
Устанавливается программно (путем установки бита EPXINTES), что-
бы разрешить прерывание от конечной точки X (EPXINT).
Сбрасывается программно (путем установки бита EPXINTEC), чтобы
запретить прерывание от конечной точки X (EPXINT).
• DMAXINTE, X, где X = [0.. 6]: разрешение прерывания от канала DMA
X.
Устанавливается программно (путем установки бита DMAXINTES),
чтобы разрешить прерывание от канала DMA X (DMAXINT).
Сбрасывается программно (путем установки бита DMAXINTEC), что-
бы запретить прерывание от канала DMA X (DMAXINT).
26.3.11.6. Регистр сброса разрешения глобальных
прерываний устройства USB UDINTECLR
Битовая структура регистра показана в табл. 26.28.
Табл. 26.28. Битовая структура регистра сброса разрешения глобальных
прерываний устройства USB UDINTECLR
“31 30 29 28 27 26 25 24
- DMA6INTEC DMA5INTEC DMA4INTEC DMA3INTEC DMA2INTEC DMA1INTEC -
23 22 21 20 19 18 17 16
- - - - - EP6INTEC EP5INTEC EP4INTEC
15 14 13 12 11 10 9 8
'EP3INTEC EP2INTEC EP1INTEC EP0INTEC - - - -
7 6 5 4 3 2 1 0
- UPRSMEC EORSMEC WAKEUPEC EORSTEC SOFEC - SUSPEC
• SUSPEC: сброс разрешения прерывания от приостановки.
Устанавливается, чтобы сбросить SUSPE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* SOFEC: сброс разрешения прерывания от начала фрейма.
Устанавливается, чтобы сбросить SOFE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* EORSTEC: сброс разрешения прерывания от окончания сброса.
Устанавливается, чтобы сбросить EORSTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* WAKEUPEC: сброс разрешения прерывания от «пробуждения».
Устанавливается, чтобы сбросить WAKEUPE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* EORSMEC: сброс разрешения прерывания от окончания резюме.
Устанавливается, чтобы сбросить EORSME.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* UPRSMEC: сброс разрешения прерывания от резюме upstream.
Устанавливается, чтобы сбросить UPRSME.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• EPXINTEC, X, где X = [0.. 6]: сброс разрешения прерывания от конеч-
ной точки X.
Устанавливается, чтобы сбросить EPXINTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• DMAXINTEC, X, где X = [0.. 6]: сброс разрешения прерывания от ка-
нала DMA X.
Устанавливается, чтобы сбросить DMAXINTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
26.3.11.7. Регистр установки разрешения глобальных
прерываний устройства USB UDINTESET
Битовая структура регистра показана в табл. 26.29.
Табл. 26.29. Битовая структура регистра установки разрешения глобальных
прерываний устройства USB UDINTESET
31 30 29 28 27 26 25 24
- DMA6INTES DMA5INTES DMA4INTES DMA3INTES DMA2INTES DMA1INTES -
23 22 21 20 19 18 17 16
- - - - - EP6INTES EP5INTES EP4INTES
15 14 13 12 11 10 9 8
EP3INTES EP2INTES EP1INTES EP0INTES - - - -
7 6 5 4 3 2 1 0
- UPRSMES EORSMES WAKEUPES EORSTES SOFES - SUSPES
* SUSPES: установка разрешения прерывания от приостановки.
Устанавливается, чтобы установить SUSPE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* SOFES: установка разрешения прерывания от начала фрейма.
Устанавливается, чтобы установить SOFE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* EORSTES: установка разрешения прерывания от окончания сброса.
Устанавливается, чтобы установить EORSTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• WAKEUPES: установка разрешения прерывания от «пробуждения».
Устанавливается, чтобы установить WAKEUPE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* EORSMES: установка разрешения прерывания от окончания резюме.
Устанавливается, чтобы установить EORSME.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* UPRSMES: установка разрешения прерывания от резюме upstream.
Устанавливается, чтобы установить UPRSME.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• EPXINTES, X, где X — [0.. б]: установка разрешения прерывания от
конечной точки X.
Устанавливается, чтобы установить EPXINTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* DMAXINTES, X, где X = [0.. 6]: установка разрешения прерывания от
канала DMA X.
Устанавливается, чтобы установить DMAXINTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
26.3.11.8. Регистр количества фреймов устройства USB
UDFNUM
Битовая структура регистра показана в табл. 26.30.
Табл. 26.30. Битовая структура регистра количества фреймов устройства
USB UDFNUM
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
FNCERR - FNUM
7 6 5 4 3 2 1 0
FNUM - - -
* FNUM: количество фреймов.
Значение этого поля устанавливается аппаратно. В нем содержится ин-
формация о количестве фреймов. Она находится в последнем получен-
ном SOF-пакете. Это поле сбрасывается аппаратно после получения сброса
USB.
Следует заметить, что поле FNUM модифицируется, даже если получен
разрушенный SOF.
• FNCERR: количество фреймов с ошибкой CRC.
Значение этого поля устанавливается аппаратно при получении коли-
чества разрушенных фреймов. Этот бит и флаг прерывания SOF модифи-
цируются одновременно. Это поле сбрасывается аппаратно после получе-
ния сброса USB.
26.3.11.9. Регистр разрешения/сброса конечной точки USB
UERST
Битовая структура регистра показана в табл. 26.31.
Табл. 26.31. Битовая структура регистра разрешения/сброса конечной точки
USB UERST
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- EPRST6 EPRST5 EPRST4 EPRST3 EPRST2 EPRST1 EPRST0
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- EPEN6 EPEN5 EPEN4 EPEN3 EPEN2 EPEN1 EPEN0
* EPENX, X, где X = [0.. 6]: разрешение конечной точки X.
Устанавливается, чтобы разрешить конечную точку X. Сброс этого бита
отключает конечную точку X: конечная точка X переходит в неактивное
состояние (не дает ответов на запросы USB), а также сбрасываются реги-
стры конечной точки X (UECFGX, UESTAX, UECONX), но не ее конфи-
гурация (ALLOC, ЕРВК, EPSIZE, EPDIR, EPTYPE).
• EPRSTX, X, где X = [0.. 6]: сброс конечной точки X.
Устанавливается программно, чтобы сбросить буфер FIFO конечной
точки X до любой другой операции после аппаратного сброса или до по-
лучения сброса шины USB. Это сбрасывает регистры конечной точки X
(UECFGX, UESTAX, UECONX), но не ее конфигурацию (ALLOC, ЕРВК,
EPSIZE, EPDIR, EPTYPE). Весь механизм конечной точки (счетчик бу-
фера FIFO, прием, передача и т. д.) сбрасывается, кроме поля последова-
тельности переключателя данных (DTSEQ), которое может быть сброшено
установкой бита RSTDT (путем установки бита RSTDTS). Конфигурация
конечной точки остается активной, и конечная точка все еще остается раз-
решенной. После этого бит EPRSTX может быть сброшен программно,
чтобы завершить операцию сброса и начать использование буфера FIFO.
Бит сбрасывается аппаратно после получения сброса USB.
26.3.11.10. Регистр конфигурации конечной точки X USB
UECFGX, где X = [0... 6]
Битовая структура регистра показана в табл. 26.32.
Табл. 26.32. Битовая структура регистра конфигурации конечной точки X
USB UECFGX, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - EPTYPE AUTOSW EPDIR
7 6 5 4 3 2 1 0
- EPSIZE ЕРВК ALLOC -
* ALLOC: распределение (выделение) памяти для конечной точки.
Устанавливается, чтобы распределить память для конечной точки.
Сбрасывается, чтобы освободить память конечной точки.
Сбрасывается аппаратно после получения сброса USB (кроме конечной
точки 0).
Необходимо заметить, что после установки этого бита программа долж-
на проверить состояние бита CFGOK, чтобы определить, является ли рас-
пределение памяти этой конечной точки корректным.
* ЕРВК: банки конечной точки.
С помощью этого битового поля производится выбор количества бан-
ков конечной точки, как показано в табл. 26.33.
Табл. 26.33. Возможные значения битового поля ЕРВК
ЕРВК Банки конечной точки
0 0 1 (конечная точка с единственным банком)
0 1 2 (конечная точка с двойным банком)
1 0 3 (конечная точка с тройным банком)
1 1 Зарезервировано
Для конечных точек управления должна быть выбрана конечная точка
с единственным банком (ЕРВК=00Ь).
• EPSIZE: размер конечной точки.
С помощью этого битового поля производится выбор размера банка
каждой конечной точки, как показано в табл. 26.34.
Табл. 26.34. Возможные значения битового поля EPSIZE
EPSIZE
ООО
О 0 1
О 1 о
О 1 1
1 о о
1 0 1
1 1 о
1 1 1
Размер конечной точки
8 байт
16 байт
32 байта
64 байта
128 байт
256 байт
512 байт
1024 байта
Это поле сбрасывается аппаратно после получения сброса USB (кроме
конечной точки 0).
* EPDIR: направление конечной точки.
С помощью этого битового поля производится выбор направления
конечной точки. Если поле равно 0, то конечная точка является конеч-
ной точкой OUT, если 1 — то конечной точкой IN (кроме конечных точек
управления). Это поле сбрасывается аппаратно после получения сброса
USB.
• AUTOSW: автоматическое переключение.
Устанавливается, чтобы банк автоматически переключался, когда он
готов. Сбрасывается, чтобы отключить автоматическую коммутацию бан-
ков. Это поле сбрасывается аппаратно после получения сброса USB.
• EPTYPE: тип конечной точки.
С помощью этого битового поля производится выбор типа конечной
точки, как показано в табл. 26.35. Это поле сбрасывается аппаратно после
получения сброса USB.
Табл. 26.35. Возможные значения битового поля EPTYPE
EPTYPE Тип конечной точки __
0 0 Конечная точка управления
0 1 Изохронная конечная точка
1 0 Конечная точка массива
1 1 Конечная точка по прерыванию _
26.3.11.11. Регистр состояния конечной точки X USB UESTAX,
где X = [0... 6]
Битовая структура регистра показана в табл. 26.36.
Табл. 26.36. Битовая структура регистра состояния конечной точки X USB
UESTAX, где X = [0... 6]
30 29 28 27 26 25
24
31
BYCT
23 22 21 20 19 18 17 16
BYCT - CFGOK CTRLDIR RWALL
15 14 13 12 11 10 9 8
CURRBK NBUSYBK - - DTSEQ
7 6 5 4 3 2 1 0
SHORT PACKET STALLEDI/ CRCERRI OVERFI NAKINI NAKOUTI RXSTPI/ UNDERFI RXOUTI TXINI
* TXINI: флаг прерывания по передаче данных IN.
Для конечных точек управления:
Устанавливается аппаратно, когда текущий банк готов принять новый
пакет IN. Это вызывает прерывание EPXINT, если TXINE = 1. Должен
быть сброшен программно (путем установки бита TXINIC), чтобы под-
твердить прерывание и послать пакет.
Для изохронных конечных точек, конечных точек массивов и конечных
точек по прерыванию IN:
Устанавливается аппаратно одновременно с FIFOCON, когда текущий
банк становится свободным. Это вызывает прерывание EPXINT, если
TXINE = 1. Должен быть сброшен программно (путем установки бита
TXINIC), чтобы подтвердить прерывание, что не имеет никакого влия-
ния на буфер FIFO конечной точки. В этом случае программа произво-
дит запись в буфер FIFO и сбрасывает бит FIFOCON, чтобы позволить
USB-контроллеру посылать данные. Если конечная точка IN составлена из
множества банков, производится также переключение на следующий банк.
Биты TXINI и FIFOCON модифицируются аппаратно в соответствии с со-
стоянием следующего банка. Бит TXINI будет всегда сбрасываться перед
сбросом FIFOCON. Этот бит не является значащим (сброшен) для изо-
хронных конечных точек, конечных точек массивов и конечных точек по
прерыванию OUT.
* RXOUTI: флаг прерывания по приему данных OUT.
Для конечных точек управления:
Устанавливается аппаратно, когда текущий банк содержит пакет OUT.
Это вызывает прерывание EPXINT, если RXOUTE = 1. Должен быть сбро-
шен программно (путем установки бита RXOUTIC), чтобы подтвердить
прерывание и освободить банк.
Для изохронных конечных точек, конечных точек массивов и конечных
точек по прерыванию OUT:
Устанавливается аппаратно одновременно с битом FIFOCON, ког-
да текущий банк полон. Это вызывает прерывание EPXINT, если RX-
OUTE = 1. Должен быть сброшен программно (путем установки бита
RXOUTIC), чтобы подтвердить прерывание, что не имеет никакого
влияния на буфер FIFO конечной точки. В этом случае программа чи-
тает буфер FIFO и сбрасывает бит FIFOCON, чтобы сделать банк сво-
бодным. Если конечная точка составлена из множества банков, про-
изводится также переключение на следующий банк. Биты RXOUTI
и FIFOCON модифицируются аппаратно в соответствии с состоянием
следующего банка. Бит RXOUTI будет всегда сбрасываться перед сбро-
сом FIFOCON. Этот бит не является значащим (сброшен) для изохрон-
ных конечных точек, конечных точек массивов и конечных точек по
прерыванию IN.
• RXSTPI: флаг прерывания по приему SETUP.
Для конечных точек управления устанавливается аппаратно, что-
бы указать на то, что текущий банк содержит новый корректный пакет
SETUP. Это вызывает прерывание EPXINT, если RXSTPE = 1. Должен
быть сброшен программно (путем установки бита RXSTPIC), чтобы под-
твердить прерывание и освободить банк. Этот бит не является значащим
(сброшен) для конечных точек массивов и конечных точек по прерыванию
IN/OUT и управляется битом UNDERFI для изохронных конечных точек
IN/OUT.
* UNDERFI: флаг прерывания от антипереполнения.
Для изохронных конечных точек IN/OUT устанавливается аппаратно,
когда происходит ошибка антипереполнения. Это вызывает прерывание
EPXINT, если UNDERFE == 1.
Антипереполнение может произойти в течение стадии IN, если хост пы-
тается производить чтение из пустого банка. В этом случае USB-контроллер
автоматически посылает пакет нулевой длины.
Антипереполнение может также произойти в течение стадии OUT, если
хост посылает пакет, в то время как банк уже полон. Как правило, ЦПУ не
успевает обработать эту ситуацию и пакет теряется.
Бит должен быть сброшен программно (путем установки бита UNDER-
FIC), чтобы подтвердить прерывание.
Этот бит неактивен (сброшен) для конечных точек массивов и конеч-
ных точек по прерыванию IN/OUT и отображает состояние RXSTPI для
конечных точек управления.
• NAKOUTI: флаг прерывания OUT NAK.
Устанавливается аппаратно, когда NAK посылается в ответ на запрос
OUT от хоста. Это вызывает прерывание EPXINT, если NAKOUTE = 1.
Бит должен быть сброшен программно (путем установки бита NAKOU-
TIC), чтобы подтвердить прерывание.
• NAKINI: флаг прерывания IN NAK.
Устанавливается аппаратно, когда NAK посылается в ответ на запрос
IN от хоста. Это вызывает прерывание EPXINT, если NAKINE = 1.
Бит должен быть сброшен программно (путем установки бита NAKI-
NIC), чтобы подтвердить прерывание.
• OVERFI: флаг прерывания от переполнения.
Устанавливается аппаратно, когда происходит ошибка переполнения.
Это вызывает прерывание EPXINT, если OVERFE = 1.
Для всех типов конечных точек переполнение может произойти в те-
чение стадии OUT, если хост пытается производить запись в банк, ко-
торый является слишком маленьким для пакета. Пакет подтверждает-
ся и принимается, прерывание от данных OUT (RXOUTI) переходит
в активный уровень, как будто никакое переполнение не произошло.
При этом банк заполняется начальными байтами пакета, которые там
помещаются.
Бит должен быть сброшен программно (путем установки бита OVER-
FIC), чтобы подтвердить прерывание.
* STALLEDI: флаг прерывания от STALL.
Устанавливается аппаратно, чтобы сообщить о посылке STALL. Что-
бы сделать это, программа должно установить бит STALLRQ (путем
установки бита STALLRQS). Это вызывает прерывание EPXINT, если
STALLEDE = 1.
Бит должен быть сброшен программно (путем установки бита
STALLEDIC), чтобы подтвердить прерывание.
* CRCERRI: флаг прерывания от ошибки CRC.
Устанавливается аппаратно, чтобы сообщить об ошибке CRC, обнару-
женной в изохронной конечной точке. При этом пакет сохранятся в банке,
как будто никакая ошибка CRC не произошла. Это вызывает прерывание
EPXINT, если CRCERRE = 1.
Бит должен быть сброшен программно (путем установки бита CRCER-
RIC), чтобы подтвердить прерывание.
* SHORTPACKET: флаг прерывания от короткого пакета.
Для конечных точек OUT (кроме конечных точек управления) уста-
навливается аппаратно, когда был получен короткий пакет. Для конечных
точек IN (кроме конечных точек управления) устанавливается аппаратно,
когда короткий пакет передан после окончания перемещения через DMA.
Таким образом сигнализируется о конце передачи изохронного фрейма
или объема или о конце передачи фрейма массивов или фрейма по пре-
рыванию. Это происходит только в том случае, если установлен бит разре-
шения окончания выходного буфера DMA (DMAEND_EN) и бит автома-
тического переключателя (AUTOSW). Это вызывает прерывание EPXINT,
если SHORTPACKETE = 1.
Бит должен быть сброшен программно (путем установки бита SHORT-
РАСКЕТС), чтобы подтвердить прерывание.
Табл. 26.37. Возможные значения битового поля DTSEQ
DTSEQ Последовательность переключателя данных
0 0 DataO
0 1 Datal
1 X Зарезервировано
DTSEQ: последовательность переключателя данных.
Это битовое поле устанавливается аппаратно, чтобы указать PID теку,
щего банка, как показано в табл. 26.37.
Для передач IN это поле указывает последовательность переключе-
ния данных, которая будет использоваться для следующего пакета, ко-
торый будет послан. Значение этого поля указывается не относительно
текущего банка.
Для передач OUT это поле указывает последнюю последовательность
переключения данных, принятых в текущий банк.
Следует заметить, что по умолчанию DTSEQ = 01b, как будто послед-
ней последовательностью переключения данных было значение Datal, по-
этому следующим значением переключателя передаваемых или ожидаемых
данных должно быть DataO.
* NBUSYBK: количество занятых банков.
Устанавливается аппаратно, чтобы указать количество занятых банков,
как показано в табл. 26.38.
Для конечных точек IN это поле указывает количество банков, запол-
ненных пользователем и готовых к передаче IN. Когда все банки свободны,
это может вызвать прерывание EPXINT, если NBUSYBKE = 1.
Для конечных точек OUT это поле указывает количество банков, за-
полненных транзакциями от хоста. Когда все банки заняты, это может
вызвать прерывание EPXINT, если NBUSYBKE = 1.
Следует заметить, что когда бит FIFOCON сбрасывается (путем уста-
новки бита FIFOCONC), это поле модифицируется спустя 2 или 3 такто-
вых цикла'
Прерывание EPXINT генерируется в следующих случаях:
• для конечной точки IN, когда NBUSYBKE = 1 и все банки сво-
бодны,
Табл. 26.38. Возможные значения битового поля NBUSYBK
NBUSYBK Количество занятых банков
0 0 (все банки свободны)
0 1 1
1 0 2
1 1 3 _
Табл. 26.39. Возможные значения битового поля CURRBK
CURRBK Текущий банк
0 0 BankO
0 1 Bankl
1 0 Bank2
1 1 ВапкЗ __
• для конечной точки OUT, когда NBUSYBKE = 1 и все банки заняты.
. CURRBK: текущий банк.
Для конечных точек (кроме конечных точек управления) это поле
устанавливается аппаратно, чтобы указать текущий банк, как показано
в табл. 26.39.
Следует заметить, что это поле может быть модифицировано через
1 тактовый цикл после изменения поля RWALL, поэтому программа не
должна опрашивать это поле, как флаг прерывания.
• RWALL: чтение/запись возможны.
Для конечных точек IN этот бит устанавливается аппаратно, когда те-
кущий банк не полон, т. е. программа может записывать дальнейшие дан-
ные в буфер FIFO.
Для конечных точек OUT этот бит устанавливается аппаратно, когда
текущий банк не пуст, т. е. программа может читать дальнейшие данные
из буфера FIFO.
Этот бит никогда не устанавливается, если STALLRQ = 1 или в случае
ошибки. В противном случае, сбрасывается аппаратно.
Этот бит не должен использоваться для конечных точек управления.
* CTRLDIR: направление управления.
Устанавливается аппаратно после пакета SETUP, чтобы указать направ-
ление следующего пакета: 0 — OUT, 1 — IN. Не может быть установлен или
сброшен программно.
* CFGOK: состояние конфигурации ОК.
Этот бит модифицируется, когда устанавливается бит ALLOC. Этот бит
устанавливается аппаратно, если количество банков (ЕРВК) и размер (EPSIZE)
конечной точки X корректны по сравнению с максимально допустимым ко-
личеством банков и размером для этой конечной точки, а также по сравнению
с максимально допустимым размером буфера FIFO (т. е. размером DPRAM).
Если этот бит сбрасывается аппаратно, программа должна переконфигу-
рировать регистр UECFGX с корректными значениями EPSIZE и ЕРВК.
• BYCT: счет байтов.
Устанавливается аппаратно, чтобы указать количество подсчитанных
байтов в буфере FIFO.
Для конечных точек IN это поле инкрементируется после каждого бай-
та, записанного программой в конечную точку, и декрементируется после
каждого байта, посланного хосту.
Для конечных точек OUT это поле инкрементируется после каждого
байта, полученного от хоста, и декрементируется после каждого байта,
прочитанного программой из конечной точки.
Следует заметить, что это поле может быть модифицировано через
1 тактовый цикл после изменения поля RWALL, поэтому программа не
Должна опрашивать это поле как флаг прерывания.
26.3.11.12. Регистр сброса состояния конечной точки X USB
UESTAXCLR, где X = [0... 6]
Битовая структура регистра показана в табл. 26.40.
Табл. 26.40. Битовая структура регистра сброса состояния конечной точки
X USB UESTAXCLR, где X = [0... 6] и
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 и 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
SHORT РАСКЕТС STALLEDIC/ CRCERRIC OVERFIC NAKINIC NAKOUTIC RXSTPIC/ UNDERFIC RXOUTIC TXINIC
* TXINIC: сброс флага прерывания от передачи данных IN.
Устанавливается, чтобы сбросить TXINI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* RXOUTIC: сброс флага прерывания от приема данных OUT.
Устанавливается, чтобы сбросить RXOUTI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* RXSTPIC: сброс флага прерывания от приема SETUP.
Устанавливается, чтобы сбросить RXSTPI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* UNDERFIC: сброс флага прерывания от антипереполнения.
Устанавливается, чтобы сбросить UNDERFI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
• NAKOUTIC: сброс флага прерывания от NAK OUT.
Устанавливается, чтобы сбросить NAKOUTI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
• NAKINIC: сброс флага прерывания от NAK IN.
Устанавливается, чтобы сбросить NAKINI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* OVERFIC: сброс флага прерывания от переполнения.
Устанавливается, чтобы сбросить OVERFI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
• STALLEDIC: сброс флага прерывания от STALL.
Устанавливается, чтобы сбросить STALLEDI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* CRCERRIC: сброс флага прерывания от ошибки CRC.
Устанавливается, чтобы сбросить CRCERRI.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* SHORTPACKETC: сброс флага прерывания от короткого пакета.
Устанавливается, чтобы сбросить SHORTPACKET.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
26.3.11.13. Регистр установки состояния конечной точки X
USB UESTAXSET, где X = [0... 6]
Битовая структура регистра показана в табл. 26.41.
Табл. 26.41. Битовая структура регистра установки состояния конечной точ-
ки X USB UESTAXSET, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - NBUSYBKS - - - -
7 6 5 4 3 2 1 0
SHORT JACKETS STALLEDIS/ CRCERRIS OVERFIS NAKINIS NAKOUTIS RXSTPIS/ UNDERFIS RXOUTIS TXINIS
* TXINIS: установка флага прерывания от передачи данных IN.
Устанавливается, чтобы установить TXINI, что может быть полезно для
испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
• RXOUTIS: установка флага прерывания от приема данных OUT.
Устанавливается, чтобы установить RXOUTI, что может быть полезно
Для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
♦ RXSTPIS: установка флага прерывания от приема SETUP.
Устанавливается, чтобы установить RXSTPI, что может быть полезно
для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* UNDERFIS: установка флага прерывания от антипереполнения.
Устанавливается, чтобы установить UNDERFI, что может быть полезно
для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
• NAKOUTIS: установка флага прерывания от NAK OUT.
Устанавливается, чтобы установить NAKOUTI, что может быть полезно
для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* NAKINIS: установка флага прерывания от NAK IN.
Устанавливается, чтобы установить NAKINI, что может быть полезно
для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* OVERFIS: установка флага прерывания от переполнения.
Устанавливается, чтобы установить OVERFI, что может быть полезно
для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
• STALLEDIS: установка флага прерывания от STALL.
Устанавливается, чтобы установить STALLEDI, что может быть полезно
для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* CRCERRIS: установка флага прерывания от ошибки CRC.
Устанавливается, чтобы установить CRCERRI, что может быть полезно
для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
* SHORTPACKETS: установка флага прерывания от короткого пакета.
Устанавливается, чтобы установить SHORTPACKET, что может быть
полезно для испытательных или отладочных целей.
Сброс не имеет никакого эффекта.
Всегда читается как 0.
• NBUSYBKS: установка флага прерывания от количества занятых банков.
Устанавливается, чтобы установить флаг прерывания от количества за-
нятых банков (NBUSYBK), что может быть полезно для испытательных
или отладочных целей.
Устанавливается повторно, чтобы сбросить флаг прерывания от коли-
чества занятых банков (NBUSYBK).
Сброс не имеет никакого эффекта.
Всегда читается как 0.
26.3.11.14. Регистр управления конечной точки X USB
UECONX, где X = [0... 6]
ритовая структура регистра показана в табл. 26.42.
Табл. 26.42. Битовая структура регистра управления конечной точки X USB
UECONX, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - STALLRQ RSTDT - EPDISHDMA
15 14 13 12 11 10 9 8
- FIFOCON KILLBK NBUSYBKE - - - -
7 6 5 4 3 2 1 0
SHORT PACKETE STALLEDE/ CRCERRE OVERFE NAKINE NAKOUTE RXSTPE/ UNDERFE RXOUTE TXINE
* TXINE: разрешение прерывания от передачи данных IN.
Устанавливается программно (путем установки бита TXINES), чтобы
разрешить прерывание от передачи данных IN (TXINI).
Сбрасывается программно (путем установки бита TXINEC), чтобы за-
претить прерывание от передачи данных IN (TXINI).
* RXOUTE: разрешение прерывания от приема данных OUT.
Устанавливается программно (путем установки бита RXOUTES), чтобы
разрешить прерывание от приема данных OUT (RXOUT).
Сбрасывается программно (путем установки бита RXOUTEC), чтобы
запретить прерывание от приема данных OUT (RXOUT).
* RXSTPE: разрешение прерывания от приема SETUP.
Устанавливается программно (путем установки бита RXSTPES), чтобы
Разрешить прерывание от приема SETUP (RXSTPI).
Сбрасывается программно (путем установки бита RXSTPEC), чтобы за-
претить прерывание от приема SETUP (RXSTPI).
* UNDERFE: разрешение прерывания от антипереполнения.
Устанавливается программно (путем установки бита UNDERFES), что-
бы разрешить прерывание от антипереполнения (UNDERFI).
Сбрасывается программно (путем установки бита UNDERFEC), чтобы
запретить прерывание от антипереполнения (UNDERFI).
• NAKOUTE: разрешение прерывания от NAK OUT.
Устанавливается программно (путем установки бита NAKOUTES), что-
бы разрешить прерывание от NAK OUT (NAKOUTI).
Сбрасывается программно (путем установки бита NAKOUTEC), чтобы
запретить прерывание от NAK OUT (NAKOUTI).
* NAKINE: разрешение прерывания от NAK IN.
Устанавливается программно (путем установки бита NAKINES), чтобы
разрешить прерывание от NAK IN (NAKINI).
Сбрасывается программно (путем установки бита NAKINEC), чтобы
запретить прерывание от NAK IN (NAKINI).
* OVERFE: разрешение прерывания от переполнения.
Устанавливается программно (путем установки бита OVERFES), чтобы
разрешить прерывание от переполнения (OVERFI).
Сбрасывается программно (путем установки бита OVERFEC), чтобы
запретить прерывание от переполнения (OVERFI).
* STALLEDE: разрешение прерывания от STALL.
Устанавливается программно (путем установки бита STALLEDES), что-
бы разрешить прерывание от STALL (STALLEDI).
Сбрасывается программно (путем установки бита STALLEDEC), чтобы
запретить прерывание от STALL (STALLEDI).
* CRCERRE: разрешение прерывания от ошибки CRC.
Устанавливается программно (путем установки бита CRCERRES), что-
бы разрешить прерывание от ошибки CRC (CRCERRI).
Сбрасывается программно (путем установки бита CRCERREC), чтобы
запретить прерывание от ошибки CRC (CRCERRI).
* SHORTPACKETE: разрешение прерывания от короткого пакета.
Устанавливается программно (путем установки бита SHORTPACK-
ETES), чтобы разрешить прерывание от короткого пакета (SHORTPACK-
ET).
Сбрасывается программно (путем установки бита SHORTPACKETEC),
чтобы запретить прерывание от короткого пакета (SHORTPACKET).
* NBUSYBKE: разрешение прерывания от количества занятых банков.
Устанавливается программно (путем установки бита NBUSYBKES),
чтобы разрешить прерывание от количества занятых банков (NBUSYBK).
Сбрасывается программно (путем установки бита NBUSYBKEC), что-
бы запретить прерывание от количества занятых банков (NBUSYBK).
* KILLBK: уничтожить банк IN.
Устанавливается программно (путем установки бита KILLBKS), чтобы
уничтожить последний записанный банк.
Сбрасывается аппаратно, когда банк уничтожен.
Предостережение: банк действительно очищается, когда макроядром
USB выполняется процедура «уничтожение пакета». Этот бит автоматиче-
ски сбрасывается после окончания процедуры. Возможны следующие ва-
рианты выполнения этой процедуры:
• банк действительно очищается или банк посылается (перемещение
IN): NBUSYBK декрементируется;
• банк не очищается, но посылается (перемещение IN): NBUSYBK
декрементируется;
• банк не очищается, потому что он был пустым.
Программа должна ожидать сброса этого бита перед попыткой уни-
чтожить другой пакет.
• FIFOCON: управление FIFO.
Для конечных точек управления:
Биты FIFOCON и RWALL не являются значащими. По этой причине
программа не должна использовать их для этих конечных точек. При чте-
нии эти биты возвращают всегда 0.
Для конечных точек IN:
Устанавливается аппаратно, когда текущий банк свободен одновремен-
но с установкой TXINI.
Сбрасывается программно (путем установки бита FIFOCONC), чтобы
послать данные в FIFO и переключиться на следующий банк.
Для конечных точек OUT:
Устанавливается аппаратно, когда текущий банк полон одновременно
с установкой RXOUTI.
Сбрасывается программно (путем установки бита FIFOCONC), чтобы
сделать текущим свободный банк и переключиться на следующий банк.
• EPDISHDMA: разрешение отключения запроса HDMA по прерыванию
конечной точки.
Устанавливается программно (путем установки бита EPDISHDMAS),
чтобы приостановить производимое через канал DMA X перемещение по
прерыванию любой конечной точки X (EPXINT) независимо от состояния
бита разрешения прерывания конечной точки X (EPXINTE). В этом случае
программа должна подтвердить или отключать источник прерывания (на-
пример, RXOUTI) или сбросить бит EPDISHDMA (путем установки бита
EPDISHDMAC), чтобы завершать перемещение через DMA.
В режиме «пинг-понга», если прерывание связано с новым пакетом си-
стемного банка (например, Bankl), а текущее перемещение DMA выполня-
ется для предыдущего пакета (BankO), то перемещение DMA предыдущего
пакета завершается нормально, но перемещение нового пакет DMA не бу-
дет начато (запрошено).
Если прерывание не связано с новым пакетом системного банка (NA-
KINI, NAKOUTI и т. д.), то отмена запроса может происходить в любое
время и может немедленно приостановить текущее перемещение DMA.
Это может использоваться, например, чтобы идентифицировать ошибоч-
ные пакеты, препятствовать их передаче в буфер, завершить перемещение
DMA программно после приема короткого пакета и т. д.
* RSTDT: сбросить переключатель данных.
Устанавливается программно (путем установки бита RSTDTS), чтобы
сбросить последовательность переключения данных, т. е. установить в после-
довательности переключения данных DataO для следующего посланного (для
конечных точек IN) или полученного (для конечных точек OUT) пакета.
Сбрасывается аппаратно мгновенно. При этом программа не должна
ждать сброса этого бита.
• STALLRQ: запрос STALL.
Устанавливается программно (путем установки бита STALLRQS), что-
бы послать запрос установления связи STALL хосту.
Сбрасывается аппаратно, когда новый пакет SETUP получен. Может
быть также сброшен программно путем установки бита STALLRQC.
26.3.11.15. Регистр управления сбросом конечной точки X
USB UECONXCLR, где X = [0... 6]
Битовая структура регистра показана в табл. 26.43.
Табл. 26.43. Битовая структура регистра управления сбросом конечной точ-
ки X USB UECONXCLR, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - STALLRQC - - EPDISHDMAC*
15 14 13 12 11 10 9 8
- FIFOCONC - NBUSYBKEC - - - -
7 6 5 4 3 2 1 0
SHORT РАСКЕТС STALLEDEC/ CRCERREC OVERFEC NAKINEC NAKOUTEC RXSTPEC/ UNDERFEC RXOUTEC TXINEC
* TXINEC: сброс разрешения прерывания от передачи данных IN.
Устанавливается, чтобы сбросить TXINE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* RXOUTEC: сброс разрешения прерывания от приема данных OUT.
Устанавливается, чтобы сбросить RXOUTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* RXSTPEC: сброс разрешения прерывания от приема SETUP.
Устанавливается, чтобы сбросить RXSTPE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* UNDERFEC: сброс разрешения прерывания от антипереполнения.
Устанавливается, чтобы сбросить UNDERFE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• NAKOUTEC: сброс разрешения прерывания от NAK OUT.
Устанавливается, чтобы сбросить NAKOUTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• NAKINEC: сброс разрешения прерывания от NAK IN.
Устанавливается, чтобы сбросить NAKINE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• OVERFEC: сброс разрешения прерывания от переполнения.
Устанавливается, чтобы сбросить OVERFE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* STALLEDEC: сброс разрешения прерывания от STALL.
Устанавливается, чтобы сбросить STALLEDE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• CRCERREC: сброс разрешения прерывания от ошибки CRC.
Устанавливается, чтобы сбросить CRCERRE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• SHORTPACKETEC: сброс разрешения прерывания от короткого пакета.
Устанавливается, чтобы сбросить SHORTPACKETE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• NBUSYBKEC: сброс разрешения прерывания от количества занятых
банков.
Устанавливается, чтобы сбросить NBUSYBKE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• FIFOCONC: сброс бита управления FIFO.
Устанавливается, чтобы сбросить FIFOCON.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* EPDISHDMAC: сброс разрешения бита отключения запроса HDMA по
прерыванию конечной точки.
Устанавливается, чтобы сбросить EPDISHDMA.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• STALLRQC: сброс бита запроса STALL.
Устанавливается, чтобы сбросить STALLRQ.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
26.3.11.16. Регистр управления установкой конечной точки X
USB UECONXSET, где X = [0... 6]
Битовая структура регистра показана в табл. 26.44.
Табл. 26.44. Битовая структура регистра управления установкой конечной
точки X USB UECONXSET, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
Табл. 26.44. (окончание)
23 22 21 20 19 18 17
- - - - STALLRQS RSTDTS - epdishdmXI'
15 14 1 3 12 11 10 9 8J2
- - KILLBKS NBUSYBKES - -
7 6 5 4 3 2 1 0
SHORT PACKETES STALLEDES/ CRCERRES OVERFES NAKINES NAKOUTES RXSTPES/ UNDERFES RXOUTES TXINES
* TXINES: установка разрешения прерывания от передачи данных IN.
Устанавливается, чтобы установить TXINE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* RXOUTES: установка разрешения прерывания от приема данных OUT.
Устанавливается, чтобы установить RXOUTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• RXSTPES: установка разрешения прерывания от приема SETUP.
Устанавливается, чтобы установить RXSTPE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* UNDERFES: установка разрешения прерывания от антипереполнения.
Устанавливается, чтобы установить UNDERFE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• NAKOUTES: установка разрешения прерывания от NAK OUT.
Устанавливается, чтобы установить NAKOUTE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* NAKINES: установка разрешения прерывания от NAK IN.
Устанавливается, чтобы установить NAKINE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* OVERFES: установка разрешения прерывания от переполнения.
Устанавливается, чтобы установить OVERFE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• STALLEDES: установка разрешения прерывания от STALL.
Устанавливается, чтобы установить STALLEDE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* CRCERRES: установка разрешения прерывания от ошибки CRC.
Устанавливается, чтобы установить CRCERRE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• SHORTPACKETES: установка разрешения прерывания от короткого
пакета.
Устанавливается, чтобы установить SHORTPACKETE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• NBUSYBKES: установка разрешения прерывания от количества заня-
тых банков.
Устанавливается, чтобы установить NBUSYBKE.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* KILLBKS: установка бита уничтожения банка IN.
Устанавливается, чтобы установить KILLBK.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
* EPDISHDMAS: установка разрешения отключения запроса HDMA по
прерыванию конечной точки.
Устанавливается, чтобы установить EPDISHDMA.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• RSTDTS: установка бита сброса переключателя данных.
Устанавливается, чтобы установить RSTDT.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
• STALLRQS: установка бита запроса STALL.
Устанавливается, чтобы установить STALLRQ.
Сброс этого бита не имеет никакого эффекта.
Всегда читается как 0.
26.3.11.17. Регистр адреса следующего дескриптора канала
X DMA устройства USB UDDMAX_NEXTDESC,
где X = [0... 6]
Битовая структура регистра показана в табл. 26.45.
Табл. 26.45. Битовая структура регистра адреса следующего дескриптора
канала X DMA устройства USB UDDMAX_NEXTDESC, где
X = [0... 6]
31 30 29 28 27 26 25 24
NXT DESC_ADDR
23 22 21 20 19 18 17 16
NXT DESC ADDR
(окончание
15 14 13 12 11 10 9 8^*
NXT_DESC_ADDR —
Табл. 26.45.
7 6 | 5 | 4 3 2 1 o' '
NXT_DESC_ADDR - - - —
• NXT_DESC_ADDR: адрес следующего дескриптора.
Это поле содержит разряды 31:4 16-байтового выровненного адреса сле-
дующего дескриптора канала, который будет обработан.
Необходимо заметить, что это поле может быть записано как программ-
но, так и аппаратно при загрузке дескриптора.
26.3.11.18. Регистр адреса HSB канала X DMA устройства
USB UDDMAX_ADDR, где X = [0... 6]
Битовая структура регистра показана в табл. 26.46.
Табл. 26.46. Битовая структура регистра адреса HSB канала X DMA устрой-
ства USB UDDMAX_ADDR, где X = [0... 6]
31 30 29 28 27 26 25 24
HSB_ADDR
23 22 21 20 19 18 17 16
HSB_ADDR
15 14 13 12 11 10 9 8 _
HSB ADDR
7 6 5 4 3 2 1 0
HSB ADDR
• HSB_ADDR: адрес HSB.
Это поле задает текущий адрес на щине HSB при передаче через канал-
При задании адреса на адресной шине HSB содержимое регистра HSB_
ADDR округляется вниз к ближайшему выровненному в границах слова
значению адреса, т. е. разряды HSB_ADDR[1:O] рассматриваются логикой
как имеющие значение 00b при выполнении доступа к слову.
Начальный и конечный адреса канала HSB могут быть выровнены по
границе байта. Программа может производить запись в это поле только
в том случае, когда сброшен бит разрешения канала (CH_EN) в регистр6
UDDMAX_STATUS.
Начальный адрес пакета является или начальным адресом канала, или
следующим адресом канала, по которому будет производиться обращение
к буферу канала. Конечный адрес пакета является или конечным адресом
канала, или последним адресом канала по которому будет производиться
обращение к буферу канала.
Начальный адрес канала записывается программно или загружается из
дескриптора, тогда как конечный адрес канала, определяется по оконча-
нию буфера или по окончании передачи через USB, если установлен бит
BUFF_CLOSE_IN_EN.
26.3.11.19. Регистр управления канала X DMA устройства
USB UDDMAX.CONTROL, где X = [0... 6]
Битовая структура регистра показана в табл. 26.47.
Табл. 26.47. Битовая структура регистра управления канала X DMA устрой-
ства USB UDDMAX.CONTROL, где X = [0... 6]
31 30 29 28 27 26 25 24
CHBYTELENGTH
23 22 21 20 19 18 17 16
CH BYTE LENGTH
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
BURST, LOCK _EN DESC_LD_ IRQ_EN EOBUFF_ IRQ_EN EOT-IRQ- EN DMAEND_ EN BUFF- CLOSE -IN.EN LD_NXT_ CH_DESC _EN CH.EN
• CH EN: разрешение канала.
Этот бит необходимо установить, чтобы разрешить передачу данных
через канал, и необходимо сбросить, чтобы ее запретить.
Этот бит может использоваться, чтобы запускать или возобновлять лю-
бую текущую передачу. Бит сбрасывается аппаратно, когда канал источни-
ка блокируется в конце буфера DMA.
• LD_NXT_CH_DESC_EN: разрешение загрузки следующего дескрипто-
ра канала.
Этот бит необходимо установить, чтобы разрешить автоматическую за-
грузку следующего дескриптора в конце передачи через канал, и необходимо
сбросить, чтобы запретить ее. Если этот бит установлен, контроллер DMA-
Каналов загружает следующий дескриптор, когда бит UDDMAX_STATUS.
CH_EN сбрасывается программно из-за аппаратного события (например
в конце текущей передачи).
♦ BUFF_CLOSE_IN_EN: разрешение закрытия входа буфера.
Установка этого бита приведет к автоматическому закрытию потока
передачи DMA в конце передачи данных OUT USB (получение корот-
кого пакета). Этот бит необходимо сбросить, чтобы отключить эту осо-
бенность.
* DMAEND EN: разрешение окончания выхода буфера DMA.
Этот бит необходимо установить, чтобы корректно завершить переме-
щение USB в конце передачи DMA.
* EOT IRQ EN: разрешение прерывания по окончанию передачи USB.
Этот бит необходимо установить, чтобы разрешить прерывание по
окончании передачи данных USB. Это прерывание будет сгенерировано
только в том случае, если бит BUFF_CLOSE_IN_EN установлен.
Этот бит необходимо сбросить, чтобы отключить указанное прерывание.
* EOBUFF IRQ EN: разрешение прерывания по окончанию буфера.
Этот бит необходимо установить, чтобы разрешить прерывание по
окончании буфера. Это прерывание будет сгенерировано, когда канальный
счетчик байтов досчитывает до нуля. Этот бит необходимо сбросить, чтобы
отключить указанное прерывание.
* DESC_LD_IRQ_EN: разрешение прерывания по загрузке дескриптора.
Этот бит необходимо установить, чтобы разрешить прерывание по за-
грузке дескриптора. Это прерывание будет сгенерировано, когда дескрип-
тор загружается через системную шину.
Этот бит необходимо сбросить, чтобы отключить указанное прерывание.
* BURST LOCK EN: разрешении блокировки блочной передачи.
Этот бит необходимо установить, чтобы заблокировать возможность
блочной передачи данных HSB для максимальной оптимизации использо-
вания полосы пропускания HSB.
Если этот бит сброшен, DMA никогда не блокирует доступ HSB.
• CH_BYTE_LENGTH: байтовая длительность канала.
Это битовое поле задает общее количество байтов, которые будут пере-
даны для данного буфера. Максимальный объем передачи в канале задан
равным 64к и достигается, когда это поле имеет нулевое значение (значе-
ние по умолчанию).
Если размер передачи неизвестен (в том случае, когда окончание пере-
дачи управляется периферийным устройством), значение этого поля долж-
но быть нулевым.
Значение этого поля задается программно или загружается из дескрип-
тора только после того, как сбрасывается бит UDDMAX_STATUS.CH_EN.
В противном случае, это поле игнорируется.
26.3.11.20. Регистр состояния канала X DMA устройства USB
UDDMAX_STATUS, где X = [0... 6] '
Битовая структура регистра показана в табл. 26.48.
Табл. 26.48. Битовая структура регистра состояния канала X DMA устрой-
ства USB UDDMAX_STATUS, где X = [0... 6]
31 30 29 28 27 26 25 24
CH BYTE CNT
23 22 21 20 19 18 17 16
CH BYTE CNT
15 14 13 12 и 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- DESC_LD_ STA EOCH_BUFF_ STA EOTSTA - - сн_ ACTIVE CH_EN
* CH EN: разрешение канала.
Если бит установлен, канал DMA в настоящее время разрешен.
Если бит сброшен, канал DMA больше не передает данные.
• CH_ACTIVE: канал активен.
Если бит установлен, канал DMA в настоящее время передает данные
USB.
Если бит сброшен, канал DMA в настоящее время не передает данные
USB.
Когда передача данных USB закончена, этот бит автоматически сбра-
сывается.
• EOT_STA: состояние окончания передачи USB.
Этот бит устанавливается аппаратно, когда при передаче данных USB
завершается передача через DMA. Этот бит является значащим только
в том случае, когда BUFF_CLOSE_EN=1. Этот бит автоматически сбрасы-
вается при его программном чтении.
• EOCH_BUFF_STA: состояние окончания буфера канала.
Этот бит устанавливается аппаратно, когда канальный счетчик байтов
сбрасывается в 0. Этот бит автоматически сбрасывается при его программ-
ном чтении.
• DESC_LD_STA: состояние загрузки дескриптора.
Этот бит устанавливается аппаратно, когда дескриптор был загружен
с шины HSB. Этот бит автоматически сбрасывается при его программном
чтении.
• CH_BYTE_CNT: счет байтов в канале.
Это битовое поле содержит значение текущего количества байтов, пере-
данное для этого буфера. Это поле декрементируется при каждом доступе
DMA. Это поле не изменяется (статично) только в том случае, если бит
CH_EN = 0.
26.3.12. Регистры USB-хоста
26.3.12.1. Генеральный регистр управления хоста USB
UHCON
Битовая структура регистра показана в табл. 26.49.
Табл. 26.49. Битовая структура генерального регистра управления хоста
USB UHCON
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - т - - - - -
15 14 13 12 11 10 9 8
- - - - - RESUME RESET SOFE
7 6 5 4 3 2 1 0
- - - - - - - -
* SOFE: разрешение генерации начала фрейма.
Этот бит необходимо установить, чтобы разрешить генерацию SOF
на входной шине USB в полноскоростном и низкоскоростном режимах.
Этот бит необходимо сбросить, чтобы отключить генерацию SOF и оста-
вить шину USB в неактивным состоянии. Этот бит устанавливается аппа-
ратно, когда запрашивается сброс USB или детектируется прерывание от
резюме upstream (UHINT.TXRSMI).
• RESET: посылка сброса USB.
Этот бит необходимо установить, чтобы генерировать сброс USB на
шине USB. Бит сбрасывается аппаратно, когда сброс USB посылается. Мо-
жет потребоваться сбросить этот бит программно, когда детектируется от-
ключение устройства от шины (установка UHINT.DDISCI), в то время как
посылается сброс USB.
• RESUME: посылка резюме USB.
Этот бит необходимо установить, чтобы генерировать резюме USB на
шине USB. Бит сбрасывается аппаратно, когда резюме USB послано или
когда запрашивается сброс USB. Программный сброс этого бита не имеет
никакого эффекта. Этот бит должен быть установлен только тогда, когда
разрешена генерация начала фрейма (бит SOFE).
26.3.12.2. Глобальный регистр прерываний хоста USB UHINT
Битовая структура регистра показана в табл. 26.50.
Табл. 26.50. Битовая структура глобального регистра прерываний хоста USB
UHINT
31 30 29 28 27 26 25 24
- DMA6INT DMA5NT DMA4NT DMA3NT DMA2NT DMA1NT -
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
- P6INT P5NT P4NT P3NT P2NT PINT PONT
7 6 5 4 3 2 1 0
- HWUPI HSOFI RXRSMI RSMEDI RSTI DDISCI DCONNI
* DCONNI: флаг прерывания от подключения устройства.
Устанавливается аппаратно, когда новое устройство подключается
к шине USB.
Сбрасывается программно (путем установки бита DCONNIC).
* DDISCI: флаг прерывания от отключения устройства.
Устанавливается аппаратно, когда устройство отключается от шины
USB.
Сбрасывается программно (путем установки бита DDISCIC).
* RSTI: флаг прерывания от посылки сброса USB.
Устанавливается аппаратно, когда сброс USB послан устройству.
Сбрасывается программно (путем установки бита RSTIC).
* RSMEDI: флаг прерывания от посылки резюме Downstream.
Устанавливается аппаратно, когда резюме Downstream послано
устройству.
Сбрасывается программно (путем установки бита RSMEDIC).
* RXRSMI: флаг прерывания от приема резюме Upstream.
Устанавливается аппаратно, когда резюме Upstream получено от
устройства.
Сбрасывается программно (путем установки бита RXRSMIC).
* HSOFI: флаг прерывания от начала фрейма хоста.
Устанавливается аппаратно, когда SOF послан хостом. Это вызывает
прерывание USB, когда бит HSOFE установлен.
Сбрасывается программно (путем установки бита HSOFIC).
* HWUPI: флаг прерывания от «пробуждения» хоста.
Асинхронное прерывание. Устанавливается аппаратно в следующих
случаях:
• контроллер хоста находится в режиме приостановки (SOFE=0) и де-
тектировано резюме Upstream от периферийного устройства,
• контроллер хоста находится в режиме приостановки (SOFE=0) и де-
тектировано отключение периферийного устройства,
• контроллер хоста находится в неактивном состоянии (VBUSRQ^q
на входе VBus ничего не сгенерировано) и детектируется событий
OTG SRP, инициализированное периферийным устройством.
Необходимо заметить, что это прерывание генерируется, даже если
синхросигнал USB остановлен битом FRZCLK.
• PXINT, где X = [0.. б]: флаг прерывания от канала X.
Устанавливается аппаратно, когда прерывание вызвано каналом X (UP-
STAX). Это вызывает прерывание USB, если прерывание от передачи раз-
решено установкой соответствующего бита (регистр UHINTE). Сбрасыва-
ется аппаратно, когда источник прерывания обслуживается.
* DMAXINT, где X = [1.. 6]: флаг прерывания от канала DMA X.
Устанавливается аппаратно, когда прерывание вызвано каналом DMA
X. Это вызывает прерывание USB, если соответствующий бит DMAXINTE
установлен (регистр UHINTE). Сбрасывается аппаратно, когда источник
прерывания UHDMAX_STATUS сброшен.
26.3.12.3. Глобальный регистр сброса прерываний хоста USB
UHINTCLR
Битовая структура регистра показана в табл. 26.51.
Табл. 26.51. Битовая структура глобального регистра сброса прерываний хо-
ста USB UHINTCLR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8 __
- - - - - - - -
7 6 5 4 3 2 1 0 ___
- HWUPIC HSOFIC RXRSMIC RSMEDIC RSTIC DDISCIC DCONNIC.
* DCONNIC: сброс флага прерывания от подключения устройства.
Этот бит необходимо установить, чтобы сбросить DCONNI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* DDISCIC: сброс флага прерывания от отключения устройства.
Этот бит необходимо установить, чтобы сбросить DDISCI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• RSTIC: сброс флага прерывания от посылки сброса USB.
Этот бит необходимо установить, чтобы сбросить RSTI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• RSMEDIC: сброс флага прерывания от посылки резюме Downstream.
Этот бит необходимо установить, чтобы сбросить RSMEDI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RXRSMIC: сброс флага прерывания от приема резюме Upstream.
Этот бит необходимо установить, чтобы сбросить RXRSMI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• HSOFIC: сброс флага прерывания от начала фрейма хоста.
Этот бит необходимо установить, чтобы сбросить HSOFI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* HWUPIC: сброс флага прерывания от «пробуждения» хоста.
Этот бит необходимо установить, чтобы сбросить HWUPI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.4. Глобальный регистр установки прерываний хоста
USB UHINTSET
Битовая структура регистра показана в табл. 26.52.
Табл. 26.52. Битовая структура глобального регистра установки прерываний
хоста USB UHINTSET
31 30 29 28 27 26 25 24
- DMA6INTS DMA5INTS DMA4INTS DMA3INTS DMA2INTS DMA1INTS -
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
__ 7 6 5 4 3 2 1 0
- HWUPIS HSOFIS RXRSMIS RSMEDIS RSTIS DDISCIS DCONNIS
• DCONNIC: установка флага прерывания от подключения устройства.
Этот бит необходимо установить, чтобы установить DCONNI, что мо-
жет быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* DDISCIS: установка флага прерывания от отключения устройства.
Этот бит необходимо установить, чтобы установить DDISCI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RSTIS: установка флага прерывания от посылки сброса USB.
Этот бит необходимо установить, чтобы установить RSTI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RSMEDIS: установка флага прерывания от посылки резюме Downstream.
Этот бит необходимо установить, чтобы установить RSMEDI, что мо-
жет быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• RXRSMIS: установка флага прерывания от приема резюме Upstream.
Этот бит необходимо установить, чтобы установить RXRSMI, что мо-
жет быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* HSOFIS: установка флага прерывания от начала фрейма хоста.
Этот бит необходимо установить, чтобы установить HSOFI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* HWUPIS: установка флага прерывания от «пробуждения» хоста.
Этот бит необходимо установить, чтобы установить HWUPI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• DMAXINTS, где X = [1.. 6]: установка флага прерывания от канала
DMA X.
Этот бит необходимо установить, чтобы установить DMAXINT, что мо-
жет быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.5. Глобальный регистр разрешения прерываний хоста
USB UHINTE
Битовая структура регистра показана в табл. 26.53.
Табл. 26.53 Битовая структура глобального регистра разрешения прерыва-
ний хоста USB UHINTE
31 30 29 28 27 26 25 _24_
- DMA6INTE DMA5INTE DMA4INTE DMA3INTE DMA2INTE DMA1INTE -
Табл. 26.53.
(окончание)
" 23 22 21 20 19 18 17 16
- - - - - -
2^15 14 13 12 11 10 9 8
P6INTE P5INTE P4INTE P3INTE P2INTE P1INTE POINTE
' Г 6 5 4 3 2 1 0
HWUPIE HSOFIE RXRSMIE RSMEDIE RSTIE DDISCIE DCONNIE
• DCONNIE: разрешение прерывания от подключения устройства.
Устанавливается программно (путем установки бита DCONNIES), что-
бы разрешить прерывания от подключения устройства (DCONNI).
Сбрасывается программно (путем установки бита DCONNIEC), чтобы
запретить прерывания от подключения устройства (DCONNI).
* DDISCIE: разрешение прерывания от отключения устройства.
Устанавливается программно (путем установки бита DDISCIES), чтобы
разрешить прерывания от отключения устройства (DDISCI).
Сбрасывается программно (путем установки бита DDISCIEC), чтобы
запретить прерывания от отключения устройства (DDISCI).
* RSTIE: разрешение прерывания от посылки сброса USB.
Устанавливается программно (путем установки бита RSTIES), чтобы
разрешить прерывания от посылки сброса USB (RSTI).
Сбрасывается программно (путем установки бита RSTIEC), чтобы за-
претить прерывания от посылки сброса USB (RSTI).
* RSMEDIE: разрешение прерывания от посылки резюме Downstream.
Устанавливается программно (путем установки бита RSMEDIES), что-
бы разрешить прерывания от посылки резюме Downstream (RSMEDI).
Сбрасывается программно (путем установки бита RSMEDIEC), чтобы
запретить прерывания от посылки резюме Downstream (RSMEDI).
* RXRSMIE: разрешение прерывания от приема резюме Upstream.
Устанавливается программно (путем установки бита RXRSMIES), что-
бы разрешить прерывания от приема резюме Upstream (RXRSMI).
Сбрасывается программно (путем установки бита RXRSMIEC), чтобы
запретить прерывания от приема резюме Upstream (RXRSMI).
* HSOFIE: разрешение прерывания от старта фрейма хоста.
Устанавливается программно (путем установки бита HSOFIES), чтобы
Разрешить прерывания от старта фрейма хоста (HSOFI).
Сбрасывается программно (путем установки бита HSOFIEC), чтобы за-
претить прерывания от старта фрейма хоста (HSOFI).
• HWUPIE: разрешение прерывания от «пробуждения» хоста.
Устанавливается программно (путем установки бита HWUPIES), чтобы
Разрешить прерывания от «пробуждения» хоста (HWUPI).
Сбрасывается программно (путем установки бита HWUPIEC), чтобы
запретить прерывания от «пробуждения» хоста (HWUPI).
• PXINTE, где X = [0.. 6]: разрешение прерывания от канала X.
Устанавливается программно (путем установки бита PXINTES), чтобы
разрешить прерывания от канала X (PXINT).
Сбрасывается программно (путем установки бита PXINTEC), чтобы за-
претить прерывания от канала X (PXINT).
• DMAXINTE, где X = [1.. 6]: разрешение прерывания от канала DMA X.
Устанавливается программно (путем установки бита DMAXINTES),
чтобы разрешить прерывания от канала DMA X (DMAXINT).
Сбрасывается программно (путем установки бита DMAXINTEC), что-
бы запретить прерывания от канала DMA X (DMAXINT).
26.3.12.6. Глобальный регистр сброса разрешения
прерываний хоста USB UHINTECLR
Битовая структура регистра показана в табл. 26.54.
Табл. 26.54. Битовая структура глобального регистра сброса разрешения
прерываний хоста USB UHINTECLR
31 30 29 28 27 26 25 24
- DMA6IN- ТЕС DMA5IN- ТЕС DMA4IN- ТЕС DMA3IN- ТЕС DMA2IN- ТЕС DMA1 IN- TEC -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- P6INTEC P5INTEC P4INTEC P3INTEC P2INTEC Pl INTEC P0INTEC
7 6 5 4 3 2 1 0 __
- HWUPIEC HSOFIEC RXRSMIEC RSMEDIEC RSTIEC DDISCIEC DCON- NIEC _
• DCONNIEC: сброс разрешения прерывания от подключения устрой-
ства.
Этот бит устанавливается, чтобы сбросить DCONNIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• DDISCIEC: сброс разрешения прерывания от отключения устройства.
Этот бит устанавливается, чтобы сбросить DDISCIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• RSTIEC: сброс разрешения прерывания от посылки сброса USB.
Этот бит устанавливается, чтобы сбросить RSTIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• RSMEDIEC: сброс разрешения прерывания от посылки резюме
pownstream.
Этот бит устанавливается, чтобы сбросить RSMEDIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• RXRSMIEC: сброс разрешения прерывания от приема резюме
Upstream.
Этот бит устанавливается, чтобы сбросить RSTIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* HSOFIEC: сброс разрешения прерывания от начала фрейма хоста.
Этот бит устанавливается, чтобы сбросить HSOFIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* HWUPIEC: сброс разрешения прерывания от «пробуждения» хоста.
Этот бит устанавливается, чтобы сбросить HWUPIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* PXINTEC, где X = [0.. 6]: сброс разрешения прерывания от канала X.
Этот бит устанавливается, чтобы сбросить PXINTE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* DMAXINTEC, где X = [1.. 6]: сброс разрешения прерывания от канала
DMAX.
Этот бит устанавливается, чтобы сбросить DMAXINTE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.7. Глобальный регистр установки разрешения
прерываний хоста USB UHINTESET
Битовая структура регистра показана в табл. 26.55.
Табл. 26.55. Битовая структура глобального регистра установки разрешения
прерываний хоста USB UHINTESET
31 30 29 28 27 26 25 24
- DMA6INTES DMA5INTES DMA4INTES DMA3INTES DMA2INTES DMA1INTES -
___ 23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- P6INTES P5INTES P4INTES P3INTES P2INTES P1INTES POINTES
Табл. 26.55.
(окончание)
7 6 5 4 3 2 1 0^~~~
- HWUPIES HSOFIES RXRSMIES RSMEDIES RSTIES DDISCIES dconT NIES
• DCONNIEC: установка разрешения прерывания от подключения устрой*
ства.
Этот бит устанавливается, чтобы установить DCONNIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• DDISCIEC: установка разрешения прерывания от отключения устрой-
ства.
Этот бит устанавливается, чтобы установить DDISCIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RSTIEC: установка разрешения прерывания от посылки сброса USB.
Этот бит устанавливается, чтобы установить RSTIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RSMEDIEC: установка разрешения прерывания от посылки резюме
Downstream.
Этот бит устанавливается, чтобы установить RSMEDIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RXRSMIEC: установка разрешения прерывания от приема резюме
Upstream.
Этот бит устанавливается, чтобы установить RSTIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* HSOFIEC: установка разрешения прерывания от начала фрейма хоста.
Этот бит устанавливается, чтобы установить HSOFIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* HWUPIEC: установка разрешения прерывания от «пробуждения» хоста.
Этот бит устанавливается, чтобы установить HWUPIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• PXINTEC, где X = [0.. 6]: установка разрешения прерывания от канала X.
Этот бит устанавливается, чтобы установить PXINTE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• DMAXINTEC, где X = [1.. 6]: установка разрешения прерывания от
канала DMA X.
Этот бит устанавливается, чтобы установить DMAXINTE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.8. Регистр количества фреймов хоста USB
UHINTESET
Щитовая структура регистра показана в табл. 26.56.
Табл. 26.56. Битовая структура регистра количества фреймов хоста USB
UHINTESET
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
FLENHIGH
15 14 13 12 11 10 9 8
- - FNUM
7 6 5 4 3 2 1 0
FNUM - - -
• FNUM: количество фреймов.
Значение, содержавшееся в этом битовом поле, — номер текущего SOF.
Это значение может быть изменено программно.
* FLENHIGH: длина фрейма.
Это битовое поле возвращает значение восьми старших битов внутрен-
него 14-разрядного счетчика фреймов (счетчик фреймов считает на частоте •
до 12 МГц, продолжительность счета равна 12000, чтобы гарантировать
генерацию SOF через 1 мс).
26.3.12.9. Регистр адреса 1 хоста USB UHADDR1
Битовая структура регистра показана в табл. 26.57.
Табл. 26.57. Битовая структура регистра адреса 1 хоста USB UHADDR1
31 30 29 28 27 26 25 24
- UHADDR_P3
23 22 21 20 19 18 17 16
- UHADDR_P2
_ 15 14 13 12 11 10 9 8
- UHADDR_P1
Табл. 26.57.
(окончание)
7 6 5 4 3 2 1 0
- UHADDR_P0
• UHADDR_PO: адрес хоста USB.
Эти биты должны содержать адрес канала 0 USB-устройства.
Эти биты сбрасываются аппаратно, когда запрашивается сброс USB.
• UHADDR_P1: адрес хоста USB.
Эти биты должны содержать адрес канала 1 USB-устройства.
Эти биты сбрасываются аппаратно, когда запрашивается сброс USB.
• UHADDR_P2: адрес хоста USB.
Эти биты должны содержать адрес канала 2 USB-устройства.
Эти биты сбрасываются аппаратно, когда запрашивается сброс USB.
• UHADDR_P3: адрес хоста USB.
Эти биты должны содержать адрес канала 3 USB-устройства.
Эти биты сбрасываются аппаратно, когда запрашивается сброс USB.
26.3.12.10. Регистр адреса 2 хоста USB UHADDR2
Битовая структура регистра показана в табл. 26.58.
Табл. 26.58. Битовая структура регистра адреса 2 хоста USB UHADDR2
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- UHADDR_P6
15 14 13 12 11 10 9 8
- UHADDR_P5
7 6 5 4 3 2 1 0
- UHADDR_P4 __
• UHADDR_P4: адрес хоста USB.
Эти биты должны содержать адрес канала 4 USB-устройства.
Эти биты сбрасываются аппаратно, когда запрашивается сброс USB.
• UHADDR_P5: адрес хоста USB.
Эти биты должны содержать адрес канала 5 USB-устройства.
Эти биты сбрасываются аппаратно, когда запрашивается сброс USB.
• UHADDR_P6: адрес хоста USB.
Эти биты должны содержать адрес канала 6 USB-устройства.
Эти биты сбрасываются аппаратно, когда запрашивается сброс USB.
26.3.12.11. Регистр включения/сброса канала USB UPRST
Битовая структура регистра показана в табл. 26.59.
Табл. 26.59. Битовая структура регистра включения/сброса канала USB
UPRST
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- PRST6 PRST5 PRST4 PRST3 PRST2 PRST1 PRST0
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- PEN6 PEN5 PEN4 PEN3 PEN2 PEN1 PEN0
* PENX, где X = [0.. 6]: разрешить канал X.
Этот бит необходимо установить, чтобы разрешить канал X.
Сброс этого бита отключает канал X, т. е., канал переходит в неактив-
ное состояние, его регистры (UPCFGX, UPSTAX, UPCONX) сбрасывают-
ся, но конфигурация канала (ALLOC, РВК, PSIZE) не сбрасывается.
• PRSTX, где X = [0.. 6]: сброс канала X.
Этот бит устанавливается программно, чтобы сбросить буфер FIFO ка-
нала X. При этом сбрасываются регистры конечной точки X (UPCFGX,
UPSTAX, UPCONX), но не конфигурация конечной точки (ALLOC, РВК,
PSIZE, PTOKEN, PTYPE, PEPNUM, INTFRQ).
Сбрасывается весь механизм конечной точки (счетчик FIFO, прием,
передача и т. д.), кроме логики управления переключателя данных. Конфи-
гурация же конечной точки остается активной, а сама конечная точка все
еще разрешается.
26.3.12.12. Регистр конфигурации канала X USB UPCFGX, где
X = [0... 6]
Битовая структура регистра показана в табл. 26.60.
Табл. 26.60. Битовая структура регистра конфигурации канала X USB
UPCFGX, где X = [0... 6]
INTFRQ
Табл. 26.60.
(окончание)
23 22 21 20 19 18 17 16^22
- - - - PEPNUM
15 14 13 12 11 10 9 8
- PTYPE - AUTOSW PTOKEN “
7 6 5 4 3 2 1 0
- PSIZE РВК ALLOC
• ALLOC: распределение памяти для канала.
Этот бит устанавливается, чтобы сконфигурировать характеристики
памяти канала. Сброс этого бита модифицирует распределение памяти.
Этот бит сбрасывается аппаратно, когда запрашивается сброс USB.
* РВК: банки канала.
Этот бит устанавливается, чтобы выбрать количество банков канала,
как показано в табл. 26.61. Для конечных точек управления должен быть
выбран канал с единственным банком (00b). Этот бит сбрасывается аппа-
ратно после посылки сброса USB.
Табл. 26.61. Значения битового поля РВК
РВК Банки конечной точки
0 0 1 1 0 1 (канал с единственным банком) 1 2 (канал с двойным банком) 0 3 (канал с тройным банком) 1 Зарезервировано
* PSIZE: размер канала.
Это битовое поле задает размер каждого банка канала, как показано
в табл. 26.62. Это поле сбрасывается аппаратно после посылки сброса USB.
Табл. 26.62. Значения битового поля PSIZE
PSIZE Размер конечной точки
0 0 0 8 байтов
0 0 1 16 байтов
0 1 0 32 байта
0 1 1 64 байта
1 0 0 128 байтов
1 0 1 256 байтов
1 1 0 512 байтов
1 1 1 1024 байта
• PTOKEN: маркер (токен) канала.
Это битовое поле задает маркер конечной точки, как показано
р табл. 26.63.
Табл. 26.63. Значения битового поля PTOKEN
PTOKEN Направление конечной точки
0 0 SETUP
0 1 IN
1 0 OUT
1 1 Зарезервировано
• AUTOSW: автоматический переключатель.
Если этот бит установлен, то происходит автоматическое переключе-
ние банка по его готовности. Если бит сброшен, автоматическое пере-
ключение банков отключено. Этот бит сбрасывается аппаратно после по-
сылки сброса USB.
• PTYPE: тип канала.
Это битовое поле задает тип канала, как показано в табл. 26.64. Это поле
сбрасывается аппаратно после посылки сброса USB.
Табл. 26.64. Значения битового поля PTYPE
PTYPE Тип канала
0 0 Управления
0 1 Изохронный
1 0 Для передачи массивов
1 1 Для работы по прерыванию
* PEPNUM: номер конечной точки канала.
Значение этого битового поля устанавливается согласно конфигурации
канала. В поле задается номер конечной точки, обслуживаемой каналом.
Это значение может лежать в диапазоне от 0 до 15. Это поле сбрасывается
аппаратно после посылки сброса USB.
* INTFRQ: частота запроса прерывания канала.
Значение этого битового поля представляет собой максимальное
значение (выраженное в миллисекундах) периода опроса прерывания
Для канала. Это поле не является значащим для канала, не исполь-
зующего прерывания. Это поле сбрасывается аппаратно после посылки
сброса USB.
26.3.13.12. Регистр статуса канала X USB UPSTAX,
где X = [0... 6]
Битовая структура регистра показана в табл. 26.65.
Табл. 26.65. Битовая структура регистра статуса канала X USB UPSTAX глР
X = [0... 6] ’ Д
31 30 29 28 27 26 25 24
- PBYCT
23 22 21 20 19 18 17 16^
PBYCT - CFGOK - RWALL~
15 14 13 12 11 10 9 8
CURRBK NBUSYBK - - DTSEQ
7 6 5 4 3 2 1 0
SHORT PACKETI RXSTALLDI/ CRCERRI OVERFI NAKEDI PERRI TXSTPI/ UNDERFI TXOUTI RXINI
* RXINI: флаг прерывания от приема данных IN.
Этот бит устанавливается аппаратно, когда новое сообщение USB со-
храняется в текущем банке канала. Это вызывает прерывание, если уста-
новлен бит RXINE. Этот бит сбрасывается программно (путем установки
бита RXINIC).
• TXOUTI: флаг прерывания от передачи данных OUT.
Этот бит устанавливается аппаратно, когда текущий банк OUT свобо-
ден и может быть заполнен. Это вызывает прерывание, если установлен
бит TXOUTE. Этот бит сбрасывается программно (путем установки бита
TXOUTIC).
* TXSTPI: флаг прерывания от передачи SETUP.
Для конечных точек управления. Этот бит устанавливается аппаратно,
когда текущий банк SETUP свободен и может быть заполнен. Это вызыва-
ет прерывание, если установлен бит TXSTPE. Этот бит сбрасывается про-
граммно (путем установки бита TXSTPIC).
* UNDERFI: флаг прерывания от антипереполнения.
Этот бит устанавливается аппаратно, когда антипереполнение транзак-
ций происходит в текущем изохронном канале или канале по прерыванию.
(Канал не может послать пакет данных вовремя, потому что текущий банк
не готов.) Вместо этого посылается пакет нулевой длины (ZLP). Это вызы-
вает прерывание, если установлен бит UNDERFLE. Этот бит сбрасывается
программно (путем установки бита UNDERFIC).
* PERRI: флаг прерывания от ошибки канала.
Этот бит устанавливается аппаратно, когда в текущем банке канала про-
исходит ошибка. Это вызывает прерывание, если установлен бит PERRE-
Программа должна обратиться к регистру UPERRX, чтобы определить ис-
точник ошибки. Этот бит автоматически сбрасывается аппаратно, когда
исходный бит ошибки сбрасывается.
• NAKEDI: флаг прерывания от NAK.
Этот бит устанавливается аппаратно, когда NAK был получен для
т6кущего банка канала. Это вызывает прерывание, если установлен бит
pjAKEDE. Этот бит сбрасывается программно (путем установки бита NA-
KEDIC).
• OVERFI: флаг прерывания от переполнения.
Этот бит устанавливается аппаратно, когда текущий канал получил
больше данных, чем максимальная длина текущего канала. Прерывание
генерируется, если установлен бит OVERFIE. Этот бит сбрасывается про-
граммно (путем установки бита OVERFIC).
• RXSTALLDI: флаг прерывания от приема STALL.
Для всех изохронных конечных точек. Этот бит устанавливается ап-
паратно, когда установление связи STALL было получено в текущий банк
канала. Канал автоматически «закрепляется». Это вызывает прерывание,
если установлен бит RXSTALLE. Этот бит сбрасывается программно (пу-
тем установки бита RXSTALLDIC).
• CRCERRI: флаг прерывания от ошибки CRC.
Для изохронной конечной точки. Этот бит устанавливается аппаратно,
когда ошибка CRC происходит в текущем банке канала. Это вызывает пре-
рывание, если установлен бит TXSTPE. Этот бит сбрасывается программно
(путем установки бита CRCERRIC).
* SHORTPACKETI: флаг прерывания от короткого пакета.
Этот бит устанавливается аппаратно, когда короткий пакет получен хо-
стом (длина пакета меньше, чем заданная битовым полем PSIZE). Этот бит
сбрасывается программно (путем установки бита SHORTPACKETIC).
* DTSEQ: последовательность переключателя данных.
Значение этого битового поля устанавливается аппаратно, чтобы ука-
зать PID данных текущего банка, как показано в табл. 26.66.
Табл. 26.66. Значения битового поля DTSEQ
DTSEQ Последовательность переключателя данных
0 0 DataO
0 1 Datal
1 0 Зарезервировано
1 1 Зарезервировано
Для канала OUT это поле указывает переключатель данных следующе-
го пакета, который будет посылаться.
Дл канала IN это поле указывает переключатель данных полученного
пакета, сохраненного в текущем банке.
* NBUSYBK: количество занятых банков.
Значение этого битового поля устанавливается аппаратно, чтобы ука-
зать количество занятых банков, как показано в табл. 26.67.
Для каналов OUT это поле указывает количество занятых банков, за-
полненных пользователем, готовых к передаче OUT. Когда все банки заня-
ты, генерируется прерывание PXINT, если UPCONX.NBUSYBKE = 1.
Для каналов IN это поле указывает количество занятых банков, за,
полненных в результате транзакций IN от устройства. Когда все банки
свободны, генерируется прерывание PXINT, если UPCONX.NBUSYB-
KE = 1.
Табл. 26.67. Значения битового поля NBUSYBK
NBUSYBK Количество занятых банков
0 0 Все банки свободны
0 1 1 занятый банк
1 0 2 занятых банка
1 1 Зарезервировано
• CURRBK: текущий банк.
Значение этого битового поля устанавливается аппаратно для каналов
исключая канал управления, чтобы указать номер текущего банка, как по-
казано в табл. 26.68.
Необходимо заметить, что это поле может быть модифицировано через
1 тактовый цикл после изменения поля RWALL, так что программа не
должна опрашивать это поле как флаг прерывания.
Табл. 26.68. Значения битового поля CURRBK
CURRBK Текущий банк
0 0 BankO
0 1 Bankl
1 0 Bank2
1 1 Зарезервировано
* RWALL: разрешенность чтения/записи.
Для каналов OUT этот бит устанавливается аппаратно, когда текущий
банк не полон, т. е. программа может записать дальнейшие данные в буфер
FIFO.
Для каналов IN этот бит устанавливается аппаратно, когда текущий
банк не пуст, т. е. программа может читать дальнейшие данные из буфера
FIFO.
В ином случае этот бит сбрасывается аппаратно. Этот бит также сбра-
сывается аппаратно, когда установлены бит RXSTALL или бит PERR.
* CFGOK: состояние конфигурации ОК.
Этот бит автоматически модифицируется, когда установлен бит AL-
LOC. Этот бит устанавливается аппаратно, если в канале X значения коли-
чество банков (РВК) и размера (PSIZE) корректны по отношению к мак-
симально допустимым значениям количества банков и размера для этого
канала и к максимальному значению размера буфера FIFO (т. е. размеру
DPRAM).
Если этот бит сбрасывается аппаратно, то программа должна соответ-
ствующим образом модифицировать содержимое регистра UPCFGX кор-
ректными значениями РВК и PSIZE.
v • PBYCT: байтовый счетчик канала.
Значение этого битового поля устанавливается аппаратно, чтобы ука-
зать значение байтового счетчика FIFO.
Для каналов OUT это поле инкрементируется после каждого байта, за-
писанного программой в канал, и декрементируется после каждого байта,
посланного в периферийное устройство.
Для каналов IN это поле инкрементируется после каждого байта, полу-
ченного от периферийного устройства и декрементируется после каждого
байта, читаемого программой из канала.
Необходимо заметить, что это поле может быть модифицировано через
1 тактовый цикл после изменения поля RWALL, так что программа не
должна опрашивать это поле как флаг прерывания.
26.3.12.14. Регистр сброса состояния канала X USB
UPSTAXCLR, где X = [0... 6]
Битовая структура регистра показана в табл. 26.69.
Табл. 26.69. Битовая структура регистра сброса состояния канала X USB
UPSTAXCLR, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
SHORT PACKETIC RXSTALLDIC/ CRCERRIC OVERFIC NA- KEDIC - TXSTPIC/ UNDERFIC TXOUTIC RXINIC
* RXINIC: сброс флага прерывания от приема данных IN.
Этот бит устанавливается, чтобы сбросить RXINI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* TXOUTIC: сброс флага прерывания от передачи данных OUT.
Этот бит устанавливается, чтобы сбросить TXOUTI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* TXSTPIC: сброс флага прерывания от передачи SETUP.
Этот бит устанавливается, чтобы сбросить TXSTPI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* UNDERFIC: сброс флага прерывания от антипереполнения.
Этот бит устанавливается, чтобы сбросить UNDERFI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• NAKEDIC: сброс флага прерывания от NAK.
Этот бит устанавливается, чтобы сбросить NAKEDI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* OVERFIC: сброс флага прерывания от переполнения.
Этот бит устанавливается, чтобы сбросить OVERFI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RXSTALLDIC: сброс флага прерывания от приема STALL.
Этот бит устанавливается, чтобы сбросить RXSTALLDI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* CRCERRIC: сброс флага прерывания от ошибки CRC.
Этот бит устанавливается, чтобы сбросить CRCERRI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* SHORTPACKETIC: сброс флага прерывания от короткого пакета.
Этот бит устанавливается, чтобы сбросить SHORTPACKETI.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.15. Регистр установки состояния канала X USB
UPSTAXSET, где X = [0... 6]
Битовая структура регистра показана в табл. 26.70.
Табл. 26.70. Битовая структура регистра установки состояния канала X USB
UPSTAXSET, где X - [0... 6]
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 И 10 9 8 .
- - - NBUSYBKS - - -
Табл. 26.70.
(окончание)
' 7 6 5 4 3 2 1 0
SHORT packetis RXSTALL- DIS/ CRCERRIS OVERFIS NAKEDIS PERRIS TXSTPIS/ UNDERFIS TXOUTIS RXINIS
• RXINIS: установка флага прерывания от приема данных IN.
Этот бит необходимо установить, чтобы установить RXINI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* TXOUTIS: установка флага прерывания от передачи данных OUT.
Этот бит необходимо установить, чтобы установить TXOUTI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• TXSTPIS: установка флага прерывания от передачи SETUP.
Этот бит необходимо установить, чтобы установить TXSTPI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* UNDERFIS: установка флага прерывания от антипереполнения.
Этот бит необходимо установить, чтобы установить UNDERFI, что мо-
жет быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* PERRIS: установка флага прерывания от ошибки канала.
Этот бит необходимо установить, чтобы установить PERRI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* NAKEDIS: установка флага прерывания от NAK.
Этот бит необходимо установить, чтобы установить NAKEDI, что мо-
жет быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* OVERFIS: установка флага прерывания от переполнения.
Этот бит необходимо установить, чтобы установить OVERFI, что может
быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• RXSTALLDIS: установка флага прерывания от приема STALL.
Этот бит необходимо установить, чтобы установить RXSTALLDI, что
Может быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• CRCERRIS: установка флага прерывания от ошибки CRC.
Этот бит необходимо установить, чтобы установить CRCERRI, что мо.
жет быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• SHORTPACKETIS: установка флага прерывания от короткого пакета.
Этот бит необходимо установить, чтобы установить SHORTPACKETj
что может быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* NBUSYBKS: установка флага прерывания от количества занятых
банков.
Этот бит необходимо установить, чтобы установить NBUSYBKI, что
может быть полезно для испытательных или отладочных целей.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.16. Регистр управления каналом X USB UPCONX, где
X = [0... 6]
Битовая структура регистра показана в табл. 26.71.
Табл. 26.71. Битовая структура регистра управления каналом X USB
UPCONX, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - RSTDT PFREEZE PDISHDMA
15 14 13 12 11 10 9 8 _
- FIFOCON - NBUSYBKE - - -
7 6 5 4 3 2 1 0
SHORT PACKETIE RXSTALLDE/ CRCERRE OVERFIE NAKEDE PERRE TXSTPE/ UNDERFIE TXOUTE RXINE
* RXINE: разрешение прерывания от приема данных IN.
Устанавливается программно (путем установки бита RXINES), чтобы
разрешить прерывания от приема данных IN (RXINE).
Сбрасывается программно (путем установки бита RXINEC), чтобы за-
претить прерывания от приема данных IN (RXINE).
* TXOUTE: разрешение прерывания от передачи данных OUT.
Устанавливается программно (путем установки бита TXOUTES), чтобы
разрешить прерывания от передачи данных OUT (TXOUTE).
Сбрасывается программно (путем установки бита TXOUTEC), чтобы
запретить прерывания от передачи данных OUT (TXOUTE).
• TXSTPE: разрешение прерывания от передачи SETUP.
Устанавливается' программно (путем установки бита TXSTPES), чтобы
разрешить прерывания от передачи SETUP (TXSTPE).
Сбрасывается программно (путем установки бита TXSTPEC), чтобы за-
претить прерывания от передачи SETUP (TXSTPE).
• UNDERFIE: разрешение прерывания от антипереполнения.
Устанавливается программно (путем установки бита UNDERFIES),
чтобы разрешить прерывания от антипереполнения (UNDERFIE).
Сбрасывается программно (путем установки бита UNDERFIEC), чтобы
запретить прерывания от антипереполнения (UNDERFIE).
* PERRE: разрешение прерывания от ошибки канала.
Устанавливается программно (путем установки бита PERRES), чтобы
разрешить прерывания от ошибки канала (PERRE).
Сбрасывается программно (путем установки бита PERREC), чтобы за-
претить прерывания от ошибки канала (PERRE).
* NAKEDE: разрешение прерывания от NAK.
Устанавливается программно (путем установки бита NAKEDES), чтобы
разрешить прерывания от NAK (NAKEDE).
Сбрасывается программно (путем установки бита NAKEDEC), чтобы
запретить прерывания от NAK (NAKEDE).
* OVERFIE: разрешение прерывания от переполнения.
Устанавливается программно (путем установки бита OVERFIES), что-
бы разрешить прерывания от переполнения (OVERFIE).
Сбрасывается программно (путем установки бита OVERFIEC), чтобы
запретить прерывания от переполнения (OVERFIE).
* RXSTALLDE: разрешение прерывания от приема STALL.
Устанавливается программно (путем установки бита RXSTALLDES),
чтобы разрешить прерывания от приема STALL (RXSTALLDE).
Сбрасывается программно (путем установки бита RXSTALLDEC), что-
бы запретить прерывания от приема STALL (RXSTALLDE).
* CRCERRE: разрешение прерывания от ошибки CRC.
Устанавливается программно (путем установки бита CRCERRES), что-
бы разрешить прерывания от ошибки CRC (CRCERRE).
Сбрасывается программно (путем установки бита CRCERREC), чтобы
запретить прерывания от ошибки CRC (CRCERRE).
* SHORTPACKETIE: разрешение прерывания от короткого пакета.
Устанавливается программно (путем установки бита SHORTPACKETES),
чтобы разрешить прерывания от короткого пакета (SHORTPACKETIE).
Сбрасывается программно (путем установки бита SHORTPACKETEC),
чтобы запретить прерывания от короткого пакета (SHORTPACKETIE).
• NBUSYBKE: разрешение прерывания от количества занятых банков.
Устанавливается программно (путем установки бита NBUSYBKES), что-
бы разрешить прерывания от количества занятых банков (NBUSYBKE).
Сбрасывается программно (путем установки бита NBUSYBKEC), что-
бы запретить прерывания от количества занятых банков (NBUSYBKE).
• FIFOCON: управление FIFO.
Для каналов OUT и SETUP.
Устанавливается аппаратно, когда текущий банк свободен, одновремен-
но с TXOUTI или TXSTPI.
Сбрасывается программно (путем установки бита FIFOCONC), чтобы
послать данные в буфер FIFO и переключить банк.
Для каналов IN.
Устанавливается аппаратно, когда новое сообщение IN сохраняется
в текущем банке, одновременно с RXINI.
Сбрасывается программно (путем установки бита FIFOCON) при сво-
бодном текущем банке и переключении на следующий банк.
• PDISHDMA: разрешение отключения запроса HDMA по прерыванию
канала.
См. описание бита EPDISHDMA (регистр UECONX).
• PFREEZE: «закрепление» канала.
Устанавливается программно (путем установки бита PFREEZES), что-
бы сгенерировать запрос «закрепления» канала.
Сбрасывается программно (путем установки бита PFREEZEC), чтобы
сгенерировать запрос разрешения канала.
Этот бит устанавливается аппаратно после того, как производится сброс
или разрешение канала, в следующих случаях:
- канал не сконфигурирован,
- в этом канале было получен STALL,
- в канале произошла ошибка (PERR = 1),
- было обработано (INRQ+1) запросов IN.
* RSTDT: сброс переключателя данных.
Этот бит устанавливается программно (путем установки бита RSTDTS),
чтобы сбросить переключатель данных в его начальное значение для теку-
щего канала. Сбрасывается аппаратно в дальнейшем.
26.3.12.17. Регистр управления сбросом канала X USB
UPCONXCLR, где X = [0... 6]
Битовая структура регистра показана в табл. 26.72.
Табл. 26.72. Битовая структура регистра управления сбросом канала X USB
UPCONXCLR, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - PFREEZEC PD1SHDMAC
15 14 13 12 11 10 9 8 _
- FIFOCONC - NBUSYBKEC - - - -
Табл. 26.72.
(окончание)
7 6 5 4 3 2 1 0
''short packetiec RXSTALLDEC/ CRCERREC OVERFIEC NAKEDEC PERREC TXSTPEC/ UNDERFIEC TXOUTEC RXINEC
• RXINEC: сброс разрешения прерывания от приема данных IN.
Этот бит устанавливается, чтобы сбросить RXINE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* TXOUTEC: сброс разрешения прерывания от передачи данных OUT.
Этот бит устанавливается, чтобы сбросить TXOUTE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* TXSTPEC: сброс разрешения прерывания от передачи SETUP.
Этот бит устанавливается, чтобы сбросить TXSTPE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• UNDERFIEC: сброс разрешения прерывания от антипереполнения.
Этот бит устанавливается, чтобы сбросить UNDERFIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* PERREC: сброс разрешения прерывания от ошибки канала.
Этот бит устанавливается, чтобы сбросить PERRE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* NAKEDEC: сброс разрешения прерывания от NAK.
Этот бит устанавливается, чтобы сбросить NAKEDE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* OVERFIEC: сброс разрешения прерывания от переполнения.
Этот бит устанавливается, чтобы сбросить OVERFIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RXSTALLDEC: сброс разрешения прерывания от приема STALL.
Этот бит устанавливается, чтобы сбросить RXSTALLDE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* CRCERREC: сброс разрешения прерывания от ошибки CRC.
Этот бит устанавливается, чтобы сбросить CRCERRE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• SHORTPACKETIEC: сброс разрешения прерывания от короткого
пакета.
Этот бит устанавливается, чтобы сбросить SHORTPACKETIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* NBUSYBKEC: сброс разрешения прерывания от количества заняты^
банков.
Этот бит устанавливается, чтобы сбросить NBUSYBKE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• FIFOCONC: сброс управления FIFO.
Этот бит устанавливается, чтобы сбросить FIFOCON.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* PDISHDMAC: сброс разрешения отключения запроса HDMA по пре-
рыванию канала.
Этот бит устанавливается, чтобы сбросить PDISHDMA.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• PFREEZEC: сброс «закрепления» канала.
Этот бит устанавливается, чтобы сбросить PFREEZE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.18. Регистр управления установкой канала X USB
UPCONXSET, где X = [0... 6]
Битовая структура регистра показана в табл. 26.73.
Табл. 26.73. Битовая структура регистра управления установкой канала X
USB UPCONXSET, где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - RSTDTS PFREEZES PDISHDMAS
15 14 13 12 11 10 9 8 _
- - - NBUSYBKES - - - -
7 6 5 4 3 2 1 0 _
SHORT PACKETIES RXSTALLDES/ CRCERRES OVERFIES NAKEDES PERRES TXSTPES/ UNDERFIES TXOUTES RXINES
* RXINES: установка разрешения прерывания от приема данных IN.
Этот бит устанавливается, чтобы установить RXINE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• TXOUTES: установка разрешения прерывания от передачи данных OUT.
Этот бит устанавливается, чтобы установить TXOUTE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• TXSTPES: установка разрешения прерывания от передачи SETUP.
Этот бит устанавливается, чтобы установить TXSTPE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• UNDERFIES: установка разрешения прерывания от антиперепол-
нения.
Этот бит устанавливается, чтобы установить UNDERFIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• PERRES: установка разрешения прерывания от ошибки канала.
Этот бит устанавливается, чтобы установить PERRE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* NAKEDES: установка разрешения прерывания от NAK.
Этот бит устанавливается, чтобы установить NAKEDE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* OVERFIES: установка разрешения прерывания от переполнения.
Этот бит устанавливается, чтобы установить OVERFIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RXSTALLDES: установка разрешения прерывания от приема STALL.
Этот бит устанавливается, чтобы установить RXSTALLDE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* CRCERRES: установка разрешения прерывания от ошибки CRC.
Этот бит устанавливается, чтобы установить CRCERRE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• SHORTPACKETIES: установка разрешения прерывания от короткого
пакета.
Этот бит устанавливается, чтобы установить SHORTPACKETIE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• NBUSYBKES: установка разрешения прерывания от количества заня-
тых банков.
Этот бит устанавливается, чтобы установить NBUSYBKE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• PDISHDMAC: установка разрешения отключения запроса HDMA по
прерыванию канала.
Этот бит устанавливается, чтобы установить PDISHDMA.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
• PFREEZEC: установка «закрепления» канала.
Этот бит устанавливается, чтобы установить PFREEZE.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
* RSTDTS: установка сброса переключателя данных.
Этот бит устанавливается, чтобы установить RSTDT.
Сброс этого бита не имеет никакого эффекта.
Этот бит всегда читается как 0.
26.3.12.19. Регистр запроса IN канала X USB UPINRQX,
где X = [0... 6]
Битовая структура регистра показана в табл. 26.74.
Табл. 26.74. Битовая структурарегистразапроса IN каналаХ USB UPINRQX
где X = [0... 6]
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - INMODE
7 6 5 4 3 2 1 0
INRQ.
* INRQ: количество запросов IN перед «закреплением».
В это битовое поле помещается количество транзакций IN, по испол-
нении которых USB-контроллер «закрепляет» канал. USB-контроллер
исполняет (INRQ+1) запросов IN прежде, чем «закрепить» канал.
Этот счетчик автоматически декрементируется при каждом успешно вы-
полненном запросе IN.
Содержимое этого регистра не является значащим, когда установлен
бит INMODE (бесконечное количество запросов IN до «закрепления»
канала).
• INMODE: режим запроса IN.
Этот бит необходимо установить, чтобы разрешить USB-контроллерУ
выполнять бесконечное количество запросов IN до «закрепления» ка-
нала.
Этот бит необходимо сбросить, чтобы битовое поле INRQ стало зна-
чащим.
26.3.12.20. Регистр ошибки канала X USB UPERRX,
где X = [0... 6]
Битовая структура регистра показана в табл. 26.75.
Табл. 26.75. Битовая структура регистра ошибки канала X USB UPERRX
где X = [0... 6]
30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- COUNTER CRC16 TIMEOUT PID DATAPID DATATGL
* DATATGL: ошибка переключателя данных.
Этот бит устанавливается аппаратно, когда детектируется ошибка пере-
ключателя данных.
Этот бит сбрасывается программно. Его программная установка не
имеет никакого эффекта.
* DATAPID: ошибка PID данных.
Этот бит устанавливается аппаратно, когда детектируется ошибка PID
данных.
Этот бит сбрасывается программно. Его программная установка не
имеет никакого эффекта.
* PID: ошибка PID.
Этот бит устанавливается аппаратно, когда детектируется ошибка PID.
Этот бит сбрасывается программно. Его программная установка не
имеет никакого эффекта.
• TIMEOUT: ошибка из-за тайм-аута.
Этот бит устанавливается аппаратно, когда детектируется ошибка
тайм-аута.
Этот бит сбрасывается программно. Его программная установка не
имеет никакого эффекта.
* CRC16: ошибка CRC16.
Этот бит устанавливается аппаратно, когда детектируется ошибка CRC16.
Этот бит сбрасывается программно. Его программная установка не
имеет никакого эффекта.
• COUNTER: счетчик ошибок.
26.3.12.21. Регистры, относящиеся к каналу X DMA хоста
USB, где X = [0... 6]
Регистр UHDMAX_NEXTDESC по своим функциям и битовой структу-
ре идентичен регистру UDDMAX_NEXTDESC, описание которого было
приведено выше.
Регистр UHDMAX_ADDR по своим функциям и битовой структуре
идентичен регистру UDDMAX_ADDR, описание которого было приведе-
но выше.
Регистр UHDMAX_CONTROL по своим функциям и битовой струк-
туре идентичен регистру UDDMAX_CONTROL, описание которого было
приведено выше.
Регистр UHDMAX_STATUS по своим функциям и битовой структуре
идентичен регистру UDDMAX_STATUS, описание которого было приве-
дено выше.
26.3.12.22. Регистр данных буфера FIFO канала/конечной
точки X USB USB_FIFOX_DATA, где X = [0... 6]
К каждому их этих регистров возможно программное обращение даже в том
случае, если USBE = 0 или FRZCLK — 1. Отключение USB-контроллера
(путем сброса бита USBE) не сбрасывает DPRAM.
ГЛАВА 27
ТАЙМЕРЫ/СЧЕТЧИКИ (ТС)
27.1. Основные особенности и общее описание
Входящий в состав всех МК семейства AT32UC3 модуль таймеров/счетчи-
ков (ТС) имеет следующие основные особенности.
• Три 16-разрядных канала (таймера/счетчика).
• Широкий диапазон выполняемых функций, включающий:
- измерение частоты,
- подсчет событий,
- измерение временных интервалов,
- генерацию импульсных последовательностей,
- широтно-импульсную модуляцию,
- синхронизацию задержек,
- установку/сброс линий выходов.
• Каждый канал имеет перестраиваемую пользователем конфигура-
цию и содержит:
- три внешних входа синхронизации,
- пять внутренних входов синхронизации,
- два многоцелевых сигнала ввода-вывода.
• Внутренний сигнал прерывания.
• Два глобальных регистра, общих всех трех каналов ТС.
Модуль таймеров/счетчиков включает в себя три идентичных 16-разряд-
ных канала таймера/счетчика. Каждый канал может независимо програм-
мироваться для выполнения широкой номенклатуры функций, включая
измерение частоты, подсчет событий, измерение интервалов, генерацию
импульсов, синхронизацию задержек и широтно-импульсную модуля-
цию.
Каждый канал (таймер/счетчик) имеет три внешних и пять внутренних
входов синхронизации, а также два многоцелевых сигнала ввода-вывода,
которые могут конфигурироваться пользователем. Каждый канал управля-
ет сигналом внутреннего прерывания, который может быть сконфигуриро-
ван, чтобы генерировать прерывания ЦПУ.
Блок таймеров/счетчиков имеет два глобальных регистра, которые об-
служивают все три канала ТС. Регистр команд блока позволяет начинать
операции во всех трех каналах одновременно одной командой. Регистр ре-
жима блока задает для каждого канала внешние входы синхронизации,
позволяя при этом выстраивать их в цепочку.
Блок-схема ТС приведена на рис. 27.1.
Рис. 27.1. Блок-схема ТС
Описание сигналов и выводов, относящихся к таймерам/счетчикам,
приведено в табл. 27.1, 27.2.
Выводы, используемые ТС для связи с внешними устройствами, могут
быть мультиплексированы с линиями контроллера GPIO. Пользователь-
ская программа должна сначала сконфигурировать контроллер GPIO с тем,
чтобы задать для выводов ТС их периферийные функции.
Синхросигнал таймеров/счетчиков в ходе операций отладки останавли-
вается, если система OCD в ходе операций отладки не сохраняет перифе-
рийные устройства в работающем состоянии.
Табл. 27.1. Описание сигналов, относящихся к таймеру/счетчику
Блок/ канал Имя вывода Описание вывода
Сигналы ХСО, ХС1, ХС2 Внешние входы синхронизации
одного канала ТЮА Режим захвата: вход таймера/счетчика Режим формирования: выход таймера/счетчика
ТЮВ Режим захвата: вход таймера/счетчика Режим формирования: вход/выход таймера/счетчика
INT Выход сигнала прерывания
SYNC Вход сигнала синхронизации
Табл. 27.2. Описание выводов МК, относящихся к таймерам/счетчикам
' Имя вывода Описание Тип вывода
' TCLK0-TCLK2 Внешние входы синхронизации Вход
TIOAO-TIOA2 Линии ввода-вывода А Вход/выход
TIOBO—TIOB2 Линии ввода-вывода В Вход/выход
Модуль ТС синхронизируется через менеджер питания. Пользователь-
ская программа должна сначала сконфигурировать модуль РМ, чтобы раз-
решить синхронизацию таймера/счетчика.
К модулю ТС подключена линия прерывания от контроллера прерыва-
ний. Обработка прерывания от ТС требует предварительного конфигури-
рования контроллера прерываний перед конфигурированием ТС.
27.2. Функциональное описание
Три канала таймера/счетчика независимы друг от друга и обеспечивают
идентичные операции. Для их программирования используется единый
набор специальных регистров, которые будут описаны ниже. Каждый ка-
нал может работать в режиме захвата или в режиме формирования, о чем
будет подробнее рассказано ниже.
27.2.1. 16-разрядный счетчик
Каждый канал организован на базе 16-разрядного аппаратного счетчика. Со-
держимое счетчика инкрементируется по каждому положительному фронту
выбранной последовательности синхроимпульсов. Когда счетчик достигает
значения OxFFFF, то происходит его переполнение и автоматический сброс
в значение 0x0000. При этом автоматически устанавливается бит COVFS
в регистре состояния (SR). Текущее значение счетчика доступно в каждый
момент времени путем программного чтения регистра значения счетчика
CV. Счетчик может быть сброшен с помощью триггера. В этом случае зна-
чение счетчика становится равным 0x0000 по следующему активному пере-
паду выбранной для синхронизации последовательности синхроимпульсов.
27.2.2. Выбор синхросигнала
На уровне блока входные синхросигналы каждого канала могут быть свя-
заны с внешними входами TCLK0, TCLK1, TCLK2 или же могут быть
связаны с конфигурируемыми сигнальными входами-выходами TIOAO,
TIOA1, TIOA2 для формирования цепочки. Эти соединения формируются
с помощью регистра BMR (регистр режима блока), что иллюстрируется
блок-схемой, изображенной на рис. 27.2.
В каждом канале для его счетчика может быть независимо выбран
внутренний или внешний источник синхронизации из числа следующих
источников:
Рис. 27.2. Блок-схема логики выбора синхросигнала для канала таймера/
счетчика
• внутренние синхросигналы: TIMER_CLOCK1, TIMER_CLOCK2,
TIMERCLOCK3, TIMER_CLOCK4, TIMER_CLOCK5. Соответ-
ствия между частотами внутренних синхросигналов и частотой
МСК показано в табл. 8.4.
• внешние синхросигналы: ХСО, ХС1 или ХС2.
Этот выбор может быть сделан битами TCCLKS регистра режима ка-
нала ТС.
Выбранные синхроимпульсы могут быть инвертированы с помощью
бита CLKI регистра CMR, что позволяет использовать в качестве активных
перепадов как фронты, так и спады синхроимпульсов.
Функция burst позволяет использовать для синхронизации канала син-
хроимпульсы, только когда внешний управляющий сигнал находится в вы-
соком уровне. Этот сигнал может быть задан параметром BURST регистра
режима (отсутствие сигнала, ХСО, ХС1 или ХС2).
Замечание. Во всех случаях использования внешнего синхросигнала про-
должительность каждого из уровней последовательности синхроимпульсов
должна быть больше, чем период задающей частоты. Внешняя частота синхро-
низации также должна быть не менее, чем в 2,5 раза ниже задающей частоты.
27.2.3. Управление синхронизацией
Синхронизацией каждого счетчика можно управлять двумя различными
способами: синхросигнал можно разрешить/заблокировать и начать/оста-
новить, что иллюстрируется блок-схемой, изображенной на рис. 27.3.
• Синхросигнал можно разрешить или заблокировать с помощью ко-
манд CLKEN и CLKDIS соответственно регистра команд. В режи-
ме захвата блокировка может быть вызвана событием загрузки (за-
Выбранный
синхросигнал Триггер
Рис. 27.3. Управление синхронизацией счетчика
хвата) RB, если установлен бит LDBDIS в регистре CMR. В режиме
формирования блокировка может быть вызвана событием совпаде-
ния RC, если установлен бит CPCDIS в регистре CMR. Когда уста-
новлена блокировка, логика запуска и останова счетчика не дей-
ствует. Только команда CLKEN в регистре команд может разрешить
синхросигнал. Когда синхросигнал разрешен, в регистре состояния
установлен бит CLKSTA.
• Синхросигнал может быть запущен или остановлен с помощью
триггера (программно, синхронно с каким-либо событием, от
внешнего сигнала или при совпадении), о чем будет подробнее
рассказано ниже. Останов синхросигнала может быть вызван со-
бытием загрузки RB в режиме захвата (LDBSTOP = 1 в регистре
CMR) или событием совпадения RC в режиме формирования
(CPCSTOP — 1 в регистре CMR). Команды запуска или останова
синхросигнала имеют эффект только в том случае, если синхро-
сигнал разрешен.
27.2.4. Операционные режимы ТС
Каждый канал может независимо работать в двух различных режимах:
• режим захвата обеспечивает измерение длительности сигналов;
• режим формирования обеспечивает генерацию сигнальных после-
довательностей.
Операционный режим ТС программируется битом WAVE регистра
режима канала ТС. В режиме захвата выводы ТЮА и ТЮВ сконфигури-
рованы как входы. В режиме формирования вывод ТЮА всегда сконфи-
гурирован как выход, а вывод ТЮВ также конфигурируется как выход,
если он не выбран для использования в качестве внешнего триггерного
входа.
27.2.5. Триггер
Под триггером в данном случае понимается какой-либо сигнал или со-
бытие, которые могут сбрасывать счетчик и запускать его счет. В обоих
операционных режимах могут использоваться три типа триггеров. Кроме
того, в каждом из этих режимов доступен внешний триггер.
В операционных режимах используются следующие типы триггеров:
• программный триггер: каждый канал имеет программный триггер,
доступный при установке бита SWTRG в регистре CCR;
• SYNC: каждый канал имеет синхронизирующий сигнал SYNC.
При его переходе в активный уровень этот сигнал производит такое
же действие, как программный триггер. Сигналы SYNC всех каналов
переводятся в активный уровень одновременно путем программной
установки бита SYNC в регистре BCR (регистр управления блоком);
• триггер по совпадению RC: логика RC реализована в каждом ка-
нале и может обеспечить эффект триггера, когда текущее значение
счетчика совпадает со значением RC, в случае если установлен бит
CPCTRG в регистре CMR.
Канал может также быть сконфигурирован с внешним триггером. В ре-
жиме захвата внешний триггерный сигнал может быть программно выбран
между выводами TIOA и TIOB. В режиме формирования источник внеш-
него триггерного сигнала может быть программно выбран среди сигналов
ТЮВ, ХСО, ХС1 или ХС2. При этом триггерный эффект будет иметь место
при установленном бите ENETRG в регистре CMR.
Если используется внешний триггер, то для гарантированного обнару-
жения длительность импульса внешнего триггерного сигнала должна быть
длиннее, чем период задающей частоты.
Независимо от используемого типа триггера поступление триггерного сиг-
нала будет воспринято логикой ТС по следующему активному перепаду выбран-
ной частоты синхронизации. Это означает, что текущее прочитанное значение
счетчика после поступления импульса триггера может отличаться от нулевого,
особенно когда в качестве синхросигнала выбран низкочастотный сигнал.
27.2.6. Операции режима захвата
Логика канала ТС переводится в режим захвата при обнулении битового
поля WAVE в регистре CMR (регистр режима канала). В режиме захвата
в канале ТС можно задавать длительность счетных импульсов, частоту,
период, скважность и фазу с помощью сигналов на выводах ТЮА и ТЮВ,
которые в этом режиме используются как входы.
Блок-схема конфигурации канала ТС в режиме захвата приведена на
рис. 27.4.
27.2.6.1. Регистры захвата А и В
Регистры А и В (RA и RB) используются как регистры захвата. Это значит,
что в них может быть загружено (захвачено) текущее значение счетчика, когда
в сигнале ТЮА имеет место перепад, который программно задан в качестве
Рис. 27.4. Блок-схема конфигурации канала ТС в режиме захвата
события захвата. Вид перепада сигнала TIOA для загрузки регистра А опреде-
ляет поле LDRA, а для загрузки регистра В — поле LDRB регистра CMR.
Регистр RA загружается содержимым счетчика только в том случае,
если он не загружался после последнего срабатывания триггера или если
регистр RB загружался после последней загрузки RA.
Регистр RB загружается содержимым счетчика только в том случае,
если RA загружался после последнего срабатывания триггера или после
последней загрузки RB.
Загрузка регистра РА или RB до того, как прочитано последнее за-
груженное значение, приведет к автоматической установке флага ошибки
переполнения (LOVRS) в регистре SR (регистр состояния). В этом случае
старое значение будет «затерто» новым.
27.2.6.2. Условия срабатывания триггера
В дополнение к сигналу SYNC, программному триггеру и триггеру со-
впадения RC может быть задан внешний триггер. Бит ABETRG в регистре
CMR выбирает входной сигнал ТЮА или ТЮВ в качестве внешнего триг-
гера. Поле ETRGEDG определяет тип детектируемого перепада (положи-
тельный, отрицательный или любой), при котором генерируется внешний
триггер. Если ETRGEDG = 0, то внешний триггер заблокирован.
27.2.7. Операции режима формирования
Переход в режим формирования производится путем установки бита WAVE
в регистре CMR (регистр режима канала). В режиме формирования канал
Рис. 27.5. Блок-схема конфигурации канала ТС в режиме формирования
ТС генерирует один или два сигнала PWM с одинаковой частотой, но неза-
висимо программируемыми рабочими циклами, или генерирует различные
одиночные или повторяющиеся импульсы.
В режиме формирования вывод ТЮА сконфигурирован как выход, и вы-
вод ТЮВ сконфигурирован как выход, если только он не используется как
вход для сигнала внешнего события (задается полем EEVT в регистре CMR).
Блок-схема конфигурации канала ТС в режиме формирования приве-
дена на рис. 27.5.
27.2.7.1. Выбор особенностей формирования
В зависимости от значения поля WAVSEL регистра CMR (регистр режима
канала) поведение счетчика CV меняется.
При любом значении WAVSEL регистры RA, RB и RC могут исполь-
зоваться как регистры для сравнения. Результат сравнения с содержимым
RA используется для управления выводом ТЮА, с содержимым RB — для
управления выводом ТЮВ (если задана правильная конфигурация), а с со-
держимым RC — для управления выводом ТЮВ и/или ТЮА.
27.2.7.2. Поведение счетчика при WAVSEL = 00
Когда поле WAVSEL = 00, счетчик CV инкрементируется от 0 до OxFFFF.
При достижении значения OxFFFF CV автоматически сбрасывается в 0.
После этого приращение CV начинается снова и цикл повторяется, что
иллюстрируется диаграммами, приведенными на рис. 27.6.
Значение счетчика
Счетчик обнуляется при его равенстве значению OxFFFF
Рис. 27.6. Поведение счетчика при WAVSEL = 00 без триггера
Рис. 27.7. Поведение счетчика при WAVSEL = 00 с триггером
Событие внешнего триггера или программный триггер могут сбросить
CV. Следует отметить, что сброс счетчика от триггера может произойти
в произвольные моменты времени, что иллюстрируется диаграммами, при-
веденными на рис. 27.7.
В указанном состоянии совпадение RC не может быть использовано
для генерации триггера, однако оно может остановить счет счетчика (СРС-
STOP = 1 в регистре CMR) и/или заблокировать его (CPCDIS = 1 в реги-
стре CMR).
27.2.7.3. Поведение счетчика при WAVSEL = 10
Когда поле WAVSEL = 10, счетчик CV инкрементируется от 0 до значения
RC, после чего автоматически сбрасывается в 0. Как только CV сбрасыва-
ется, он сразу же снова начинает инкрементироваться, что иллюстрируется
диаграммами, приведенными на рис. 27.8.
Значение счетчика
Рис. 27.8. Поведение счетчика при WAVSEL = 10 без триггера
Рис. 27.9. Поведение счетчика при WAVSEL = 10 с триггером
Следует отметить, что сброс счетчика от триггера может произойти
в произвольные моменты времени от внешнего события или программно,
что иллюстрируется диаграммами, приведенными на рис. 27.9.
Совпадение RC может остановить счет счетчика (CPCSTOP = 1 в реги-
стре CMR) и/или заблокировать его (CPCDIS = 1 в регистре CMR).
27.2.7.4. Поведение счетчика при WAVSEL = 01
Когда поле WAVSEL = 01, счетчик CV инкрементируется от 0 до OxFFFF.
При достижении значения OxFFFF CV декрементируется до 0. После этого
приращение CV начинается снова и цикл повторяется, что иллюстрируется
диаграммами, приведенными на рис. 27.10.
Событие внешнего триггера или программный триггер могут модифи-
цировать содержимое CV в любой момент времени. Если событие триггера
происходит, когда CV инкрементируется, то CV сразу же начинает декре-
ментироваться. Если событие триггера происходит, когда CV декременти-
Значение счетчика
Счетчик начинает декрементироваться при его равенстве OxFFFF
Рис. 27.10. Поведение счетчика при WAVSEL = 01 без триггера
руется, то CV сразу же начинает инкрементироваться, что иллюстрируется
диаграммами, приведенными на рис. 27.11.
В указанном состоянии совпадение RC не может быть использовано
для генерации триггера, однако оно может остановить счет счетчика (СРС-
STOP = 1) и/или заблокировать его (CPCDIS = 1).
27.2.7.5. Поведение счетчика при WAVSEL = 11
Когда поле WAVSEL =11, счетчик CV инкрементируется от 0 до значения
RC. При достижении значения RC CV декрементируется до 0. После этого
приращение CV начинается снова и цикл повторяется, что иллюстрируется
диаграммами, приведенными на рис. 27.12.
Событие внешнего триггера или программный триггер могут модифи-
цировать содержимое CV в любой момент времени. Если событие триггера
происходит, когда CV инкрементируется, то CV сразу же начинает декре-
ментироваться. Если событие триггера происходит, когда CV декременти-
руется, то CV сразу же начинает инкрементироваться, что иллюстрируется
диаграммами, приведенными на рис. 27.13.
Рис. 27.11. Поведение счетчика при WAVSEL = 01 с триггером
Значение счетчика
Рис. 27.12. Поведение счетчика при WAVSEL =11 без триггера
Рис. 27.13. Поведение счетчика при WAVSEL = 11 с триггером
Совпадение RC может остановить счет счетчика (CPCSTOP = 1) и/или
заблокировать его (CPCDIS = 1).
27.2.7.6. Условия внешнего события/триггера
Детектирование внешнего события может быть запрограммировано для
одного из источников синхросигнала (ХСО, ХС1, ХС2) или для вывода
ТЮВ. При этом выбранное внешнее событие используется как триггер.
Поле EEVT в регистре CMR выбирает внешний триггер. Поле EEVTEDG
определяет перепад триггерного сигнала для каждого из возможных внеш-
них триггеров (положительный, отрицательный или любой). Если поле
EEVTEDG сброшено, то никакое внешнее событие не задано.
Если вывод ТЮВ задан для сигнала внешнего события (EEVT = 0),
то в этом случае ТЮВ не может быть использован как выход и канал ТС
может формировать импульсную последовательность только на выходе
ТЮА.
Когда определено внешнее событие, то оно может использоваться как
триггер путем установки бита ENETRG в регистре CMR.
В режиме формирования, как и в режиме захвата, сигнал SYNC и про-
граммный триггер доступны в качестве триггера. Совпадение RC также может
использоваться в качестве триггера в зависимости от значения поля WAVSEL.
27.2.7.7. Контроллер выхода
Контроллер выхода задает изменения выходных уровней на выводах ТЮА
и ТЮВ после того, как происходит событие. Управление выводом ТЮВ
используется только в том случае, если ТЮВ определен как выход (не как
вход внешнего события).
Следующие события управляют ТЮА и ТЮВ: программный триггер,
внешнее событие и совпадение RC. Совпадение RA управляет выводом
ТЮА, а совпадение RB управляет выводом ТЮВ. Каждое из этих событий
в зависимости от значения соответствующего поля регистра CMR может
устанавливать, сбрасывать или переключать в противоположное состояние
соответствующий выход.
27.3. Пользовательский интерфейс
Пользовательский интерфейс ТС представлен специальными регистрами
МК, перечисленными в табл. 27.3, 27.4.
Табл. 27.3. Глобальная карта регистров таймера/счетчика (ТС)
Сме- щение Канал/регистр Имя Доступ Значение после сброса
0x00 Канал 0 ТС
0x40 Канал 1 ТС См. табл. 27.4
0x80 Канал 2 ТС
ОхСО Регистр команд блока ТС BCR Только запись -
0хС4 Регистр режима блока ТС BMR Чтение/запись 0
Табл. 27.4. Отображение регистров одного канала таймера/счетчика (ТС)
Сме- щение Регистр Имя Доступ Значение после сброса
0x00 0x04 0x08 ОхОС Регистр команд канала ТС CCR Только запись Регистр режима канала ТС CMR Чтение/запись 0 Зарезервировано - Зарезервировано - - -
Табл. 27.4.
(окончание)
Сме- щение Регистр Имя Доступ Значение после сброса
0x10 Регистр значения счетчика ТС CV Только чтение 0 ~~
0x14 Регистр А канала ТС RA Чтение/запись1 0
0x18 Регистр В канала ТС RB Чтение/запись1 0
0х1С Регистр С канала ТС RC Чтение/запись 0
0x20 Регистр состояния канала ТС SR Только чтение 0
0x24 Регистр разрешения прерываний от канала ТС IER Только запись -
0x28 Регистр запрещения прерываний от канала ТС IDR Только запись -
0х2С Регистр маски прерываний от канала ТС IMR Только чтение 0
1 Доступен только для чтения, если поле WAVE = 0.
Регистр BCR (регистр команд блока) и регистр BMR (регистр режима
блока) управляют всем блоком ТС. Каналы ТС управляются регистрами,
перечисленными в табл. 27.4. Смещение каждого регистра канала, указан-
ное в табл. 27.4, является смещением относительно значения смещения со-
ответствующего канала, указанного в табл. 27.3.
27.3.1. Регистр команд блока ТС BCR
Битовая структура регистра показана в табл. 27.5.
Табл. 27.5. Битовая структура регистра команд блока ТС BCR
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8 ___
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - - - SYNC_
SYNC: команда синхронизации.
О = никакого эффекта.
1 = переводит в активный уровень сигнал SYNC, который генерирует
программный триггер одновременно для каждого из каналов.
27.3.2. Регистр режима блока ТС BMR
Битовая структура регистра показана в табл. 27.6.
Табл. 27.6. Битовая структура регистра режима блока ТС BMR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - TC2XC2S TC1XC1S TC0XC0S
* TC0XC0S: выбор внешнего синхросигнала 0.
Возможные значения этого поля приведены в табл. 27.7.
Табл. 27.7. Возможные значения поля TC0XC0S
TC0XC0S Сигнал, связанный с ХСО
0 0 TCLK0
0 1 Нет
1 0 TIOA1
1 1 TIOA2
* TC1XC1S: выбор внешнего синхросигнала 1.
Возможные значения этого поля приведены в табл. 27.8.
Табл. 27.8. Возможные значения поля TC1XC1S
TC1XC1S Сигнал, связанный с ХС1
0 0 TCLK1
0 1 Нет
1 0 ТЮАО
1 1 TIOA2
* TC2XC2S: выбор внешнего синхросигнала 2.
Возможные значения этого поля приведены в табл. 27.9.
Табл. 27.9. Возможные значения поля TC2XC2S
TC2XC2S Сигнал, связанный с ХС2
0 0 TCLK2 ““
0 1 Нет
1 0 ТЮАО
1 1 TIOA1
27.3.3. Регистр команд канала ТС CCR
Битовая структура регистра показана в табл. 27.10.
Табл. 27.10. Битовая структура регистра команд канала ТС CCR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - SWTRG CLKDIS CLKEN
* CLKEN: команда разрешения тактирования счетчика.
0 = никакого эффекта.
1 = разрешает тактирование, если CLKDIS не равен 1.
* CLKDIS: команда запрещения тактирования счетчика.
0 = никакого эффекта.
1 = отключает тактирование.
* SWTRG: команда программного триггера.
0 = никакого эффекта.
1 = программный триггер выполнен: счетчик сброшен и тактирование
начато.
27.3.4. Регистр режима канала ТС CMR: режим захвата
Битовая структура регистра показана в табл. 27.11.
Табл. 27.11. Битовая структура регистра режима канала ТС CMR в режиме
захвата
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - LDRB LDRA
15 14 13 12 11 10 9 8
WAVE = 0 CPCTRG - - - ABETRG ETRGEDG
7 6 5 4 3 2 1 0
LDBDIS LDBSTOP BURST CLKI TCCLKS
* TCCLKS: выбор синхросигнала.
Возможные значения этого поля приведены в табл. 27.12.
Табл. 27.12. Возможные значения поля TCCLKS
TCCLKS Выбранный синхросигнал
0 0 0 TIMER_CLOCK1
0 0 1 TIMER_CLOCK2
0 1 0 TIMER_CLOCK3
0 1 1 TIMER_CLOCK4
1 0 0 TIMER_CLOCK5
1 0 1 xco
1 1 0 XC1
1 1 1 XC2
* CLKI: инверсия синхросигнала.
О = счетчик инкрементируется по положительному перепаду импульса
синхросигнала.
1 = счетчик инкрементируется по отрицательному перепаду импульса
синхросигнала.
* BURST: выбор burst-сигнала.
Возможные значения этого поля приведены в табл. 27.13.
Табл. 27.13. Возможные значения поля BURST
______BURST__________________Задаваемые условия синхронизации______
„ 0 Внешний сигнал не пропускается
в качестве синхросигнала
Табл. 27.13. (окончание)
BURST Задаваемые условия синхронизации
0 1 ХСО объединяется в соответствии с логической функцией AND с выбранным синхросигналом
1 0 ХС1 объединяется в соответствии с логической функцией AND с выбранным синхросигналом
1 1 ХС2 объединяется в соответствии с логической функцией AND с выбранным синхросигналом
• LDBSTOP: останов тактирования счетчика по загрузке RB.
О = счетчик не останавливается, когда происходит загрузка RB.
1 = счетчик останавливается, когда происходит загрузка RB.
* LDBDIS: отключение тактирования счетчика по загрузке RB.
О = тактирование счетчика не отключается, когда происходит загрузка RB.
1 = тактирование счетчика отключается, когда происходит загрузка RB.
• ETRGEDG: выбор перепада триггера.
Возможные значения этого поля приведены в табл. 27.14.
Табл. 27.14. Возможные значения поля ETRGEDG
ETRGEDG Перепад
0 0 Никакой
0 1 Положительный
1 0 Отрицательный
1 1 Любой
* ABETRG: выбор внешнего триггера ТЮА или ТЮВ.
О - ТЮВ используется как внешний триггер.
1 = ТЮА используется как внешний триггер.
* CPCTRG: триггер совпадения RC разрешен.
О = совпадение RC не имеет никакого влияния на счетчик и его так-
тирование.
1 = совпадение RC сбрасывает счетчик и начинает его тактирование.
• WAVE
О = режим захвата разрешен.
1 = режим захвата заблокирован (режим формирования разрешен).
• LDRA: выбор загрузки RA.
Возможные значения этого поля приведены в табл. 27.15.
Табл. 27.15. Возможные значения поля LDRA
LDRA Перепад > .
0 0 Никакой
0 1 Положительный перепад ТЮА
Табл. 27.15.
(окончание)
LDRA Перепад
1 0 Отрицательный перепад ТЮА
1 1 Любой перепад ТЮА
• LDRB: выбор загрузки RB.
Возможные значения этого поля приведены в табл. 27.16.
Табл. 27.16. Возможные значения поля LDRB
LDRB Перепад
0 0 Никакой
0 1 Положительный перепад ТЮВ
1 0 Отрицательный перепад ТЮВ
1 1 Любой перепад ТЮВ
27.3.5. Регистр режима канала ТС CMR: режим
формирования
Битовая структура регистра показана в табл. 27.17.
Табл. 27.17. Битовая структура регистра режима канала ТС CMR в режиме
формирования
31 30 29 28 27 26 25 24
BSWTRG BEEVT ВСРС ВСРВ
23 22 21 20 19 18 17 16
ASWTRG AEEVT АСРС АСРА
15 14 13 12 и 10 9 8
WAVE = 1 WAVSEL ENETRG EEVT EEVTEDG
7 6 5 4 3 2 1 0
CPCDIS CPCSTOP BURST CLKI TCCLKS
* TCCLKS: выбор синхросигнала.
Возможные значения этого поля приведены в табл. 27.18.
Табл. 27.18. Возможные значения поля TCCLKS
_____TCCLKS___________________Выбранный синхросигнал
ООО TIMER_CLOCK1
Табл. 27.18.
(окончание)
TCCLKS Выбранный синхросигнал
0 0 1 TIMER_CLOCK2
0 1 0 TIMER_CLOCK3
0 1 1 TIMER_CLOCK4
1 0 0 TIMER_CLOCK5
1 0 1 ХСО
1 1 0 XC1
1 1 1 XC2
• CLKI: инверсия синхросигнала.
О = счетчик инкрементируется по положительному перепаду импульса
синхросигнала.
1 = счетчик инкрементируется по отрицательному перепаду импульса
синхросигнала.
* BURST: выбор burst-сигнала.
Возможные значения этого поля приведены в табл. 27.19.
Табл. 27.19. Возможные значения поля BURST
BURST Задаваемые условия синхронизации
0 0 Внешний сигнал не пропускается в качестве синхросигнала ХСО объединяется в соответствии
0 1 с логической функцией AND с выбранным синхросигналом ХС1 объединяется в соответствии
1 0 с логической функцией AND с выбранным синхросигналом ХС2 объединяется в соответствии
1 1 с логической функцией AND с выбранным синхросигналом _
* CPCSTOP: останов тактирования счетчика при совпадении RC.
О - тактирование счетчика не останавливается, когда счетчик достигает
значения RC.
1 = тактирование счетчика останавливается, когда счетчик достигает
значения RC.
* CPCDIS: отключение тактирования счетчика при совпадении RC.
О = тактирование счетчика не отключается, когда счетчик достигает
значения RC.
1 = тактирование счетчика отключается, когда счетчик достигает зна-
чения RC.
• EEVTEDG: выбор перепада внешнего события.
Возможные значения этого поля приведены в табл. 27.20.
Табл. 27.20. Возможные значения поля EEVTEDG
EEVTEDG Перепад
' 0 0 Никакой
0 1 Положительный
1 0 Отрицательный
1 1 Любой
* EEVT: выбор внешнего события.
Возможные значения этого поля приведены в табл. 27.21.
Табл. 27.21. Возможные значения поля EEVT
EEVT Сигнал, выбранный в каче- стве внешнего события Направление ТЮВ
0 0 ТЮВ Вход1
0 1 хсо Выход
1 0 ХС1 Выход
1 1 ХС2 Выход
1 Если в качестве внешнего события выбран сигнал ТЮВ, то он автоматиче-
ски конфигурируется как вход и больше не генерирует импульсную последователь-
ность.
• ENETRG: разрешение события от внешнего триггера.
0 = внешнее событие не оказывает никакого влияния на счетчик и его
тактирование. В этом случае выбранное внешнее событие управляет толь-
ко выводом ТЮА.
1 = внешнее событие сбрасывает счетчик и начинает его тактирова-
ние.
* WAVSEL: выбор формы импульсной последовательности при формиро-
вании.
Возможные значения этого поля приведены в табл. 27.22.
Табл. 27.22. Возможные значения поля WAVSEL
WAVSEL Эффект
0 0 Режим UP без автоматического триггера при совпадении RC
1 0 Режим UP с автоматическим триггером при совпадении RC
0 1 Режим UPDOWN без автоматического триггера при совпадении RC
1 1 Режим UPDOWN с автоматическим триггером при совпадении RC
• WAVE = 1.
О = режим формирования заблокирован (режим захвата разрешен).
1 = режим формирования разрешен.
• АСРА: эффект на выводе ТЮА от совпадения RA.
Возможные значения этого поля приведены в табл. 27.23.
Табл. 27.23. Возможные значения поля АСРА
АСРА Эффект на выводе ТЮА
0 0 Нет
0 1 Установка
1 0 Сброс
1 1 Переключение состояния
* АСРС: эффект на выводе ТЮА от совпадения RC.
Возможные значения этого поля приведены в табл. 27.24.
Табл. 27.24. Возможные значения поля АСРС
АСРС Эффект на выводе ТЮА
0 0 Нет
0 1 Установка
1 0 Сброс
1 1 Переключение состояния
* AEEVT: эффект на выводе ТЮА от внешнего события.
Возможные значения этого поля приведены в табл. 27.25.
Табл. 27.25. Возможные значения поля AEEVT
AEEVT Эффект на выводе ТЮА __
0 0 Нет
0 1 Установка
1 0 Сброс
1 1 Переключение состояния _
* ASWTRG: эффект на выводе ТЮА от программного триггера.
Возможные значения этого поля приведены в табл. 27.26.
Табл. 27.26. Возможные значения поля ASWTRG
ASWTRG Эффект на выводе ТЮА
О
О
Нет
Табл. 27.26. (окончание)
ASWTRG Эффект на выводе ТЮА
‘ 0 1 Установка
1 0 Сброс
1 1 Переключение состояния
• ВСРВ: эффект на выводе ТЮВ от совпадения RB.
Возможные значения этого поля приведены в табл. 27.27.
Табл. 27.27. Возможные значения поля ВСРВ
ВСРВ Эффект на выводе ТЮВ
0 0 1 1 0 Нет 1 Установка 0 Сброс 1 Переключение состояния
• ВСРС: эффект на выводе ТЮВ от совпадения RC.
Возможные значения этого поля приведены в табл. 27.28.
Табл. 27.28. Возможные значения поля ВСРС
ВСРС Эффект на выводе ТЮВ
0 0 Нет
0 1 Установка
1 0 Сброс
1 1 Переключение состояния
* BEEVT: эффект на выводе ТЮВ от внешнего события.
Возможные значения этого поля приведены в табл. 27.29.
Табл. 27.29. Возможные значения поля BEEVT
BEEVT Эффект на выводе ТЮВ
0 0 Нет
0 1 Установка
1 0 Сброс
— 1 1 Переключение состояния
• BSWTRG: эффект на выводе ТЮВ от программного триггера.
Возможные значения этого поля приведены в табл. 27.30.
Табл. 27.30. Возможные значения поля BSWTRG
BSWTRG Эффект на выводе ТЮВ
0 0 Нет
0 1 Установка
1 0 Сброс
1 1 Переключение состояния
27.3.6. Регистр значения счетчика ТС CV
Битовая структура регистра показана в табл. 27.31.
Табл. 27.31. Битовая структура регистра значения счетчика ТС CV
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
CV
7 6 5 4 3 2 1 0
CV
* CV: значение счетчика.
Поле CV содержит значение счетчика в каждый момент времени.
27.3.7. Регистр А ТС RA
Тип доступа: только для чтения, если WAVE = 0; чтение-запись, если
WAVE = 1. Битовая структура регистра показана в табл. 27.32.
Табл. 27.32. Битовая структура регистра А ТС RA
31 30 29 28 27 26 25 24
- - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
Табл. 27.32.
(окончание)
15 14 13 12 11 10 9 8
RA
7 6 5 4 3 2 1 0
RA
• RA: регистр А.
Поле RA содержит значение регистра А в каждый момент времени.
27.3.8. Регистр В ТС RB
Тип доступа: только для чтения, если WAVE = 0; чтение/запись, если
WAVE = 1. Битовая структура регистра показана в табл. 27.33.
Табл. 27.33. Битовая структура регистра В ТС RB
31 30 29 28 27 26 25 24
- - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
RB
7 6 5 4 3 2 1 0
RB
• RB: регистр В.
Поле RB содержит значение регистра В в каждый момент времени.
27.3.9. Регистр С ТС RC
Битовая структура регистра показана в табл. 27.34.
Табл. 27.34. Битовая структура регистра С ТС RC
__ 31 30 29 28 27 26 25 24
- - - - - - - -
Табл. 27.34.
(окончание)
23 22 21 20 19 18 17 16
- - - - - - -
15 14 13 12 11 10 9 8
RC
7 6 5 4 3 2 1 0
RC
• RC: регистр С.
Поле RC содержит значение регистра С в каждый момент времени.
27.3.10. Регистр состояния ТС SR
Битовая структура регистра показана в табл. 27.35.
Табл. 27.35. Битовая структура регистра состояния ТС SR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - МТЮВ МТЮА CLKSTA
15 14 13 12 и 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0 __
ETRGS LDRBS LDRAS CPCS CPBS CPAS LOVRS COVFS
Замечание. Чтение регистра состояния автоматически сбросит установ-
ленные флаги прерываний.
• COVFS: состояние переполнения счетчика.
0 = никакого переполнения счетчика не было после последнего чтения
регистра состояния.
1 = переполнение счетчика произошло после последнего чтения реги-
стра состояния.
* LOVRS: состояние загрузки по переполнению.
0 = загрузки по переполнению не было после последнего чтения реги-
стра состояния или WAVE = 1.
1 = РА или RB был загружен не менее, чем дважды без программного
чтения соответствующего регистра после последнего чтения регистра со-
стояния, если WAVE = 0.
• CPAS: состояние совпадения RA.
0 = совпадения RA не было после последнего чтения регистра состоя-
ния или WAVE = 0.
1 = совпадение RA произошло после последнего чтения регистра со-
стояния, если WAVE = 1.
* CPBS: состояние совпадения RB.
0 = совпадения RB не было после последнего чтения регистра состоя-
ния или WAVE = 0.
1 = совпадение RB произошло после последнего чтения регистра со-
стояния, если WAVE = 1.
• CPCS: состояние совпадения RC.
0 = совпадения RC не было после последнего чтения регистра состоя-
ния.
1 = совпадение RC произошло после последнего чтения регистра со-
стояния.
* LDRAS: состояние загрузки из RA.
0 = загрузки из RA не было после последнего чтения регистра состоя-
ния или WAVE = 1.
1 = загрузка из RA произошла после последнего чтения регистра со-
стояния, если WAVE = 0.
* LDRBS: состояние загрузки из RB.
0 = загрузки из RB не было после последнего чтения регистра состоя-
ния или WAVE = 1.
1 — загрузка из RB произошла после последнего чтения регистра со-
стояния, если WAVE = 0.
* ETRGS: состояние внешнего триггера.
0 = внешнего триггера не было после последнего чтения регистра со-
стояния.
1 = внешний триггер произошел после последнего чтения регистра со-
стояния.
* CLKSTA: состояние разрешенности тактирования.
0 = тактирование заблокировано.
1 = тактирование разрешено.
* МТЮА: отображение ТЮА.
0 = ТЮА в низком уровне. Если WAVE = 0, то это означает, что вывод
TIOA в низком уровне. Если WAVE = 1, то это означает, что ТЮА управ-
ляется низким уровнем.
0 = ТЮА в высоком уровне. Если WAVE = 0, то это означает, что вывод
TIOA в высоком уровне. Если WAVE = 1, то это означает, что ТЮА управ-
ляется высоким уровнем.
• МТЮВ: отображение ТЮВ.
0 = ТЮВ в низком уровне. Если WAVE = 0, то это означает, что вывод
ТЮВ в низком уровне. Если WAVE = 1, то это означает, что ТЮВ управ-
ляется низким уровнем.
О = ТЮВ в высоком уровне. Если WAVE = 0, то это означает, что вывод
ТЮВ в высоком уровне. Если WAVE = 1, то это означает, что ТЮВ управ-
ляется высоким уровнем.
Замечание. При WAVE = 0 задан режим захвата, при котором выводы
ТЮА и ТЮВ являются входами, поэтому уровни на них определяются
внешними сигналами. При WAVE = 0 задан режим формирования, при
котором выводы ТЮА и ТЮВ являются выходами (см. табл. 27.1), поэтому
уровни на них управляются внутренними драйверами.
27.3.11. Регистры разрешения/запрещения/маски
прерываний от ТС IER/IDR/IMR
Битовая структура каждого из этих регистров показана в табл. 27.36.
Замечание. Чтение регистра состояния автоматически сбросит установ-
ленные флаги прерываний.
Табл. 27.36. Битовая структура каждого из регистров разрешения/запреще-
ния/маски прерываний от ТС IER/IDR/IMR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
ETRGS LDRBS LDRAS CPCS CPBS CPAS LOVRS COVFS
Для регистра IER:
* COVFS: переполнение счетчика.
О = никакого эффекта.
1 = разрешает прерывание от переполнения счетчика.
* LOVRS: загрузка по переполнению.
О = никакого эффекта.
1 = разрешает прерывание от загрузки по переполнению.
* CPAS: совпадение RA.
О = никакого эффекта.
1 = разрешает прерывание при совпадении RA.
* CPBS: совпадение RB.
О = никакого эффекта.
1 = разрешает прерывание при совпадении RB.
• CPCS: совпадение RC.
О = никакого эффекта.
1 = разрешает прерывание при совпадении RC.
« LDRAS: загрузка из RA.
О = никакого эффекта.
1 = разрешает прерывание при загрузке из RA.
• LDRBS: загрузка из RB.
О = никакого эффекта.
1 = разрешает прерывание при загрузке из RB.
• ETRGS: внешний триггер.
О = никакого эффекта.
1 = разрешает прерывание от внешнего триггера.
Для регистра IDR:
• COVFS: переполнение счетчика.
О = никакого эффекта.
1 = запрещает прерывание от переполнения счетчика.
* LOVRS: загрузка по переполнению.
О = никакого эффекта.
1 = запрещает прерывание от загрузки по переполнению (если WAVE - 0).
* CPAS: совпадение RA.
0 = никакого эффекта.
1 = запрещает прерывание при совпадении RA (если WAVE = 1).
* CPBS: совпадение RB.
0 = никакого эффекта.
1 = запрещает прерывание при совпадении RB (если WAVE = 1).
• CPCS: совпадение RC.
0 = никакого эффекта.
1 = запрещает прерывание при совпадении RC.
• LDRAS: загрузка из RA.
0 = никакого эффекта.
1 = запрещает прерывание при загрузке из RA (если WAVE = 0).
* LDRBS: загрузка из RB.
0 = никакого эффекта.
1 = запрещает прерывание при загрузке из RB (если WAVE = 0).
* ETRGS: внешний триггер.
0 = никакого эффекта.
1 = запрещает прерывание от внешнего триггера.
Для регистра IMR:
• COVFS: переполнение счетчика.
0 = прерывание от переполнения счетчика запрещено.
1 = прерывание от переполнения счетчика разрешено.
* LOVRS: загрузка по переполнению.
0 = прерывание от загрузки по переполнению запрещено.
1 = прерывание от загрузки по переполнению разрешено.
• CPAS: совпадение RA.
О — прерывание при совпадении RA запрещено.
1 = прерывание при совпадении RA разрешено.
• CPBS: совпадение RB.
О = прерывание при совпадении RB запрещено.
1 = прерывание при совпадении RB разрешено.
• CPCS: совпадение RC.
О = прерывание при совпадении RC запрещено.
1 = прерывание при совпадении RC разрешено.
* LDRAS: загрузка из RA.
О = прерывание при загрузке из RA запрещено.
1 = прерывание при загрузке из RA разрешено.
• LDRBS: загрузка из RB.
О = прерывание при загрузке из RB запрещено.
1 = прерывание при загрузке из RB разрешено.
* ETRGS: внешний триггер.
О = прерывание от внешнего триггера запрещено.
1 = прерывание от внешнего триггера разрешено.
ГЛАВА 28
КОНТРОЛЛЕР
ШИРОТНО-ИМПУЛЬСНОЙ
МОДУЛЯЦИИ (PWM)
28.1. Основные особенности и общее описание
Входящий в состав всех МК семейства AT32UC3 контроллер широтно-
импульсной модуляции (PWM) имеет следующие основные особенности.
• 7 каналов.
• Один 20-разрядный счетчик на канал.
• Общий генератор синхросигналов, обеспечивающий на выходе три-
надцать различных значений синхросигнала:
- счетчик по модулю п, обеспечивающий на выходах одиннадцать
значений синхросигнала.
- два независимых линейных делителя, подключаемых к выходам
счетчика по модулю п.
• Независимые каналы:
- независимо действующие команды включения и отключения для
каждого канала,
- независимый выбор синхросигнала для каждого канала,
- независимо задаваемые значения периода и длительности им-
пульса (рабочего цикла) для каждого канала,
- двойная буферизация значений периода или рабочего цикла для
каждого канала,
- программируемый выбор полярности выходной импульсной по-
следовательности для каждого канала,
- программируемое выравнивание формы импульсов выходной им-
пульсной последовательности (по центру или по левой границе)
для каждого канала.
Макроячейка PWM управляет несколькими независимыми канала-
ми. Каждый канал управляет генерацией выходной прямоугольной им-
пульсной последовательности. Характеристики этой последовательности
(период, длительность импульса и полярность) конфигурируются через
пользовательский интерфейс PWM. В каждом канале может быть выбран
Для использования один из источников синхронизации, обеспечиваемых
тактовым генератором. Тактовый генератор формирует несколько частот
синхронизации, получаемых путем деления частоты задающего генератора
блока контроллера PWM.
Рис. 28.1. Блок-схема контроллера PWM
Все виды доступа к PWM производятся через отображения регистров
PWM на периферийную шину. Каналы PWM могут быть синхронизированы
между собой, чтобы генерировать взаимно перекрывающиеся импульсные
последовательности. Все каналы имеют двойную систему буферизации для
предотвращения генерации непредсказуемых импульсных последовательно-
стей при программном изменении периода или длительности импульса.
Блок-схема контроллера PWM приведена на рис. 28.1.
Описание сигналов, относящихся к одному каналу интерфейса PWM,
приведено в табл. 28.1. Каждый канал выводит одну импульсную последо-
вательность через одну линию ввода-вывода.
Выводы МК, используемые интерфейсом PWM, могут быть мульти-
плексированы с линиями контроллера GPIO. Чтобы задать для требуемых
выводов PWM их периферийную функцию, необходимо соответствующим
образом сконфигурировать контроллер GPIO. Если линия ввода-вывода не
используется приложением в качестве вывода PWM, она может использо-
ваться для других целей в составе контроллера GPIO.
Все выводы PWM могут быть разрешены или запрещены. Например,
если приложение требует работы только четырех каналов PWM, то только
четыре линии GPIO могут быть назначены в качестве выводов PWM.
Синхросигнал PWM функционирует во время операций отладки.
Перед использованием PWM программа должна предварительно раз-
решить его синхронизацию в менеджере питания. Если в приложении не
требуются операции PWM, то синхронизация PWM может быть запреще-
на с возможностью ее последующего разрешения. В этом случае контрол-
лер PWM возобновит свои операции с момента его остановки. В качестве
задающей частоты блок PWM использует частоту задающего генератора
(МСК) — синхросигнала периферийной шины.
Табл. 28.1. Описание линий ввода-вывода, относящихся к PWM
Имя вывода____________________Описание____________________Тип вывода
PWMx Выход контроллера PWM для вывода им- Выход
пульсной последовательности в канале х
Линия прерывания от PWM связана с одним из внутренних источни-
ков контроллера прерываний. Использование прерывания от PWM требует
предварительного конфигурирования контроллера прерываний.
28.2. Функциональное описание
Модуль PWM состоит из модуля генератора тактовой частоты и семи кана-
лов. Он имеет следующие основные особенности.
• синхронизированный системными синхросигналами (МСК) мо-
дуль генератора тактовой частоты обеспечивает формирование 13
различных частот.
• для каждого канала может быть независимо выбран один из выхо-
дов генератора тактовой частоты.
• каждый канал генерирует импульсную последовательность с харак-
теристиками, которые могут быть определены независимо для каж-
дого канала через регистры пользовательского интерфейса.
28.2.1. Тактовый генератор PWM
Блок-схема тактового генератора PWM приведена на рис. 28.2. Узел задаю-
щей частоты макроячейки PWM состоит из модуля тактового генератора,
обеспечивающего набор различных синхрочастот, доступных для всех ка-
налов. Каждый канал может независимо выбирать для своего тактирова-
ния одну из этих частот.
Тактовый генератор состоит из трех блоков:
• Счетчик по модулю п, который обеспечивает генерацию 11 син-
хрочастот: МСК, МСК/2, МСК/4, FMCK/8, МСК/16, МСК/32,
МСК/64, МСК/128, МСК/256, МСК/512, МСК/1024;
• Два линейных делителя (1, 1/2, 1/3... 1/255), которые обеспечивают
генерацию двух отдельных синхрочастот: clkA и clkB.
Каждый линейный делитель может независимо производить деление
одной из частот с выхода счетчика по модулю п. Выбор частоты для деления
производится согласно значению поля PREA (PREB) регистра режима PWM
(MR). Результирующая частота clkA (clkB) — это выбранная частота, поде-
ленная на значение битового поля DIVA (DIVB) из регистра режима PWM.
По умолчанию после сброса контроллера PWM значения полей DIVA
(DIVB) и PREA (PREB) в регистре режима PWM равны 0. Это подразуме-
вает, что после сброса частоты clkA (clkB) отключены.
При сбросе все синхрочастоты, генерируемые счетчиком по модулю п,
кроме частоты «с1к», отключены. Это также справедливо, когда узел задаю-
щей частоты PWM отключен в менеджере питания.
мск
PWM.MR
Рис. 28.2. Блок-схема тактового генератора PWM
28.2.2. Канал PWM
Блок-схема одного канала PWM приведена на рис. 28.3. Каждый из семи
каналов состоит из трех блоков:
• селектор тактовой частоты, который выбирает одну из частот, вы-
рабатываемых генератором тактовой частоты, описанным выше;
• внутренний 20-разрядный счетчик, тактируемый с выхода селектора
тактовой частоты. Этот счетчик инкрементируется или декрементиру-
ется согласно текущей конфигурации канала и событий компараторов;
• компаратор, способный генерировать события по значению вну-
треннего счетчика. Компаратор также участвует в формировании
выходной импульсной последовательности на выводе PWMx в соот-
ветствии с заданной текущей конфигурацией.
от периферийной шины
Выходная импульсная
последовательность PVVMX
Рис. 28.3. Блок-схема одного канала PWM
28.2.3. Свойства последовательностей
формируемые контроллером PWM импульсные последовательности имеют
следующие характеристики.
• Выбор внутреннего синхросигнала. Внутренний счетчик канала так-
тируется одной из частот, вырабатываемых генератором тактовой
частоты, описанным в предыдущем разделе. Этот параметр канала
задается в битовом поле CPRE регистра CMRx. По умолчанию это
поле сброшено в 0.
• Период последовательности. Этот параметр канала задается в бито-
вом поле CPRD регистра CPRDx.
Если форма импульсной последовательности выровнена по левой гра-
нице, то период выходной последовательности зависит от синхрочастоты
источника и может быть вычислен следующим образом.
При использовании задающей частоты (МСК), поделенной на значение
предделителя X (X может быть равно 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 или
1024), период будет вычисляться по формуле:
Period = (X х CPRD) / МСК.
При использовании задающей частоты, поделенной на одно из значе-
ний делителя DIVA или DIVB, формула вычисления периода принимает
следующий вид:
Period = (CPRD х DIVA) / МСК
или
Period = (CPRD х DIVB) / МСК.
Если форма импульсной последовательности выровнена по центру, тог-
да значение ее периода зависит от счетчика частоты источника и может
быть вычислено следующим образом.
При использовании задающей частоты (МСК), поделенной на значение
предделителя X (X может быть равно 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 или
1024), период будет вычисляться по формуле:
Period = (2 х X х CPRD) / МСК.
При использовании задающей частоты, поделенной на одно из значе-
ний делителя DIVA или DIVB, формула вычисления периода принимает
следующий вид:
Period = (2 х CPRD х DIVA) / МСК
или
Period = (2 х CPRD х DIVB) / МСК.
• Относительная длительность импульса (рабочий цикл). Этот параметр
канала задается в битовом поле CDTY регистра CDTYx.
Если форма импульсной последовательности выровнена по левой гра-
нице, то рабочий цикл будет вычисляться по формуле:
Duty cycle = (Period — (1/Fx) x CDTY)) / Period,
где Fx — выбранная синхрочастота канала.
Если форма импульсной последовательности выровнена по центру, то
рабочий цикл будет вычисляться по формуле:
Duty cycle = (Period / 2 - (1/Fx) x CDTY)) / (Period I 2),
где Fx — выбранная частота синхронизации канала.
Полярность импульсной последовательности. В начале периода выход-
ной сигнал может быть в высоком или низком уровне. Это свойство задает-
ся в битовом поле CPOL регистра CMRx. По умолчанию выходной сигнал
начинается с низкого уровня.
* Выравнивание импульсной последовательности. Форма импульсной
последовательности может быть выровнена по левой границе или по цен-
тру. Выравнивание по центру может использоваться, чтобы генерировать
последовательности с неперекрывающимися импульсами. Это свойство за-
дается в битовом поле CALG регистра CMRx. По умолчанию задан режим
выравнивания по левой границе.
Диаграммы, изображенные на рис. 28.4, иллюстрируют формирование не-
перекрывающихся импульсных последовательностей, выровненных по центру.
Когда последовательность выровнена по центру, происходит инкремен-
тирование внутреннего счетчика канала до значения CPRD, а затем его
декрементирование до 0. Это момент окончания периода.
Когда последовательность выровнена по левой границе, внутренний
счетчик канала инкрементируется до значения CPRD, а затем сбрасывает-
ся. Это момент окончания периода.
Таким образом, для одного и того же значения CPRD период для кана-
ла с выровненной по центру последовательности вдвое превышает период
для канала с выровненной по левой границе последовательностью.
Рис. 28.4. Формирование неперекрывающихся импульсных последователь-
ностей, выровненных по центру
Уровень выходного сигнала последовательности имеет значение 0, когда-
• CDTY = CPRD и CPOL = О,
• CDTY = 0 и CPOL = 1.
Уровень выходного сигнала последовательности имеет значение 1 (как
только канал разрешается), когда:
• CDTY = 0 и CPOL = О,
• CDTY = CPRD и CPOL = 1.
Полярность выходной импульсной последовательности должна быть
задана перед включением канала. Это немедленно затрагивает уровень вы-
ходного сигнала. Изменения полярности последовательности не имеют ни-
какого эффекта, когда канал разрешен.
Диаграммы, изображенные на рис. 28.5, иллюстрируют детали форми-
рования импульсных последовательностей.
28.2.4. Операции контроллера PWM
28.2.4.1. Инициализация
Перед включением канала PWM он должен быть сконфигурирован пользо-
вательской программой. Конфигурирование включает задание следующих
параметров:
• конфигурирование тактового генератора, задание значений DIVA
и DIVB, если они требуются;
• выбор синхросигнала для каждого канала (поле CPRE в регистре
CMRx);
• выбор способа выравнивания импульсной последовательности для
каждого канала (поле CALG в регистре CMRx);
• выбор периода для каждого канала (поле CPRD в регистре CPRDx).
Запись в регистр CPRDx возможна только в том случае, когда ка-
нал заблокирован. После проверки корректности установок канала
пользователь должен использовать регистр CUPDx, чтобы модифи-
цировать содержимое регистра CPRDx, как будет показано ниже;
• выбор рабочего цикла для каждого канала (поле CDTY в регистре
CDTYx). Запись в регистр CDTYx возможна только в том случае, когда
канал заблокирован. После проверки корректности установок канала
пользователь должен использовать регистр CUPDx, чтобы модифици-
ровать содержимое регистра CDTYx, как будет показано ниже;
• выбор полярности выходной импульсной последовательности для
каждого канала (поле CPOL в регистре CMRx);
• разрешение прерываний (запись в поле CHIDx регистра IER);
• включение канала PWM (запись в поле CHIDx регистра ENA).
Имеется возможность синхронизировать различные каналы путем
их одновременного включения записью нескольких битовых полей
CHIDx в регистре ENA. В этом случае все каналы должны иметь
одну и ту же конфигурацию селектора синхросигнала и одно и то
же значение периода.
28.2.4.2. Критерии выбора источника синхронизации
При задании источника синхронизации облегчить выбор среди большого ко-
личества синхрочастот помогает существующая зависимость между значени-
ем регистра периода (CPRDx) и регистра рабочего цикла (CDTYx). Значение
количества событий, содержащееся в регистре периода, задает точность PWM.
Элементарный интервал («квант») рабочего цикла не может быть меньше, чем
значение 1/CPRDx. Таким образом, чем больше значение CPRDx, тем боль-
ше будет точность PWM. Например, если пользователь записывает в CPRDx
число 15 (в десятичном представлении), то имеется возможность задать зна-
чение между 1 и 14 регистра CDTYx. Результирующий «квант» рабочего цик-
ла в указанном случае не может быть меньше, чем 1/15 периода PWM.
28.2.4.3. Изменение рабочего цикла или периода
Контроллер PWM предоставляет пользователю возможность «на лету» мо-
дифицировать рабочий цикл импульсной последовательности или ее пе-
риод. При этом гарантируется недопущение непредсказуемых состояний
выхода при программном изменении параметров импульсной последова-
тельности, когда канал включен. Эта гарантия обеспечивается двойной
буферизацией регистров CPRDx и CDTYx. Пользовательская программа
может записать новое значение периода или значение рабочего цикла в ре-
гистр обновления (CUPDx). Этот регистр сохраняет новое значение без его
активации до конца текущего цикла импульсной последовательности, а за-
тем происходит автоматическая активация нового значения. Модификация
какого регистра (CPRDx или CDTYx) будет производиться содержимым
регистра CUPDx, задается битовым полем CPD регистра CMRx.
Рис. 28.6. Синхронизация корректного обновления периода или рабочего
цикла импульсной последовательности
Замечание: Полярность и выравнивание могут измениться только тогда, когда канал
заблокирован
Рис. 28.7. Метод опроса
Блок-схема, изображенная на рис. 28.6, иллюстрируют синхронизацию
обновления периода или рабочего цикла импульсной последовательности.
Чтобы предотвратить случайную программную перезапись регистра
CUPDx, можно использовать события состояния. При этом возможно при-
менение двух методов. В обоих методах пользователь должен разрешить от-
дельное прерывание в регистре IER на уровне контроллера PWM. Первый
метод (метод опроса) состоит в чтении соответствующего включенному ка-
налу бита состояния в регистре ISR (см. рис. 28.7). Второй метод использу-
ет программу обработки прерываний, связанную с каналом PWM.
Необходимо заметить, что программное чтение регистра ISR автомати-
чески сбрасывает флаги CHIDx.
28.2.4.4. Прерывания
В зависимости от маски прерываний в регистре IMR прерывание может
быть сгенерировано в конце периода соответствующего канала. Прерыва-
ние остается активным до операции программного чтения регистра ISR.
Прерывание от канала разрешается путем установки соответствующего
бита в регистре IER. Прерывание запрещается путем установки соответ-
ствующего бита в регистре IDR.
28.3. Пользовательский интерфейс
Пользовательский интерфейс контроллера PWM представлен специальны-
ми регистрами МК, перечисленными в табл. 28.2.
Табл. 28.2. Отображение регистров контроллера PWM
Сме- щение Регистр Имя Доступ Значение после сброса
0x00 Регистр режима PWM MR Чтение/запись 0
0x04 Регистр разрешения PWM ENA Только запись -
0x08 Регистр запрещения PWM DIS Только запись -
ОхОС Регистр состояния PWM SR Только чтение 0
0x10 Регистр разрешения прерываний от PWM IER Только запись -
0x14 Регистр запрещения прерываний от PWM IDR Только запись -
0x18 Регистр маски прерываний от PWM IMR Только чтение 0
0х1С Регистр состояния прерываний от PWM ISR Только чтение 0
0х4С— 0xF8 Зарезервировано - - -
Табл. 28.2. (окончание)
Сме- щение Регистр Имя Доступ Значение после сброса
0х4С— OxFC Зарезервировано - - -
0x100— OxiFC Зарезервировано - - -
0x200 Регистр режима канала 0 CMR0 Чтение/запись 0x0
0x204 Регистр рабочего цикла канала 0 CDTY0 Чтение/запись 0x0
0x208 Регистр периода канала 0 CPRD0 Чтение/запись 0x0
0х20С Регистр счетчика канала 0 CCNT0 Только чтение 0x0
0x210 Регистр обновления канала 0 CUPD0 Только запись -
Зарезервировано - - -
0x220 Регистр режима канала 1 CMR1 Чтение/запись 0x0
0x224 Регистр рабочего цикла канала 1 CDTY1 Чтение/запись 0x0
0x228 Регистр периода канала 1 CPRD1 Чтение/запись 0x0
0х22С Регистр счетчика канала 1 CCNT1 Только чтение 0x0
0x230 Регистр обновления канала 1 CUPD1 Только запись -
28.3.1. Регистр режима PWM MR
Битовая структура регистра показана в табл. 28.3.
Табл. 28.3. Битовая структура регистра режима PWM MR
31 30 29 28 27 26 25 24
- - - - PREB
23 22 21 20 19 18 17 16
DIVB
15 14 13 12 11 10 9 8
- - - - PREA
6 5 4 3 2 1
DIVA
• DIVA, DIVB: коэффициент деления CLKA, CLKB.
Возможные значения этих полей приведены в табл. 28.4.
Табл. 28.4. Возможные значения полей DIVA, DIVB
DIVA, DIVB CLKA, CLKB
0 1 Синхронизация CLKA, CLKB выключена Синхронизация CLKA, CLKB выбрана в поле PREA, PREB
2-255 Синхронизация CLKA, CLKB выбрана в поле PREA, PREB с делением на коэффициент DIVA, DIVB
• PREA, PREB
Возможные значения этих полей приведены в табл. 28.5.
Табл. 28.5. Возможные значения полей PREA, PREB
PREA, PREB Делитель входной частоты
0 0 0 0 МСК
0 0 0 1 МСК/2
0 0 1 0 МСК/4
0 0 1 1 МСК/8
0 1 0 0 МСК/16
0 1 0 1 МСК/32
0 1 1 0 МСК/64
0 1 1 1 МСК/128
1 0 0 0 МСК/256
1 0 0 1 МСК/512
1 0 1 0 МСК/1024
Другие Зарезервировано
28.3.2. Регистры разрешения/запрещения/состояния PWM
ENA/DIS/SR
Битовая структура каждого из этих регистров показана в табл. 28.6.
Табл. 28.6. Битовая структура каждого из регистров разрешения/запреще-
ния/состояния PWM ENA/DIS/SR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
Табл. 28.6. (окончание)
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- CHID6 CHID5 CHID4 CHID3 CHID2 CHID1 CHID0
• CHIDx: идентификатор канала.
Для регистра ENA:
О — никакого эффекта.
1 = разрешить выход PWM для канала х.
Для регистра DIS:
О = никакого эффекта.
1 = запретить выход PWM для канала х.
Для регистра SR:
О = выход PWM для канала х запрещен.
1 = вывод PWM для канала х разрешен.
28.3.3. Регистры разрешения/запрещения/маски/состояния
прерываний от PWM IER/IDR/IMR/ISR
Битовая структура каждого из этих регистров показана в табл. 28.6.
• CHIDx: идентификатор канала.
Для регистра IER:
О = никакого эффекта.
1 = разрешить прерывание от канала х PWM.
Для регистра IDR:
О = никакого эффекта.
1 = запретить прерывание от канала х PWM.
Для регистра IMR:
О = прерывание от канала х PWM запрещено.
1 = прерывание от канала х PWM разрешено.
Для регистра ISR:
О = никакой новый период последовательности в канале не был закон-
чен после последнего чтения регистра ISR.
1 = не менее чем один новый период последовательности в канале был
закончен после последнего чтения регистра ISR.
Замечание: Чтение регистра ISR автоматически сбрасывает флаги
CHIDx в нем.
28.3.4. Регистр режима канала PWM CMRx
Битовая структура регистра показана в табл. 28.7.
Табл. 28.7. Битовая структура регистра режима канала PWM CMRx
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - CPD CPOL CALG
7 6 5 4 3 2 1 0
- - - - CPRE
• CPRE: предделитель канала.
Возможные значения этого поля приведены в табл. 28.8.
Табл. 28.8. Возможные значения поля CPRE
CPRE Предделитель канала
0 0 0 0 МСК
0 0 0 1 МСК/2
0 0 1 0 МСК/4
0 0 1 1 МСК/8
0 1 0 0 МСК/16
0 1 0 1 МСК/32
0 1 1 0 МСК/64
0 1 1 1 МСК/128
1 0 0 0 МСК/256
1 0 0 1 МСК/512
1 0 1 0 МСК/1024
1 0 1 1 CLKA
1 1 0 0 CLKB
Другие Зарезервировано _
• CALG: выравнивание канала.
О = период выровнен по левой границе.
1 = период выровнен по центру.
• CPOL: полярность канала
О = выходная последовательность начинается с низкого уровня.
1 = выходная последовательность начинается с высокого уровня.
* CPD: период обновления канала.
О = запись в CUPDx модифицирует рабочий цикл в начале следующего
периода.
1 = запись в CUPDx модифицирует период в начале следующего пе-
риода.
28.3.5. Регистр рабочего цикла канала PWM CDTYx
Битовая структура регистра показана в табл. 28.9.
Табл. 28.9. Битовая структура регистра рабочего цикла канала PWM
CDTYx
31 30 29 28 27 26 25 24
CDTY
23 22 21 20 19 18 17 16
CDTY
15 14 13 12 11 10 9 8
CDTY
7 6 5 4 3 2 1 0
CDTY
Замечание. Только первые 20 разрядов (размер внутреннего счетчика
канала) в этом регистре являются значащими.
* CDTY: рабочий цикл канала.
Определяет рабочий цикл (относительная длительность импульса) им-
пульсной последовательности. Это значение должно быть задано между 0
и значением поля CPRD (CPRDx).
28.3.6. Регистр периода канала PWM CPRDx
Битовая структура регистра показана в табл. 28.10.
Табл. 28.10. Битовая структура регистра периода канала PWM CPRDx
31 30 29 28 27 26 25 24
CPRD
23 22 21 20 19 18 17 16
CPRD
Табл. 28.10. (окончание)
15 14 13 12 11 10 9 8
CPRD —
7 6 5 4 3 2 1 0 '
CPRD
Замечание. Только первые 20 разрядов (размер внутреннего счетчика
канала) в этом регистре являются значащими.
* CPRD: период канала.
Если импульсная последовательность выровнена по левой границе, то
период может быть рассчитан следующим образом:
- если используется задающая частота (МСК), поделенная на значение
предделителя X (X может быть равно 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 или
1024), то период вычисляется по формуле:
Period = (X х CPRD) / МСК;
- если используется задающая частота, поделенная на одно из значений
DIVA или DIVB, то период вычисляется по формуле:
Period = (CPRD х DIVA) / МСК
или
Period = (CPRD х DIVB) / МСК.
Если импульсная последовательность выровнена по центру, то период
может быть рассчитан следующим образом:
- если используется задающая частота (МСК), поделенная на значение
предделителя X (X может быть равно 1, 2, 4, 8, 16, 32, 64, 128," 256, 512 или
1024), то период вычисляется по формуле:
Period = (2 х X х CPRD) / МСК;
- если используется задающая частота, поделенная на одно из значений
DIVA или DIVB, то период вычисляется по формуле:
Period = (2 х CPRD х DIVA) / МСК
или
Period = (2 х CPRD х DIVB) / МСК.
28.3.7. Регистр счетчика канала PWM CCNTx
Битовая структура регистра показана в табл. 28.11.
Табл. 28.11. Битовая структура регистра счетчика канала PWM CCNTx
31 30 29 28 27 26 25 24
CNT
23 22 21 20 19 18 17 16
CNT
15 14 13 12 11 10 9 8
CNT
6 5 4 3 2 1
CNT
• CNT: регистр счетчика канала.
Значение внутреннего счетчика. Этот регистр обнуляется, когда:
- канал разрешается (запись в битовое поле CHIDx в регистре ENA);
- счетчик достигает значения CPRD, заданного в регистре CPRDx, если
импульсная последовательность выровнена по левой границе.
28.3.8. Регистр обновления канала PWM CUPDx
Битовая структура регистра показана в табл. 28.12.
Табл. 28.12. Битовая структура регистра обновления канала PWM CUPDx
31 30 29 28 27 26 25 24
CUPD
23 22 21 20 19 18 17 16
CUPD
15 14 13 12 11 10 9 8
CUPD
7 6 5 4 3 2 1 0
CUPD
Этот регистр выполняет роль дублирующего буфера для периода или
рабочего цикла PWM. Его использование предотвращает непредсказуемые
состояния сигнала на выходе канала при изменении периода или рабочего
цикла (см. табл. 28.13).
Замечание. Только первые 20 разрядов (размер внутреннего счетчика
канала) в этом регистре являются значащими.
Табл. 28.13. Использование регистра обновления канала PWM CUPDx
Поле CPD (регистр CMRx) Использование регистра CUPDx
0 Рабочий цикл (поле CDTY в регистре CDTYx) модифициру- ется значением поля CUPD в начале следующего периода
1 Период (поле CPRD в регистре CPRDx) модифицируется значением поля CUPD в начале следующего периода
ГЛАВА 29
АНАЛОГО-ЦИФРОВОЙ
ПРЕОБРАЗОВАТЕЛЬ (ADC)
29.1. Основные особенности и общее описание
Входящий в состав всех МК семейства AT32UC3 модуль аналого-цифрового
преобразователя (ADC) имеет следующие основные особенности:
• интегрированный мультиплексор, способный мультиплексировать
до восьми независимых аналоговых входов;
• индивидуальное включение и отключение каждого канала;
• аппаратный или программный запуск преобразования (триггер):
- ножка внешнего триггера,
- выходы таймера/счетчика, используемые в качестве триггера
(триггер, соответствующий ТЮА);
• поддержка PDCA;
• возможность конфигурирования синхронизации АЦП;
• «спящий» режим и встроенная процедура упорядочения преобра-
зований:
- автоматическое «пробуждение» от триггера и возврат назад в «спя-
щий» режим после завершения преобразований во всех включен-
ных каналах.
Архитектура встроенного блока аналого-цифрового преобразователя
базируется на регистре последовательного приближения (SAR). Блок ADC
также включает в себя аналоговый мультиплексор «8 в 1», позволяющий
подключать к входу АЦП до восьми аналоговых линий. Входное аналоговое
напряжение может лежать в диапазоне от О В до напряжения ADVREF.
АЦП поддерживает режим с разрешающей способностью 10 или 8 раз-
рядов, а результат преобразования возвращается в регистре, общем для всех
каналов или же в регистре, специально выделенном для каждого канала.
Начало преобразования может инициироваться следующими источника-
ми: программный триггер, внешний триггер, срабатывающий по положи-
тельному перепаду на выводе ADTRG, внутренние триггеры от выводов
таймера/счетчика (таймеров/счетчиков). Источник запуска может быть за-
дан программно.
АЦП также имеет «спящий» режим (Sleep Mode), встроенную про-
цедуру упорядоченья преобразований, а также возможность внутреннего
подключения к каналу PDCA для реализации прямого доступа к памя-
ти. Перечисленные узлы и функции позволяют уменьшить участие ЦПУ
в преобразованиях и потребляемую мощность. Пользователь может также
VDDANA
ADVREF
Аналоговые
входы, мульти-
плексирован-
ные с линиями
ввода/вывода
Каналы
Таймеров/
счетчиков
ADTRG
GND
Рис. 29.1. Блок-схема АЦП
конфигурировать параметры синхронизации АЦП, такие как время запу-
ска и время выборки-удержания.
Блок-схема аналого-цифрового преобразователя приведена на рис. 29.1.
Описание сигналов, связанных с блоком АЦП, приведено в табл. 29.1.
Табл. 29.1. Описание выводов аналого-цифрового преобразователя
Имя вывода Описание __
VDDIN Аналоговый источник питания
ADVREF Опорное напряжение АЦП
AD0-AD7 Аналоговые каналы входных сигналов
ADTRG Внешний триггер (запуск) _
АЦП автоматически синхронизируется после первого преобразования
в нормальном режиме. В «спящем» режиме синхронизация АЦП автомати-
чески останавливается после каждого преобразования. Менеджер питания
не может оказывать какого-либо влияния на АЦП.
Линия прерывания от АЦП связана с одном из внутренних источни-
ков контроллера прерываний. Использование в приложении прерывания
от АЦП требует, чтобы контроллер прерываний был предварительно соот-
ветствующим образом сконфигурирован.
Аналоговые входы могут быть мультиплексированы с линиями GPIO.
В этом случае включение АЦП автоматически сделает эти выводы входа-
ми, как только соответствующий канал будет разрешен путем записи в ре-
гистр ADC_CHER. По умолчанию после сброса соответствующая каждому
аналоговому входу линия GPIO сконфигурирована как вход с внутренним
подтянутым к «плюсу» питания резистором, а соответствующий вход АЦП
соединен внутри МК с GND.
Вывод ADTRG может обслуживать другие периферийные функции, что
задается с помощью контроллера GPIO. В случае использования вывода
ADTRG в блоке АЦП контроллер GPIO должен задать для вывода ADTRG
периферийную функцию АЦП.
В качестве триггеров АЦП могут использоваться штатные таймеры/
счетчики МК.
29.2. Функциональное описание
29.2.1. Аналого-цифровое преобразование
АЦП использует для осуществления преобразований собственный синхро-
сигнал. Преобразование одного входного аналогового значения в 10-раз-
рядное цифровое значение данных требует количества тактовых циклов
для выборки-удержания, заданного в битовом поле SHTIM (см. ниже)
и дополнительно 10 тактовых циклов. Значение частоты синхронизации
АЦП выбирается в битовом поле PRESCAL регистра режима АЦП (ADC_
MR). Частота синхронизации АЦП может быть выбрана в диапазоне между
МСК/2, если значение PRESCAL равно 0, и МСК/128, если значение PR-
ESCAL равно 63 (0x3F). Поле PRESCAL должно быть сконфигурировано
таким образом, чтобы обеспечить значение частоты синхронизации АЦП,
лежащее в допустимых (для АЦП) пределах при заданной частоте МСК.
29.2.2. Опорное напряжение АЦП
Преобразование осуществляется в пределах полной шкалы АЦП, лежащей
между 0 В и напряжением на выводе ADVREF. Аналоговые входные сигна-
лы, лежащие в указанном диапазоне, преобразуются в цифровые значения
линейно.
29.2.3. Разрешающая способность преобразования
АЦП обеспечивает разрешающую способность 10 или 8 разрядов. Выбор
8-разрядного разрешения выполняется путем установки бита LOWRES
в регистре режима АЦП (ADC MR). По умолчанию после сброса задано
10-разрядное разрешение и битовое поле DATA в регистрах данных АЦП
используется полностью. При установленном бите LOWRES результаты
преобразования могут читаться в младших восьми значащих битах реги-
стров данных. При этом два старших бита поля DATA регистра ADC_CDRx
и поля LDATA регистра ADC LCDR читаются как 0.
Когда к АЦП подключен канал PDCA, при 10-разрядном разрешении
АЦП автоматически задаются запросы передачи 16-разрядных данных.
Установка бита LOWRES в этом случае автоматически задает запросы пе-
редачи 8-разрядных данных. Размеры буфера адресата в этом случае также
оптимизируются.
29.2.4. Результаты преобразования
По завершении преобразования результирующее 10-разрядное цифровое
значение автоматически сохраняется в регистре данных канала (ADC
CDRx), соответствующего текущему каналу, а также в регистре данных
последнего преобразования (ADC_LCDR).
По завершении преобразования устанавливается бит канала ЕОСх
в регистре состояния АЦП (ADC_SR), а также устанавливается бит DRDY.
В случае подключения к АЦП канала PDCA установка бита DRDY вызы-
вает положительный перепад сигнала триггера запроса передачи данных.
Во всех указанных случаях установка битов ЕОСх и DRDY может запу-
стить прерывание.
Чтение регистра ADC_CDRx автоматически сбрасывает установленный
бит ЕОСх. Чтение регистра ADC_LCDR сбрасывает бит DRDY и бит ЕОСх,
соответствующий каналу, где производилось последнее преобразование.
Поведение флагов ЕОСх и DRDY иллюстрируют временные диаграм-
мы, приведенные на рис. 29.2.
Если регистр ADC_CDRx не был прочитан до того, как произошло
получение результата следующего преобразования, то автоматически уста-
навливается флаг ошибки переполнения (OVREx) в регистре состояния
(ADC_SR). Аналогично, если регистр ADC_LCDR не был прочитан до
того, как произошло получение результата следующего преобразования
(DRDY остается в высоком уровне), то автоматически устанавливается флаг
генеральной ошибки переполнения (GOVRE) в регистре ADC_SR. Флаги
OVREx и GOVRE автоматически сбрасываются при чтении ADC_SR.
Запись ADC_CR с START =1 t Чтение XdC.CDRx 3апи“^_СН Чтение A*>C-LCOR i с t' i
।
СНх 1 (ADC.CHSR) J ЕОСх (ADC_SR) —
DRDY (ADC.SR) 1
* _ *i Время преобразования । Время преобразования
1 11
Рис. 29.2. Поведение флагов ЕОСх и DRDY при осуществлении преобразо-
ваний
ADTRG
CHO
(ADC-CHSR)
CH1
(ADC_CHSR)
ADC-LCDR
ADC-CDRO
ADC_CDR1
EOCO
(ADC.SR)
EOC1
(ADC.SR)
GOVRE
(ADC.SR)
DRDY
(ADC.SR)
OVREO
(ADC.SR)
Рис. 29.3. Поведение флагов OVREx и GOVRE при осуществлении преоб-
разований
Поведение флагов OVREx и GOVRE иллюстрируют временные диа-
граммы, приведенные на рис. 29.3.
Замечание. Если канал АЦП во время преобразования, происходящего
в нем, запрещается или если он во время преобразования запрещается и за-
тем вновь разрешается, то значения связанных с эти каналом данных и фла-
гов ЕОСх и OVREx в регистре ADC_SR становятся непредсказуемыми.
29.2.5. Триггеры запуска преобразования
Преобразование в активных аналоговых каналах запускается с помощью
программного или аппаратного триггера. Программный триггер запускает
преобразование путем записи 1 в бит START регистра команд (ADC_CR).
Аппаратный триггер может быть задан как один из выводов ТЮА канала
таймеров/счетчиков или как внешний триггерный вход АЦП (ADTRG).
Аппаратный триггер выбирается битовым полем TRGSEL в регистре ре-
жима (ADC_MR). Выбранный аппаратный триггер разрешается битом
TRGEN в регистре режима.
Если выбран аппаратный триггер, запуск преобразования произво-
дится по обнаружению положительного перепада выбранного триггерного
сигнала. Если выбран один из выводов ТЮА, то соответствующий канал
таймеров/счетчиков должен быть сконфигурирован для работы в режиме
формирования (см. раздел «Таймеры/счетчики (ТС)»).
Чтобы инициировать последовательность преобразований во всех ка-
налах, необходима только одна команда запуска. Аппаратная логика АЦц
автоматически выполняет преобразования в рабочих каналах, а затем
ожидает нового запроса на запуск. Регистры разрешения канала (ADC
CHER) и запрещения канала (ADC_CHDR) позволяют независимо раз-
решать и запрещать работу каждого из аналоговых каналов.
Если АЦП используется с PDCA, то передача данных преобразования
из разрешенных каналов в буфера результирующих данных должна соот-
ветствующим образом обрабатываться программой.
Замечание. Активизация аппаратных триггеров не исключает возмож-
ности организации программных триггеров. Таким образом, если выбран
аппаратный триггер, то начало преобразования может быть инициировано
как аппаратным, так и программным триггером.
29.2.7. «Спящий» режим и упорядочение преобразований
«Спящий» режим (Sleep Mode) АЦП обеспечивает экономию энергопотре-
бления, автоматически дезактивируя модуль АЦП, когда он не использу-
ется для преобразований. «Спящий» режим выбирается путем установки
бита SLEEP в регистре режима ADC_MR.
«Спящий» режим автоматически управляется процедурой упорядочения
преобразований, которая может автоматически производить операцию преоб-
разования во всех каналах при самом низком значении потребляемой мощно-
сти. Когда производится запрос запуска преобразований, АЦП автоматически
активизируется. Так как аналоговая составляющая АЦП требует некоторого
времени запуска, то логика АЦП ожидает это время, а затем начинает пре-
образование в разрешенном канале. Когда все преобразования завершаются,
АЦП дезактивируется до следующего сигнала запуска триггера. Сигналы за-
пуска триггера, поступившие во время преобразования, игнорируются.
Процедура упорядочения преобразования позволяет производить автома-
тическую обработку с минимальным вмешательством ЦПУ и оптимизирует
потребляемую АЦП мощность. Последовательности преобразований могут вы-
полняться периодически с использованием выхода таймера/счетчика. При этом
периодическое получение нескольких выборок может быть обработано автома-
тически без какого-либо вмешательства ЦПУ благодаря наличию PDCA.
Замечание. Выводы опорного напряжения остаются подключенными
к модулю АЦП как в нормальном, так и в «спящем» режимах.
29.2.8. Временные параметры АЦП
В каждом случае использования в приложении АЦП имеет свое соб-
ственное минимальное время запуска, которое задается в битовом поле
STARTUP регистра режима ADC_MR.
Кроме того, для АЦП необходимо задать минимальное время выборки
и удержания, чтобы гарантировать наилучший результат преобразования с уче-
тоМ значения времени, проходящего между сменой каналов. Время выборки
Л удержания задается в битовом поле SHTIM регистра режима ADC_MR.
Замечание. В составе модуля ADC отсутствует какой-либо входной бу-
ферный усилитель, чтобы изолировать источник входного аналогового
сигнала от влияния АЦП. Это обстоятельство должно учитываться поль-
зователем при конфигурировании битового поля SHTIM.
29.3. Пользовательский интерфейс
Пользовательский интерфейс модуля ADC представлен специальными ре-
гистрами, перечисленными в табл. 29.2.
Табл. 29.2. Отображение регистров ADC
Сме- щение Регистр Имя Доступ Значение после сброса
0x00 Регистр команд ADC ADCCR Только запись -
0x04 Регистр режима ADC ADC.MR Чтение/запись 0x00000000
0x08 Зарезервировано - - -
ОхОС Зарезервировано - - -
0x10 Регистр разрешения канала ADC ADC_CHER Только запись -
0x14 Регистр запрещения канала ADC ADC_CHDR Только запись -
0x18 Регистр состояния канала ADC ADC_CHSR Только чтение 0x00000000
0х1С Регистр состояния ADC ADC_SR Только чтение ОхОООСОООО
0x20 Регистр последних данных преобразова- ния ADC ADC_LCDR Только чтение 0x00000000
0x24 Регистр разрешения прерываний от ADC ADCJER Только запись -
0x28 Регистр запрещения прерываний от ADC ADCJDR Только запись -
0х2С Регистр маски прерываний от ADC ADCJMR Только чтение 0x00000000
0x30 Регистр данных канала 0 ADC ADC_CDR0 Только чтение 0x00000000
0x34 Регистр данных канала 1 ADC ADCCDR1 Только чтение 0x00000000
0x38 Регистр данных канала 2 ADC ADC_CDR2 Только чтение 0x00000000
ОхЗС Регистр данных канала 3 ADC ADC_CDR3 Только чтение 0x00000000
Табл. 29.2.
(окончание)
Сме- щение Регистр Имя Доступ Значение после сброса
0x40 Регистр данных канала 4 ADC ADC_CDR4 Только чтение 0x00000000^
0x44 Регистр данных канала 5 ADC ADC_CDR5 Только чтение 0x00000000
0x48 Регистр данных канала 6 ADC ADC_CDR6 Только чтение 0x00000000
0х4С Регистр данных канала 7 ADC ADC_CDR7 Только чтение 0x00000000
0x50— 0xF8 Зарезервировано - - -
OxFC Регистр версии ADC ADC VERSION Только чтение
29.3.1. Регистр команд ADC ADC_CR
Битовая структура регистра показана в табл. 29.3.
Табл. 29.3. Битовая структура регистра команд ADC ADC_CR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0 .
- - - - - - START SWRST_
* SWRST: программный сброс.
О = никакого эффекта.
1 = сбрасывает модуль ADC, имитируя аппаратный сброс.
* START: старт преобразования.
О = никакого эффекта.
1 = начать АЦП.
29.3.2. Регистр режима ADC ADC_MR
Битовая структура регистра показана в табл. 29.4.
Табл. 29.4. Битовая структура регистра режима ADC ADC_MR
31 30 29 28 27 26 25 24
- - - SHTIM
23 22 21 20 19 18 17 16
- - - STARTUP
15 14 13 12 11 10 9 8
- - PRESCAL
7 6 5 4 3 2 1 0
- - SLEEP LOWRES TRGSEL TRGEN
* TRGEN: разрешение триггера.
Возможные значения этого поля приведены в табл. 29.5.
Табл. 29.5. Возможные значения битового поля TRGEN
TRGEN Выбранный триггер
Р Аппаратные триггеры заблокированы. Старт преобразования
возможен только программным способом
. Аппаратный триггер, выбранный битовым полем
TRGSEL, разрешен
* TRGSEL: выбор триггера.
Возможные значения этого поля приведены в табл. 29.6.
Табл. 29.6. Возможные значения битового поля TRGSEL
TRGSEL Выбранный триггер
0 0 0 Выход ТЮА канала 0 таймеров/счетчиков
0 0 1 Выход ТЮВ канала 0 таймеров/счетчиков
0 1 0 Выход ТЮА канала 1 таймеров/счетчиков
0 1 1 Выход ТЮВ канала 1 таймеров/счетчиков
1 0 0 Выход ТЮА канала 2 таймеров/счетчиков
1 0 1 Выход ТЮВ канала 2 таймеров/счетчиков
1 1 0 Внешний триггер
1 1 1 Зарезервировано
* LOWRES: разрешающая способность АЦП.
Возможные значения этого поля приведены в табл. 29.7.
Табл. 29.7. Возможные значения битового поля LOWRES
LOWRES Выбранное разрешение
0 10-разрядное разрешение
1 8-разрядное разрешение
* SLEEP: включение «спящего» режима.
О = нормальный режим АЦП.
1 = «спящий» режим АЦП.
* PRESCAL: выбор коэффициента предделителя (задание частоты син-
хронизации АЦП ADCClock).
ADCClock = МСК / ((PRESCAL+1) х 2).
• STARTUP: время запуска (Startup Time).
Startup Time = (STARTUP+1) x 8 / ADCClock.
* SHTIM: время выборки и удержания (Sample & Hold Time).
Sample & Hold Time = (SHTIM+1) / ADCClock.
29.3.3. Регистры разрешения/запрещения/состояния канала
ADC ADC_CHER/ ADC_CHDR/ADC_CHSR
Битовая структура каждого из этих регистров показана в табл. 29.8.
Табл. 29.8. Битовая структура каждого из регистров разрешения/запреще-
ния/состояния канала ADC ADC_CHER/ADC_CHDR/ADC_
CHSR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16 —
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
СН7 СН6 СН5 СН4 снз СН2 СН1 сно _
• СНх: канал х.
Для регистра ADC_CHER:
О = никакого эффекта.
1 = разрешить соответствующий канал.
Для регистра ADC_CHDR:
О = никакого эффекта.
1 = запретить соответствующий канал.
Замечание. Если канал АЦП во время преобразования, происходящего
в нем, запрещается или если он во время преобразования запрещается и за-
тем вновь разрешается, то значения связанных с эти каналом данных и фла-
гов ЕОСх и OVREx в регистре ADC_SR являются непредсказуемыми.
Для регистра ADC_CHSR:
О = канал запрещен.
1 = канал разрешен.
29.3.4. Регистр состояния ADC ADC_SR
Битовая структура регистра показана в табл. 29.9.
Табл. 29.9. Битовая структура регистра состояния ADC ADC_SR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - RXBUFF ENDRX GOVRE DRDY
15 14 13 12 11 10 9 8
OVRE7 OVRE6 OVRE5 OVRE4 OVRE3 OVRE2 OVRE1 OVREO
7 6 5 4 3 2 1 0
EOC7 EOC6 EOC5 EOC4 EOC3 EOC2 EOC1 EOCO
* ЕОСх: окончание преобразования х.
О = соответствующий аналоговый канал заблокирован или преобразо-
вание не закончено.
1 = соответствующий аналоговый канал разрешен и преобразование
закончено.
* OVREx: ошибка переполнения х.
О = ни одной ошибки переполнения не было в соответствующем канале
после последнего чтения ADC_SR.
1 = была ошибка переполнения в соответствующем канале после по-
следнего чтения ADC_SR.
* DRDY: готовность данных.
О = никакие данные не были получены как результат преобразования
После последнего чтения ADC_LCDR.
1 = не менее одного значения данных было получено как результат пре-
образования и это значение доступно в ADC_LCDR.
* GOVRE: генеральная ошибка переполнения.
О = ни одна генеральная ошибка переполнения не произошла после по-
следнего чтения ADC_SR.
1 = не менее одной генеральной ошибки переполнения произошло по-
сле последнего чтения ADC_SR.
• ENDRX: конец буфера RX.
О = счетчик регистров приема не достиг значения 0 после последней
записи в ADC_RCR или в ADC_RNCR.
1 = счетчик регистров приема достиг значения 0 после последней за-
писи в ADC_RCR или ADC_RNCR.
• RXBUFF: буфер RX полон.
О = регистр ADC RCR или ADC_RNCR имеет значение, отличное от 0.
1 = и регистр ADC_RCR, и регистр ADC_RNCR имеет значение, рав-
ное 0.
Замечание, регистр счетчика приема ADC_RCR и регистр счетчика сле-
дующего приема ADC_RNCR не входят в состав пользовательского интер-
фейса ADC, а относятся к PDCA.
29.3.5. Регистр данных последнего преобразования
ADC ADC.LCDR
Битовая структура регистра показана в табл. 29.10.
Табл. 29.10. Битовая структура регистра данных последнего преобразования
ADC ADC_LCDR
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - LDATA __
7 6 5 4 3 2 1 0
LDATA 1
♦ LDATA: данные последнего преобразования.
Цифровые данные (результат АЦП) возвращаются в этом регистре
в конце преобразования и остаются в нем до окончания следующего пре-
образования.
29.3.6. Регистры разрешения/запрещения/маски прерываний
от ADC ADCJER/ADCJDR/ADCJMR
Битовая структура каждого из этих регистров показана в табл. 29.11.
Табл. 29.11. Битовая структура каждого из регистров разрешения/запреще-
ния/маски прерываний от ADC ADC_IER/ADC_IDR/ADC
IMR
31 30 29 28 27 26 25 24
- - - - - - -
~2~~23 22 21 20 19 18 17 16
- - - RXBUFF ENDRX GOVRE DRDY
15 14 13 12 11 10 9 8
QVRE7 OVRE6 OVRE5 OVRE4 OVRE3 OVRE2 OVRE1 OVREO
7 6 5 4 3 2 1 0
EOC7 EOC6 EOC5 EOC4 EOC3 EOC2 EOC1 EOCO
Для регистра ADC_IER:
* ЕОСх: разрешение прерывания по окончании преобразования х.
О = никакого эффекта.
1 = разрешить соответствующее прерывание.
* OVREx: разрешение прерывания при ошибке переполнения х.
О = никакого эффекта.
1 = разрешить соответствующее прерывание.
* DRDY: разрешение прерывания по готовности данных.
О = никакого эффекта.
1 = разрешить соответствующее прерывание.
* GOVRE: разрешение прерывания при генеральной ошибке переполнения.
О = никакого эффекта.
1 = разрешить соответствующее прерывание.
* ENDRX: разрешение прерывания по окончании приемного буфера.
О = никакого эффекта.
1 = разрешить соответствующее прерывание.
* RXBUFF: разрешение прерывания при полном приемном буфере.
О = никакого эффекта.
1 = разрешить соответствующее прерывание.
Для регистра ADC_IDR:
* ЕОСх: запрещение прерывания по окончании преобразования х.
О = никакого эффекта.
1 = запретить соответствующее прерывание.
* OVREx: запрещение прерывания при ошибке переполнения х.
О = никакого эффекта.
1 = запретить соответствующее прерывание.
* DRDY: запрещение прерывания по готовности данных.
О = никакого эффекта.
1 — запретить соответствующее прерывание.
* GOVRE: запрещение прерывания при генеральной ошибке перепол-
нения.
О = никакого эффекта.
1 = запретить соответствующее прерывание.
• ENDRX: запрещение прерывания по окончании приемного буфера.
О = никакого эффекта.
1 = запретить соответствующее прерывание.
• RXBUFF: запрещение прерывания при полном приемном буфере.
О = никакого эффекта.
1 — запретить соответствующее прерывание.
Для регистра ADC_IMR:
* ЕОСх: маска прерывания по окончании преобразования х.
О = соответствующее прерывание запрещено.
1 = соответствующее прерывание разрешено.
* OVREx: маска прерывания при ошибке переполнения х.
О = соответствующее прерывание запрещено.
1 = соответствующее прерывание разрешено.
* DRDY: маска прерывания по готовности данных.
О = соответствующее прерывание запрещено.
1 = соответствующее прерывание разрешено.
* GOVRE: маска прерывания при генеральной ошибке переполнения.
О = соответствующее прерывание запрещено.
1 = соответствующее прерывание разрешено.
* ENDRX: маска прерывания по окончании приемного буфера.
О = соответствующее прерывание запрещено.
1 = соответствующее прерывание разрешено.
* RXBUFF: маска прерывания при полном приемном буфере.
О = соответствующее прерывание запрещено.
1 = соответствующее прерывание разрешено.
29.3.7. Регистр данных канала х ADC ADC_CDRx
Битовая структура регистра показана в табл. 29.12.
Табл. 29.12. Битовая структура регистра данных канала х ADC ADC_CDRx
31 30 29 28 27 26 25 24 _
- - - - - - - -
23 22 21 20 19 18 17 16 ...
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - DATA
Табл. 29.12.
(окончание)
7|6|5|4|3|2|1|О
DATA
• DATA: данные преобразования.
Цифровые данные (результат) преобразования автоматически помеща-
ются в этот регистр в конце преобразования и остаются в нем до оконча-
ния следующего преобразования. Помещение данных в регистр данных
канала ADC_CDRx производится только в том случае, если соответствую-
щий аналоговый канал разрешен.
ГЛАВА 30
АУДИО ЦАП БИТОВОГО
ПОТОКА (ABDAC)
30.1. Основные особенности
Входящий в состав только МК подсемейства AT32UC3A модуль аудио ЦАП
битового потока (ABDAC) имеет следующие основные особенности.
• Цифровой стерео ЦАП.
• Архитектура ЦАП со «сверхвыборками»:
- задаваемый коэффициент «сверхвыборок» — до 128х,
- фильтр выравнивания FIR,
- цифровой фильтр интерполяции Comb4,
- сигма-дельта ЦАП 3-го порядка.
• Цифровые выходы битового потока.
• Параллельный интерфейс.
• Связь с контроллером DMA для фоновой передачи данных без вме-
шательства ЦПУ.
Модуль аудио ЦАП битового потока по определению предназначен для
цифроаналоговых преобразований. ABDAC преобразует цифровое 16-раз-
рядное значение выборки в цифровой битовый поток со средневзвешен-
ным значением, пропорциональным значению выборки. При этом обе-
спечивается поддержка двух каналов, что делает модуль ABDAC особенно
подходящим для приложений, использующих стереозвук. Каждый канал
имеет комплементарную пару цифровых выходов (DACn и DACn_N), ко-
торая может быть подключена к внешнему усилителю с высоким входным
импедансом.
Аудио ЦАП битового потока образован сигма-дельта ЦАП 3-го порядка
с коэффициентом «сверхвыборки», равным 128. Перед поступлением на
сигма-дельта модулятор ЦАП выборки пропускаются через фильтр интер-
поляции 4-го порядка с Sinc-характеристикой (Comb4). На входе фильтра
интерполяции включен фильтр выравнивания FIR. Полный частотный от-
клик системы фильтров, состоящей из фильтра выравнивания FIR и филь-
тра интерполяции, показан на рис. 30.1.
Для достижения максимального отношения «сигнал/шум» сигналы
с цифровых выходов аудио ЦАП битового потока должны быть подвер^
гнуты низкочастотной фильтрации, чтобы подавить высокочастотный
шум, порожденный процессом модуляции. Комплементарная пара выхо-
дов DACn и DACn_N может быть непосредственно подключена к ВХОДУ
аудиоусилителя класса D или через дополнительный фильтр низких частот
EQ-FIR+COMB4
Рис. 30.1. Полный частотный отклик системы фильтров, состоящей из
фильтра выравнивания FIR и фильтра интерполяции Comb4
к входу аудиоусилителя с высоким входным импедансом. При этом можно
использовать простой фильтр низких частот 1-го или более высокого по-
рядка с частотой среза не более 50 кГц.
Блок-схема аудио ЦАП битового потока показана на рис. 30.2.
Описание сигналов, относящихся к модулю аудио ЦАП битового по-
тока, приведено в табл. 30.1.
Выводы МК, используемые в качестве выходов модуля аудио ЦАП бито-
вого потока, могут быть мультиплексированы с линиями контроллера GPIO.
Перед использованием модуля аудио ЦАП битового потока контроллер
GPIO должен быть предварительно сконфигурирован так, чтобы для этих
выводов была задана их периферийная функция, связанная с ABDAC.
Синхросигнал шины РВ, поступающий в модуль аудио ЦАП битового по-
тока, генерируется менеджером питания. Перед использованием модуля AB-
DAC программа должна разрешить его синхросигнал в менеджере питания.
Рис. 30.2. Блок-схема аудио ЦАП битового потока
Табл. 30.1. Описание сигналов модуля аудио ЦАП битового потока
Имя вывода Описание вывода Тип вывода
DATA0 Выход аудио ЦАП битового потока канала 0 Выход
DATA1 Выход аудио ЦАП битового потока канала 1 Выход
DATAN0 Инвертированный выход аудио ЦАП битового потока канала 0 Выход
DATAN1 Инвертированный выход аудио ЦАП битового потока канала 1 Выход
Модуль аудио ЦАП битового потока нуждается в отдельном синхросиг-
нале для осуществления операции ЦАП. Этот синхросигнал должен быть
задан в регистре управления универсальными синхросигналами менедже-
ра питания. Частота этого синхросигнала должна быть в 256 раз больше
требуемой частоты выборок (fs). Для fs = 48 кГц синхросигнал должен
иметь частоту 12,288 МГц.
Модуль аудио ЦАП битового потока имеет линию прерывания, под-
ключенную к контроллеру прерываний. Чтобы обрабатывать прерывания
от ABDAC, контроллер прерываний должен быть предварительно скон-
фигурирован перед конфигурированием ABDAC. Прерывания от ABDAC
можно разрешить/запретить путем записи соответственно в регистр раз-
решения/запрещения прерываний от ABDAC. Каждое задержанное и не-
замаскированное прерывание от ABDAC будет переводить его линию пре-
рывания в активный уровень. Подпрограмма обработки прерываний от
ABDAC может определить источник прерывания путем чтения регистра
состояния прерываний от ABDAC.
Модуль аудио ЦАП битового потока связан с контроллером DMA. Кон-
троллер DMA может быть сконфигурирован, чтобы автоматически пере-
мещать выборки в регистр выборок данных ABDAC (SDR), когда модуль
ABDAC готов к приему новых выборок. Это позволяет ABDAC функцио-
нировать без какого-либо вмешательства ЦПУ, например, без программно-
го опроса регистра состояния прерывания.
30.2. Функциональное описание
Чтобы использовать модуль аудио ЦАП битового потока в приложении,
особое внимание необходимо уделять конфигурации синхросигнала и ли-
ний ввода-вывода, чтобы гарантировать корректные операции ABDAC.
Работа ABDAC разрешается путем записи в бит ENABLE регистра
управления ABDAC (CR). После этого два 16-разрядных значения вы-
борки для каналов 0 и 1 могут быть записаны соответственно в млад-
шее и старшее полуслова регистра данных выборки (SDR). Входные
данные ABDAC должны быть представлены в двоичном дополнитель-
ном формате.
Бит TX READY в регистре состояния прерываний (ISR) будет авто-
матически устанавливаться всякий раз, когда ЦАП готов к приему новой
выборки. Новая выборка должна быть записана в SDR до истечения 256
циклов ЦАП после последней записи. В противном случае, произойдет не-
догрузка, что будет индицировано флагами состояния UNDERRUN в ре-
гистре ISR. Регистр ISR сбрасывается при его чтении или при записи 1
в соответствующие биты регистра сброса прерываний (ICR).
Для операций, базирующихся на прерываниях, нужные прерывания
можно разрешить путем записи 1 в соответствующие биты регистра раз-
решения прерываний (IER). Прерывания могут быть запрещены в ре-
гистре запрещения прерываний (IDR), а активные прерывания инди-
цируются в регистре маски прерываний (IMR), доступном только для
чтения.
30.2.1. Фильтры выравнивания и интерполяции
Фильтр выравнивания представляет собой простой фильтр типа FIR. Цель
использования в модуле ABDAC этого фильтра состоит в том, чтобы ском-
пенсировать полосу прозрачности sinc-фильтра интерполяции. Фильтр вы-
равнивания изменяет результирующую частотную характеристику системы
фильтров к виду, показанному на рис. 30.1.
Фильтр интерполяции интерполирует в диапазоне от fs до 128xfs.
Этот фильтр является фильтром 4-го порядка и имеет встроенный каскад
интегратора-гребенчатого фильтра.
30.2.2. Сигма-дельта модулятор
Сигма-дельта модулятор — это модулятор 3-го порядка, состоящий из
трех дифференциаторов (дельта-блоков), трех интеграторов (сигма-блоков)
и одноразрядного квантизатора. Цель использования интеграторов состоит
в уменьшении ширины частотной полосы шума с тем, чтобы можно было
далее отфильтровать этот шум.
30.3. Пользовательский интерфейс
Пользовательский интерфейс ABDAC представлен специальными реги-
страми МК, перечисленными в табл. 30.2.
Табл. 30.2. Отображение регистров модуля аудио ЦАП битового потока
(ABDAC)
Сме- щение Регистр Имя Доступ Значение после сброса
0x0 Регистр данных выборки ABDAC SDR Чтение/ запись 0x0
0x4 Зарезервировано - - -
0x8 Регистр управления ABDAC CR Чтение/ запись 0x0
Табл. 30.2. (окончание)
Сме- щение Регистр Имя Доступ Значение после сброса
ОхС Регистр маски прерываний от ABDAC IMR Только чтение 0x0
0x10 Регистр разрешения прерываний от ABDAC IER Только запись -
0x14 Регистр запрещения прерываний от ABDAC IDR Только запись -
0x18 Регистр сброса прерываний от ABDAC ICR Только запись -
0х1С Регистр состояния прерываний от ABDAC ISR Только чтение 0x0
30.3.1. Регистр данных выборки ABDAC SDR
Битовая структура регистра показана в табл. 30.3.
Табл. 30.3. Битовая структура регистра данных выборки ABDAC SDR
31 30 29 28 27 26 25 24
CHANNELl
23 22 21 20 19 18 17 16
CHANNELl
14 13 12 11 10 9
CHANNELO
6 5 4 3 2 1
CHANNELO
* CHANNELO: данные выборки для канала 0.
16-разрядная выборка данных со знаком для канала 0. Когда бит SWAP
в регистре управления ABDAC (CR) установлен, запись в регистр данных
выборки (SDR) приведет к смене значений в битовых полях CHANNELO
и CHANNELl.
• CHANNELl: данные выборки для канала 1.
16-разрядная выборка данных со знаком для канала 1. Когда бит SWAP
в регистре управления ABDAC (CR) установлен, запись в регистр данных
выборки (SDR) приведет к смене значений в битовых полях CHANNELO
и CHANNELl.
30.3.2. Регистр управления ABDAC CR
Битовая структура регистра показана в табл. 30.4.
Табл. 30.4. Битовая структура регистра управления ABDAC CR
31 30 29 28 27 26 25 24
EN SWAP - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - - - -
* SWAP: изменение данных в каналах.
0: выборки CHANNEL0 и CHANNEL1 не будут изменяться при записи
в регистр данных выборки ABDAC (SDR).
1: выборки CHANNEL0 и CHANNEL1 будут изменяться при записи
в регистр данных выборки ABDAC (SDR).
* Е№разрешение модуля аудио ЦАП битового потока.
0: модуль аудио ЦАП битового потока отключен.
1: модуль аудио ЦАП битового потока включен.
30.3.3. Регистры маски/разрешения/запрещения/сброса/
состояния прерываний от ABDAC IMR/IER/IDR/ICR/
ISR
Битовая структура каждого из этих регистров показана в табл. 30.5.
Табл. 30.5. Битовая структура каждого из регистров маски/разрешения/за-
прещения/сброса/состояния прерываний от ABDAC IMR/IER/
IDR/ICR/ISR
31 30 29 28 27 26 25 24
- TX_READY UNDERRUN - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
Табл. 30.5.
(окончание)
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - - - -
Для регистра IMR:
* UNDERRUN: маска прерывания от недогрузки ABDAC.
0: прерывание от недогрузки ABDAC запрещено.
1: прерывание от недогрузки ABDAC разрешено.
* TXREADY: маска прерывания по готовности ТХ (передачи) ABDAC.
0: прерывание по готовности ТХ (передачи) ABDAC запрещено.
1: прерывание по готовности ТХ (передачи) ABDAC разрешено.
Для регистра IER:
* UNDERRUN: разрешение прерывания от недогрузки ABDAC.
0: никакого эффекта.
1: разрешить прерывание от недогрузки ABDAC.
* TX READY: разрешение прерывания по готовности ТХ (передачи) ABDAC.
0: никакого эффекта.
1: разрешить прерывание по готовности ТХ (передачи) ABDAC.
Для регистра IDR:
* UNDERRUN: запрещение прерывания от недогрузки ABDAC.
0: никакого эффекта.
1: запретить прерывание от недогрузки ABDAC.
* TX READY: запрещение прерывания по готовности ТХ (передачи) ABDAC.
0: никакого эффекта.
1: запретить прерывание по готовности ТХ (передачи) ABDAC.
Для регистра ICR:
* UNDERRUN: сброс прерывания от недогрузки ABDAC.
0: никакого эффекта.
1: сбросить прерывание от недогрузки ABDAC.
• TX_READY: сброс прерывания по готовности ТХ (передачи) ABDAC.
0: никакого эффекта.
1: сбросить прерывание по готовности ТХ (передачи) ABDAC.
Для регистра ISR:
• UNDERRUN: состояние прерывания от недогрузки ABDAC.
0: ни одного случая недогрузки ABDAC не произошло после последнего
чтения регистра ISR или после сброса.
1: не менее одного случая недогрузки ABDAC произошло после послед-
него чтения регистра ISR или после сброса.
TX_READY: состояние прерывания по готовности ТХ (передачи) ABDAC.
0: ни одного случая готовности ТХ (передачи) ABDAC не произошло
после последнего чтения регистра ISR.
1: не менее одного случая готовности ТХ (передачи) ABDAC произошло
после последнего чтения регистра ISR.
ГЛАВА 31
СИСТЕМА ОТЛАДКИ
НА КРИСТАЛЛЕ
31.1. Основные особенности
Входящая в состав всех МК семейства AT32UC3 система отладки на кри-
сталле (OCD) имеет следующие основные особенности:
• интерфейс отладки, соответствующий рекомендациям IEEE-ISTO
5001-2003 (Nexus 2.0) Class 2+;
• обращение ко всем функциям отладки на кристалле через порт
JTAG;
• поддержка трассировки программы, данных и задания контроль-
ных точек (точек трассировки);
• поддержка оригинального режима трассировки NanoTrace с досту-
пом через JTAG;
• наличие вспомогательного порта (AUX) для высокоскоростной пе-
редачи информации трассировки;
• поддержка шести аппаратных точек останова в программе и двух
точек останова в данных;
• поддержка неограниченного количества программных точек
останова;
• автоматическая проверка контрольной суммы (CRC) для заданных
областей памяти.
Отладка кода в МК AT32UC3 значительно облегчается благодаря на-
личию мощной системы отладки на кристалле (OCD). Пользователь может
обращаться к ней через внешний отладчик, который соединяется с МК че-
рез порт JTAG или через вспомогательный порт (AUX). Вспомогательный
порт, прежде всего, используется для функций трассировки, а для основ-
ной отладки достаточно использовать порт JTAG.
Система отладки основана на стандарте Nexus 2.0 Class 2+, который
включает:
• управление временем выполнения,
• точки останова в программе,
• точки останова в данных,
• трассировка программы,
• трассировка в режиме так называемого монопольного использования
кристалла,
' трассировка данных.
Рис. 31.1. Блок-схема системы отладки на кристалле (OCD)
Кроме возможностей отладки, предоставляемых стандартом Nexus, ар-
хитектура МК AT32UC3 дополнительно предоставляет пользователю не-
сколько полезных возможностей OCD:
• отладочный канал связи между ЦПУ и JTAG,
• мониторинг содержимого программного счетчика (PC) во время
выполнения кода,
• проверка контрольной суммы CRC,
• поддержка режима NanoTrace,
• поддержка программной проверки качества (SQA).
Система OCD управляется с помощью регистров OCD, к которым можно
обратиться через JTAG, когда загружена команда JTAG NEXUS_ACCESS.
ЦПУ может также обращаться к регистрам OCD непосредственно путем
использования команд mtdr/mfdr в любом привилегированном режиме.
Блок-схема системы отладки на кристалле показана на рис. 31.1.
31.2. Функциональное описание
31.2.1. Использование JTAG-отладчика
JTAG-отладчик подключается к МК AT32UC3 через стандартный 10-штырЬ'
ковый IDC-разъем. Блок-схема подключения к МК JTAG-отладчика пока-
зана на рис. 31.2.
Одной из фундаментальных особенностей отладки является способ-
ность отладочной системы временно приостановить работу ЦПУ, чтобы
затем можно было исследовать текущее содержимое регистров и состояние
системы. Эта особенность достигается с помощью точек
останова, которые могут быть следующих типов.
• Безусловные точки останова, которые устанав-
ливаются путем записи в регистры OCD через
JTAG. Они останавливают ЦПУ немедленно.
• Точки останова программы, которые останавли-
вают ЦПУ, когда управление в программе дости-
гает определенного адреса.
* Точки останова данных, которые останавлива-
ют ЦПУ, когда по определенному адресу памяти
производится программное чтение или запись.
• Программные точки останова, которые останав-
ливают ЦПУ, когда в программе выполняется
специальная команда останова.
Когда срабатывает точка останова, ЦПУ переходит
в режим отладки (OCD), и в регистре статуса устанавли-
вается бит D. Этот режим является привилегированным
с заданным адресом возврата и регистрами состояния
возврата. Все команды привилегированных режимов
при этом разрешаются.
Когда ЦПУ переходит в режим OCD, то команды
он выбирает из регистра команд отладки OCD. Каж-
дый раз, когда в этот регистр производится запись через
JTAG, команда выполняется ЦПУ, позволяя, таким об-
разом, производить непосредственное управление ЦПУ
Рис. 31.2. Блок-
схема подключения
JTAG-отладчика
KMKAT32UC3
через JTAG. Ведущее устройство JTAG может, например, прочитать реги-
стровый файл путем отдачи ЦПУ команды mtdr.
Так как регистры OCD непосредственно доступны для ЦПУ, то можно
сформировать программный отладчик, который будет выполняться ЦПУ.
Установка бита режима монитора в регистре управления разработкой при-
ведет к переходу ЦПУ в режим монитора вместо режима OCD, когда сра-
ботает точка останова. Режим монитора подобен режиму OCD за исключе-
нием того, что команды в нем не поступают из порта JTAG, а выбираются
из области памяти, определяемой вектором исключения отладки, находя-
щимся в программной памяти.
Логика отладки AT32UC3 имеет в своем составе отладочный регистр
программного счетчика, с помощью которого отладчик может непрерывно
читать текущее содержимое программного счетчика PC, не затрагивая при
этом ЦПУ. Это позволяет отладчику простым способом генерировать ста-
тистическую информацию, содержащую сведения о времени, потраченном
ЦПУ на выполнение различных участков кода. Указанная информация
может быть использована программистом для оптимизации кода.
31.2.2. Сервисное устройство памяти
Сервисное устройство памяти (MSU) — аппаратный блок, предназначен-
ный для реализации функций тестирования и отладки. MSU управляется
через специализированный набор регистров, обращение к которым произ-
водится с помощью команды JTAG MEMORY_SERVICE.
MSU может использоваться, чтобы автоматически вычислять кон-
трольную сумму (CRC) блока данных в памяти. Кроме того, MSU поддер-
живает режим трассировки NanoTrace, который является оригинальной
особенностью архитектуры AVR32. В режиме NanoTrace данные трасси-
ровки выводятся в память вместо вывода во вспомогательный порт, что
дает возможность впоследствии извлечь их оттуда с помощью команды
JTAG MEMORY_ACCESS, позволяя, таким образом, производить трас-
сировку с помощью JTAG-отладчика. Пользователь должен произвести
запись в регистры MSU, чтобы сконфигурировать адрес и размер блока
памяти, который задействуется для режима NanoTrace. Буфер NanoTrace
может быть размещен где-нибудь в физическом адресном пространстве,
включая внутреннюю и внешнюю оперативную память с помощью интер-
фейса внешней шины EBI, если последняя имеется. При этом указанная
область не может использоваться приложением для хранения кода, вы-
полняемого ЦПУ.
31.2.3. Использование AUX-отладчика
Использование вспомогательного порта AUX обеспечивает доступ к ши-
рокому диапазону возможностей отладки. Главная из них — особенность
трассировки, которая позволяет внешнему отладчику получать непрерыв-
ную информацию о выполнении программы в ЦПУ. Дополнительно к это-
му, наличие ножек «входное событие» и «выходное событие» позволяет
коррелировать внешние события с процессом выполнения программы.
Порт AUX включает набор сигналов, перечисленных в табл. 31.1.
Табл. 31.1. Набор сигналов порта AUX
Сигнал Направление Описание
МСКО Выход Выходной синхросигнал данных трассировки
MDO [5:0] Выход Выходные данные трассировки
MSEO [1:0] Выход Управление фреймами трассировки
EVTI_N Вход Входное событие
EVTO_N Выход Выходное событие .
Сигнальные линии порта AUX мультиплексированы с линиями кон-
троллера GPIO, поэтому перед запуском сеанса отладки для этих линии
необходимо разрешить функцию порта AUX путем записи в регистры
OCD. Порт AUX отображен на два различных местоположения в адресном
пространстве, а выбор нужного из них производится с помощью регистров
OCD. Таким способом уменьшается вероятность того, что порт AUX будет
конфликтовать с приложением.
Отладчик, использующий порт AUX, должен подключаться к МК через
соответствующий стандарту Nexus разъем Mictor-38. Этот разъем включает
сигналы JTAG и линию RESET_N, обеспечивая
полный доступ к функциям отладки и програм-
мирования МК.
Блок-схема подключения к МК AUX+JTAG-
отладчика показана на рис. 31.3.
Функция трассировки разрешается путем за-
писи в регистры OCD через JTAG. OCD извлекает
информацию отладки из ЦПУ, сжимает ее и фор-
матирует в сообщения переменной длины соглас-
но стандарту Nexus. Сообщения буферизируются
в 16-фреймовую очередь передачи и выводятся че-
рез порт AUX по одному фрейму зараз. В случае
переполнения очереди передачи генерируются со-
общения об ошибках, чтобы индицировать поте-
рю данных. Аппаратный модуль очереди передачи
может быть сконфигурирован, чтобы останавли-
вать ЦПУ, когда происходит переполнение, чтобы
тем самым предотвратить потерю сообщений за
счет большего времени выполнения программы.
Программная трассировка позволяет отладчику
непрерывно контролировать выполнение програм-
мы в ЦПУ. Сообщения программной трассировки
Рис. 31.3. Блок-схема под-
ключения AUX+JTAG-
отладчика к МК
генерируются для каждого перехода в программе.
Они содержат сжатую информацию, которая позволяет отладчику связы-
вать сообщение с исходным текстом, идентифицировать команду перехода
и целевой адрес.
Трассировка данных выводит сообщение каждый раз, когда определен-
ное местоположение в памяти читается или записывается программой. Со-
общение содержит информацию о типе (чтение/запись) и размере доступа,
а также адрес и данные местоположения в памяти, к которому производит-
ся обращение. МК семейства AT32UC3 содержат два канала трассировки
данных, каждый из которых управляются парой регистров OCD. Эти реги-
стры задают диапазон адресов (или единственный адрес), в котором будет
производиться генерация сообщений трассировки данных.
Программная трассировка и трассировка данных оперируют виртуаль-
ными адресами. В случаях, когда в качестве пользовательской программы
ЦПУ выполняется операционная система, несколько процессов использу-
ют перекрывающиеся виртуальные сегменты памяти. Идентифицировать
выключение каждого такого процесса позволяет трассировка монополь-
ного использования. Когда операционная система активизирует какой-то
процесс, это вызывает автоматическую запись номера идентификатора
(ID) этого процесса в регистр OCD, который генерирует сообщение трас-
сировки монопольного использования. Это позволяет отладчику переклю-
чать контекст для отслеживания последующих сообщений о выполнении
программы и данных. Как использовать указанную особенность, зависит
от программы, выполняющейся в ЦПУ. Она может также использоваться,
чтобы извлекать другие типы информации из системы.
Аппаратные модули точек останова по определению предназначены для
генерации точек останова для программы и данных. Однако, точки останова
могут также использоваться, чтобы генерировать сообщения о контрольных
точках, позволяя отладчику производить мониторинг программы и данных
без остановки ЦПУ. Контрольные точки можно разрешить независимо от
точек останова. Модули трассировки данных также могут быть сконфигу-
рированы таким образом, чтобы генерировать сообщения при срабатыва-
нии контрольных точек вместо сообщений трассировки данных.
Как было указано выше, порт AUX содержит вывод входного события
(EVTI_N) и вывод выходного события (EVTO_N). Ножка EVTI_N может
использоваться для запуска точки останова, когда происходит какое-то
внешнее событие. Эта особенность полезна, когда требуется, например, за-
пустить определенные сообщения, синхронизированные с выполнением
программы и данных. Наличие логики EVTI_N позволяет коррелировать
внешнее событие с процессом выполнения программы.
Когда ЦПУ переходит в режим отладки, сообщение о состоянии отлад-
ки передается в порт трассировки. Для всех сообщений трассировки могут
быть заданы временные метки, указывающие, когда они были приняты от-
ладчиком. Однако из-за времени ожидания буферизации передающей оче-
реди временные метки не будут на 100% точными. Чтобы как-то улучшить
эту ситуацию, состояние выхода EVTO_N может переключаться каждый
раз, когда сообщение вставляется в передающую очередь. Состояние выхо-
да EVTO N может также переключаться, когда срабатывает точка останова
или когда ЦПУ переходит в режим отладки по любой причине. Указанная
особенность может использоваться программистом для точного определе-
ния момента возникновения какого-либо внутреннего события.
Программный качественный анализ (программная проверка качества)
SQA имеет дело с двумя важными проблемами, связанными с выполнени-
ем встроенной программы:
• охват кода вовлекает в идентификацию непроверенные части встро-
енного кода в рамках выполнения улучшенных тестовых процедур
и, таким образом, позволяет улучшить качество результирующего
программного обеспечения;
• анализ выполнения позволяет разработчику точно определять коли-
чество времени, потраченного, на выполнение различных частей
кода, позволяя выявлять критические участки, которые в дальней-
шем могут быть оптимизированы.
Чтобы выполнить эти задачи, может использоваться программная трас-
сировка. Однако традиционная программная трассировка не позволяет
восстановить текущее значение программного счетчика (PC) без корре-
ляции информации трассировки с исходным текстом, которая не может
быть сделана «на лету». Это ограничивает возможности программной трас-
сировки относительно коротким интервалом времени, определенным раз-
мером трассировочного буфера в отладчике. Система OCD в МК AT32UC3
дополняет возможности программной трассировки возможностями SQA,
позволяя отладчику восстанавливать значение PC «на лету».
ГЛАВА 32
ИНТЕРФЕЙС JTAG
И ГРАНИЧНОЕ СКАНИРОВАНИЕ
Входящая в состав всех МК семейства AT32UC3 логика интерфейса JTAG
и граничного сканирования имеет следующие основные особенности:
• интерфейс JTAG, совместимый со спецификацией IEEE1149.1,
• цепь граничного сканирования для тестирования на уровне плат,
• прямой доступ к памяти и возможность программирования через
интерфейс JTAG,
Рис. 32.1. Блок-схема подключения JTAG к устройству AVR32
• отладка на кристалле с доступом, совместимым со спецификацией
IEEE-ISTO 5001-2003 (Nexus 2.0).
Блок-схема, изображенная на рис. 32.1, иллюстрирует подключение
JTAG к устройству AVR32.
Контроллер порта тестового доступа (ТАР) является конечным авто-
матом, управляемым сигналами TMS и ТСК. Контроллер ТАР выбира-
ет или регистр команд JTAG, или один из нескольких регистров данных
в качестве цепи сканирования между входом TDI и выходом TDO. Регистр
команд содержит команды JTAG, управляющие поведением регистра дан-
ных. Регистр идентификатора (ID), регистр обхода и цепь граничного ска-
нирования используют регистры данных для тестирования на уровне плат.
Регистр сброса может использоваться, чтобы сохранить состояние сброса
устройства в ходе тестирования или программирования.
Интерфейс шины сервисного доступа (SAB) содержит регистры адреса
и данных для обслуживания обращения к шине, которая предоставляет
доступ к отладке, программированию и другим функциям устройства. SAB
предлагает несколько режимов доступа к регистрам адреса и данных.
К интерфейсу JTAG обращение производится через специализирован-
ные выводы JTAG, перечисленные в табл. 32.1.
Табл. 32.1. Выводы интерфейса JTAG
Имя вывода Направление Описание
ТСК Вход Тестовая синхронизация. Сигнал, полностью асинхронный по отношению
TMS Вход к системному синхросигналу Выбор тестового режима. Выборка сигнала на этой линии производится по
TDI Вход положительному перепаду ТСК Тестовые входящие данные. Выборка сигнала на этой линии производится по
TDO Выход положительному перепаду ТСК Тестовые входящие данные. Выборка сигнала на этой линии производится по
отрицательному перепаду ТСК _
Для получения дополнительной информации об интерфейсе JTAG, ко-
мандах и регистрах JTAG, а также о граничном сканировании рекоменду-
ется обратиться к источнику [3].
ЧАСТЬ 2
РАЗРАБОТКА ПРИЛОЖЕНИЙ
НА БАЗЕ МК АРХИТЕКТУРЫ AVR32
На момент написания этой книги автору было известно о двух основных
программных инструментальных средствах разработки-отладки приложе-
ний на базе МК архитектуры AVR32.
Первое из них — программный пакет интегрированной среды
разработки-отладки (IDE) IAR Embedded Workbench® for AVR32 (EWAVR32)
от фирмы IAR. Альтернативным средством разработки-отладки являет-
ся пакет IDE AVR32Studio от производителя МК AVR32 — фирмы Atmel.
Описанию каждого из этих средств посвящена отдельная глава.
Помимо инструментальных средств разработки-отладки Atmel сво-
бодно распространяет большое количество исходных текстов примеров,
а также программных драйверов узлов и модулей МК AVR32. Указан-
ная информация для каждого семейства МК AVR32 может быть бес-
платно скачана с сайта www.atmel.com в виде архивных файлов AVR32-
SoftwareFramework (рис. 33.1). В этих архивах содержатся, в частности,
следующие компоненты.
1. Приложения и сервисы для МК AVR32 с примерами их использо-
вания:
• библиотека AVR32 DSPLib, содержащая набор цифровых функ-
ций обработки сигналов,
• файловая система FAT12/16/32,
• исходные коды ядра ОС FreeRTOS.org и примеры демоприложе-
ний, работающих под управлением FreeRTOS.org,
Рис. 33.1. Структура архива AVR32-SoftwareFramework
• пример организации стека IwIP TCP/IP для МК AT32UC3 с кон-
троллером МАСВ,
• примеры организации различных интерфейсов памяти (в том
числе с файловой системой),
• пример построения устройства/хоста USB CDC,
• использование USB-загрузчика в примере обновления встроен-
ного программного обеспечения с помощью внутрисистемного
программирования (ISP) МК,
• пример построения устройства/хоста USB HID (компьютерной
«мыши»),
• пример построения устройства/хоста USB Mass Storage (сменного
USB-диска).
2. Программные драйверы системных устройств и встроенной пери-
ферии МК AVR32 с примерами их использования: ABDAC, ADC,
CPU, EBI, EIC, FLASHC, GPIO, INTC, MACB, PDCA, PM, PWM,
RTC, SPI, SSC, TC, TWI, USART, USBB, WDT.
3. Программные драйверы внешних устройств МК AT32UC3 с при-
мерами их использования:
• 4-строчный символьный LCD-дисплей DIP204,
• манипулятор типа «джойстик»,
• микросхемы памяти архитектуры SPI Dataflash семейства AT45DBx
производства Atmel,
• карты памяти SD/MMC,
• микросхемы памяти SDRAM Micron MT48LC16M16A2TG-7E
(с использованием интерфейса внешней памяти EBI).
4. Командные файлы компоновщиков и файлы макроопределе-
ний для С-компиляторов IAR и GCC (последний используется
в AVR32Studio), а также заголовочные файлы для всей встроенной
периферии всех МК семейства AVR32.
5. Заголовочные файлы для оценочных плат с МК AVR32 производ-
ства Atmel.
6. Исходные тексты встроенной программы и компьютерная програм-
ма поддержки сложного демоприложения «Панель управления»
(Control Panel) на базе оценочных плат EVK1100/1101, выполняю-
щегося под управлением ОС freeRTOS.org. Приложение реализует
сбор данных с помощью встроенных датчиков оценочной платы
и их вывод через различные коммуникационные интерфейсы, под-
держиваемые МК AT32UC3. Control Panel использует большинство
вышеперечисленных программных драйверов и сервисов.
Большинство примеров и программных драйверов из архивов AVR32-
SoftwareFramework представлено исходными текстами на С (проектами)
в двух вариантах: для компиляторов IAR и GCC.
ГЛАВА 33
IDE IAR EMBEDDED
WORKBENCH FOR
AVR32
33.1. Общее описание
Программный пакет IDE IAR EWAVR32 V2.21B, который использовал ав-
тор при написании этой книги, обеспечивает полную поддержку всех МК
семейств АР7000 и UC3 с архитектурой AVR32. В пакет IDE включены го-
товые файлы конфигурации устройств и примеры проектов для оценочных
плат Atmel EVK1100 и STK1000. EWAVR32 также поддерживает возмож-
ности, связанные с использованием JTAG-адаптера JTAGICE-mkII произ-
водства Atmel: режим трассировки NanoTrace, Flash-загрузчик, аппаратные
и программные точки останова.
Поддержка IDE IAR EWAVR32 RTOS включает поддержку интерфейса
OSEK Run Time Interface (ORTI).
Файл дистрибутива пакета IDE IAR EWAVR32 доступен для бесплат-
ного скачивания на сайте производителя www.iar.com в двух демоверсиях:
с ограниченным объемом выходного бинарного файла (32к), но без огра-
ничения времени использования — Kick Start Edition или без ограничения
объема кода, но с ограниченным временем использования (30 дней) — Evol-
uation Edition. Для инсталляции IDE на компьютер необходимы лицен-
зионный номер и лицензионный ключ, для получения которых на сайте
www.iar.com нужно зарегистрироваться.
Пакет включает в себя набор инструментальных средств, интегриро-
ванных в единую программу-оболочку с удобным оконным интерфейсом,
работающую под ОС Windows Microsoft. IAR EWAVR32 состоит из следую-
щих компонент:
• собственно IDE (текстовый редактор, менеджер проектов и т. д.),
• компилятор IAR C/C++,
• ассемблер IAR,
• универсальный компоновщик IAR XLINK Linker,
• программа построения библиотек IAR XAR Library Builder,
• набор библиотек IAR XLIB Librarian,
• отладчик IAR C-SPY Debugger с симулятором,
• файлы конфигурации для всех устройств AVR32,
• контекстно-зависимая интерактивная справка.
33.2. Создание приложений в IAR Embedded Workbench
for AVR32
Работа пользователя с IDE IAR EWAVR32 во многом схожа с работой с IDE
IAR Embedded Workbench ARM (IAR EWARM), подробное описание кото-
рой приводится в источнике [8]. Для получения дополнительной информа-
ции по EWAVR32 рекомендуется обратиться к источнику [9].
Разработка приложения в IDE начинается с создания нового проекта.
Проект создается из главного окна IDE, показанного на рис. 33.2.
33.2.1. Параметры настройки нового проекта
IDE EWAVR32 позволяет создавать простые и расширенные проектные
модели. При создании расширенной проектной модели сначала создается
рабочая область, к которой добавляется один или несколько проектов.
В IDE имеются готовые шаблоны проектов. Каждый проект может содер-
жать иерархию из групп, в которые собираются исходные файлы пользо-
вателя. Каждая такая группа, равно как и отдельные входящие в проект
файлы, называются узлами проекта. В иерархической структуре любого
проекта наивысшую иерархию имеет узел уровня самого этого проекта.
Для каждого проекта может быть определена одна или несколько кон-
фигураций компоновки.
В рамках данной книги будет рассматриваться пример создания про-
стого проекта с небольшим количеством файлов.
Производитель рекомендует, чтобы при создании нового проекта поль-
зователь создавал отдельный каталог, где сохранялись бы все файлы этого
проекта. Прежде чем создать проект, необходимо сначала создать рабочую
область (окно рабочей области).
33.2.2. Создание окна рабочей области
При запуске IDE EWAVR32 в главном окне имеется уже готовая автомати-
чески созданная рабочая область — окно Workspace (см. рис. 33.2), которую
сразу же можно использовать для размещения проектов. Если разработчик
использует эту рабочую область, то первый шаг создания окна рабочей об-
ласти можно опустить.
Для создания новой рабочей области следует выбрать в меню File>New,
а затем выбрать Workspace в диалоговом окне New. Кликнуть мышью на
кнопке ОК, после чего отобразится пустое окно рабочей области, как по-
казано на рис. 33.2.
Чтобы сохранить созданную рабочую область, необходимо выбрать в меню
File>Save Workspace, а затем задать, где должен быть сохранен файл рабочей
области, набрав его имя в поле File name и нажав кнопу Save. Файл рабочей
области по умолчанию будет иметь расширение eww. Этот файл содержит пе-
речисление всех проектов, которые пользователь добавляет к данной рабочей
области. Необходимо заметить, что сохранить рабочую область описанным
способом удастся только после создания в ней нового проекта (см. ниже).
Рис. 33.2. Главное окно IDE IAR EWAVR32
33.2.3. Создание нового проекта
Создание нового проекта проиллюстрируем на примере простого прило-
жения, демонстрирующего управление МК AT32UC3B0256 светодиодами,
установленными на оценочной плате EVK1101 производства Atmel. Дадим
проекту имя gpio. Такое же имя при сохранении дадим и рабочей области,
содержащей этот проект. На жестком диске создадим одноименный ката-
лог, в котором в дальнейшем будем хранить все файлы проекта. В качестве
файлов исходных текстов для этого проекта будем использовать файлы из
архива AVR32-SoftwareFramework. Поместим файлы исходных текстов в ка-
талог проекта. (Последнее не обязательно, поскольку входящие в состав
проекта файлы могут располагаться и вне его каталога.)
Выбираем в меню Project>Create New Project. Появившееся диалоговое
окно Create New Project предоставляет возможность использования в ка-
честве основы нового проекта один из нескольких шаблонов проекта, как
Рис. 33.3. Создание нового проекта
IAR Emte'MMW'tf’MJFn ft IDE
Рис. 33.4. Созданный проект в окне рабочей области
IAR tmbPdd/d Vwkbendt 1РЕ
Рис. 33.5. Выбор конфигурации компоновки проекта
показано на рис. 33.3. В общем случае можно выбрать шаблон Empty project,
который создает проект, использующий заданные по умолчанию параме-
тры настройки, а затем кликнуть на кнопке ОК.
В появившемся стандартном диалоговом окне Save As следует опре-
делить, где именно на жестком диске требуется сохранить файл проекта.
В поле File name следует напечатать имя файла проекта и нажать на кнопку
Save, чтобы завершить создание нового проекта. Сохраняем его в катало-
ге GPIO под таким же именем. Созданный проект (узел уровня проекта)
появится в окне рабочей области, как показано на рис. 33.4. Обратите вни-
мание, что название узла уровня проекта в отличие от узлов более низкой
иерархии выделяется жирным шрифтом.
По умолчанию создаются две конфигурации компоновки проекта: от-
ладки и выгрузки (Debug и Release). В приведенном далее примере будет
использоваться только конфигурация отладки Debug. Конфигурация ком-
поновки выбирается из раскрывающегося меню в верхней части окна рабо-
чей области, как показано на рис. 33.5. Звездочка на имени проекта указы-
вает, что произведенные в проекте изменения, т. е. собственно сам проект,
пока не были сохранены.
После создания проекта следует произвести сохранение рабочей обла-
сти способом, описанным выше.
После создания проекта и сохранения на диске рабочей области в катало-
ге проекта будет создан проектный файл с расширением ewp и файл рабочей
области с расширением eww. Проектный файл содержит информацию о па-
раметрах настройки проекта, например, таких как вариант компоновки.
33.2.4. Добавление файлов к проекту
Добавление файлов к проекту производится в следующем порядке. В окне
рабочей области строкой-курсором выделяется объект, к которому плани-
Рис. 33.6. Добавление файлов к проекту и редактирование их
руется добавить исходный файл. Это может быть группа или, как в нашем
случае, непосредственно проект, т. е. узел уровня проекта.
Выбрать в меню Project>Add Files, после чего откроется стандартное
диалоговое окно обзора файлов и каталогов. Следует найти нужные файлы
(например, заголовочный файл МК AT32UC3B0256 uc3b0256.h) и пооче-
редно выбрать их в списке выбора файла нажатием на кнопку Open. После
этого выбранные файлы добавятся к проекту, как показано на рис. 33.6.
Рекомендуется размещать файлы, добавляемые к проекту, в каталоге
этого проекта, однако заголовочные и иные подключаемые файлы могут
также размещаться в каталогах, автоматически создаваемых при инсталля-
ции EWAVR32. Создавать и редактировать файлы, добавляемые к проекту,
можно, например, во встроенном редакторе EWAVR32. Чтобы отрыть для
просмотра и редактирования любой файл проекта, следует дважды клик-
нуть левой кнопкой мыши на его имени в рабочей области. После этого его
содержимое появится в окне редактора IDE, как показано на рис. 33.6.
33.2.5. Задание опций проекта
Для прикладных пользовательских проектов опции могут быть заданы для
узлов проекта всех уровней. Сначала необходимо задать генеральные (об-
щие) опции, например, такие как конфигурация процессора. Эти опции
устанавливаются для узла уровня проекта. Задание опций уровня проекта
производится в следующем порядке.
Выбирается позиция табуляции нужного проекта, например, gpio —
Debug в окне рабочей области, а в меню выбирается Project>Options. По-
сле этого откроется страница Target в категории General Options, как по-
казано на рис. 33.7. В поле Device этой страницы необходимо выбрать
Рис. 33.7. Страницы категории General Options
МК, используемый в целевой системе. Для остальных настроек страниц
General Options в этом проекте можно оставить заданные по умолчанию
значения.
После установки генеральных опций для узла уровня проекта следует
установить опции компилятора. Для этого нужно выбрать C/C++ Compiler
в списке Category с тем, чтобы отобразить страницы группы опций ком-
пилятора, как показано на рис. 33.8. Следует заметить, что на странице
опций компилятора Optimizations можно задать степень оптимизации при
компиляции. От степени оптимизации зависит, в частности, размер выход-
ного кода компилятора. На странице Preprocessor необходимо указать пути
к подключаемым файлам проекта в случае, если эти файлы находятся вне
каталога проекта и/или вне каталога INC, автоматически созданного при
инсталляции IDE EWAVR32.
Для остальных настроек страниц C/C++ Compiler в этом проекте мож-
но оставить заданные по умолчанию значения.
Чтобы задать опции ассемблера для узла уровня проекта, в списке
Category нужно выбрать Assembler. При этом отобразится страница группы
Рис. 33.8. Страницы категории C/C++ Compiler
Рис. 33.9. Страницы категории Assembler
опций ассемблера (рис. 33.9), для которых в этом проекте можно оставить
заданные по умолчанию значения.
33.2.6. Компилирование и компоновка приложения
После создания проекта приложения следует его откомпилировать и ском-
поновать. При этом создаются файл листинга компилятора и файл карты
компоновщика. Компилирование исходных файлов производится в сле-
дующем порядке.
Чтобы откомпилировать, например, файл main gpio.c, следует выбрать
его в окне рабочей области. Затем выбрать в меню Project>CompiIe. Аль-
тернативно можно нажать на кнопку Compile в инструментальной панели
или выбрать команду Compile из контекстного меню, которое появляется,
если щелкнуть правой кнопкой мыши на выбранном файле в окне ра-
бочей области. Процесс и результаты компиляции исходного файла бу-
дут отображаться в окне сообщений компоновки Build, как показано на
рис. 33.10.
Замечание. У пользователя имеется возможность настроить количество
информации, которая будет отображаться в окне сообщений компоновки
при компилировании и компоновки приложения. В связи с этим содержи-
мое этого окна может отличаться от показанного на рисунке.
По завершению компиляции EWAVR32 автоматически создаст новые
подкаталоги в каталоге проекта. Поскольку нами используется конфигу-
рация компоновки Debug, то в каталоге Debug будут созданы каталоги List,
Obj и Ехе:
• каталог List — каталог хранения файлов листинга и файлов карты
компоновщика. Файлы листинга имеют расширение 1st, а файлы
карты компоновщика — расширение тар;
• каталог Obj — каталог хранения объектных файлов компилято-
ра и ассемблера. Эти файлы имеют расширение гХХ и в дальней-
шем будут использоваться как входные для компоновщика IAR
XLINK;
Рис. 33.10. Результаты компиляции одного исходного файла проекта
• каталог Ехе — каталог хранения исполняемого файла. Этот файл
имеет расширение dXX и в дальнейшем будет использоваться как
входной для отладчика IAR C-SPY.
Кроме создания перечисленных каталогов EWAVR32 создает в рабочей
области позицию табуляции папки Output, в которую помещает все создан-
ные выходные файлы (см. рис. 33.10).
Для осуществления компоновки приложения необходимо предвари-
тельно задать опции настройки компоновщика IAR XLINK Linker. Опции
компоновщика задаются следующим образом.
Выбрать позицию табуляции нужного проекта, например, gpio — Debug
в окне рабочей области, а затем выбирать в меню Project>Options. После
этого выбрать строку Linker в списке Category, чтобы отобразить страницы
опций компоновщика XLINK, как показано на рис. 33.11.
На странице Config в области Linker command file можно задать путь к ис-
пользуемому командному файлу компоновщика, содержащего карту памяти
выбранного МК (файл с расширением хсГ). В качестве командного файла
компоновщика для МК AT32UCB30256 в XLINK по умолчанию предлагает-
ся использовать файл 1пкисЗЬ0256.хс1. Этот файл вместе с командными фай-
лами для других МК семейства АТ32 входит в пакет EWAVR32. Командный
файл 1пкисЗЬ0256.хс1 позволяет компоновщику генерировать объектный код,
предназначенный для записи во Flash-память МК AT32UCB30256.
Замечание автора. В данном проекте для всех страниц опций XLINK
были оставлены заданные по умолчанию значения (см. рис. 33.11). Тем не
менее, в результате компиляции был сгенерирован работоспособный код,
который затем был записан во Flash-память МК. Очевидно, в используемой
версии EWAVR32 компоновщик при отсутствии явно заданного командно-
Options for nt,d 'gpie-'
Categexy.
GemralCpt“ns
C/C++ Compiler
Asser.ibtef
lap a to C
Custom Buld
BlM Actws
JTAGICE mkll
Simulator
слДяуstt+jbJ
OUpul J Еии Output I ttdefme i Diagnostics J urt j Config | Pwcb. < J. >
. Output file
Г Oswride default $dteontj*y output file
(Hone fct lhe •lecledformat)
frxmaj
’• Letugrr/'TrmattontotC-SPr'
p/ WflhiUnW* centre‘module
i** With |/O elation moth s
guttered terminal ou^wt
Г* Mow £-SPr-specrfr exbb a- rtpii Ba
f~ ....;........m.^..| 1 .
• ft1 - ~£j
MtxMekcar yrrocss !'nc+“teall ” “ jjj
Options for n ’gpio"
X
Рис. 33.11. Страницы категории Linker
X
го файла использует его по умолчанию, исходя из МК целевой системы,
заданного на странице Target категории General Options (см. выше).
После завершения настройки компоновщика можно скомпоновать объ-
ектный файл и сгенерировать код, который может быть отлажен. Для этого
следует выбрать в меню Project>Make или Project>Rebuild All. Ход и ре-
зультаты процесса компоновки будут отображаться в сообщениях в окне
компоновки (рис. 33.12).
В результате компоновки в каталоге Ехе проекта будет создан выходной
файл формата UBROF с расширением dXX, содержащий код с информаци-
ей отладки. Этот файл необходимы для записи пользовательского прило-
жения во Flash-память МК целевой системы в соответствии с методикой,
изложенной в [8], [10].
33.3. Отладка приложения в режиме симуляции
Встроенный в IDE высокоуровневый отладчик IAR C-SPY Debugger обе-
спечивает возможность одновременной разработки и отладки пользова-
тельского приложения. Наиболее простой способ отладки заключается
Рис. 33.12. Результаты компоновки всего проекта
в использовании программного драйвера симулятора C-SPY Debugger. Си-
мулятор программно моделирует все функции объектного процессора, что
позволяет отладить приложение до его записи в целевую систему. Посколь-
ку никакие аппаратные средства при этом не требуются, указанный способ
отладки является самым рентабельным решением для многих приложений.
Симулятор C-SPY Debugger может симулировать прерывания ЦПУ, управ-
лять точками останова, а также симулировать периферийные устройства (с
помощью системы макрокоманд C-SPY).
При запуске симулятора C-SPY Debugger все окна, открытые в этот
момент в рабочей области, останутся открытыми. Кроме того, будет открыт
набор дополнительных специфических окон. Пользователь может изменить
исходный текст своей программы в окне редактора в течение сеанса от-
Рис. 33.13. Страницы категории Debugger
Рис. 33.14. Сеанс отладки в режиме симуляции
ладки, однако эти изменения не вступят в силу, пока не будет произведен
выход из отладчика. В процессе отладки пользователь может наблюдать за
переменными и памятью, устанавливать и снимать точки останова в лю-
бом месте программы, просматривать код в режиме дизассемблирования,
а также управлять содержимым регистров и памяти.
Перед стартом отладчика IAR C-SPY Debugger в режиме симуляции не-
обходимо соответствующим образом задать его опции. Для этого следует
выбрать в меню Project>Options, а затем категорию Debugger. На странице
Setup следует убедиться, что выбрана строка Simulator из
раскрывающегося списка Driver, как показано на рис. 33.13.
Кликнуть мышью на кнопке ОК.
Для запуска симуляции (старта отладчика C-SPY
Debugger) следует выбрать в меню Project>Debug. Альтерна-
тивно, можно нажать кнопку Debugger в инструментальной
панели. Старт отладчика IAR C-SPY Debugger произой-
дет с загруженным приложением gpio.dXX. В дополнение
к окнам, уже открытым в EWAVR32, пользователю теперь
станет доступен набор специфических окон IAR C-SPY
Debugger, часть из которых при старте симуляции откроется
по умолчанию (рис. 33.14). Доступ к остальным окнам после
старта симуляции становится возможен через опцию меню
View, как показано на рис. 33.15.
После перехода в режим симуляции в строке главно-
го меню появится пункт Simulator, содержащий опции
управления симулятором, как показано на рис. 33.14.
Команды отладчика Debug>Step Over, Debug>Step
Out и Debug>Step Into (рис. 33.16) позволяют выполнять
, IAR Embedded Workbench Ю£
ДЕЗ w#
Project Debug Stout
D
ebug
Fries
вЙдй
к®©:
I— ЕН
Workspace
Source Browser
Breakpoints
Djassemb
Ммпогу
Symbolic Memory
Register
Watch
locals
Statics
A’jto
Lrve Watch
Quick Watch
Call Stack
Terminal I/O
Code Coverage
Prof Ung
Stack
Toolbars ►
✓ Status Bar
b
I
4
Рис. 33.15. До-
ступ к окнам
отображения
ресурсов в се-
ансе отладки
1 1АЯ Embedded Workbench IDE
Fte Edk View ProM Debug Smdafor Tools’ U
idi»b0 ® *• -«Г“
jSMs
Рис. 33.16. Команды отладчика, связанные с выполнением программы
программу на уровне исходного текста в пошаговом режиме. Выполнен-
ная команда Step Over показывает передачу управления с заходом его
внутрь функций или вызовов подпрограмм, а при выполнении команды
Step Into и Step Out передача управления каждой функции показывается
как единственный шаг без захода его внутрь функции. При этом по-
шаговое движение при выполнении приложения производится на уров-
не вызова функций, а не на уровне операторов. Чтобы пошаговое дви-
жение производилось на уровне операторов, следует выбрать команду
Debug>Next statement. После этого за один шаг будет выполняться один
оператор. Команда Debug>Reset Target симулирует сброс МК целевой
системы. Команда Debug>Go позволяет запустить выполнение програм-
мы в непрерывном режиме (реальном времени).
33.3.1. Трассировка при симуляции
При выборе в строке меню Simulator>Trace открывается окно трасси-
ровки, имеющее собственную инструментальную панель, как показано
на рис. 33.17, а. Трассировка включается/отключается кнопкой Enable/
Disable этой панели. На странице окна трассировки Trace отображается
последовательность всех выполненных машинных команд. Кроме того,
окно может отображать данные трассировки для выражений. C-SPY
Debugger генерирует информацию трассировки, основанную на содер-
жимом программного счетчика. В столбце # отображается серийный но-
мер, сопоставляемый каждой строке в буфере трассировки, что упрощает
навигацию по окну. В столбце Trace отображается зарегистрированная
последовательность выполненных машинных команд, а также (опцио-
нально) соответствующий им исходный текст. Для включения/отключе-
ния отображения команд исходного текста служит кнопка Toggle Source
инструментальной панели.
Кнопкой Clear trace data производится очистка буфера трассировки.
При этом очищается содержимое страниц Trace и Function Trace.
Кнопка Browse позволяет включить/отключить режим просмотра вы-
бранной команды оконного столбца Trace.
Кнопкой Save открывается стандартное окно сохранения файлов Save
trace data, позволяющее сохранить данные трассировки в виде текстового
файла со столбцами табуляции.
Страница окна трассировки Function Trace, открыть которую можно,
выбрав в главном меню Simulator>Function Trace, в отличие от страницы
TVace, отображает не все выполненные машинные команды, а только те
из них, которые соответствуют вызовам функций и возвращениям из них
(рис. 33.17, б).
Рис. 33.17. Окна отладчика, связанные с трассировкой
Кнопкой Edit Expressions открывается страница окна трассировки Trace
Expressions. На этой странице пользователь может задать выражения, зна-
чения которых войдут в информацию трассировки (рис. 33.17, в). В столбце
Expression этой страницы могут быть заданы любые выражения, например,
программные переменные или регистры. В столбце Format отображается фор-
мат, используемый для каждого выражения. Для изменения порядка следова-
ния выражений используются стрелки с инструментальной панели страницы.
Каждая строка, созданная на странице Trace Expressions, повлечет за собой
автоматическое появление одноименного столбца на страницах Trace и Func-
tion TYace. При трассировке в этих столбцах будут отображаться значения, ко-
торые примут выражения после выполнения команды в той же самой строке.
Кнопкой Find открывается диалоговое окно Find In Trace, с помо-
щью которого можно производить поиск на странице TYace согласно за-
данным критериям поиска (поиск по совпадению в заданном диапазоне
адресов, а также в заданном столбце страницы TYace), как показано на
Рис. 33.18. Окно поиска Find In Trace
рис. 33.18. Текстовый фрагмент, который требуется найти, набирается
в поле Text search. Если установлена опция Match Case, то поиск произ-
водится с учетом регистра. Если установлена опция Match whole word, то
производится поиск только тех строк, где заданный фрагмент фигури-
рует как отдельное слово. Опция Only search in one column задает поиск
только в требуемом столбце страницы. Установка опции Address Range
позволяет производить поиск фрагмента в пределах заданного адресного
интервала.
Найденные в результате поиска текстовые фрагменты отображаются на
странице Find In Trace окна сообщений, открыть которую можно, выбрав
в главном меню View>Messages>Find In Trace.
33.3.2. Проверка корректности доступа к памяти
Симулятор С-SPY может моделировать различные типы доступа к памяти
со стороны аппаратных средств целевой системы, а также выявлять слу-
чаи некорректного доступа, например, доступа для чтения при обращении
к памяти, доступной только для записи. Если к некоторой заданной об-
ласти памяти производится доступ, тип которого не согласуется с типом
доступа, заданным в С-SPY для этой области, С-SPY расценивает это как
некорректный доступ.
Задание областей памяти для доступа может быть произведено в файле
описания устройства или в файле отладки. Помимо этого, пользователь
может задать собственные области памяти. В качестве типа доступа может
быть задан доступ для чтения/записи, доступ только для записи или до-
ступ только для чтения. При этом невозможно задать два различных типа
доступа к одной и той же области памяти.
При задании типа проверки пользователь может выбрать между провер-
кой на предмет нарушения типа доступа или проверкой на предмет доступа
к неопределенным диапазонам.
Опционально пользователь может задать автоматическую приостановку
выполнения программы при обнаружении случая некорректного доступа.
Кроме того, пользователь имеет возможность определить временную дли-
тельность различных типов доступа (чтение/запись, последовательный/не-
последовательный) по привязке к приращению содержимого счетчика ци-
клов. Указанное приращение будет иметь место при обращении к байту.
Для открытия диалогового окна задания доступа к памяти Memory Ac-
cess Setup, показанного на рис. 33.19, необходимо выбрать Simulator>Memory
Access Setup. Это окно отображает текущие установки доступа к памяти,
которые будут использоваться в ходе симуляции.
Замечание. Если в окне задания доступа к памяти включены обе уста-
новки Use ranges based on и Use manual ranges, то доступ к памяти будет
проверяться для всех заданных диапазонов.
Для установки Use ranges based on можно выбрать одно из двух альтер-
нативных условий задания доступа к памяти.
• Device description file — установки будут загружены из файла описа-
ния устройства.
Рис. 33.19. Окна задания доступа к памяти Memory Access Setup
* Debug file segment information — установки будут основаны на инфор-
мации о сегментах, доступной в файле отладки. Эта информация
доступна только при отладке. Преимущество использования этого
условия состоит в том, что симулятор может захватить обращение
к памяти вне связанного приложения.
С помощью установки Use manual ranges пользователь может вручную
задать требуемые диапазоны памяти для доступа, используя диалоговое
окно Edit Memory Access, как показано на рис. 33.20. Диапазоны памяти,
задаваемые вручную, сохраняются между сеансами отладки.
Следует заметить, что для именования какой-либо области памяти
в C-SPY используется термин зона (поле Zone), Адрес или местоположение
в памяти является комбинацией зоны и некоторого числового смещения вну-
три этой зоны. Понятие зоны памяти используется в интерфейсе C-SPY не
только при задании диапазона для доступа, но и при работе с окнами Memory
и Disassembly (см. ниже). Зоны памяти определены в файлах описания МК.
Тип проверки доступа и действие, которое будет выполнено, если имеет
место некорректный доступ, можно задать в области Memory access checking
окна Memory Access Setup.
Тип проверки доступа Check for выбирается из следующих вариантов:
• Access type violation — нарушение типа доступа.
• Access to unspecified ranges — обращение к неопределенным диапазонам.
Действие Action выбирается из следующих вариантов:
Рис. 33.20. Окно задания диапазонов памяти для доступа Edit Memory
Access
• Log violations — регистрация нарушения.
• Log and stop execution — регистрация нарушения и выполнение оста-
нова.
Любые нарушения доступа отображаются в окне отладки на странице
Debug Log.
В диалоговом окне Edit Memory Access помимо задания диапазонов па-
мяти (начальный и конечный адреса) можно назначить тип доступа для
каждого диапазона: запись и чтение, только запись или только чтение.
33.3.3. Использование точек останова при симуляции
Симулятор С-SPY позволяет установить неограниченное количество точек
останова в программе. Для точек останова программы и данных задать атри-
бут размера, т. е. можно установить точку останова для диапазона. Можно
также установить так называемые непосредственные точки останова.
Точки останова данных срабатывают, когда происходит обращение
к данным, находящимся по некоторому заданному местоположению.
Точки останова данных удобно использовать для отладки переменных,
которые имеют заданный адрес в памяти. Если установить точку оста-
нова для доступа к локальной переменной, то фактически точка оста-
нова будет установлена на соответствующее местоположение в памяти.
Выполнение программы будет обычно останавливаться непосредствен-
но после выполнения команды, содержащей обращение к указанным
данным.
Точку останова данных можно установить тремя различными способами:
’ с помощью диалогового окна,
• с помощью системной макрокоманды,
• с помощью окна Memory.
Для установки точки останова следует выбрать в главном меню
View>Breakpoints, после чего откроется окно Breakpoints, как показано на
рис. 33.21. Кликнув в этом окне правой кнопкой «мыши», получим кон-
текстное меню, в позиции New Breakpoint которого можно выбрать тип
устанавливаемой точки останова, как показано на рисунке. Если выбрать
New Breakpoint>Data, откроется окно задания параметров точки останова
данных, как показано на рис. 33.22, а. В текстовом поле Break At этого окна
задается местоположение точки останова. Для этого также можно исполь-
зовать диалоговое окно Enter Location, которое открывается с помощью
кнопки Edit.
Опции поля Access Type позволяют задать тип доступа при срабатыва-
нии точек останова: чтение и запись (не доступно для непосредственных
точек останова), только чтение или только запись.
Замечание. Точки останова данных никогда не останавливают выпол-
нение за время выполнения одной команды. Они срабатывают и фиксирУ"
ются симулятором только после того, как эта команда выполняется. Непо-
средственные точки останова вообще не производят останов выполнений)
а только вызывают паузу в нем.
Рис. 33.21. Задание точек останова с помощью окна Breakpoints
В поле Size задается размер точки останова, что на практике означает
диапазон ячеек памяти. Каждое обращение для чтения и записи к ука-
занному диапазону памяти вызовет срабатывание точки останова. Для то-
чек останова данных это может быть полезно, если требуется, чтобы точ-
ка останова срабатывала при доступе к данным типа массивов, структур
и объединений.
Имеется два различных способа задания размера точки останова:
• Auto — размер будет автоматически задаваться на основании типа
выражения, на котором устанавливается точка останова. Например,
если точка останова устанавливается на 12-байтовой структуре, то
размер точки останова будет равен 12 байтам;
Рис. 33.22. Окна параметров точки останова данных и непосредственной
точки останова
• Manual — пользователь вручную задает размер точки останова
в текстовом поле Size.
В поле Action можно произвольно сопоставить срабатыванию точки
останова какое-либо действие. Например, можно определить выражение
для макрофункции С-SPY, которая будет выполнена в случае срабатыва-
ния точки останова и истинности заданного условия (см. ниже).
В поле Conditions можно задать простые и сложные условия. В поле
Expression можно поместить выражение, соответствующее синтаксису
выражений С-SPY. В случае, если включена опция Condition true, точка
останова вызывается, если значение выражения истинно. В случае, если
включена опция Condition changed, точка останова вызывается, если значе-
ние выражения изменилось после последней эволюции. В поле Skip count
может быть задано целое число, определяющее задержку срабатывания
точки останова.
В дополнение к универсальным точкам останова симулятор С-SPY по-
зволяет устанавливать непосредственные точки останова, которые оста-
навливают выполнение программы только временно. Это позволяет, на-
пример, вызвать макрофункцию С-SPY, когда ЦПУ собирается читать
данные из памяти или немедленно после записи данных. После действия,
производимого по срабатыванию непосредственной точки останова, вы-
полнение команды возобновится. Этот тип точек останова полезен при
симуляции устройств с отображенной памятью виды (последовательные
порты, таймеры и т. п.). Когда ЦПУ читает по адресу отображенной памя-
ти, макрофункция С-SPY может вмешаться и предоставить соответствую-
щие данные. Наоборот, когда ЦПУ записывает по адресу отображенной
памяти, макрофункция С-SPY может воздействовать на значение, которое
было записано
Непосредственную точку останова можно установить двумя способами:
• с помощью диалогового окна,
• с помощью системной макрокоманды.
Для установки непосредственной точки останова следует в окне Break-
points кликнуть правой кнопкой «мыши» для получения контекстного
меню, в котором затем выбрать New Breakpoint>Immediate, после чего от-
кроется окно задания параметров непосредственной точки останова, как
показано на рис. 33.22, б.
Местоположение непосредственной точки останова задается в тексто-
вом поле Break At. Альтернативно можно использовать кнопку Edit, чтобы
открыть диалоговое окно Enter Location.
Выбрав в главном меню Simulator>Breakpoint Usage, можно открыть ди-
алоговое окно используемых точек останова Breakpoint Usage (рис. 33.23),
показывающее все активные точки останова. В дополнение к списку всех
точек останова, определенных пользователем, в этом окне также отобража-
ются внутренние точки останова, которые использует отладчик. Для каж-
дой точки останова в списке показаны адрес и тип доступа, при этом ин-
формация о точке останова может быть развернута.
Помимо вышеописанных способов имеется еще один очень простой
способ установки точек останова в интерактивном режиме путем пози-
Рис. 33.23. Окно используемых точек останова Breakpoint Usage
ционирования курсора на требуемой команде исходного теста программы
или около нее, а затем выбора Edit>Toggle Breakpoint. Точка останова будет
установлена на этой команде, а на левом краю окна напротив команды
появится красный кружок, указывающий на установленную точку остано-
ва, как показано на рис. 33.24, а.
Чтобы выполнять приложение только до тех пор, пока управление не
достигнет точки останова, следует выбирать в меню команду Debug>Go.
Альтернативно можно нажать кнопку Go на инструментальной панели.
Приложение выполнится до точки останова, которая была установлена
ранее. При передаче управления на точку останова выполнение програм-
мы будет приостановлено, а команда будет подсвечена, как показано на
рис. 33.24, б. Чтобы удалить ранее установленную точку останова, следует
повторно выбрать в меню Edit>Toggle Breakpoint.
пил до
' -void gpici_disable_pin_j'Ul l_up (unsigned init pin)
volatile avr32_gpio_port_t *gpio_port = «GPIO.port[j
gpio_port->puei:c = L « (pin e Ox IF);
int gpio_get_pin_value(unsigned int pin)
volatile avr32 gpio p<
’gpio_port = iGPIO.portfi
int gpio_get_gpio_pin_output_value (unsigned int pin)
|{
volatile avr32_gpio_port_t *gpio_port “ «GPIO.port[j
return (gpio_port->ovr » (pin « OxJF)) « J;
6
Рис. 33.24. Вид заданной точки останова в исходном тексте программы
33.3.4. Мониторинг памяти и регистров
С-SPY позволяет производить мониторинг и модификацию встроенной па-
мяти и регистров ЦПУ, что дает возможность отслеживать динамику их со-
держимого в процессе симуляции. Для этого используются, прежде всего,
окна Memory и Disassembly. Окно Disassembly открывается после запуска
отладчика по умолчанию (см. рис. 33.14), а окно Memory можно открыть,
выбрав View>Memory. Выбор конкретной зоны памяти в этих окнах ото-
бражает ее содержимое, как показано на рис. 33.25, а.
Содержимое окна Memory доступно для редактирования как в его
шестнадцатеричной части, так и в части отображения ASCII-данных. Воз-
можно выделение курсором произвольных областей в окне и заполнение
их заданным содержимым. Возможна также установка точек останова не-
посредственно на адреса памяти, отображаемые в окне. В случае необходи-
мости одновременного контроля содержимого различных областей или зон
памяти пользователь может открыть сразу несколько окон Memory.
Окно Stack, открываемое из опции меню View, отображает содержи-
мое стека, показывая хронологию его заполнения (рис. 33.25, б). Это мо-
жет быть полезно при определении оптимального размера стека. С по-
мощью этого окна пользователь также может обнаружить переполнение
Goto 1
7FFFFFF4
7FFFFFF6
7FFFFFF8
7FFFFFFA
7FFFFFFC
7FFFFFFE
program_start.:
"80000000
,Я 'Memory
0000
0000
0000
0000
0000
0000
БР,РС{4]
_РС,РС[8]
0x20
R0,R0
RO,RO[О]
R0,R0[2]
[System HI J- ....- . . И
; Location; Data [Variable -Value i Fra
ox8o
+1 OxDO
+2 0X02
+3 OxSC
+4 0x00
+5 0x00
+6 0x00
+7 0x00
+8 OxOO
+9 0x00
+10 0x00
+11 0X00
| 80000002
:*" 80000004
80000006
80000008
8000000А
481D
482 Г
D080
0000
8000
01 АО
ysRejj
OebRefl
SRAM
FLASH
USBB.SLAVE
IOMODULESO
I0M0DULES1
I0M0DULES2
I0M0DULES3
I0M0DULES4
ACALL
ADD
LD.SH
LD.UB
m.in:
.booosgg?. :eb^p 11- Q
* ' л" -
snnnnnm inm unv pi n “
CCTIMER1 =3267
CCTIMER2 =3267
CCSTEP =3267
6
E-tression = Value
i fob
0x80004000
ACBA - 0x00000000
CYCLECOUNTER - 3267
Рис. 33.25. Окна отображения ресурсов МК, доступные при отладке
стека. Информация об этом содержится в горизонтальной полосе, рас-
положенной в инструментальной панели (сверху) окна Stack. В этой по-
лосе светло-серым цветом показана свободная память, используемая сте-
ком, темно-серым — занятая память, а зеленой чертой поверх светло- или
темно-серого фона — текущее значение указателя вершины стека. На-
стройка параметров этого графического индикатора производится в окне
IDE Options, открыть которое можно, выбрав Tools>Options>Stack. В этом
же окне можно задать автоматическую генерацию С-SPY предупрежде-
ния о переполнении стека или о заполнении стека сверх заданного поль-
зователем порога.
Окно Register (рис. 33.25, в), открываемое из опции меню View, ото-
бражает содержимое регистров ЦПУ и специальных регистров, а также по-
зволяет редактировать их. Нужную группу регистров можно выбрать из
раскрывающегося списка в инструментальной панели окна, как показано
на рисунке. При каждом останове симуляции значения регистров, изме-
нившиеся по сравнению с последним остановом, подсвечиваются красным
цветом. Содержимое некоторых регистров (отмеченных знаком «+») может
быть развернуто, чтобы показать содержимое индивидуальных битов или
подгрупп битов. Формат отображения содержимого регистров можно за-
дать с помощью установки Base в окне IDE Options, открыть которое мож-
но, выбрав Tools>Options>Register Filter.
В случае необходимости одновременного контроля содержимого раз-
личных групп регистров пользователь может открыть сразу несколько окон
Register.
C-SPY позволяет наблюдать переменные или выражения в исходном
тексте таким образом, чтобы можно было следить за их значениями в про-
цессе симуляции. Наблюдать переменную можно несколькими способами,
например, устанавливая «мышью» в окне исходного текста указатель или
открывая одно из окон Locals, Watch, Live Watch или Auto. Все эти окна
открываются через пункт меню View. В окне Auto отображаются текущие
значения недавно изменяемых выражений. Использование окна Watch пре-
доставляет следующий способ наблюдения переменных.
Выбрать View>Watch, чтобы открыть окно Watch. Для установки кон-
трольной точки на переменной кликнуть на пунктирном прямоуголь-
нике в окне Watch. В поле входа, которое появляется, напечатать имя
нужной переменной из программы и нажать клавишу ENTER. По мере
симуляции значения переменных в окне Watch будут меняться в соот-
ветствии с их изменениями в программе, как показано на рис. 33.25, г.
Чтобы удалить переменную из окна Watch, нужно выбрать ее курсором
и нажать Delete.
33.4. Отладка приложений в целевой системе
Отладчик C-SPY Debugger наряду с отладкой в режиме симуляции может
быть использован для отладки непосредственно в «железе», т. е. в составе
целевой системы, как описано в [11]. Отладка в целевой системе, в отличие
от чисто программной симуляции осуществляется не только с помощью
программного драйвера, но и с помощью аппаратного драйвера (кабеля),
обеспечивающего физическую связь с целевой системой. Используемая ав-
тором на момент написания этой книги версия IDE EWAVR32 поддер-
живала только один тип аппаратного драйвера C-SPY Debugger — AVR
JTAGICE-mkII.
В табл. 33.1 приведены сравнительные возможности отладки, предо-
ставляемые разработчику при использовании отладчиком драйверов симу-
лятора и AVR JTAGICE-mkII.
Структурная схема соединений для организации отладки в составе це-
левой системы показана на рис. 33.26. Кабель JTAGICE-mkII подключа-
ется к МК целевой системы через встроенный интерфейс JTAG. В начале
сеанса отладки пользовательское приложение по умолчанию загружается
во Flash-память МК, однако в случае необходимости эта процедура может
быть отменена.
Чтобы гарантировать корректное установление связи через JTAGICE-
mkII между отладчиком и целевой системой, рекомендуется следующий
порядок перехода к отладке.
1. Включение питания платы целевой системы.
2. Включение JTAGICE-mkII.
3. Запуск сеанса отладки C-SPY Debugger.
Перед запуском сеанса отладки в целевой системе необходимо задать
в проекте приложения установки, касающиеся отладки. На странице Run-
time категории General Options в поле JTAGICE mkll trase следует разре-
шить опцию Enable trase и задать размер буфера трассировки. Заданный
Табл. 33.1. Возможности отладки, предоставляемые драйверами C-SPY
Debugger
Возможности отладки Симулятор AVR JTAGICE-mkII
Точки останова в программе Неограниченное 6 или неограничен-
количество ное количество1
Точки останова в данных + —
Выполнение в реальном времени — +
Нулевой объем занимаемой памяти + +
Симуляция прерываний + —
Реальные прерывания — +
Счетчик циклов + —
Охват кода + —
Охват данных + —
Профилирование + +2
Трассировка +
1 Количество точек останова в коде программы может быть равно 6, если ис-
пользуются аппаратные точки останова, или неограниченно, если используются
программные точки останова.
2 Статистика счетчика циклов не доступна.
Рис. 33.26. Структурная схема отладки с использованием JTAGICE-mkII
буфер трассировки в дальнейшем будет указан в сегменте TRACEBUFFER
компоновщика.
Замечание автора. В используемой автором версии IDE EWAVR32
опция Enable trase была неактивна (рис. 33.27) и, таким образом, реали-
зовать трассировку при выполнении программы приложения в целевой
системе не удалось.
На странице Setup категории Debugger следует выбрать строку JTAGICE
mkll из раскрывающегося списка Driver (см. рис. 33.13).
На странице Setup категории JTAGICE mkll (рис. 33.28, а) опции из
области Download control позволяют управлять загрузкой пользовательской
программы в память МК целевой системы.
• Suppress download — эта опция используется, чтобы отладить прило-
жение, код которого уже находится во Flash-памяти МК целевой системы.
Рис. 33.27. Страница Runtime категории General Options
Когда эта опция выбрана, загрузка кода заблокирована, чтобы сохранить
текущее содержимое Flash-памяти. Если эта опция включена совместно
с опцией Verify download, то отладчик будет производить чтение кода из
Flash-памяти и проверять его идентичность отлаживаемой программе.
Если эта опция отключена, то при старте сеанса отладки код приложения
будет автоматически записан во Flash-память МК.
• Verify download — эта опция используется, чтобы прочитать загружен-
ный в память целевой системы код и проверить его идентичность отлажи-
ваемой программе.
При включенной опции Hardware reset on C-SPY reset C-SPY генериру-
ет начальный аппаратный сброс, когда отладчик начинает работу. Это дей-
ствие выполняется однократно перед загрузкой. По умолчанию эта опция
отключена, и С-SPY генерирует только программный сброс.
Замечание. Аппаратный сброс может стать источником проблем, если
в приложении не определяются установки нижнего уровня. Например, если
не производится конфигурирование памяти и синхронизации, то приложе-
ние после аппаратного сброса работать не будет. Эту ситуацию в C-SPY
обрабатывает макрофункция execUserReset().
Включение опции Enable software breakpoints разрешает использование
программных точек останова. По умолчанию используются только аппа-
ратные точки останова. Если их количество для отладки оказывается не-
достаточным, то можно задействовать программные. В этом случае про-
граммные точки останова будут использоваться вместо аппаратных.
Опция Log communication используется, чтобы протоколировать сеанс
связи между C-SPY и целевой системой в специальном журнале, нахо-
дящемся в файле cspycomm.log, по умолчанию расположенном в рабочем
каталоге.
Замечание. Чтобы интерпретировать результаты протоколирования, не-
обходимо детальное знание протокола связи.
Поле Connection задает порт компьютера хоста, используемый для связи
с целевой системой через JTAG (USB, С0М1, COM2..., СОМ32). По умол-
чанию используется порт USB. Для COM-порта в поле Speed указывается
скорость обмена.
Поле JTAG Port используется для конфигурирования порта JTAG. Оп-
ция Frequency этого поля задает тактовую частоту JTAG (Гц) и может быть
выбрана из раскрывающегося списка в диапазоне от 28000 до 3600000.
Слишком маленькое значение (меньше 28000) может вызвать задержки
связи. Слишком большое значение может привести к ошибкам во время
выполнения/чтения/записи.
Опция Target device is part of a JTAG daisy chain может быть использова-
на, если ЦПУ AVR32 не единственное устройство в цепочке JTAG. В этом
случае позиция ЦПУ может быть задана в полях этой же опции.
На странице Flash Loader категории JTAGICE mkll можно задать файл
загрузчика Flash-памяти, который будет использовать C-SPY при загрузке
кода в МК целевой системы.
Замечание автора. В данном проекте для страницы Flash Loader были
оставлены заданные по умолчанию значения, не предполагающие явного
Рис. 33.28. Страницы категории JTAGICE mkll
выбора загрузчика Flash-памяти (рис. 33.28, б). Тем не менее, код при-
ложения был корректно записан во Flash-память МК. Очевидно, в дан-
ной версии EWAVR32 отладчик при отсутствии явно заданного файла
загрузчика Flash-памяти использует его по умолчанию, исходя из МК
целевой системы, заданного на странице Target категории General Options
(см. выше).
Для запуска сеанса отладки следует выбрать в меню Project>Debug. Аль-
тернативно можно нажать кнопку Debugger в инструментальной панели.
Аналогично сеансу симуляции в дополнение к уже открытым окнам поль-
зователю теперь станет доступен набор специфических окон IAR C-SPY
Debugger, часть из которых при старте отладки откроется по умолчанию
Рис. 33.29. Сессия отладки в целевой системе
Tools- Window Help
Fife Edit Vji&w PrejecC Oebcg
; !AR Embedded Workbench IDE
I W-* Я
Рис. 33.30. Возможности отладки, поддерживаемые адаптером JTAGICE-
mkII
(рис. 33.29). Доступ к остальным окнам после старта отладки становится
возможен через опцию меню View. Подобно режиму симуляции в режиме
отладки действуют команды пошагового и непрерывного выполнения про-
граммы, сброса МК, возможен мониторинг и редактирование содержимого
регистров, памяти и т. д.
После перехода в режим симуляции в строке главного меню появит-
ся пункт JTAGICE mkll, содержащий опции, поддерживаемые адаптером
JTAGICE-mkII, как показано на рис. 33.30.
33.4.1. Трассировка при отладке
Как указывает производитель EWAVR32, С-SPY все-таки поддерживает воз-
можность трассировки приложения в целевой системе. Очевидно, речь идет
о другой версии продукта. Данные трассировки при этом будут поступать
в хост через JTAGICE-mkII. Однако в случае трассировки в целевой систе-
ме страница окна трассировки Trace, подобная показанной на рис. 33.17,
открывается путем выбора в меню JTAGICE mkll>rn*ace. При трассировке
в «железе» на странице Trace кроме порядковых номеров (индексов) и ас-
семблерных мнемоник команд отображаются также их адреса в памяти,
коды операции и дополнительная информация (комментарии). Инструмен-
тальная панель окна трассировки аналогична описанной выше.
33.4.2. Использование точек останова при отладке
При отладке в целевой системе С-SPY позволяет установить в програм-
ме до шести аппаратных точек останова или неограниченное количество
программных (опция Enable software breakpoints на странице Setup ка-
тегории JTAGICE mkll). Точки останова данных при отладке в целевой
системе недоступны. Порядок установки и настройки параметров точек
останова при отладке аналогичен порядку их установки и настройки при
симуляции.
Выбрав в главном меню JTAGICE mkII>Breakpoint Usage (см. рис. 33.30),
можно открыть диалоговое окно использования точки останова Breakpoint
Usage, показывающее все активные точки останова. В дополнение к списку
точек останова, определенных пользователем, в этом окне также отобража-
ются внутренние точки останова, которые использует отладчик. Для каж-
дой точки останова в списке показаны адрес и тип доступа, при этом ин-
формация о точке останова может быть развернута.
33.4.3. Возможные проблемы при отладке
Отладка с помощью C-SPY Debugger в целевой системе требует взаимо-
действия нескольких не зависимых друг от друга объектов. По этой при-
чине в процессе отладки могут возникнуть различные проблемы. В этом
разделе описаны наиболее типичные из этих проблем и указаны пути их
разрешения.
Наиболее часто встречающейся проблемой является отказ системы про-
изводить запись во Flash-память МК в ходе загрузки. Наиболее типич-
ная причина этого заключается в некорректной компоновке приложения.
В этом случае рекомендуется предпринять следующие действия:
• проверка содержимого командного файла компоновщика с целью
убедиться, что приложение не было скомпоновано с неправильным
адресом.
• проверка того, что используется корректный (соответствующий
типу МК целевой системы) командный файл компоновщика.
Следует заметить, что командный файл компоновщика по умолча-
нию автоматически задается в EWAVR32 при выборе МК целевой систе-
мы. Как уже было сказано, этот выбор производится по следующему пути:
Project>Options>General Options>Target>Device. Возможен и ручной выбор
командного файла компоновщика в последовательности, которая была
описана выше.
Другая типичная причина отказа в записи заключается в нарушении фи-
зического контакта или в неправильном подключении аппаратных средств
отладки. В этом случае следует проверить правильность соединения хоста
с кабелем JTAGICE-mkII, а кабеля — с отладочной платой целевой систе-
мы. Затем следует убедиться, что на отладочную плату подано питание.
Кроме того, следует проверить корректность задания установок драйве-
ра C-SPY Debugger по следующим путям: Project>Options>Debugger>Setup
и Project>Options>JTAGICE mkII>Setup.
Замечание автора: Когда эта книга уже готовилась к печати, появилась
информация о выходе новой версии IDE IAR EWAVR32 V3.10, поддержива-
ющей не только JTAG-адаптер JTAGICE-mkII, но и более «продвинутый»
JTAG-адаптер AVR ONE!, подробнее о котором рассказывается в следую-
щей главе.
ГЛАВА 34
IDE AVR32STUDIO
34.1. Общее описание
Программный пакет IDE AVR32Studio 2.0.2, который использовал автор
при написании этой книги, поддерживает разработку автономных (без
ОС) приложений для устройств семейств АТ32АР7000 и AT32UC3, а также
приложений под ОС Linux для устройств АТ32АР7000. AVR32Studio так-
же поддерживает все инструментальные средства производства Atmel, раз-
работанные для архитектуры AVR32, включая JTAG-адаптеры JTAGICE-
mkII и AVR ONE!, а также отладочные платы EVK1100, EVK1101, NGW100,
STK1000, STK1002 и STK600.
IDE AVR32Studio содержит законченный набор компонент в число ко-
торых входят:
• менеджер проектов с конкурентной системой версий (CVS),
• редактор языка C/C++ с поддержкой выделения синтаксиса и за-
вершенного кода,
• отладчик, поддерживающий управление пошаговым выполнением
на уровне команд исходного кода, а также точки останова,
• средства мониторинга регистров, памяти и подсистем ввода-вывода
МК,
• средства конфигурирования и управления целевой системой.
Как можно видеть из этого перечня, собственного компилятора С в со-
ставе AVR32Studio нет. По этой причине для компоновки и отладки про-
ектов AVR32Studio использует дополнительные программные инструмен-
тальные средства из пакета AVR32 GNU Toolchain (компилятор, отладчик,
компоновщик, набор необходимых вспомогательных программ и библио-
тек). Компилятор GNU С (GCC) используется в AVR32Studio для компиля-
ции и компоновки программ на C/C++, а отладчик GNU (GDB) — для от-
ладки приложения в целевой системе. Утилиты Atmel AVR32 (avr32program
и avr32gdbproxy) используются для развертывания и отладки автономных
приложений, а также для задания напряжения питания целевой системы
и корректировки синхронизации генератора. В ходе своего запуска на ком-
пьютере хоста AVR32Studio проверяет наличие этих программ и выдает со-
ответствующее сообщение об их наличии (рис. 34.1) или сообщение об
ошибке, если не находит их (рис. 34.2).
Таким образом, для обеспечения возможности подготовки в AVR32Stu-
dio исходных кодов на C/C++ на компьютер хоста необходимо установить
не только дистрибутив IDE AVR32Studio (файл AVR32Studio-2.x.x-Setup.exe),
но и дистрибутив AVR32 GNU Toolchain (файл avr32-gnu-toolchain-2.x.x.exe).
Fnvironmeni check result?
Г AVR32Studo has checked your system to ensure the proper redstarts of
-*> requited nt toes are in place»
aw32program: Found version 3.0.4
avr32flcfcproxy! Found version 3 <0.1 i
a^r, -jdb. Found version 6.7.1.atmeU.0,3
evr32-g++: Found version 4.2.2-atme,.i.D.S
avr32-gcc; Found version 4.2.2-etmel. 1.0 8
avr32-as: Found version 2Л 7.atmel.l ;2.6
avr32<m: Found version 2.17.atmel 1.2.6
Vou are ushg the MnGW verstor of the AVR32 Uttoes and AVR32/GMJ
Tocfchain.
Have Fun!
taaca^ardi ~1
Рис. 34.1. Сообщение AVR32Studio о наличии компонент AVR32 GNU
Toolchain
Рис. 34.2. Сообщение AVR32Studio об отсутствии компонент AVR32 GNU
Toolchain
Оба этих файла доступны для бесплатного скачивания на сайтах www.at-
mel.com, www.argussoft.ru. Пакет AVR32Studio предлагается для скачивания
в двух версиях: под ОС Linux и под ОС Windows.
Для увеличения своих функциональных возможностей AVR32Studio до-
пускает простую интеграцию с дополнительными программами сторонних
производителей.
При первом после инсталляции запуске AVR32Studio по умолчанию
открывается окно Welcome, из которого пользователь может ознакомить-
ся с особенностями функционирования всех элементов IDE при помощи
встроенной справочной системы. Окно Welcome можно также открыть, вы-
брав в главном меню IDE команду Help>Welcome.
34.2. Пользовательский интерфейс IDE
34.2.1. Основные понятия и определения
При работе в AVR32Studio используется понятие рабочая область
(Workbench). Каждая рабочая область содержит одну или более перспек-
тив. Перспективы, в свою очередь, содержат обозрения (View) и редакторы
(Editor), доступ к которым возможен через соответствующие меню и ин-
струментальные панели. В любой момент времени на рабочем столе может
существовать несколько окон рабочей области.
Для проектов, папок, и файлов, которые содержатся в рабочей области,
введен собирательный термин ресурсы. Навигационные обозрения обеспе-
чивают иерархическое представление ресурсов и позволяют открывать их
для редактирования. Другие инструментальные средства могут отображать
и обрабатывать эти ресурсы по-другому.
Каждому типу ресурсов, существующему в рабочей области, сопоставля-
ется определенный тип объектов из файловой системы компьютера хоста.
• Файлам сопоставляется файлы.
• Папкам сопоставляются каталоги в файловой системе. В рабочей
области папки содержатся в проектах или в других папках. Папки
могут содержать файлы и другие папки.
• Проекты содержат папки и файлы. Проекты используются для
компоновки, управления, совместного использования и организа-
ции ресурсов. Подобно папкам проекты сопоставляются каталогам
в файловой системе. Когда пользователь создает проект, он опре-
деляет местоположение этого проекта в виде каталога в файловой
системе.
Пользовательский проект может быть открытым или закрытым. Когда
проект является закрытым, он не может быть изменен в рабочей области.
Ресурсы закрытого проекта не будут появляться в окне рабочей области,
но, тем не менее, они будут содержаться в файловой системе. Закрытые
проекты требуют для хранения меньшего количества памяти. У закрытого
проекта по сравнению с открытым меньше время формирования.
Замечание автора. Под формированием проекта разработчики
AVR32Studio подразумевают компиляцию его компонент с последующей
компоновкой.
Когда проект является открытым, его структура может быть изменена
и пользователь может видеть его содержимое в рабочей области.
Папки и файлы могут быть связаны с местоположениями в файловой
системе вне местоположения проекта. Эти папки и файлы называются
в AVR32Studio связанными ресурсами.
Каждое окно рабочей области содержит одну или более перспектив.
Перспектива определяет начальный набор и размещение обозрений в окне
рабочей области. В пределах окна каждая перспектива совместно исполь-
зует один и тот же набор редакторов. Каждая перспектива предоставляет
пользователю набор функциональных возможностей, нацеленных на вы-
полнение определенного типа задач, или работает с определенными типами
ресурсов. Например, перспектива C/C++ объединяет обозрения, которые
обычно используются при редактировании исходных файлов, а перспек-
тива Debug содержит обозрения, которые используются при отладке про-
грамм. При работе с различными проектами в рабочей области пользова-
тель может производить переключение перспектив.
Перспективы могут содержать собственные меню и инструментальные
панели. Они определяют видимые наборы действий, которые пользователь
может задействовать, чтобы настроить перспективу. Для открытия нуж-
ной пользователю перспективы в окне рабочей области следует выбрать
в меню Window>Open Perspective. Чтобы увидеть список всех поддерживав-
Рис. 34.3. Окно открытия перспектив Open Perspective
мых перспектив, следует выбрать Window>Open Perspective>Other..., после
чего откроется окно Open Perspective, как показано на рис. 34.3. Когда пер-
спектива открывается, в области заголовка окна рабочей области появля-
ется название этой перспективы. Кроме того, на панели быстрого доступа
добавляется иконка, позволяющая быстро переключиться на предыдущую
перспективу, открытую в том же самом окне.
По умолчанию перспектива открывается в том же самом окне, что
и предыдущая. Если у пользователя имеется необходимость открывать ее
в новом окне, то следует выбрать в меню Window>Preferences, а затем вы-
брать General>Perspectives, после чего откроется окно выбора и настройки
перспектив Perspectives, как показано на рис. 34.4.
Обозрения поддерживают редакторы и обеспечивают альтернативные
представления, а также способы управления информацией в рабочих об-
ластях. Например, проводник проектов (Project Explorer) и другие навига-
ционные обозрения управляют отображением проектов и других ресурсов,
с которыми работает пользователь.
Рис. 34.4. Окно выбора и настройки перспектив Perspectives
Обозрения также имеют свои собственные меню. Чтобы сделать это
меню видимым, следует кликнуть на иконке в левой части области за-
головка обозрения. Некоторые обозрения также имеют свои собственные
инструментальные панели.
Обозрения можно отображать отдельно или стыковать с другими обо-
зрениями. Пользователь может изменять размещение перспективы, откры-
вая и закрывая обозрения и закрепляя их в различных позициях в окне
рабочей области.
Большинство перспектив в рабочей области состоит из области редак-
тора и одного или более обозрений. Пользователь может связать определен-
ный редактор с определенными типами файлов. Например, когда пользо-
ватель открывает файл для редактирования, дважды кликнув на его имени
в одном из навигационных обозрений, то связанный с ним редактор от-
крывается в рабочей области. Если для данного ресурса нет никакого свя-
занного редактора, то рабочая область будет пытаться запустить внешний
редактор, не входящий в данную рабочую область.
В каждый момент времени может быть открыто любое количество ре-
дакторов, но только один из них может быть активен. Область главного
меню и инструментальная панель окна рабочей области содержат иконки
операций, соответствующих активному редактору.
Позиции табуляции в области редактора указывают имена ресурсов,
которые в настоящее время открыты для редактирования. Звездочка (*)
у имени ресурса указывает, что редактор еще не сохранил произведенные
в ресурсе изменения.
Рис. 34.5. Вид окна рабочей области AVR32Studio с открытым по умолча-
нию окном Welcome
По умолчанию редакторы размещены в стеке в области редактора, но
пользователь можете выбрать их неперекрывающееся расположение, чтобы
рассматривать исходные файлы одновременно.
Поле слева от границы области редактирования в открытом для редак-
тирования окне файла может содержать значки, которые помечают ошиб-
ки, предупреждения или проблемы, обнаруженные системой. Значки так-
же появляются при создании пользователем закладок, добавления точек
останова или зарегистрированных примечаний.
Архив конкурентной системы версий (CVS) представляет собой по-
стоянную память данных, которая координирует многопользовательский
доступ к проектам и их содержанию. Проекты в архиве могут иметь две
формы: неизменный или поддающийся изменению. Связь между архивом
и клиентами рабочей области возможна по местным или глобальным се-
тям. В настоящее время рабочие области поддерживают два внутренних
опознавательных протокола CVS: pserver и ssh.
Вид окна рабочей области AVR32Studio показан на рис. 34.5. По умол-
чанию в нем открывается перспектива AVR32 C/C++.
34.2.2. Создание нового проекта
Первое, что следует сделать в начале разработки приложения AVR32, —
это создание нового проекта. Для этого в меню File окна рабочей области
следует выбрать опцию New..., а затем выбрать тип проекта, который пла-
нируется создать (AVR32 С Project, AVR32 C++ Project или AVR32 С Project
from a template), как показано на рис. 34.6. Если выбрать один из явно пред-
лагаемых в меню типов, то по умолчанию будет создаваться проект вида
Managed make, который не предусматривает самостоятельное управление
со стороны пользователя make-файлом проекта (см. ниже). При этом от-
кроется окно создания нового проекта (рис. 34.7), в котором необходимо
заполнить поля названия проекта, типа платформы (МК семейства AVR32)
и типа проекта.
AYR32CA11 AVR32 Studio
Edit Navigate Search Run Praje t Franvwofk Window Help
gf AVR32 C++ Project
AVR32 C Project From Template
I ГЗ Project...
Example...
Convert Line OirMers To
Г j Other...
Switch Workspace
: Source Folder
" Folder
5cu-ceF«e
Header Fie
Рис. 34.6. Порядок создания нового проекта
Рис. 34.7. Окно создания нового проекта
При создании нового проекта на языке С в меню выбирается цепочка
File>New...>AVR32 С Project. В открывшемся окне вводятся имя проекта
и тип МК AVR32. При выборе типа проекта для семейства AT32UC3 мо-
жет быть выбран только тип AVR32 Standalone Executable (автономная ис-
полняемая программа). Для семейства АТ32АР7 помимо этого могут быть
выбраны различные типы проектов для ОС Linux: AVR32 Linux Shared Li-
brary, AVR32 Static Library или AVR32 Linux Executable.
При создании нового проекта на языке С на базе шаблона в меню вы-
бирается цепочка File>New...>AVR32 С Project from a template. Далее в от-
крывшемся окне вводятся имя проекта и тип МК AVR32, а также из пред-
лагаемых списков выбираются тип проекта (шаблона) и доступный для
этого типа программный инструментарий.
При создании нового проекта на языке С на базе примера в меню
выбирается цепочка File>New...>Project...>Examples. Далее в открывшемся
окне в папке Examples из предлагаемого списка можно выбрать пример,
Рис. 34.8. Создание нового проекта на языке С на базе примера
Рис. 34.9. Окно выбора рабочей области
на базе которого планируется создать проект, как показано на рис. 34.8.
Затем следует кликнуть на кнопке Next, после чего вводится имя проекта.
При выборе примера автоматически производится и выбор аппаратной
платформы, поскольку каждый из предлагаемых примеров сопоставлен
в списке конкретной платформе (МК и отладочной плате производства
Atmel).
В заключение создания проекта любого типа необходимо кликнуть на
кнопке Finish. После этого на жестком диске компьютера будет создан ка-
талог с выбранным именем проекта. Путь к такому каталогу может быть
задан или изменен пользователем при каждом новом запуске AVR32Studio
в окне выбора рабочей области (рис. 34.9). В этот каталог можно помещать
исходные файлы проекта (исходные тексты, заголовки и т. п.) и открывать
их в окне редактора AVR32Studio, выбирая в меню File>Open File и исполь-
зуя соответствующие перспективы. Как уже упоминалось, AVR32Studio
обеспечивает поддержку редактирования кода, написанного на C/C++. Ре-
дактор C/C++ запускается автоматически, когда пользователь открывает
для редактирования исходный файл на C/C++. При необходимости можно
изменить заданные по умолчанию настройки редактора, выбрав в меню
Window>Preferences, а затем C/C++>Editor.
34.3. Работа с проектами в IDE
34.3.1. Системы формирования проектов
Каждый вновь создаваемый проект должен быть сформирован.
AVR32Studio предлагает две системы формирования. Первая из них на-
зывается системой управления формированием (MBS) и имеет два опера-
ционных режима: внутреннее (непосредственное) формирование (Internal
build) и управление формированием (Managed make). Режим Managed make
автоматически создает make-файл для формируемого проекта, используя
задаваемые пользователем параметры настройки формирования. Этот ре-
жим требует указания пути к утилите Маке. Последняя будет также ис-
пользовать задаваемые параметры настройки формирования. При этом
все команды toolchain выполняются непосредственно. Указанный режим
является наиболее типичным и задается по умолчанию. Именно этот ре-
жим используется при создании проектов с помощью мастеров проек-
та С Project Wizard и C++ Project Wizard (две верхние позиции в меню
File>New... на рис. 34.6).
Рис. 34.10. Создание проекта с непосредственным формированием
В случае, если создается проект с непосредственным формировани-
ем, эти мастера проекта уже не применяются. Создание такого проекта
производится путем выбора в меню File>New...>Project... с последующим
выбором нужного мастера проекта, как показано на рис. 34.10. Например,
для проектов на С и C++ можно выбрать мастера проекта с управлени-
ем формированием (AVR32 С Project, AVR32 C++ Project) или с непо-
средственным (простым) формированием (AVR32 С Project(Make), AVR32
C++ Project(Make)). При этом необходимо учитывать, что в последнем
случае некоторые примеры из архива AVR32-SoftwareFramework для МК
AT32UC3B работать не будут, поскольку они требуют разрешения управ-
ления формированием.
34.3.2. Запуск формирования
Конечным результатом формирования (компоновки) проекта является дво-
ичный файл с расширением elf, который по умолчанию создается в одной из
автоматически создаваемых AVR32Studio папок Debug или Release данного
проекта. Старт формирования проекта производится путем выбора в меню
Project>Build Project или нажатием на клавиши Ctrl+B, когда позиция та-
буляции данного проекта выбрана курсором в окне обозрения проводника
проектов, содержащихся в рабочей области (Project Explorer). Ход процесса
формирования будет отображаться графической шкалой, как показано на
рис. 34.11. Результаты формирования и возможные проблемы можно видеть
Рис. 34.11. Ход процесса формирования проекта
^'Ta5ki i Problem Й’ f1 ’ “ '□
• BukifDJP “ " ” ~ ' ~ ~ ’ • ' ' * ‘-----
«»»• Build of configuration Debug for project DIP ««*»
* *** Internal Builder 13 used for build »»«»|
• vr32-gcc -DEOARD-EVKllOO -1..fsrc/SOFTVARE_FRANEWORK/DRIVERS/PM -I../src/SOFTWARE_FRAKEWORK/DRIVERS/CPU/CYCLE COUNTER
-I../src/SOFTTJARE_FRAMEUORK/SERVICES/DELAY -I../src/SOFTWARE_FRAHEWORK/COMPONENTS/DISPLAY/DIP204
-I. ./src/SOFTWARE_FRAMEWORK/DRIVERS/SPI -1. . /src/SOFTWAREFRAHEWORK/DRIVERS/PWM
-I../srс/SOFTWARE_FRAMEWORK/D RIVERS/INTC -1../srс/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO -I../src/SOFTWARE_FRAMEWORK/UTILS -I../src/SOFTWARE_FRAMEWORK BOARDS -00
-fdate-sections -g3 -Wall -c -fmessage-length»O -march-ucrZ -mpart“uc3aOS12 -ffunction-sections -osrc\dip204_example.o
..\src\dip204_example.c
avr32-gcc -march=uc -Wl,—gc-sections -Wl,-e,_trampoline -mpart=uc3a0512 -Wl,—gc-sections -oDIP204_EXAMPLE.elf
,src\dip204_example,о src\SOFTYARE_FRAMEIfORK\SERVICES’^DELAYXdelay.о src\SOFTWARE_FRAMEWORK\DRIVERSXSPI\spi.о
src\ SOFTWARE_FRAMEWORK\ DRIVERS’^ PWM\ pWM. о src\ SOFTWARE_FRAHEWORKX DRIVERSX PHX pm_conf_c locks. о
JsrcXSOFT¥ARE_FRAMEWORK\DRIVERS^ PM\pm.о stc\SOFTWARE_FRAMEWORK\DRIVERSXINTOintc.о
jsrc\SOFTWARE^ RAMEWORKX DFIVERSXINTCX exception.о lrc\5OFTWARE_FRAMEWORKS DRIVERSX GPIO\gpio.о
|src\SOFTWARE_FRAMEWORKX COMPONENTSX DISPLAYX DIP204Xdlp204.0 src\SOFTWARE_FRAMEWORK\BOARDSX EVK1100Xled.О
'src\SOFTWARE_FRAMEWORK\ASMS trampo1ine. о
Build complete for project DIP
Time consumed: B594 ms.
______________________________________*
i
i
i
i
Рис. 34.12. Результаты формирования и возможные проблемы
соответственно в окнах Console и Problems обозрения перспективы Debug,
как показано на рис. 34.12.
При старте формирования AVR32Studio по умолчанию автоматиче-
ски сохранит файлы проекта. Если это по каким-то причинам нежела-
тельно, можно отказаться от автоматического сохранения, выбрав в меню
Window>Preferences, а затем General>Workspace, где отключить опцию Save
automatically before build.
34.3.3. Управление целевой системой
В общем случае, при разработке приложений на базе МК целевая система
состоит из трех компонент: адаптера, отладочной платы и собственно МК.
В нашем случае в качестве адаптера используется JTAG-адаптер JTAGICE
mkll. Он связывает компьютер хоста с МК и позволяет выполнять про-
граммирование и/или отладку команд в последнем. Отладочная плата
представляет собой аппаратную платформу, содержащую МК с аппарат-
ной «обвеской», а также (опционально) внешнюю память, которая может
использоваться МК.
Самый простой способ задания (или добавления к уже заданным)
новой целевой системы состоит в использовании
встроенной в AVR32Studio функции автоматическо-
го поиска целевой системы. Для этого нужно вы-
брать в меню Window>Show view >(Other...>AVR32
Development)>AVR32 Targets (рис. 34.13), после
чего откроется окно целевых систем AVR32 Targets
(рис. 34.14). Кликнув в нем правой клавишей мыши,
следует запустить функцию Scan Targets из контекст-
ного меню, показанного на рисунке. Предваритель-
но JTAG-адаптер и отладочная плата должны быть
подключены к компьютеру с подачей на них пита-
ния. Когда AVR32Studio обнаружит подключенную
к компьютеру целевую систему, предварительная ин-
формация о ней отобразится в окне AVR32 Targets,
как показано на рис. 34.15. В случае отсутствия под-
Рис. 34.13. Окно вы-
бора обозрений Show
view
.«кмI ™d«-Arr Board P4U
[ Remove Delete
Properties Enter
Scan Targets
Рис. 34.14. Окно целевых систем AVR32 Targets
+ AVR32 Targets 2$
Name Adapter Board = MCU
►* aURj2 Simulator AVR32 Simulato AVRSk Smulatar UC3
Ш JTAGICE mkll JTAGICE mkll
Рис. 34.15. Предварительная информация об обнаруженной целевой системе
ключенной целевой системы AVR32Studio считает таковой программный
симулятор, информацию о котором отображает в окне, как показано на
рисунке. Пользователь может также вручную добавить в список новую це-
левую систему, кликнув на кнопке Creates a new target в меню окна AVR32
Targets. Свойства (компоненты) целевой системы из списка можно про-
смотреть и отредактировать, поместив на ее позицию в окне курсор и на-
жав на клавишу Enter. При этом откроется окно Properties, как показано
на рис. 34.16. Следует заметить, что в случаях автоматического обнару-
жения или ручного создания подключенной целевой системы необходимо
вручную заполнить поля Board, MCU и MCU clock sourse страницы Board
окна Properties соответствующими корректными значениями. После за-
полнения указанных полей окно AVR32 Targets примет вид, показанный на
рис. 34.17. Примечательно, что среди предлагаемых вариантов заполнения
поля Board помимо отладочных плат производства Atmel имеется вариант
Any Board, который, очевидно, предусматривает подключение к адаптеру
отладочной платы сторонних производителей.
Конфигурирование целевой системы описанным образом необходимо
произвести до ее использования.
В зависимости от конфигурации имеющейся целевой системы AVR32Studio
поддерживает выполнение с ней различных операций (запись, чтение, ве-
рификация, стирание и т. д.). Все доступные для данной целевой системы
операции отображаются в ее контекстном меню, как показано на рис. 34.18.
Меню активизируется при клике правой кнопкой мыши на позиции целевой
системы в окне AVR32 Targets. Если целевая система определена как задан-
ная по умолчанию, то к ее контекстному меню можно также обратиться,
используя кнопку заданного по умолчанию действия из меню окна AVR32
Рис. 34.17. Скорректированная информация о настроенной целевой системе
Targets. Как можно видеть из рисунка, помимо стандарт-
ных для любого отладчика операций (программирование,
чтение, верификация, стирание) адаптер JTAGICE mkll
предоставляет пользователю набор дополнительных опера-
ций: чтение регистрового файла ЦПУ (Read General Regis-
ters), чтение информации о ЦПУ (Read MCU Info), чтение/
запись fuses-установок МК (Read Fuses.../Program Fuses...),
установка защиты Flash-памяти МК (Secure Flash), стира-
ние всего кристалла МК (Chip Erase) и т.д. При выборе
какой-либо операции отрывается диалоговое окно задания
параметров и опций этой операции. Вид такого окна для
операции программирования показан на рис. 34.19.
Ход выполнения операции отладчика, производимой
в данный момент над целевой системой, отображается гра-
фической шкалой, например, как показано на рис. 34.20.
Следует заметить, что у используемого автором ком-
плекта JTAGICE mkll и платы EVK1101 попытки выполне-
Program...
*Read..
: ^Verfy ,.
; 4*Erase
Read General Registers
Secue Flash
Halt
| Reset
Resume
Resume Pram >
Read Fuses...
Program Fuses...
CNpE-ase
Read MCU Info
Upgrade Rrt ware
Set as Default
Per h a. Delete
. Properties Enter
: Scan Targets
Рис. 34.18. Опе-
рации, доступ-
ные для данной
целевой системы
ния последовательно нескольких различных операций, например, «чтение,
запись, чтение» fuses-установок МК, зачастую приводили к появлению со-
общений об ошибке JTAG. Иногда нужные операции удавалось произвести
корректно только в случае «холодного» перезапуска JTAGICE mkll перед
каждой из них.
34.3.4. Работа с fuses-установками МК
В AVR32Studio fuses-установки, которые предполагается записать в МК
целевой системы, могут храниться в файлах, входящих в проекты. Поль-
Рис. 34.19. Вид окна опций программирования МК целевой системы
Рис. 34.20. Ход выполнения текущей операции отладчика
зователь может создать файл fuses-установок, используя мастер настройки
fuses-установок. Для открытия окна мастера необходимо выбрать в меню
File>New>(Other...>AVR32)>Fuse Settings (рис. 34.21), после чего откроется
окно New fuse Settings, как показано на рис. 34.22. В окне следует сначала
выбрать проект, куда должен быть помещен файл fuses-установок, а потом
в поле File name напечатать имя этого файла, задав ему расширение fuses.
Затем нужно выбрать МК целевой системы (MCU), для которого будут
задаваться fuses-установки, и кликнуть на кнопке Finish. После этого от-
кроется окно редактора содержимого созданного файла fuses-установок,
как показано на рис. 34.23. Содержимое полей этого окна доступно для
редактирования. Сохранить файл можно, выбрав в меню File>Save. По-
следующее открытие файла fuses-установок для редактирования произво-
дится путем выбора в меню File>Open File. Запись созданного файла fuses-
Рис. 34.21. Открытие редактора файлов fuses-установок
Рис. 34.22. Окно New fuse Settings
U(" В02'"-'ES fuse settings
№01“ Brown Out Ooteetor ЕпаЫе
Speofi' s the brown out detector mode.
О BOD dsabled
О BOD en-Ned, В D reset nabted
О BOD enabled, BOD reset disat'eJ
О BOD (bailed
ВЮ l.Vff Brown й Л Ortertor Trigger levrf
Th : controls *he voltage trigger level for the brown
out detector.
D tecta tngge» level: Г 0x0
tKMJf VST Bi own Out Detector Hysteresis
Enables or disables the brown out detector hysteresis.
] Enable Р00НУ5Т
BODTPR1 >1 Bur 11 rader Area
Used to select a efferent bootloader size. Pages
ndu > I n the bootload и • rea can net be erased or
programm d except by a JTAG chip erase. BOOTPROT
can only be changed when the security I it is cleared.
Bootloader size: 0
ЬР benerai purpose
General pu pose rats 31. .29.
Value: ' 0x0
f.Ofl? Region lock Hit s
The flash block has p pages, and these pages are
grouped into 16 lock regions, each regnn containing
p/16 pag is. Each region has a dedicated lock bit
pt s' i tirgtiriK-aa-di "jsing pages ir the region
Lock bft mask.* fijxO
; tprt External Priv leged Fel I rh lock
Used to prevent the CPU from fetch ng nstructlcns
from external memories when m prn ileged m >de. If the
secur ty bit is set, only an external JTAG Chip Era>e
can dear EPFL.
□ Enable EPFL
Рис. 34.23. Окно редактора файла fuses-установок
установок в МК целевой системы осуществляется операцией отладчика,
описанной в предыдущем разделе.
В окне Fuse Settings можно также отобразить действующие значения
fuses-установок, записанные в МК целевой системы. Содержимое окна
редактора при чтении будет модифицировано действующими значениями
fuses-установок, если чтение производится в открытый в этом окне файл.
В общем случае значения fuses-установок могут быть активированы
двумя способами: путем соответствующих изменений в конфигурации за-
пуска или путем использования контекстного меню целевой системы.
Ниже показано типичное содержимое файла fuses-установок:
#Mon Sep 01 21:03:06 MSD 2008
BODEN=Ox3
BODHYST=0xl
MCU=UC3B0256ES
GP=0x3
EPFL=0xl
BOOTPROT=Ox3
LOCK=0xffff
BODLEVEL=0x0
34.4. Отладка приложения
34.4.1. Конфигурирование запуска
Поддерживаемые AVR32Studio возможности по конфигурированию запу-
ска программы приложения в целевой системе позволяют задавать опции
запуска отладки (Debug) или выполнения (Run) этой программы. Запуск от-
ладки может использоваться с целью подключить отладчик GDB к целевой
системе и осуществить трассировку, в то время как запуск выполнения
инициирует простое выполнение бинарного файла «прошивки» в МК це-
левой системы. Диалоговое окно задания опций запуска отладки откры-
вается при выборе в главном меню Run>Open Debug Dialog... (рис. 34.24),
а диалоговое окно задания опций запуска выполнения — в Run>Open Run
Dialog... (рис. 34.25).
Конфигурация запуска отладки/выполнения включает в себя четыре
раздела:
• главная конфигурация,
• конфигурация отладчика,
• конфигурация трассировки,
• общая конфигурация.
Каждому из этих разделов в диалоговом окне задания опций запуска
отладки/выполнения посвящена отдельная страница. Для того чтобы эти
страницы стали доступны, необходимо сначала задать приложение для от-
ладки/выполнения. Для этого следует выбрать курсором тип приложения
в левой части окна, как показано на рис. 34.24, рис. 34.25, а затем клик-
Рис. 34.24. Диалоговое окно опций запуска отладки
Рис. 34.25. Диалоговое окно опций запуска выполнения
нуть на иконке New launch configuration инструментальной панели окна.
При этом создастся новая конфигурация запуска отладки/выполнения, для
которой откроются страницы конфигурации, как показано на рис. 34.26.
Возможно также открытие страницы конфигурации запуска отладки/вы-
полнения для уже созданного проекта. Для этого нужно предварительно
выбрать курсором его позицию табуляции в окне проводника проектов
Project Explorer.
Первая страница в диалоге конфигурации запуска Maim содержит глав-
ные параметры настройки. Здесь пользователь должен определить конфи-
гурацию запуска для проекта, тип двоичного файла, который должен быть
загружен в целевую систему, а также проводник запуска, который будет
использоваться.
Обычно доступен только один проводник запуска. Какой именно, за-
висит от конфигурации целевой системы. Большинство полей страницы
главной конфигурации будет автоматически заполнено, если проект или
проектный файл выбран, когда конфигурация запуска уже создана.
Задание главной конфигурации производится в следующем порядке.
Сначала следует выбрать проект в поле Project. Затем выбирается elf-файл
в поле File. Необходимо заметить, что сначала всегда должен быть выбран
проект. Если страницы конфигурации запуска отладки/выполнения от-
крыты для уже созданного проекта, то содержимое этих полей заполняется
автоматически. После этого в поле Target выбирается используемая целевая
система. В заключение выбирается проводник запуска в поле Launch pro-
vider (рис. 34.27).
Поле Options страницы Maim содержит ряд опций задания/отмены
действий, которые отладчик будет производить при запуске. Это, на-
пример, стирание Flash-памяти перед ее программированием, ее ве-
рификация после программирования, сброс ЦПУ после программиро-
Рис. 34.26. Создание новой конфигурации запуска отладки/выполнения
Рис. 34.27. Страница конфигурации Maim
вания и т. д. Значения этих опций задаются в требуемой пользователю
конфигурации.
Поле Fuse settings позволяет задать файл fuses-установок и момент
их программирования в МК — до или после программирования Flash-
памяти.
Страница конфигурации отладчика Debugger (рис. 34.28) содержит
параметры настройки отладчика. Производитель не рекомендует изме-
Create, manage, and run configurations
Debug
.. Ж
Sams; :PWM
<£ PWM
' it AVR32 Linux Appkat'on
FT C/C++ Attach to Local App ’
ЯП C/C++ Local Application
13 4 AVR32 AppkaLon
GPIO
J uownon i Trace j
i GOB proxy cwpanci:'
-SM proxy hosts
> GE® proxy port*
? СЙВ proxy trace pert* 4712
US W оз startup at; male,
f Verba® mode
avr32gdbproxy
Feer matched 9 uf 9 Items
Рис. 34.28. Страница конфигурации Debugger
нять заданные по умолчанию опции этой страницы. Необходимо от-
метить, что если пользователь выполняет одновременно больше, чем
один сеанс отладки, то он должен соответствующим образом изменять
номер порта таким образом, чтобы порты не вступили в конфликт друг
с другом.
Страница общей конфигурации Common (рис. 34.29) используется для
задания общих параметров конфигурации запуска. Они одинаковы для
всех типов конфигурации запуска.
Страница конфигурации трассировки Trace (рис. 34.30) содержит па-
раметры настройки трассировки. Чтобы разрешить трассировку, поль-
зователь должен включить опцию Enable trace. Кроме того, необходимо
выбрать используемый метод трассировки из двух имеющихся: NanoTrace
и Auxiliary Trace. Метод трассировки Auxiliary Trace поддерживается только
адаптером AVR ONE! и в случае его использования приложение в целевой
системе выполняется на полной скорости. Метод трассировки NanoTrace
поддерживается как адаптером AVR ONE!, так и JTAGICE mkll, однако
его использование влечет за собой значительное замедление выполнения
приложения. Необходимо заметить, что разрешение (enabling) трассиров-
ки не производит ее запуск (start). Запуск трассировки производится из
обозрения трассировки или посредством задания точки трассировки, как
будет показано ниже.
В наборе опций AUX Trace options опция Buffer size используется для
задания, какая часть памяти отладчика должна использоваться для буфера
трассировки. Необходимо иметь в виду, что если это значение является
очень большим, то по окончании трассировки ее буфер будет содержать
огромное количество данных трассировки, что может привести к зависа-
нию компьютера.
Рис. 34.29. Страница конфигурации Common
Рис. 34.30. Страница конфигурации Trace
Если используется метод трассировки NanoTrace, то буфер трассиров-
ки должен быть задан в RAM и должен иметь размер не менее 1к. Есть
три способа задать этот буфер. Если в elf-файле имеется сегмент NANO-
TRACE, то он может использоваться для указанной цели. Пользователь
может также объявить переменную NANOTRACE, которая также до неко-
торой степени определит буферную зону или может определить местопо-
ложение буфера самостоятельно. Приведенный ниже код объявляет такую
переменную:
char NANOTRACE[1024] __attribute__((used)).
Все перечисленные возможности реализуются с помощью набора опций
поля Nano "Пасе options:. Кликнув на кнопке Detect, пользователь может
добиться этим автоматической модификации выбранного elf-файла таким
образом, чтобы задать в нем буфер размером 1024 байта, расположенный
под областью стека (см. рис. 34.30).
В случае заполнения буфера трассировки пользователь может предпри-
нять следующие действия, чтобы предотвратить потерю данных и другие
негативные последствия (это относится как к буферу AVR ONE!, так и к бу-
феру NanoTrace в RAM):
• отключение трассировки, продолжение выполнения программы
в целевой системе;
• пауза в трассировке, чтение данных трассировки и останов;
• пауза в трассировке, чтение данных трассировки и продолжение
выполнения и трассировки;
• использование режима wrap-буфера, что дает возможность произ-
вести копирование буфера без его чтения до останова выполнения.
Рис. 34.31. Процесс перехода в режим отладки/выполнения
Пользователь также может отслеживать доступ к данным трассиров-
ки в двух диапазонах (Data trace range 1 и Data trace range 2), как пока-
зано на рис. 34.30. Для каждого из диапазонов должен быть определен
тип доступа и адресный интервал. Используя кнопку поиска (...), мож-
но выбирать из списка глобальные переменные, обнаруженные в elf-
файле.
Запуск сеанса выполнения или отладки приложения производится
с помощью команд главного меню Run>Run или Run>Debug соответствен-
но. Процесс перехода в режим выполнения или отладки отображается
графической шкалой, как показано на рис. 34.31. При переходе в режим
отладки AVR32Studio выдает предложение автоматически открыть пер-
спективу отладки Debug. После начала сессии отладки в этой перспективе
в главном меню становятся доступными команды, связанные с пошаго-
вым выполнением программы в целевой системе (Step Into, Step Over, Step
Return), и команда завершения сессии отладки (Terminate), как показано
на рис. 34.32.
Рис. 34.32. Сессия отладки при открытой перспективе Debug
3 4.4.2. Работа с точками трассировки
Под точками трассировки (tracepoints) понимается адрес в памяти или гло-
бальная переменная в исходном файле, при осуществлении заданного типа
доступа к которым происходит заданное событие, связанное с трассиров-
кой: старт/стоп трассировки или генерация сообщения трассировки.
Точки трассировки могут быть установлены в двух различных обозрени-
ях. При редактировании кода в редакторе C/C++ пользователь может доба-
вить строку точки трассировки, нажав на нужной строке кода Ctrl+Alt+T.
При этом откроется окно настроек, содержащее меню настройки Tracepoint,
как показано на рис. 34.33. Та же самая операция будет выполнена, если
в обозрении Disassembly ввести адрес точки трассировки. Строка исходного
теста, на которой создана точка трассировки, будет индицироваться в окне
редактора квадратиком в левом поле, как показано на рис. 34.34. Нажатие
Ctrl+Alt+T на строке, где уже существует точка трассировки, приведет к ее
удалению. Пользователь может также получить доступ к меню Tracepoint из
вертикальной линейки редактора C/C++ или редактора ассемблера, клик-
нув на значке созданной точки трассировки, как показано на рис. 34.34.
По умолчанию вновь созданная точка трассировки будет заблокирова-
на. Чтобы изменить ее состояние на разрешенное, необходимо в меню на-
стройки Tracepoint задать опцию Tracepoint is enabled. Опции поля Trigger
event используются для задания события, вызывающего срабатывание точ-
ки трассировки:
• Program counter — срабатывание по достижению содержимого про-
граммного счетчика (PC) адреса, содержащегося в файле, указан-
ном в поле Digger start location.
• Data read — указанный адрес или глобальная переменная читались
программой.
Рис. 34.33. Окно настроек параметров точки трассировки
«.r^. ' _ >ЁЩ.
pwm_opt.prea = AVR32_PHH_PREA_MCK"
pwm_opt.preb - AVR32_PiiM_PREB_HCK;
pwm_init [£pwm_cpt)
pwtn_channel.CMR.calg - P¥H_MODE_LEFT_ALIGNED; // Channe' ,rr
pvm_channel.CMR.cpol = PbJM_POLARITY_LOGI; J/ Channel pc
pwm_channel. "HR. cpd = PHH_UPDATE_DUTY; { 4at used
pwm_channel.CHR.cpre = AVR32_P JM_CPRE_MCK_PIV__256; П Channel pj
pwm_channel.cdty = 5; .’hannel duty crcle. should be < CPRD.
pwm_channel.cprd • 20; Cbai-nel period.
p4in_channel.cupd “0; и Channel update is not used here.
I's h these settings, the output ”avef rn period wijf he :
/ {115200/256^ -J 22<^Hz .МСК/prescaler) period, with ИСК
if prescaler «=• 256, period -=" 20
pwm_channel_init (channel_id, 4pwi_channe 1); '/ Set channel confit I
Tog^e Ueakp~nt
Disable Breakport
Brejkptrt Prope>t<s... i —
Г ‘ 41 ' #
Disable Traceport
Remove Tracepor t —
• Tracepoint Properties...
. Add Bookmark...
Add Task...
✓ Sh~v Quick Dff Ctrl+Shft+Q
> Show Line Numbers
; Preferences...
Рис. 34.34. Задание точки трассировки в окне редактора исходного текста
• Data write — указанный адрес или глобальная переменная были за-
писаны программой.
• Data access — указанный адрес или глобальная переменная чита-
лись или были записаны программой.
Если в качестве триггера выбрано одно из событий данных, то ста-
новится активной опция Range. Используя ее, можно выбрать диапазон
адресов или переменных, доступ к которому вызовет событие, связанное
с трассировкой.
Если в поле Trigger location задана опция Location, то событие трас-
сировки может быть вызвано по результату сравнения значения триггера
трассировки с байтовой маской или заданным значением.
Поле Tracepoint type используется для задания вида трассировки.
Как трассировка данных, так и трассировка программы могут быть за-
пущены триггером трассировки. Когда задана трассировка данных, поль-
зователь может также задать, какая область памяти подлежит трассировке.
Это может быть сделано с помощью кнопки Broundaries..., после клика на
которой откроется диалоговое окно задания опций запуска.
Поле Trace operation используется для задания операции трассировки,
автоматически выполняемой при срабатывании точки трассировки. Об опе-
рации трассировки, ранее заданной для каждой установленной точки трас-
сировки, пользователь может судить по значку ее обозначения в верти-
кальной линейке редактора. Так, простой синий квадратик указывает на
то, что срабатывание данной точки вызовет только генерацию сообщения
трассировки. Синий квадратик с красным кружком (см. рис. 34.34) — за-
пуск трассировки программы или данных при срабатывании, двойной (си-
ний и серый) квадратик — останов трассировки программы или данных
при срабатывании, а синий квадратик с белым внутри — отключенная
точка трассировки.
34.4.3. Мониторинг регистров
Для открытия обозрения регистров МК целевой системы нужно выбрать
в меню Window>Show view>(Other...)>AVR32 Registers, после чего откроется
окно AVR32 Registers, как показано на рис. 34.35. Обозрение регистров по-
зволяет производить мониторинг всех регистров и битовых полей из области,
используемой в активном проекте или принадлежащей текущему сеансу от-
ладки. Текстовое поле Find в окне этого обозрения используется для ввода
ограничений поиска. Вводимый пользователем в этом окне путь к регистру
или битовому полю должен начинаться с символа «/». Например, в результате
ввода комбинации /pioc отобразятся содержимое и параметры всех регистров
модуля РЮС МК. Ввод комбинации /pioc/odsr отобразит содержимое и па-
раметры только одного регистра ODSR из модуля РЮС. Если вместо этого
пользователь введет только комбинацию odsr, будут отображены все регистры
с таким именем независимо от модуля, к которому они принадлежат.
Развернуть дерево отображения регистров вплоть до отображения бито-
вой структуры каждого регистра можно с помощью клавиш tab и Enter.
Помимо задания пути к регистру с помощью символа «/» возможен
поиск регистра по его адресу в адресном пространстве памяти МК. Вводи-
мый при запросе адрес всегда должен начинаться с префикса Ох.
Ввод в поле Find любой комбинации символов, не содержащей символа
«/» и префикса Ох, приведет к запуску поиска регистра по его мнемониче-
скому имени.
Помимо мониторинга возможно также редактирование содержимого
регистров. Выбрав курсором позицию нужного регистра, можно редакти-
pebu<;alngses>ionpWM((jC3eo<56ES)
Find:
Register. Address
sBCONFIGO 0x00000100
CONF1G1 0x00000104
DA55 bits [2.0]
DL5Z b*s[5..3]
DMMUSZ bits [25..20]
l ::,П5Ц .
Register : Arid es<-
•ystem ’ ОхЫШйТос "
DsscrtoKwi
Configuration Register 0
Configuration register 1
Associativity of DCACHE
Line see in CCACt£
DMMUSize
Number, of Ip t> nrafHF
V4ue Pre .rous
e 3
<-
.Descriptor
mfare.-el
Рис. 34.35. Окно обозрения регистров МК AVR32 Registers
Рис. 34.36. Окно обозрения регистрового файла ЦПУ Registers
ровать содержимое его битов. Двойной клик на позиции регистра в дереве
его отображения или нажатие клавиши Enter приведет к вызову редактора,
как показано на рис. 34.30. Значения отображаемых регистров будут мо-
дифицироваться на новые всякий раз при приостановке ЦПУ. Только что
модифицированные значения выделены красным цветом.
Для открытия обозрения регистрового файла МК целевой системы
нужно выбрать в меню Window>Show view>(Other...)>Registers, после чего
откроется окно Registers, как показано на рис. 34.36. Только что модифи-
цированные значения регистров выделены желтым цветом.
34.4.4. Обозрение трассировки
Окно обозрения трассировки Trace Data, показанное на рис. 34.37, разбито
по вертикали на две области. Левая область содержит краткий перечень всех
фреймов трассировки, доступных через сервер трассировки, в то время как
правая область отображает детализацию выбранных фреймов трассировки.
В области отображения перечня фреймов трассировки имеются столб-
цы номера фрейма, адреса фрейма и дополнительной информации о фрей-
ме. Всего имеется пять основных типов фреймов трассировки:
• трассировка программы,
• трассировка данных,
• сообщения состояния отладки,
• ошибки/исключения,
• включение/отключение точек трассировки/останова.
В области отображения детализации выбранных фреймов трассировки
отображается дизассемблированный код на C/C++ и ассемблере для каж-
дого из выбранных фреймов. Формат отображения может быть изменен
путем использования иконки Set Format to Disassembly в инструментальной
панели окна. Для каждого фрейма в окне отображается заголовок, содер-
жащий информацию о переходе, передающем управление на код фрейма,
а также местоположение кода в адресном пространстве памяти, как пока-
зано на рис. 34.37.
Данные трассировки могут быть экспортированы путем использова-
ния иконки Export Buffer в инструментальной панели окна. Клик на этой
ОД- Variables: Breafcpc. : Q AVR32 Registers . . Ой»л «*» Registers Mcju s
Frame#
охоаоппооо
ОхбО'Ы'-GOl
Address
Frame cfescreAwi
tfetcchpoi
1'14 ~Tr ae ё st...
0x00000004
0x00000005
й.хооМооо'б
0X00000007
0x00000008
S 0x00000009
ОхООЯШООа
охоообоооь
S OxOOOOOOOd
ОХроосюрое
йхйСЙЙбай
0x00000010
Uatchpoi.
Uabchpbii
Ox800Cffi.iJ4
0x80002114
0x8000.120
««W
0x80002120
.0x80903132
main ()
Ifetchpoi*-,
main()
'Sfe&chpon'.
0x80002Ш Ttace et.
prnn_cpt_t pwm_opt;
avr32_pwm_channel_t pwa_chatmel ” i -cent - 0 };
. 0x80002114 stm --SP, R7, LR
0x80002118 mov R7, SP
0x80002Ila sub SP, 52
0x8000211c sub RIO, R7, 52
0x80002120 mov R8, 0
РИН ojf
Рис. 34.37. Окно обозрения трассировки Trace Data
иконке откроет диалоговое окно, позволяющее задать номера начального
и конечного фреймов, формат экспорта и имя файла для сохранения в нем
данных.
Помимо указанных возможностей инструментальная панель окна со-
держит иконки команд стирания буфера трассировки и переключения на
трассировку программ/данных/монопольного использования (ownership).
Необходимо заметить, что использование команд переключения может
затронуть установленные ранее активные точки трассировки. Если такая
точка трассировки активизировала трассировку, то состояние иконок ко-
манд переключателя при этом модифицировано не будет.
34.5. Аппаратные инструментальные средства
Для разработки/отладки/программирования приложений на базе МК ар-
хитектуры AVR32 Atmel предлагает ряд аппаратных инструментальных
средств собственного производства. Это, прежде всего, JTAG-адаптеры
JTAGICE-mkII и AVR ONE!, а также отладочные платы (оценочные набо-
ры) EVK1100, EVK1101, NGW100, STK1000, STK1002 и STK600.
Когда эта книга уже готовилась к печати, появилась информация о но-
вых аппаратных инструментальных средствах производства Atmel: отладоч-
ных платах EVK1104 и EVK1105. Для того, чтобы описанная выше версия
IDE AVR32Studio поддерживала работу с ними, необходимо обеспечить
механизм корректного переноса готовых проектов, предлагаемых для этих
плат производителем, в рабочую область AVR32Studio. Описанию этого
механизма посвящен следующий раздел.
34.5.1. Импорт готовых проектов
Этот раздел написан по материалам тренинга, проведенного Atmel в октя-
бре 2008 года, любезно предоставленных автору специалистами фирмы
АРГУССОФТ [15], [16]. Указанные материалы содержатся на прилагаемом
к книге DVD-диске.
Рассмотрим порядок импорта проектов для EVK1105 в рабочую область
AVR32Studio. В качестве импортируемого будем использовать проект при-
ложения примера трЗ-плеера на базе платы EVK1105. Указанный проект
в виде архивного файла EVK1105-mp3.tar.gz содержится на прилагаемом
к книге DVD-диске.
Предварительно создадим на жестком диске каталог рабочей области
для импортированных проектов, например, PR_AVR32_AVR32Studio_J-
Укажем этот каталог в качестве рабочей области при запуске AVR32Studio
в окне выбора рабочей области (рис. 34.9). В эту рабочую область будет
импортирован готовый проект со всеми своими настройками.
До начала импорта проекта следует удостовериться, что используется
AVR32Studio версии 2.0.2 или старше. Для этого нужно выбрать в меню
Help>About AVR32 Studio, после чего откроется окно информации о про-
грамме, показанное на рис. 34.38.
Рис. 34.38. Окно информации о программе AVR32Studio
Примечание: При использовании платы EVK1104 следует удостоверить-
ся, что используется только что вышедшая версия IDE AVR32Studio 2.1.0
или старше.
Затем кликом правой кнопки мыши в окне проводника проектов Project
Explorer следует открыть контекстное меню, как показано на рис. 34.39.
Выбрав в этом меню опцию Import, откроем одноименное окно, показан-
ное на рис. 34.40. В этом окне предлагается несколько вариантов импорта.
Следует выбрать General>Existing Projects into Workspace. После этого, от-
кроется окно, показанное на рис. 34.41. В нем следует активировать кате-
горию Select archive file: и с помощью кнопки Browse... указать путь к ар-
хивному файлу нужного проекта — EVK1105-mp3.tar.gz. При этом в окне
Projects: появится позиция табуляции проекта EVK1105-mp3, как показано
на рисунке. Для завершения импорта следует кликнуть на кнопке Fin-
Import...
дЛ Export...
* Refresh FS
Рис. 34.39. Контекстное меню в окне проводника проектов Project Explorer
Рис. 34.40. Окно Import
Рис. 34.41. Окно Import при выборе импортируемого проекта
ish. После этого позиция табуляции проекта EVK1105-mp3 появится в окне
проводника проектов Project Explorer, как показано на рис. 34.42. Проект
и все его настройки успешно импортированы.
Следующим шагом можно откомпилировать и скомпоновать импор-
тированный проект. Перед компиляцией необходимо удостовериться,
что проект имеет конфигурацию компоновки Debug, как показано на
рис. 34.42. Компиляция и компоновка проекта запускаются описанным
выше способом (курсор на позицию табуляции проекта и выбор в меню
Project>Build Project). По завершении компоновки в каталоге проекта будет
создана папка Debug, содержащая двоичный файл с расширением elf. Не-
обходимо заметить, что в окне Problems компоновщик сгенерирует сообще-
ния об ошибках, указывающих на отсутствие программного заполнения
cerMeHTOB.bss,.dalign,.heap H.stack (рис. 34.43). Однако, эти ошибки не будут
иметь никаких последствий в плане влияния на работоспособность кода
приложения.
Перед программированием МК платы EVK1105 при задании конфигу-
рации целевой системы необходимо в окне Properties в поле Board задать
вариант Any Board, а в поле MCU — вариант UC3A0512.
Примечание: В случае использования EVK1104 и AVR32Studio 2.1.0
в указанных полях следует задать варианты EVK1104 и UC3A3256S.
Bjftework Hefc
Rle Edit Navigate Seatch Ry
тз/sturffo
₽r
Bu Id Working Set ►; 2 Rdea'e (AVR32 Standa one release conflgu ation)
|Qean... Manage^ у----- . _ , и
В It I Automat caJy
Piape'Bes
•lata.
I
Рис. 34.42. Импортированный проект
ЛУЙ32 СЛ** ГУК1 lO5-mp3/$rt/4PPL!CA EI0NS/LVK1W5AUDI0 PLAYER MAS^STORAGE/main.c AVR32 Studio
Fite Etff Refactor Navigate Search .Run Project: Framework V endow Fteb
ft! ' ’ •' id * (sT*- <* * * Q* 4»’ $ AVR32 CJC+-I
_ PruieSErcVei '
;5^.
is fev EVK110S-mp3
Ki Binaries
ffi Indudes
Й Debug
tB ’ sre
A’ AVR32TO9_MP3.A
• fc| ЯС
Э doc html
j й таите Й Outline
/•This file is prepared isr fidKogsti automatic Cldc'isaetavat ifen getie* «
* \r-rief Audio уlayer
* - Corep’-iSKt IAR E4AVP32 end ®V 600 fc* 1VR35:
» - supported devices: All AVR32 devices can be used.
* - APi Иске:
* author A cruel Corporation: http: wan. a cruel .com X
Support and FAQ: fettp:'/suppot t. sdme i.no
1- U stddtf.h
’И stdo.h
SI avr32/io.h
5S compter.h
M board.h
U ntc.h
< Г
< AW32 Registers
* ‘ Чклшра-зе AVP32 Audio decoder over USB
« <KR>
1 \section license License
* Xise ex thi« program is subject tc Atmel*3 Lnd User License Agref
* I lease read the \ref license at the bottom ot this page.
AVR32 Targets &
Name -
AVR32 Simulator
looittap
fe; Errors (4 it «ms)
Resource = Path
Я cfefesos kJ© Properfe ' О Cpnsgfe ’
t ’ ors, 3 wamtegs. 0 infos
DeKnpftott
ATOSTOVF&elf: warrnng. *Ax£ed$ect#n" W hot in segment
ЛА6КЕп*П
Adapter
AVR32 Simulator
JTAGICE тШ
Рис. 34.43. Компоновка импортированного проекта
34.5.2. JTAG-адаптеры
Наиболее мощным и функциональным аппаратным отладочным сред-
ством для МК архитектуры AVR32 является адаптер AVR ONE!. Он под-
держивает отладку на кристалле, ISP-программирование, а также Nexus
AUX-трассировку всех выпускаемых в настоящее время МК архитектуры
AVR32 и совместим с IDE AVR32Studio. Версия программной прошивки
(firmware) AVR ONE! 1.1, предлагаемая производителем на момент написа-
ния этой книги, поддерживает отладку (программирование) только через
два интерфейса МК AVR32: JTAG и Nexus 2.0 (IEEE-ISTO 5001-2003). Од-
нако, по заявлению производителя, будущие версии firmware AVR ONE!
наряду с этим станут поддерживать отладку 8-разрядных МК архитектуры
AVR через интерфейсы JTAG, PDI или debugWIRE, а также поддерживать
ISP-программирование через интерфейсы JTAG, PDI или SPI.
Необходимо отметить, что адаптер AVR ONE! не является эмулятором.
Принцип его функционирования основан на интерфейсе с встроенной си-
стемой отладки (OCD) МК целевой системы, что и обеспечивает механизм
контроля и управления выполнением пользовательского кода. При нали-
чии системы OCD приложение может выполняться полностью в реальном
устройстве и в реальных условиях (с точки зрения электрических параме-
тров и параметров синхронизации), что технически неосуществимо при
использовании традиционных эмуляторов.
В режиме выполнения ЦПУ (run mode) выполнение кода полностью не-
зависимо от AVR ONE!. AVR ONE! при этом непрерывно контролирует МК
целевой системы, чтобы отслеживать, не произошло ли условие останова.
Когда это условие наступает, система OCD опрашивает ЦПУ МК через его
интерфейс отладки, чем дает возможность хосту получить информацию
о текущем состоянии МК.
В режиме останова ЦПУ (stopped mode), наступающем, когда управле-
ние достигает точки останова, выполнение программы приостанавлива-
ется, но все подсистемы ввода-вывода МК продолжают функционировать
в обычном режиме. Например, если в состоянии выполнения была иници-
ирована передача через USART, то USART продолжает работать на полной
скорости до нормального завершения передачи несмотря на то, что ядро
находится в состоянии останова.
Поскольку AVR ONE! использует при отладке ресурсы системы OCD, то
он поддерживает как программные, так и аппаратные точки останова. По-
следние представляют собой значения, хранимые в аппаратных регистрах
компараторов системы OCD, содержимое которых постоянно сравнивается
с текущим значением программного счетчика МК. При совпадении си-
стема OCD переводит ЦПУ в состояние останова. Поддержка аппаратных
точек останова требует специализированных аппаратных средств в модуле
OCD, а их доступное для пользователя количество зависит от размера мо-
дуля OCD.
Программные точки останова представляют собой команды BREAK,
помещенные в память программ МК целевой системы. При загрузке такой
команды выполнение программы останавливается и система OCD перево-
дит ЦПУ в состояние останова. Чтобы продолжить выполнение, система
OCD должна сгенерировать команду start. Следует заметить, что не все
МК архитектуры AVR имеют модули OCD, поддерживающие команду
BREAK.
Внешний вид комплекта адаптера AVR ONE! показан на рис. 34.44.
Адаптер подключается к компьютеру хоста через порт USB. Помимо источ-
ника и кабелей питания в комплекте имеется несколько переходников для
соединителей различного размера и с различным количеством контактов.
К недостаткам адаптера AVR ONE! можно отнести его высокую стои-
мость.
JTAG-адаптер JTAGICE-mkII представляет собой более простое и до-
ступное средство отладки. Он совместим как с IDE AVR32Studio, так
и IDE AVRStudio версии 4.09 и выше. JTAGICE-mkII поддерживает от-
ладку и ISP-программирование всех МК архитектуры AVR32, а также всех
Рис. 34.44. Комплект JTAG-адаптера AVR ONE!
МК архитектуры AVR (имеющих JTAG) только через интерфейс JTAG —
4-проводный порт тестового доступа (ТАР), совместимый со стандартом
IEEE 1149.1. Помимо этого JTAGICE-mkII поддерживает отладку и ISP-
программирование всех МК, имеющих интерфейс debugWIRE. При этом
для физической реализации интерфейсов JTAG и debugWIRE в JTAGICE-
mkII используются одни и те же аппаратные средства (разъемы).
По принципу функционирования JTAGICE-mkII может быть отнесен
к традиционным эмуляторам. Он использует интерфейс JTAG для орга-
низации эмуляции реального времени в МК целевой системы, в то время
как в МК выполняется пользовательский код. Протокол AVR-отладки на
кристалле (AVROCD) предоставляет пользователю законченную систему
управления внутренними ресурсами МК. Однако при этом JTAGICE-mkII
поддерживает только программные точки останова.
К компьютеру хоста JTAGICE-mkII может быть подключен через СОМ-
порт (поддерживает спецификацию RS-232) или через порт USB (поддер-
живает спецификацию USB 1.1). В последнем случае возможно питание
JTAGICE-mkII от хоста.
Внешний вид комплекта адаптера JTAGICE-mkII показан на рис. 34.45.
При подключении JTAGICE-mkII к хосту через порт USB предварительно
должен быть установлен соответствующий драйвер. При работе под ОС
Windows этот драйвер устанавливается как часть AVR32 GNU Toolchain или
в ходе инсталляции AVRStudio версии 4 (для 8-разрядных МК). При рабо-
те под ОС Linux требуется libusb.
При подключении JTAGICE-mkII к хосту через COM-порт заданная
по умолчанию скорость обмена составляет 19200 бит/с (максимальная
115200 бит/с), N-8-1, RTS/CTS.
Принципиальная схема подключения JTAGICE-mkII к порту JTAG МК
целевой системы показана на рис. 34.46. Используются следующие сигна-
лы JTAG: ТСК, TDO, TDI, TMS, VTref и GND. Необходимо заметить, что
линия питания целевой системы Vsupply не соединена с JTAGICE-mkII,
поэтому последний не может получать питание от целевой системы.
В некоторых МК архитектуры AVR ножки JTAG ТСК, TDO, TDI и TMS
могут использоваться как линии ввода-вывода общего назначения в случае,
если МК не находится в состоянии отладки. В этом случае между этими
выводами и любыми внешними цепями рекомендуется включить добавоч-
ные резисторы, как показано на рис. 34.46.
Рис. 34.45. Комплект JTAG-адаптера JTAGICE-mkII
Рис. 34.46. Схема подключения JTAGICE-mkII к порту JTAG МК
Для своего питания JTAGICE-mkII может использовать внешний ис-
точник или шину (хост) USB. По умолчанию выбирается внешнее электро-
питание. Однако если внешний источник отсутствует или его напряжение
ниже заданного уровня, питание будет осуществляться от шины USB, если
имеется подключение к хосту. В этом случае последний должен обеспечи-
вать ток нагрузки в шине USB не менее 500 мА.
Зеленый светодиод на корпусе JTAGICE-mkII индицирует наличие пи-
тания целевой системы, красный — наличие питания самого JTAGICE-
mkII. Оставшийся (третий) светодиод светится зеленым, если происходит
передача данных; желтым — если происходит обновление встроенного
программного обеспечения JTAGICE-mkII, и красным — при отсутствии
соединения с целевой системой. Если этот светодиод не светится, то соеди-
нение с целевой системой имеется, но ничего не происходит.
34.5.3. Отладочные платы
Наиболее доступными аппаратными платформами, содержащими МК
AT32UC, являются отладочные платы (оценочные наборы) EVK1100
и EVK1101. Внешний вид отладочной платы EVK1100 показан на рис. 34.47.
Помимо МК AT32UC3A0512 (в корпусе QFP144) плата содержит следую-
щие элементы аппаратной «обвески»: микросхема памяти SPI Dataflash
AT35DB642 емкостью 8М, микросхема памяти SDRAM MT48LC16M16A2
емкостью 32М, символьный 4-строчный ЖКИ EA-DIP204B-4NLW, датчи-
ки освещенности, температуры и аналоговый потенциометр, подключен-
ные к входам модуля АЦП МК, три кнопки, манипулятор типа «джойстик»
с функцией нажатия, подключенный к входам сканирования внешней
клавиатуры МК, шесть светодиодов, три подключенных к МК кварцевых
Рис. 34.47. Отладочная плата EVK1100
Рис. 34.48. Функциональная схема EVK1100
резонатора (12 МГц, 12 МГц (место под установку) и 32768 Гц). Интер-
фейсы МК «оконечены» соответствующими разъемами (два 9-pin RS-232,
USB mini A-В, RJ45 Ethernet, слот SD/MMC (SPI), JTAG, NEXUS, шина
EBI, порты ввода-вывода общего назначения и т. д.). Имеющиеся на плате
стабилизаторы напряжения позволяют осуществлять ее питание от шины
USB или от внешнего источника напряжением 8...20 В. На плате также
имеется макетное поле для установки дополнительных элементов.
Функциональная схема платы EVK1100 приведена на рис. 34.48. Прин-
ципиальные схемы подключения к МК всех элементов «обвески» и ин-
терфейсных разъемов с указанием нумерации выводом МК и названий
интерфейсных цепей содержатся во встроенной справочной системе IDE
AVR32Studio, а также на прилагаемом к книге DVD-диске.
Отладочная плата EVK1101, внешний вид которой показан на рис. 34.49,
а функциональной — на рис. 34.50, содержит МК AT32UC3B0256 (в кор-
пусе LQFP64). Помимо МК в состав EVK1101 входят: микросхема па-
мяти SPI Dataflash AT35DB642, датчики освещенности, температуры
и ЗО-акселерометр, подключенные к входам модуля АЦП МК, две кнопки,
манипулятор типа «джойстик» с функцией нажатия, подключенный к вхо-
дам сканирования внешней клавиатуры МК, четыре светодиода, три подклю-
ченных к МК кварцевых резонатора. Интерфейсы МК «оконечены» соответ-
ствующими разъемами (9-pin RS-232, USB mini A-В, слот SD/MMC (SPI),
JTAG, NEXUS, порты ввода-вывода общего назначения и т. д.). Имеющиеся
на плате стабилизаторы напряжения позволяют осуществлять ее питание от
шины USB или от внешнего источника напряжением 8...20 В (номинально
9В). Источник питания выбирается переключателем «PWRSEL».
Принципиальная схема платы EVK1101 содержится на прилагаемом
к книге DVD-диске.
Стартовый набор STK600 представляет собой многофункциональное
средство разработки, интегрирующее в себе аппарат-
ную платформу для макетирования устройств на основе
МК AVR/AVR32 и инструментальные средства отлад-
ки. Совместно с IDE AVRStudio 4/AVR32Studio STK600
обеспечивает отладку в режимах симуляции и схемной
эмуляции, а также программирование МК через парал-
лельный и последовательный интерфейсы. STK600 мо-
жет также использоваться в качестве ISP-программатора
внешних устройств на основе МК архитектуры AVR.
Рис. 34.49. От-
ладочная плата
EVK1101
USB POWER E POWER
Рис. 34.50. Функциональная схема EVK1101
Для подключения плат расширения все порты МК выведены на разъемы.
Коммутация широкой номенклатуры МК архитектуры AVR в различных
корпусах осуществляется с использованием сменных плат двух типов, ко-
торые могут устанавливаться этажеркой (мезонином) на основную плату.
Платы сменных модулей определяют группу микросхем с аналогичными
функциями выводов, а сменные платы с розеткой позволяют работать
с МК в определенном корпусе. STK600 поддерживает МК семейств AT90S,
ATtiny, ATmega, AT90PWM, AT90CAN, AT90USB, Atxmega и AT32UC3.
Оценочные наборы NGW100, STK1000 и STK1002 построены на базе
МК семейства АТ32АР7000. Их описание выходит за рамки данной книги.
Отладочная плата EVK1105 содержит МК AT32UC3A0512, графический
ЖКИ (OLED LCD), Dataflash, SDRAM, разъем для аутентификации iPod
(опционально), внешний аудио-ЦАП, два USB-разъема, разъемы JTAG,
NEXUS, RJ45 Ethernet, слот SD/MMC (SPI) и т.д. Помимо этого, плата
оборудована органами управления (имеющими функции кнопок и джой-
стика), принцип действия которых основан на емкости касания. Внешний
вид платы EVK1105 показан на рис. 34.51.
Отладочная плата EVK1104 содержит МК AT32UC3A3256, планируемый
к выпуску в 4 квартале 2008 года, графический дисплей QVGA (320x240),
64Мбит памяти Dataflash, 256 Мбит памяти SDRAM, 2x2 Гбит памяти
Рис. 34.51. Отладочная плата EVK1105
Рис.34.52. Отладочная плата EVK1104
Nandflash, разъем для аутентификации iPod (опционально), два USB-
разъема, разъемы JTAG, NEXUS, RJ45 Ethernet, два слота SD/MMC (для
4-разрядных и 8-разрядных данных), разъем СЕ АТА (4 разряда), разъ-
ем Memory Stick, выходной разъем встроенного аудио-ЦАП и т. д.. Поми-
мо этого, плата оборудована органами управления (имеющими функции
кнопок и джойстика), принцип действия которых основан на емкости ка-
сания (QTOUCH и QWHEEL). Внешний вид платы EVK1104 показан на
рис. 34.52. Принципиальная схема EVK1104 содержится на прилагаемом
к книге DVD-диске.
Дополнительную информацию по программным и аппаратным сред-
ствам разработки/отладки приложений на базе МК AT32UC3 можно найти
в источнике [12].
ГЛАВА 35
ПОЛ ЬЗОВАТЕЛ ЬСКИ Е
ПРОЕКТЫ НА БАЗЕ
AT32UC3
В этой главе приводятся краткие описания нескольких подготовленных
в IDE AVR32Studio пользовательских проектов на базе примеров, входя-
щих в состав AVR32-SoftwareFramework. Таким способом каждый из этих
примеров был протестирован автором в «железе». В качестве целевой
системы при этом использовались отладочная плата EVK1101 и JTAG-
адаптер JTAGICE-mkII. Каждый из проектов создавался в последова-
тельности, изложенной в предыдущей главе, без внесения каких-либо
изменений в оригинальные исходные тексты примеров. Все описан-
ные проекты содержатся на прилагаемом к книге DVD-диске в катало-
ге рабочей области PR_AVR32_AVR32Studio, созданной в AVR32Studio
(рис. 35.1).
Рис. 35.1. Перспектива AVR32Studio с окном рабочей области, содержащим
созданные автором проекты
35.1. Проекты для EVK1101
35.1.1. Ваш первый проект
Этот очень простой проект с именем GPIO, созданный на базе приме-
ра от Atmel, демонстрирует работу контроллера GPIO МК AT32UC3B.
Под управлением программы приложения один из светодиодов платы
EVK1101 («LED2») постоянно мигает, а при удержании нажатой кнопки,
подключенной к линии МК РВО, горит другой светодиод («LED3»).
Остановимся подробнее на структуре этого проекта и функциониро-
вании платы EVK1101 под управлением его программы. Следует заметить,
что все другие проекты, которые будут описаны ниже, имеют сходную
структуру.
В корневом каталоге проекта GPIO содержится подкаталог src, вклю-
чающий в себя файл исходного текста проекта на языке С gpio_example.c,
содержащий главную функцию main(void), организующую так называемый
основной цикл управляющей программы. В теле именно этой функции со-
держатся программные фрагменты, зажигающие светодиод «LED3», когда
нажата кнопка, подключенная к линии РВО, а также фрагменты, застав-
ляющие мигать светодиод «LED2». Период этого мигания может быть за-
дан путем задания максимального значения предела изменения локальной
переменной i в команде цикла, содержащейся в программе:
for (i = 0; i < 1000; i += 4)
Задание максимального предела изменения i в этом цикле также за-
дает количество программных опросов входа подключения кнопки РВО.
По результатам каждого такого опроса зажигается или гасится светодиод
«LED3». До окончания выполнения цикла с i управление не передается
на программный блок, управляющий состоянием светодиода «LED2», что
и обуславливает период мигания последнего. Зажигание и гашение светоди-
одов осуществляется с помощью вызова функций gpio clr gpio pin(unsigned
int pin) и gpio_set_gpio_pin(unsigned int pin), а также функции gpio_tgl_gpio_
pin(unsigned int pin). Последняя производит смену текущего состояния све-
тодиода на противоположное. Состояние внешнего сигнала на входе GPIO
возвращает функция gpio_get_pin_yalue(unsigned int pin). В программе она
используется для опроса линии подключения кнопки РВО. Предварительно
для этой линии с помощью функции gpio_enable_pin_glitch_Jilter(unsigned int
pin) программно включается встроенный фильтр выбросов и помех. Ми-
гание светодиода «LED2» в проекте организовано с помощью программ-
ной конструкции языка С, называемой «переключатель». В зависимости
от текущего значения локальной переменной state в «переключателе» вы-
полняется один из четырех возможных наборов команд, изменяющих те-
кущее состояние выхода подключения «LED2» и текущее значение самой
переменной state: сброс выхода и инкремент state, установка выхода и ин-
кремент state, смена текущего состояния выхода и инкремент state, смена
текущего состояния выхода и обнуление state. Как уже было сказано, пере-
дача управления на «переключатель» производится через каждый интервал
времени, задаваемый значением максимального предела изменения пере-
менной z.
Необходимо заметить, что в файле gpio_example.c содержится далеко не
весь программный код, выполняемый этим приложением. Например, пере-
численные выше функции, относящиеся к контроллеру GPIO, в этом фай-
ле не описаны и не содержатся. Они содержатся в других исходных и за-
головочных файлах, которые подключаются к файлу основной функции
с помощью директив itinclude, например, как показано ниже:
#include «compiler.h»
#include «gpio.h»
#include "board.h"
В подключаемых файлах, в свою очередь, могут содержаться директивы
подключения других файлов и т. д. Таким образом, любой из описанных
ниже проектов строится на основе вызова из основной программы (глав-
ной функции) значительного числа свободно распространяемых стандарт-
ных и библиотечных функций, разработанных производителем МК на «все
случаи жизни».
Помимо исходного файла gpio_example.c в каталоге src содержится также
подкаталог SOFTWARE FRAMEWORK, в свою очередь содержащий под-
каталоги Asm, Boards, Drivers, Utils.
Каталог Asm содержит файл trampoline.x. Он должен быть добавлен
к проекту, если для программирования МК кодом приложения нет не-
обходимости использовать встроенный внутрисистемный загрузчик (ISP)
МК, а предполагается использовать для этой цели внешние программа-
торы (например, JTAGICE-mkII). Fuses-установки МК при этом изменять
не требуется. При программировании МК через JTAGICE-mkII встроен-
ный ISP-загрузчик, код которого размещается во Flash-памяти, будет стерт.
В файле содержатся ассемблерные команды, задающие смещение для точки
входа в программу приложения после сброса МК с учетом отсутствия ISP-
загрузчика. Следует заметить, что этот файл добавлен ко всем описанным
ниже проектам.
Каталог Boards содержит исходные и заголовочные файлы, используе-
мые основной программой в качестве подключаемых. Это, прежде всего,
заголовочные файлы, относящиеся к используемой аппаратной платформе
(отладочной плате): board.h, evkllOl.h. Они содержат константы и опреде-
ления, описывающие схемное построение платы, указания, к каким выво-
дам МК подключены кнопки, «джойстик», светодиоды, внешние датчики
и другие внешние устройства, а также численные значения частот так-
товых генераторов, используемых для синхронизации МК и т. д. Файлы
led. с, led.h содержат набор функций, реализующих управление (гашение,
зажигание, определение текущего состояния и т. п.) подключенными к МК
светодиодами.
Каталог Drivers включает подкаталоги, в каждом из которых содержатся
исходные и заголовочные файлы драйверов периферийных устройств МК.
В данном проекте в силу его простоты в каталоге Drivers содержится толь-
ко один подкаталог драйверов - Gpio. В нем находятся файлы gpio.h, gpio.c,
содержащие набор функций, реализующих управление линиями ввода-
вывода общего назначения: сброс/установку выхода GPIO, чтение внеш-
него сигнала на входе GPIO, включение/отключение встроенного подтя-
гивающего к «плюсу» питания резистора на линии GPIO, перевод линии
GPIO в режим Open Drain, включение/отключение встроенного фильтра
выбросов и помех на входе GPIO и т. д. Именно эти функции используют-
ся в файле gpio_example.c. Никаких других периферийных устройств МК,
кроме контроллера GPIO данный проект не использует. Для сравнения,
проект ACCELEROM (см. ниже) при своей работе использует GPIO, АЦП,
прерывания, менеджер питания, USART и, соответственно, его каталог
Drivers содержит каталоги Gpio, Adc, Intc, Pm, Usart с драйверами перечис-
ленной периферии.
В каталоге Utils находятся заголовочные файлы, содержащие различ-
ного рода заголовки и определения, необходимые для корректной компо-
новки исходных кодов приложения. Например, файл compiler.h содержит
определения используемых в функциях типов данных (структур, битовых
полей и т. д.), а также макроопределения (макросы), которые используют-
ся для управления компиляцией. Файл conf_isp.h содержит определения,
относящиеся к конфигурации встроенного ISP-загрузчика. Каталог PRE-
PROCESSOR включает файлы, содержащие определения, относящиеся
к работе препроцессора.
После успешного завершения компоновки проекта GPIO AVR32Studio
автоматически создаст в его корневом каталоге подкаталог Debug. В нем
будет содержаться двоичный файл gpio_debug.elf, представляющий собой
результат компиляции и компоновки исходных файлов проекта. Этот файл
пригоден для записи непосредственно во Flash-память МК целевой систе-
мы.
Файл gpio.fuses, содержащийся в корневом каталоге проекта GPIO, со-
держит набор fuses-установок МК. Как и файл с расширением.^ файл
с расширением./^^ пригоден для записи непосредственно во Flash-память
МК целевой системы, однако, последний не является результатом компи-
ляции, а создается пользователем вручную в соответствующем редакторе
(см. раздел предыдущей главы «Работа с fuses-установками МК»).
Остальные файлы и каталоги, находящиеся в корневом каталоге про-
екта, содержат служебную информацию о параметрах и настройках этого
проекта и рабочей области в IDE AVR32Studio.
35.1.2. Control Panel
Плата EVK1101 поставляется с прошитым в МК кодом демоприложения «Па-
нель управления» (Control Panel). Аналогичный код получается в результате
формирования созданного на базе соответствующего примера от Atmel про-
екта CONTR_PANEL. Работу приложения Control Panel иллюстрирует про-
грамма поддержки, которая должна быть установлена на компьютер. Дис-
трибутив этой программы (под ОС Windows) может быть бесплатно скачан
с сайта www.atmel.com (файл AVR32+UC3B+Control+Panel+PC+Demo+Installer.
ехе). При ее установке на жестком диске компьютера по умолчанию создает-
ся каталог AVR32 UC3B Control Panel PC Demo. После установки программы
поддержки плата EVK1101 должна быть подключена к компьютеру через порт
USB. Для корректной работы Control Panel при обнаружении ОС Windows под-
ключенного к компьютеру устройства необходимо указать путь для установки
его USB-драйвера (каталог USB в каталоге AVR32 UC3B Control Panel PC Demo),
а затем при запуске программы выбрать целевую систему (отладочную плату),
как показано на рис. 35.2. После этого на компьютере откроется графическое
окно Control Panel, показанное на рис. 35.3. Как можно видеть из рисунка,
программа организует прием через USB в хост из платы и графическое ото-
бражение измеренных платой значений окружающей температуры, освещен-
ности, а также текущих состояний кнопок и «джойстика». Помимо этого про-
грамма позволяет управлять из хоста состоянием светодиодов EVK1101.
35.1.3. Обслуживание акселерометра
Проект ACCELEROM, созданный на базе примера от Atmel, реализует об-
служивание входящего в состав платы EVK1101 3-координатного акселе-
рометра LIS3L06AL. При работе проекта информация, поступающая в МК
с акселерометра, обрабатывается встроенной программой, а затем выдается
во внешнее устройство через порт МК USART1. Приложение регистрирует
и отображает наклоны платы вправо/влево, вперед/назад, а также ускоре-
Рис. 35.2. Окно выбора отладочной платы в программе поддержки Control
Panel
Рис. 35.3. Главное окно программы поддержки Control Panel
ние при движении платы. Формат выдаваемой приложением информации
иллюстрируется рис. 35.4, где показано окно программы эмуляции после-
довательного терминала, открытое на компьютере, подключенном через
COM-порт к порту USART1 платы EVK1101. Настройки COM-порта: ско-
рость 57600 бит/с, 8-N-1. Тактовая частота ЦПУ МК — 12 МГц.
В проект входят следующие исходные файлы:
Hs3l06al.c — драйвер акселерометра,
Us3l06al.h — заголовочный файл драйвера акселерометра,
acc example.c — приложение примера обслуживания акселерометра.
35.1.4. Обслуживание внешней памяти SPI Dataflash
Проект DATA_FLASH, созданный на базе примера от Atmel, реализует
обслуживание входящей в состав платы EVK1101 микросхемы памяти
SPI Dataflash AT35DBx, обеспечивая для нее интерфейс нижнего уровня.
При работе проекта производится доступ МК к массиву памяти Dataflash
следующих типов:
• две попытки доступа к отдельным байтам,
• две попытки доступа к сектору (512 байт),
• одна попытка доступа к множеству секторов.
Для проверки корректности записи и чтения при доступе к Dataflash
используются байтовые константы 0x55 и ОхАА. Перед осуществлением до-
ступа программа проверяет емкость имеющегося массива внешней памяти
(файл conf_at45dbx.h).
При работе проекта результаты, полученные при доступе к памяти, вы-
даются во внешнее устройство через порт МК USART1 в формате, пока-
занном на рис. 35.5. Настройки COM-порта: скорость 57600 бит/с, 8-N-1.
Тактовая частота ЦПУ МК — 12 МГц.
В проект входят следующие исходные файлы:
Рис. 35.4. Работа приложения обслуживания акселерометра
at45dbx.c — функции управления контроллером Dataflash AT45DBx че-
рез SPI,
at45dbx.h — заголовочный файл функций управления контроллером
Dataflash,
at45dbx_mem.c — интерфейс связи модуля CTRL_ACCESS с AT45DBx,
at45dbx_mem.h — заголовочный файл интерфейса связи,
ctrl_access.c — модуль абстракций для интерфейсов памяти,
ctrl_access.h — заголовочный файл модуля абстракций,
at45dbx_example.c — приложение примера обслуживания AT45DBX.
35.1.5. Обслуживание карты памяти SD/MMC
Проект SD MMC, созданный на базе примера от Atmel, реализует обслужи-
вание подключаемой через слот к плате EVK1101 карты памяти SD/MMC
в режиме SPI. Программа производит проверку наличия подключенной
карты памяти, и в случае ее обнаружения программная функция main() чи-
тает данные из SD/MMC во встроенную память RAM, используя PDCA.
При работе проекта результаты чтения содержимого первых двадцати
байтов каждого из физических секторов с номерами 1, 2, 3 SD/MMC вы-
даются во внешнее устройство через порт МК USART1 в формате, показан-
ном на рис. 35.6. Кроме того, программа определяет и отображает емкость
подключенной карты памяти.
Настройки COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая частота
ЦПУ МК - 12 МГц.
В проект входят следующие исходные файлы:
sd_mmc.c — драйвер SD/MMC,
sd_mmc.h — заголовочный файл драйвера SD/MMC,
sd_mmc_mem.c — интерфейс памяти SD/MMC,
sd_mmc_mem.h — заголовочный файл интерфейса памяти SD/MMC,
Рис. 35.5. Работа приложения обслуживания внешней памяти SPI
Dataflash
sd_mmc_example.c — приложение примера обслуживания SD/MMC,
conf_access.h — конфигурация модуля CTRL_ACCESS,
conf_sd_mmc.h — конфигурация модуля SD/MMC.
35.1.6. Использование встроенного АЦП
Проект ADC, созданный на базе примера от Atmel, производит аналого-
цифровые преобразования с помощью встроенного модуля АЦП МК
AT32UC3B. В качестве источников входного измеряемого напряжения про-
грамма использует сигналы от установленных на плате EVK1101 датчиков
освещенности и температуры.
При работе проекта результаты АЦП выдаются во внешнее устройство
через порт МК USART1 в формате, показанном на рис. 35.7. Настройки
COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая частота ЦПУ МК —
12 МГц.
В проект входят следующие исходные файлы:
adc.c — драйвер АЦП,
adc.h — заголовочный файл драйвера АЦП,
adc_example.c — приложение примера использования АЦП.
35.1.7. Использование встроенного интерфейса USB
35.1.7.1. Устройство/хост USB Mass Storage
Проект USB_M_S, созданный на базе примера от Atmel, реализует по-
строение на базе отладочной платы EVK1101 запоминающего устройства
большой емкости с интерфейсом USB—USB Mass Storage. В качестве памя-
ти для хранения пользовательских данных приложение использует встро-
енную память МК RAM, память SPI Dataflash AT35DBx, а также память
подключенной карты SD/MMC (в случае ее наличия).
Рис. 35.6 Работа приложения обслуживания карты памяти SD/MMC
Рис. 35.7 Работа приложения использования встроенного АЦП
Приложение может работать в следующих режимах:
• USB-устройство,
• редуцированный USB-xoct,
• USB-устройство с двойной ролью (в зависимости от состояния нож-
ки идентификатора ID).
Последний из этих режимов задан по умолчанию. В случае, если ножка
ID в разъеме USB платы ни к чему не подключена (используется кабель USB
mini-B), приложение будет функционировать в режиме USB-устройства.
При этом оно может быть подключено к хосту (например, к PC), чтобы ис-
пользоваться в качестве сменного USB-диска.
В случае, если ножка ID в разъеме USB платы подключена к общему
проводу (используется кабель USB mini-A), приложение будет функцио-
нировать в режиме редуцированного USB-хоста. При этом к нему в свою
очередь можно подключать USB-устройства.
Замечание. Кабели USB mini-B и USB mini-A входят в комплект отла-
дочной платы EVK1101.
Чтобы задать конфигурацию модуля USB приложения, отличную от
заданной по умолчанию, необходимо внести изменения в исходные кон-
фигурационные файлы проекта conf_usb.h, conf_access.h, а затем заново
сформировать проект.
Во всех режимах приложение может поддерживать связь в интерактив-
ном режиме с внешним устройством (последовательным терминалом) через
порт МК USART1. Настройки COM-порта: скорость 57600 бит/с, 8-N-1.
При обмене с терминалом приложение использует встроенный интерпре-
татор командной строки (uShell), который обеспечивает доступ к файловой
системе (встроенной памяти МК RAM — On-Chip Virtual Memory, памяти
SPI Dataflash AT35DBx, а также памяти карты SD/MMC) подключенного
к компьютеру устройства USB Mass Storage с помощью приведенного ниже
набора команд. При этом каждый тип используемой физической памяти
обслуживается приложением и хостом как отдельный диск запоминающего
устройства (рис. 35.8: диски G, Н, I).
Команды uShell:
disk — получить количество дисков запоминающего устройства,
а:, Ь: и т. д. — перейти на выбранный диск,
mount drivename (а, бит. д.) — перейти на выбранный диск,
format drivename (а, бит. д.) — форматировать выбранный диск,
fat — использовать тип файловой системы FAT с текущим диском,
df — получить информацию о свободном пространстве на всех подклю-
ченных дисках,
cd dimame — перейти в выбранный каталог,
cd.. — перейти в старший каталог,
mark — пометить текущий каталог,
goto — перейти в помеченный каталог,
Is — вывести список файлов и каталогов в текущем каталоге,
rm filename — удалить выбранный файл или освободить каталог,
гт* — удалить все файлы или пустые каталоги в текущем каталоге,
ср filename — копировать файл в помеченный каталог,
mv src-filename dst-filename — переименовать выбранный файл,
mkdir dirname — создать каталог,
deltree dimame — удалить каталог и его содержимое,
touch filename — создать файл,
append filename — добавить в конец выбранного файла данные, введен-
ные с терминала,
cat filename — вывести содержание списка файлов.
Интерпретатор командной строки uShell позволяет также получать ин-
формацию о подключенном к компьютеру устройстве с помощью следую-
щего набора команд:
Рис. 35.8. Съемные диски из состава USB Mass Storage
Isusb — когда модуль USB в режиме ведущего, получить информацию
о USB,
usbsync {device\host} — когда модуль USB в режиме ведущего, синхрони-
зировать диск USB-устройства или хоста,
suspend — когда модуль USB в режиме ведущего, приостановить дея-
тельность на шине USB,
resume — когда модуль USB в режиме ведущего, возобновить деятель-
ность на шине USB,
reboot — сбросить приложение,
help — вывести справку о командах uShell.
После сброса программа приложения производит поиск и отображе-
ние имеющихся в его распоряжении ресурсов памяти, как показано на
рис. 35.9.
Точка входа приложения находится в файле mass_storage_example.c. По-
сле сброса приложения его функция main() сначала производит инициали-
зацию услуг и задач, а затем выполняет их в бесконечном цикле.
Приложение устройства/хоста USB Mass Storage базируется на выпол-
нении четырех различных задач:
• задача, связанная с обслуживанием интерфейса USB (исходный
файл usb_task.c), организует процесс ренумерации нижнего уровня
в режиме устройства или хоста. Как только в ходе выполнения этой
задачи детектируется полное завершение подключения через USB,
программа модифицирует различные флаги состояния, которые за-
тем опрашиваются при выполнении задач более высокого уровня;
• задача, связанная с организацией функционирования устройства
USB Mass Storage (исходный файл device_mass_storage_task.c), вы-
полняет декодирование в соответствии с протоколом SCSI и доступ
к Flash-памяти;
• задача, связанная с организацией функционирования хоста USB
Mass Storage (исходный файл host_mass_storage_task.c), управляет
подключением устройства USB Mass Storage, а также выполняет де-
кодирование в соответствии с протоколом SCSI и доступ к Flash-
памяти;
• задача, связанная с организацией оболочки USB (исходный файл
ushell_task.c), управляет обработкой команд терминала.
35.1.7.2. Устройство/хост USB HID
Проект USB_HID, созданный на базе примера от Atmel, реализует по-
строение на базе отладочной платы EVK1101 USB HID-устройства — ком-
пьютерной «мыши».
Приложение может работать в следующих режимах:
• USB-устройство,
• редуцированный USB-xoct,
• USB-устройство с двойной ролью (в зависимости от состояния нож-
ки идентификатора ID).
Otfiiffi®
Ж
fiansmit
3^:
Terminn I v1 .3 by Btajer
Hex
Г RTS/CTS
г XEWXDFF
RTS7CTS + XONZXCIFF
"Тжгйа
Л23<
"Ori^dh^Viratdl M®s -г
APtKJSi bate Паз&« Л t Free 83&?44 6vta I Ш
Party .-Slop Bits Handshaking
Г 144430 5760B
19200 И5200
430G C 384®
COM Port Baudrate
C 3®
6ГО
r l ao
"44! □
. r wc B( Ai4SDSXD^aRa-n
jflfciiam.fea !<:; ...,'
'ScdfB^tes/
t*.;. .0
.4^ _ < сомз
Эий I ’ COM4
Settings
Au о Djs/Connect S
Receive
• М3
Connected
4С5>
ж
Тгалчгпй Macros
RflJi
рГ"
K00d“
32
I Ю
И0®.
108
Ж;
0 -y"
•дг45бех г^аПэйг
'&йА'
•0240 bytes
8388606 bytes
r^mfeiaes’
imisbj*-
W»
емевда
01080110
Нам
Ы$Й1св
O11W1QT
Q0®fW
ЯЙЙР10
SowogSi
ЙОТ®
00664101
давай
'• itjMob
«Ш11Й
SSTOTR I CLRDTR | ClRRTS |
Рис. 35.9. Работа приложения USB Mass Storage
Последний из этих режимов задан по умолчанию. В случае, если ножка
ID в разъеме USB платы ни к чему не подключена (используется кабель
mini-B), приложение будет функционировать в режиме USB-устройства.
При этом оно может быть подключено к хосту (например, к PC), чтобы
использоваться в качестве и8В-«мыши». Управление курсором на экране
монитора компьютера осуществляется с помощью акселерометра — путем
наклонов платы.
В случае, если ножка ID в разъеме USB платы подключена к общему
проводу (используется кабель mini-A), приложение будет функционировать
в режиме редуцированного USB-хоста. При этом к нему в свою очередь
можно подключать USB-устройства, например, стандартную и8В-«мышь».
В этом режиме при подключении к плате EVK1101 стандартной USB-
«мыши» светодиоды платы начинают мигать, и приложение циклически
выдает ASCII-указатель положения подключенной «мыши» во внешнее
устройство через порт МК USART1 в формате, показанном на рис. 35.10.
Настройки COM-порта: скорость 57600 бит/с, 8-N-1.
Точка входа приложения находится в файле hid_example.c. В автоном-
ном режиме (без использования FreeRTOS) функция приложения main()
выполняет задачи, определяемые файлами usb_task.c и device_mouse_hid_
task.c, в бесконечном цикле.
Приложение устройства/хоста USB HID базируется на выполнении трех
различных задач:
задача, связанная с обслуживанием интерфейса USB (исходный
файл usb_task.c), организует процесс ренумерации нижнего уровня
в режиме устройства или хоста. Как только в ходе выполнения
этой задачи детектируется полное завершение подключения через
USB, программа модифицирует различные флаги состояния, ко-
торые затем опрашиваются при выполнении задач более высокого
уровня;
• задача, связанная с выполнением операций приложения устройства
высокого уровня (исходный файл device_mouse_hid_task.c). Как толь-
ко устройство полностью завершило ренумерацию (получен запрос
DEVICE SET_CONFIGURATION), начинает выполняться задача
передачи данных (сообщений) для конечной точки IN;
• задача, связанная с выполнением операций приложения хоста вы-
сокого уровня (исходный файл host_mouse_hid_task.c). Как только
устройство подключено и полностью завершило ренумерацию, на-
чинает выполняться задача приема данных (сообщений) для конеч-
ной точки IN.
В проект входят следующие исходные файлы:
device_mouse_hid_task.c — операции высокого уровня приложения USB-
устройства «мыши»,
device_mouse_hid_task.h — заголовочный файл,
host_mouse_hid_task.c — операции высокого уровня приложения USB-
хоста «мыши»,
hostmousehidtask.h — заголовочный файл,
hid_example.c — пример приложения USB HID.
35.1.7.3 . Устройство/хост USB CDC
Проект USB_CDC, созданный на базе примера от Atmel, реализует при-
мер построения на базе отладочной платы EVK1101 устройства/хоста USB
CDC, связывающегося с компьютером через виртуальный COM-порт по-
следнего.
Рис. 35.10. Работа приложения USB HID
Приложение может работать в следующих режимах:
• USB-устройство,
• редуцированный USB-xoct,
• USB-устройство с двойной ролью (в зависимости от состояния нож-
ки идентификатора ID).
Последний из этих режимов задан по умолчанию.
Как уже упоминалось, устройство USB CDC может функционировать
как подключение к виртуальному COM-порту компьютера хоста, что очень
упрощает прикладное программирование на стороне хоста.
Для демонстрации работы приложения плата EVK1101 должна быть
подключена к физическому COM-порту компьютера через порт USART1.
Помимо этого необходимо также подключить плату EVK1101 к компью-
теру через порт USB с помощью кабеля mini-B. При первом подключе-
нии ОС Windows компьютера обнаруживает новое устройство USB CDC
и запускает «Мастер нового оборудования», как показано на рис. 35.11а.
В последовательности, показанной на рис. 35.116-д, необходимо произве-
сти установку на компьютер программного драйвера устройства USB CDC,
который находится в архиве AVR32-SoftwareFramework по пути: ...\Services\
USB\Class\CDC\Examples\Driver\. После этого в компьютере хоста будет соз-
дан виртуальный COM-порт (в компьютере автора — С0М5), как показано
на рис. 35.12.
В режиме устройства приложение работает следующим образом. На ком-
пьютере хоста необходимо запустить две программы последовательных тер-
миналов, например, Terminal (обеспечивает соединение через физический
COM-порт) и Hyper Terminal (обеспечивает соединение через виртуальный
COM-порт), как показано на рис. 35.13. Настройки COM-портов в обеих
программах: скорость 57600 бит/с, 8-N-1. После установления соединений
можно производить обмен данными между портами хоста, как показано на
рисунке.
В автономном режиме (без использования FreeRTOS) функция прило-
жения main() выполняет задачи, определяемые файлами usb_task.c, device_
cdc_task.c и host_cdc_task.c в бесконечном цикле.
Приложение устройства/хоста USB CDC базируется на выполнении
трех различных задач:
• задача, связанная с обслуживанием интерфейса USB (исходный
файл usb_task.c), организует процесс ренумерации нижнего уровня
в режиме устройства или хоста. Как только в ходе выполнения этой
задачи детектируется полное завершение подключения через USB,
программа модифицирует различные флаги состояния, которые за-
тем опрашиваются при выполнении задач более высокого уровня;
• задача, связанная с выполнением операций приложения устрой-
ства высокого уровня (исходный файл device_cdc_task.c). Как толь-
ко устройство полностью завершило ренумерацию (получен запрос
DEVICE SET_CONFIGURATION), задача создает виртуальный
COM-порт: все байты, принятые от USB, будут переадресованы
к USART и наоборот;
Мастер нового оборудования
£<й‘г пр юизгеаеи порог те» 7щег - и. Лноеленмого
И trkjM обеспечения на комп лгсрс у» »а леечном
комп лт ди ке сборном т... или на »еб узле Windows
Update (с ващто разр тления].
ПолитикаАйнФиденциалетюсти
а' зеигт п лак тзчегие к узлу ’ '/п'кт"' Update для
п .иска пре-р ммного беспечения?
Да. только в этот раз
Ла с »часикажльЛразпригкщклктетми
устройства
QHej не с этот рал
Для продолжения нажмите кн пку "Далее"
Рис. 35.11. Установка на PC драйвера для приложения USB CDC
Этот мастер пом г зет установить программное
USB De’.-ce
* I Если с устройством поставляется
~i-' установочный диск вставьте его.
Вы ' риге действие, i .оторое следует выполнить
, Аетсмагичес ая установка (рекомендуется]
@2.становка и указанно о места
Для продолжения нажмите кнопку "Далее"
,[ Дале ] Отмена ]
Мастер нового орорудвва тич
подождите .иастер устанавливает программное обеспечение...
inbsetsys
Ha CAWNDDW$^eniK4)RMHS
7‘ - — Г", т
• задача, связанная с выполнением операций приложения хоста высо-
кого уровня (исходный файл host_cdc_task.c). Как только устройство
подключено и полностью завершило ренумерацию, задача создает
виртуальный СОМ-порт.
В проект входят следующие исходные файлы (рис. 35.14):
device_cdc_task.c — операции высокого уровня приложения USB CDC-
устройства,
device_cdc_task.h — заголовочный файл,
Рис. 35.12. Создание виртуального COM-порта в PC
host_cdc_task.c — операции высокого уровня приложения USB CDC-
хоста,
host_cdc_task.h — заголовочный файл,
uart_usb_lib.c — функции управления USART USB,
uart_usb_lib.h — заголовочный файл,
cdc_example.c — пример приложения USB CDC.
COM Port
< СОЙ
и. COM2
СОМ?
'COM4
- Stolrate
= ‘ 30G
" CCEi .
5760Й. ., с 7
Г
С -4$Ш
~ Йб
Г 144®
Handshaking
I* fiTS?CT$ :
" XON/xOFF
oatatuk" ГэгИу
^.384®
Sjeamss-
’ Г AutpOs/Cffinect |8J3 Font Size
:Aefi®ive
йгад ад ад ж и
“Ладг ,8в‘ша Ядавд
дам ад да ви», йШ аддаи
ададад ад ад ж г ад, ад
aww w ад ад ж ад
' ” /ж
МП» » BI ГВД
да ад да Ж Шй
Йяйшлш ни ад « «А
ад' ОШ м жм»
i м ад ад ж эдад жми
TtaistnS Maer^S’ ;
рй-“ ““S'-jd:
]m53 "Td 'Mj|;
[row ‘ -I
Tien-rnft
; . j SEJOTB } ClfiCTR l CURRTS ; SETQTS:. j
Рис. 35.13. Работа приложения USB CDC
Рис. 35.14. Структура проекта USB_CDC
35.1.7.4 . Устройство/хост USB Audio
Проект USB_AUDIO, созданный на базе примера от Atmel, реализует по-
строение на базе отладочной платы EVK1101 аудиоустройства с интерфей-
сом USB — микрофона.
Приложение может работать в следующих режимах:
• USB-устройство,
• редуцированный USB-xoct,
• USB-устройство с двойной ролью (в зависимости от состояния нож-
ки идентификатора ID).
Последний из этих режимов задан по умолчанию. В случае, если ножка
ID в разъеме USB платы ни к чему не подключена (используется кабель
mini-B), приложение будет функционировать в режиме USB-устройства.
При этом оно может быть подключено к хосту (например, к PC), чтобы
использоваться как USB-микрофон. ОС Windows ХР и Windows 2000, уста-
новленные на компьютере автора, при подключении приложения детекти-
ровали его как источник звука для записи (рис. 35.15).
Следует заметить, что в составе платы EVK1101 микрофон физически
отсутствует. По этой причине приложение для демонстрации звука исполь-
зует звуковой необработанный файл (welcome.raw), записанный во встроен-
ную Flash-память МК. Для инициации поступления потока аудиоданных
из платы EVK1101 в хост необходимо нажать на «джойстик» платы.
В случае, если ножка ID в разъеме USB платы подключена к общему
проводу (используется кабель mini-A), приложение будет функционировать
в режиме редуцированного USB-хоста. При этом к нему в свою очередь
можно подключать периферийные USB-аудиоустройства, например, ми-
крофон. Встроенная программа автоматически обнаруживает поток аудио-
данных от микрофона и преобразует этот поток в аналоговый аудиосигнал
с помощью встроенного модуля ШИМ. При этом к МК AT32UC3A необ-
ходимо добавить внешнюю схему, изображенную на рис. 35.16. (Для МК
AT32UC3B следует использовать не выводы РВ19, РВ20, как показано на
Рис. 35.15. Обнаружение устройства USB Audio
схеме, а РА07, РА08.) К показанному на схеме разъему подключаются ана-
логовые аудионаушники.
В проект входят следующие исходные файлы (рис. 35.17):
device_audio_task.c — прикладные операции высокого уровня устрой-
ства USB Audio,
device_audio_task.h — заголовочный файл,
host_audio_task.c — прикладные операции высокого уровня хоста USB
Audio,
host_audio_task.h — заголовочный файл,
usb_stream_control.c — драйвер обработки аудиопотока,
usb_stream_control.h — заголовочный файл,
audio_example.c — пример приложения USB Audio.
Замечание автора. Автору не удалось добиться корректной работы этого
примера.
35.1.8. Использование RTC
Проект RTC, созданный на базе примера от Atmel, демонстрирует функ-
ционирование модуля счетчика реального времени (RTC), тактируемого от
встроенного генератора частоты 32 кГц.
При работе проекта результаты счета RTC каждую секунду выдаются
во внешнее устройство через порт МК USART1 в формате, показанном на
рис. 35.18. Настройки COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая
частота ЦПУ МК — 12 МГц.
В проект входят следующие исходные файлы:
Рис. 35.16. Внешняя схема для прослушивания звука с микрофона USB
Audio
Ж level)
Рис. 35.17. Структура проекта USB_AUDIO
rtc.c — драйвер счетчика реального времени RTC,
rtc.h — заголовочный файл,
rtc_example.c — приложение примера использования RTC.
35.1.9. Использование FLASHC
Проект FLASHC, созданный на базе примера от Atmel, демонстрирует опе-
рации доступа для чтения/записи к встроенной Flash-памяти МК, про-
изводимые с помощью программного драйвера контроллера Flash-памяти
(FLASHC). Приложение рассматривает Flash-память как память NVRAM.
При работе проекта содержимое блока Flash-памяти (NVRAM) после
сброса инициализируется некоторыми константами. Затем производится
программная очистка блока (все байты сбрасываются в 0x00), после чего
в него снова записываются значения инициализации. Информация о ходе
Рис. 35.18. Работа приложения использования RTC
и результатах производимых приложением операций выдается во внешнее
устройство через порт МК USART1 в формате, показанном на рис. 35.19.
Настройки COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая частота ЦПУ
МК - 12 МГц.
В проект входят следующие исходные файлы:
flashc.c — драйвер FLASHC,
flashc.h — заголовочный файл,
flash_example.c — приложение примера доступа к Flash-памяти.
35.1.10. Счет циклов ЦПУ
Проект CPU, созданный на базе примера от Atmel, иллюстрирует работу
счетчика циклов ЦПУ (см. раздел «Архитектура и программная модель
AVR32»). Счетчик циклов (регистр COUNT) инкрементируется один раз
в каждом тактовом цикле ЦПУ независимо от остановов конвейерной об-
работки и сбросов конвейера. Регистр COUNT доступен для программного
чтения/записи. Этот регистр может быть использован совместно с реги-
стром COMPARE для создания таймера, функционирующего по прерыва-
нию. После сброса регистр COUNT обнуляется, а его инкрементирование
не может быть заблокировано, поэтому оно происходит даже во время по-
ступления запроса прерывания от совпадения.
Регистр COMPARE (регистр сравнения для счетчика циклов) содержит
значение, с которым постоянно сравнивается содержимое регистра COUNT.
Регистр COMPARE доступен для чтения и записи. Когда содержимое ре-
гистров COMPARE и COUNT совпадает, генерируется запрос прерывания.
По умолчанию после сброса регистр COMPARE обнулен.
Приложение работает следующим образом. После сброса программа
проверяет корректность значений, которыми по умолчанию инициали-
зируются регистры COUNT и COMPARE. Когда в процессе выполнения
кода ЦПУ текущие значения COUNT и COMPARE совпадают, генериру-
Рис. 35.19. Работа приложения использования FLASHC
ется прерывание от совпадения. Сообщение об этом вместе с последними
загруженными значениями регистров COUNT и COMPARE выдается во
внешнее устройство через порт МК USART1 в формате, показанном на
рис. 35.20. Интервал между моментами генерации прерывания, выражен-
ный в циклах ЦПУ, равен:
(l/fcpu) х NB_CLOCK_CYCLE_DELAY_SHORT
в случае, если для задержки задано значение NB_CLOCK_CYCLE_DELAY_
SHORT = 83,3 мс, или равен:
(l/fcpu) х NB_CLOCK_CYCLE_DELAY_LONG
в случае, если для задержки задано значение NB_CLOCK_CYCLE_DELAY_
LONG = 1,67 с.
Синхронно с моментами генерации прерывания последовательно за-
жигаются и гаснут светодиоды платы: LED0 -> LED1 -» LED2 -» LED3
LED0... и т. д.
Настройки COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая частота
ЦПУ МК - 12 МГц (OSCO).
В проект входят следующие исходные файлы:
cycle_count_example.c — приложение примера счетчика циклов,
cycle_counter.h — интерфейс драйвера счетчика циклов.
35.1.11. Поддержка файловой системы FAT
35.1.11.1. Файловая система FAT с оболочкой Shell
Проект FAT, созданный на базе примера от Atmel, иллюстрирует поддержку
файловой системы FAT с размещением файлов в пространстве памяти микро-
Рис. 35.20. Работа приложения счета циклов ЦПУ
схемы SPI Dataflash AT45DBx. Приложение поддерживает связь в интерактив-
ном режиме с внешним устройством (последовательным терминалом) через
порт МК USART1. Настройки COM-порта: скорость 57600 бит/с, 8-N-1.
При обмене с терминалом приложение использует встроенный интер-
претатор командной строки (Shell), который обеспечивает доступ к файло-
вой системе в памяти Dataflash AT35DBx с помощью приведенного ниже
набора команд (рис. 35.21).
Команды Shell:
а:, Ь:... — перейти на выбранный диск,
mount drivename (а, b...) — перейти на выбранный диск,
cd dirname — путь к изменению каталога dirname,
Is — отобразить содержание текущего каталога,
mkdir dirname — создать каталог dirname,
cat filename — отобразить содержимое файла filename,
touch filename — создать файл filename,
disk. — получить информацию о количестве дисков,
append filename — добавить текст в конец файла,
mark — пометить текущий каталог,
goto — перейти к помеченному,
ср filename — копировать файл в помеченное,
df — получить информацию о свободном пространстве памяти,
fat — получить тип FAT для текущего диска,
rm filename — стереть файл или пустой каталог,
Гь тши! л byfJrajei .... г...; ... ,г..:. .... .... . ........... .... ... ... .......... ,с. .. .
COM Pert Baudrate Date fete Parity StopBSs Hand baking
Г C0M1 3£ffl Г 4803 > 384И , 5 * * . 1 • none
Dicwr rt . (Bi0 55003 ' r edd rTS/CTS
Г COM3 ’200 Г 14400 E780G Г 7 T4 тай? ’ f WMJFF
:£uir ||Л ЮМ4 24Q0 19200 11S20J; 1 RTS?CT5+XONZ<OFF
Г hDts/Laniect * | Font Size
p Dec Hex P Bin
дат» OK- 8 MH
• Т45£©Х We Ftoh’ <A ) Free Space. 83271S8 Byte* 6301384
Йт-
J-
Hume
J> Q.. 12345
W -О?'
> %
ш и west
1234
IB -fete
«ЙЙСВ.
№1JGB0G
: JC34XIO11O
siioi S1
винта»
Boicexu
feoooioa.
jtnipsecrt
trit if
GOOGIICI
aocowr
'ooictriKi
Тгэпипй
CLEAR CLRDTR CLRffTS < . SET RTS j
Рис. 35.21. Работа приложения поддержки FAT с оболочкой Shell
format drivename (a, b...) — форматировать выбранный диск (удалить
с него все данные),
format32 drivename (а, b...) — форматировать выбранный диск в FAT32
(удалить с него все данные), что возможно только в случае, если позволяет
размер диска,
mv src dst — переместить файл или каталог,
help — отобразить список доступных команд.
Пример копирования файла с помощью команд Shell: перейдя коман-
дой cd dimame в каталог адресата, в который нужно скопировать файл,
пометьте этот каталог командой mark. Потом перейдите в каталог, где нахо-
дится исходный файл filename, подлежащий копированию (каталог адреса-
та должен отличаться от каталога исходного файла). Используйте команду
ср filename. Возвратитесь в каталог адресата и введите команду Is. Теперь вы
должны видеть скопированный файл.
В проект входят следующие исходные файлы:
file.c — функции для доступа к файлам,
file.h — заголовочный файл,
fat.c — функции для доступа FAT,
fat.h — заголовочный файл,
fat_unusual.c — дополнительные функции для доступа FAT,
fs_com.h — структуры и определения для доступа к файловой системе,
navigation.c — функции для доступа навигаторов,
navigation.h — заголовочный файл,
ctrl_access.c — функции управления интерфейсами доступа к памяти,
ctrl_access.h — заголовочный файл,
fat_example.c — пример приложения FAT,
conf_access.h — файл конфигурации управления памятью для этого
примера,
conf_at45dbx.h — файл конфигурации памяти dataflash AT45DB для это-
го примера,
conf explorer.h — конфигурация проводника FAT для этого примера.
35.1.11.2. Файловая система FAT с интерфейсом POSIX
Подобно предыдущему проекту приложение FSA, созданное на базе при-
мера от Atmel, иллюстрирует поддержку файловой системы FAT с разме-
щением файлов в пространстве памяти микросхемы SPI Dataflash AT45DBX
и поддержкой связи в интерактивном режиме с последовательным термина-
лом через порт МК USART1. Настройки COM-порта: скорость 57600 бит/с,
8-N-1. Тактовая частота ЦПУ МК — 12 МГц.
При обмене с терминалом это приложение использует интерфейс
POSIX, обеспечивающий доступ к файловой системе в памяти Dataflash
AT35DBx (рис. 35.22).
Команды интерфейса POSIX:
1 — читать файл из файловой системы в памяти,
2 — соединить содержимое файла с содержимым другого файла,
3 — копировать содержимое файла в новый файл.
При работе этого приложения предполагается, что память Dataflash со-
держит файлы в корневом каталоге и они поддерживают файловую систему
FAT12/16/32.
В проект входят следующие исходные файлы:
file.c — функции для доступа к файлам,
file.h — заголовочный файл,
fat.c — функции для доступа FAT,
fat.h — заголовочный файл,
fat_unusual.c — дополнительные функции для доступа FAT,
fs_com.h — структуры и определения для доступа к файловой системе,
navigations: — функции для доступа навигаторов,
navigation.h — заголовочный файл,
fsaccess.c — функции для интерфейсов POSIX,
fsaccess.h — заголовочный файл,
ctrl_access.c — функции управления интерфейсами доступа к памяти,
ctrl_access.h — заголовочный файл,
fsaccess_example.c — пример приложения FAT.
35.1.12. Использование PDCA
Проект PDCA, созданный на базе примера от Atmel, демонстрирует опе-
рации периферийного контроллера прямого доступа к памяти (PDCA).
В данном примере модуль PDCA без участия ЦПУ производит перемеще-
ние массива данных («анимации» ASCII), хранимого во встроенной Flash-
' Tmninal *1 S by tSfaje*
COM Port -Baudrate Data bib P«rty
' r COMT ^ 300 "Г ЭЗв» г 5 :^..bcw
• COM2 Г KK ЖОО 56000 Г S £ odd
Abcu . . j; r COM3 Г120С -Г 14400 57600 Г? 2k
fttft COM4 240£) ,заю 115200= & 8 Г space
Stop Bits H^idshaktng
1 " none
RTS CTS
15 XWXDFF
2 RTS/CTS+XONMlFF
.r AirtoDts/Conneci |s" jrJ Fort Sb*
Receive?
. .CtJEAR, j
3-Cwtt^f;qrtert'Crtfrti|»toerie?a!:.<»e
tn
it?
W
И1Г
£Й1ЙИЩ
GHG10Q1
1
&1ИИЕП
оОШОш
ЖП0&ЙЕ>
i;io
.118"
ywwi fp Mi
yfransiwt
CLEAR J SEJ°TR_j„.9-.R0.TR
2 Ktkreatei^e
Рис. 35.22. Работа приложения поддержки FAT с оболочкой POSIX
памяти МК, во внешнее устройство через порт МК USART1, как показано
на рис. 35.23. Настройки COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая
частота ЦПУ МК — 12 МГц. «Анимация» ASCII содержится в двух файлах
(flscii_animl.h и азсИ_атт2.И).
В проект входят следующие исходные файлы:
pdca.c — драйвер PDCA,
pdca.h — заголовочный файл,
pdca_example.c — пример приложения использования PDCA.
35.1.13. Использование EIM
Проект EIC, созданный на базе примера от Atmel, демонстрирует операции
контроллера внешних прерываний (EIM). Приложение использует внешнее
прерывание, чтобы «пробудить» МК из «спящего» режима sleep (подрежим
static), в который он переходит после сброса. При нажатии на кнопку пла-
ты EVK1101, подключенную к линии РВО, МК «пробуждается», и светодиод
«LED0» начинает мигать. При повторном нажатии МК снова переходит в «спя-
щий» режим sleep (подрежим static). Тактовая частота ЦПУ МК — 12 МГц.
В проект входят следующие исходные файлы:
eic.c — драйвер EIM,
eic.h — заголовочный файл,
eic_examplel.c — приложение примера использования EIM.
35.1.14. Использование INTC
Проект INTC, созданный на базе примера от Atmel, демонстрирует опера-
ции контроллера прерываний (INTC). Драйвер INTC используется в этом
приложении для обработки прерывания USART RXRDY.
Приложение работает следующим образом. Плата EVK1101 подключа-
ется через порт МК USART1 к последовательному терминалу. Настройки
Рис. 35.23. Работа приложения использования PDCA
COM-порта: скорость 57600 бит/с, 8-N-1. Каждый символ, напечатанный
в передающем окне терминала (переданный в плату EVK1101), немедленно
передается приложением обратно и отображается в приемном окне терми-
нала, как показано на рис. 35.24. Тактовая частота ЦПУ МК — 12 МГц.
В проект входят следующие исходные файлы:
intc.c — драйвер контроллера прерываний,
intc.h — заголовочный файл,
exceptions — ассемблерный файл обработки прерываний и исключений
для GCC,
interrupt_usart_example.c — приложение примера использования кон-
троллера прерываний.
35.1.15. Использование PWM
Проект PWM, созданный на базе примера от Atmel, демонстрирует работу
модуля ШИМ (PWM). После сброса приложение производит конфигури-
рование модуля PWM и выводит его выходную импульсную последова-
тельность через линию ввода-вывода РА07 (PWM0), к которой подклю-
чен светодиод «LED0». Заданная частота импульсов ШИМ равна 22,5 Гц
с рабочим циклом, равным 3/4, что можно проконтролировать с помощью
осциллографа.
ЦПУ МК в этом приложении тактируется от встроенного RC-генератора
с частотой примерно 115200 Гц.
35.1.16. Использование ТС
Проект ТС, созданный на базе примера от Atmel, демонстрирует работу
одного из каналов таймеров-счетчиков МК (ТС). После сброса приложение
производит конфигурирование модуля ТС и выводит генерируемую кана-
лом ТС ШИМ-последовательность через линию ввода-вывода МК. Прило-
Рис. 35.24. Работа приложения использования INTC
жение использует канал 0 модуля таймеров-счетчиков и связанную с ним
линию TIOAO. При конфигурировании модуля ТС в качестве источника
синхронизации выбирается внутренний источник TIMER_CLOCK2. Так-
товая частота ЦПУ МК — 12 МГц.
Для контроля работы приложения (наблюдения выходного сигнала) не-
обходимо подключить вход осциллографа к линии ввода-вывода РВОО, на
которую в МК AT32UC3B отображена линия TIOAO.
Приложение работает следующим образом. 16-разрядный регистр
значения таймера-счетчика (CV) циклически изменяет свое содержимое
в пределах от 0x0000 до OxFFFF, задавая период генерируемой ШИМ-
последоватеьности. В выбранном канале состояние выхода переходит
в высокий уровень при достижении CV значения 0x0600, а затем в низ-
кий уровень при достижении значения 0x2000. Таким образом, рабо-
чий цикл генерируемой ШИМ-последовательности составляет (0x2000—
0х600)/0х10000, т. е. 10,16%.
Выбранное значение синхросигнала TIMER_CLOCK2 соответствует
clk_pba/4 и при заданной частоте clk_pba = 12 МГц равно 3 МГц. Сле-
довательно, частота генерируемой ШИМ-последовательности составляет
3000000/65535 = 45,7 Гц, а период — 21,845 мс. При рабочем цикле 10,16%
длительность импульса ШИМ составляет примерно 2,2 мс.
В проект входят следующие исходные файлы:
tc.c — драйвер ТС,
tc.h — заголовочный файл,
tc_examplel.c — приложение примера использования ТС.
35.1.17. Использование РМ
Проект РМ, созданный на базе примера от Atmel, демонстрирует работу
модуля менеджера питания МК (РМ). После сброса приложение произво-
дит конфигурирование модуля РМ таким образом, чтобы входящий в со-
став МК генератор 0 (OSCO) использовался в качестве источника задаю-
щей частоты МК. Кроме того, сигнал OSCO = 12 МГц подается на ножку
универсального синхросигнала GCLK2 (линия ввода-вывода РА30), где его
можно наблюдать с помощью осциллографа.
В проект входят следующие исходные файлы:
pm_examplel.c — приложение примера использования РМ.
35.1.18. Поддержка FreeRTOS.org
Проект FreeRtos, созданный на базе примера от Atmel, демонстрирует под-
держку МК AT32UC3B ОС FreeRTOS.org V4.6.0. FreeRTOS.orgTM пред-
ставляет собой компактное портируемое ядро ОС реального времени с от-
крытым исходным текстом, которое может использоваться в коммерческих
приложениях (www.freertos.org). FreeRTOS.org имеет следующие основные
особенности:
• ядро RTOS с приоритетными, совместными и гибридными вариан-
тами конфигурации,
• поддержка сопрограмм и подпрограмм,
• очень удобная для портирования структура кода, в основном, на-
писанного на С,
• отсутствие ограничений на количество выполняемых задач,
• отсутствие ограничений на количество используемых приоритетов,
• отсутствие ограничений на назначение приоритетов — более чем
для одной задачи может быть назначен один и тот же приоритет,
• поддержка очередей и семафоров для связи и синхронизации между
задачами или между задачами и прерываниями,
• свободно распространяемый исходный текст встроенного про-
граммного обеспечения,
• бесплатное (безгонорарное) использование,
• кросс-разработка с помощью стандартного хоста с ОС Windows,
• наличие демонстрационных приложений, сконфигурированных для
выбранных моделей компьютерных плат,
• конфигурация времени компиляции, позволяющая использовать
ОС при малом объеме наличной Flash-памяти,
• приложения, являющиеся производными SafeRTOS, обеспечивают
высокую степень секретности кода.
Приложение поддерживает связь в интерактивном режиме с внешним
устройством (последовательным терминалом) через порт МК USART1. На-
стройки COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая частота ЦПУ
МК — 12 МГц. После сброса в приемном окне терминала появляется со-
общение о старте FreeRTOS, как показано на рис. 35.25.
В проект входят следующие исходные файлы:
main.c — пример поддержки FreeRTOS.
Следует заметить, что в числе примеров для создания проектов
в AVR32Studio содержатся примеры построения устройств/хостов USB
Mass Storage, USB CDC, USB HID и USB Audio работающих, как автоном-
но (см. выше), так и под управлением FreeRTOS.org.
Рис. 35.25. Работа приложения поддержки FreeRTOS
35.2. Проекты для EVK1100
Когда эта книга уже готовилась к печати, в распоряжение автора поступи-
ла отладочная плата EVK1100, для которой также было создано несколько
проектов на базе примеров из AVR32-SoftyvareFramework. Все эти проекты
содержатся на прилагаемом к книге DVD-диске в каталоге рабочей области
PR_AVR32_AVR32Studio_A, созданной в AVR32Studio.
35.2.1. Поддержка символьного ЖКИ
Этот простой проект с именем DIP204, созданный на базе примера от At-
mel, демонстрирует поддержку МК AT32UC3A символьного 4-х строчного
ЖКИ EA-DIP204B-4NLW, установленного на плате EVK1100, а также под-
держу «штатных» кнопок платы и манипулятора типа «джойстик».
Приложение работает следующим образом. После сброса программа
выводит на экран ЖКИ некую начальную заставку (информация о на-
звании фирмы, оценочной платы, процессора). Путем нажатий на кнопку
«РВО» можно последовательно отобразить в нижней строке экрана полный
набор всех доступных для данного ЖКИ символов. С помощью кнопок
«РВ1» и «РВ2» можно соответственно уменьшить или увеличить яркость
подсветки ЖКИ. При манипуляциях с «джойстиком» его текущее поло-
жение отображается на ЖКИ стрелками соответствующего направления.
При нажатии на кнопку «джойстика» на ЖКИ восстанавливается началь-
ная заставка. Тактовая частота ЦПУ МК — 12 МГц.
В проект входят следующие исходные файлы:
dip204_example.c — приложение примера поддержки символьного
ЖКИ.
35.2.2. Control Panel как Web-сервер
Плата EVK1100 поставляется с прошитым в МК кодом демоприложения
«Панель управления» (Control Panel). Аналогичный код получается в ре-
зультате формирования созданного на базе соответствующего примера от
Atmel проекта CONT PANEL. От аналогичного проекта для платы EVK1101
этот проект отличается в частности тем, что использует аппаратный мо-
дуль Ethernet МАС (МАСВ), входящий в состав МК AT32UC3A. Наличие
в составе AT32UC3A модуля МАСВ позволяет реализовать на базе пла-
ты EVK1100 весьма актуальное на сегодняшний день приложение — Web-
сервер. При этом содержимое Web-сервера хранится в энергонезависимой
памяти вне МК и может целиком задаваться пользователем. В описании
приложения указывается, что для хранения содержимого Web-сервера мо-
жет использоваться SPI Dataflash AT45DBx платы EVK1100 или карта па-
мяти SD/MMC (она должна быть вставлена в слот SD/MMC платы).
Приложение Control Panel выполняется под управлением ОС freeRTOS.
org. Управляющая программа Control Panel реализует сбор данных — нако-
пление результатов АЦП МК при измерениях сигналов от датчиков платы
EVK1100 (датчика освещенности, датчика температуры, потенциометра,
34, V-3/1350? 0Г > 01
Set USB key ►
HfMi । HU-.32 l.<3
^/13/206? 10=25=52.
192.160.0,2
JaitinQ for- Host
*"WL ЙН-32 UC3
fe?13/2007 ®< 5D> 21
192-168-0 2 f
JSB t'tass StOf -ЭЭё
QT№L ч;Ш UCSU
Рис. 35.26. Заставки ЖКИ EVK1100 при работе приложения Control Panel
джойстика, кнопок). Собранные данные сохраняются приложением в SPI
Dataflash в текстовых файлах файловой системы FAT. Доступ к файлам
собранных данных может быть осуществлен с помощью локального под-
ключения к плате через USART или USB, а также с помощью удаленного
или локального подключения через Интернет (Web-сервер).
Конфигурирование Control Panel (управление датчиками, светодио-
дами, задание сетевых адресов и масок, системного времени/даты и т. д.)
также можно осуществлять либо локально (через USART или USB), либо
удаленно (через Интернет).
В части реализации функций Web-сервера приложение Control Panel
работает следующим образом. После сброса на экране ЖКИ отображает-
Рис. 35.27. Окно сетевых подключений в ОС в Windows ХР
Ce WBwe податечении
Фаил Правка Вид Избранное Сервис
, Cer J* мдачи
Пч| Самзн*» нового
подключения
ф Установить доязшнюю
сеть иж- сеть малого офиса
ф И>«ннъ параметры
t рзндиаузра Windows
ф {гжчениесетевого
устройства
Перетаняеание
подключения
У) Изменение настроек
подключения
Допогмггельна Справка
Палки '
ЛВС или высокоскоростной Интернет
Другие места
Q> fl <р Юподвгытя
•Л Л»«вт^е»ввв*
Рис. 35.28. Контекстное меню сетевого подключения
ся начальная заставка, вид которой показан на рис. 35.26а. При подклю-
чении платы к сетевому разъему порта Ethernet PC с помощью прямого
(неперекрестного) сетевого Ethernet-кабеля с разъемами RJ45 (UTP Patch
1.5m Cat.5E, gray), входящего в состав комплекта EVK1100, программа при-
ложения обнаруживает это подключение и отображает на второй строке
ЖКИ IP-адрес Web-сервера EVK1100, по умолчанию равный 192.168.0.2
(рис. 35.266).
Следующим шагом необходимо произвести настройку сетевого под-
ключения в PC. Для этого (при работе в ОС Windows ХР) выбираем в меню
Пуск>Подключение>Отобразить все подключения, после чего откроется
окно сетевых подключений, как показано на рис. 35.27. Выбрав уже име-
ющееся (или создав новое) подключение ЛВС или высокоскоростной ин-
тернет, необходимо кликнуть на его иконке правой кнопкой «мыши» для
отображения его контекстного меню, как показано на рис. 35.28. При вы-
боре в этом меню пункта Свойства откроется окно свойств выбранного
подключения, показанное на рис. 35.29. В этом окне необходимо пометить
галочкой пункт Протокол Интернета (TCP/IP) и установить на нем курсор,
а затем кликнуть на кнопке Свойства. В открывшемся окне, показанном
Рис. 35.29. Окно свойств выбранного сетевого подключения
Рис. 35.30. Окно свойств протокола Интернета (TCP/IP) выбранного сете-
вого подключения
на рис. 35.30, необходимо активировать опцию Использовать следующий
IP-адрес и задать значение IP-адреса PC, по молчанию равное 192.168.0.56,
а также значение маски подсети, по умолчанию равное 255.255.255.0. В за-
вершение следует кликнуть на кнопке ОК окна.
После подключения платы к PC и настройки сетевого подключения
необходимо включить его при помощи команды Включить в контекстного
меню (см. рис. 35.28). Проконтролировать включение можно командой Со-
стояние, после выполнения которой отобразиться окно состояния подклю-
чения, показанное на рис. 35.31.
Для демонстрации работы Web-сервера нужно запустить на PC лю-
бой Web-браузер, например, Microsoft Internet Explorer, в адресной стро-
ке которого необходимо набрать заданный по умолчанию IP-адрес Web-
сервера — 192.168.0.2. После этого должно установиться сетевое соединение
и приложение загрузит в браузер Web-страницу, показанную на рис. 35.32.
Эта операция производится приложением только в том случае, если сам
пользовательский Web-сервер еще не создан. Страница содержит руковод-
ство по созданию содержимого Web-сервера. В нем указывается, что поль-
Рис. 35.31. Окно текущего состояния выбранного сетевого подключения
Рис. 35.32. Загрузка в браузер Web-страницы «пустого» сервера
зователю необходимо записать содержимое (файлы) Web-сервера в энерго-
независимую память платы, что можно сделать двумя способами:
1. Перевести приложение Control Panel в режим USB-устройства Mass
Storage. Для этого нужно подключить плату к хосту (PC) через порт
USB с использованием кабеля USB mini-B, а затем однократно нажать
на «джойстик» платы. При этом на ЖКИ последовательно появятся
заставки, показанные на рис. 35.26в, рис. 35.26г, а ОС Windows ХР на
PC должна обнаружить появление в системе нового диска (дисков)
памяти. Значок антенны в правой части ЖКИ (рис. 35.26г) при этом
будет мигать. После обнаружения Windows дисков USB Mass Storage,
необходимо отформатировать их средствами Windows, а затем скопи-
ровать на один из них каталог Web со всем его содержимым. Указан-
ный каталог находится по пути CONT_PANEL\src\DA TAFLASH_ CON-
TENT\Web, где CONT_PANEL — каталог этого проекта в каталоге
рабочей области PR_AVR32_AVR32Studio_A. Аналогичный каталог
Web имеется также в архиве AVR32-SoftwareFramework по пути APPLI-
CATIONS\EVKHOO-CONTROL-PANEL\DATAFLASH_CONTENT\
Web. Следует заметить, что во время операций с дисками USB Mass
Storage Web-сервер функционировать не будет. Помимо записи в па-
мять платы файлов Web-сервера пользователь может создать в кор-
невой директории диска USB Mass Storage еще два пустых каталога:
LOG и CFG. При работе Web-сервера приложение будет записывать
в них текстовые файлы результатов измерений сигналов с датчиков,
а также файлы изменений системной конфигурации, производимых
пользователем. После завершения операций с USB Mass Storage при-
Рис. 35.33. Загрузка в браузер главной страницы Web-сервера
Vvstew t.Gi.h^aticn Micioseft li.teiuH txphref . ”
Файл Правка Вид Избранное Сервис Справка *
;':У Назад ’ Поиск ^Избранное **
Щ http; /Д 92.168.0,2/config.htm
1 Переход jАнгло-Русский ^[общий rr Щ @ *4
censors Gr^jphk Acwarors - Sermon- ОвнЯдмгмюп - System Conflyur-.ition - M*>fp
Network. Gonftquraffon
Ly гр
fHJIP
MAC address : ^00:04:25:00:01:02 J
IP address : [l92 168-0.2 ____ J
Subnet IP Mask : [265.255.255.0 .........|
Gateway IP address i [l92.168.0.1 7]
’SMTP
!T<wt
Time
Server IP Address
Data Гоудег
1
Server UDP port
Retry Delay
ZZ1
Current Time : JiW4B/07 00:01:02
X
Рис. 35.34. Загрузка в браузер страницы системной конфигурации Web-
сервера
Рис. 35.35. Формат выдачи данных приложением Control Panel через
USART1
ложение следует вернуть в режим Web-сервера путем однократного
нажатия на «джойстик» (см. рис. 35.266).
2. Перевести приложение Control Panel в режим USB-хоста Mass Storage.
Используя кабель USB mini-A, подключить к плате дополнитель-
ное USB-устройство памяти (USB-key), на которое предваритель-
но должен быть записан каталог Web. Используя соответствующие
команды встроенного меню приложения, выбираемые и запускае-
мые «джойстиком» и отображаемые на ЖКИ, необходимо загрузить
в память платы каталог Web. С помощью соответствующих команд
меню можно также скопировать на USB-key файлы результатов из-
мерений и файлы конфигурации системы.
Примечание автора: Руководство по созданию Web-сервера явно не ого-
варивает, на какой из дисков USB Mass Storage следует записывать каталог
Web, однако, у автора Web-сервер работал корректно только в том случае,
если каталог Web был записан в SPI Dataflash.
Окно браузера с загруженной главной страницей Web-сервера, показано
на рис. 35.33. На рис. 35.34 показана страница системной конфигурации.
При работе Control Panel связь с внешними устройствами осущест-
вляется также через порт МК USART1. Данные выдаются приложением
в формате, показанном на рис. 35.35. Настройки COM-порта: скорость
57600 бит/с, 8-N-1.
35.2.3. Использование интерфейса Ethernet МАС (МАСВ)
Проект ЕМАС, созданный на базе примера от Atmel, также использует мо-
дуль Ethernet МАС (МАСВ) МК AT32UC3A. Тактовая частота ЦПУ МК —
Рис. 35.36. Окно запуска программы в ОС в Windows ХР
48 МГц. Для демонстрации работы этого приложения используется ком-
пьютерная утилита ping, на входящие запросы которой плата EVK1100 дает
ответы. По умолчанию плата EVK1100 имеет IP-адрес, равный 192.168.0.2,
а PC должен иметь IP-адрес, равный 192.168.0.1. (Этот адрес следует за-
дать в окне, показанном на рис. 35.30.) Как и в предыдущем проекте, для
подключения к PC используется прямой сетевой Ethernet-кабель. После
подключения платы к PC необходимо включить в Windows нужное сетевое
подключение.
Для запуска утилиты ping (при работе в Windows ХР) следует выбрать
в меню Пуск>Выполнить..., а затем в открывшемся окне (рис. 35.36) ввести
команду: w
ping 192.168.0.2 -t
После этого откроется окно, показанное на рис. 35.37, отражающее
процесс и результаты выполнения утилиты ping. Содержимое окна, пока-
занное на рисунке, указывает на установленное сетевое соединение между
PC и платой, при котором успешно производится обмен данными через
Ethernet без их потерь. Ключ «-Л> в команде задает неограниченное число
пакетов в посылке. .
При работе этого приложения связь с внешними устройствами осу-
ществляется также через порт МК USART1. Данные выдаются приложени-
ем в формате, показанном на рис. 35.38. Настройки COM-порта: скорость
57600 бит/с, 8-N-1.
В проект входят следующие исходные файлы:
macb.c — драйвер МАСВ,
macb.h — заголовочный файл,
Рис. 35.37. Окно, отражающее процесс и результаты выполнения утилиты
ping
Рис. 35.38. Формат выдачи данных приложением ЕМАС через USART1
macb_example.c — пример приложения МАСВ,
conf_eth.h — файл конфигурации сети стандарта Ethernet.
35.2.4. Использование аудио ЦАП битового потока (ABDAC)
Проект ABDAC, созданный на базе примера от Atmel, демонстрирует рабо-
ту модуля аудио-ЦАП битового потока, входящего в состав МК AT32UC3A.
Программа приложения обеспечивает генерацию на выходах DATAO (РВ02)
и DARA1 (РВОЗ) ABDAC импульсной последовательности сложной формы.
Параметры этой последовательности задается таблицами данных в файле
проекта dac_example.c.
В проект входят следующие исходные файлы:
abdac.c — драйвер ABDAC,
abdac.h — заголовочный файл,
dac_example.c — пример приложения ABDAC.
35.2.5. Использование встроенного АЦП
Проект ADC, созданный на базе примера от Atmel, производит аналого-
цифровые преобразования с помощью встроенного модуля АЦП МК
AT32UC3A. В качестве источников входного измеряемого напряжения про-
грамма использует сигналы от установленных на плате EVK1100 датчиков
освещенности, температуры, а также напряжение на подвижном контакте
потенциометра.
При работе проекта результаты АЦП выдаются во внешнее устройство
через порт МК USART1 в формате, аналогичном показанному на рис. 35.7.
Настройки COM-порта: скорость 57600 бит/с, 8-N-1. Тактовая частота ЦПУ
МК - 12 МГц.
В проект входят следующие исходные файлы:
adc.c — драйвер АЦП,
adc.h — заголовочный файл драйвера АЦП,
adc_example.c — приложение примера использования АЦП.
ПРИЛОЖЕНИЯ
ЭЛЕКТРИЧЕСКИЕ
ХАРАКТЕРИСТИКИ МК
ПОДСЕМЕЙСТВА AT32UC3A
Приложение 1. Предельно допустимые параметры
AT32UC3A
Рабочий диапазон температур
Диапазон температур хранения
Внешнее напряжение на ножках входов относительно
общего провода
Максимальное рабочее напряжение (VDDCORE, VDDPLL)
Максимальное рабочее напряжение (VDDIO)
Суммарный постоянный (DC) вытекающий ток
через линии ввода-вывода:
для исполнения в корпусе TQFP100
дляисполнения в корпусе LQGP144
-40 °C... +85 °C
-60 °C... +150 °C
-0,3В... 5,5В
1,95В
3,6В
370 мА
470 мА
Приложение 2. Характеристики по постоянному току
(статические) AT32UC3A
Нижеприведенные характеристики справедливы для рабочего температур-
ного диапазона: ТА = —40 °C... 85 °C, если не указано иное, и сертифици-
рованы для температуры перехода Т; до 100 °C.
Обо- значе- ние Параметр Условия Мин. значе- ние Тип. зна- чение Макс. значе- ние Ед. из- мере- ния
V v VD- Напряжение 1,65 1,95 В
DCORE питания ядра
v VDDBU Напряжение питания системы отладки 1,65 1,95 В
v * VDDOSC Напряжение 1,65 1,95 В
питания генератора
Приложение 2. (окончание)
Обо- значе- ние Параметр Условия Мин. значе- ние Тип. зна- чение Макс, значе- ние Ед. из- мере- ния
V v VDDPLL Напряжение пита- ния системы PLL 1,65 1,95 в
V V VDDUSB Напряжение пита- ния модуля USB 1,65 1,95 в
V V VDDIO Напряжение пи- тания периферии 3,0 3,6 в
ввода-вывода
Vref Опорное напряжение АЦП 2,6 3,6 в
VIL Входное напряжение низкого уровня -0,3 +0,8 в
V,h Входное напряжение 2,0 V + v VDDIO в
высокого уровня 0,3
v0L Выходное напряже- ние низкого уровня 0,4 в
V VOH Выходное V = v VDDIO V - * VDDIO в
напряжение V или v VDDIOM 0,4
высокого уровня v v VDDIOP
1XPULLUP Сопротивление вну- тренних подтянутых к «плюсу» питания резисторов 10 кОм
Io Выходной ток 4 мА
IsCR Статический Режим низ- 10 мкА
ток встроенного кого потре-
стабилизатора бления (stop,
deep stop или static) TA =25 °C
Приложение 3. Характеристики встроенного
стабилизатора AT32UC3A
Обозна- чение Параметр Условия Мин. значе- ние Тип. зна- чение Макс, значе- ние Ед. изме- рения
V V VDDIN Напряжение питания (входное) 2,7 3,3 3,6 В
v v VDDOUT Напряжение питания (выходное) 1,81 1,85 1,89 В
Приложение 3.
(окончание)
Обозна- чение Параметр Условия Мин. значе- ние Тип. зна- чение Макс, значе- ние Ед. изме- рения
^оит Максимальный выходной постоянный ток при VyDDIN “ 3,3В 100 мА
Максимальный выходной постоянный ток при VyDDIN “ 2,7В 90 мА
^INl Входной внешний конденсатор 1 стабилизатора NPO 1 нФ
Cjn2 Входной внешний конденсатор 2 стабилизатора X7R 4,7 мкФ
с ^OUTl Выходной внешний конденсатор 1 стабилизатора NPO 470 пФ
с ^OUT2 Выходной внешний конденсатор 2 стабилизатора X7R 2,2 мкФ
Приложение 4. Аналоговые характеристики AT32UC3A
Обозна- чение Параметр Условия Мин. значе- ние Тип. зна- чение Макс, значе- ние Ед. из- мере- ния
V VADVREF Аналоговое опорное напряжение (входное) 2,6 3,6 в
с VREF1 Конденсатор 1 на входе опорного напряжения 10 нФ
с VREF2 Конденсатор 2 на 1 мкФ
входе опорного
напряжения
Приложение 5. Характеристики модуля BOD AT32UC3A
Значение BODLEVEL Тип. значение Макс, значение Ед. измерения
ооооооь 1,58 В
010111b 1,62 В
011111b 1,67 В
Приложение 5.
(окончание)
Значение BODLEVEL Тип, значение Макс, значение Ед. измерения
100111b 1/77 В
111111b 1,92 В
Поле BODLEVEL находится в регистре Flash-памяти FGPFR
Приложение 6. Ток потребления AT32UC3A
Приведенные ниже значения параметров измерены в следующем эксплуа-
тационном режиме:
•vDDI0 = з,зв,
•V = v == 18В
yddcore ’ddsys
•Тд = 25 °C,
А ’
* линии ввода-вывода неактивны.
Внешняя частота тактирования ядра подается на вывод XIN0 с исполь-
зованием PLL, причем 140 МГц <fpll0 <160 МГц и 10 МГц <fxin0 <12 МГц.
Приведенные ниже значения потребляемого тока измерены на входе
и на выходе встроенного стабилизатора в соответствии со схемой, изобра-
женной в Приложении 7.
Режим Условия Типовое значение потребляе- мого тока Еди- ница изме- рения
Актив- ЦПУ выполняет программу из Flash- f= 12 МГц 9 мА
ный памяти, тактовая частота вырабатыва- ется PLL0 и равна f, встроенный стаби- f = 24 МГц 16 мА
лизатор включен, на вход XIN0 подана f = 36 МГц 23 мА
внешняя частота, XIN1 и XIN32 оста- f=50 МГц 31,5 мА
новлены, PLL0 функционирует, все пе- риферийное тактирование активно, встроенные подтягивающие к «плюсу» питания резисторы на линиях ввода- вывода включены, к JTAG не подклю- чены внешние подтягивающие к «плю- су» питания резисторы f=60 МГц 37 мА
Стати- ческий ЦПУ находится в статическом режиме, встроенные подтягивающие к «плюсу» питания резисторы на линиях ввода- АшрО (см. При- ложение 7) 25 мкА
вывода включены, все периферийное тактирование неактивно, ножки DM и DP подключены к общему проводу, XINO, XIN1 и XIN32 остановлены Ampl (см. При- ложение 7) 14 мкА
Приложение 7.
Приложение 8. Ток потребления периферийных
устройств в активном режиме AT32UC3A
Приведенные ниже значения параметров измерены в следующем эксплуа-
тационном режиме:
•VDDIO = з.зв,
•V = V = 18В
Y DDCORE Y DDSYS ’ ’
♦ТА = 25 °C,
• линии ввода-вывода неактивны.
Периферийное устройство Типовое значение потребляемого тока Единица измерения
GPIO 37
SMC 10
SDRAMC 4
ADC 18
Приложение 8.
(окончание)
Периферийное устройство Типовое значение потребляемого тока Единица измерения
EBI 31
INTC 25
TWI 14 мкА/МГц
МАСВ 45
PDCA 30
PWM 36
RTC 7
SPI 13
SSC 13
TC 10
USART 35
USB 45
Приложение 9. Характеристики сигналов
синхронизации AT32UC3A
Приведенные ниже значения параметров справедливы для следующих
условий:
VDDCore — 1’8 В’
• Температура окружающей среды = 25 °C.
Обозна- Параметр Усло- Мин. Макс. Ед. из-
чение вия значение значение мере- ния
VCcPCPu) Тактовая частота ЦПУ 66 МГц
^CPCPU Период тактовой частоты ЦПУ 15,15 нс
V(tCPPBA) Тактовая частота РВА 66 МГц
t-CPPBA Период тактовой частоты РВА 15,15 нс
V(IcPPBb) Тактовая частота РВВ 66 МГц
^CPPBB Период тактовой частоты РВВ 15,15 нс
^/^cpxin) Тактовая частота XIN 3 24 МГц
^CPXIN Период тактовой частоты XIN 20,0 нс
^CHXIN Полупериод высокого уровня тактовой частоты XIN 0,4 х tCPXIN 0,6х tCPXIN
^CLXIN Полупериод низкого уровня 0,4 х tCPXIN 0,6х tCPXIN
тактовой частоты XIN
Приложение 10. Характеристики генератора 32 кГц
AT32UC3A
Приведенные ниже значения параметров справедливы для диапазона тем-
ператур окружающей среды: -40 °C ... +85 °C.
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс. значе- ние Ед. из- мере- ния
V(tcP32KHz) Частота кварцевого резонатора 32 768 Гц
Рабочий цикл 40 50 60 %
cL Эквивалентная емкость нагрузки 6 12,5 пФ
CL = 6 пФ 600 мс
Цт Время запуска С = 12,5 пФ 1200 мс
lose Ток потребления Активный режим Ждущий режим 1,8 0,1 мкА мкА
Приложение 11. Характеристики задающего генератора
AT32UC3A
Приведенные ниже значения параметров справедливы для диапазона тем-
ператур окружающей среды: —40 °C ... +85 °C.
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс. значе- ние Ед. из- мере- ния
I/^CPMAIn) Частота кварцевого резонатора 0,45 16 МГц
Внутренняя емкость нагрузки (CL1=CL2) TBD пФ
cL Эквивалентная емкость нагрузки TBD пФ
Рабочий цикл TBD TBD TBD %
Чт Время запуска TBD мс
Iqsc Ток потребления Активный режим Ждущий режим TBD TBD мкА мкА
Приложение 12. Характеристики PLLAT32UC3A
Приведенные ниже значения параметров справедливы для диапазона тем-
ператур окружающей среды: —40 °C ... +85 °C.
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. из- мере- ния
F 1 OUT Выходная частота 80 240 МГц
Fin Входная частота TBD TBD МГц
I PLL Ток потребления Активный режим Ждущий режим TBD TBD мА мкА
Приложение 13. Характеристики производительности
АЦП AT32UC3A
Параметр Условия Мин. значе- ние Тип. значе- ние Макс. значе- ние Ед. из- мере- ния
Тактовая частота АЦП Режим 10-разрядного разрешения 5 МГц
Тактовая частота АЦП Режим 8-разрядного разрешения 8 МГц
Время запуска Возврат из Idle Mode 20 мкс
Время выборки канала и удержания 600 НС
Время преобразования Тактовая частота АЦП 5 МГц 2 мкс
Время преобразования Тактовая частота АЦП 8 МГц 1,25 мкс
Производительность Тактовая частота АЦП 5 МГц 384* kSPS
Производительность Тактовая частота АЦП 8 МГц 5332 kSPS
1 Соответствует 13 тактовым циклам частоты 5 МГц: 3 тактовых цикла на вы-
борку канала и удержание и 10 тактовых циклов на преобразование.
2 Соответствует 15 тактовым циклам частоты 8 МГц: 5 тактовых циклов на
выборку канала и удержание и 10 тактовых циклов на преобразование.
Приложение 14. Характеристики входа опорного
напряжения АЦП AT32UC3A
Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значение Ед. из- мере- ния
Диапазон входного напряжения ADVREF 2,6 VDDANA В
Составной ток через вывод ADVREF В течение 13 выборок при тактовой частоте АЦП 5 МГц 200 250 мкА
Ток потребления TBD мА
Приложение 15. Характеристики аналоговых входов
AT32UC3A
Параметр Мин. значе- ние Тип. значе- ние Макс. значе- ние Ед. из- мерения
Диапазон входного напряжения 0 V VADVREF В
Входной ток утечки TBD мкА
Входная емкость TBD пФ
Приложение 16. Характеристики точности
и разрешающей способности АЦП
AT32UC3A
Параметр Условия Мин. значе- ние Тип. значе- ние Макс. значе- ние Ед. из- мерения
Разрешающая способность Тактовая частота АЦП 5 МГц 10 разряды
Абсолютная точность Тактовая частота АЦП 5 МГц 0,8 МЗР
Интегральная нелинейность Тактовая частота АЦП 5 МГц 0,35 0,5 МЗР
Дифференциальная нелинейность Тактовая частота АЦП 5 МГц 0,3 0,5 МЗР
Ошибка смещения Тактовая частота АЦП 5 МГц -0,5 0,5 МЗР
Ошибка усиления Тактовая частота АЦП 5 МГц -0,5 0,5 МЗР
Для получения дополнительной информации о динамических характери-
стиках модуля EBI, контроллера SDRAM, модулей JTAG/ICE, SPI, МАСВ,
контроллера Flash-памяти рекомендуется обратиться к источнику [3].
Топология корпусов МК подсемейства AT32UC3A иллюстрируется При-
ложением 17 и Приложением 18.
Приложение 17.
Г 0 080
LEAD CDPLANARITY
М Mi п. v| Мах IN Mi n 2H Max
А — 1 20 — 047
А1 0 95 1. 05 037 041
С 0. 09 0. 20 004 008
В 16 00 BSC 630 BSC
D1 1 4. 00 BSC . 551 BSC
Е 16 00 BSC . 630 BSC
Е1 1 4. 00 BSC 551 BSC
J 0 05 0. 15 002 006
L 0 45 0. 75 . 018 030
е 0 50 BSC . 020 BSC
F 0. 1 7 0. 27 007 . 011
Приложение 18.
I UP VIEW
Г О 102 MAX
LEAD CDPLANARITY
M Mi n Max IN Mi n CH Max
A - 1 60 - 063
C 0. 09 0 20 . 004 008
A3 1 35 1 45 053 . 057
D 21 90 22 10 862 . 870
DI 19 90 20. 10 783 . 791
E 21. 90 22. 1 0 862 870
El 1 9. 90 20. 1 0 . 783 791
J 0 05 0. 1 5 002 . 006
L 0 45 0 75 018 . 030
e 0. 50 BSC 0197 BSC
F 0 22 BSC 009 BSC
ЭЛЕКТРИЧЕСКИЕ
ХАРАКТЕРИСТИКИ МК
ПОДСЕМЕЙСТВА AT32UC3B
Приложение 19. Предельно допустимые параметры
AT32UC3B
Рабочий диапазон температур -40 °C... +85 °C
Диапазон температур хранения -60 °C... +150 °C
Внешнее напряжение на ножках входов относительно общего провода -0,3В... 5,0В
Максимальное напряжение на выводе RESET N 3,3 В
Максимальное рабочее напряжение (VDDCORE, VDDPLL) 1,95В
Максимальное рабочее напряжение (VDDIO) Суммарный постоянный (DC) вытекающий ток через линии ввода-вывода: 3,6В
для исполнения в 48-выводном корпусе 200 мА
для исполнения в 64-выводном корпусе 265 мА
Приложение 20. Характеристики по постоянному току
(статические) AT32UC3B
Нижеприведенные характеристики справедливы для рабочего температур-
ного диапазона: ТА = -40 °C... 85 °C, если не указано иное, и сертифици-
рованы для температуры перехода Т} до 100 °C.
Обозна- чение Параметр Условия Мин. значе- ние Тип. зна- чение Макс, значе- ние Ед. из- мере- ния
V V VDDCORE Напряжение питания ядра 1,65 1,95 в
v v VDDPLL Напряжение питания системы PLL 1,65 1,95 в
v v VDDIO Напряжение питания периферии ввода-вывода 3,0 3,6 в
Приложение 20.
(окончание)
Обозна- чение Параметр Условия Мин. значе- ние Тип. зна- чение Макс, значе- ние Ед. из- мере- ния
V V REF Опорное напряжение АЦП 2,6 3,6 в
V1L Входное на- пряжение низ- кого уровня -о,з +0,8 в
V,h Входное на- 2,0 V * VDDIO в
пряжение вы- сокого уровня + 0,3
V0L Выходное на- пряжение низ- кого уровня 0,4 в
V0H Выходное на- V = V V VDDIO V VDDIOM или V v VDDIO в
пряжение вы- сокого уровня v v VDDIOP - 0,4
n 1XPULLUP Сопротивле- ние внутрен- них подтянутых к «плюсу» пита- ния резисторов TBD кОм
Io Выходной ток 4 мА
Ise Статический V = v DDCORE ТА = 6 мкА
ток = 1,8 В, MK = = 25 °C
в статичес-
ком режиме, тА = 25 мкА
RESET.N = 1 : = 85 °C
IsCR Статический Режим низкого потре- 10 мкА
ток бдения (stop, deep stop
встроенного или static) ТА = 25 °C
стабилизатора
Приложение 21. Характеристики встроенного
стабилизатора AT32UC3B
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс. значе- ние Ед. из- мере- ния
V VDDIN Напряжение питания (входное) 2,7 3,3 3,6 В
V VDDOUT Напряжение питания (выходное) 1,81 1,85 1,89 В
Приложение 21.
(окончание)
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. из- мере- ния
^оит Максимальный вы- ходной постоянный ток при VVDDIN = 3,3В 100 мА
Максимальный вы- ходной постоянный ток при VVDDIN = 2,7В 90 мА
^INl Входной внешний конденсатор 1 стаби- лизатора NPO 1 нФ
CjN2 Входной внешний конденсатор 2 стаби- лизатора X7R 4,7 мкФ
с ^OUTl Выходной внешний конденсатор 1 стаби- лизатора NPO 470 пФ
с ^OUT2 Выходной внешний конденсатор 2 стаби- лизатора X7R 2,2 мкФ
Приложение 22. Аналоговые характеристики AT32UC3B
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. из- мере- ния
V VADVREF Аналоговое опорное напряжение (входное) 2,6 3,6 в
с ^VREFl Конденсатор 1 на входе опорного на- пряжения 10 нФ
с ^VREF2 Конденсатор 2 на входе опорного на- пряжения 1 мкФ
Приложение 23. Характеристики модуля BOD AT32UC3B
Значение BODLEVEL Тип. Макс. Ед. измерения значение значение
ооооооь 010111b 1,58 В 1,62 В
Приложение 23. (окончание)
Значение BODLEVEL Тип. значение Макс, значение Ед. измерения
ошиь 1,67 в
100111b 1,77 в
111111b 1,92 в
Поле BODLEVEL находится в Fuse-регистре общего назначения Flash-памяти
Приложение 24. Ток потребления AT32UC3B
Приведенные ниже значения параметров измерены в следующем эксплуа-
тационном режиме:
•VDDIO = 3,3 в,
•V = V = 18 В
v DDCORE v DDSYS
•ТА = 25 °C,
А ’
• линии ввода-вывода неактивны.
Внешняя частота тактирования ядра подается на вывод XIN0 с ис-
пользованием PLL, причем 140 МГц <f110 <160 МГц и 10 МГц <f .o
<12 МГц.
Приведенные ниже значения потребляемого тока измерены на входе
и на выходе встроенного стабилизатора в соответствии со схемой, изобра-
женной в Приложении 7.
Режим Условия Типовое значение потребляе- мого тока Ед. изме- рения
Актив- ЦПУ выполняет программу из f = 12 МГц 5,5 мА
ный Flash-памяти, тактовая частота f = 24 МГц 10 мА
вырабатывается PLL0 и равна f,
встроенный стабилизатор вклю- f = 36 МГц 14,5 мА
чен, на вход XIN0 подана внеш- f = 50 МГц 19,5 мА
няя частота, XIN1 и XIN32 оста- f = бо МГ новлены, PLL0 функционирует, 23,5 мА
все периферийное тактирование
активно, встроенные подтягиваю-
щие к «плюсу» питания рези-
сторы на линиях ввода-вывода
включены, к JTAG не подклю-
чены внешние подтягивающие
к «плюсу» питания резисторы
Приложение 24.
(окончание)
Режим Условия Типовое значение потребляе- мого тока Ед. изме- рения
Стати- ЦПУ находится в статическом АтрО 15,5 мкА
ческий режиме, встроенные подтягиваю- (см. Прило-
щие к «плюсу» питания резисторы жение 7)
на линиях ввода-вывода включены, все периферийное тактирование неактивно, ножки DM и DP под- ключены к общему проводу, XIN0, XIN1 и XIN32 остановлены Ampl (см. Прило- жение 7) 6 мкА
Приложение 25. Ток потребления периферийных
устройств в активном режиме
AT32UC3B
Приведенные ниже значения параметров измерены в следующем эксплуа-
тационном режиме:
•VDDIO = 3,3 в,
’^DDCORE ~ VqdsYS ~ ®»
•Т. = 25 °C,
• линии ввода-вывода неактивны.
Периферийное устройство Типовое значение потребляемого тока Единица измерения
GPIO 27
ADC 18
INTC 20
TWI 14
PDCA 27
PWM 26 мкА/МГц
SPI 11 •
SSC 35
TC 26
USART 35
USB 30
Приложение 26. Характеристики сигналов
синхронизации AT32UC3B
Приведенные ниже значения параметров справедливы для следующих
условий:
VDDcore ~ В»
• Температура окружающей среды = 25 °C.
Обозначе- ние Параметр Условия Мин. значе- ние Макс, значе- ние Ед. из- мере- ния
1/(^СРСРи) Тактовая частота ЦПУ 60 МГц
^CPCPU Период тактовой частоты ЦПУ 16,6 нс
l/(tCpPBA) Тактовая частота РВА 60 МГц
^СРРВА Период тактовой частоты РВА 16,6 нс
V(^cppbb) Тактовая частота РВВ 60 МГц
^СРРВВ Период тактовой частоты РВВ 16,6 нс
V(Icpxin) Тактовая частота XIN 3 24 МГц
t-CPXIN Период тактовой частоты XIN 41 нс
t-CHXIN Полупериод высокого уровня тактовой частоты XIN 0,4 х ^CPXIN 0,6х ^CPXIN
^CLXIN Полупериод низкого уровня тактовой частоты XIN 0,4 х ^CPXIN 0,6х ^CPXIN
c Конденсатор на входе XIN 12 пФ
Preset Минимальная длительность 10 НС
импульса на входе RESET N
Приложение 27. Характеристики генератора 32 кГц
AT32UC3B
Приведенные ниже значения параметров справедливы для диапазона тем-
ператур окружающей среды: —40 °C ... +85 °C.
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. из- мере- ния
lAtCP32KHz) Частота кварцевого резонатора 32 768 Гц
Рабочий цикл 40 50 60 %
CL Эквивалентная емкость нагрузки 6 12,5 пФ
Приложение 27.
(окончание)
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. из- мере- ния
Чт Время запуска Сь=6пФ 600 мс
CL= 12,5 пФ 1200 мс
lose Ток потребления Активный 1,8 мкА
режим
Ждущий 0,1 мкА
режим
Приложение 28. Характеристики задающего генератора
AT32UC3B
Приведенные ниже значения параметров справедливы для диапазона тем-
ператур окружающей среды: —40 °C ... +85 °C.
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс. значе- ние Ед. изме- рения
V(1cpmain) Частота кварцевого резонатора 3 16 МГц
ClpCL2 Внутренняя емкость нагрузки (CL1 = CL2) 12 пФ
CL Эквивалентная емкость нагрузки 6 пФ
Рабочий цикл 40 50 60 %
^ST Время запуска 3 МГц 8 МГц 16 МГц 20 МГц 14,5 4 1,4 1 мс
lose Ток потребления Активный режим 3 МГц 8 МГц 16 МГц 20 МГц 150 150 300 400 мкА
Ждущий режим 1 мкА
Приложение 29. Характеристики PLL AT32UC3B
Приведенные ниже значения параметров справедливы для диапазона тем-
ператур окружающей среды: —40 °C ... +85 °C.
Обозна- чение Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. из- мере- ния
F 1 OUT Выходная частота 80 240 МГц
Fin Входная частота 4 32 МГц
IpLL Ток потре- бления Активный режим F = 1 VCO = 96 МГц = 128 МГц = 160 МГц 320 410 450 мкА
Ждущий режим 5 мкА
Приложение 30. Характеристики производительности
АЦП AT32UC3B
Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. изме- рения
Тактовая частота АЦП Режим 10-разрядного разрешения 5 МГц
Тактовая частота АЦП Режим 8-разрядного разрешения 8 МГц
Время запуска Время выборки канала и удержания Возврат из Idle Mode 600 20 мкс НС
Время преобразования Тактовая частота АЦП 5 МГц 2 мкс
Время преобразования Тактовая частота АЦП 8 МГц 1,25 мкс
Производительность Тактовая частота АЦП 5 МГц 384' kSPS
Производительность Тактовая частота АЦП 8 МГц 5332 kSPS
1 Соответствует 13 тактовым циклам частоты 5 МГц: 3 тактовых цикла на вы-
борку канала и удержание и 10 тактовых циклов на преобразование.
2 Соответствует 15 тактовым циклам частоты 8 МГц: 5 тактовых циклов на
выборку канала и удержание и 10 тактовых циклов на преобразование.
Приложение 31. Характеристики входа опорного
напряжения АЦП AT32UC3B
Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. изме- рения
Диапазон входного на- пряжения ADVREF 2,6 VDDANA В
Составной ток через вывод ADVREF В течение 13 вы- борок при тактовой частоте АЦП 5 МГц 200 250 мкА
Ток потребления TBD мА
Приложение 32. Характеристики аналоговых входов
AT32UC3B
Параметр Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. изме- рения
Диапазон входного напряжения 0 V VADVREF В
Входной ток утечки TBD мкА
Входная емкость TBD пФ
Приложение 33. Характеристики точности
и разрешающей способности АЦП
AT32UC3B
Параметр Условия Мин. значе- ние Тип. значе- ние Макс, значе- ние Ед. изме- рения
Разрешающая способность Тактовая частота АЦП 5 МГц 10 разря- ды
Абсолютная точность Тактовая частота АЦП 5 МГц 0,8 МЗР
Интегральная нелинейность Тактовая частота АЦП 5 МГц 0,35 0,5 МЗР
Дифференциальная нелинейность Тактовая частота АЦП 5 МГц 0,3 0,5 МЗР
Ошибка смещения Тактовая частота АЦП 5 МГц -0,5 0,5 МЗР
Ошибка усиления Тактовая частота АЦП 5 МГц -0,5 0,5 МЗР
Для получения дополнительной информации о динамических характе-
ристиках модулей JTAG/ICE, SPI, контроллера Flash-памяти рекомендует-
ся обратиться к источнику [4].
Топология корпусов МК подсемейства AT32UC3B иллюстрируется При-
ложением 34 — Приложением 37.
Приложение 34.
М Mi п И Мах IN Mi n 2H Max
А — 1 20 — 047
А1 0 95 1. 05 . 037 041
С 0 09 0 20 . 004 008
В 12. 00 BSC 472 BSC
D1 10 00 BSC 394 BSC
Е 12 00 BSC 472 BSC
Е1 10 00 BSC 394 BSC
J 0 05 0 15 002 . 006
L 0 45 0 75 . 018 030
е 0 50 BSC . 0197 BSC
Е 0 17 0. 27 . 007 011
Приложение 35
М М i П Мах IN М i П ЗН Мах
А — 1. го — . 047
Al 0 95 1. 05 037 041
С 0 09 0 20 004 008
D 9 00 BSC 354 BSC
D1 7 00 BSC . 276 BSC
Е 9 00 BSC 354 BSC
Е1 7 00 BSC 276 BSC
J 0 05 0 15 002 006
L 0 45 0. 75 . 018 . 030
е 0 50 BSC 0197 BSC
F 0 17 0. 27 . 0067 0106
Приложение 36
SIDE VIEW
MM INCH
MIN NOM MAX MIN NOM MAX
A 0 80 - 1 00 . 032 - 040
J 0. 00 0 01 0. 05 ООО ООО 002
Al 0 20 ref 008 ref
D/E 9 00 BSC 354 BSC
Dl/El 8 75 BSC . 344 BSC
D2/E2 3 25 7 45 128 - | 293
N 64
P 0. 24 0. 4p| 0. 60 . 009 L016 024
e 0 50 BSC 020 BSC
L 0. 30 0. 40 0. 55 . 012 . 016 022
b 0. 18 0. 25 0. 30 007 010 012
BOTTOM VIEW
Приложение 37.
SCALED
MM INCH
MIN NDM MAX MIN NUM MAX
A 0 80 - 1 00 032 - 040
J 0 00 0 01 0 05 . 000 000 002
Al 0 20 reF . 008 reF
D/E 7 00 BSC 276 BSC
Dl/El 6 75 BSC 266 BSC
D2/E2 2. 25| 5. 25 . 090 LJ 207
N 48
P 0 24| 0 42 0. 60 . 009 Old 024
e 0 50 BSC 020 BSC
L 0. 30 0 40 0 50 012 016 020
b 0. 18 - 0 30 007 - 012
BOTTOM VIEW
Список литературы
[1] А. Курилин, AVR32: новый микроконтроллер для мультимедийных при-
ложений. «Электронные компоненты» №9, 2006, http://www.atmel.ru.
[2] Н. Королев, А. Шабынин, Архитектура AVR: развитие вширь и вглубь.
«Компоненты и технологии» №2, №4, 2007, http://www.argussoft.ru.
[3] AVR®32 32-Bit Microcontroller AT32UC3A0512, AT32UC3A0256,
AT32UC3A0128, AT32UC3A1512, AT32UC3A1256, AT32UC3A1128
Preliminary. 32058C—AVR32—10/07, http://www.atmel.com.
[4] AVR®32 32-Bit Microcontroller AT32UC3B0256, AT32UC3B0128,
AT32UC3B064, AT32UC3B1256, AT32UC3B1128, AT32UC3B164
Preliminary. 32059E—AVR32—12/07, http://www.atmel.com.
[5] http://www.avr32.ru
[6] AVR32UC Technical Reference Manual. 32002C-AVR32-11/07, http://
www.atmel.com.
[7] AVR32 Architecture Document 32000B-AVR32—11/07, http://www.atmel.com.
[8] Редькин П.П. Микроконтроллеры ARM7 семейства LPC2000. Руко-
водство пользователя (+CD). — М.: Издательский дом «Додэка-ХХ1»,
2007.
[9] IAR Embedded Workbench® IDE. User Guide, http://www.iar.com.
[10] IAR Embedded Workbench flash loader. User Guide, http://www.iar.com.
[11] AVR32 IAR C-SPY® Hardware Debugger System. User Guide for Atmel®
Corporation’s AVR JTAGICE mkll, http://www.iar.com.
[12] А. Курилин, 32-разрядные микроконтроллеры AVR32UC3: с чего на-
чать? «Компоненты и технологии» №3, 2008, http://www.atmel.ru.
[13] Н. Королев, ATMEL: 32-разрядные Flash-микроконтроллеры на ядре
AVR32. «Компоненты и технологии» №11, 2008, http://www.argussoft.ru.
[14] Из материалов тренинга Atmel по МК AVR32 в октябре 2008 года:
AVR32 Training: Debugging in AVR32Studio
[15] Из материалов тренинга Atmel по МК AVR32 в октябре 2008 года:
AVR32 Training: Getting started with EVK1105
[16] Из материалов тренинга Atmel по МК AVR32 в октябре 2008 года:
AVR32 Training: Getting started with EVK1104
Заявки на книги присылайте по адресу:
125319, Москва, а/я 91
Издательство «Техносфера»
e-mail: knigi@technosphera.ru
sales@technosphera.ru
факс: (495) 956 33 46
В заявке обязательно указывайте
свой почтовый адрес!
Подробная информация о книгах на сайте
http://www.technosphera.ru
Редькин Павел Павлович
Микроконтроллеры Atmel архитектуры AVR32 семейства AT32UC3
Руководство пользователя
Компьютерная верстка - С.С. Бегунов
Дизайн - Д.С. Шилов
Корректор - М.Г. Емельянова
Выпускающий редактор - О.Н. Кулешова
Ответственный за выпуск - О.А. Казанцева
Формат 70X100/16. Печать офсетная
Гарнитура Ньютон
Печ.л 49. Тираж 3000 экз.(1-й завод 1500 экз.) Зак. № 4493.
Бумага офсет №1, плотность 65 г/м2
Издательство «Техносфера»
Москва, ул. Краснопролетарская, д.16, стр.2
Отпечатано с готовых диапозитивов
в ООО ПФ «Полиграф-Книга».
160001,г. Вологда, ул. Челюскинцев, 3.
Тел.: (8172) 72-55-31, 72-61-75