MicroPython:Библиотеки/pyb/Класс CAN/CAN.init(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =CAN.init(mode, extframe=False, prescaler=100, *,...»)
 
Нет описания правки
 
Строка 6: Строка 6:


* CAN.init(mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8, auto_restart=False) – инициализирует CAN-шину со следующими параметрами:
* CAN.init(mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8, auto_restart=False) – инициализирует CAN-шину со следующими параметрами:
** mode – здесь может быть NORMAL, LOOPBACK, SILENT или SILENT_LOOPBACK.
** '''mode''' – здесь может быть NORMAL, LOOPBACK, SILENT или SILENT_LOOPBACK.
** extframe – если задать здесь True, шина будет использовать в фреймах расширенные идентификаторы (29 бит). В противном случае она будет использовать в идентификаторах стандартные 11 бит.
** '''extframe''' – если задать здесь ''True'', шина будет использовать в фреймах расширенные идентификаторы (''29 бит''). В противном случае она будет использовать в идентификаторах стандартные ''11 бит''.
** prescaler – этот параметр используется, чтобы задать продолжительность 1 кванта времени. Чтобы рассчитать квант времени, значение в prescaler нужно поделить на входную частоту (PCLK1, более подробно читайте в описании метода [http://docs.micropython.org/en/latest/library/pyb.html#pyb.freq pyb.freq()]).
** '''prescaler''' – этот параметр используется, чтобы задать продолжительность ''1 кванта времени''. Чтобы рассчитать квант времени, значение в ''prescaler'' нужно поделить на входную частоту (''PCLK1'', более подробно читайте в описании метода [http://docs.micropython.org/en/latest/library/pyb.html#pyb.freq pyb.freq()]).
** sjw – это ширина скачка синхронизации в квантах времени; здесь может быть «1», «2», «3» или «4».
** '''sjw''' – это ширина скачка синхронизации в квантах времени; здесь может быть ''«1»'', ''«2»'', ''«3»'' или ''«4»''.
** bs1 – это место точки захвата (в квантах времени). Здесь может быть от «1» до «1024» включительно.
** '''bs1''' – это место точки захвата (в квантах времени). Здесь может быть ''от «1» до «1024»'' включительно.
** bs2 – это место точки передачи (в квантах времени). Здесь может быть от «1» до «16» включительно.
** '''bs2''' – это место точки передачи (в квантах времени). Здесь может быть ''от «1» до «16»'' включительно.
** auto_restart – здесь задается, будет ли контроллер автоматически пытаться перезапустить коммуникацию после входа в режим Bus Off. Если здесь будет стоять False, то restart() можно будет использовать для выхода из режима Bus Off.
** '''auto_restart''' – здесь задается, будет ли [[контроллер]] автоматически пытаться перезапустить коммуникацию после входа в режим ''Bus Off''. Если здесь будет стоять ''False'', то restart() можно будет использовать для выхода из режима ''Bus Off''.
Квант времени – это базовая единица измерения времени для CAN-шины. Квант времени рассчитывается как значение предварительного делителя тактовой частоты (prescaler), поделенное на частоту PCLK1 (это частота внутренней периферийной шины 1). Более подробно о PCLK1 читайте в описании функции [http://docs.micropython.org/en/latest/library/pyb.html#pyb.freq pyb.freq()].
 
Один бит состоит из сегмента синхронизации (который всегда равен одному кванту), после чего идут сегмент бита 1 и сегмент бита 2. Точка захвата находится в конце сегмента бита 1, а точка передачи – в конце сегмента бита 2. Скорость передачи данных рассчитывается как 1, поделенное на время бита. Время бита – это (1 + сегмент бита 1 + сегмент бита 2), умноженное на квант времени.  
'''Квант времени''' – это базовая единица измерения времени для [[CAN-шины]]. Квант времени рассчитывается как значение предварительного делителя тактовой частоты (''prescaler''), поделенное на частоту ''PCLK1'' (это частота внутренней периферийной шины 1). Более подробно о ''PCLK1'' читайте в описании функции [http://docs.micropython.org/en/latest/library/pyb.html#pyb.freq pyb.freq()].
Допустим, PCLK1 – это 42 МГц, предварительный делитель тактовой частоты (prescaler) – это 100, ширина скачка синхронизации (sjw) – 1, сегмент бита 1 (bs1) – 6, а сегмент бита 2 (bs2) – 8. Отсюда можно вычислить, что…
 
a. Квант времени составляет 2.38 микросекунд: 100 / 42 МГц = 2.38 мкс
Один бит состоит из сегмента синхронизации (который всегда равен одному кванту), после чего идут сегмент ''бита 1'' и сегмент ''бита 2''. Точка захвата находится в конце сегмента ''бита 1'', а точка передачи – в конце сегмента ''бита 2''. Скорость передачи данных рассчитывается как ''1'', поделенное на время бита. Время бита – это ''(1 + сегмент бита 1 + сегмент бита 2)'', умноженное на квант времени.  
b. Время бита составляет 35.7 микросекунд: (1 + 6 + 8) * 2.38 = 35.7 мкс
 
c. Скорость передачи данных составляет 28 КГц: 1 / 35.7 = 0.028
Допустим, ''PCLK1'' – это ''42 МГц'', предварительный делитель тактовой частоты (''prescaler'') – это ''100'', ширина скачка синхронизации (''sjw'') – ''1'', сегмент ''бита 1 (bs1) – 6'', а сегмент ''бита 2 (bs2) – 8''. Отсюда можно вычислить, что…
* Квант времени составляет '''2.38 микросекунд''': 100 / 42 МГц = 2.38 мкс
* Время бита составляет '''35.7 микросекунд''': (1 + 6 + 8) * 2.38 = 35.7 мкс
* Скорость передачи данных составляет '''28 КГц''': 1 / 35.7 = 0.028


Более подробно читайте на странице 680 документации к [[STM32F405]].
Более подробно читайте на странице 680 документации к [[STM32F405]].

Текущая версия от 21:41, 4 октября 2020

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


CAN.init(mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8, auto_restart=False)[1]

  • CAN.init(mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8, auto_restart=False) – инициализирует CAN-шину со следующими параметрами:
    • mode – здесь может быть NORMAL, LOOPBACK, SILENT или SILENT_LOOPBACK.
    • extframe – если задать здесь True, шина будет использовать в фреймах расширенные идентификаторы (29 бит). В противном случае она будет использовать в идентификаторах стандартные 11 бит.
    • prescaler – этот параметр используется, чтобы задать продолжительность 1 кванта времени. Чтобы рассчитать квант времени, значение в prescaler нужно поделить на входную частоту (PCLK1, более подробно читайте в описании метода pyb.freq()).
    • sjw – это ширина скачка синхронизации в квантах времени; здесь может быть «1», «2», «3» или «4».
    • bs1 – это место точки захвата (в квантах времени). Здесь может быть от «1» до «1024» включительно.
    • bs2 – это место точки передачи (в квантах времени). Здесь может быть от «1» до «16» включительно.
    • auto_restart – здесь задается, будет ли контроллер автоматически пытаться перезапустить коммуникацию после входа в режим Bus Off. Если здесь будет стоять False, то restart() можно будет использовать для выхода из режима Bus Off.

Квант времени – это базовая единица измерения времени для CAN-шины. Квант времени рассчитывается как значение предварительного делителя тактовой частоты (prescaler), поделенное на частоту PCLK1 (это частота внутренней периферийной шины 1). Более подробно о PCLK1 читайте в описании функции pyb.freq().

Один бит состоит из сегмента синхронизации (который всегда равен одному кванту), после чего идут сегмент бита 1 и сегмент бита 2. Точка захвата находится в конце сегмента бита 1, а точка передачи – в конце сегмента бита 2. Скорость передачи данных рассчитывается как 1, поделенное на время бита. Время бита – это (1 + сегмент бита 1 + сегмент бита 2), умноженное на квант времени.

Допустим, PCLK1 – это 42 МГц, предварительный делитель тактовой частоты (prescaler) – это 100, ширина скачка синхронизации (sjw) – 1, сегмент бита 1 (bs1) – 6, а сегмент бита 2 (bs2) – 8. Отсюда можно вычислить, что…

  • Квант времени составляет 2.38 микросекунд: 100 / 42 МГц = 2.38 мкс
  • Время бита составляет 35.7 микросекунд: (1 + 6 + 8) * 2.38 = 35.7 мкс
  • Скорость передачи данных составляет 28 КГц: 1 / 35.7 = 0.028

Более подробно читайте на странице 680 документации к STM32F405.

<syntaxhighlight lang="python" enclose="div">

См.также

Внешние ссылки