东芝MIPI解码TC358746AXBG和OV6211使用及配置
Camera Sensor常见的接口类型:
1、有并口信号(D0~D7、PCLK、HSYNC、VSYNC),一般的处理器有DCMI接口,如ST32F207x系列,直接相连就可以使用。
2、MIPI接口信号DCN/DCP、D0N/D0P~D4N/D4P,需解码芯片将MIPI信号解出并口信号,再送给处理器。MIPI芯片东芝TC358746AXBG, Sensor用的OV6211。
调试的时候注意I2C器件地址,一开始用的是0x0e(write)/0x1f(red)就是不通,后面改成0x1c(write)/0x1d(red)就可以了,后续这名字上也有点区别TC358746AXBG和TC358746XBG,一个带A,一个不带A,带A的估计是新产品,不带A的应属旧产品。主要在以前公司用的旧产品用的是0x0e,就没仔细看,搞了半天才知道这地方有鬼。

24M RAW10 1Line 解码参数配置:
#if 1 //TC358746AXBG config
// PLL_CLK = input_clk *[(PLL_FBD+1) / (PLL_PRD+1)] * [1/2^FRS]
// PLL_CLK = 24M * [(191+1)/(2+1)] * [1/2^3] = 192M
// sys_clk = pclk = PLL_CLK /8 = 192/8 = 24M
// MclkRef = PLL_CLK/2 = 192/2 = 96M
// ppi_clk = PLL_CLK/2 =192/2 = 96M
// MCLK = MclkRef /[(1+1)+(1+1)] = 96/4 = 24M
//mipi chip ID 0x4401
) & (temp2 == 0x4401))
return 0xff;
SCCB_WriteWord_MIPI(0x0002, 0x0001); //bit[0] software reset ,bit[1]sleep
Delay_ms();
SCCB_WriteWord_MIPI(0x0002, 0x0000);
SCCB_WriteWord_MIPI(0x0016, 0x20bf); //PLL_PRD[15:12] = 0x02 + 1 = 2 + 1 =3 ; PLL_FBD[8:0] = 0xbf + 1 = 191 + 1 = 192
SCCB_WriteWord_MIPI(0x0018, 0x0c03);
SCCB_WriteWord_MIPI(0x0018, 0x0c13);//bit[0] PLL en,bit[1]PLL normal operaion,bit[4] pll clk en,bit[11:10] HSCK range
SCCB_WriteWord_MIPI(0x0020, 0x0028);//bit[1:0] sys_clk=pclk= PLL_CLK /8 = 24M,bit[3:2] MclkRef = PLL_CLK/2 = 96M,bit[5:4]ppi_clk =PLL_CLK/2=96M
SCCB_WriteWord_MIPI(0x0022, 0x0500); //word count
SCCB_WriteWord_MIPI(0x0060, 0x000f); //MIPI PHY Time Delay Register
SCCB_WriteWord_MIPI(0x0006, 0x0000); //FiFo Control Register
SCCB_WriteWord_MIPI(0x0008, 0x0011); //Data Format Control Register.bit[7:4] :0-RAW8;1-RAW10
SCCB_WriteWord_MIPI(0x0004, 0x8040); //Configuration Control Register(pclk¡¢VS¡¢HS¡)
SCCB_WriteWord_MIPI(0x000c, 0x0101); //output MCLK = MclkRef /[(mclk_high + 1) + (mclk_low + 1)] = 96/[(1+1)+(1+1)]=24M
SCCB_WriteWord_MIPI(0x000e, 0xfff0); //GPIO ENBALE
SCCB_WriteWord_MIPI(0x0010, 0x0000); //GPIO Direction
#endif
TC358746AXBG-SCH:格式输出设置的是RAW10,实际使用的时候只需高8bit,最低2bit可以不接,GPIO0输出时钟XVCLK(就是MCLK)给Sensor。

