基于NIOS II的双端口CAN通信回环测试

小梅哥编写,未经授权,严禁用于任何商业用途

说明:本稿件为初稿,如果大家在使用的过程中有什么疑问或者补充,或者需要本文中所述工程源文件,欢迎以邮件形式发送相关内容到我的邮箱xiaomeige_fpga@foxmail.com。如果需要FPGA开发套件,可以上我们的淘宝网址选购:https://xiaomeige.taobao.com

CAN通信基本概念

略(我暂时也不会多少,会的人也不用我讲,所以第一稿略去本部分)

使用FPGA实现CAN通信

硬件电路

针对小梅哥红色Starter教学板,使用Starter教学板主板和多功能通信板实现。Starter教学板上有SDRAM存储器、EPCS存储器,多功能通信板上有两个CAN收发器,收发器型号为TI的VP230。多功能通信板上CAN电路如下所示:

多功能通信板上的两路CAN共有4个信号需要与FPGA主板连接,分别为CAN0_TXD、CAN0_RXD、CAN1_TXD、CAN1_RXD,多功能通信板使用一个40针的简易牛角座,通过排线连接Starter开发板或者AC6102或AC620开发板。

CAN0_TXD、CAN0_RXD、CAN1_TXD、CAN1_RXD这些信号分别分配在简易牛角座的6、7、8、9号引脚上(顺序不对应,请读者自行核对上图端子与信号名,也可直接查看多功能通信卡背面的信号功能名称)。下图为Starter开发板和多功能通信卡的连接实物图,多功能通信卡使用40p简牛排线连接到Starter的GPIO0上。

按照上述连接方式,则CAN0和CAN1与Starter开发板上FPGA引脚的连接关系如下表所示:

CAN电路引脚分配

插件引脚编号

信号功能

对应主板接口功能引脚

与FPGA相连管脚

P3_6

CAN1 TXD

GPIO5

PIN_L8

P3_7

CAN1 RXD

GPIO6

PIN_M8

P3_8

CAN0 TXD

GPIO7

PIN_P8

P3_9

CAN0 RXD

GPIO8

PIN_M7

做回环测试时,请按照下图所示的连接方式,用杜邦线或者专用的防呆连接线(默认有配送2根)进行连接

系统框架设计

整个CAN通信系统基于NIOS II软核CPU和完全兼容SJA1000芯片的CAN通信软核IP(以下简称SJA1000兼容IP)。SJA1000兼容IP实现CAN通信底层的协议实现,NIOS II CPU实现对SJA1000兼容IP的控制以及应用层数据的收发,整个系统框图如下所示:

NIOS II CPU:实现对SJA1000兼容IP的控制以及应用层数据的收发

SJA1000兼容IP:实现CAN通信收发底层协议的处理

JTAG UART:调试数据打印,在NIOS II软件开发IDE的控制台上打印信息

UART:调试数据打印,使用Starter板上USB转串口电路,在PC端用串口调试助手接收并显示调试信息

SDRAM控制器+SDRAM存储器:实现大容量指令和数据的存储,作为NIOS II CPU的运行内存。

VP230收发器:CAN通信电气接口芯片,在多功能通信板上。

回环测试工程的使用

1、按照前面通信板和Starter板的连接示意图连接好两个板,使用自制的跳线将两个CAN口连接到一起,形成回环,给开发板供电,连接USB Blaster下载器。

2、工程名称为can_loopback_test,使用时,将提供的工程包解压到一个不含中文字符的文件目录中,双击can_loopback_test.qpf文件打开工程,注意,工程使用Quartus II 13.0版本创建,其他版本打开请自行处理差异。

3、直接点击Programmer工具,下载outputfiles文件夹下的can_loopback_test.sof

4、在tools中选择Nios II Software Build Tools for Eclipse,切换路径到当前Quartus II工程的目录,如D:\fpga\starter\demo_debug\can_loopback_test(此为小梅哥电脑上该工程的目录)

5、工作空间打开后会默认存在两个工程,这里直接选中两个工程,然后delete删除掉。

6、然后在这个Project Explorer空白处右击,选择Import选项。

7、选择导入已经存在的工程到工作空间中。

8、定位路径到当前工程所在路径,点击确定,就会自动找到已经存在的工程,然后点击Finish即可。

9、展开新导入的can_loopback_bsp工程,找到settings.bsp文件,双击打开,修改下面两个位置为你工程当前路径。

10、修改完成之后,选中can_loopback_bsp,右击选择NIOS II,然后选择Generate BSP。

11、选中can_loopback工程,按键盘组合键Ctrl + B启动对整个工程的编译,编译完成后,可以看到整个工程的程序文件大小。这是默认开启了各种驱动支持的情况,所以文件较大,如果针对性的关闭掉不必要的外设驱动,程序文件大小会大幅下降。

12、依次点击Run——>Run Configurations,打开下载配置界面。

13、选择需要运行的工程,刷新Jtag链,使得Run按钮可选后,点击Run按钮即可开始下载程序。

