最近在做智能车,从龙邱买了两个MT9V034摄像头使用,结果坑爹的龙邱只给了摄像头的IO采集程序,配置摄像头的程序,KV58DMA采集都没有写,这就需要自己研究了。因为坑爹的龙邱不给完整的库函数,今天只能先实现了摄像头的IIC通信了。
MT9V034使用的就是标准的IIC通信协议,我把代码贴出来
SCCB_Probe(0x5C)
可以查询摄像头是否存在,返回值为0说明摄像头存在。
MT9V034的地址为0x5C固定的。
主要是通过函数
SCB_RegRead(0x5C,0x00,&data);
调用读取寄存器0x00 :Chip Version寄存器,这个寄存器是量0x1324 4900
如果对,表明通信成功。
我这里是成功了的。
/***************************************************************
* 河南科技大学一队
*
* 函数名称:void SCCB_Star(void)
* 功能说明:SCCB读取字节函数
* 参数说明:
* 函数返回:读取字节
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
void SCCB_Star(void)
{
SCL_Out;
SDA_Out;
SCCB_Wait();
SDA_High;
SCL_High;asm (“nop”);asm (“nop”);
SCCB_Wait();
SDA_Low;
SCCB_Wait();
SCL_Low;asm (“nop”);asm (“nop”);

}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:void SCCB_Stop(void)
* 功能说明:SCCB读取字节函数
* 参数说明:
* 函数返回:读取字节
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
void SCCB_Stop(void)
{
SCL_Out;
SDA_Out;

SCCB_Wait();
SDA_Low;
SCCB_Wait();
SCL_High;asm (“nop”);asm (“nop”);
SCCB_Wait();
SDA_High;
SCCB_Wait();
}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:uint8 SCCB_SendByte(uint8 Data)
* 功能说明:SCCB读取字节函数
* 参数说明:
* 函数返回:读取字节
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
uint8 SCCB_SendByte(uint8 Data)
{
uint8 i;
uint8 Ack;
SDA_Out;
for( i=0; i<8; i++)
{
if(Data & 0x80) SDA_High;
else SDA_Low;
Data <<= 1;
SCCB_Wait();
SCL_High;asm (“nop”);asm (“nop”);
SCCB_Wait();
SCL_Low;asm (“nop”);asm (“nop”);
SCCB_Wait();
}
SDA_High;
SDA_In;
SCCB_Wait();

SCL_High;asm (“nop”);asm (“nop”);
SCCB_Wait();
Ack = SDA_Data;
SCL_Low;asm (“nop”);asm (“nop”);
SCCB_Wait();

return Ack;
}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:uint8 SCCB_ReadByte(void)
* 功能说明:SCCB读取字节函数
* 参数说明:
* 函数返回:读取字节
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
uint8 SCCB_ReadByte(void)
{
uint8 i;
uint8_t byte;
SCL_Out;
SDA_In; //使能输入

for( i=0; i<8; i++)
{
SCL_Low;asm (“nop”);asm (“nop”);
SCCB_Wait();
SCL_High;asm (“nop”);asm (“nop”);
SCCB_Wait();

byte = (byte<<1)|(SDA_Data & 1);

}

SCL_Low;
SDA_Out;

return byte;
}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:static void SCCB_Ack(void)
* 功能说明:IIC有回复信号
* 参数说明:
* 函数返回:void
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
static void SCCB_Ack(void)
{
SCL_Out;
SDA_Out;

SCL_Low;
SDA_Low;
SCCB_Wait();
SCL_High;
SCCB_Wait();
SCL_Low;
SCCB_Wait();

}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:static void SCCB_NAck(void)
* 功能说明:IIC无回复信号
* 参数说明:
* 函数返回:void
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
static void SCCB_NAck(void)
{
SCL_Out;
SDA_Out;

SCL_Low;
SCCB_Wait();
SDA_High;
SCCB_Wait();
SCL_High;
SCCB_Wait();
SCL_Low;
SCCB_Wait();

}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:uint8_t SCB_RegWrite(uint8 Device,uint8 Address,uint16 Data)
* 功能说明:向摄像头写入数据
* 参数说明:
* 函数返回:void
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
uint8_t SCB_RegWrite(uint8 Device,uint8 Address,uint16 Data)
{
uint8 i;
uint8 Ack;

SCCB_Star();
Ack = SCCB_SendByte(Device);
if( Ack )
{return Ack;
}Ack = SCCB_SendByte(Address);
if( Ack )
{return Ack;
}Ack = SCCB_SendByte((uint8)(Data>>8));
Ack = SCCB_SendByte((uint8)Data);
if( Ack )
{return Ack;
}SCCB_Stop();
return  Ack;

}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:uint8_t SCB_RegRead(uint8_t Device,uint8_t Address,uint16_t *Data)
* 功能说明:读取摄像头寄存器的数据
* 参数说明:
* 函数返回:void
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
uint8_t SCB_RegRead(uint8_t Device,uint8_t Address,uint16_t *Data)
{
uint8 i;
uint8 Ack = 0;

Device = Device<<1;
SCCB_Star();
Ack += SCCB_SendByte(Device);Ack += SCCB_SendByte(Address);SCCB_Star();
Ack += SCCB_SendByte(Device + 1);*Data = SCCB_ReadByte();
SCCB_Ack();
*Data = *Data<<8;*Data += SCCB_ReadByte();
SCCB_NAck();SCCB_Stop();return  Ack;

}
/***************************************************************
* 河南科技大学一队
*
* 函数名称:int SCCB_Probe(uint8_t chipAddr)
* 功能说明:查询地址下的器件是否存在
* 参数说明:
* 函数返回:void
* 修改时间:2018年3月4日
* 备 注:
***************************************************************/
int SCCB_Probe(uint8_t chipAddr)
{
uint8_t err;

err = 0;
chipAddr <<= 1;SCCB_Star();
err = SCCB_SendByte(chipAddr);
SCCB_Stop();return err;

}

