OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8043|回复: 12

STM32F429网络摄像头ov2640数据出错

[复制链接]

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
发表于 2023-2-11 13:57:01 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 biochemistry 于 2023-2-11 13:59 编辑

在同样芯片为f429的一个单片机上,我只对网络摄像头的基础例程进行了引脚修改使其与本单片机引脚一致,其余代码不变,运行后使用网络摄像头软件进行显示,无法显示结果,用抓包软件发现单片机通过tcp协议传输的视频数据全0,如下:
摄像头初始化没有问题:

DCMI的引脚配置也检查过肯定没有问题,如下:

想请问问题可能出错在哪,是否是单片机本身的问题

最佳答案

查看完整内容[请看2#楼]

我调试发现netcamfifobuf整个变量的地址全是同一地址,应该是分配内存的时候出错了,但是代码也没有报错内存分配出错,请问原子哥这是什么情况呢,如果netcamfifobuf不在外部SDRAM分配内存,还可以在哪呢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
 楼主| 发表于 2023-2-11 13:57:02 | 显示全部楼层
正点原子 发表于 2023-2-14 23:55
说明你网络通信都没调通...

我调试发现netcamfifobuf整个变量的地址全是同一地址,应该是分配内存的时候出错了,但是代码也没有报错内存分配出错,请问原子哥这是什么情况呢,如果netcamfifobuf不在外部SDRAM分配内存,还可以在哪呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2023-2-12 10:48:57 | 显示全部楼层
先传输个固定数组正常么?
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
 楼主| 发表于 2023-2-12 21:14:08 | 显示全部楼层
正点原子 发表于 2023-2-12 10:48
先传输个固定数组正常么?

应该不是传输的问题,用于获取摄像头的数据的数组tbuf数据也全为0,但是摄像头获取的数据是正常的,说明netcam_fifo_write()这个函数写的数据是没问题的,但到了netcam_fifo_read()函数读出来的就全是0了。这个网络摄像头的源码在阿波罗f429上可以正常运行,但到了自己的单片机只改了摄像头模块的各引脚后就出现了如上数据为0的错误,原子哥有什么思路吗。
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
 楼主| 发表于 2023-2-13 21:03:20 | 显示全部楼层
正点原子 发表于 2023-2-12 10:48
先传输个固定数组正常么?

我发现问题就出在netcam_fifo_write()函数,而且特别奇怪。
for(i=0;i<NETCAM_LINE_SIZE;i++)        netcamfifobuf[netcamfifowrpos] = buf;
用此代码写数据时运行完后u32类型的netcamfifobuf数组的值不会改变全为0(buf数组不为0),我将netcamfifowrpos变量从vu16的类型改为u16的类型后更奇怪的事情发生了,在for循环内我加入printf输出的结果显示数据写进了netcamfifobuf数组,但是当整个写数据的for循环运行完后netcamfifowrpos数组的结果又神奇的全变为0了,并且摄像头也没有复位,我想问下原子哥这是什么原因,从来没遇见过这种情况
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2023-2-14 00:54:42 | 显示全部楼层
biochemistry 发表于 2023-2-12 21:14
应该不是传输的问题,用于获取摄像头的数据的数组tbuf数据也全为0,但是摄像头获取的数据是正常的,说明n ...

你先不管摄像头数据,先传输一个简单的数组过去, 能成功再说。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
 楼主| 发表于 2023-2-14 17:57:37 | 显示全部楼层
本帖最后由 biochemistry 于 2023-2-14 18:14 编辑
正点原子 发表于 2023-2-14 00:54
你先不管摄像头数据,先传输一个简单的数组过去, 能成功再说。

确实传输一个简单的数组都无法传输,那网络传输又怎样影响摄像头的数据处理呢,且我在单片机单独运行网络通信的例程是可以的,那请问原子哥问题出现原因可能是什么呢,是函数netconn_write的问题吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2023-2-14 23:55:51 | 显示全部楼层
biochemistry 发表于 2023-2-14 17:57
确实传输一个简单的数组都无法传输,那网络传输又怎样影响摄像头的数据处理呢,且我在单片机单独运行网络 ...

说明你网络通信都没调通...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
 楼主| 发表于 2023-2-15 11:05:59 | 显示全部楼层
正点原子 发表于 2023-2-14 23:55
说明你网络通信都没调通...

但是我的网络通信应该是调通了的,也ping得通,我想问问原子哥这个网络通信为什么能够影响摄像头的数据处理的那部分的程序呢
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
 楼主| 发表于 2023-2-15 17:24:38 | 显示全部楼层
正点原子 发表于 2023-2-14 23:55
说明你网络通信都没调通...

我用串口输出摄像头的数据,发现这行代码:
for(i=0;i<NETCAM_LINE_SIZE;i++)netcamfifobuf[netcamfifowrpos]=buf;
始终无法将buf的数据拷贝到netcamfifobuf上,甚至我对netcamfifobuf变量进行直接修改值并输出:netcamfifobuf[netcamfifowrpos][1] = 0x02;
          printf("%x\r\n",netcamfifobuf[netcamfifowrpos][1]);
          printf("%x\r\n",netcamfifobuf[netcamfifowrpos][1]);
发现串口第一次输出的结果为2,第二次就自己变为了0,中间也没有其他代码,我很疑惑为什么会出现这种奇怪的结果
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2023-2-16 00:54:50 | 显示全部楼层
biochemistry 发表于 2023-2-15 17:43
我调试发现netcamfifobuf整个变量的地址全是同一地址,应该是分配内存的时候出错了,但是代码也没有报错 ...

建议用内部SRAM, 不要用SDRAM直接传递进去
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2022-5-7
在线时间
17 小时
 楼主| 发表于 2023-2-16 13:56:48 | 显示全部楼层
正点原子 发表于 2023-2-16 00:54
建议用内部SRAM, 不要用SDRAM直接传递进去

内部sram只有16K,netcamfifobuf分配内存需要8M,这需求差的有点多吧
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2023-2-18 01:02:29 | 显示全部楼层
biochemistry 发表于 2023-2-16 13:56
内部sram只有16K,netcamfifobuf分配内存需要8M,这需求差的有点多吧

你这不对吧, 429内部ram有256KB吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 20:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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