Перейти к содержанию
bbh_blocked_dnftl

Dx Portal Настройка Can Шины Через Регистры


Рекомендуемые сообщения

Пытался настроить CAN для связи с устройством, для конфигурации CAN_BTR использовал онлайн калькулятор. После компиляции сразу было ясно что связи по CAN нет, при анализе сигнала видно что чистота пакетов из STM в пять раз ниже чем чистота из устройства. Может кто то помочь настроить инициализацию CAN через регистры.

 

Камень STM32F407AVG

 

Частота проца: 168 mHz;

 

Необходимая скорость CAN: 500kBs

 

Пины PB12, PB13.

 

На данный момент функция инициализации выглядит так:

 

void CAN_Init (void)  {

 

 

 

  RCC->APB1ENR |= RCC_APB1ENR_CAN2EN;   // enable clock for CAN2

 

 

 

 

 

  GPIOB->MODER |= (0 << 24); //PB12 IN

 

  GPIOB->MODER |= (2 << 26); //PB13 OUT

 

 

 

  GPIOB->OTYPER |= (0 << 12); //OTYPE PUSH-PULL

 

  GPIOB->OTYPER |= (0 << 13); //OTYPE PUSH-PULL

 

 

 

  GPIOB->PUPDR |= (0 << 24); //PushUP-PushDOWN NO PP

 

  GPIOB->PUPDR |= (0 << 26); //PushUP-PushDOWN NO PP

 

 

 

  GPIOB->OSPEEDR |= (2 << 24); //PIN SPEED FAST

 

  GPIOB->OSPEEDR |= (2 << 26); //PIN SPEED FAST

 

 

 

  GPIOB->AFR[1] |= (9 << 20); //AlternateFunction AF9(CAN)

 

  GPIOB->AFR[1] |= (9 << 24); //AlternateFunction AF9(CAN)

 

 

 

  CAN2->MCR = (CAN_MCR_NART | CAN_MCR_INRQ);    // init mode, disable auto. retransmission

 

  // Note: only FIFO 0, transmit mailbox 0 used

 

  CAN2->IER = (CAN_IER_FMPIE0 | CAN_IER_TMEIE); // FIFO 0 msg pending, Transmit mbx empty

 

 

 

 

 

 

 

  CAN2->BTR = 0x001c0014;

 

}

 

Настройки камня:

 

/**

 

* @brief  System Clock Configuration

 

*         The system Clock is configured as follow :

 

*            System Clock source            = PLL (HSE)

 

*            SYSCLK(Hz)                     = 168000000

 

*            HCLK(Hz)                       = 168000000

 

*            AHB Prescaler                  = 1

 

*            APB1 Prescaler                 = 4

 

*            APB2 Prescaler                 = 2

 

*            HSE Frequency(Hz)              = HSE_VALUE

 

*            PLL_M                          = (HSE_VALUE/1000000u)

 

*            PLL_N                          = 336

 

*            PLL_P                          = 2

 

*            PLL_Q                          = 7

 

*            VDD(V)                         = 3.3

 

*            Main regulator output voltage  = Scale1 mode

 

*            Flash Latency(WS)              = 5

 

* @param  None

 

* @retval None

 

*/

Раздел: STM32

 

Читать дальше

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...