
前言去年末ST推出的STM32N657DK开发板中,它的摄像头比较特殊。 CSI是相机串行接口的简称和之前常用的类似Ov2640等SCCB接口的摄像头相比,CSI 接口支持高速数据传输,数据传输速度比 SCCB 快得多。例如,CSI 总线提供高达 1Gbps 的数据传输速度,而 SCCB 的数据传输速度相对较慢。具有更低的功耗,采用串行传输方式,减少了信号线的数量,从而降低了功耗。具有更低的功耗,因为它们采用串行传输方式,减少了信号线的数量,从而降低了功耗。 而STM32N6是ST的MCU中第一款支持CSI的单片机,在此之前CSI接口为STM32MP系列独有。 CubeMX在N6使用中的BUG这里我要吐槽一下CubeMX在N6中的各种Bug。首先是RIF的BUG,作为防止用户异常访问的防火墙机制,在N6推出时,CubeMX中并没有直接的RIF选项,需要在搜索框中搜索RIF才可以打开RIF配置,否则在使用摄像头和LCD显示屏的时候就会触发内容保护。 不过今天发现CubeMX可以更新了,而官方的STM32N6的库也更新到了1.1版本。 新版本的CubeMX完善了这个Bug,可以直接配置RIF选项。 其次是CSI和DCMIPP的BUG,而这个BUG是妨碍摄像头使用的最大BUG。 CSI在配置完后,启动CubeMX生成代码的时候会发现CSI的内容没有填充,而DCMIPP的配置则会缺少很多很多的内容。 为了解决这个问题,只能从ST的官方库的例程找到CSI和DCMIPP配置。 直接CV官方的CSI和DCMIPP的配置参数,写入配置。 然后可能是由于CSI的问题,导致时钟树中的IC18是被禁用的。 这里为什么要强调一下IC18呢,因为IC18提供CSI的时钟源。 CSI的时钟源只能由IC18提供,这里并不能配置CSI的IC18,这里也有可能是因为CSI的BUG导致。 而且DCMIPP的主时钟应该和CSI的主时钟相同,因此解决的问题还得包括解决CSI的时钟问题。 官方的例程中对DCMIPP的配置是将其配置为300MHZ,经典配置是333MHZ,这点和手册中描述的一致。 对CSI的时钟配置是由PLL1引入,将其60分频。而上面配置DCMIPP的时候PLL1为1200MHZ,因此CSI的主频是1200/60 = 20MHZ。 当然别忘记了开启CSI的时钟总线使能,这样子就能够解决CubeMX关于CSI和DCMIPP的BUG了。 上述BUG花了很长的时间去启动摄像头,不过从CubeMX的这次更新可以看出官方已经在逐渐的完善N6的功能了,期待这些问题的解决。 驱动移植解决掉上述问题之后,找到ST的BSP支持包
启动DCMIPP即可,当然这里还要配置TDC以便于LCD显示屏启动还有解除LTDC和DCMIPP的内存保护。 |
【STM32N6570-DK评测】4.ISP移植与使用
【下载问题解决】关于ST官网下载软件问题解决
【STM32N6570-DK评测】8.初试AI
【STM32N6570-DK评测】7.探索STM32 ISP IQTune
【STM32N6570-DK评测】1.你好N6
【STM32N6570-DK评测】2.LTDC测试使用
【STM32N6570-DK评测】 4. 使用TouchGFX 生成CubeMX文件的Bug
【STM32N6570-DK评测】 3. 外部存储器的使用
【STM32N6570-DK评测】1.开箱测评
【STM32N6570-DK评测】摄像头video encoder