/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
/* USER CODE BEGIN 0 */
int __io_putchar(uint8_t ch) {
return ITM_SendChar(ch);
}
/* USER CODE END 0 */
/* USER CODE BEGIN WHILE */
while (1)
{
printf("Hello, SWO/SWV\r\n");
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
車載ネットワークの主流バスとしてCAN(Controller Area Network)とFD-CAN(FDCAN/CANFD/CAN-FD/CAN with Flexible Data rate)、IEEE11898で規格化されているCANの通信速度は最大で1Mbpsであり,同じくCAN FDでは最大5Mbps(ただし,IEEEの規格上では最大2Mbps)となっている。とはいえ、8MbpsはFD-CANの通信速度としても可能だという。今後CANはFD-CANに置き換えられると予想される。STM32ファミリーには、STM32G0、STM32G4、STM32H7、STM32L5、STM32MP1シリーズはFD-CANコントローラ内蔵で、別途FD-CANトランシーバだけを用意すると良い。今回はSTM32G474とMicrochip製FD-CANトランシーバのMCP2562FDを使ってFD-CANの送受信を確かめていこう。
テスト環境
・IDE環境 STM32CubeIDE 1.12.0 @UBUNTU 22.04(iMACの画面は大きく、スクリーンショットの字は小さく写るため予めご容赦ください)
・マイコン/評価ボード STM32G474(FD-CAN1&FD-CAN2) / NUCLEO-G474RE(MB1367C) x 1pcs
・FD-CANトランシーバ MCP2562FD x 2pcs
・差動線FD-CAN_H、FD-CAN_Lを跨ぐ抵抗器 120R x 2pcs
・デカップリング用コンデンサ 0.1uF x 4pcs
・差動波形観察 オシロスコープ
FD-CAN2においてFD-CAN1から送信した32バイトデータを受信して、それらのデータに1を足して、FD-CAN1に返す。FD-CAN1においてFD-CAN2から送信した32バイトデータを受信して、それらのデータに1を足して、FD-CAN1に返す。このようにやり取りを繰り返す。受信したデータは以下のとおり掲載しておく。NUCLEOにST-LINKデバッガはオンボードなので、別途ST-LINKデバッガ、シリアルケーブル使わなくても、SWV ITM ConsoleつまりSTM32CubeIDEコンソールにデータを表示させることにした。それに伴ってSWV/SWOの設定は必要になる。SWV/SWOの設定については、本サイトの関連記事「SWO/SWV with STM32CubeIDE」をご参考にしてください。