查看: 859|回复: 7

[原创] MCX N947+摄像头屏显示

[复制链接]
  • TA的每日心情
    开心
    昨天 10:45
  • 签到天数: 727 天

    连续签到: 1 天

    [LV.9]以坛为家II

    14

    主题

    2651

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4593
    最后登录
    2025-8-15
    发表于 2025-5-25 14:54:57 | 显示全部楼层 |阅读模式
    下面来一个摄像头与屏一个显示的分享,使用的OV7670摄像头模块.


    模块参数:
    1.感光阵列640X480。
    2.10电压2.5Vto3.0V(内部LDO给核供电1.8V)。
    3.功耗工作60mW/15fpsVGAYUV。
    4.休眠<20uA。
    5.温度操作-30°C到70°℃。
    6.稳定工作0°C到50°℃。
    7.光学尺寸1/6"。
    8.视场角25°。
    9.帧率30fpsVGA,灵敏度1.3V/(Lux-sec)。
    10.信噪比46 dB.
    11.动态范围52dB
    12.浏览模式逐行。
    13.电子曝光1行到510行14.像素面积3.6umx3.6um。15.暗电流12mV/s at 60°C.




    借一个图:
    1748155607610.jpg
    连接在947开发板的图:
    1748155660000.png

    刚开始出现的画面不正常,还需要注意几个地方。
    开发板原图:
    1748155749830.jpg
    切换到下图:
    1748155791129.jpg
    也就是把SJ16,SJ26,SJ27原本在A位置的切换到B位置处。
    这个在官方是可以找到解释的,我也是参考这个方向去进行弄的。
    1748155866289.jpg

    主函数代码:
    1. smartdma_camera_param_t smartdmaParam;                  /*!< SMARTDMA function parameters. */
    2. volatile uint8_t g_camera_buffer[480*320*2];
    3. volatile uint8_t g_samrtdma_stack[32];
    4. volatile uint32_t g_camera_complete_flag=0;
    5. static lcd_impl_flexio_t s_lcd_impl;
    6. static st7796_lcd_t s_lcd = {
    7.     .config =
    8.         {
    9.             .direction = ST7796_DIR_0,
    10.             .pix_fmt   = ST7796_RGB565,
    11.             .bgr_mode  = 1,
    12.             .inversion = 1,// 颜色反相设置
    13.             .mirrored  = 1,
    14.         },
    15.     .cb =
    16.         {
    17.             .reset_cb      = lcd_impl_reset,
    18.             .write_cmd_cb  = lcd_impl_write_cmd,
    19.             .write_data_cb = lcd_impl_write_data,
    20.         },
    21.     .user_data = &s_lcd_impl,
    22. };

    23. /*******************************************************************************
    24. * Code
    25. ******************************************************************************/
    26. static void SmartDMA_camera_callback(void *param){
    27.                 PRINTF("11\r\n");
    28.                 g_camera_complete_flag = 1;
    29. }
    30. /*!
    31. * @brief Main function
    32. */
    33. int main(void)
    34. {
    35.     char ch;
    36.     uint32_t address;

    37.     /* Init board hardware. */
    38.     /* attach FRO 12M to FLEXCOMM4 (debug console) */
    39.     CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u);
    40.     CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

    41.     /* init I2C0*/
    42.     CLOCK_AttachClk(kFRO12M_to_FLEXCOMM7);
    43.     CLOCK_EnableClock(kCLOCK_LPFlexComm7);
    44.     CLOCK_EnableClock(kCLOCK_LPI2c7);
    45.     CLOCK_SetClkDiv(kCLOCK_DivFlexcom7Clk, 1u);
    46.        
    47.     BOARD_InitBootPins();
    48.     BOARD_InitBootClocks();
    49.     BOARD_InitDebugConsole();
    50.     Ov7670_Init();

    51.     g_camera_complete_flag=0;
    52.         PRINTF("hello world.\r\n");
    53.         INPUTMUX_Init(INPUTMUX0);
    54.         INPUTMUX_AttachSignal(INPUTMUX0, 0, kINPUTMUX_GpioPort0Pin4ToSmartDma);//P0_10/EZH_CAMERA_VSYNC
    55.         INPUTMUX_AttachSignal(INPUTMUX0, 1, kINPUTMUX_GpioPort0Pin11ToSmartDma);//P0_11/EZH_CAMERA_HSYNC
    56.         INPUTMUX_AttachSignal(INPUTMUX0, 2, kINPUTMUX_GpioPort0Pin5ToSmartDma);//P0_14/EZH_CAMERA_PCLK
    57.         /* Turn off clock to inputmux to save power. Clock is only needed to make changes */
    58.         INPUTMUX_Deinit(INPUTMUX0);

    59.         for(uint32_t i=0;i<480*320;i++){
    60.                 g_camera_buffer[2*i]= 0x0;
    61.         }
    62.         lcd_impl_init(&s_lcd_impl);
    63.         st7796_lcd_init(&s_lcd);
    64.         st7796_lcd_load(&s_lcd, (uint8_t *)g_camera_buffer, 0,          320-1, 0,   480-1);

    65.         SMARTDMA_InitWithoutFirmware();
    66.         SMARTDMA_InstallFirmware(SMARTDMA_CAMERA_MEM_ADDR,s_smartdmaCameraFirmware,
    67.                                                  SMARTDMA_CAMERA_FIRMWARE_SIZE);
    68.         SMARTDMA_InstallCallback(SmartDMA_camera_callback, NULL);
    69.         NVIC_EnableIRQ(SMARTDMA_IRQn);
    70.         NVIC_SetPriority(SMARTDMA_IRQn, 3);
    71.        
    72.         smartdmaParam.smartdma_stack = (uint32_t*)g_samrtdma_stack;
    73.         smartdmaParam.p_buffer                   = (uint32_t*)g_camera_buffer;
    74.         SMARTDMA_Boot(kEZH_Camera_320480_Whole_Buf, &smartdmaParam, 0x2);

    75.     while (1)
    76.     {
    77.       while(g_camera_complete_flag == 0);
    78.             st7796_lcd_load(&s_lcd, (uint8_t *)g_camera_buffer, 0, 320-1, 0, 480-1);
    79.             g_camera_complete_flag=0;
    80.     }
    81. }
    复制代码
    这里有一点要注意一下,刚开始图像显示是反相的,需要更改一下程序,把
    1. static st7796_lcd_t s_lcd = {
    2.     .config =
    3.         {
    4.             .direction = ST7796_DIR_0,
    5.             .pix_fmt   = ST7796_RGB565,
    6.             .bgr_mode  = 1,
    7.             .inversion = 1,// 颜色反相设置
    8.             .mirrored  = 1,
    9.         },
    10.     .cb =
    11.         {
    12.             .reset_cb      = lcd_impl_reset,
    13.             .write_cmd_cb  = lcd_impl_write_cmd,
    14.             .write_data_cb = lcd_impl_write_data,
    15.         },
    16.     .user_data = &s_lcd_impl,
    17. };
    复制代码
    更改为上图的,就可以正常显示了,如果没有改会出现下图现象。
    1748156035464.jpg
    如果更改后,图像就正常了,出现下图显示。
    a6a1bf8d44492203ad926f6e8f2963e.jpg

    结束。
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    17 小时前
  • 签到天数: 2398 天

    连续签到: 107 天

    [LV.Master]伴坛终老

    84

    主题

    2万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    22282
    最后登录
    2025-8-16
    发表于 2025-5-25 16:22:47 | 显示全部楼层
    666
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3916

    主题

    7534

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39872
    最后登录
    2025-8-15
    发表于 2025-5-26 10:21:44 | 显示全部楼层
    666
    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2025-2-21 12:40
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    11

    主题

    1682

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3721
    最后登录
    2025-8-16
    发表于 2025-5-26 14:41:30 | 显示全部楼层
    这是露脸了
    ~~~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 08:27
  • 签到天数: 644 天

    连续签到: 14 天

    [LV.9]以坛为家II

    6

    主题

    1074

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3655
    最后登录
    2025-8-15
    发表于 2025-5-26 18:52:17 | 显示全部楼层
               666666
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 961 天

    连续签到: 1 天

    [LV.10]以坛为家III

    14

    主题

    4613

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7694
    最后登录
    2025-8-16
    发表于 2025-5-26 22:03:42 | 显示全部楼层
    666,666
    永远开心快乐
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:45
  • 签到天数: 727 天

    连续签到: 1 天

    [LV.9]以坛为家II

    14

    主题

    2651

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4593
    最后登录
    2025-8-15
     楼主| 发表于 2025-5-27 08:49:26 | 显示全部楼层

    哈哈            
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 545 天

    连续签到: 3 天

    [LV.9]以坛为家II

    21

    主题

    883

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2387
    最后登录
    2025-8-16
    发表于 2025-7-6 17:27:42 | 显示全部楼层
    反相的问题找到了,牛!
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-16 17:06 , Processed in 0.108434 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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