Search the Community
Showing results for tags 'can'.
-
stm32f103c8t6 + CAN + Hard Fault
Koteyk0o posted a topic in ARM, 32bit
Всем привет Использую stm32f103c8t6 в связке с MCP2551, с другой стороны к нему подключен CAN Shield для Arduino, чтобы ловить пакеты. При включении со стороны STM32 приходят 2 пустых пакета с заголовком (насколько я понимаю) После этого STM32 уходит в Hard Fault, тактирование я вроде бы настроил правильно, кванты времени выставил для скорости 500 кбит Код генерировал в STM32CubeMX, а отладку провожу в Keil uVision5 Честно говоря это мои первые попытки работы с CAN протоколом, да и до этого я с STM32 не работал, но похоже я что-то делаю не так #include "main.h" CAN_HandleTypeDef hcan; void SystemClock_Config(void); static void CAN_Data_Send(void); static void MX_GPIO_Init(void); static void MX_CAN_Init(void); void CAN_Data_Send(void){ CAN_TxHeaderTypeDef Tx_Header; Tx_Header.StdId = 0x201; Tx_Header.IDE = CAN_ID_STD; Tx_Header.RTR = CAN_RTR_DATA; Tx_Header.DLC = 0x08; uint8_t Tx_Data[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; HAL_CAN_AddTxMessage(&hcan, &Tx_Header, Tx_Data, (uint32_t *)CAN_TX_MAILBOX0); } int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_CAN_Init(); while (1){ HAL_Delay(500); CAN_Data_Send(); HAL_GPIO_TogglePin(GPIOC, CAN_Error_LED_Pin); } } void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){ Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){ Error_Handler(); } } static void MX_CAN_Init(void){ hcan.Instance = CAN1; hcan.Init.Prescaler = 9; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_4TQ; hcan.Init.TimeSeg2 = CAN_BS2_3TQ; hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoWakeUp = ENABLE; hcan.Init.AutoRetransmission = ENABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK){ Error_Handler(); } } static void MX_GPIO_Init(void){ GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); HAL_GPIO_WritePin(CAN_Error_LED_GPIO_Port, CAN_Error_LED_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED_Output_GPIO_Port, LED_Output_Pin, GPIO_PIN_RESET); GPIO_InitStruct.Pin = CAN_Error_LED_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(CAN_Error_LED_GPIO_Port, &GPIO_InitStruct); GPIO_InitStruct.Pin = Button_1_Pin|Button_2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = LED_Output_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(LED_Output_GPIO_Port, &GPIO_InitStruct); } void Error_Handler(void){ }- 56 replies
-
- can
- stm32f103c8t6
-
(and 1 more)
Tagged with:
-
Вопрос о протоколе верх. ур. для CAN и о CANopen в частности.
Z_h_e posted a topic in Controller Area Network (CAN)
Доброго времени суток. Еще очень давно мечтал сделать что-нибудь на CAN в своих радиолюбительских целях. И вот, похоже это время пришло :). Появилась задача удобно решаемая на CAN и достаточно раскуренный STM32. Вопрос у меня стоит с выбором прикладного уровня протокола. В принципе можно придумать свой, все-таки я , как радиолюбитель, не зажат стандартами и другими требованиями и по срокам подгонять может меня только я, с ним я договорится могу :). Но я пока кручусь возле CANopen, как кот вокруг холодильника. В общих виде структура протокола CANopen мне вроде как понятна, нюансы, я считаю, лучше разбирать одновременно практически со штудированием документации. Вот на этом этапе у меня и возник вопрос. Изобретая какой-нибудь девайс, несомненно лучше всего его проверять заведомо рабочим инструментом. И в моем случае, мне вроде как нужен какой-то CANopen конфигуратор. Тут я упираюсь в жесткое ограничение бюджета, имеющий крайне малый размер и его надзирателя по имени Жаба, который еще больше его ужимает. Теперь сам вопрос. Существуют ли какие-либо бесплатные инструменты и работы с CANopen? Например, вроде как мне может помочь Kickdrive zero, но она требует некопеечного адаптера CAN-USB. Я наверное ответ то знаю :), но вдруг я что-то упустил в гуглении и существует некий программный бесплатный продукт, пускай с сильно обрезанным функционалом и дешевым адаптером. Китайцы какие-то адаптеры продают, только я не понял с чем они работают. Может можно самому преобразователь интерфейса сделать? Какой-нибудь CAN-232, так ведь надо знать что гнать в 232, вряд ли же есть программы для CANopen которым можно тупо гнать в 232 дублирование пакетов без какой-то служебной информации? Из elm327 тоже наверное не получится сделать? Если я правильно понял, он чисто ат командами управляется. Может есть более удобный протокол для радиолюбителя, но тоже "стандартный"? Вопросы может не совсем корректно задал, каши в голове еще пока много. Если что постараюсь уточнить. Спасибо. -
CANopenNode
MaksR posted a topic in Controller Area Network (CAN)
Здравствуйте. Сейчас занимаюсь освоением CAN стека CANopenNode. Можете подсказать как настроить этот стек, как настроить словарь и как взаимодействовать с ним? Сконфигурировал стек с настройкой CO_NO_SDO_CLIENT = 0 (так понял, что так просто Client без Master). Запустил стек на STM32F407 без каких-либо других изменений. Смотрю данные с шины через Марафоновский USB-CAN и приложением CANWise. Все, что я вижу в CANwise'е это Heartbeat'ы с состоянием 0x5 и PDO запросы (0x1B0+NodeID(0x30), 0x2B0+NodeID(0x30), 0x3B0+NodeID(0x30)). -
Программисты под Android, Ростов-на-Дону
Иваныч posted a topic in Предлагаю работу
Крупному предприятию требуются программисты под Android. Требования: - Доскональное знание C++, C# и Java - Опыт написания п/о под Android (не менее 5 лет) - Готовность работать с существующими исходными кодами - Написание понятных, хорошо комментированных и документированных исходных кодов - Опыт работы с системами контроля версий - Умение пользоваться аппаратными и программными отладчиками - Умение читать электрические принципиальные схемы - Английский язык достаточный для чтения технической документации - Умение ладить с коллективом, не конфликтный и не вспыльчивый характер Желательный опыт: - Опыт работы с платформой Unity - Опыт модификации и сборки образов ОС Android из существующих исходников - C++ Builder или Visual C++ - i.MX6 процессоры - CAN, J1939, ISOBUS - Внедрение алгоритмов нечёткой логики Что предлагаем: - Грамотным специалистам - достойную, конкурентную белую шестизначную зарплату - Перспективная работа с масштабными поектами. Результаты Вашей работы будут демонстрироваться высшим лицам государства - Дружный коллектив - Иногородним оплачивается: -- приезд на собеседование -- переезд, включая перевоз вещей -- субсидия на съём жилья. Когда купите своё, субсидия всё равно остаётся ;-) -- четыре поездки домой в год - Субсидированные комплексные обеды в 100р. - Предприятие имеет свой детский лагерь на чёрном море и базу отдыха - Тёплый солнечный город, близость к Азовскому и Чёрному морям CV и, желательно, портфолио высылать на alexivanich[на]гмэйл.ком