低成本实现USB-CAN收发器

方案:使用UART+CAN实现CAN数据收发

一、器件选择

1、串口

串口波特率要高,封装要小,所以最终选择了CH340N

CH340N特征如下:

串口波特率支持50~2Mbps

支持5V与3.3V串口电平

封装SOP-8

内置晶振,外围精简

2、主控

主控只要求有UART和CAN即可

所以最终选择了STM32F042F4 其封装为TSSOP20

3、CAN PHY

选择了TJA1050

4、电源

电源主要为5V降3.3V,所以选择AMS1117

二、原理图

三、PCB

四、程序

1、库的选择

​STM32程序编写主要分两种形式:库和寄存器。

HAL库:

到今天,STM32库的主流为HAL库,其主要特点为方便移植开发,芯片间兼容性高。但是也有很多缺点:

BUG多

运行效率低

标准库:

HAL库之前就是标准库,这个库虽然软件功能不多,但是硬件功能BUG少,相对于寄存器编写已经很好了。

所以最终选择标准库

在有中断、速度要求的情况下推荐选择标准库或寄存器。

2、数据处理

UART中断:

接收上位机的消息,并将数据通过CAN发出去

进中断一定要清中断标志位!!!

CAN数据:

经测试,在中断中接受数据,并通过UART发送出去,此方法在数据量比较低的情况下可以,但数据量高的情况下就不行了!!!!!

所以采用在While循环中接受CAN消息,然后在通过串口发送出去。

if(CAN_MessagePending(CAN, CAN_FIFO0) > 0)

{

LedSta = !LedSta;

CAN_Receive(CAN, CAN_FIFO0, &RxMessage);

res_data_cnt = 0;

if(RxMessage.IDE)

id = RxMessage.ExtId;

else

id = RxMessage.StdId;

dlc = RxMessage.DLC;

if(RxMessage.IDE)

ide = 0;

else

ide = 0x1;

if(RxMessage.RTR)

rtr = 0;

else

rtr = 0x2;

res_data_buf[res_data_cnt++] = ide | rtr;

res_data_buf[res_data_cnt++] = id >> 24;

res_data_buf[res_data_cnt++] = id >> 16;

res_data_buf[res_data_cnt++] = id >> 8;

res_data_buf[res_data_cnt++] = id;

res_data_buf[res_data_cnt++] = dlc;

memcpy(res_data_buf + res_data_cnt, RxMessage.Data, 8);

res_data_cnt += 8;

send_cmd_data(UART_DATA_CMD_RECV_CAN_DATA, res_data_buf, res_data_cnt);

}

待开发功能:

固件更新:STM32F042这款芯片有个很好的功能就是可以在程序内选择启动模式,不像其他32设置Boot0、Boot1的电平。在程序内可以实现跳转。

