注册 登录
查看: 502|回复: 13

摄像头调试问题

[复制链接]
发表于 2014-11-3 23:07:56 | 显示全部楼层 |阅读模式
配置完成后串口已打开,但是总显示“接收不到串口数据”,已确认是连接的问题,但是不知道问题在哪?我们因为电脑设置原因将出口改成了PORT4,只改了这一个地方,是不是还要改其他地方才行啊??
回复

使用道具 举报

发表于 2014-11-3 23:09:24 | 显示全部楼层
你确定是PORT4? 用串口调试助手,看看有没有接收到数据先吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 23:17:24 | 显示全部楼层
7swkr4795z 发表于 2014-11-3 23:09
你确定是PORT4? 用串口调试助手,看看有没有接收到数据先吧。

用过串口调试助手,接受不到数据
回复 支持 反对

使用道具 举报

发表于 2014-11-3 23:22:54 | 显示全部楼层
可靠的试水 发表于 2014-11-3 23:17
用过串口调试助手,接受不到数据

根据这里的内容,看看哪里出问题。

山外K60 串口输出问题,printf输出问题 - 智能车资料区 - 山外论坛 http://www.vcan123.com/forum.php ... p;tid=22&ctid=1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 23:34:34 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-3 23:22
根据这里的内容,看看哪里出问题。

山外K60 串口输出问题,printf输出问题 - 智能车资料区 - 山外论坛 ...

我在哪里调成了PORT4,也用的是ptc14和ptc15,还是显示接受不到数据
回复 支持 反对

使用道具 举报

发表于 2014-11-3 23:35:29 | 显示全部楼层
可靠的试水 发表于 2014-11-3 23:34
我在哪里调成了PORT4,也用的是ptc14和ptc15,还是显示接受不到数据

哥们,是UART4 吧!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 23:39:38 | 显示全部楼层
东阳霁 发表于 2014-11-3 23:35
哥们,是UART4 吧!!

说错了。。
回复 支持 反对

使用道具 举报

发表于 2014-11-3 23:40:54 | 显示全部楼层

你把你修改的内容,发来看看,看看有没有配置错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 23:43:36 | 显示全部楼层
东阳霁 发表于 2014-11-3 23:40
你把你修改的内容,发来看看,看看有没有配置错。

图片在附件中

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-3 23:45:32 | 显示全部楼层

串口是交叉接线的,有没有接对?

把main函数也发来看看。直接发文字就好,论坛发帖时,工具栏有个 <> 工具,就是发代码用的。
回复 支持 反对

使用道具 举报

发表于 2014-11-3 23:46:23 | 显示全部楼层

延时不要用 DWT 了,原因可参考如下帖子:
程序总停在while(DWT_CYCCNT < et); - 智能车讨论区 - 山外论坛 http://vcan123.com/forum.php?mod ... tid=2407&ctid=1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-3 23:48:00 | 显示全部楼层
万分感谢

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-4 00:02:01 | 显示全部楼层
  1. oid  main(void)
  2. {
  3.     //初始化摄像头
  4.     camera_init(imgbuff);

  5.     //配置中断复位函数
  6.     set_vector_handler(PORTA_VECTORn ,PORTA_IRQHandler);    //设置LPTMR的中断复位函数为 PORTA_IRQHandler
  7.     set_vector_handler(DMA0_VECTORn ,DMA0_IRQHandler);      //设置LPTMR的中断复位函数为 PORTA_IRQHandler

  8.     while(1)
  9.     {
  10.         //获取图像
  11.         camera_get_img();                                   //摄像头获取图像

  12.         //解压图像
  13.         img_extract(img, imgbuff,CAMERA_SIZE);

  14.         //发送图像到上位机
  15.         sendimg(img, CAMERA_W * CAMERA_H);                  //发送到上位机
  16.     }
  17. }

  18. /*!
  19. *  @brief      发送图像到eSmartCameraCar上位机显示
  20. *  @param      imgaddr         图像地址
  21. *  @param      imgsize         图像占用空间大小
  22. *  @since      v5.0
  23. *  @note       不同的上位机,不同的命令,这里使用 eSmartCameraCar软件,
  24.                 如果使用其他上位机,则需要修改代码。
  25. *  Sample usage:   sendimg(imgbuff, CAMERA_W * CAMERA_H);                    //发送到上位机
  26. */
  27. void sendimg(uint8 *imgaddr, uint32 imgsize)
  28. {
  29.     uint8 cmd[4] = {0, 255, 1, 0 };    //yy_摄像头串口调试 使用的命令

  30.     uart_putbuff(VCAN_PORT, cmd, sizeof(cmd));    //先发送命令

  31.     uart_putbuff(VCAN_PORT, imgaddr, imgsize); //再发送图像
  32. }

  33. /*!
  34. *  @brief      二值化图像解压(空间 换 时间 解压)
  35. *  @param      dst             图像解压目的地址
  36. *  @param      src             图像解压源地址
  37. *  @param      srclen          二值化图像的占用空间大小
  38. *  @since      v5.0            img_extract(img, imgbuff,CAMERA_SIZE);
  39. *  Sample usage:   sendimg(imgbuff, CAMERA_W * CAMERA_H);                    //发送到上位机
  40. */
  41. void img_extract(uint8 *dst, uint8 *src, uint32 srclen)
  42. {
  43.     uint8 colour[2] = {255, 0}; //0 和 1 分别对应的颜色
  44.     //注:山外的摄像头 0 表示 白色,1表示 黑色
  45.     uint8 tmpsrc;
  46.     while(srclen --)
  47.     {
  48.         tmpsrc = *src++;
  49.         *dst++ = colour[ (tmpsrc >> 7 ) & 0x01 ];
  50.         *dst++ = colour[ (tmpsrc >> 6 ) & 0x01 ];
  51.         *dst++ = colour[ (tmpsrc >> 5 ) & 0x01 ];
  52.         *dst++ = colour[ (tmpsrc >> 4 ) & 0x01 ];
  53.         *dst++ = colour[ (tmpsrc >> 3 ) & 0x01 ];
  54.         *dst++ = colour[ (tmpsrc >> 2 ) & 0x01 ];
  55.         *dst++ = colour[ (tmpsrc >> 1 ) & 0x01 ];
  56.         *dst++ = colour[ (tmpsrc >> 0 ) & 0x01 ];
  57.     }
  58. }

  59. /*!
  60. *  @brief      PORTA中断服务函数
  61. *  @since      v5.0
  62. */
  63. void PORTA_IRQHandler()
  64. {
  65.     uint8  n = 0;    //引脚号
  66.     uint32 flag = PORTA_ISFR;
  67.     PORTA_ISFR  = ~0;                                   //清中断标志位

  68.     n = 29;                                             //场中断
  69.     if(flag & (1 << n))                                 //PTA29触发中断
  70.     {
  71.         camera_vsync();
  72.     }
  73. #if 0             //鹰眼直接全速采集,不需要行中断
  74.     n = 28;
  75.     if(flag & (1 << n))                                 //PTA28触发中断
  76.     {
  77.         camera_href();
  78.     }
  79. #endif
  80. }

  81. /*!
  82. *  @brief      DMA0中断服务函数
  83. *  @since      v5.0
  84. */
  85. void DMA0_IRQHandler()
  86. {
  87.     camera_dma();
  88. }
回复 支持 反对

使用道具 举报

发表于 2014-11-4 00:22:18 | 显示全部楼层

你用示波器检查一下 PTC15 数据对不对。感觉代码没什么问题,可能是硬件方面的问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部