zoukankan      html  css  js  c++  java
  • 基于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:fpgastarterdemo_debugcan_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开发板和电脑,使用串口助手就可以接收到调试信息了。

  • 相关阅读:
    诚聘Python等课程兼职讲师
    Ogre3d
    OGRE中 场景管理器,场景节点和实体
    第四天:原型模式建造者模式
    第二天:装饰模式及面向对象设计原则4则
    表达式求值:面向对象版本
    第五天:模板方法外观模式观察者模式
    第三天:代理模式工厂方法抽象工厂
    第一天:简单工厂与策略模式
    idea files count
  • 原文地址:https://www.cnblogs.com/xiaomeige/p/7209864.html
Copyright © 2011-2022 走看看