STM32 CAN Bus サンプルコード

UIROBOT CAN Bus 製品の STM32 開発サンプルコード。HAL ライブラリ、bxCAN、モータ制御。

# STM32 CAN Bus サンプルコード このページでは、STM32 マイクロコントローラの内蔵 CAN コントローラ(bxCAN)を使用して UIROBOT CAN bus デバイスを制御するためのサンプルコードを提供します。 --- ## Quick Selection | 接続方法 | 対応製品 | ドキュメント | |---------|---------|-------------| | **bxCAN(内蔵)** | UIM342, UIM342A | [AN022] | | **UART-CAN (UIM2513)** | UIM342, UIM342A, UIM1616 | [AN023] | ## セクション 1: bxCAN(内蔵 CAN) ### 背景 STM32F103 シリーズには内蔵の CAN コントローラ(bxCAN)が搭載されており、SN65HVD230 トランシーバを使用して CAN bus に接続します。 ### HAL ライブラリ設定 ```c CAN_HandleTypeDef hcan; void MX_CAN_Init(void) { hcan.Instance = CAN1; hcan.Init.Prescaler = 4; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SJW = CAN_SJW_1TQ; hcan.Init.BS1 = CAN_BS1_9TQ; hcan.Init.BS2 = CAN_BS2_6TQ; hcan.Init.AutoBusOff = ENABLE; hcan.Init.AutoWakeUp = ENABLE; hcan.Init.AutoRetransmission = ENABLE; HAL_CAN_Init(&hcan); } void CAN_SendMotorCommand(uint8_t nodeId, uint16_t speed) { CAN_TxHeaderTypeDef txHeader; uint8_t data[8] = {0x01, speed >> 8, speed & 0xFF, 0, 0, 0, 0, 0}; txHeader.StdId = nodeId; txHeader.IDE = CAN_ID_STD; txHeader.RTR = CAN_RTR_DATA; txHeader.DLC = 8; uint32_t mailbox; HAL_CAN_AddTxMessage(&hcan, &txHeader, data, &mailbox); } ``` --- ## ダウンロード | アプリケーションノート | 説明 | ダウンロードリンク | |---------------------|------|-----------------| | AN022 | STM32 bxCAN + UIM342 | [Download ZIP](https://www.uirobot.com) | | AN023 | STM32 + UIM2513 | [Download ZIP](https://www.uirobot.com) | --- ## 関連ドキュメント - [STC89C52 サンプルコード](/docs/stc89c52-examples) - [Arduino CAN Bus サンプルコード](/docs/arduino-examples) - [UIM2513 RS232-CAN ゲートウェイ](/docs/uim2513) --- *最終更新: 2026-07-03*