Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВстраиваСмыС систСмы. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСмСйства 68HC12/HCS12 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка Π‘Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 149

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚

/********************************************************************/

/* CANONE.C Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСт ΠΏΠ»Π°Ρ‚Ρƒ 68HC12 ΠΈ связываСт Π΅Π΅ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ*/

/* ΠΏΠ»Π°Ρ‚ΠΎΠΉ 68HC12 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° CAN                          */

/* Авторы: Π”Π°Π½ΠΈΡΠ»ΡŒ Пак ΠΈ Π‘Ρ‚ΠΈΠ² Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚                               */

/* Π”Π°Ρ‚Π° создания: 29 июля 2004                                      */

/********************************************************************/

line 0  #include "68HC12DP256.h"

line 1  void main()

line 2  {

line 3   COPCTL=0x00; /*Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стороТСвой Ρ‚Π°ΠΉΠΌΠ΅Ρ€ COP*/

line 4   /*ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ CAN */

line 5   CAN0CTL1 = CAN0CTL1 | 0x80; /*Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для модуля CAN */

line 6   CAN0CTL1 = CAN0CTL1 & 0xEF; /*Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° LISTEN*/

line 7   while ((CAN0CTL1 | 0x01) == 0) /*Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CAN*/

line 8   {

line 9    CAN0CTL0 = CAN0CTL0 | 0x01;

line 10  }

line 11  CAN0BTR0 = 0xC1; /*установка Π±ΠΈΡ‚ синхронизации CAN*/

line 12  CAN0BTR1 = 0xF7;

line 13  CANOCTL0 = CAN0CTL0 & 0xFE;/*Π²Ρ‹Ρ…ΠΎΠ΄ CAN ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ*/

line 14  while ((CAN0CTL0 & 0x10) == 0){} /*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ синхронизации*/

line 15  CAN0TBEL = 0x01; /*Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° 0 */

line 16  /*установка ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° */

line 17  CAN0TXFG0 = 0xFF;

line 18  CAN0TXFG1 = 0xFF;

line 19  CAN0TXFG2 = 0xFF;

line 20  CAN0TXFG3 = 0xFE; /*RTR = 0 для ΠΊΠ°Π΄Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… */

line 21  CAN0TXFG4 = 0x01; /*сообщСниС */

line 22  CAN0TXFG5 = 0x02;

line 23  CAN0TXFG6 = 0x03;

line 24  CAN0TXFG7 = 0x04;

line 25  CAN0TXFG8 = 0x05;

line 26  CAN0TXFG9 = 0x06;

line 27  CAN0TXFGA = 0x07;

line 28  CAN0TXFGB = 0x08;

line 29  CAN0TXFGC = 0x08; /*спСцификатор Π΄Π»ΠΈΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… */

line 30  CAN0TXFGD = 0x00;

line 31  while(1)

line 32  {

line 33   while ((CAN0TFLG & 0x01) == 0) /*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° окончания ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ */

line 34    CAN0TFLG = CAN0TFLG | 0x01; /*очистка Ρ„Π»Π°Π³Π° */

line 35  }

line36  } /* ΠΊΠΎΠ½Π΅Ρ† основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ */

/********************************************************************/

Команда Π½Π° строкС 3 Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стороТСвого Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° COP ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° строках ΠΎΡ‚ 4 Π΄ΠΎ 20 ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ msCAN12. Π‘Π½Π°Ρ‡Π°Π»Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎ строкС 5 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ CAN ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Команда Π½Π° строкС 6 Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ LISTEN, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ сСтСвого Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Π½Π΅ пСрСдавая Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сообщСния. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π² строках с 7 ΠΏΠΎ 10 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСвСсти ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ CAN Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Ρ€Π°Π·Ρƒ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° строках 11 ΠΈ 12, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ синхронизации CAN. Команда Π½Π° строкС 13 ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ CAN ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с сСтСвым Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ. Команда Π½Π° строкС 14 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ CAN с сСтСвым Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ. Команда Π½Π° строкС 15 Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠΉ Π±ΡƒΡ„Π΅Ρ€ 0 для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° строках с 16-ΠΉ ΠΏΠΎ 30-ю готовят содСрТимоС для ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ установили Ρ„Π»Π°Π³ΠΈ SRR ΠΈ IDE, Π²Ρ‹Π±Ρ€Π°Π² Ρ‚Π΅ΠΌ самым Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, очистили Π±ΠΈΡ‚ RTR, ΠΏΠΎΠΊΠ°Π·Π°Π², Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π±ΡƒΡ„Π΅Ρ€ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΊΠ°Π΄Ρ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Начиная со строки 31 Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ продолТаСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠ΅Ρ‚ΡŒ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая опрСдСляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ МК, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части рис. 9.32.

