前言
上篇文章解决了ZYNQ搭建PS和PL系统的问题,相当于完成最小系统板搭建。因此,本篇文章主要用于记录搭建CAN外设系统会出现的问题。由于ZYNQ系统包含PS和PL两个部分,PS部分往往问题较少,所以考虑先搭建PS系统的CAN外设系统。熟悉了基本流程和软件库函数使用后,再搭建PL的CAN外设应用。初期目标是能够用逻辑分析仪收发CAN帧。
PS-CAN外设系统
为了更好定位系统可能发生的问题,直接在GPIO工程上添加CAN外设模块。由于小梅哥例程中没有CAN总线,可以参考I2C内容。
添加CAN外设后,成功Update硬件。在编译应用canps-polled-example 例程后,也没有出现任何错误。为了判断CAN程度是否成功发出CAN帧,我着实有些纠结。第一,我考虑用LED来指示程序运行情况,但是需要单独把之间写的GPIO程度添加进例程中。第二,考虑添加串口,可以直接打印每个部分的内容,定位程度更加方便。但是这需要在系统中添加uart外设,明确如何打印,增加系统不确定性。第三,使用逻辑分析仪监测TTL电平信号,这种方式可行,但是需要我了解逻辑分析仪的CAN使用。由于没有带上CANBUS,因此需要单独用野火开发板发送CAN帧。
首先,LED指示的效率太低,尤其后期的程序规模比较大时。其次,串口打印可以高效定位程序运行的节点,而逻辑分析仪则是判断程序是否收发成功协议数据。因此,这两者是debug的两个方面,都需要重点关注。针对这种情况,首先了解zynq串口打印的方法,了解程序运行的问题;然后再学习逻辑分析仪了解如何监测数据就更加可行。由于以前使用过野火CAN程序,可以直接使用相关的例程。【在分析中,思路才慢慢清晰。纠结感显著减少。】
串口打印uart功能
考虑重新搭建一个串口和LED的系统,这样能够在不影响原系统的情况下,实现特定内容。后来,又考虑到只是在PS端修改参数,不用像PL端一样有大的调整。在Update硬件系统后,马上就出现让人懵逼的问题。
example导入错误:众所周知,vitis的example功能是一个很好的示例工具,帮助学习不同外设的驱动方法。问题在于,这次添加uart之后,让人意外得出现导入Failed!
米联客这篇文章提出了一个重要问题,即uart参数配置中的MIO口和电压等级。文中指出uart电压为1.8V,并且上端的BANK 1 IO Voltage需要设定为1.8V。此外,我发现,当选择MIO为14或者15时,无法选择1.8V;选择MIO为46、47则可行。因此说明不同MIO的电压水平是有差异的。这个发现会加强后期参数配置的重视程度。
逻辑分析仪-CAN协议分析
梦源官方在这篇文章详细说明如何用他家逻辑分析仪分析CAN信号。借助野火霸天虎开发板,测试成功。这意味着后期测试zynq的CAN总线通信功能,直接使用逻辑分析仪就可。ZYNQ板上为TTL信号,不过不用特定调整。