- IC型号
深圳斯普仑科技有限公司
- 卖家积分:
营业执照:已审核经营模式:贸易/代理/分销所在地区:广东 深圳企业网站:
http://www.splkj.com
收藏本公司 人气:1233366
联系方式
- 地址:福田区深南中路3007号国际科技大厦2501室
- 联系人:李小姐/江先生
- 电话:0755-83502530/0755-83505153
- 传真:0755-83502530
- 手机:13145916323/18823353880
- QQ:
- E-mail:2912879482@qq.com
产品分类
- RAM(随机存取存储器)(63)
- 双集型RAM(2)
- DRAM(MOS型动态存储器)(31)
- Flash Memory(闪存/快闪存储器)(80)
- Nand flash(10)
- 贴片/片式/SMD二极管(63)
- 其他二极管(3)
- 复合(达林顿)三极管(1)
- 其他三极管(2)
- 其他场效应管模块(4)
- 单向可控硅(晶闸管)(1)
- 热敏电阻(1)
- 条形(压接式)连接器(2)
- 整体式PLC(1)
供应DSPIC30F4011/12:16位数字信号控制器--
产品详细说明
3 CAN总线通信程序设计
在程序设计时, 可把一端作为发送数据端,另一端作为数据接收端。信息从CAN模块发送到CAN总线通常是由CAN模块自动完成的。发送程序只需把发送的信息帧送到CAN的发送缓冲区,然后启动发送命令即可。发送程序可采用查询方式。作为发送端, 也可对其发送缓冲寄存器进行赋值, 以作为发送的信息, 具体方法如下:
C1TX0B1 = 0x5555;
C1TX0B2 = 0x5555;
C1TX0B3 = 0x5555;
C1TX0B4 = 0x5501;
之后应将这些数据发送到CAN总线上, 并将报文发送优先级设成最高级, 以便于数据发送。
信息从CAN总线到CAN接收缓冲区也是由CAN控制器自动完成的。接收程序只需从接收缓冲区读取要接收的信息即可。接收程序同样可采用查询方式。接收缓冲器会*总线是否有进入的报文, 如发现总线上有报文, 即接收报文。接收端程序中可定义四个变量, 并把接收缓冲寄存器的值赋予变量, 通过变量值的变化来判断接收端是否从总线上接收到了报文。
两端CAN模块寄存器的配置必须匹配, 否则两者将无法进行通信。其具体配置方法如下:
C1TX0CON = 0x0003;
C1TX0SID = 0x0020;
C1TX0DLC = 0x01c0;
C1RX0CON = 0x0000;
C1RX0DLC = 0x0008;
C1RXF0SID = 0x0020;
C1RXM0SID = 0xffff;
C1CFG1 = 0x00ff;
C1CFG2 = 0x07ff;
在寄存器设置完成之后, 系统将进入正常工作模式。
4 测试结果分析
当两个单片机用双绞线连接好之后, 即可在两台计算机上同时运行程序。当程序运行一段时间后, 就可对运行结果进行分析。分析时, 可先对发送端进行分析, 图2所示是其寄存器的测试值列表。
从图2可知, 发送端的接收缓冲寄存器的值与发送缓冲寄存器的值相等, 说明发送端的CAN模块在*到总线上有报文时也接收了报文, 这正好符合CAN总线协议。
利用图3所示的测试变量值可从接收端进行分析。
由图3可知, 接收端变量的值与发送端赋予发送缓冲寄存器的值相等, 这也就是说, 接收端的接收缓冲器接收到了总线上的报文, 证明本CAN总线通信设计成功。
5 结束语
本文基于DSPIC30F4011的CAN总线特性, 通过在两个DSPIC30F4011之间进行双绞线连接, 实现了两个单片机之间的CAN总线数据通信, 该方法具有实现简单, 方便, 实时性好, 方便灵活等优点。可以为需要使用CAN总线通信的应用提供一个参考