can收发器 rx_USB-CAN收发器
低成本实现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收发器相关推荐
- 关于利用IBERT核对GTX收发器板级测试的原理与过程详解
一.概述 IBERT(集成误码率测试仪)是xilinx为7系列FPGA GTX收发器设计的,用于评估和监控GTX收发器.IBERT包括在FPGA逻辑中实现的模式生成器和检查器,以及对端口的访问和GTX ...
- 网络之四海:光纤收发器TX、RX分别表示什么?区分单纤双纤收发器的方法
当我们远距离传输时,通常会使用光纤来传输.因为光纤的传输距离很远,一般来说单模光纤的传输距离在10千米以上,而多模光纤的传输距离最高也能达到2千米.而在光纤网络中,我们常常会使用到光纤收发器.那么光纤 ...
- 多模光纤收发器的应用领域及适用领域
双纤多模高性能10/100Mbit自适应光纤收发器(光电转换器),具备地址过滤.网络分段及智能报警等功能,可提高网络工作效率及网络运行可靠性.可实现最远5公里无中继计算机数据网的高速远程互连.产品性能 ...
- 单模光纤收发器产品介绍及常见分类方式
现如今,随着网络技术的进步,许多的场合都会需要光纤收发器进行远距离的传输,以致于现在国外和国内生产光纤收发器厂商非常多,产品线也极为丰富.收发器都是电转光的网络结构.接下来我们就来为大家详细介绍下单模 ...
- 什么是工业光纤收发器,工业收发器的作用是什么?
工业收发器是发射器和接收器的组合,两者共享公共电路.通常,收发器用于无线通信系统中.从历史上看,收发器用于将计算机连接到外围设备,例如打印机,键盘,调制解调器,操纵杆和鼠标.当前,收发器用于机顶盒,G ...
- can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用
1写在前面 前面文章是从大方向介绍了CAN网络,让大家对CAN网络有一定的认识.本文将范围缩小,讲述整个CAN网络其中的一个CAN收发器.如下图标记出来的部分: 本文结合众多初学者容易产生的疑问来讲述 ...
- STM32F103系列实战之通用同步异步收发器(USART)
通用同步/异步收发器(USART) STM32F103xC. STM32F103xD和STM32F103xE增强型系列产品中,内置了3个通用同步/异步收发器(USART1. USART2和USART3 ...
- 光纤收发器双模和单模有什么区别?如何区分单模、双模光纤收发器?
光纤收发器是一种将短距离的电信号和长距离的光信号进行传输转换的媒介,由于有些网络环境下短距离的电信号无法覆盖,必须用光纤来延长传输距离,而将铜线升级为光纤的成本又太大,所以光纤收发器的应用越来越广泛. ...
- can收发器 rx_CANOpen系列教程03_CAN收发器功能、原理及作用
说明: 本文原创作者『strongerHuang』 首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop 标签:CAN. CANOpen. CanFestival ...
- CAN控制器和CAN收发器初始化
最近项目中遇到CAN的物理层测试问题,主芯片S32K144,CAN芯片TJA1043: 单帧唤醒,出现收到第一帧时TXD出现一个12us的下拉波形,如下图: 正确图形: 分析如下: 未接其它ECU的情 ...
最新文章
- java aab全排列_编译原理习题课答案.ppt
- 《WebGIS开发实践手册》2.2 ArcIMS服务器组件[1]
- vue 滑动置顶功能_VUE 实现滚动监听 导航栏置顶的方法_蜡烛_前端开发者
- 地理素养的核心构成和主要特点
- mysql1130_解决远程连接mysql错误1130的方法
- VirtualBox更改默认路径
- 密码学专题 序列号文件
- 结构数据类型的用法 值类型 c# 1231
- 论文笔记_S2D.50_Kimera 具有结构规律的增量视觉-惯性三维网格生成
- CCNA学习指南 第八章 下载
- 日常塑料用品有哪些种类?
- 信息安全意识分享—社会工程学
- 实对称矩阵及其几大性质
- javascript实现下拉列表框模糊查询
- Java多重继承的两种方式
- python的IDLE打不开如何解决
- python import变灰_python--pycharm中import导入包呈现灰色问题之解决~很实用
- python数据分析建模-十分钟搞懂“Python数据分析”
- 怎样将相片合成gif图?在线合成图片如何操作?
- c语言control函数,C语言05-ControlFl.ppt