精华内容
下载资源
问答
  • STM32 串口转CAN 代码例程 含 1.STM32_LED ,2.STM32_USART,3.STM32_USART_LED_CAN500K,等几个例子程序,方便新手入门。 并含有C#上位机程序,,通过UART串口转CAN 发送接收数据。
  • 针对传统车载激光测距设备采用串口通信协议难以满足系统实时性、多主方式的要求,介绍了基于FPGA的串口/CAN转换模块可配置化设计,该设计支持多主工作方式,相比较于基于单片机的串口/CAN转换设计,其数据通信实时性...
  • can转串口实例

    2015-11-10 00:10:10
    can转串口,一个can协议uart协议的通信实例,非常有借鉴价值。
  • 维特智能出品的TTL和can之间的数据透传模块使用说明书
  • tx2串口与can通信控制c620电机(使用usb转can模块) 出于各种各样的原因,我们没有使用常见的stm32来进行can通信,也没有使用tx2自带的can口,而是采用串口来发送和接收can数据报文。事实证明,这是可行的,但现在...

    简介

    出于各种各样的原因,我们没有使用常见的stm32来进行can通信,也没有使用tx2自带的can口,而是采用串口来发送和接收can数据报文。事实证明,这是可行的,但现在网络上关于这方面的资料较少,故博主将探索过程和所得记下,希望可以帮助到其他有同样任务的人,虽然我所使用的开发板为NVIDIA的tx2,但基本想法是适用于几乎所有的开发板的(只要有串口USB)。本文仅供参考,如有不足或错误,欢迎讨论!


    1.硬件

    我所使用的USB-can模块是维特智能的USB-CAN适配器
    在这里插入图片描述
    资料详情见链接资料详情-维特智能

    使用手册很详细,有问题可以直接找客服和技术支持
    具体连线
    实物与图片不一样,有五个接头,只需要找到TX和RX就行。
    我所使用的电机和电调为大疆的m3508和c620,电调can两根信号线与USB-can模块连接即可。
    电机的连线由于不同电机不同,请自行查询使用手册。重点在于can总线id的设置。

    2.基本思路

    usb-can的使用范例都是基于pc机的串口助手,不过既然用串口助手可以work,用开发板的串口同样可以。我们将用板子的串口代替串口助手,发送和接收报文,但这样做的话我们需要解析can的报文。所幸并不复杂。

    我们使用的是AT指令。根据上面的USB-can模块使用手册以及大疆c620电调的can发送、接收报文格式,(见下)我们可以看出:
    c620接收报文格式要求

    c620接收报文格式要求

    在这里插入图片描述
    想要成功控制电机,我们通过串口应该发送的格式如下(举个例子)
    41 54 40 00 00 00 08 00 FF 00 FF 00 FF 00 FF 0D 0A
    其中,41 54为帧头,40 00 00 00为ID(这个值是根据c620电机的标识符0x200得到的,由于id为ID域的前11位,因此要移位,值也就变了),08为数据长度,00 FF 00 FF 00 FF 00 FF为数据域,也就是四个轮子的电流值,0D 0A为帧尾。
    !!注意,以上指令是以十六进制发送的,也就是用串口助手的话,要勾选上hex

    接收报文格式类似,见c620使用手册
    在这里插入图片描述
    因此,我们的串口收到的报文应该长这样(类似的格式,这里以电调1为例)
    41 54 40 20 00 00 08 00 FF 00 FF 00 FF 00 FF 0D 0A
    还是要注意id域的值是要移位的!!

    3.具体细节

    3.1串口助手使用细节

    如果使用pc的串口助手,详情见上面模块的指导书,这里简述。
    AT+CG进入配置模式,AT+USART_PARAM 查询/设置串口参数,由于c620电机can总线的频率为1M,为了不丢包,串口的波特率也要接近1M,所以我们选择921600或1M。但这样在串口助手上会发生恐怖的事,因为太快了电脑反应不过来,或者需要很长时间反应,建议不要轻易尝试。
    配置完成后,AT+AT进入AT指令模式,此时我们可以发送报文了,格式见上述发送报文的样例。成功的话轮子会转动(但可能转一下很快就停了)。在进入AT指令后,我们也会不断的收到电调的返回报文。

    3.2开发板串口使用细节

    但是,真正要使用的话,大多数情况还是要用开发板的。所以下面重点介绍板子串口的代码。

    3.2.1 开发板串口配置

    tx2串口配置网上有很多相关blog,此处不再赘述。贴个链接
    tx2串口配置
    注意修改波特率(由于奇怪的原因,tx2波特率最高只能设置到460800,但是也能用)

    cfsetispeed(&opt, B460800);
    cfsetospeed(&opt, B460800);

    3.2.2 发送

    其次就是发送报文的生成。我采用的方法是进行一系列的字符串操作,把int类型的控制值(电流)转换成字符串嵌入发送报文,重点和难点在于要实现十六进制发送,但一般我们的控制量都是十进制的,所以要做个转换。这个网上也有blog。
    还有就是正反转的问题,正数和负数的补码不同,需要分情况。
    具体代码见文件
    (此处的代码只贴了一个轮子的)(避免过长)

    char HexChar(char c)
    {
        if((c>='0')&&(c<='9'))
            return c-'0';
        else if((c>='A')&&(c<='F'))
            return c-'A'+10;
        else if((c>='a')&&(c<='f'))
            return c-'a'+10;
        else
            return 0x10;
    }
    
    int Str2Hex(string str, char *data)
    //send in hex
    {
        int t,t1;
        int rlen=0;
        int len=str.size();
        if(len==1){
            char h=str[0];
            t=HexChar(h);
            data[0]=t;
            rlen++;
        }
        for(int i=0;i<len;){
            char l,h=str[i];
            if(h==' '){
                i++;
                continue;
            }
            i++;
            if(i>=len){
                break;
            }
            l=str[i];
            t=HexChar(h);
            t1=HexChar(l);
            if((t==16)||(t1==16))
                break;
            else
                t=t*16+t1;
            i++;
            data[rlen]=t;
            rlen++;
        }
        return rlen;
    }
    
    void tohex(char spd[],char spd_hex[])
    //special function to fit the format of AT command, like "1234" to " 12 34"
    {
        int j=6;
        for(int i=5;i>=0;i--){
            if(!spd[i])
                j--;
        }
        int k=5;
        for(j--;j>=0;j--){
            if(spd_hex[k]==' ')
                k=k-1;
            spd_hex[k]=spd[j];
            k--;
        }
    }
    int wspd1=2000;
    void atsend(int fd){
        char writebuffer[60]="";
        char head[ ]="41 54 40 00 00 00 08";
        char tail[ ]=" 0D 0A";
        char writedata[33]="";
        //write speed to hex
        char spd1[6]=""
        //write speed format
        char new1[7]=" 00 00";
        //negative data format
        string _strnew1="0000";
        //write speed to hex
        char mm1[ ]="";
        //write speed format
        char _charnew1[7];
        
        if(wspd1<0)
        {
            sprintf(mm1,"%X",wspd1);//transfer to hex
            for(int i=4;i<8;i++)
                _strnew1[i-4]=mm1[i];//keep four letters of hex(take -100 for example, mm1 is FFFFFF9C, we just need FF9C) 
            _strnew1=_strnew1.insert(0," ");
            _strnew1=_strnew1.insert(3," ");//_strnew1 is now " FF 9C", to fit the format of AT command
            strcpy(_charnew1,_strnew1.c_str());//turn string to char[]
            strcat(writedata,_charnew1);//construct writedata
        }
        else
        {
            sprintf(spd1,"%X",wspd1);
            //turn to standard format
            tohex(spd1,new1);
            //construct writedata
            strcat(writedata,new1);
        }
        //construct writebuffer
        strcat(writebuffer,head);
        strcat(writebuffer,writedata);
        strcat(writebuffer,tail);
        printf("writerbuffer=%s\n",writebuffer);//writerbuffer is like 41 54 40 00 00 00 08 00 FF 00 FF 00 FF 00 FF 0D 0A
        char data[18]={};
    
        Str2Hex(writebuffer,data);//data actually what we send(send in hex)
        int w;
        printf("%s\n", data);
        w = write(fd, data, 17);
        printf("write %d \n", w);
    }
    

    我的方法很笨,大佬勿喷。
    附上头文件

    #include<termios.h>
    #include<fcntl.h>
    #include<unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    #include<time.h>
    #include<string>
    #include<iostream>
    #include<math.h>
    

    此时,我们只需要修改外部定义的int wspd1=2000;,即可改变AT报文,即可控制给电机的电流值。

    3.2.3 接收

    接收函数如下

    //retrun speed
    int speed1=0;
    int speed2=0;
    int speed3=0;
    int speed4=0;
    int cread(int fd, char buff[], int lenth){
        int len;
        memset(buff, 0, lenth);
        len = read(fd, buff, lenth);
        printf("LEN:%d\n", len);
        if(len!=17)
            cout<<"wrong len"<<endl;
        else if(buff[0]!=0x41)
            cout<<"wrong AT command"<<endl;
        else
            //buff is like 41 54 40 20 00 00 08 00 FF 00 FF 00 FF 00 FF 0D 0A
            int id=buff[3]>>4;
            int _speed=(buff[9]*256+buff[10]);//unsigned from 0 to 65535
            signed short int speed=0;
            speed=_speed;//signed, + and - means positive or negaive rotation
            switch(id)
            {
                case 2:speed1=speed;break;
                case 4:speed2=speed;break;
                case 6:speed3=speed;break;
                case 8:speed4=speed;break;
            }
        cout<<speed1<<endl;//for debug
        cout<<speed2<<endl;
        cout<<speed3<<endl;
        cout<<speed4<<endl;
       
        return len;
    }
    

    将接收报文中的数据读出、保存在外部变量speed中

    3.2.4 主函数

    下面为主函数(只有读取数据),用开发板很明显要两个进程

    int main(){
        int fd;
        char str[32];
        char begin_CG[ ]="AT+CG\r\n";
        char begin_AT[ ]="AT+AT\r\n";
        
        fd = open_port();
        set_opt(fd);
        //上面两个函数为串口配置函数,,自己写一下,我就不贴了
        csend(fd, begin_CG, 7);
        while(cread(fd, str, 32));//读取之前可能中途截断残留的返回报文
        csend(fd, begin_AT, 7);
        sleep(1);
        cread(fd, str, 4);//read head(useless message)
        while(1){cread(fd, str, 17);}
    	//main loop.17 is the length of AT message
    	close(fd);
        return 0;
       
    }
    void csend(int fd, char buff[], int length){
        int w;
        printf("%s\n", buff);
        w = write(fd, buff, length);
        printf("write %d \n", w);
    }
    

    4.结语

    由于网上有关can的教程都是基于stm32的,所以特意写下这个特殊的方法,以及我在整个过程中遇到的困难和解决办法。文章很冗长,是因为我想把每一个细节都讲清楚,希望可以帮助到有需要的人!


    这只是tx2与电调的通讯模块,真正要使用can控制轮子的话还需要加一个pid控制,之后有可能再补充pid的代码。
    具体代码见我的资源。(csdn上传文件好像只能这样)如果愿意下载谢谢你的打赏!
    不过,我知道大家都是白嫖人,所以我贴个网盘。

    链接:https://pan.baidu.com/s/1lZP_gV3xwxQyBOv3VlYewg
    提取码:pgkw
    复制这段内容后打开百度网盘手机App,操作更方便哦

    (其中的demo.zip为stm32的样例代码)
    (代码里串口的配置要根据自己的情况做修改啊!)

    展开全文
  • 周立功串口转以太网模块详细资料,包含模块的引脚功能图,含模块的PCB封装,等详细的资料说明。串口转网口的必备资料文件。
  • 485串口信息can接口发送,can板卡为周立功的485转can模块
  • 电池管理系统将采集处理后的数据通过串口发送到PC机界面上,实现人机交互。通过串口界面,可以观察到电池的总电压、单体电压、电流、SOC、故障状态、充放电功率等参数,还可以通过串口发送实现管理系统的在线标定。
  • 智能CAN/串口协议转换器LCNET Pro RS-232/485提供一路RS-485、一路RS-232和一路CAN通道,实现CAN串口RS-485或RS-232之间的双向数据智能转换。每个通道独立隔离,每路通道采用金升阳电源模块和信号隔离芯片实现2500...

    智能CAN/串口协议转换器LCNET Pro RS-232/485提供一路RS-485、一路RS-232和一路CAN通道,实现CAN与串口RS-485或RS-232之间的双向数据智能转换。每个通道独立隔离,每路通道采用金升阳电源模块和信号隔离芯片实现2500VDC电气隔离,电源输入防反设计,支持DC6.5~36V输入;具有优秀的EMC性能,可靠性测试项目:ESD接触放电8KV、浪涌±1KV、脉冲群±2KV,工业四级,符合CE-EMC、IEC/EN61000-4-2/4/5标准;符合矿用本质安全设计规范,可提供认证所需的原理图、PCB等资料。

    智能CAN/串口转换器提供“透明转换、透明带标识转换和自定义协议转换”三种转换模式,支持任意串口数据与CAN帧之间的互转;支持CAN帧验收滤波设置。

    产品特性

    ﹂   支持任意串口数据与CAN帧之间的互转

    ﹂   支持三种透明、透明带标识和自定义协议转换模式

    ﹂   CAN波特率支持2.5Kbps~1Mbps,可任意设定或选常用波特率

    ﹂   符合CAN 2.0A/2.0B规范,符合ISO/DIS 11898-1/2/3标准

    ﹂   每个通道独立隔离,隔离电压高达2500VDC

    ﹂   通过USB接口和配套上位机软件快捷配置参数

    ﹂   支持CAN帧验收滤波设置

    ﹂   内置120欧姆终端电阻,跳线帽短接启用

    ﹂   电源输入防反接设计,工作电压6.5~36VDC,工作电流最大180mA/12V

    ﹂   工作温度:-40℃至+85℃

    ﹂   接口防浪涌、防脉冲群、ESD保护设计

    ﹂   符合矿用本质安全设计规范,提供认证所需的原理图、PCB图等资料

    典型应用

    智能CAN/串口协议转换器LCNET ProRS-232/485提供一路RS-485、一路RS-232和一路CAN通道,实现CAN与串口之间数据双向智能转换。

    实现can总线与串口RS-232/485之间的数据双向智能转换;无需了解CAN-bus如何知识,像操作串口一样操作CAN。

    展开全文
  • 基于FPGA的串口_CAN转换模块可配置化设计.pdf
  • 使用 AT 命令配置前要使设备或模块进入配置模式,对于 CANFDRS-100IE 需要 把 CFG 长按CFG按键三秒,进入配置模式。对于 CANFDUM-100A 模块需要 CFG 配置引 脚保持输入低电平三秒,使模块处于配置模式,否则无法连接...
  • MCU没有CAN或CAN接口数量...适用场景串口转CAN模块在什么时候需要用到呢?一是老产品面临升级,需要用到CAN总线通信,但硬件平台中的MCU没有集成CAN总线的控制器。二是选用的MCU已经包含CAN总线接口,但数量上不能满...

    MCU没有CAN或CAN接口数量不够怎么办?目前市面上有串口转CAN的相关模块或设备,但大家知道串口转CAN是如何实现的吗?转换后的帧格式是如何的?本文将为大家详细介绍串口经过转换后的CAN帧格式与注意事项。

    适用场景

    串口转CAN模块在什么时候需要用到呢?一是老产品面临升级,需要用到CAN总线通信,但硬件平台中的MCU没有集成CAN总线的控制器。二是选用的MCU已经包含CAN总线接口,但数量上不能满足项目需求。若出现类似以上两种情况且MCU有闲置串口,则可以选用串口转CAN模块解决。

    20f9a353570201dde05a930ee344e784.png

    图1 应用行业

    使用方法

    该类模块可以很方便地嵌入到具有UART接口的设备中,在不需改变原有硬件结构的前提下使设备获得CAN-bus通讯接口,实现具有UART设备和CAN-bus网络之间的数据通讯。工业级的转换模块内部还包括实现带隔离的CAN和UART转换所必须的模拟和数字器件、光电耦合器、DC/DC变换器、CAN-bus接口等。

    144543a269b27b47a8e6c20c395c394d.png

    图2 产品架构

    转换说明

    CSM100系列模块提供3种协议转换方式:透明转换、透明带标示转换、自定义协议转换。下面以CSM100系列的模块简述模块的透明转换格式。

    该模式下,CSM100接收到一侧总线的数据就立即转换发送至另一总线侧。该模式下的模块数据转换效率最高,能承担较大流量的数据传输。串行帧转CAN帧时,模块将来自串口的数据直接打包,并插入预先配置的CAN帧信息、帧ID一同作为一帧数据发送到总线上。同理,来自CAN总线上的数据将按顺序拆分为字节流发送到串口上,字节流的前几个字节为该CAN帧的信息。

    ee2ec9e326d4e3f22990eeded6577e1f.png

    图3 转换方式

    说到这,大家肯定有个疑惑,CAN帧的信息及CAN帧ID是如何表示的呢?

    帧信息主要用来区分标准帧、扩展帧,长度为1个字节。在“自定义协议转换”中,标准帧固定为 0x00, 扩展帧固定为 0x80; 在“透明转换”“透明带标识转换” 中, 标准帧为 0x0_,扩展帧为 0x8_,其中“_” 代表每个帧中的数据域长度, 范围为 0~8。

    标准帧的帧ID拆分为2个字节表示,扩展帧的帧ID拆分为4个字节表示。如果实际配置时给帧ID预留的只有一个字节且帧类型为扩展帧,方向是CAN帧转串行帧,那么将只能得到帧ID的高8位。如果实际配置时给帧ID预留的只有一个字节且帧类型为扩展帧,方向是串行帧转CAN帧,那么将帧ID的高8位正常填充,其他三字节全补零。

    29c30cb5808a7351d574da8fadf804b9.png

    假设配置的转换成的CAN报文帧信息为“标准帧”,配置的帧ID1,ID0分别为“0x01,0x23”,串行帧的数据为01,02,03,04,05,06,07,08共8个字节,那么转换格式如图5。CAN报文的帧ID为0x0123(用户配置),帧信息:标准帧(用户配置),串行帧中的数据部分将不作任何修改地转换到CAN报文中。

    b57b125d499faeffa3e67b07eef10bbf.png

    图5 串行帧到CAN帧

    假设CAN报文中帧ID1为0x01,帧ID0为 0x23,数据为0x12,0x34,0x56,0x78,0xab,0xcd,0xef,0xff,则CAN报文和转换后的串行帧如图6。CAN报文的帧信息(0x08)转换到串行帧中的第1个字节(0x08),CAN报文中的ID:0x0123依次转换到串行帧中的第2个字节(0x01)及第3个字节(0x23)。CAN报文的数据域将不作任何修改地转换到串行帧中的数据部分。

    a8a63ca2cadce1e352d1dfd4f2fab29d.png

    图6 CAN帧到串行帧

    总结

    以上为串口转CAN透明格式下的转换方式,后续笔者将新增透明带标示转换、自定义协议转换以及moudbus转换的内容,欢迎持续关注。

    66a8742a1c81aaabc3f924fdaab3d011.png

    展开全文
  • 智能双向嵌入式UART转CAN模块介绍

    千次阅读 2020-07-14 09:39:34
    CANUART-100TL系列智能双向UART转CAN模块具有一路TTL UART串口通道和一路CAN通道,实现CAN与串口 UART之间的双向数据智能转换。超小型灌封模块设计,方便用户集成到电路板上,快速通过MCU的UART口扩展CAN通道。CAN...

    CANUART-100TL系列智能双向UART转CAN模块具有一路TTL UART串口通道和一路CAN通道,实现CAN与串口 UART之间的双向数据智能转换。超小型灌封模块设计,方便用户集成到电路板上,快速通过MCU的UART口扩展CAN通道。CAN通道采用金升阳电源模块和信号隔离芯片实现2500VDC电气隔离,电源输入防反设计,支持DC6.5~36V输入;具有优秀的EMC性能,可靠性测试项目:ESD接触放电8KV、浪涌±1KV、脉冲群±2KV,工业四级,符合CE-EMC、IEC/EN61000-4-2/4/5标准;符合矿用本质安全设计规范,可提供认证所需的原理图、PCB等资料。
    智能双向UART转CAN模块提供“透明转换、透明带标识转换和自定义协议转换”三种转换模式,支持任意串口数据与CAN帧之间的互转;支持CAN帧验收滤波设置。
    在这里插入图片描述
    在这里插入图片描述
    产品特性
    超小型灌封模块
    支持任意串口数据与CAN帧之间的互转
    快速通过MCU的UART口扩展CAN通道。
    支持透明、透明带标识和自定义协议转换模式
    CAN波特率支持40Kbps~1Mbps,可任意设定
    串口波特率支持600~921600bps
    符合CAN 2.0A/2.0B规范,符合ISO/DIS 11898标准
    CAN接口隔离电压高达2500VDC
    通过评估板的USB接口或模块CAN接口配置参数
    接收或发送数据转换能力4000帧/s
    支持丰富的CAN帧验收滤波设置
    5V、3.3VDC电源输入可选,最大70mA/5V
    工作温度:-40℃至+85℃
    CAN接口防浪涌、防脉冲群、ESD保护设计
    符合矿用本质安全设计规范,提供认证所需的原理图、PCB图等资料
    产品选型:
    CANUART-100TL系列智能双向UART转CAN模块内部集成了ARM 32位的Cortex™-M3CPU(集成CAN控制器, 兼容NXP SJA1000,16MHz时钟频率)、CAN收发器、金升阳DC-DC电源模块、信号隔离芯片和完善防护器件等,性能强劲、功能完善,能够极低延时、高转换效率的完成UART与CAN之间的双向数据转换。
    CANUART-100TL系列智能双向UART转CAN模块根据供电电压(5V或3.3VDC)和是否带隔离地,分为三个型号。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 在AndroidManifest.xml 文件 添加下面代码 添加在你的usbttl(can)插入Android系统的时候打开的activity里面 < intent - filter > < action android : name = "android.hardware.usb.action.USB_DEVICE_...
  • 学习及工作中我们经常会遇到上位机与下位机通讯等工作,结合场景使用不同的通讯方式实时通讯,以下为工作中遇到的上位机与下位机进行实时通讯,采用RS232串口CAN总线形式进行网络通讯。 一、串口CAN总线 串行...
  • CANUART-100T系列智能双向UART转CAN模块具有一路TTL UART串口通道和一路CAN通道,实现CAN与串口 UART之间的双向数据智能转换。超小型灌封模块设计,方便用户集成到电路板上,快速通过MCU的UART口扩展CAN通道。CAN...
  • 基于STM32的CAN转USB模块的PCB设计

    千次阅读 2020-11-25 17:26:57
    设计PCB项目时,文件结构主要分为四个模块 第一个文件夹用来存放设计PCB时用到芯片的数据手册。 第二个文件夹用来存放设计PCB时用到的参考设计,包括所用芯片最小系统电路图,各种规范手册,别人设计的PCB等。 第三...
  • CANFDUM-100A串口转CANFD转模块是一款性能优越的CAN(FD)模块,用户能够不用了解CAN-bus相关知识,利用此模块就可以像操作UART一样操作CAN-bus。本模块支持透明转换,透明带标识转换Modbus转换四种模式。所有模式可以...
  • 树莓派4B使用usb串口通讯模块,简单检查一下连接情况,把USB串口的TX和RX引脚用杜邦线短接一下,来测试一下能不能用。USB串口模块和minicom串口助手
  • CAN光纤转换器,是集成1路标准光纤接口(单模、多模, SC、 ST 可选)、 2 路标准 CAN 总线接口的工业级 CAN 总线光纤转换器。CAN光纤转换器可以将 CAN 总线数据转换成光信号通过光纤来传输,接下来杭州飞畅科技的...
  • CAN转串口产品有两款型号:CAN-232B、CAN-485B。前者为CAN转RS232产品,后者除具有前者的所有功能外,还增加一个共享的RS485口,但RS232口与RS485口不能同时使用。 CAN-232B是智能型RS232总线CAN转换网桥,用于PC或...
  • 是基于STM32设计的can原理图,简单易懂
  • #资源达人分享计划# CUBEMX编写
  • 串口】转换模块来实现,而且由于can总线支持N多can节点,理论上,STM32就可以接入100多个串口设备了。 但是,只使用一个【can<->串口模块,是无法使串口设备与STM32通信的,因为单片机都是TTL电平(0~3.3或5...
  • USB-CAN模块使用

    2020-07-02 11:52:09
    周立功API及CAN软件使用说明1.API说明:dll替换2.CANTest软件使用说明8.其他 1.产品介绍 淘宝链接: https://item.taobao.com/item.htm?spm=a1z09.2.0.0.1eb52e8dgrGauZ&id=43101274868&_u=1o88eucf155 2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,187
精华内容 3,674
关键字:

串口转can模块