110 likes | 255 Views
CAN 总线接口通讯实验. 实验目的. 1.掌握 UP-NetARM2410-S 上的 CAN 总线通讯原理。 2.学习编程实现 MCP2510 的 CAN 总线通讯。 3.掌握查询模式的 CAN 总线通讯程序的设计方法。. 预备知识. 1 、用 ARM ADS1.2 集成开发环境,编写和调试程序的基本过程。 2 、 ARM 应用程序的框架结构。 3 、会使用 Source Insight 3 编辑 C 语言源程序。 4 、理解 CAN 总线的工作原理。. CAN 总线控制器 MCP2510. ◆ 支持标准格式和扩展格式的 CAN 数据帧结构
E N D
实验目的 • 1.掌握UP-NetARM2410-S 上的CAN 总线通讯原理。 • 2.学习编程实现MCP2510 的CAN 总线通讯。 • 3.掌握查询模式的CAN 总线通讯程序的设计方法。
预备知识 • 1、用ARM ADS1.2 集成开发环境,编写和调试程序的基本过程。 • 2、ARM 应用程序的框架结构。 • 3、会使用Source Insight 3 编辑C 语言源程序。 • 4、理解CAN 总线的工作原理。
CAN 总线控制器MCP2510 • ◆ 支持标准格式和扩展格式的CAN 数据帧结构 • ◆ 0-8 字节的有效数据长度,支持远程帧 • ◆ 最大1Mbps 的可编程波特率 • ◆ 两个支持过滤器(Fliter、Mask)的接收缓冲 区,三个发送缓冲区 • ◆ 支持回环(Loop Back)模式 • ◆ SPI 高速串行总线,最大5MHz(4.5V 供电) • ◆ 3V 到5.5V 供电
MCP2510 • 通过定义如下宏实现MCP2510 的片选: • #define MCP2510_Enable() GPHDAT=GPHDAT&0x7fe • #define MCP2510_Disable() GPHDAT=GPHDAT|0x01 • 上述的两个宏定义就是对GPH0 端口的置1 和清0 操作。
通讯函数 • S3C2410X 带有高速SPI 接口,可以直接和MCP2510 通讯。通过如下两个函数: • SPISend ()//向同步串口发送数据(spi.c) • SPIRecv ()//从同步串口读取数据(spi.c)
MCP2510 的初始化 • MCP2510 的初始化如下步骤: • 1、软件复位,进入配置模式 • 2、设置CAN 总线波特率 • 3、关闭中断 • 4、设置ID 过滤器 • 5、切换MCP2510 到正常状态(Normal) • 6、清空接受和发送缓冲区 • 7、开启接收缓冲区,开启中断(可选)
MCP2510 发送和接收数据 • MCP2510 中有3 个发送缓冲区,可以循环使用。也可以只使用一个发送缓冲区,但是, • 必须保证在发送的时候,前一次的数据已经发送结束。 • MCP2510 中有2 个接收缓冲区,可以循环使用。 • 数据的发送和接收均可使用查询或者中断模式,这里,为编程简单,收发数据都采用查 • 询模式。通过状态读取命令(Read Status Instruction)来判断是否接收到(或者发送出)数据。
实验步骤 • 1.新建工程,将“Exp7 CAN 总线通讯实验”中的文件添加到工程。 • 2.编写MCP2510 驱动函数(MCP2510.c),包括:CAN 初始化(init_MCP2510)、发送数据(canWrite)、接收数据(canRead)、查询数据(canPoll)。 • 3.在主函数中实现将从串口0 接收到的数据发送到CAN 总线,将从CAN 接收到的数据,发送到串口0(Main.c)