firstvald 22 9 ноября, 2023 Опубликовано 9 ноября, 2023 · Жалоба Пробую простенький тестовый проект с CAN. Но я или что то упустил или что то не разрешил. На ножках нет передачи . На прием тоже нет прерывания. Может свежим глазом что- то бросится. #include "state.h" #include "can_my.h" #include "stm32f1xx_hal_cortex.h" CAN_HandleTypeDef hcan; /* USER CODE BEGIN PV */ CAN_FilterTypeDef canFilterConfig;/* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_CAN_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_CAN_Init(); /* USER CODE BEGIN 2 */ HAL_CAN_Start(&hcan); HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING); while (1) { if(flag_1s==1){ flag_1s=0; if (HAL_CAN_GetTxMailboxesFreeLevel(&hcan) != 0) { msgTxHeader.StdId = 0x200; msgTxHeader.DLC = 8; msgTxHeader.TransmitGlobalTime = DISABLE; msgTxHeader.RTR = CAN_RTR_DATA;// ïåðåäàåì ñàìè íå çàïðîñ ïàðàìåòðà msgTxHeader.IDE = CAN_ID_STD; uint32_t mailBoxNum = 0; for (uint8_t i = 0; i < 8; i++) { msgTxData[i] = i; } HAL_CAN_AddTxMessage(&hcan, &msgTxHeader, msgTxData, &mailBoxNum); } }//flag 1 s }//while }//main static void MX_CAN_Init(void) { canFilterConfig.FilterBank = 0; canFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; canFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; canFilterConfig.FilterIdHigh = 0x0000;//ñòàðøàÿ ÷àñòü ID canFilterConfig.FilterIdLow = 0x0000;// ìëàäøàÿ ÷àñòü ID canFilterConfig.FilterMaskIdHigh = 0x0000;// ñòàðøàÿ ÷àñòü ìàñêè canFilterConfig.FilterMaskIdLow = 0x0000;// ìëàäíàÿ ÷àñòü ìàñêè canFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; canFilterConfig.FilterActivation = ENABLE; canFilterConfig.SlaveStartFilterBank = 14; HAL_CAN_ConfigFilter(&hcan, &canFilterConfig); hcan.Instance = CAN1; hcan.Init.Prescaler = 16; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_13TQ; hcan.Init.TimeSeg2 = CAN_BS2_2TQ; hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoWakeUp = ENABLE ; hcan.Init.AutoRetransmission = DISABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK) { Error_Handler(); } } void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(hcan->Instance==CAN1) { __HAL_RCC_CAN1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**CAN GPIO Configuration PA11 ------> CAN_RX PA12 ------> CAN_TX */ GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP ; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* CAN1 interrupt Init */ HAL_NVIC_SetPriority(USB_HP_CAN1_TX_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USB_HP_CAN1_TX_IRQn); HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); } } void USB_LP_CAN1_RX0_IRQHandler(void) { HAL_CAN_IRQHandler(&hcan); } void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) { HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &msgRxHeader, msgRxData); if (msgRxHeader.IDE == CAN_ID_EXT) { msgId = msgRxHeader.ExtId; } else { msgId = msgRxHeader.StdId; } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 54 9 ноября, 2023 Опубликовано 9 ноября, 2023 · Жалоба 40 минут назад, firstvald сказал: Но я или что то упустил или что то не разрешил. Может USB одновременно подключен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 9 ноября, 2023 Опубликовано 9 ноября, 2023 · Жалоба Специально я не разрешал, но просмотрю в эту сторону. Я думал сначала, что в голубую таблетку can не доложили , попробовал с nucleo / а то же самое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 54 9 ноября, 2023 Опубликовано 9 ноября, 2023 · Жалоба 2 часа назад, firstvald сказал: Специально я не разрешал У нас такой прикол был, на входе VUSB забыли подтяжку на землю включить, и проц думал что подключен к USB, CAN естественно отваливался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 9 ноября, 2023 Опубликовано 9 ноября, 2023 · Жалоба вот это засада! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться