zynq 7000 sdk下裸机can(ps/pl) 调试
1. SDK下打开system.mss文件,如下图所示,import examples导入polled相关例程。
因为我们的设备上有两个can,一个ps端一个pl端的,原理图在can收发器侧一样。
2. ps 端参调试
确定逻辑对ps can的clock配置值,为100M,参考《ug585-Zynq-7000-TRM.pdf》手册,计算can波特率。
波特率=100M/ ((49 +1)*(3 +15 +2)) = 100k
int CanPsPolledExample(u16 DeviceId)
{int Status;XCanPs *CanInstPtr = &Can;XCanPs_Config *ConfigPtr;/** Initialize the Can device.*/ConfigPtr = XCanPs_LookupConfig(DeviceId);if (CanInstPtr == NULL) {return XST_FAILURE;}Status = XCanPs_CfgInitialize(CanInstPtr,ConfigPtr,ConfigPtr->BaseAddr);if (Status != XST_SUCCESS) {return XST_FAILURE;}/** Run self-test on the device, which verifies basic sanity of the* device and the driver.*/Status = XCanPs_SelfTest(CanInstPtr);if (Status != XST_SUCCESS) {return XST_FAILURE;}xil_printf("SelfTest successfuly \r\n\r\n");/** Enter Configuration Mode so we can setup Baud Rate Prescaler* Register (BRPR) and Bit Timing Register (BTR).*/XCanPs_EnterMode(CanInstPtr, XCANPS_MODE_CONFIG);while(XCanPs_GetMode(CanInstPtr) != XCANPS_MODE_CONFIG);/** Setup Baud Rate Prescaler Register (BRPR) and* Bit Timing Register (BTR). ps_can_clock = 100M .*/XCanPs_SetBaudRatePrescaler(CanInstPtr, /*TEST_BRPR_BAUD_PRESCALAR*/ 49);XCanPs_SetBitTiming(CanInstPtr, TEST_BTR_SYNCJUMPWIDTH,TEST_BTR_SECOND_TIMESEGMENT,TEST_BTR_FIRST_TIMESEGMENT);/** Enter Loop Back Mode.*/
#define ps_can_clock 100000000 //100MXCanPs_EnterMode(CanInstPtr, XCANPS_MODE_SLEEP);while(XCanPs_GetMode(CanInstPtr) != XCANPS_MODE_SLEEP);xil_printf("ps can bitRate: %lu bps\r\n", ps_can_clock/((49+1)* (3+15+2)));/** Send a frame, receive the frame via the loop back and verify its* contents.*/Status = SendFrame(CanInstPtr);if (Status != XST_SUCCESS) {return Status;}xil_printf("recving ....... \r\n");while(1){Status = RecvFrame(CanInstPtr);}return Status;
}
can消息格式:有效负载为DWR, DW2R
确定发送id
2. 使用宇泰的 8251 usb can设备,按照说明书设置好can卡,波特率为100k.
sdk启动debug,上来就会发送一帧数据个给外部can设备,使用宇泰can上位机给板子发数据,板子侧添加收数据打印信息。
3. pl 侧can和ps测试过程一样,需要注意can clock是多少,去计算can波特率
zynq 7000 sdk下裸机can(ps/pl) 调试相关推荐
- zynq 7000 SDK下的流水灯实验
zynq 7000 的流水灯实验是最简单的纯PL 的实验, helloworld 是SDK下的最简单实验,但不包括任何PL. 本文是这2者综合下的最简单实验, PS 和 PL 都有的情况下最简单实验. ...
- ZYNQ 应用笔记(2)PS/PL接口
相比传统的SOC 芯片,Xilinx 公司ZYNQ 的最大优势在于,除了内嵌的硬核ARM 处理器自带的IO接口之外,能够利用FPGA 自由地构建符合应用需求的IO外设和基于verilog/HDL的算法 ...
- zynq 7000 AMP模式 双裸核CPU同时运行
本实验通过学习 https://blog.csdn.net/long_fly/article/details/79335025 而来. 从软件的角度来看,多核处理器的运行模式有三种: AMP(非对称多 ...
- Zynq 7000 PL和PS通信——使用BRAM
Zynq 7000 PL和PS通信--使用BRAM 介绍 1 准备工作 2 PL搭建BRAM 3 下载PL程序 4 编写Linux应用程序 5 问题 5.1 BRAM的寻址的问题 5.2 PS地址映射 ...
- ZYNQ 7000 PS和PL 信号、接口、管脚分布
1.ZYNQ 7000 PS端和PL端都有自己独立的电源引脚(Power Pin) 2.PS端接口和信号: PS_CLK(System reference clock) POR_RST_N(Power ...
- ZYNQ 或ZYNQ Ultrascale PS/PL交互
1.在PYNQ框架下,PS/PL 交互可以用MMIO这个PYNQ类.如该处的例子https://blog.csdn.net/qq_35290955/article/details/107671930 ...
- ZedBoard--(5)嵌入式Linux下的DMA测试(Direct Register Mode)(PS + PL)
ZedBorad–(5)嵌入式Linux下的DMA测试(PS+PL) 本文将详细介绍如何在ZedBorad上使用AXI接口的DMA IP核.(文末会给出测试代码的下载链接) DDR控制器.AXI DM ...
- ZYNQ PS PL 数据交互 Bram
文章目录 前言 一.ZYNQ数据交互方式 二.Create Block Design 1.创建硬件工程 2.封装的ip代码 3.使用vitis写ps端程序 输出效果 前言 关于zynq PS PL 数 ...
- Zedboard学习(四):PS+PL搭建SoC最小系统
zynq最核心的设计理念就是软件加硬件,即PS+PL.通过软硬件协同设计,结合了FPGA与双arm9内核,对于嵌入式拥有极大的优势. SoC:System on Chip的缩写,称为芯片级系统,也有称 ...
最新文章
- 读书笔记:做人不要太老实读后感
- asp.net mvc中用 log4net记录日志到数据库中
- 【译】A Practical Introduction to Blockchain with Python
- 安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客...
- [html] 说说你对HTML5中“一次编写,全体使用”的理解
- 马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别
- 队列入队和出队程序演示
- 国内外主流BI工具介绍和点评
- curl和libcurl的区别简介
- 《STM32从零开始学习历程》——SPI读取FLASH ID
- 计算机组成原理笔记(一):概述
- 大一python题库及答案_Python经典题库及答案-python经典编程题
- VS关闭CodeLens 功能
- 利用perl一键生成符合LEFse差异分析的Table表
- 秒表计时器怎么读_秒表应该怎么读?
- 奇安信技术支持实习生面试
- SQLserver获取所有表及结构SQL语句
- Ps笔刷:水墨画笔效果
- c语言结构类型ppt,C语言 第10章 结构类型与其他构造类型.ppt
- Android实战之小说阅读器,带有水平翻页,记录上次读取页码数