




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SJA1000 CAN驱动程序演示实验一实验目的本驱动程序展示了如何在Small RTOS中编写SJA1000 的驱动程序。通过调用CAN 程序库SJA1000_PEI.LIB 的基本函数,实现实验板上CAN 节点的初始化以及CAN 节点数据收发测试。二实验设备及器件PC 机 一台DP-51PROC 单片机综合仿真实验仪 一台CAN PARK 模块 一台CAN 连接线 一根三实验步骤1、 将CANbus PARK 插入到A6 区中,用导线连接A6 区的P1_IO2 到A2 区的P10,连接A6 区的P1_CS1 到A2 区的A15。2、 使用导线把A2 区的P16 和P17 分别于D5 区的SCL 和SDA 相连。使用导线把D5区的/RST 与VCC 相连。3、 由于本程序使用中断方式响应SJA1000 中断,故将A5 区的P1_INT 接到A2 区的INT0。4、 利用CAN 连接线将两台已经安装了CAN-Bus 模块的DP-51PROC 连接起来,以组成简单的CAN 网络实现CAN 的接收和发送。5、 本驱动程序已经将输出文件路径设置为“E:Temp”,用户可自行更改输出文件路径。将路径“E:Temp”中的CAN. hex 文件下载到两台DP-51PROC 中运行。四实验参考程序主要部分/*描述: 独立的CAN 控制器SJA1000PeliCAN 在small rtos 中的应用示例*文件名: PELIRTOS.c*应用语言: KEIL C51*应用系统: small rtos*版本 : V1.0*广州周立功单片机发展有限公司 保留所有的版权*/#define _TIME_MODULE_H#define _SERIAL_H/* 导入头文件*/#include INCLUDES.h#include Sja1000_peli.hsfr IPH=0xb7;sbit RESET_PIN=P10;/ 验收代码/屏蔽寄存器的内容(4+4)uint8 xdata Send_CAN_Filter8=0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0xff;/ 帧信息和标示码(1+4)分别对应 TX,TX1,TX2,TX3,TX4uint8 xdata Send_CAN_Info_ID3=0xc7,0x0A,0x0B;uint8 xdata Recv_CAN_Info_ID3;/ 待发送数据(8)uint8 xdataSend_CAN_Data13=0xc7,0x0A,0x0B,0x04,0x05,0x06,0x07,0x08,0x07,0x08,0x07,0x08,0x08;uint8 xdata Recv_CAN_Data14;uint8 xdata time_Counter=0;uint8 xdata BTR0,BTR1;uint16 xdata *p;uint8 xdata disp_buf8;void CAN_Send(void);void display(void);void CAN_Rcv(void);void TimeSum(void);void Delay_ms(uint8 j);void SJA1000_Config_Normal(void);void Init(void)CKCON=1; /应用6clockTMOD = (TMOD & 0XF0) | 0X01;TCON=TCON|0x04; /MCU 的INT1 下降沿触发,INT0 电平触发TH0 = (65536 - (11059200 / 12) / 100) / 256;TL0 = (65536 - (11059200 / 12) / 100) % 256;TR0 = 1;ET0 = 1;TF0 = 0;/*函数名称:void CAN_Init(void)*功能描述:复位SJA1000,并设置其工作在正常模式*/void CAN_Init(void)RESET_PIN=0; /将SJA1000 的复位线与P1.0 相连接Delay_ms(1);RESET_PIN=1; /控制P1.0 来实现SJA1000 的复位SJA_CS_Point=&CAN_SJA_BaseAdr;SJA1000_Config_Normal();WriteSJAReg(REG_CAN_IER,RIE_BIT); /使能SJA1000 接收中断EX0=1;/* 函数原型: void Delay_ms(uchar j)* 功能描述: 该函数用于不精确的延时。在12M,6CLK 下,大约延时j*1ms*/void Delay_ms(uint8 j)uint8 k,l;for(l=0;l=j;l+)for(k=0;k=250;k+);/* 函数原型: void SJA1000_Config_Normal(void)* 功能描述: 对SJA1000 的正常模式的初始化配置*/void SJA1000_Config_Normal(void)BTR0=0x00;BTR1=0x14; /设置为80k 波特率通信SJAEntryResetMode(); /进入复位模式WriteSJAReg(REG_CAN_CDR,0xc8); /配置时钟分频寄存器,选择PeliCAN 模式WriteSJAReg(REG_CAN_MOD,0x01); /配置模式寄存器,选择双滤波、正常模式WriteSJARegBlock(16,Send_CAN_Filter,8); /配置验收代码/屏蔽寄存器WriteSJAReg(REG_CAN_BTR0,BTR0); /配置总线定时器0WriteSJAReg(REG_CAN_BTR1,BTR1); /配置总线定时器1WriteSJAReg(REG_CAN_OCR,0x1a); /配置输出管脚SJAQuitResetMode(); /退出复位模式,进入工作模式/* 函数原型: void CAN_Data_Send(void)* 功能描述: SJA1000 的单次发送子函数(注意在这个函数的末尾要置位接收中断)*/void CAN_Data_Send(void)/ 发送数据WriteSJAReg(REG_CAN_IER,0x02); /使能SJA1000 发送中断位WriteSJARegBlock(16,Send_CAN_Data,13);WriteSJAReg(REG_CAN_CMR,1); /使能发送请求Delay_ms(10);WriteSJAReg(REG_CAN_IER,RIE_BIT); /使能SJA1000 接收中断/* 函数原型: void SJA1000_INT0 (void) interrupt 0* 功能描述: SJA1000 中断响应函数*/void SJA1000_INT0(void) interrupt 0OS_INT_ENTER();EX0 = 0;OSIntSendSignal(0); /无条件的令CAN 接收中断处理任务(CAN_Rcv ()处于就绪状态/由于CAN_Rcv ()的优先级最高,故中断退出后立刻执行CAN_Rcv ().OSIntExit();void main(void)uint8 i ;OSInit();Init();CAN_Init();/初始化显示缓存for(i=0;i 9)disp_buf7 = 0;五实验例程简析本驱动程序采用中断方式接收CAN 总线数据。采用中断的方式,可以提高系统的实时性。特别的在接收数据的时候,采用中断方式可以在效率和实时性上比采用非中断方式得到很大的提高。按下D5 区的按键时,左边的LED 将显示按键键值,同时程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 咨询服务方案的工作计划
- 鄂州的栈桥施工方案
- 团队活动方案策划奖品
- 息烽公司培训活动策划方案
- 咨询客服优化方案
- 药品执法培训课件
- 建筑山石开挖方案设计
- 班级搞野餐活动方案策划
- 建筑竞标方案设计费
- 税务咨询客户服务方案
- 人教版 九年级历史上册 第一、二单元 单元测试卷(2024年秋)
- 教科版五年级科学上册全册同步课时练习【含答案全册】
- JTS-204-2008水运工程爆破技术规范-PDF解密
- NBT 10643-2021 风电场用静止无功发生器技术要求与试验方法-PDF解密
- 初中英语单词表(For-Junior)2182个 带音标
- 《朝花夕拾》读书分享交流
- 无人机理论知识无人机理论基础
- 智能手机基础知识培训课件
- 内科四大穿刺术医学课件
- 共享单车策略运营模式
- 混料错料预防措施培训课件
评论
0/150
提交评论