基于NIOS II的双端口CAN通信回环测试
基于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通信回环测试的更多相关文章
- 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等
[推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...
- FPGA回忆记事(一):基于Nios II的LED实验
实验一:基于Nios II的LED实验 一. 创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...
- 【iCore3 双核心板_FPGA】实验二十五:NIOS II之UART串口通信实验
实验指导书及代码包下载: http://pan.baidu.com/s/1eRMZq18 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore4 双核心板_FPGA】实验二十:NIOS II之UART串口通信实验
实验指导书及源代码下载地址: 链接:https://pan.baidu.com/s/1g_tWYYJxh4EgiGvlfkVu1Q 提取码:dwwa 复制这段内容后打开百度网盘手机App,操作更方便哦 ...
- [置顶]
基于FPGA的VGA简易显存设计&NIOS ii软核接入
项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...
- 转载:10G以太网光口与Aurora接口回环实验
10G以太网光口与高速串行接口的使用越来越普遍,本文拟通过一个简单的回环实验,来说明在常见的接口调试中需要注意的事项.各种Xilinx FPGA接口学习的秘诀:Example Design.欢迎探讨. ...
- loopback(回环)
Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样. 1. TCP/IP协议栈中的loopback接口 在TCP/IP中回环设备是一个通过软件实现的虚拟网络接口,它不与任何硬件相 ...
- Linux回环接口(loop-back/loopback)
回环接口(loop-back/loopback) Moakap整理 Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样. 1. TCP/IP协议栈中的loopback接口 在TCP ...
- Linux回环接口-----(loop-back/loopback)
回环接口(loop-back/loopback) Moakap整理 Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样. 1. TCP/IP协议栈中的loopback接口 在TCP ...
随机推荐
- 推荐一篇mysql优化干货
淘宝的技术一直比较前沿,特别是LVS的作者加入淘宝后,淘宝和阿里的开源做的有声有色,君不见淘宝出了tengine,tairs,tddl,hsf(soa框架,未开源),tfs(小文件存储系统)等等,阿里 ...
- Linux系统SVN安装指导配置说明
Linux 系统 SVN 安装指导配置说明 1 安装 SVN 前检查: 检查是否安装 SVN : rpm -qa subversion 查看安装 SVN 版本信息: svnserve --vers ...
- 归纳一下:C#线程同步的几种方法
转自原文 归纳一下:C#线程同步的几种方法 我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在后台处理一大堆数据,但还要使用户界面处于可操作状态:或者你的程序需要访问一些外部资源如数据库 ...
- Asp.net 的工作原理
转:http://www.cnblogs.com/linjiancun/archive/2010/09/14/1825662.html 1.1.1 Asp.net 的工作原理 ...
- leetcode547
public class Solution { private void dfs(int[,] M, int[] visited, int i) { ; j < M.GetLength(); j ...
- mybatis 学习记录1
起因 以前刚学习java三大框架的时候持久层框架我是自学的是hibernate..感觉蛮好用的,so easy..后来大三实习公司用的是jpa(hibernate外包装一层)...再后来工作1年多用的 ...
- MVC项目不同域之间的UrlRouting
一.DomainAction,方便生成不同域下的url 1.新建3个MVC项目,一个公用类库WebCore Demo.WebApplication0 绑定域名 www.demo.com demo.co ...
- ROS 禁止公网暴力破解SSH FTP
最简单的彻底禁止公网访问SSH FTP端口 1 2 /ip firewall filter add chain=input protocol=tcp dst-port=21-22 src-addres ...
- Python迭代dict的value
我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key. 如果我们希望迭代 dict 对象的value,应该怎么做? dict 对象有一个 ...
- 如何在ArcMap中监听键盘鼠标事件
昨天有个朋友想要实现一个功能,就是在ArcMap中编辑数据的时候,能够通过快捷键自动设置预定义的属性,比如,选中若干要素,按A键,就自动填充属性,按B键,则又自动填充另外的属性字段. 单就这个功能而言 ...