OpenEdv-开源电子网

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

摄像头、无线通信问题求助

[复制链接]

4

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-10-24
在线时间
0 小时
发表于 2013-3-16 18:16:54 | 显示全部楼层 |阅读模式
如题,想用两块板,a板用摄像头采集某几个点的灰度值再通过nrf无线通信传给b板。b板用tft显示灰度值。
可是把两个实验移植到一起,原子哥的代码如下:
void camera_refresh(void)
{
    u32 j;
     u16 color;   
     u8 send=0,i=0,t=0,g;
     
    if(ov_sta==2)
   {   
           OV7670_CS=0;     
         OV7670_RRST=0;                //开始复位读指针
        OV7670_RCK=0;
        OV7670_RCK=1;
        OV7670_RCK=0;
        OV7670_RRST=1;                //复位读指针结束
        OV7670_RCK=1;
         
        for(j=0;j<76800;j++)
        {
            GPIOB->CRL=0X88888888;          
            OV7670_RCK=0;
            color=OV7670_DATA;        //读数据
            colorgray=color;
            OV7670_RCK=1;    
            color<<=8;                     
             OV7670_RCK=0;
            color|=OV7670_DATA;        //读数据         
            OV7670_RCK=1;

。。。。。。。。。
“if(ov_sta==2)” 始终不成立,不知是不是和无线通信实验的中断冲突了,还是其他问题
困扰好长时间了,请大神帮忙
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-3-16 18:18:36 | 显示全部楼层
你看下OV7670和nrf的引脚有没有重,重了的话,就把OV7670连接单片机的引脚根据情况更改吧、
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-10-24
在线时间
0 小时
 楼主| 发表于 2013-3-16 20:33:48 | 显示全部楼层
回复【2楼】lsj9383:
---------------------------------
嗯没有重,负责发射的板子是最小系统板,负责接收的是mini。初始化摄像头,nrf都没问题。我再看看是不是fifo的事
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-16 20:48:05 | 显示全部楼层
回复【楼主位】gyfstorm:
---------------------------------
这个是在中断里面加的,你仿真跟踪到中断里面去看下,就知道怎么回事了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-3-16 21:03:47 | 显示全部楼层
我也弄过无线摄像头传输,但是没遇到过类似情况...
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-10-24
在线时间
0 小时
 楼主| 发表于 2013-3-17 13:33:20 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,我把“if(ov_sta==2)”改为==0,可以完成发送和显示,我把灰度二值化了,速度大概一秒一次吧,一次能传8*32个点的信息。
但还是没读懂摄像头程序中ov_sta如何从0变为2的
void camera_refresh(void)
{
u32 j;
  u16 color;  
if(ov_sta==2)
{
LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右 
LCD_SetCursor(0x00,0x0000); //设置光标位置 
LCD_WriteRAM_Prepare();     //开始写入GRAM
OV7670_RRST=0; //开始复位读指针 
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1; //复位读指针结束 
OV7670_RCK=1;  
for(j=0;j<76800;j++)
{
OV7670_RCK=0;
color=GPIOC->IDR&0XFF; //读数据
OV7670_RCK=1; 
color<<=8;  
OV7670_RCK=0;
color|=GPIOC->IDR&0XFF; //读数据
OV7670_RCK=1; 
LCD->LCD_RAM=color;    
}     
EXTI->R=1<<8;      //清除LINE8上的中断标志位
ov_sta=0; //开始下一次采集          ______________________________________ov_sta=0
  ov_frame++; 
LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向     

}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-17 17:34:53 | 显示全部楼层
exti.c
u8 ov_sta;
 //外部中断5~9服务程序
void EXTI9_5_IRQHandler(void)
{  
if(EXTI->R&(1<<8))//是8线的中断
{     
if(ov_sta<2)
{
if(ov_sta==0)
{
OV7670_WRST=0;   //复位写指针     
OV7670_WRST=1;
OV7670_WREN=1; //允许写入FIFO
}else OV7670_WREN=0; //禁止写入FIFO   
ov_sta++;
}
}
EXTI->R=1<<8;     //清除LINE8上的中断标志位   

//外部中断8初始化
void EXTI8_Init(void)
{   
Ex_NVIC_Config(GPIO_A,8,RTIR);   //任意边沿触发   
MY_NVIC_Init(0,0,EXTI9_5_IRQChannel,2); //抢占0,子优先级0,组2    
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 20:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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