mbedとWindows 10とでCAN送受信します。
必要なもの
- mbed LPC1768 ×1
- CANale pro ×1
- MCP2551モジュール ×1
USB-CAN変換はamazonとかで売ってるのもあるね
接続
接続はmbed Handbookのとおり
今回はpin29, 30のみ使用しました。
- p29 - CTX
- p30 - CRX
- VU - VCC
- GND - GND
Windows側はCANable(USB-CAN変換)を接続します。
CANableとMCP2551のCANH, CANL GNDを接続します。
CANableのショートコネクタは基板側にセットします
コード
コード(mbed側)
#include "mbed.h" DigitalOut led1(LED1); DigitalOut led2(LED2); CAN can(p30, p29); int main() { printf("main()\n"); char counter = 0; can.frequency(100000); CANMessage msg; while(1) { printf("loop()\r\n"); if(can.read(msg)) { for(int i = 0; i < msg.len; i++) printf("%d, ", msg.data[i]); led2 = !led2; } wait(0.2); can.write(CANMessage(0x123, &counter, 1)); counter++; } }
python-canをインストールします。
$ pip install python-can
$ pip3 install python-can
import can def demo(): msg = [1,2,3,4,5,6,7,8] can_bus = can.interface.Bus(bustype='slcan', channel='COM20', bitrate=100000) while True: try: send_msg = can.Message(arbitration_id=0x201, data=msg, is_extended_id=False) can_bus.send(send_msg) received_msg = can_bus.recv(0.1) if received_msg: print(received_msg) except KeyboardInterrupt: can_bus.close() break if __name__ == '__main__': demo()
実行結果
mbed側