can收发器 rx_USB-CAN收发器相关推荐

  1. 关于利用IBERT核对GTX收发器板级测试的原理与过程详解

    一.概述 IBERT(集成误码率测试仪)是xilinx为7系列FPGA GTX收发器设计的,用于评估和监控GTX收发器.IBERT包括在FPGA逻辑中实现的模式生成器和检查器,以及对端口的访问和GTX ...

  2. 网络之四海:光纤收发器TX、RX分别表示什么?区分单纤双纤收发器的方法

    当我们远距离传输时,通常会使用光纤来传输.因为光纤的传输距离很远,一般来说单模光纤的传输距离在10千米以上,而多模光纤的传输距离最高也能达到2千米.而在光纤网络中,我们常常会使用到光纤收发器.那么光纤 ...

  3. 多模光纤收发器的应用领域及适用领域

    双纤多模高性能10/100Mbit自适应光纤收发器(光电转换器),具备地址过滤.网络分段及智能报警等功能,可提高网络工作效率及网络运行可靠性.可实现最远5公里无中继计算机数据网的高速远程互连.产品性能 ...

  4. 单模光纤收发器产品介绍及常见分类方式

    现如今,随着网络技术的进步,许多的场合都会需要光纤收发器进行远距离的传输,以致于现在国外和国内生产光纤收发器厂商非常多,产品线也极为丰富.收发器都是电转光的网络结构.接下来我们就来为大家详细介绍下单模 ...

  5. 什么是工业光纤收发器,工业收发器的作用是什么?

    工业收发器是发射器和接收器的组合,两者共享公共电路.通常,收发器用于无线通信系统中.从历史上看,收发器用于将计算机连接到外围设备,例如打印机,键盘,调制解调器,操纵杆和鼠标.当前,收发器用于机顶盒,G ...

  6. can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用

    1写在前面 前面文章是从大方向介绍了CAN网络,让大家对CAN网络有一定的认识.本文将范围缩小,讲述整个CAN网络其中的一个CAN收发器.如下图标记出来的部分: 本文结合众多初学者容易产生的疑问来讲述 ...

  7. STM32F103系列实战之通用同步异步收发器(USART)

    通用同步/异步收发器(USART) STM32F103xC. STM32F103xD和STM32F103xE增强型系列产品中,内置了3个通用同步/异步收发器(USART1. USART2和USART3 ...

  8. 光纤收发器双模和单模有什么区别?如何区分单模、双模光纤收发器?

    光纤收发器是一种将短距离的电信号和长距离的光信号进行传输转换的媒介,由于有些网络环境下短距离的电信号无法覆盖,必须用光纤来延长传输距离,而将铜线升级为光纤的成本又太大,所以光纤收发器的应用越来越广泛. ...

  9. can收发器 rx_CANOpen系列教程03_CAN收发器功能、原理及作用

    说明: 本文原创作者『strongerHuang』 首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop 标签:CAN. CANOpen. CanFestival ...

  10. CAN控制器和CAN收发器初始化

    最近项目中遇到CAN的物理层测试问题,主芯片S32K144,CAN芯片TJA1043: 单帧唤醒,出现收到第一帧时TXD出现一个12us的下拉波形,如下图: 正确图形: 分析如下: 未接其它ECU的情 ...

最新文章

  1. java aab全排列_编译原理习题课答案.ppt
  2. 《WebGIS开发实践手册》2.2 ArcIMS服务器组件[1]
  3. vue 滑动置顶功能_VUE 实现滚动监听 导航栏置顶的方法_蜡烛_前端开发者
  4. 地理素养的核心构成和主要特点
  5. mysql1130_解决远程连接mysql错误1130的方法
  6. VirtualBox更改默认路径
  7. 密码学专题 序列号文件
  8. 结构数据类型的用法 值类型 c# 1231
  9. 论文笔记_S2D.50_Kimera 具有结构规律的增量视觉-惯性三维网格生成
  10. CCNA学习指南 第八章 下载
  11. 日常塑料用品有哪些种类?
  12. 信息安全意识分享—社会工程学
  13. 实对称矩阵及其几大性质
  14. javascript实现下拉列表框模糊查询
  15. Java多重继承的两种方式
  16. python的IDLE打不开如何解决
  17. python import变灰_python--pycharm中import导入包呈现灰色问题之解决~很实用
  18. python数据分析建模-十分钟搞懂“Python数据分析”
  19. 怎样将相片合成gif图?在线合成图片如何操作?
  20. c语言control函数,C语言05-ControlFl.ppt

热门文章

  1. 蓝奏云(Lanzou网盘下载链接无法打开的解决方法
  2. 微信点餐小程序分析与开发
  3. 十一、捕鱼达人的鱼儿游泳动画
  4. 操作系统平时练习和测验(3)
  5. 在Ubuntu 16.04上安装和配置VNC
  6. ios avplayer播放完毕监听
  7. rtmp一些状态信息详解-as连接FMS服务器报错状态汇总~~
  8. Vue源码流程图(函数名与源码对应)
  9. NGFW盒式防火墙开局及组网规划2022
  10. CMDN Club每周精选(第1期)