基于CAN总线多路数据采集器.docVIP

  • 10
  • 0
  • 约2.48千字
  • 约 7页
  • 2017-08-11 发布于重庆
  • 举报
基于CAN总线多路数据采集器

题目:基于CAN总线多路数据采集器 一 、设计任务要求 (1):CPU选用89c51,控制器SJA1000,?收发器自选。 (2):能实现8路标准电压信号(0~5V)的采集。 (3):系统参数要求: 参数 最小值 额定值 最大值 位速率 250Kbps CAN控制器的振荡频率 16MHz 振荡器容差 1.0% 收发器的有效延迟 30ns 75ns 157ns 逻辑的循环延迟 15ns 40ns 总线延迟 20ns 325ns 给出总线定时器参数 (4)节点采用PeliCAN模式,标准帧格式。携带电压信号的帧的格式为: 信息功能码(2位) 节点号(4位) 电压分支编号(3位) 数据场格式(2位) 1 1 X X X X X X X 10 对于任一节点,节点号是固定的。假设节点仅能接受数据请求的远程帧。从而发送相应数据。滤波方式为单滤波。设置相应滤波器参数(写明过程)。 (5):给出硬件设计原理图电路(在PROTEL上完成发原理图即可) (6)结合硬件,给出CAN的初始化程序。给出整个采样系统的主程序流程图,及主要的子程序流程图。 硬件设计 计算位定时参数 参数 最小值 额定值 最大值 位速率 250Kbps CAN控制器的振荡频率 16MHz 振荡器容差 1.0% 收发器的有效延迟 30ns 75ns 157ns 逻辑的循环延迟 15ns 40ns 总线延迟 20ns 325ns 确定位定时参数: 第一步:确定BRP、NBT、一个时间份额的持续时间和PROP 解得 第二步 选择适当的NBT 、PROP 和BRP 组合 BRP NBT PROP 16MHz 2 16 0.25us 4.176 4 8 0.5us 2.088 8 4 1us 1.044 16 2 2us 0.522 振荡容差为1.0%时,最小NBT=6,PROP2,所以只有2、 16 和 4 、8 组合能用。2、 16 组合中时间份额太小,因此选择BRP=4,NBT=8。 第三步:确定位速率和传播延迟之间的折衷方案,选择合适的采样点位置并计算位定时参数 采用单次采样,由下表带入数据可得可知 SJW可取 3、 4;因此可得TSEG2只能取3,所以SJW=3,TSEG2=3。 因为NBT=TSEG1+TSEG2+SYNC(同步跳转宽度) 取SYNC=1,得TSEG1=8-3-1=4 综上: fclk BRP NBT PROP SJW TSEG2 TSEG1 16MHz 4 8 2.088 3 3 4 所以BTR0=43H SJW.1 SJW.0 BRP.5 BRP.4 BRP.3 BRP.2 BRP.1 BRP.0 0 1 0 0 0 0 1 1 BTR1=23H SAM TSEG2.2 TSEG2.1 TSEG2.0 TSEG1.3 TSEG1.2 TSEG1.1 TSEG1.0 0 0 1 0 0 0 1 1 确定其他寄存器 验收屏蔽寄存器相应位置“1”时,对应的报文位不须要经过验收代码寄存器验收滤波。 验收屏蔽寄存器相应位置“0”时,对应得报文位须要经验收代码寄存器验收滤波。 CDR CAN模式 CBP RXINTEN 0 CLOCKOFF CD.2 CD.1 CD.0 1 1 0 0 1 0 0 0 MOD - - - SM AFM STM LOM RM 0 0 0 0 1 0 0 0 OCR OCP1 OCTN1 OCPOL1 OCTP0 OCTN0 OCPOL0 OCMODE1 OCMODE0 0 0 0 1 1 0 1 0 TX1悬空 TX0推挽 正常输出模式 IER清零。 三、软件设计 初始化程序: #include AT89C51.H #define XBYTE ((unsigned char volatile xdata *)0) #define RM 0x01 #define MOD XBYTE[0] #define IER XBYTE[4] #define BTR0 XBYTE[6] #define BTR1 XBYTE[7] #define OCR XBYTE[8] #define ACR0 XBYTE[16] #define ACR1 XBYTE[17] #define ACR2 XBYTE[18] #define ACR3 XBYTE[19] #define AMR0 XBYTE[20] #define AMR1 XBYTE[21] #define

文档评论(0)

1亿VIP精品文档

相关文档