基于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 ...
随机推荐
- 一、linux搭建jenkins+github详细步骤
事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...
- 完美解决 开机无法启动 提示0xc000000e
注:昨天装系统碰到这个问题,这个方法说的较详细,我的是WIN7系统,开机提示引导文件错误,代码为0xc000000e 无法进入系统,使用PE进入后,在运行里输入CMD,然后按下文红字开始操作 完美解决 ...
- 使用JAVA爬取去哪儿网入住信息
昨天帮一个商科同学爬取去哪儿网站的所有广州如家快捷酒店的所有入住信息. 就是上面的商务出行 xxx年入住这些东西 然而去哪儿的前端很强,在获取所有如家快捷酒店的时候就遇到了问题. 他显示的酒店列表是j ...
- Spring Test 整合 JUnit 4 使用总结
转自:https://blog.csdn.net/hgffhh/article/details/83712924 这两天做Web开发,发现通过spring进行对象管理之后,做测试变得复杂了.因为所有的 ...
- IOS 阻止 锁屏
[UIApplication sharedApplication].idleTimerDisabled=YES;不自动锁屏 idleTimerDisabled
- 全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)
POI 与 Microsoft Office 1. POI 简介 POI 是 Apache 下的 Jakata 项目的一个子项目,主要用于提供 java 操作 Microsoft Office 办公套 ...
- 3DMAX 处理反面
问题起源:从3DMAX导出一个模型为FBX后,在U3D中看到模型很奇怪的透视了,能看到背面看不到正面,这不法线问题,而是面反了. 即然是面反了,为什么在MAX中看起来是正确的呢? 应该是开启了双面模式 ...
- Dreamweaver安装与破解
1.下载Dreamweaver cs6破解版解压包 打开下载网址http://pan.baidu.com/s/1jGr8pbK,点击下载,保存到自己想要保存的位置. 2.下载Dreamweaver c ...
- preview放大镜
[preview放大镜] preview有放大镜功能,放`键即可(键盘左上角,1左边的键).
- U3D OnDrawGizmos
private void OnDrawGizmos() { Debug.Log("OnDrawGizmos"); Gizmos.DrawWireSphere(this.transf ...