F40-43a (1041604), страница 42
Текст из файла (страница 42)
К регистрамCAN0CN, CAN0STA и CAN0TST можно обращаться через SFR регистры CIP-51. Доступ ко всем другимрегистрам осуществляется косвенно через регистры CAN0ADR, CAN0DATH и CAN0DATL с помощью методаиндексной адресации CAN.Информация о функционировании регистров управления протоколом CAN и их использованииприведена в руководстве пользователя Bosch CAN User’s Guide.18.2.2. Интерфейсные регистры буферов сообщенийИмеется два набора интерфейсных регистров буферов сообщений. Они используются для настройки 32буферов сообщений, которые передают данные в шину CAN и принимают данные из нее. Буферы сообщенийможно настроить для передачи или приема данных, им можно назначить идентификаторы сообщений,используемые для приемной фильтрации всеми узлами CAN-сети.Буферы сообщений хранятся в ОЗУ сообщений.
Доступ к ним и их настройка осуществляются спомощью интерфейсных регистров буферов сообщений. Эти регистры доступны через регистры CIP-51CAN0ADR и CAN0DAT с помощью метода косвенной индексной адресации.Информация о функционировании интерфейсных регистров буферов сообщений и ихиспользовании приведена в руководстве пользователя Bosch CAN User’s Guide.Ред. 1.3222C8051F040/1/2/318.2.3. Регистры обработчика сообщенийРегистры обработчика сообщений доступны только для чтения.
Их флаги можно прочитать с помощьюиндексного метода доступа через регистры CAN0ADR, CAN0DATH и CAN0DATL. Регистры обработчикасообщений предоставляют информацию о прерываниях, ошибках, запросах передачи/приема и об обновленииданных.Информация о функционировании регистров обработчика сообщений и их использованииприведена в руководстве пользователя Bosch CAN User’s Guide.18.2.4.
Регистры специального назначения CIP-51Периферийные модули МК семейства C8051F04x настраиваются и управляются с помощью регистровспециального назначения (SFR регистров). К большинству регистров CAN-контроллера нельзя обращатьсянепосредственно через SFR регистры. Три регистра CAN-контроллера доступны непосредственно через SFRрегистры. Доступ ко всем другим регистрам CAN-контроллера осуществляется косвенно с помощью трех SFRрегистров CIP-51: регистры данных CAN (CAN0DATH и CAN0DATL) и регистр адреса CAN (CAN0ADR).Таким образом, существует всего пять CAN-регистров, используемых для настройки и запуска CANконтроллера.18.2.5.
Использование регистров CAN0ADR, CAN0DATH и CAN0DATL для доступак CAN-регистрамКаждый регистр CAN-контроллера имеет индексный номер (см. табл. 18.2). Размер адресногопространства CAN-регистров составляет 128 слов (256 байт). CAN-регистр доступен через регистры данныхCAN (CAN0DATH и CAN0DATL) тогда, когда индексный номер CAN-регистра помещен в регистр адреса CAN(CAN0ADR). Например, если требуется загрузить в регистр BTR новое значение, необходимо в регистрCAN0ADR записать значение 0х03.
После этого доступ к младшему байту регистра BTR осуществляется черезрегистр CAN0DATL, а к старшему – через регистр CAN0DATH. Регистр CAN0DATL доступен в побитномрежиме адресации. Чтобы загрузить значение 0х2304 в регистр BTR, необходимо:CAN0ADR = 0х03;// Загрузить индекс регистра BTR (см.
табл. 18.2)CAN0DATH = 0х23;// Загрузить старший байт значения в старший байт регистра данныхCAN0DATL = 0х04;// Загрузить младший байт значения в младший байт регистра данныхПримечание: Доступ к регистрам CAN0CN, CAN0STA и CAN0TST можно осуществлять как спомощью индексного метода, так и непосредственно через SFR регистры CIP-51. CAN0CN расположен поадресу 0xF8/SFR страница 1 (рис. 18.7), CAN0TST расположен по адресу 0xDB/SFR страница 1 (рис. 18.8),CAN0STA расположен по адресу 0xC0/SFR страница 1 (рис. 18.9).18.2.6.
Функция автоинкремента CAN0ADRВ целях облегчения программирования буферов сообщений регистр CAN0ADR наделен возможностьюавтоинкремента своего содержимого для индексов из диапазонов 0х08…0х12 (интерфейсные регистры 1) и0х20…0х2А (интерфейсные регистры 2). Если регистр CAN0ADR содержит индекс из этих диапазонов, то причтении/записи регистра CAN0DATL произойдет автоинкремент содержимого регистра CAN0ADR на 1,после чего он будет указывать на 16-разрядное слово следующего CAN-регистра. Это ускоряетпрограммирование часто изменяемых интерфейсных регистров во время настройки буферов сообщений.Примечание: Таблица 18.2, приведенная ниже, заменяет собой рис.
5 раздела 3 “Programmer’sModel” руководства пользователя Bosch CAN User’s Guide.Таблица 18.2. Индексы CAN-регистров и их значения, устанавливаемые при сбросеИндекс CANрегистра0х000х010х02223Название регистраЗначениепосле сбросаРегистр управления CAN0х0001Регистр состояния0х0000Регистр ошибки0х0000Ред.
1.3ПримечанияДоступен как SFR регистрДоступен как SFR регистрДоступен только для чтенияC8051F040/1/2/3Индекс CANрегистра0х030х040х050х06Название регистраЗначениепосле сбросаРегистр BTR0х2301Регистр прерыванийРегистр тестированияДополнительный регистр BRP0х00000х00000х0000Запрос команды IF10х080х090х0A0х0B0х0C0х0D0х0E0х0F0х100х110х120х0001Маска команды IF10х0000Маска 1 IF10хFFFFМаска 2 IF10хFFFFАрбитраж 1 IF10х0000Арбитраж 2 IF10х0000Управление сообщением IF10х0000Данные А1 IF10х0000Данные А2 IF10х0000Данные B1 IF10х0000Данные B2 IF10х0000Запрос команды IF20х200х210х220х0230х240х250х260х270х280х290х2A0х0001Маска команды IF20х0000Маска 1 IF20хFFFFМаска 2 IF20хFFFFАрбитраж 1 IF20х0000Арбитраж 2 IF20х0000Управление сообщением IF20х0000Данные А1 IF20х0000Данные А2 IF20х0000Данные B1 IF20х0000Данные B2 IF20х0000Ред.
1.3ПримечанияЗапись разрешается битом ССЕрегистра CAN0CNДоступен только для чтенияБит 7 (RX) определяется шиной CANЗапись разрешается битом TESTрегистра CAN0CNCAN0ADR автоинкрементируется виндексном диапазоне IF1 (0х08 –0х12) при записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируется виндексном диапазоне IF2 (0х20 –0х2A) при записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATLCAN0ADR автоинкрементируетсяпри записи в CAN0DATL224C8051F040/1/2/3Индекс CANрегистра0х400х410х480х49Название регистраЗначениепосле сбросаЗапрос передачи 10х0000Запрос передачи 20х0000Новые данные 10х0000Новые данные 20х0000Ожидание прерывания 10х500х0000Ожидание прерывания 20х510х0000Достоверность сообщения 10х580х0000Достоверность сообщения 20х592250х0000Ред.
1.3ПримечанияФлаги запросов передачи для буферовсообщений (только для чтения)Флаги запросов передачи для буферовсообщений (только для чтения)Флаги новых данных для буферовсообщений (только для чтения)Флаги новых данных для буферовсообщений (только для чтения)Флаги ожидания прерывания длябуферов сообщений (только длячтения)Флаги ожидания прерывания длябуферов сообщений (только длячтения)Флаги достоверности сообщения длябуферов сообщений (только длячтения)Флаги достоверности сообщения длябуферов сообщений (только длячтения)C8051F040/1/2/3Рисунок 18.4. CAN0DATH: Старший байт регистра данных CANR/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес: 0xD9SFR страница: 1Биты 7-0: CAN0DATH: Старший байт регистра данных CAN.Регистры CAN0DAT используются для чтения/записи значений и данных из/в CAN-регистров(-ы),на которые указывает индексный номер, содержащийся в регистре CAN0ADR.Регистр CAN0ADR используется для адресации регистров данных [CAN0DATH:CAN0DATL]требуемого CAN-регистра.Индексный номер требуемого CAN-регистра записывается в регистр CAN0ADR.
После этогорегистр CAN0DAT можно использовать для записи/чтения в/из CAN-регистр(-а).Рисунок 18.5. CAN0DATL: Младший байт регистра данных CANR/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000001Бит 7SFR Адрес: 0xD8SFR страница: 1Биты 7-0: CAN0DATL: Старший байт регистра данных CAN.Регистры CAN0DAT используются для чтения/записи значений и данных из/в CAN-регистров(-ы),на которые указывает индексный номер, содержащийся в регистре CAN0ADR.Регистр CAN0ADR используется для адресации регистров данных [CAN0DATH:CAN0DATL]требуемого CAN-регистра.Индексный номер требуемого CAN-регистра записывается в регистр CAN0ADR.
После этогорегистр CAN0DAT можно использовать для записи/чтения в/из CAN-регистр(-а).Ред. 1.3226C8051F040/1/2/3Рисунок 18.6. CAN0ADR: Индексный регистр адреса CANR/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес: 0xDASFR страница: 1Биты 7-0: CANADR: Индексный регистр адреса CAN.Регистр CAN0ADR используется для адресации регистров данных [CAN0DATH:CAN0DATL]требуемого CAN-регистра.Индексный номер требуемого CAN-регистра записывается в регистр CAN0ADR. После этогорегистр CAN0DAT можно использовать для записи/чтения в/из CAN-регистр(-а).Примечание: Если содержимое регистра CAN0ADR соответствует диапазонам 0х08 – 0х12 и 0х20 –0х2А (регистры IF1 и IF2), то этот регистр будет автоинкрементироваться при записи в регистр CAN0DATL(см.