/**********************************************************************/

/* CANTWO.C Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСт ΠΏΠ»Π°Ρ‚Ρƒ 68HC12 ΠΈ связываСт Π΅Π΅ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ */

/* ΠΏΠ»Π°Ρ‚ΠΎΠΉ 68HC12 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° CAN                            */

/* Авторы: Π”Π°Π½ΠΈΡΠ»ΡŒ Пак ΠΈ Π‘Ρ‚ΠΈΠ² Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚                                 */

/* Π”Π°Ρ‚Π° создания: 29 июля 2004                                        */

/**********************************************************************/

line 0  #include "68HC12DP256.h"

line 1  void main()

line 2  {

line 3   COPCTL=0x00; /*Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стороТСвой Ρ‚Π°ΠΉΠΌΠ΅Ρ€ COP */

line 4                /*ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ CAN */

line 5   CAN0CTL1 = CAN0CTL1 | 0x80; /*Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для модуля CAN */

line 6   CAN0CTL1 = CAN0CTL1 & 0xEF; /*Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° LISTEN */

line 7   while ((CAN0CTL1 | 0x01) == 0) /*Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CAN */

line 8   {

line 9    CAN0CTL0 = CAN0CTL0 | 0x01

line 10  }

line 11  CANOBTR0 = 0xC1; /*установка Π±ΠΈΡ‚Π° синхронизации CAN*/

line 12  CAN0BTR1 = 0xF7;

line 13  CAN01DM0 = 0xFF; /*ΠΏΡ€ΠΈΠ΅ΠΌ всСх сообщСний */

line 14  CAN01DM1 = 0xFF;

line 15  CAN01DM2 = 0xFF;

line 16  CAN01DM3 = 0xFF;

line 17  CAN01DM4 = 0xFF;

line 18  CAN01DM5 = 0xFF;

line 19  CAN01DM6 = 0xFF;

line 20  CAN01DM7 = 0xFF;

line 21  CAN0CTL0 = CAN0CTL0 & 0xFE; /*Π²Ρ‹Ρ…ΠΎΠ΄ CAN ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ */

line 22  while ((CAN0CTL0 & 0x10) == 0){} /*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ синхронизации */

line 23  /*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ сообщСния */

line 24  while ((CAN0RFLG & 0x01) == 0){} /*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° сообщСния */

line 25  CAN0RFLG = CAN0RFLG | 0x01; /*очистка Ρ„Π»Π°Π³Π° */

line 26  asm("swi");

line 27 } /* ΠΊΠΎΠ½Π΅Ρ† основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ */

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ β€” это спСцификация для рСгистров маскирования ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° Π² строках с 13-ΠΉ Π΄ΠΎ 20-ю. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ всС Π±ΠΈΡ‚Ρ‹ маскирования Π² состояниС логичСской 1, игнорируя вСсь ΠΊΠΎΠ΄, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΉ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ½Ρ‹Π΅ рСгистры. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ всС сообщСния с Π»ΡŽΠ±Ρ‹ΠΌ содСрТаниСм для Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… рСгистров ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄ΡƒΡ‚ приняты CAN ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ.

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ начинаСтся Π² строкС 23. По ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² строкС 24 МК ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ заполнСния ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² строкС 25 ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Ρ„Π»Π°Π³ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. Команда Π² послСднСй строкС останавливаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, послС Ρ‡Π΅Π³ΠΎ МК ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, рассматривая содСрТаниС ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² ячСйках ΠΎΡ‚ $0160 Π΄ΠΎ $016F.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ сцСнарий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΡƒΠ·Π»Π° CAN сСти. ΠœΡ‹ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ упростили ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π’Π°ΠΌ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ CAN ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π² составС 68HC12. Для простоты ΠΌΡ‹ ΠΈΠ·Π±Π΅Π³Π°Π»ΠΈ использования Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ CAN Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния с Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π±ΠΈΡ‚Π°ΠΌΠΈ.

