野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10106|回复: 11

采用DMA方式的串口1通道导引摄像头的数据问题。

[复制链接]
发表于 2015-7-2 10:21:07 | 显示全部楼层 |阅读模式
      之前用串口直接采集摄像头数据,然后通过MATLAB处理,但是由于串口会占用CPU,在通过LCD显示的时候会出现掉帧的现象(由于要用串口打印所以刷新太慢),于是想采用DMA方式采集像素点,但是采集的像素点不正确(因为像素是RGB565格式的,其是16位,但是我用DMA不能采集16位的,所采集的是8位的),紧急求助!能否通过DMA方式采集到16位数据???
%ZC9CU}$V%{GTZ4[~FMZ]@H.png

DMA方式打印效果

DMA方式打印效果
chuandai.png
chuankou.png
回复

使用道具 举报

 楼主| 发表于 2015-7-2 10:22:44 | 显示全部楼层
题目中‘导引’打错了,是打印的意思。
回复 支持 反对

使用道具 举报

发表于 2015-7-2 18:29:15 | 显示全部楼层
SendBuff[k]=Camera_Data
这条语句改,
for(k=0;k<SENDBUF_SIZE;)
{
SendBuff[k]=(uint8_t)Camera_Data;
SendBuff[k+1]=(uint8_t)(Camera_Data>>8);
k+=2;
}
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-7-27 22:16:25 | 显示全部楼层
亽亼 发表于 2015-7-2 18:29
SendBuff[k]=Camera_Data
这条语句改,
for(k=0;k>8);

您好!您的意思我明白,但是这样打印还是乱码,不知道为什么。。。。。有什么解决方案么?

haha.jpg
ii.jpg
回复 支持 反对

使用道具 举报

发表于 2015-7-28 08:53:41 | 显示全部楼层
QQ截图20150728083331.png

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-28 12:29:33 | 显示全部楼层

  您好!如果采用十六进制显示的话,打印出的数据效果是下图显示的(黑白点),它的每一个数据不是十六位的,而是八位的,但是像素点按道理是十六位的(A36F这个数是16位的,A3是8位的,但是两个数的每一位都可能是0-F,即两者都是16进制数,但前者是16位,后者是8位),这样就出现问题了,我通过matlab处理后其结果只是一团黑白点,但是按之前串口打印(速度慢),其直接显示数据是16位的(不用点击十六进制显示),其通过MATLAB处理后,直接就是照片或者视频。换言之,就是不按照您之前说的DMA修改方案,我点击十六进制显示它也会出现8位的数字,其得到的结果依然是黑白点。也就是说,像素问题不是在点击十六进制显示与否上,而是在别处。。。(但我初学,很多不明白)。。。希望您多多指正。。

按您指导的合成的是黑白点

按您指导的合成的是黑白点

串口显示结果

串口显示结果

按您指导的方案显示的结果

按您指导的方案显示的结果

串口下matlab合成效果

串口下matlab合成效果
回复 支持 反对

使用道具 举报

发表于 2015-7-28 14:16:50 | 显示全部楼层
QQ截图20150728135138.png
这段程序有问题,逻辑不对,之前直接用printf打印是打印一个像素点的RGB值,
但插图里边的程序不是单单打印一个点的数据吧,你那个SENDBUFF_SIZE定义多大的,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-28 15:07:40 | 显示全部楼层
亽亼 发表于 2015-7-28 14:16
这段程序有问题,逻辑不对,之前直接用printf打印是打印一个像素点的RGB值,
但插图里边的程序不是单单 ...

因为数据过大速度会慢下来,所以我把SENDBUFF的值设为6,反正不要大就是。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-28 15:14:00 | 显示全部楼层
亽亼 发表于 2015-7-28 14:16
这段程序有问题,逻辑不对,之前直接用printf打印是打印一个像素点的RGB值,
但插图里边的程序不是单单 ...

    这个逻辑问题在哪里呢?之前串口打印的话,RGB格式的数值已经经过两个8位数据的拼接实现了16进制数据,我倒是觉得您截图的那段程序添加将两次存入数组的Camera_Data值 与 一下,得到十六进制的数据,这样不知如何?
$]22V%N2}VRJ{911UJ2949K.png
回复 支持 反对

使用道具 举报

发表于 2015-11-10 20:42:49 | 显示全部楼层
我想知道matlab那部分怎么实现能发个程序或者资料给我吗 我对matlab不是很了解
回复 支持 反对

使用道具 举报

发表于 2015-11-10 20:43:15 | 显示全部楼层
tylerqwe 发表于 2015-11-10 20:42
我想知道matlab那部分怎么实现能发个程序或者资料给我吗 我对matlab不是很了解

邮箱403564851@qq.com
回复 支持 反对

使用道具 举报

发表于 2019-1-17 11:31:20 | 显示全部楼层
可以分享一下资料吗,最近我也在做这个  我的邮箱1723030994@qq.com
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-3-29 15:32 , Processed in 0.035267 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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