MT9V034摄像头学习笔记(一)相关推荐

  1. MT9V034摄像头学习笔记(二)

    再次想骂坑爹的龙邱,他们的图像采集摄像头是默认的配置信息.然后靠程序延时采集图像,仅仅就是表面看起来能用而已. MT9V034摄像头内部寄存器 重点内容 内部图像配置寄存器有两套,好像是可以分页使用的 ...

  2. MT9V034摄像头学习笔记(三)

    看完摄像头的寄存器之后,就开始配置摄像头的DMA采集. 还是看网上的大神截图,摄像头的时序. 从中我们可以看出,在行信号之后开始采集PCLK的图像信息.所以我们用PCLK的上升沿触发DMA进行图像采集 ...

  3. MT9V034摄像头学习笔记(四)

    DMA采集图像之后就能实现图像的采集了,接下来就要对图像做处理.我这里写了配套的上位机上传上来,又添加前面所说的大津法动态二值化.先看一下上位机的截图 https://download.csdn.ne ...

  4. 【STM32】OV2640摄像头学习笔记 转

    [STM32]OV2640摄像头学习笔记 2019年03月03日 13:01:35 淹死的大白鲨 阅读数 4736更多 分类专栏: [STM32] 版权声明:本文为博主原创文章,遵循 CC 4.0 B ...

  5. FPGA开发——图像处理(包括MT9V034等摄像头学习笔记)

    一.开发遇到的问题 1.画面抖动问题(暂时总结这么多) 画面出现大规模抖动可能是因为代码的bug,比如pclk时钟和FPGA时钟不协调,缓存代码有问题等等: 如果代码调整了始终有问题,而且画面虽然抖动 ...

  6. STM32 F4 OV2640摄像头学习笔记(一)

    //尝试写作,记录学习过程. 一.OV2640摄像头简介 本节将主要讲解OV2640摄像头基础部分和一些引脚配置. OV2640传感器简介 OV2640是Omni Vision公司生产的一颗1/4寸的 ...

  7. 【STM32】OV2640摄像头学习笔记

    目录: 一.OV2640 Camera 二.读取OV2640模块图像数据过程: 三.DCMI(Digital camera interface)接口 四.SCCB协议 1.起始信号 2.停止信号 五. ...

  8. STM32 F4 OV2640摄像头学习笔记(三)

    四.DCMI(Digital camera interface)接口 功能描述 STM32F4 自带了一个数字摄像头(DCMI)接口,该接口是一个同步并行接口,能够接收外部8位.10位.12位或14位 ...

  9. 车载前置摄像头学习笔记 ———— 摄像头输出数据格式(JPEG)

    文章目录 介绍 类型 标准JPEG 渐进式JPEG JPEG2000 压缩类型 顺序式编码(SequentialEncoding) 递增式编码(ProgressiveEncoding) 无失真编码(L ...

最新文章

  1. 被遗忘的Logrotate
  2. spring14:注解@Autowired,实现引用类型的赋值
  3. php cms 插件开发,phpcms编辑器插件最新版——ckeditor4.5
  4. 2140: 学无止境(差分)
  5. 2020\Simulation_2\2.最多边数
  6. 动态规划(Dynamic Programming)例题步骤详解
  7. 22 SD配置-主数据-定义付款条款
  8. 压缩包加密后门_加密后门:还有更多争论吗?
  9. nor flash和nand flash
  10. V-5-4 配置Horizon View Server
  11. Eclipse中JSP生成的class文件去了哪里?
  12. 2021高考成绩查询大学城一中,“有梦就去追,做勇于逐梦的少年”——直击重庆市2021年普通高考...
  13. bat脚本中添加注释
  14. java实训致谢_Java教学实习报告(最终版).doc
  15. 操作系统之进程通信:高级通信机制四大类
  16. 搜索摄像头/录像机IP地址工具是什么
  17. 怎样提高自己的分析能力
  18. 3D建模贴图是个啥?先薅羊毛再说!(附1000张高清3D贴图素材)
  19. 下列哪个不是python的第三方库_以下选项中,不是 Python 中用于开发用户界面的第三方库是()...
  20. mcake蛋糕预订图片

热门文章

  1. 才子软件单机普及版仅售300元
  2. Ubuntu开启VNC屏幕共享
  3. Python爬虫框架Scrapy 学习笔记 2 ----- 爬取Mininova网站种子文件信息
  4. 通过OpenCV对视频进行绿幕抠图
  5. 理想倍频器/分频器对相噪/杂散的影响
  6. LIS检验管理系统源码 医院管理系统源码
  7. 单片机电路设计中的10个难点
  8. 传智黑马java基础学习——day09(面向对象、及封装)
  9. linux nkf 日文编码转换命令[转载]
  10. 输出1900至2000年(包含1900年和2000年)间的所有闰年