关于DSP28377上的CAN总线配置的学习总结

网上看了一堆文章,没有一个同时把原理和配置方法讲清楚的,于是痛下决心梳理一遍。

基于本人刚学习28335/28377Can总线配置,有错误的地方还望各位指正。

分为原理阐述、配置说明和代码分析(基于DSP上CAN的基础功能),不想看原理的可直接跳到后面看具体配置。

1 原理阐述

1.1 资源介绍

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_19,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 和485一样,采用差分信号进行通信,也就是说,单片机口出来的RX,TX需要处理转化成CAN_H和CAN_L,如下图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 CAN可以多机通信,差分信号接在一起,在两端串120的电阻http://t.csdn.cn/0iqH3

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 1.2 报文格式(帧类型)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下称 ID),扩展格式有 29 个位的 ID。

2020072820261215.png 

 这里只介绍数据帧,其他的目前还用不到

  数据帧是在 CAN 通讯中最主要、最复杂的报文,它以一个显性位(逻辑 0)开始,以 7 个连续的隐性位(逻辑 1)结束。在它们之间,分为仲裁段、控制段、数据段、CRC 段和 ACK 段,以标准数据帧为例。

20200728122933312.png

 也就是说,对于一帧报文,我们只需要关心仲裁段(帧ID和远程帧还是数据帧RTR),控制段(标准还是扩展帧IDE和数据段长度DLC(4位)),数据段(传输的数据data(64位))。除了这三个其他的不用管了,都是固定流程自动生成。以上位机说明需要设置的内容如下:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 关于扩展格式与标准格式不同处在于:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

  • 仲裁段为 29 位;
  • 多出的SRR 位(Substitute Remote Request BIT),用于替代标准格式中的 RTR 位。SRR 位为隐性位,由于 RTR 在数据帧为显性位,所以在两个 ID 相同的标准格式报文与扩展格式报文中,标准格式的优先级较高;
  • 控制段中的 r1 和 r0 一样都为保留位,默认设置为显性位;
  • 扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性。(禁止设定:基本 ID=1111111XXXX

其他格式不具体介绍了,这篇文章讲的很清除http://t.csdn.cn/0iqH3

 2 传输过程

以28377为例

2.1初始化

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 2.2 消息传输

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16 

2.3 测试模式 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16 

2.4 时钟源

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 2.5 消息对象设置

只介绍常用的发送接受的数据帧

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

 3 例程源码分析

3.1 测试模式(自发自收)

1. 创建邮箱数据数组

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_11,color_FFFFFF,t_70,g_se,x_16

创建传输对象结构体

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_8,color_FFFFFF,t_70,g_se,x_16

2. 时钟GPIO根据实际需要配置

3.初始化CAN

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_9,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_13,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

4. 选择CAN的时钟 ,这里0选择挂系统时钟

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_16,color_FFFFFF,t_70,g_se,x_16

 5.设置波特率 后面两个参数表示时钟频率波特率。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_12,color_FFFFFF,t_70,g_se,x_16

6.测试模式(选用)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_13,color_FFFFFF,t_70,g_se,x_16

根据手册查查看功能  --外部环回模式(前文有过介绍)

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_17,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_18,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 

 7.CAN使能

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_9,color_FFFFFF,t_70,g_se,x_16

8.配置发送邮箱 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

9.配置接受邮箱

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_19,color_FFFFFF,t_70,g_se,x_16

 10.接受设置

参数 :CAN 邮箱号 接受邮箱结构体 接受类型

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_16,color_FFFFFF,t_70,g_se,x_16

 初始化完成!!!!

 

11.发送数据

参数 :同接受设置  

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_16,color_FFFFFF,t_70,g_se,x_16

 12 .接受数据  最后一个参数表示是否清除接受中断

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_13,color_FFFFFF,t_70,g_se,x_16

 3.2 正常模式

屏蔽测试模式即可

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_13,color_FFFFFF,t_70,g_se,x_16

使用CAN分析程序收到报文如下

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYnvvIg15Z2X77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 

一定要注意开发版的GPIO口配置是否正确!!!

 

 

 

 

 

 

 

 

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部