О. Воротынский, М. Еременко PIC18CXX8 - новое семейство CAN-микроконтроллеров фирмы MicrochipФирма Microchip выпустила высокопроизводительное семейство микроконтроллеров PIC18CXX8, содержащее в одном кристалле мощное высокопроизводительное ядро PIC18 (мы уже рассказывали об этом семействе в ╧ 8 и 9 за 2000 г.), и CAN-контроллер. Такое решение позволяет при помощи всего одной микросхемы строить производительные модули, работающие в единой информационной сети CAN. Обзор семейства PIC18CXX8Для организации быстрого обмена данными в условиях промышленных помех вс╦ больше используется высоконад╦жный протокол обмена данными CAN. Microchip уже давно выпускает автономный CAN-контроллер MCP2510, подключаемый к основному системному микроконтроллеру при помощи SPI-интерфейса. В дополнение к нему, фирма Microchip выпустила высокопроизводительное семейство микроконтроллеров PIC18CXX8, содержащее в одном кристалле мощное высокопроизводительное ядро PIC18 (мы уже рассказывали об этом семействе в ╧ 8 и 9 за 2000 г.), и CAN-контроллер. Такое решение позволяет при помощи всего одной микросхемы строить производительные модули, работающие в единой информационной сети CAN. Все входящие в это семейство микроконтроллеры содержат высокопроизводительное ядро PIC18, работающее на тактовых частотах до 40 МГц, 32 Кбайт (16К╢16 слов) программной памяти, 1536 байт памяти данных, 10-разрядный АЦП, один 8-разрядный и 3 16-разрядных таймера, 2 модуля ШИМ, встроенные интерфейсы USART, SPI, I2C, возможность внутрисхемного программирования по тр╦м проводам (ICSP), встроенный аппаратный CAN-контроллер и два независимых аналоговых компаратора с внутренним/внешним источником опорного напряжения. Состав семейства PIC18CXX8:
Все микросхемы этого семейства планируется выпускать также и в исполнении с FLASH-программной памятью. Безусловно, "рабочими лошадками" этого семейства являются кристаллы PIC18C658 и PIC18C858. Именно в этих микроконтроллерах наиболее оптимально сочетается производительность ядра, многообразие встроенных периферийных модулей и количество портов ввода/вывода. Также следует отметить, что PIC18C258 - самый маленький в мире микроконтроллер со встроенным CAN-модулем. Основные узлы архитектуры PIC18CXX8Рассмотрим важнейшие отличия модифицированных узлов ядра PIC18CXX8 от микроконтроллеров серий PIC16XXX и PIC17XXX. ПамятьПамять программ адресуется с помощью 21-разрядного сч╦тчика команд. Младший бит сч╦тчика команд всегда равен "0", так как команды имеют только ч╦тные адреса. Наличие 21-разрядного адреса в коде команды позволяет обращаться к любой ячейке памяти непосредственно без переключения страниц. Область памяти выше 200000h отведена под идентификационные номера, регистры калибровки и конфигурации. При выполнении программы можно прочитать содержимое программной памяти, используя команду TBLRD. Идентификационные регистры памяти доступны для чтения даже при установленном бите защиты. Память данныхПамять данных организована как массив 8-разрядных регистров, каждый из которых имеет 12-разрядный адрес. Вс╦ адресное пространство 4096 байт разделено на 16 банков памяти объ╦мом по 256 байт. Номер адресуемого банка содержится в четыр╦х младших битах регистра выбора банка (BSR). Чтобы гарантировать быстрый доступ к наиболее часто используемым данным и к регистрам специальных функций без использования BSR, применяется оригинальное и интересное решение под условным названием "банк ускоренного доступа" (Access Bank). В этот банк включены 128 младших регистров GPR и 128 старших SFR. Специальный "бит доступа" (а=0) в коде команды показывает, что старшие разряды адреса игнорируются и обращение ид╦т к банку ускоренного доступа, а содержимое BSR игнорируется. Глобальные переменные помещаются именно в банк ускоренного доступа, в так называемую область "AccessRAM", таким образом повышается производительность работы компиляторов Си. СтекСтек расширен до 31-ой ячейки и содержит 5-бит указатель. Во время выполнения команды CALL указатель стека STKPTR увеличивается на единицу, и ячейка стековой памяти, на которую указывает STKPTR, заполняется адресом возврата из сч╦тчика команд PC. При выполнении команды RETURN содержимое стека записывается в PC, и значение указателя уменьшается. Специальные биты статуса устанавливаются, если указатель стека выходит за пределы 0-31. Добавлены также команды непосредственной работы со стеком PUSH и POP. В случаях, если стек полон или исчерпан, возможен сброс процессора. Очень полезной и интересной особенностью архитектуры PIC18CXX8 является наличие теневого (быстрого) одноуровневого стека. Он используется программой прерывания высокого уровня для одномоментного запоминания содержимого регистров STATUS, WREG и BSR. Если прерывания не используются, теневой стек можно использовать для сохранения STATUS, WREG и BSR при вызове подпрограммы. Регистр статуса STATUSВ регистре STATUS появились два новых бита: N - отрицательный результат операции и OV - переполнение (показывает изменение состояния седьмого бита значения при выполнении арифметических операций). Расширение условий ветвления да╦т дополнительную гибкость программирования и позволяет писать более эффективный код. Система прерыванияСистема прерываний имеет приоритетную векторную структуру. Вектор 000008h соответствует прерыванию с высоким приоритетом, 000018h - с низким и, как обычно, 000000h - RESET. Каждому источнику прерывания соответствуют 3 бита (разрешение, флаг и бит назначения высокого или низкого приоритета). Для прерывания низкого уровня необходимо сохранять содержимое регистров WREG, STATUS и BSR, так как теневой стек должен использоваться только для прерывания высокого уровня. Генератор тактовых импульсовНовым устройством узла тактового генератора является схема PLL, умножающая частоту кварцевого резонатора на 4. Устройство PLL может быть выбрано только при установке режима работы тактового генератора "HS". При использовании кварцевого резонатора на 10 МГц внутренняя частота достигнет 40 МГц. Эту интересную функцию удобно использовать для уменьшения электромагнитного излучения при сохранении высокой скорости выполнения программы. Для приборов с батарейным питанием важна способность PIC18CXX8 переключать системную тактовую частоту с основного тактового генератора на альтернативный низкочастотный. Обычно в качестве низкочастотного генератора выбирают таймер реального времени T1 на 32,768 кГц. Системная частота переключается битом "s" в регистре управления тактовым генератором OSCCON. Для завершения процесса переключения требуется только восемь тактов. Специальная внутренняя схема устраняет все проблемы, связанные с переключением источников тактовой частоты. ТаймерыПолностью устранены неудобства работы с 16-разрядными значениями. Достаточно настроить режим работы таймера на запись/чтение 16-разрядного значения. Тогда чтение младшего байта таймера автоматически сохранит значение старшего байта в аппаратном буфере. Чтение с использованием аппаратного буфера позволяет не заботиться о возможном переполнении младшего байта и потере информации в момент чтения. Содержимое буфера можно прочитать следующей командой программы. Запись нового значения в таймер также начинается с записи данных в буферный регистр. Это значение автоматически переписывается в старший байт таймера при записи нового значения в младший байт. Таймер Т0 имеет полный 16-разрядный режим, но с целью совместимости оставлен и обычный 8-разрядный. Watchdog таймер (WDT)WDT полностью отдел╦н от таймера Т0. Режим работы зада╦тся при программировании битом WDTE. При WDTE=0 watchdog таймер можно включать и выключать под управлением программы с помощью бита SWDTE в регистре WDTCON. Выключение WDT полезно для уменьшения энергопотребления в режиме SLEEP. При выходе из режима SLEEP WDT можно опять включить. Порты ввода/выводаВ каждый порт ввода/вывода добавлен регистр-защ╦лка. Это позволило избежать неопредел╦нностей при операциях типа "Read-Modify-Write". В этом случае данные при чтении берутся из регистра-защ╦лки, туда же записывается и результат. Выходной сигнал поступает из регистра-защ╦лки через буферный усилитель на вывод микроконтроллера. Состояние вывода может быть прочитано командой чтения, хотя уровень выходного сигнала на выводе реально зависит от величины нагрузки. Аппаратный умножительС помощью встроенного аппаратного умножителя можно перемножить 2 8-разрядных числа за одну команду программы. Модуль аналоговых компараторов с источником опорного напряженияСемейство PIC18CXX8 - одно из немногих PICmicro, в котором одновременно кроме 10-разрядного АЦП содержатся два независимых аналоговых компаратора, аналогично семейству PIC16X62X. Промышленный стандарт передачи сообщений CAN 2.0BПромышленный стандарт передачи сообщений CAN 2.0B наш╦л наиболее широкое применение в автомобильной промышленности в качестве стандарта передачи информации между электронными узлами автомобиля. Стандарт позволяет соединять устройства различных производителей без необходимости их перенастройки при добавлении или исключении устройства в сети. Пример: данные о напряжении аккумуляторной батареи, поступающие в CAN-шину от датчика-измерителя, могут быть прочитаны и использованы всеми устройствами, которым нужна эта информация. При╦мник только настраивает внутренний фильтр сообщений своего CAN-контроллера на соответствующий идентификатор. Уровни протокола передачи данныхУровень прикладной программы - получает отфильтрованные сообщения и посылает запросы на получение данных с нужным идентификатором. Интерпретирует полученные данные и использует их для реализации алгоритма пользователя. Уровень сообщения - отвечает за фильтрацию сообщений и определение их статуса. Транспортный уровень - составляет ядро протокола. Определяет способ передачи принятого сообщения на уровень сообщений и при╦ма сообщения для передачи по физическому каналу. Транспортный уровень отвечает за битовую синхронизацию, разбивку сообщения по кадрам, доступ к каналу, подтверждение сообщений, и распознавание ошибок. Физический уровень - определяет способ передачи битов. В спецификации CAN 2.0B физическая реализация канала оставлена на усмотрение разработчика для оптимизации конкретной системы. Информация по CAN-шине посылается на фиксированной частоте в фиксированном формате. Шина имеет два состояния: dominant и recessive. Если шина свободна, любой узел может начать передачу нового сообщения. Идентификатор определяет приоритет сообщения при доступе к шине. Если два или более узла начинают передачу одновременно, то конфликт доступа к шине разрешается чтением состояния шины при передаче битов идентификатора и сравнением передаваемого уровня с наблюдаемым на шине. Если уровни одинаковы, происходит дальнейшая передача. Если переда╦тся recessive, а на шине dominant, т.е. сработал принцип монтажного "или", то узел завершает передачу и теряет доступ к шине. Механизм доступа гарантирует корректную передачу сообщения с наивысшим приоритетом без потери времени и дополнительных задержек. Например, если одновременно начинается передача кадра запроса данных (remote frame) и кадра данных (data frame) с одним и тем же идентификатором, то реально на шине останется кадр данных, потому что бит RTR (Remote Transmission Request bit) в кадре запроса имеет значение recessive, а в кадре данных - dominant. Понятно, что по принципу монтажного "или" должен остаться dominant-бит. Тот факт, что в узлах нет информации о конфигурации сети, да╦т дополнительные преимущества при построении системы:
CAN-контроллер, интегрированный в семейство PIC18CXX8СтруктураCAN-контроллер состоит из двух основных модулей:
Сердцем логики работы протокола нижнего уровня является логический аппарат с конечным числом состояний, изменяющий свои состояния под воздействием входного и выходного потоков битов. Логический аппарат управляет потоком данных между сдвигающими регистрами при╦мника, передатчика, регистром подсч╦та контрольной суммы (CRC) и линиями CAN-шины, управляет автоматической ретрансляцией сообщений шины и так далее. Характеристики
Идеология создания встроенного модуля CAN-контроллера - обеспечить максимальную преемственность с MCP2510. Все разработки, построенные на базе MCP2510 и PICmicro, удобно переводятся на PIC18CXX8. Кроме того, управление CAN-модулем теперь осуществляется напрямую при помощи встроенных служебных регистров, входящих в адресное пространство микроконтроллера. Разработка программного обеспечения и отладкаДля написания и отладки программ микроконтроллеров PICmicro используется универсальная интегрированная среда MPLAB-IDE. В не╦ входит встроенный редактор, компилятор ассемблера, линкер, развитая система помощи, менеджер проектов, программный симулятор. Среда распространяется бесплатно, е╦ можно найти на компакт-дисках Microchip или на сайте www.microchip.com. PIC18CXX8 является развитым семейством сложных многофункциональных микроконтроллеров с большим объ╦мом памяти. Весьма непросто и очень трудо╦мко разрабатывать программное обеспечение для него на ассемблере. Поэтому вс╦ большую популярность среди разработчиков приобретают компиляторы языка Си. Для микроконтроллеров PIC18 наиболее часто применяют:
Оба компилятора содержат развитую встроенную библиотеку математических функций, а также могут быть встроены в среду MPLAB и работать под е╦ управлением. Для написания особенно критичных ко времени исполнения участков программы в тексте Си можно делать ассемблерные вставки. РезюмеМожно отметить растущую популярность CAN-интерфейса в системах управления. В недал╦ком будущем системы, построенные на RS485 интерфейсе, останутся только в нижнем ценовом классе устройств передачи данных, так как они реализуют практически все функции передачи пакетов программным способом. Для развивающихся систем передачи данных такое построение может оказаться узким местом, и поэтому уже сейчас целесообразно закладывать перспективные решения на основе протокола CAN. C появлением семейства PIC18CXX8 у разработчика появилась возможность полностью реализовать сво╦ изделие на одной микросхеме универсального микроконтроллера. Значительное повышение эффективности Си-кода стало возможно благодаря линейному адресному пространству памяти программ, тр╦м указателям с пятью режимами индексации, линейному пространству памяти данных, удобству хранения глобальных переменных, программно-доступному стеку и наличию 18 условий ветвления. Пиковая производительность составила 10MIPS@10MГц, а все изменения, внес╦нные в ядро, сделали работу с PIC18CXX8 ещ╦ более удобной, не потеряв при этом возможности пользоваться наработанным программным обеспечением и конструктивными решениями, так как сохранилась преемственность не только по коду, но и по выводам микроконтроллера с семействами PIC16 и PIC17. |
Ваш комментарий к статье | ||||