zynq 7000 sdk下裸机can(ps/pl) 调试

简介: zynq 7000 sdk下裸机can(ps/pl) 调试

1. SDK下打开system.mss文件,如下图所示,import examples导入polled相关例程。


微信图片_20230117214527.png


因为我们的设备上有两个can,一个ps端一个pl端的,原理图在can收发器侧一样。


微信图片_20230117214536.png


2. ps 端参调试

确定逻辑对ps can的clock配置值,为100M,参考《ug585-Zynq-7000-TRM.pdf》手册,计算can波特率。


微信图片_20230117214541.png


波特率=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  //100M
  XCanPs_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


微信图片_20230117214546.png


确定发送id


微信图片_20230117214550.png


2. 使用宇泰的 8251 usb can设备,按照说明书设置好can卡,波特率为100k.


sdk启动debug,上来就会发送一帧数据个给外部can设备,使用宇泰can上位机给板子发数据,板子侧添加收数据打印信息。


3. pl 侧can和ps测试过程一样,需要注意can clock是多少,去计算can波特率


目录
相关文章
|
人工智能 Java 测试技术
地址标准化通过Java sdk接入通用经纬度查询之前已经调试成功,近期一直返回超时错误
地址标准化通过Java sdk接入通用经纬度查询之前已经调试成功,近期一直返回超时错误
80 1
|
6月前
|
机器学习/深度学习 文字识别 开发工具
视觉智能平台常见问题之sdk调试报401错如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
视觉智能平台常见问题之sdk调试报401错如何解决
|
6月前
|
存储 安全 开发工具
【ZYNQ】基于 BRAM 的 PS 与 PL 数据交互
【ZYNQ】基于 BRAM 的 PS 与 PL 数据交互
484 0
|
6月前
|
网络协议 开发工具 Perl
【ZYNQ】裸机 PS + PL 双网口实现之 SDK 程序设计
【ZYNQ】裸机 PS + PL 双网口实现之 SDK 程序设计
268 0
|
6月前
|
开发工具 芯片 Perl
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
702 0
|
6月前
|
网络协议 测试技术 开发工具
【ZYNQ】裸机 PS + PL 双网口实现之 LWIP 库文件修改
【ZYNQ】裸机 PS + PL 双网口实现之 LWIP 库文件修改
613 0
|
网络协议 Java 应用服务中间件
支付宝SDK接口调试- cpolar内网穿透工具实现公网地址调试
支付宝SDK接口调试- cpolar内网穿透工具实现公网地址调试
162 0
|
6月前
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
83 1
|
6月前
|
安全 Linux 应用服务中间件
linux(三十一)系统信息命令ps查看系统进程
linux(三十一)系统信息命令ps查看系统进程
212 1
|
6月前
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
110 0