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波特率


目录
相关文章
|
6月前
|
人工智能 Java 测试技术
地址标准化通过Java sdk接入通用经纬度查询之前已经调试成功,近期一直返回超时错误
地址标准化通过Java sdk接入通用经纬度查询之前已经调试成功,近期一直返回超时错误
46 1
|
2天前
|
网络协议 测试技术 开发工具
【ZYNQ】裸机 PS + PL 双网口实现之 LWIP 库文件修改
【ZYNQ】裸机 PS + PL 双网口实现之 LWIP 库文件修改
|
1月前
|
机器学习/深度学习 文字识别 开发工具
视觉智能平台常见问题之sdk调试报401错如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
29 4
视觉智能平台常见问题之sdk调试报401错如何解决
|
10月前
|
网络协议 Java 应用服务中间件
支付宝SDK接口调试- cpolar内网穿透工具实现公网地址调试
支付宝SDK接口调试- cpolar内网穿透工具实现公网地址调试
108 0
|
10月前
|
网络协议 Java 应用服务中间件
【服务器】支付宝SDK接口调试
【服务器】支付宝SDK接口调试
457 0
|
11月前
|
开发工具 Android开发 开发者
Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查
Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查
400 0
|
算法 IDE 开发工具
5.4 芯片SDK开发:算法工程的调试和使用|学习笔记
快速学习5.4 芯片SDK开发:算法工程的调试和使用
348 1
5.4 芯片SDK开发:算法工程的调试和使用|学习笔记
|
存储 开发工具 vr&ar
ZYNQ-基于BRAM的PS和PL数据交互
ZYNQ-基于BRAM的PS和PL数据交互
650 0
ZYNQ-基于BRAM的PS和PL数据交互
|
开发工具 Perl
ZYNQ-实现PL和PS端的协调设计
ZYNQ-实现PL和PS端的协调设计
268 0
ZYNQ-实现PL和PS端的协调设计
|
资源调度 监控 JavaScript
Sentry 官方 JavaScript SDK 简介与调试指南
Sentry 官方 JavaScript SDK 简介与调试指南
412 0
Sentry 官方 JavaScript SDK 简介与调试指南

热门文章

最新文章