OV6211-SCH:
1、Sensor的输入时钟可有两个选择:
(a)、要么同MIPI IC 同一路时钟,也就是说一时钟上挂两个设备,虽然实验测试没问题,但建议不这样做,防止两个设备互相干扰,倘若两个设备工作时钟需同步,那么从源时钟输出分别到两个设备时钟输入口的路径还得严格控制等长。
(b)、要么由TC358746AXBG芯片的GPIO0输出时钟给Sensor,本例用的就是这个方式。

注意图中的MOS管不能用普通的三极管(如S9013)替代,因为红外LED的瞬间脉冲电流比较大,其瞬间电流取决于Strobe的脉冲及限流电阻R2。
实际使用中瞬间电流达到500mA,S9013的集电极Ic电流最大也只能到500mA,S9014更小,仅有100mA,IRLM2402 脉冲电流范围可达7.4A,持续电流1.2A。
所以IRLM2402满足设计需求。
OV6211 config
#if 1
//OV6211
{0x0103, 0x01}, //software reset :0 off; 1 on
{0x0100, 0x00},
{0x3001, 0x02}, // output drive capability control bit[6:5]
{0x3005, 0x08}, //strobe bit3 io_strobe_oen control input/output :0 input ; 1 output
{0x3013, 0x12},
{0x3014, 0x04},
{0x3016, 0x10},
{0x3017, 0x00},
{0x3018, 0x00},
{0x301a, 0x00},
{0x301b, 0x00},
{0x301c, 0x00},
{0x3037, 0xf0},
{0x3080, 0x01},
{0x3081, 0x00},
{0x3082, 0x01},
//PLL2 sys_clk = 80M,ADC_CLK = 240M
{0x3098, 0x04},
{0x3099, 0x28},
{0x309a, 0x06},
{0x309b, 0x04},
{0x309c, 0x00},
{0x309d, 0x00},
{0x309e, 0x01},
{0x309f, 0x00},
//PLL1 pix_clk = 30M ,mipi_clk = 300M
{0x30b0, 0x0a},
{0x30b1, 0x02},
{0x30b2, 0x00},
{0x30b3, 0x32},
{0x30b4, 0x02},
{0x30b5, 0x05},
{0x3106, 0xd9},
//Manual exposure time control
{0x3500, 0x00},
{0x3501, 0x00},
{0x3502, 0x80},
{0x3503, 0x03}, //bit[0]:manual exposure enable; bit[1]:manual AGC enable
//Manual exposure Gain
{0x3504, 0x00}, //sensor gain H
{0x3505, 0x00}, //sensor gain L
{0x3509, 0x10}, //AEC AGC ADJ ,bit[4] = 1 use real gain ,bit[4] = 0 use sensor gain
{0x350a, 0x00}, //real gain H
{0x350b, 0x30}, //real gain L ; real gain = 2^n(16+x)/16,n is {0x350a,0x350b} bit[9:4] ,x is 0x350b's low bit[3:0]
{0x3600, 0xfc},
{0x3620, 0xb7},
{0x3621, 0x05},
{0x3626, 0x31},
{0x3627, 0x40},
{0x3632, 0xa3},
{0x3633, 0x34},
{0x3634, 0x40},
{0x3636, 0x00},
{0x3660, 0x80},
{0x3662, 0x01}, //bit[1]=0 raw10
{0x3664, 0xf0},
{0x366a, 0x10},
{0x366b, 0x06},
{0x3680, 0xf4},
{0x3681, 0x50},
{0x3682, 0x00},
{0x3708, 0x20},
{0x3709, 0x40},
{0x370d, 0x03},
{0x373b, 0x02},
{0x373c, 0xe8},
{0x3742, 0x00},
{0x3744, 0x16},
{0x3745, 0x08},
{0x3781, 0xfc},
{0x3788, 0x00},
{0x3800, 0x00},
{0x3801, 0x00},
{0x3802, 0x00},
{0x3803, 0x00},
{0x3804, 0x01},
{0x3805, 0x9f},
{0x3806, 0x01},
{0x3807, 0x9f},
{0x3808, 0x00}, //windows width H
{0x3809, 0xc8}, //windows width L
{0x380a, 0x00}, //windows height H
{0x380b, 0xc8}, //windows height L
{0x380c, 0x05},
{0x380d, 0x78},
{0x380e, 0x00},
{0x380f, 0xee},
{0x3810, 0x00},
{0x3811, 0x04},
{0x3812, 0x00},
{0x3813, 0x04},
{0x3814, 0x31},
{0x3815, 0x31},
//HSYNC start point
{0x3816, 0x00},
{0x3817, 0x00},
//HSYNC end point
{0x3818, 0x00},
{0x3819, 0x00},
//HSYNC first active row start position
{0x381a, 0x00},
{0x381b, 0x00},
//subsampling 2:1
{0x3820, 0x02}, //bit[1]: vertical binning 2; bit[2]:vertical flip
{0x3821, 0x01}, //bit[0] horizontal binning 1; bit[2]:horizontal mirror
{0x382b, 0xfa},
{0x382f, 0x04},
{0x3832, 0x00},
{0x3833, 0x05},
{0x3834, 0x00},
{0x3835, 0x05},
{0x3882, 0x04},
{0x3883, 0x00},
{0x38a4, 0x10},
{0x38a5, 0x00},
{0x38b1, 0x03},
{0x3b80, 0x00},
{0x3b81, 0xff},
//PWM registers PWM frequency = 24M /(0x3b82+0x3b83)
{0x3b82, 0x10}, //divider_H
{0x3b83, 0x00}, //divider_L
{0x3b84, 0x08}, //duty_H
{0x3b85, 0x00}, //duty_H
{0x3b86, 0x01},
{0x3b87, 0x00},
//strobe control
{0x3b88, 0x00},
{0x3b89, 0x00},
{0x3b8a, 0x00},
{0x3b8b, 0x00}, //control strobe shift
{0x3b8c, 0x00},
{0x3b8d, 0x00},
{0x3b8e, 0x00},
{0x3b8f, 0x08},//control strobe pulse width
{0x3b90, 0x01},
{0x3b91, 0xb4},
{0x3b92, 0x00},
{0x3b93, 0x10},
{0x3b94, 0x05},
{0x3b95, 0xf2},
{0x3b96, 0xc8},
{0x3033, 0xf0},
{0x4004, 0x02}, //Black level calibration(BLC)
{0x404e, 0x01},
{0x4801, 0x0f},
{0x4806, 0x0f},
{0x4837, 0x43},
{0x5a08, 0x00},
{0x5a01, 0x00},
{0x5a03, 0x00},
{0x5a04, 0x10},
{0x5a05, 0xa0},
{0x5a06, 0x0c},
{0x5a07, 0x78},
{0x0100, 0x01}, //software standby - LOW POWER control
#endif
东芝MIPI解码TC358746AXBG和OV6211使用及配置的更多相关文章
- 使用FFmpeg解码H264-2016.01.14
使用jni方式调用FFmepg项目中接口,对H264裸码进行解码. 该Demo主要实现从文件中读取H264编码的视频流,然后使用FFmpeg解码,将解码后的码流保存到文件. 工程目录结构如图所示: A ...
- FFmpeg 学习(五):FFmpeg 编解码 API 分析
在上一篇文章 FFmpeg学习(四):FFmpeg API 介绍与通用 API 分析 中,我们简单的讲解了一下FFmpeg 的API基本概念,并分析了一下通用API,本文我们将分析 FFmpeg 在编 ...
- RK3288 mipi屏参数配置文件
RK3288 Android 5.1系统 Linux 3.10 mipi屏参数配置文件所在的路径:kernel/arch/arm/boot/dts/xxx_mipi.dtsi 屏参数配 ...
- 海思3519 qt ffmpeg 软解码播放avi
在海思3519上基于qt采用ffmpeg对avi进行解码显示,其中ffmpeg的配置,qt的配置在前文中已经说明,在此不再赘述. 解码 解码在单独的线程中进行,具体的代码如下: void VideoP ...
- LcdTools如何编写MIPI指令(初始化代码)
在LcdTools帮助文档中查看MIPI读写指令描述,如下图 编写LCM初始化代码就是配置LCM Driver IC寄存器值,一般只需用MipiWrite()指令写参数即可:下面介绍MipiWrite ...
- 学习jsp(3)
HttpServletRequest和HttpServletResponse: response.setContentType("text/html;charset=UTF-8") ...
- Mac上好用的视频播放器有哪些?
首页发现话题 提问 登录加入知乎 Mac 上好用的视频播放器有哪些? 关注问题写回答 OS X 应用 多媒体播放器(软件) Mac 上好用的视频播放器有哪些? 关注者 2680 被浏览 981770 ...
- 微言netty:不在浮沙筑高台
1. 写作缘起 几年前,我在一家农业物联网公司,负责解决其物联网产品线.我们当时基于.net平台打造了一套实时数据采集系统,可以把数以百万级的传感器传送回来的数据采集入库并根据这些数据进行建模.在搭建 ...
- 芯灵思Sinlinx A33开发板boa与CGI移植
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 641395230 在嵌入式设备的管理与交互中,基于W ...
随机推荐
- dotnet的移除-->安装 升级
之所以要升级dotnet 是因为项目中报了如下错误 意思就是版本低了 为了升级 我先要把之前的移除掉(用脚本移除) #!/usr/bin/env bash # # Copyright (c) .NET ...
- tabBar 选中默认蓝色 ,取消选中(自定义)
- (void)viewDidLoad { [super viewDidLoad]; // [self _initSubViewControllers]; // [self _custom ...
- 【转】Matrix67:十个利用矩阵乘法解决的经典题目
好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的人,今天在这里简单写一下.这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质. 不要以为数学中的矩阵也是黑色屏幕上不断变化的 ...
- linux共享文件夹
mnt中没有 hgfs,重新安装vm tools后问题解决
- openstack私有云布署实践【4.1 上层代理haproxy配置 (科兴环境)】
官方文档上的高可用配置,它推荐的是使用haproxy的上层代理来实现服务组件的主备访问.或者负载均衡访问 一开始我也是使用haproxy来做的,但后来方式改了 测试环境:haproxy + n ...
- Contest Balloons
Contest Balloons 题目链接:http://codeforces.com/problemset/problem/725/D 贪心+枚举 每次在排名在自己前面的选出w-t值最小的送气球,更 ...
- 大数据时代之hadoop(一):hadoop安装
1.hadoop版本介绍 0.20.2版本以前(不含该版本)的配置文件都在default.xml中. 0.20.x以后的版本不含有eclipse插件的jar包,由于eclipse的版本不一,所以就需要 ...
- 手动新建MVC控制器和视图,以及数据显示的问题
一,在C#.NET的MVC项目添加一个控制器,在这个控制器有一个index方法,你可以在index方法上鼠标右键选择添加视图,这可以创建一个包含index.cshtml的View视图的文件夹 < ...
- 数学#素数判定Miller_Rabin+大数因数分解Pollard_rho算法 POJ 1811&2429
素数判定Miller_Rabin算法详解: http://blog.csdn.net/maxichu/article/details/45458569 大数因数分解Pollard_rho算法详解: h ...
- Union、Union All、Except、InterSect的区别
UNION: 将多个「结果集 (result set)」的「行 (row)」合并,作为单个结果集返回,并移除重复的行.若有重复的行,只留下一个. UNION ALL: 将多个「结果集 (result ...