开拓Ktor 2024-02-24 10:35 采纳率: 0%
浏览 31
已结题

为什么zynq CAN IP 无法进入config配置模式,XCan_SelfTest函数失效?

1开发平台为vivado2020.3,芯片是zynq7020clg400,CAN外设引脚为G17和G18,CAN-CLK时钟为FCLK1引出的16Mhz.CAN IP曾经在microblaze平台测试过,没有问题
2工作搭建完成后,在vitis上按照例程初始化,但是一起无法通过selfTest函数,状态寄存器值为全0.这个现象似乎说明CAN外设完全没有启动!

img


3 个人已经有ChatGPT4可提问,这种回答没有意义

  • 写回答

16条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-02-24 10:36
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如需一对一服务私聊我哦
    问题描述:在vivado2020.3开发平台上,使用zynq7020clg400芯片,CAN外设引脚为G17和G18,CAN-CLK时钟为FCLK1引出的16Mhz。曾经在microblaze平台测试过,没有问题。但是在vitis上按照例程初始化后,无法通过selfTest函数,状态寄存器值为全0,似乎CAN外设没有启动。 解决方案:
    1. 确认硬件连接是否正确。检查CAN外设引脚和时钟的引脚是否正确连接,确保信号线接口没有问题。
    2. 确认在Vivado中生成的IP是否正确。检查IP的配置是否正确,特别是时钟和引脚约束等参数配置是否正确。
    3. 确认在Vitis中的代码是否正确。比较代码与例程的区别,确保CAN外设的配置正确(例如波特率,工作模式等)。
    4. 使用调试工具分析。可以使用Vitis提供的调试工具分析代码,查看外设是否正常启动以及硬件是否正常工作。 案例: 假设有一个项目,需要使用CAN总线进行通信。根据硬件平台和芯片型号,使用vivado2020.3开发平台、zynq7020clg400芯片,CAN外设引脚为G17和G18,CAN-CLK时钟为FCLK1引出的16Mhz。在开发过程中发现无法通过selfTest函数,状态寄存器值为全0,CAN外设无法启动。 解决方案:
    5. 确认硬件连接是否正确。检查引脚和时钟是否正确连接。
    6. 确认在Vivado中生成的IP是否正确。检查IP的配置是否正确,包括时钟和引脚约束等参数配置是否正确。
    7. 确认在Vitis中的代码是否正确。检查代码与例程的区别,并确保CAN外设的配置正确。
    8. 使用调试工具分析。使用Vitis提供的调试工具查看外设是否正常启动,以及硬件是否正常工作。 代码示例: 这里给出一个CAN外设初始化代码的示例,供参考:
    #include "xcan.h"
    XCan Can; //定义全局CAN变量
    #define CAN_DEVICE_ID XPAR_CAN_0_DEVICE_ID
    int CanInit(void)
    {
        XCan_Config *CfgPtr = NULL;
        int Status;
        CfgPtr = XCan_LookupConfig(CAN_DEVICE_ID); //获取CAN外设配置
        if (CfgPtr == NULL)
        {
            return XST_FAILURE;
        }
        //初始化CAN外设
        Status = XCan_CfgInitialize(&Can, CfgPtr, CfgPtr->BaseAddress);
        if (Status != XST_SUCCESS)
        {
            return XST_FAILURE;
        }
        //设置CAN工作模式为Normal
        XCan_SetMode(&Can, XCAN_MODE_NORMAL);
        //设置波特率为500kbps
        XCan_SetBaudRatePrescaler(&Can, XCAN_BAUD_RATE_500K);
        //启动CAN外设
        XCan_Start(&Can);
        return XST_SUCCESS;
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月26日
  • 修改了问题 2月24日
  • 创建了问题 2月24日

悬赏问题

  • ¥15 安霸cv22 + rtl8211f 千兆,udp传输丢包
  • ¥15 关于区块链和边缘环境搭建的相关问题
  • ¥15 windows远程桌面断卡重连软件卡顿问题
  • ¥30 Unity 实现扫描效果
  • ¥15 HbuilderX检测不到安卓模拟器
  • ¥15 这个main已经在filename.obj中定义是什么错 C语言
  • ¥15 关于#linux#的问题:exsi8.0系统 怎么更改web访问端口,不用80、443
  • ¥15 使用elementor设计样式
  • ¥15 谁能提供一个中文版的推销咨询网站连接?
  • ¥15 springboot项目程序启动报错