14、程序运行起来后会在Console窗口持续打印接收到的数据值,如果断开或者短路两个CAN接口之间的连线,则不会再显示接收到的数据内容,仅显示Tx_Done。

15、分析软件代码

该部分内容就留给客户自己去分析啦,能用上CAN接口的客户,肯定不缺这方面能力和经验

16、固化程序到开发板上掉电运行。

首先选中can_loopback_bsp工程,右击选择NIOS II,然后选择BSP Editor。在打开的界面中,先设置标准输入输出设备为uart_0。然后选择Advance选项,勾选上图中圈出来的两个位置,然后Generate,再Exit。

17、此时再次Ctrl + B全编译工程,然后使用标准的烧写流程将sof和elf烧写到开发板上就可以啦。烧写完成后重新对开发板上电,使用USB线连接Starter开发板和电脑,使用串口助手就可以接收到调试信息了。

基于NIOS II的双端口CAN通信回环测试的更多相关文章

  1. 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等

    [推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...

  2. FPGA回忆记事(一):基于Nios II的LED实验

    实验一:基于Nios II的LED实验 一.    创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...

  3. 【iCore3 双核心板_FPGA】实验二十五:NIOS II之UART串口通信实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1eRMZq18 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  4. 【iCore4 双核心板_FPGA】实验二十:NIOS II之UART串口通信实验

    实验指导书及源代码下载地址: 链接:https://pan.baidu.com/s/1g_tWYYJxh4EgiGvlfkVu1Q 提取码:dwwa 复制这段内容后打开百度网盘手机App,操作更方便哦 ...

  5. [置顶] 基于FPGA的VGA简易显存设计&NIOS ii软核接入

    项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...

  6. 转载:10G以太网光口与Aurora接口回环实验

    10G以太网光口与高速串行接口的使用越来越普遍,本文拟通过一个简单的回环实验,来说明在常见的接口调试中需要注意的事项.各种Xilinx FPGA接口学习的秘诀:Example Design.欢迎探讨. ...

  7. loopback(回环)

    Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样. 1.  TCP/IP协议栈中的loopback接口 在TCP/IP中回环设备是一个通过软件实现的虚拟网络接口,它不与任何硬件相 ...

  8. Linux回环接口(loop-back/loopback)

    回环接口(loop-back/loopback) Moakap整理 Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样. 1. TCP/IP协议栈中的loopback接口 在TCP ...

  9. Linux回环接口-----(loop-back/loopback)

    回环接口(loop-back/loopback) Moakap整理 Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样. 1. TCP/IP协议栈中的loopback接口 在TCP ...

随机推荐

  1. 推荐一篇mysql优化干货

    淘宝的技术一直比较前沿,特别是LVS的作者加入淘宝后,淘宝和阿里的开源做的有声有色,君不见淘宝出了tengine,tairs,tddl,hsf(soa框架,未开源),tfs(小文件存储系统)等等,阿里 ...

  2. Linux系统SVN安装指导配置说明

    Linux 系统 SVN 安装指导配置说明   1 安装 SVN 前检查: 检查是否安装 SVN : rpm -qa subversion 查看安装 SVN 版本信息: svnserve --vers ...

  3. 归纳一下:C#线程同步的几种方法

    转自原文 归纳一下:C#线程同步的几种方法 我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在后台处理一大堆数据,但还要使用户界面处于可操作状态:或者你的程序需要访问一些外部资源如数据库 ...

  4. Asp.net 的工作原理

     转:http://www.cnblogs.com/linjiancun/archive/2010/09/14/1825662.html 1.1.1          Asp.net 的工作原理 ...

  5. leetcode547

    public class Solution { private void dfs(int[,] M, int[] visited, int i) { ; j < M.GetLength(); j ...

  6. mybatis 学习记录1

    起因 以前刚学习java三大框架的时候持久层框架我是自学的是hibernate..感觉蛮好用的,so easy..后来大三实习公司用的是jpa(hibernate外包装一层)...再后来工作1年多用的 ...

  7. MVC项目不同域之间的UrlRouting

    一.DomainAction,方便生成不同域下的url 1.新建3个MVC项目,一个公用类库WebCore Demo.WebApplication0 绑定域名 www.demo.com demo.co ...

  8. ROS 禁止公网暴力破解SSH FTP

    最简单的彻底禁止公网访问SSH FTP端口 1 2 /ip firewall filter add chain=input protocol=tcp dst-port=21-22 src-addres ...

  9. Python迭代dict的value

    我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key. 如果我们希望迭代 dict 对象的value,应该怎么做? dict 对象有一个  ...

  10. 如何在ArcMap中监听键盘鼠标事件

    昨天有个朋友想要实现一个功能,就是在ArcMap中编辑数据的时候,能够通过快捷键自动设置预定义的属性,比如,选中若干要素,按A键,就自动填充属性,按B键,则又自动填充另外的属性字段. 单就这个功能而言 ...