全功能智能车之野火鹰眼7225摄像头最后完成总结(第六篇)

本文主要是介绍全功能智能车之野火鹰眼7225摄像头最后完成总结(第六篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

野火鹰眼7225摄像头最后完成总结:
1.鹰眼摄像头设置摄像头输出数据大小是不能够实现的,就是说配置摄像头寄存器想要的大小并不能够实现摄像头数据输出自己想要的大小,这个或许是和二值化电路有关,具体不再深究
2.摄像头数据是这样的格式:
每个PLCK上升沿输出八个像素的数据,1表示该像素为黑色,0则为白色,所以用DMA来传输数据,最后要的分辨率是320X240,也就是40*8X240,每次处理一行数据,所以DMA的次数是40,也就说纯数据的数组的大小为40.
u8 Row[40];
u16 dma_size=40;
DMA_InitStructure.DMA_BufferSize = dma_size ;
3.因为每位代表一个像素的黑或者白,如果用不同的显示方法显示一行数据要用40个FOR循环,每个循环执行八个左移,最后代码算数量十分之大,这样的话STM32是肯定跟不上摄像头的,所以这里用了STM32的内存位带操作,这样就不需要左移了,直接判断就行,行中断如下:
 //外部中断3服务程序  即行同步信号HREF中断
void EXTI3_IRQHandler(void)
{            
    u16 j;
    u32 *p;
    if(EXTI_GetITStatus(EXTI_Line3)!=RESET)//是3线的中断
    {   
    MYDMA_Enable(DMA1_Channel4);            //TIM3的UPDATE对应DMA的通道3   开始一次DMA传输
        p=(u32 *)(0x22000000+(((u32)Row &0xFFFFF)<<5)+0*4);    //用位带操作 这样应该能够更加的节省时间
        for(j=0;j<320;j++)
        {
            if(*p) LCD->LCD_RAM=BLACK;
            else LCD->LCD_RAM=WHITE;
            p++;
        }
    }
    EXTI_ClearITPendingBit(EXTI_Line3);  //清除EXTI6线路挂起位                         
}
4.场中断归零LCD:
 //外部中断4服务程序  即场同步信号HREF中断
void EXTI4_IRQHandler(void)
{            
    if(EXTI_GetITStatus(EXTI_Line4)!=RESET)//是3线的中断
    {   
          LCD_Scan_Dir(U2D_L2R);        //从上到下,从左到右
            LCD_SetCursor(0x00,0x00);    //设置光标位置
            LCD_WriteRAM_Prepare();     //开始写入GRAM   
          MYDMA_Enable(DMA1_Channel4);  //为了采样第一行数据
          LED0=!LED0;
          ov_frame ++;   //统计帧率
    }
    EXTI_ClearITPendingBit(EXTI_Line4);  //清除EXTI6线路挂起位                         
}


2016-03-24:

由于有网友反映不知道硬件连接怎么连,这里将我写在书上的笔记上传上来,这里再次说明用的开发板是原子公司的战舰开发板,这里将上传图片,怎么连接请大家仔细琢磨,如有疑问,请邮箱联系,QQ邮箱:384710930@qq.com    这里感谢网友关注。


如果看不清楚,这里看这里的的压缩文件里的图片

http://download.csdn.net/detail/chengdong1314/9471920


源码地址:http://download.csdn.net/detail/chengdong1314/9256119


这篇关于全功能智能车之野火鹰眼7225摄像头最后完成总结(第六篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727575

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景