版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SJA1000 SJA1000 的应用的应用江庚炜2007.12.08主要内容主要内容 基于SJA1000的CAN-bus网络 SJA1000的硬件电路 SJA1000的操作方法 常见问题及其解决办法CANCAN节点构成节点构成一个完整的CAN节点应该包括以下三个部分:微控制器、CAN控制器、CAN收发器。1. 含有CAN控制器的微处理器,如: P87C591、LPC2119。使用这些微处理器只需加一个CAN收发器。2. 使用不带有CAN控制器的微处理器,需另外加独立CAN控制器和CAN收发器。单片机带有单片机带有CANCAN控制器时的节点模型控制器时的节点模型CAN控制器CAN收发器单片机C
2、PU RXDTXDCAN总线单片机不带单片机不带CANCAN控制器时的节点模型控制器时的节点模型CPU单片机NXPSJA1000 CAN收发器RXDTXDCAN总线CANCAN收发器芯片收发器芯片l通用CAN收发器 PCA82C250/251l高速CAN收发器 TJA1040/1050l高速CAN收发器 TJA1041l容错CAN收发器 TJA1054l单线CAN收发器 AU5790.CAN收发器模块收发器模块型号型号说明说明收发器收发器封装封装CTM8250/CTM8250T通用隔离通用隔离CAN收发器收发器PCA82C250PDIP-8CTM8251/CTM8251T通用隔离通用隔离CAN
3、收发器收发器PCA82C251PDIP-8CTM1050/CTM1050T高速隔离高速隔离CAN收发器收发器TJA1050PDIP-8CTM1040/CTM1040T高速隔离高速隔离CAN收发器收发器TJA1040PDIP-8使用隔离收发模块电路比较使用隔离收发模块电路比较 简化电路简化电路 提高可靠性提高可靠性 降低成本降低成本 减少采购风险减少采购风险 缩短开发周期缩短开发周期SJA1000SJA1000的硬件连接的硬件连接SJA1000简介SJA1000独立CAN 控制器在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN。l 支持CAN2.0A (BasicCAN
4、模式)、CAN2.0B (PeliCAN模式);l 内置接收FIFO缓冲区( 64 字节);l 支持单/双验收滤波器;l 可编程的错误限制报警;l 错误代码捕获,仲裁丢失捕获;l 可读/写访问的错误计数器;l 支持单次发送功能;l 具有只听模式、自检测模式。SJA1000 SJA1000 的操作模式的操作模式BasicCAN模式与PCA82C00兼容,支持CAN2.0A协议(11位标识符)。PeliCAN模式支持CAN2.0B协议(29位标识符),支持标准帧和扩展帧格式报文的接收和发送,只听模式等。操作模式通过时钟分频寄存器中的CAN模式位来选择,复位默认模式为BasicCAN模式。 注意:两
5、种模式下的寄存器定义不同!SJA1000SJA1000的访问控制的访问控制对SJA1000的控制,是通过访问其内部寄存器来实现的。在PeliCAN模式下,SJA1000的内部寄存器分布于0-127的连续地址空间 ,包括控制段和信息缓冲区。对MCU来说,对SJA1000的内部寄存器的访问就是对外部数据存储器的操作。SJA1000有两种模式可以供MCU访问其内部寄存器,分别为:工作模式和复位模式。在这两种模式下可以访问的内部寄存器是不同的,具体内容请参考SJA1000数据手册。SJA1000 PeliCANSJA1000 PeliCAN模式地址分配示意图模式地址分配示意图RX缓冲区接收FIFOxx
6、+12Rx缓冲区起始地址(RBSA)3295TX缓冲区96108多用途存储器109111未用112127寄存器2931RX缓冲区(读)TX缓冲区(写)1628寄存器150CAN地址29REG_CAN_RMCRX报文计数器30REG_CAN_RBSARX缓冲区起始地址31REG_CAN_CDR时钟分频器模式寄存器REG_CAN_MOD0命令寄存器REG_CAN_CMR1状态寄存器REG_CAN_SR2中断标志寄存器REG_CAN_IR 3中断使能寄存器REG_CAN_IER4保留5总线定时器0REG_CAN_BTR06总线定时器1REG_CAN_BTR17输出控制寄存器REG_CAN_OCR8测
7、试寄存器REG_CAN_TEST9保留10仲裁丢失捕捉REG_CAN_ALC11错误捕捉REG_CAN_ECC12错误报警限制REG_CAN_EWLR13RX 错误计数器REG_CAN_RXERR14TX 错误计数器REG_CAN_TXERR15验收屏蔽3REG_CAN_AMR323 |验收屏蔽0REG_CAN_AMR020验收代码3REG_CAN_ACR319 |验收代码0REG_CAN_ACR016复位模式内部RAMSJA1000 PeliCANSJA1000 PeliCAN函数库函数库SJA1000 PeliCAN库头文件头文件 SJA1000REG.H SJA1000_PELI.H S
8、JA1000 PeliCAN库文件 SJA1000_PELI.LIB定义了PeliCAN模式寄存器库的头文件记得把我添加到工程SJA1000 PeliCANSJA1000 PeliCAN函数库定义了什么函数库定义了什么SJA1000的寄存器操作函数 位清零函数(ClrBitMaskClrBitMask) 位置 1 1 函数(SetBitMaskSetBitMask) 读SJA1000 寄存器函数(ReadSJARegReadSJAReg) 读SJA1000 寄存器区间函数(ReadSJARegBlockReadSJARegBlock) 写SJA1000 寄存器函数(WriteSJARegWri
9、teSJAReg) 写SJA1000 寄存器区间函数(WriteSJARegBlockWriteSJARegBlock)SJA1000的功能驱动函数 进入复位模式函数(SJAEntryResetMode) 退出复位模式函数(SJAQuitResetMode) 波特率设置函数(SJASetBaudrateStandard) 发送函数(SENDSJADATA) 接收函数(REVSJADATA)SJA1000 PeliCANSJA1000 PeliCAN 函数库使用注意事项函数库使用注意事项1.用户根据实际情况,设置SJA1000 的基址。 如:unsigned char xdata CAN_Bas
10、eAdr _at_ 0 x7F00; 2.调用报文发送函数( SENDSJADATA())时注意: l首先要保证在调用发送函数时,SJA1000 处于工作模式下;l其次, 用户用来存储发送数据的数组要符合帧格式;l发送数据的长度一定要加上报文头部的长度。标准帧的发送长度为DLC+3,扩展帧为DLC+5。如:SENDSJADATA(*p_msg,8);/发送一个总长度为8字节的报文。标准帧与扩展帧的判别有报文头部的帧信息字节决定(可参考CAN 2.0协议)。3.清空接收缓冲区之前,请保证已经保存了这些报文。4.REVSJADATA(unsigned char *REV_BUFFER,unsign
11、ed char len)将接收到的数据存放到用户指定的地址,并释放SJA1000接收缓冲区。使用使用SJA1000 PeliCANSJA1000 PeliCAN 函数库进行函数库进行CAN CAN 的初始化的初始化void CAN_Config_Normal(unsigned char BTR0,unsigned char BTR1,unsigned char *filter) SJA_CS_Point=&CAN_BaseAdr;/确定基址指针 SJAEntryResetMode();/进入复位模式 WriteSJAReg(REG_CAN_CDR,0 xc8);/配置时钟分频寄存器,选
12、择PeliCAN模式WriteSJAReg(REG_CAN_MOD,0 x01);/配置模式寄存器,选择双滤波、正常模式WriteSJARegBlock(16,filter,8);/配置验收代码/屏蔽寄存器 WriteSJAReg(REG_CAN_BTR0,BTR0);/配置总线定时器0 WriteSJAReg(REG_CAN_BTR1,BTR1);/配置总线定时器1 WriteSJAReg(REG_CAN_OCR,0 x1a);/配置输出管脚 SJAQuitResetMode();/退出复位模式,进入工作模式 WriteSJAReg(REG_CAN_IER,RIE_BIT);/使能SJA10
13、00接收中断 CAN报文发送程序示例报文发送程序示例#include sja1000_peli.h”#include reg51.h“unsigned char Send_iCAN_Filter8=0,0,0,0,0 xff,0 xff,0 xff,0 xff; /验收滤波码-接收所有unsigned char BTR0=0 x00;/设置波特率,500kunsigned char BTR1=0 x1c; void main() unsigned char msg_temp13=0X88,0,0,0,8,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x
14、08;/存储报文 地址 CAN_Config_Normal(BTR0,BTR1,Send_iCAN_Filter);/正常模式的初始化, 设置为1M波特率通信 while(1) Delay_ms(250);SendMsg(msg_temp,13); /使用扩展帧发送msg_temp地址的数据 帧头部帧数据验收码屏蔽码SJA1000一般问题解决办法1.硬件连接对了没有?2.检查终端电阻。电阻值与线材,通讯距离有关,一般在60-80欧。3.CANH、CANL连接是否正确?4.波特率是否匹配?如果波特率不匹配则无法进行通讯,节点的反映为:发送(或者接收)错误计数器加1。当发送错误计数器或接收错误计数
15、器的值超过“错误报警限制”寄存器的预设值时,进入“总线关闭”状态。5.检查SJA1000的工作模式。由于在BasicCAN模式下与PeliCAN模式在的寄存器定义不同。而且,BasicCAN模式不支持29位ID的扩展帧。6.读写寄存器错误。注意控制器当前的模式。某些寄存器在工作模式与复位模式的定义不同。如:SJA1000内部CAN地址16-23的寄存器在工作模式下为报文缓冲区,而在复位模式下却被定义为验收屏蔽代码寄存器。有些寄存器只在工作模式下可写,而某些寄存器却只有在复位模式下可写。如:模式寄存器(MOD)的睡眠模式位(SM)只能在工作模式下才能进行设置;而错误报警限制寄存器(EMLR)在复位模式下为可读可写,在工作模式下为只读的。7.在硬件连接都正确的情况下,报文发送不出去。在每次报文发送前,保证状态寄存器(SR)为OXOC,即“最后一次发送已被成功处理”和“发送缓冲器”为释放状态。8.对于只能接收一帧或几帧报文的情况,大概有这两种问题。中断是否设为“边缘触发”,如果为电平触发则反复进入中断,导致死机。是否及时清空接收缓冲区。如果未及时清空缓冲区则将导致接收缓冲区满而数据溢出。SJA1000接收缓冲区(RXFIFO)共有64个信息字节的空间,存储报文数量由报文长度决定。当进行一次释放缓冲区操作后,导致下一未读报文有效。如果接收缓冲区没有可以信息时,状
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 周口文泰高级中学2026年招聘教师备考题库及一套答案详解
- 2026年长铺专职消防站招聘9人备考题库及1套完整答案详解
- 2026年达州这家国企招聘备考题库完整参考答案详解
- 2026年西安长安大学工程设计研究院有限公司招聘备考题库完整答案详解
- 供应商管理制度
- 南昌职教城教育投资发展有限公司2025年第七批公开招聘工作人员备考题库带答案详解
- 上海市宋校嘉定实验学校2026学年教师招聘备考题库附答案详解
- 2026年西安惠安医院招聘备考题库及一套参考答案详解
- 企业市场调研与分析制度
- 2026年黑河市第二人民医院长期招聘临床医生及影像科技师5人备考题库完整答案详解
- 交通安全志愿者培训课件
- 化工防止静电安全培训课件
- AI药物研发中的伦理风险防控
- 2025年江苏省泰州市保安员理论考试题库及答案(完整)
- 大数据分析在供热中的应用方案
- 污泥安全管理制度范本
- 开题报告范文基于人工智能的医学像分析与诊断系统设计
- 大黄附子细辛汤课件
- 中润盛和(孝义)新能源科技 孝义市杜村乡分散式微风发电项目可行性研究报告
- 2026年中国农业银行秋季校园招聘即将开始考试笔试试题(含答案)
- 山东济南2019-2024年中考满分作文87篇
评论
0/150
提交评论