精华内容
下载资源
问答
  • STM32 串口转CAN 代码例程 含 1.STM32_LED ,2.STM32_USART,3.STM32_USART_LED_CAN500K,等几个例子程序,方便新手入门。 并含有C#上位机程序,,通过UART串口转CAN 发送接收数据。
  • 串口转CAN手册

    2018-10-17 21:02:20
    a) 完全支持CAN总线的2.0A及2.0B规范。 b) 采用Cortex M3内核的ARM处理器,数据处理能力更强,功耗更低,处理器集成了CAN控制器,让传输更省时。 c) 更宽的CAN波特率,5-1Mpbs可任意编程设定
  • 这是一个基于单片机的串口转CAN总线的程序,它可以实现串口CAN总线协议的相互转换。 这是一个基于单片机的串口转CAN总线的程序,它可以实现串口CAN总线协议的相互转换。
  • 485串口信息转can接口发送,can板卡为周立功的485转can模块。
  • 基于S32K118的Bootloader,一个程序是串口转CAN,通过Xmodem协议传输,一个是Bootloader,内含覆盖升级和回滚升级,注释详细,下载后可直接使用。
  • CANFDUM-100A串口转CANFD模块是一款性能优越的CAN(FD)模块,用户能够不用了解CAN-bus相关知识,利用此模块就可以像操作UART一样操作CAN-bus。本模块支持透明转换,透明带标识转换Modbus转换四种模式。所有模式可以...
  • CANFDRS-100IE和CANFDUM-100A 转换器是一款智能协议转换器,支持串口CAN(CANFD)之间转换。使用前需要先设置好要转换的CAN类型是普通CAN还是CANFD。 转换器给出了四种转换模式供选择,包括:透明转换、透明带标识...
  • 智能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。

    展开全文
  • EC016 串口转can bus、GPIO 芯片方案介绍   串口转CANBUS ,串口转8 IN 、8 OUT GPIO芯片 EC016方案功能说明 1、 EC016方案芯片采用32位Cortex™-M3 CPU,主频高达72 MHz 2、 支持UART to CAN bus ...

    EC016 串口转can bus、GPIO 芯片方案介绍

     

    串口转CANBUS ,串口转8 IN 、8 OUT GPIO芯片


    EC016方案功能说明

    1、 EC016方案芯片采用32位Cortex™-M3 CPU,主频高达72 MHz  
    2、 支持UART to CAN bus 功能
    3、 支持UART to GPIO 功能
    4、 串口通信波特率115200
    5、 Can bus 波特率可调10Kb/s、100Kb/s、125Kb/s、500Kb/s、1Mb/s(修改固件可定制其他波特率)
    6、 方案添加EEPROM 情况下,8个输出IO可设置上电默认输出电平
    7、 主控芯片内部带watchdog,增加程序运行稳定性
    8、 芯片内部设置2x 480 Byte CAN BUS数据输入输出buffer 
     








    应用领域
    1、 车载设备can bus 总线扩展
    2、 X86架构CPU 扩展NBUS/GPIO接口
    3、 串口转CAN BUS 转接器
    4、 CAN BUS 通信设备


























    windows测试程序说明
    测试程序主界面
     
    CAN BUS 通信界面
     












    CANBUS发送数据格式说明


    数据格式 OP code 描述
    Byte0 0x01 配置模式
    0x00 发送数据模式
    Byte1配置模式 0x01 配置模式波特率10K
    0x02 配置模式波特率100K
    0x03 配置模式波特率125K
    0x04 配置模式波特率500K
    0x05 配置模式波特率1M
    Byte1发送数据模式 数据帧类型及数据长度
    Byte2~ Byte5 ID 标准ID 16bit表示,最大0x7ff
    扩展ID 32bit 表示,最大0x1fffffff
    Byte6~ Byte13 8 byte DATA buffer 数据帧数据,远程帧只有ID无数据


    举个例子数据帧00 01 00 00 00 00 00 00 00 00 00 00 00 00
    00 :表示发送模式
    01 :表示配置波特率100K
    空字节: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00




    举个例子数据帧00 88 12 34 56 78 01 02 03 04 05 06 07 08
    00 :表示发送模式
    88 :表示扩展帧、数据帧 ,数据长度8位
    帧ID : 0x12345678
    数据 :0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08




    CANBUS接收数据格式说明


    数据格式 OP code 描述
    Byte0 0x01 标准帧+远程帧
    0x02 标准帧+数据帧
    0x03 扩展帧+远程帧
    0x04 扩展帧+数据帧
    Byte1 0x00 远程帧,无数据
    0x01~0x08 数据长度0~8
    Byte2~ Byte5 ID 标准ID 16bit表示,最大0x7ff
    扩展ID 32bit 表示,最大0x1fffffff
    Byte6~ Byte13 8 byte DATA buffer 数据帧数据,远程帧无数据
    举个例子数据帧04 08 12 34 56 78 01 02 03 04 05 06 07 08
    04 :表示扩展帧,数据帧
    08 :表示数据长度8位
    帧ID : 0x12345678
    数据 :0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08



    GPIO发送数据格式说明


    数据格式 OP code 描述
    Byte0 0x01 发送模式,发送GPO数据
    0x02 读取模式,读取GPI及GPO状态
    Byte1 发送模式 GPO数据值0x00~0xFF
    读取模式 无数据0X00
    Byte2 0X00 0X00,表示GPO值不被保存,下次开机默GPO设置全部为低电平
    0X01 表示GPO值被保存,下次开机默GPO设置状态
    0X02 表示已保存的GPO值被取消
    举个例子数据帧 : 01 FF 01
    01 :表示发送模式,设置GPO 输出状态
    FF :表示8个输出IO全部输出高电平
    01 : 表示保存0xFF的默认设置状态,下次再次上电默认设置0xFF(全部输出高电平)



    GPIO接收数据格式说明
    数据格式 OP code 描述
    Byte0 0x00~0xFF 8个输入IO的输入状态
    Byte1 0x00~0xFF 8个输出IO的输出状态
    Byte2 0X00 保留
    举个例子数据帧 : 00 FF 00
    00 :表示8个输入IO的电平都为0 
    FF :表示8个输出IO全部输出高电平(3.3v)
    00 : 保留




    设计参考电路

     


     

     









    详情了解以下链接:
    http://download.csdn.net/detail/zengshitang520/9694049


    展开全文
  • 爱威轮 RS232串口转CAN总线收发器说明书rar,爱威轮 RS232串口转CAN总线收发器说明书
  • can转串口实例

    2015-11-10 00:10:10
    can转串口,一个can协议转uart协议的通信实例,非常有借鉴价值。
  • 本程序为STM32F105RBTV6单片机与上位机串口通讯、与智能网络路由器通讯程序。USART2 与 CAN1、CAN2 数据转换 接发收特定协议的数据并相互转换。程序原理可供学习参考,禁止商用。
  • SLCAN 串口转CAN

    千次阅读 2014-10-07 20:23:29
     slcan 即serial line CAN interface driver (using tty line discipline)  通用标准协议参考:http://www.mirrorservice.org/sites/downloads.sourceforge.net/s/so/socketcan.berlios/SLCAN-API.pdf
    

    一、SLCAN协议
         slcan 即serial line CAN interface driver (using tty line discipline)
        通用标准协议参考:http://www.mirrorservice.org/sites/downloads.sourceforge.net/s/so/socketcan.berlios/SLCAN-API.pdf

    SLCAN 帧的ASCII 描述如下:

      <type> <id> <dlc> <data>

     type的定义: 

      t => 11 bit data frame 标准帧

      r => 11 bit RTR frame  带RTR的标准帧

      T => 29 bit data frame ID扩展帧

      R => 29 bit RTR frame  带RTR的ID扩展帧


    id 为3个字节的ASCII Hex,扩展为8个字节的ASCII Hex。

    dlc 一个字节的ASCII 数字 ('0'~'8')

    data ASCII的16进制,个数为dlc。


    例:

    t1230 : can_id 0x123, can_dlc 0, no data

    t4563112233 : can_id 0x456, can_dlc 3, data 0x11 0x22 0x33

    T12ABCDEF2AA55 : extended can_id 0x12ABCDEF, can_dlc 2, data 0xAA 0x55

    r1230 : can_id 0x123, can_dlc 0, no data, remote transmission request





    二、SLCAN驱动
         文件路径:linux/drivers/net/can/slcan.c

    1. 串口线路规程

    驱动初始化函数:slcan_init(void);

    线路规程接口:tty_register_ldisc(N_SLCAN, &slc_ldisc);

    slc_ldisc can操作定义如下:

    static struct tty_ldisc_ops slc_ldisc = {

    .owner = THIS_MODULE,

    .magic = TTY_LDISC_MAGIC,

    .name = "slcan",

    .open = slcan_open,

    .close = slcan_close,

    .hangup = slcan_hangup,

    .ioctl = slcan_ioctl,

    .receive_buf = slcan_receive_buf,

    .write_wakeup = slcan_write_wakeup,

    };

    2. 注册网络接口

    选择空闲的通道,关联对应的tty接口,注册网络接口.

    slcan_open(struct tty_struct *tty);

    收集悬空的通道。

    slc_sync();

    /* OK.  Find a free SLCAN channel to use. */

        把tty接口关联到空闲的通道。

    sl = slc_alloc(tty_devnum(tty));

    sl->tty = tty;

    tty->disc_data = sl;

    注册网络设备

    register_netdevice(sl->dev);


    struct slcan {

    int magic;

    /* Various fields. */

    struct tty_struct *tty; /* ptr to TTY structure      */

    struct net_device *dev; /* easy for intr handling    */

    spinlock_t lock;

    /* These are pointers to the malloc()ed frame buffers. */

    unsigned char rbuff[SLC_MTU]; /* receiver buffer      */

    int rcount;         /* received chars counter    */

    unsigned char xbuff[SLC_MTU]; /* transmitter buffer      */

    unsigned char *xhead;         /* pointer to next XMIT byte */

    int xleft;          /* bytes left in XMIT queue  */

    unsigned long flags; /* Flag values/ mode etc     */

    #define SLF_INUSE 0 /* Channel in use            */

    #define SLF_ERROR 1               /* Parity, etc. error        */

    };


    3. 发送数据

    从串口接收数据并发送到网络层.


    static void slcan_receive_buf(struct tty_struct *tty,

          const unsigned char *cp, char *fp, int count)


    /* parse tty input stream */

    slcan_unesc(sl, *cp++);

    发送一个CAN帧到网络层.

    slc_bump(struct slcan *sl)

         netif_rx_ni(skb);


    -------------------------------------------------------------------


    /*

     * Called by the driver when there's room for more data.  If we have

     * more packets to send, we send them here.

     */
    4. 读取数据

    static void slcan_write_wakeup(struct tty_struct *tty)


    actual = tty->ops->write(tty, sl->xhead, sl->xleft);

    ---------------------------------------------------------------------

    三、操作及应用

    1. 获取CAN 工具

    $git clone https://git.gitorious.org/linux-can/can-utils.git

    编译并安装


    2. 设置串口参数

    $sudo stty -F /dev/ttyS0 921600 -parity -cstopb

    3. 设置CAN参数

    $sudo slcan_attach -w -o -s6 /dev/ttyS0

    4. 发送数据

    $sudo ifconfig slcan0 up

    $sudo cangen slcan0 –g 100

    5. 接收数据

    $sudo ifconfig slcan0 up

    $sudo candump slcan0


    展开全文
  • stm32F103 232 CAN

    2017-12-06 22:40:06
    基于KEIL MDK5开发平台开发。stm32F103 232 CAN数据互。232数据带缓存
  • USB转CAN开源资料

    2015-04-27 00:59:08
    USB转CAN开源资料,有源码,原理图,PCB版图
  • STM32 can转串口代码

    2018-03-26 12:44:41
    stm32F101,can转串口代码,已在正式产品中使用,实现can数据转串口的透传功能
  • 情况是这样的,因为项目中需要外接的串口设备很多,STM32F4的6个UART/USART已经都被占用完了,如果想继续接入串口设备,只能通过【can<->串口】转换模块来实现,而且由于can总线支持N多can节点,理论上,STM32...

    情况是这样的,因为项目中需要外接的串口设备很多,STM32F4的6个UART/USART已经都被占用完了,如果想继续接入串口设备,只能通过【can<->串口】转换模块来实现,而且由于can总线支持N多can节点,理论上,STM32就可以接入几百个个串口设备了。

    看起来只要买一个CAN转串口模块,就可以实现这一功能,其实不然,STM32虽然自带CAN控制器,但是STM32的引脚都是TTL电平(0~3.3或5V),STM32的CAN控制器输出的信号,并不能直接接入CAN总线,总所周期,CAN总线是差分电平2.3V,所以还必须有一个模块能够把单片机发出的信号转换为CAN电平,才能与can总线上的其他节点通信。

    硬件结构如下所示:

    按照上图的连接方式,就可以给STM32接入几百个串口设备了(可以同时接入TTL/232/484串口设备,而且同时接入的这些串口设备,可以不同波特率)。

    网上买的【CAN<->串口】设备,基本都同时支持串口波特率配置、can波特率配置,这样我们就能用一个can口同时接入不同波特率的串口设备。

    下面给出一个最基本的STM32F407的CAN收发例子,最核心的程序就3个:初始化、发送、中断接收。

    //波特率=Fpclk1/((tsjw+tbs1+tbs2+3)*brp);
    u8 CAN1_Mode_Init(u8 tsjw, u8 tbs2, u8 tbs1, u16 brp, u8 mode)
    {
    
      	GPIO_InitTypeDef GPIO_InitStructure; 
    	CAN_InitTypeDef        CAN_InitStructure;
      	CAN_FilterInitTypeDef  CAN_FilterInitStructure;
    
       	
    
        //使能相关时钟
    	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能PORTA时钟	                   											 
    
      	RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);//使能CAN1时钟	
    	
        //初始化GPIO
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11| GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA11,PA12
    	
    	//引脚复用映射配置
    	GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_CAN1); //GPIOA11复用为CAN1
    	GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_CAN1); //GPIOA12复用为CAN1
    
      	//CAN单元设置
       	CAN_InitStructure.CAN_TTCM=DISABLE;	//非时间触发通信模式   
      	CAN_InitStructure.CAN_ABOM=DISABLE;	//软件自动离线管理	  
      	CAN_InitStructure.CAN_AWUM=DISABLE;//睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)
      	CAN_InitStructure.CAN_NART=ENABLE;	//禁止报文自动传送 
      	CAN_InitStructure.CAN_RFLM=DISABLE;	//报文不锁定,新的覆盖旧的  
      	CAN_InitStructure.CAN_TXFP=DISABLE;	//优先级由报文标识符决定 
      	CAN_InitStructure.CAN_Mode= mode;	 //模式设置 
      	CAN_InitStructure.CAN_SJW=tsjw;	//重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1tq~CAN_SJW_4tq
      	CAN_InitStructure.CAN_BS1=tbs1; //Tbs1范围CAN_BS1_1tq ~CAN_BS1_16tq
      	CAN_InitStructure.CAN_BS2=tbs2;//Tbs2范围CAN_BS2_1tq ~	CAN_BS2_8tq
      	CAN_InitStructure.CAN_Prescaler=brp;  //分频系数(Fdiv)为brp+1	
      	CAN_Init(CAN1, &CAN_InitStructure);   // 初始化CAN1 
        
    	//配置过滤器
     	CAN_FilterInitStructure.CAN_FilterNumber=0;	  //过滤器0
      	CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; 
      	CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位 
      	CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;32位ID
      	CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
      	CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32位MASK
      	CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
       	CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
      	CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
      	CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化
    		
    
    	//CAN1 RX0 中断
    	CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);//FIFO0消息挂号中断允许
    	NVIC_InitTypeDef  NVIC_InitStructure;
      	NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
      	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;     // 主优先级为1
      	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;            // 次优先级为0
      	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      	NVIC_Init(&NVIC_InitStructure);
    
    	return 0;
    }
    u8 CAN1_Send_Msg(u8* msg,u8 len)
    {	
      u8 mbox;
      u16 i=0;
      CanTxMsg TxMessage;
      TxMessage.StdId=0x12;	 // 标准标识符为0
      TxMessage.ExtId=0x12;	 // 设置扩展标示符(29位)
      TxMessage.IDE=0;		  // 使用扩展标识符
      TxMessage.RTR=0;		  // 消息类型为数据帧,一帧8位
      TxMessage.DLC=len;							 // 发送两帧信息
      for(i=0;i<len;i++)
    	TxMessage.Data[i]=msg[i];				 // 第一帧信息          
      mbox= CAN_Transmit(CAN1, &TxMessage);   
      i=0;
      while((CAN_TransmitStatus(CAN1, mbox)==CAN_TxStatus_Failed)&&(i<0XFFF))i++;	//等待发送结束
      if(i>=0XFFF)return 1;
      return 0;		
    
    }
    
    
    
    //接收中断服务函数			    
    void CAN1_RX0_IRQHandler(void)
    {
      	CanRxMsg RxMessage;
    	int i=0;
        CAN_Receive(CAN1, 0, &RxMessage);
    //接受的字节数=RxMessage.DLC, 接收的数据在RxMessage.data
    	
    }

    以上例子,发送是用堵塞的方式,接收用的中断的方式。

     

    关于STM32的CAN波特率配置,如果你使用的是cube生成的hal工程,直接就能计算出波特率,很方便,如下图所示。

    波特率= PCLK1 / Prescaler / (BS1 + BS2 + JW)

    其中,PCLK1就是APB1的时钟频率,一般在F4上这个值多为84M或者42M,具体看你自己的配置。
    Prescaler、BS1、 BS2 、 JW四个值见下图红色框。

     

    需要注意的是,如果你是用标准库写的代码,Prescaler、BS1、 BS2 、 JW这四个值是不能随便取的,建议使用cube检查一下这4个值的组合是否合法。还要注意,cube中的文字例如上图中的14 Times,其宏定义为:CAN_BS1_14tq, 但该宏的数值却是=13,求波特率时,是要在公式中代入14的。

     

    展开全文
  • 串口助手和CAN助手合二为一 can设备使用周立功 可移植
  • 虚拟串口程序 虚拟串口程序-can开发用
  • 针对传统车载激光测距设备采用串口通信协议难以满足系统实时性、多主方式的要求,介绍了基于FPGA的串口/CAN转换模块可配置化设计,该设计支持多主工作方式,相比较于基于单片机的串口/CAN转换设计,其数据通信实时性...
  • 这个是串口CAN的中断收发程序,压缩包里接收与发送是分开写的,可以根据自己需要进行修改
  • 基于STM32F105/F107/F205的串口转双路CAN的数据互程序,完整程序,到手可用,数据发送方法使用说明在程序里有描述和备注,是基于STM32串口的哦,不是USB接口的CAN适配器哦
  • 昆仑通态(MCGS)嵌入版_荣信电子_CAN定制驱动rar,昆仑通态(MCGS)嵌入版_荣信电子_CAN定制驱动
  • tx2串口can通信控制c620电机(使用usb转can模块) 出于各种各样的原因,我们没有使用常见的stm32来进行can通信,也没有使用tx2自带的can口,而是采用串口来发送和接收can数据报文。事实证明,这是可行的,但现在...
  • MCGS与CAN协议

    2017-06-06 11:46:58
    关于MCGS如何通过使用CAN协议与下位机进行通讯案例
  • 基于51单片机的CAN总线串口通信卡的设计与实现
  • 用来PC与能够进行CAN通信的处理器进行通信,里面有驱动以及安装教程。用来PC与能够进行CAN通信的处理器进行通信,里面有驱动以及安装教程。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,347
精华内容 8,938
关键字:

串口转can