RS232-CAN 对接测试 - 基于乐电新南 RS232-CAN 转换器

缘由

在板卡的批量生产测试中,CAN 可以两个互相收发数据做功能检验,但部分板卡只有一个 CAN 接口的情况下,不方便测试。于是找到了这样一个 RS232-CAN 转换器,让 CAN 与 RS232 进行对接测试。

转换器简介

对 CAN 总线信号与 RS232 通道数据进行相互转换,以达到两种不同协议进行数据通信的效果。还有高级的数据过滤等功能可以配置使用。

连接说明

基于广州创龙的 5728-IDK 板卡测试。

1)转换器的 VIN 管脚需提供 5V 电源供电。

2)转换器的 GND、CANH、CANL 管脚各自连接板卡 CAN 接口的对应信号管脚。

3)当前这款转换器上标识的 G_ISO 信号管脚并没有引出。不用理会。

 

通信测试

使用转换器的出厂配置,CAN 数据处理为透传模式,不做过滤,CAN 波特率 1000K,RS232 波特率 9600。

注意两个拨码,MOD 拨上,OFF;RES 拨下,ON。

板卡 CAN 配置

使用 canutils 工具中的 canconfig 命令进行配置波特率。

# canconfig can0 stop

# canconfig can0 bitrate 1000000

# canconfig can0 start

CAN 发 RS232 收

先执行 RS232 接收程序

# ./rs232_recv.py /dev/ttyS0 &

然后执行 CAN 数据发送程序

# cansend can0 -i 0x00 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38

这里 -i 指定 CAN 数据帧 ID,可以随意设置。后面发送 8 字节数据,十六进制表示,分别对应字符 1、2、3、4、5、6、7、8。

RS232 发 CAN 收

先执行 can 接收程序

# candump can0 &

然后执行 RS232 数据发送程序

# ./rs232_send.py /dev/ttyS0

这里 Python 程序往串口发送的数据为字符串 "12345678"。candump 以十六进制打印出收到数据的 ASCII 码。

 

串口程序源码

发送数据

#!/usr/bin/env python

import os, sys, time
import serial

if (len(sys.argv) != 2):
    print("Usage: {0} uart_path".format(sys.argv[0]))
    sys.exit(10)

UART_PATH = sys.argv[1]

dev = serial.Serial(UART_PATH, 9600, serial.EIGHTBITS,
                    serial.PARITY_NONE, serial.STOPBITS_ONE, 10)

wbuf = '12345678'
dev.write(wbuf)

dev.close()
sys.exit(0)

接收数据

#!/usr/bin/env python

import os, sys, time
import serial

if (len(sys.argv) != 2):
    print("Usage: {0} uart_path".format(sys.argv[0]))
    sys.exit(10)

UART_PATH = sys.argv[1]

dev = serial.Serial(UART_PATH, 9600, serial.EIGHTBITS,
                    serial.PARITY_NONE, serial.STOPBITS_ONE, 10)

wbuf = 'Hello'
rbuf = dev.read(8)
print('Read: ' + rbuf)

dev.close()
sys.exit(0)

参考

官网: http://www.ldxn-beijing.com/a/rcmjsj/60.html

淘宝: https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w5003-20328741818.2.513153ce4cOInB&id=525338898798

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页