sja1000

基于51单片机的CAN通讯协议C语言程序

♀尐吖头ヾ 提交于 2020-03-22 09:39:21
//-----------------------函数声明,变量定义-------------------------------------------------------- #include <reg52.h> sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x00 //-----------------------定义总线定时寄存器的值-------------------------------------------------------- #define SJA_BTR0 0x00 //该值需要用户根据实际需要的波特率进行计算 #define SJA_BTR1 0x16 //具体计算见文章说明 //-----------------------设置接收报文类型(标示符)-------------------------------------------------------- //该值需要用户根据实际需要重新配置 #define SJA_ACR 0x00 //验收代码寄存器的值 #define SJA_AMR 0x16 //验收屏蔽寄存器的值 //-------

CAN总线(一)

邮差的信 提交于 2019-12-26 19:14:02
原文出处: http://www.cnblogs.com/jacklu/p/4729638.html 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对海防的越来越重视,对CAN的需求也会越来越大。这个暑假,通过参加苏州社会实践,去某船舶电气公司实习几周,也借此机会,学习了一下CAN总线。 概述 CAN(Controller Area Network)即控制器局域网,是一种能够实现 分布式实时控制的 串行 通信网络 。 想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel) CAN有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到 1Mbps ,通信距离最远到 10km ,无损位仲裁机制, 多主结构 。 近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。 一个典型的CAN应用场景: CAN总线标准 CAN总线标准只规定了 物理层 和 数据链路层 ,需要 用户自定义应用层 。不同的CAN标准仅物理层不同。 CAN收发器负责逻辑电平和物理信号之间的转换。 将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。 CAN标准有两个,即 IOS11898 和 IOS11519 ,两者 差分电平特性不同 。 高低电平幅度低