9.6. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° BDLC

Π Π°Π½Π½ΠΈΠ΅ вСрсии 68HC12, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ MC68HC912B32 ΠΈ MC68HC12BE32, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ CAN. ВмСсто этого, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ содСрТат Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ сСтСвой связи β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ связи Π±Π°ΠΉΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (byte data link controller β€” BDLC). Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² составС МК MC68HC912B32 Π½Π° рис. 1.3. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° BDLC Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ МК сСмСйства 68HC12 ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ сСти, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» J1850 общСства Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² (SAE).

Π‘Π΅Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… класса Π’ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° SAE J1850 ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° скоростях Π΄ΠΎ 125 ΠΊΠ±/с. ΠœΠΎΠ΄ΡƒΠ»ΡŒ BDLC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±ΠΈΡ‚Π°, ΠΏΠΎΠΌΠ΅Ρ…ΠΎΠΏΠΎΠ΄Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ опрСдСлСния ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈ цикличСский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ избыточности для контроля Π·Π° ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° J1850 состоит ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа ΠΊΠ°Π΄Ρ€Π°, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° сообщСния, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сообщСния, фактичСских Π΄Π°Π½Π½Ρ‹Ρ…, Π±Π°ΠΉΡ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC ΠΈ символа ΠΊΠΎΠ½Ρ†Π° Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Ρ€Π΅Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…: Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ (1), Ρ€Π΅ΠΆΠΈΠΌΠ΅ сброса (2) ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ (3). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ BDLC ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΡΠ½Π΅Ρ€Π³ΠΎΡΠ±Π΅Ρ€Π΅Π³Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°: BDLC ΠΈ ЦП Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания (1), BDLC Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ останова, ЦП Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания (2), BDLC ΠΈ ЦП Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ останова (3).

ΠœΠΎΠ΄ΡƒΠ»ΡŒ BDLC 68HC12 состоит ΠΈΠ· ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π°, Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ΅ΠΌΠ½Ρ‹Ρ… ΠΈ Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΡ… рСгистров Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡΡ‚ΡŒ рСгистров управлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ BDLC для Π²Ρ‹Π±ΠΎΡ€Π° источника тактирования, скорости ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹, кодирования Π±ΠΈΡ‚ΠΎΠ², Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Π’Ρ€ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСгистра (рСгистр ΠΏΠΎΡ€Ρ‚Π° управлСния DLC, рСгистр ΠΏΠΎΡ€Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… DLC ΠΈ рСгистр ΠΏΠΎΡ€Ρ‚Π° направлСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… DLC) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚ BDLC ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ SAE J1850 ΠΈ CAN ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ Π² области управлСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π½Ρ‹ΠΌΠΈ сСтями. ВСкущая тСндСнция ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ CAN ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ срСди ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, ΡΡ‚Ρ€Π΅ΠΌΡΡΡŒ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ вСсь сСктор Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π½Ρ‹Ρ… сСтСй.

9.7. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π³Π»Π°Π²Π΅ 9

Π’ этой Π³Π»Π°Π²Π΅, ΠΌΡ‹ рассмотрСли основы связи ΠΌΠ΅ΠΆΠ΄Ρƒ встраиваСмыми ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π½Ρ‹ΠΌΠΈ систСмами, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… сСтСй Bosch CAN 2.0A ΠΈ CAN 2.0B. ΠœΡ‹ познакомились с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ срСдствами ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ модуля ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° msCAN Π² составС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² сСмСйства 68HC12, Π° Ρ‚Π°ΠΊΠΆΠ΅ с Π±ΠΎΠ»Π΅Π΅ простым ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° BDLC 68HC12. ΠœΡ‹ обсудили ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ синхронизации, связанныС с CAN ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ, рСгистры, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… msCAN12, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обслуТивания Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² для ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний ΠΏΠΎ CAN. ΠŸΡ€ΠΈΠ²Π΅Π»ΠΈ ряд простых дСмонстрационных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ модуля msCAN12.