OpenEdv-开源电子网

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

关于OV7725+NRF24L01无线图像传输无法实现问题

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-3
在线时间
2 小时
发表于 2018-6-17 22:45:22 | 显示全部楼层 |阅读模式
1金钱
接下来贴一下主程序,主要是发送端图像显示错位和接收端接收不到数据 IMG_20180617_152350.jpg
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"         
#include "string.h"
#include "ov7725.h"
#include "ov7670.h"
#include "tpad.h"
#include "timer.h"
#include "exti.h"
#include "usmart.h"

#include "24l01.h"

/************************************************
ALIENTEK战舰STM32开发板实验35
摄像头OV7725和OV7670 实验
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/


#define  OV7725 1
#define  OV7670 2

//由于OV7725传感器安装方式原因,OV7725_WINDOW_WIDTH相当于LCD的高度,OV7725_WINDOW_HEIGHT相当于LCD的宽度
//注意:此宏定义只对OV7725有效
#define  OV7725_WINDOW_WIDTH                320 // <=320
#define  OV7725_WINDOW_HEIGHT                240 // <=240


const u8*LMODE_TBL[6]={"Auto","Sunny","Cloudy","Office","Home","Night"};//6种光照模式            
const u8*EFFECTS_TBL[7]={"Normal","Negative","B&W","Redish","Greenish","Bluish","Antique"};        //7种特效
extern u8 ov_sta;        //在exit.c里 面定义
extern u8 ov_frame;        //在timer.c里面定义
u8 tmp_buf[33]="abcdefghijklABCDEFGHIJKLM1234567";

u16 mycolor;
u8  mycolorH,mycolorL;

void OV7725_camera_refresh(void)
        {
        u32 i,j;
        u16 color;
  u8 t=0,sss=0;       
        if(ov_sta)//有帧中断更新
        {
                LCD_Scan_Dir(U2D_L2R);//从上到下,从左到右
                LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_WIDTH,OV7725_WINDOW_HEIGHT);//将显示区域设置到屏幕中央
                if(lcddev.id==0X1963)
                        LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_HEIGHT,OV7725_WINDOW_WIDTH);//将显示区域设置到屏幕中央
                LCD_WriteRAM_Prepare();     //开始写入GRAM       
                OV7725_RRST=0;                                //开始复位读指针
                OV7725_RCK_L;
                OV7725_RCK_H;
                OV7725_RCK_L;
                OV7725_RRST=1;                                //复位读指针结束
                OV7725_RCK_H;
                for(i=0;i<OV7725_WINDOW_HEIGHT;i++)
                {
                        for(j=0;j<OV7725_WINDOW_WIDTH;j++)
                        {
                                OV7725_RCK_L;
                                color=GPIOC->IDR&0XFF;        //读数据
                                OV7725_RCK_H;
                                color<<=8;  
                                OV7725_RCK_L;
                                color|=GPIOC->IDR&0XFF;        //读数据
                                OV7725_RCK_H;
                                LCD->LCD_RAM=color;
        //LCD_WR_DATA(color);       
        mycolor=color;
                          mycolorL=mycolor&0x00ff;
                          mycolorH=(mycolor>>8)&0x00ff;
                          {
                           tmp_buf[2*t]=mycolorH;
                           tmp_buf[2*t+1]=mycolorL;
                           sss++,t++;
                          }       
        if(sss==16)
                           {
                            while(NRF24L01_TxPacket(tmp_buf)==TX_OK);
                                  sss=0,t=0;
                           }                       
                        }
                }
                                 OV7725_CS=1;                                                          
                OV7725_RCK_L;
                OV7725_RCK_H;
                EXTI_GetITStatus(EXTI_Line8);                     //清除LINE8上的中断标志位
                ov_sta=0;                                        //清零帧中断标记
                ov_frame++;
                LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认扫描方向
        }
}
int main(void)
{         
        u8 key,mode;
        u16 t=0;                         
        u8 tmp_buf[33];       
                   u8 i=0;                    
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级

        //Stm32_Clock_Init(9);
        delay_init();                             //延时函数初始化          
        uart_init(115200);                         //串口初始化为 115200
        usmart_dev.init(72);                //初始化USMART               
        LED_Init();                                          //初始化与LED连接的硬件接口
        KEY_Init();                                        //初始化按键
        LCD_Init();                                           //初始化LCD  
        TPAD_Init(6);                                //触摸按键初始化
        POINT_COLOR=RED;                        //设置字体为红色
        OV7725_Init();
        NRF24L01_Init();    //初始化NRF24L01
        while(NRF24L01_Check())//检测不到24L01
        {
                //LCD_ShowString(30,30,"24L01 Check Failed!");
                printf("24L01 Check Failed!");
                delay_ms(500);
        }
        NRF24L01_TX_Mode();
        printf("24L01 Check OK!");


        LED_Init();                                  //初始化与LED连接的硬件接口
        LCD_Init();                                   //初始化LCD
        if(lcddev.id==0X6804)         //强制设置屏幕分辨率为320*240.以支持3.5寸大屏
        {
                lcddev.width=240;
                lcddev.height=320;
        }
        usmart_dev.init(72);        //初始化USMART               
                            
        POINT_COLOR=RED;//设置字体为红色

        while(OV7725_Init())//初始化OV7725
        {

                printf("OV7725 Error!!");

                delay_ms(200);
        }
    printf("OV7725 Init OK");
        delay_ms(1500);                              
        TIM6_Int_Init(10000,7199);        //10Khz计数频率,1秒钟中断                                                                          
        EXTI8_Init();                                //使能定时器捕获       
        OV7725_Window_Set(OV7725_WINDOW_WIDTH,OV7725_WINDOW_HEIGHT,1);        //设置窗口          
          OV7725_CS=0;                                                          
        while(1)
        {       
                OV7725_camera_refresh();        //更新显示         
                if(i!=ov_frame)                //DS0闪烁.
                {
                        i=ov_frame;
                        LED0=!LED0;
                }
        }          
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-3
在线时间
2 小时
 楼主| 发表于 2018-6-17 22:46:56 | 显示全部楼层
然后接收端最后数据显示在LCD上程序编译不通过,不知道怎么解决了,求助。
#include "stm32f10x.h"
#include "sys.h"
#include "usart.h"               
#include "delay.h"       
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"          
#include "rtc.h"
#include "wkup.h"
#include "adc.h"
#include "dma.h"
#include "24cxx.h"
//#include "flash.h"
#include "touch.h"
#include "24l01.h"
//Mini STM32开发板范例代码19
//无线通信实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
                                                                                                                                                  
//收发都做在一个函数里面,通过按键来确定进入发送模式,还是接收模式                                                                                                                                               
int main(void)
{       
//        u8 key,mode;
    u16        wqh_times=4800;
        u8 t=0;                         
        u8 tmp_buf[33];

          Stm32_Clock_Init(9);//系统时钟设置
        delay_init(72);                //延时初始化
        uart_init(72,9600); //串口1初始化
        delay_ms(200);           
        LCD_Init();                        //初始化液晶
        delay_ms(200);                   
        KEY_Init();                 //按键初始化
        LED_Init();         //LED初始化
        NRF24L01_Init();    //初始化NRF24L01
        POINT_COLOR=RED;//设置字体为红色          
        LCD_ShowString(30,50,200,16,16,"WarShip STM32");       
        LCD_ShowString(30,70,200,16,16,"NRF24L01 TEST");       
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2015/1/17");                          
        while(NRF24L01_Check())//检测不到24L01
        {
                LCD_ShowString(30,130,200,16,16,"NRF24L01 Error");
                delay_ms(500);
                LCD_Fill(30,130,239,130+16,WHITE);
                delay_ms(500);
                LED0=!LED0;//DS0闪烁
        }
//        LCD_ShowString(60,130,"24L01 Ready!");
//        LCD_ShowString(10,150,"KEY0:RX_Mode  KEY1:TX_Mode");
        LCD_Fill(10,150,240,166,WHITE);//清空上面的显示                  
        POINT_COLOR=BLUE;//设置字体为蓝色          

        {
                LCD_ShowString(30,150,200,16,16,"NRF24L01 RX_Mode");       
                LCD_ShowString(30,170,200,16,16,"Received DATA:");       
                NRF24L01_RX_Mode();                  
                while(1)
                {       
                if(wqh_times==4800)
                {
                                LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认扫描方向
                LCD_Scan_Dir(U2D_L2R);                //从上到下,从左到右
                LCD_SetCursor(0x00,0x0000);        //设置光标位置
                LCD_WriteRAM_Prepare();     //开始写入GRAM               
                wqh_times=0;       
                }
                                                                                           
                        if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
                        {
                                //tmp_buf[32]=0;//加入字符串结束符
//                                LCD_ShowString(0,190,tmp_buf);
                for(t=0;t<16;t++)
                LCD_ShowString(0,190,lcddev.width-1,32,16,tmp_buf);
                                wqh_times++;
                        }
       
                                                    
                }       
        }           
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-6-18 01:23:08 | 显示全部楼层
根据报错分析问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2021-5-21
在线时间
28 小时
发表于 2021-7-9 19:22:23 | 显示全部楼层
您好,您这个问题解决了么?
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2021-7-21
在线时间
8 小时
发表于 2021-7-31 20:26:40 | 显示全部楼层
没后续了吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 21:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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