楼主: NXP管管

[在线活动] 【送70块板卡】“中秋芯礼”开发板大放送

  [复制链接]
回帖奖励 27 NXP金币 回复本帖可获得 3 NXP金币奖励! 每人限 2 次
抢楼 抢楼 查看抢中楼层 本帖为抢楼帖,欢迎抢楼!  奖励楼层: 7,77,177 
  • TA的每日心情
    开心
    昨天 23:00
  • 签到天数: 1251 天

    连续签到: 174 天

    [LV.10]以坛为家III

    1

    主题

    2962

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7642
    最后登录
    2025-8-3
    发表于 2024-9-24 23:03:17 | 显示全部楼层

    回帖奖励 +3 NXP金币

    做usb同步传输时,经常遇到缓冲区不够导致数据溢出丢失的情况,这个时候可以考虑软件上加入环形缓冲区解决
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-29 09:02
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    0

    主题

    29

    帖子

    0

    注册会员

    Rank: 2

    积分
    108
    最后登录
    2024-9-29
    发表于 2024-9-25 08:46:08 来自手机 | 显示全部楼层
    谷歌的Project Ara手机,我觉得真的非常好,外设坏了容易更换,还能根据需求喜好定制外设。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:58
  • 签到天数: 346 天

    连续签到: 6 天

    [LV.8]以坛为家I

    12

    主题

    1118

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2574
    最后登录
    2025-8-2
    发表于 2024-9-25 09:35:40 | 显示全部楼层
    这个bug 不是我写的,是我同事写的。

    居然在头文件里定义变量,离谱。
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-24 10:13
  • 签到天数: 108 天

    连续签到: 2 天

    [LV.6]常住居民II

    0

    主题

    494

    帖子

    0

    高级会员

    Rank: 4

    积分
    844
    最后登录
    2025-8-1
    发表于 2024-9-25 10:19:41 | 显示全部楼层

    回帖奖励 +3 NXP金币

    写一个你开发过程是遇到的bug,使用温度传感器时,检测温度漂的很厉害,特别是当温度上升到一定的阶段时,后续更改为PID工作方式,解决了温漂问题。
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-24 10:13
  • 签到天数: 108 天

    连续签到: 2 天

    [LV.6]常住居民II

    0

    主题

    494

    帖子

    0

    高级会员

    Rank: 4

    积分
    844
    最后登录
    2025-8-1
    发表于 2024-9-25 10:21:38 | 显示全部楼层

    回帖奖励 +3 NXP金币

    1. int main(void)  
    2. {  
    3.   HAL_Init(); // 初始化HAL库  
    4.   SystemClock_Config(); // 配置系统时钟  
    5.   GPIO_Init(); // 初始化GPIO  
    6.   
    7.   while (1)  
    8.   {  
    9.     HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); // 切换LED状态  
    10.     HAL_Delay(1000); // 延时1秒  
    11.   }  
    12. }  
    13.   
    14. void GPIO_Init(void)  
    15. {  
    16.   __HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟  
    17.   
    18.   GPIO_InitTypeDef GPIO_InitStruct = {0};  
    19.   
    20.   // 配置GPIOA的PIN5为推挽输出  
    21.   GPIO_InitStruct.Pin = LED_Pin;  
    22.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  
    23.   GPIO_InitStruct.Pull = GPIO_NOPULL;  
    24.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  
    25.   HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);  
    26. }  
    复制代码


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

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-24 10:13
  • 签到天数: 108 天

    连续签到: 2 天

    [LV.6]常住居民II

    0

    主题

    494

    帖子

    0

    高级会员

    Rank: 4

    积分
    844
    最后登录
    2025-8-1
    发表于 2024-9-25 10:25:53 | 显示全部楼层
    MCX A153,可以利用153的低功耗,制作远程农业控制系统,监控温棚作物生长环境状态。
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

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

    连续签到: 2 天

    [LV.10]以坛为家III

    28

    主题

    4283

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5813
    最后登录
    2025-8-4
    发表于 2024-9-25 10:52:26 | 显示全部楼层
    STM32驱动OV7670的代码:
    #include "OV7670.h"
    #include "delay.h"
    #include "stm32f10x_lib.h"

    // GND         PIN1
    // HREF  PC8   PIN2
    // VSYNC       PIN3
    // PWDN  GND   PIN4
    // PCLK  PC9   PIN5 没有用到
    // AVDD  2.8V  PIN6
    // DVDD  2.8V  PIN7
    // SIOD  PA6   PIN8
    // XCLK1 PA8   PIN9
    // SIOC  PA7   PIN10
    // D0    PC0   PIN11
    // D1    PC1   PIN12
    // D2    PC2   PIN13
    // D3    PC3   PIN14
    // GND         PIN15
    // D4    PC4   PIN16
    // D5    PC5   PIN17
    // D6    PC6   PIN18
    // D7    PC7   PIN19
    // RST   GND   PIN20

    //extern const char change_reg[CHANGE_REG_NUM][2];
    ////////////////////////////
    //功能:提供7670时钟
    //返回:无

    void CLK_init_ON(void)
    {
      
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        RCC_MCOConfig(RCC_MCO_HSE  );//hsi
    }
    void CLK_init_OFF(void)
    {
      
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
    }
    void OV7670_GPIO_Init(void)
    {
      
      GPIO_InitTypeDef GPIO_InitStructure;
       /* Enable GPIOC  clock */
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
      GPIO_InitStructure.GPIO_Pin =  0X0BFF;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//GPIO_Mode_AF_OD  GPIO_Mode_AF_PP GPIO_Mode_IPU        GPIO_Mode_IN_FLOATING   
      //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOC, &GPIO_InitStructure);
    }
    void OV7670_GPIO_CONTRL_CONFIG(void)
    {
      
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_InitStructure.GPIO_Pin = LCD_HREF_BIT|LCD_VSYNC_BIT|LCD_PCLK_BIT;
        //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        RCC_MCOConfig(RCC_MCO_HSE  );//hsi
    }
    ////////////////////////////
    //功能:写OV7670寄存器
    //返回:1-成功        0-失败
    unsigned char wrOV7670Reg(unsigned char regID, unsigned char regDat)
    {
            startSCCB();
            if(0==SCCBwriteByte(0x42))
            {
                    stopSCCB();
                    return(0);
            }
            delay_us(100);
              if(0==SCCBwriteByte(regID))
            {
                    stopSCCB();
                    return(0);
            }
            delay_us(100);
              if(0==SCCBwriteByte(regDat))
            {
                    stopSCCB();
                    return(0);
            }
              stopSCCB();
           
              return(1);
    }
    ////////////////////////////
    //功能:读OV7670寄存器
    //返回:1-成功        0-失败
    unsigned char rdOV7670Reg(unsigned char regID, unsigned char *regDat)
    {
            //通过写操作设置寄存器地址
            startSCCB();
            if(0==SCCBwriteByte(0x42))
            {
                    stopSCCB();
                    return(0);
            }
            delay_us(100);
              if(0==SCCBwriteByte(regID))
            {
                    stopSCCB();
                    return(0);
            }
            stopSCCB();
           
            delay_us(100);
           
            //设置寄存器地址后,才是读
            startSCCB();
            if(0==SCCBwriteByte(0x43))
            {
                    stopSCCB();
                    return(0);
            }
            delay_us(100);
              *regDat=SCCBreadByte();
              noAck();
              stopSCCB();
              return(1);
    }


    //(140,16,640,480) is good for VGA
    //(272,16,320,240) is good for QVGA
    /* config_OV7670_window */
    void OV7670_config_window(unsigned int startx,unsigned int starty,unsigned int width, unsigned int height)
    {
            unsigned int endx;
            unsigned int endy;// "v*2"必须
            unsigned char temp_reg1, temp_reg2;
            unsigned char temp=0;
           
            endx=(startx+width);
            endy=(starty+height+height);// "v*2"必须
            rdOV7670Reg(0x03, &temp_reg1 );
            temp_reg1 &= 0xf0;
            rdOV7670Reg(0x32, &temp_reg2 );
            temp_reg2 &= 0xc0;
           
            // Horizontal
            temp = temp_reg2|((endx&0x7)<<3)|(startx&0x7);
            wrOV7670Reg(0x32, temp );
            temp = (startx&0x7F8)>>3;
            wrOV7670Reg(0x17, temp );
            temp = (endx&0x7F8)>>3;
            wrOV7670Reg(0x18, temp );
           
            // Vertical
            temp =temp_reg1|((endy&0x3)<<2)|(starty&0x3);
            wrOV7670Reg(0x03, temp );
            temp = starty>>2;
            wrOV7670Reg(0x19, temp );
            temp = endy>>2;
            wrOV7670Reg(0x1A, temp );
    }

    set_OV7670reg(void)
    {
            wrOV7670Reg(0x8c, 0x00);
            wrOV7670Reg(0x3a, 0x04);
            wrOV7670Reg(0x40, 0xd0);
            wrOV7670Reg(0x8c, 0x00);
            wrOV7670Reg(0x12, 0x14);
            wrOV7670Reg(0x32, 0x80);
            wrOV7670Reg(0x17, 0x16);
            wrOV7670Reg(0x18, 0x04);
            wrOV7670Reg(0x19, 0x02);
            wrOV7670Reg(0x1a, 0x7b);
            wrOV7670Reg(0x03, 0x06);
            wrOV7670Reg(0x0c, 0x04);
            wrOV7670Reg(0x3e, 0x00);
            wrOV7670Reg(0x70, 0x3a);
            wrOV7670Reg(0x71, 0x35);
            wrOV7670Reg(0x72, 0x11);
            wrOV7670Reg(0x73, 0x00);
            wrOV7670Reg(0xa2, 0x00);
            wrOV7670Reg(0x11, 0xff);
            //wrOV7670Reg(0x15 , 0x31);
            wrOV7670Reg(0x7a, 0x20);
            wrOV7670Reg(0x7b, 0x1c);
            wrOV7670Reg(0x7c, 0x28);
            wrOV7670Reg(0x7d, 0x3c);
            wrOV7670Reg(0x7e, 0x55);
            wrOV7670Reg(0x7f, 0x68);
            wrOV7670Reg(0x80, 0x76);
            wrOV7670Reg(0x81, 0x80);
            wrOV7670Reg(0x82, 0x88);
            wrOV7670Reg(0x83, 0x8f);
            wrOV7670Reg(0x84, 0x96);
            wrOV7670Reg(0x85, 0xa3);
            wrOV7670Reg(0x86, 0xaf);
            wrOV7670Reg(0x87, 0xc4);
            wrOV7670Reg(0x88, 0xd7);
            wrOV7670Reg(0x89, 0xe8);
             
            wrOV7670Reg(0x32,0xb6);
           
            wrOV7670Reg(0x13, 0xff);
            wrOV7670Reg(0x00, 0x00);
            wrOV7670Reg(0x10, 0x00);
            wrOV7670Reg(0x0d, 0x00);
            wrOV7670Reg(0x14, 0x4e);
            wrOV7670Reg(0xa5, 0x05);
            wrOV7670Reg(0xab, 0x07);
            wrOV7670Reg(0x24, 0x75);
            wrOV7670Reg(0x25, 0x63);
            wrOV7670Reg(0x26, 0xA5);
            wrOV7670Reg(0x9f, 0x78);
            wrOV7670Reg(0xa0, 0x68);
    //        wrOV7670Reg(0xa1, 0x03);//0x0b,
            wrOV7670Reg(0xa6, 0xdf);
            wrOV7670Reg(0xa7, 0xdf);
            wrOV7670Reg(0xa8, 0xf0);
            wrOV7670Reg(0xa9, 0x90);
            wrOV7670Reg(0xaa, 0x94);
            //wrOV7670Reg(0x13, 0xe5);
            wrOV7670Reg(0x0e, 0x61);
            wrOV7670Reg(0x0f, 0x43);
            wrOV7670Reg(0x16, 0x02);
            wrOV7670Reg(0x1e, 0x37);
            wrOV7670Reg(0x21, 0x02);
            wrOV7670Reg(0x22, 0x91);
            wrOV7670Reg(0x29, 0x07);
            wrOV7670Reg(0x33, 0x0b);
            wrOV7670Reg(0x35, 0x0b);
            wrOV7670Reg(0x37, 0x3f);
            wrOV7670Reg(0x38, 0x01);
            wrOV7670Reg(0x39, 0x00);
            wrOV7670Reg(0x3c, 0x78);
            wrOV7670Reg(0x4d, 0x40);
            wrOV7670Reg(0x4e, 0x20);
            wrOV7670Reg(0x69, 0x00);
            wrOV7670Reg(0x6b, 0x4a);
            wrOV7670Reg(0x74, 0x19);
            wrOV7670Reg(0x8d, 0x4f);
            wrOV7670Reg(0x8e, 0x00);
            wrOV7670Reg(0x8f, 0x00);
            wrOV7670Reg(0x90, 0x00);
            wrOV7670Reg(0x91, 0x00);
            wrOV7670Reg(0x92, 0x00);
            wrOV7670Reg(0x96, 0x00);
            wrOV7670Reg(0x9a, 0x80);
            wrOV7670Reg(0xb0, 0x84);
            wrOV7670Reg(0xb1, 0x0c);
            wrOV7670Reg(0xb2, 0x0e);
            wrOV7670Reg(0xb3, 0x82);
            wrOV7670Reg(0xb8, 0x0a);
            wrOV7670Reg(0x43, 0x14);
            wrOV7670Reg(0x44, 0xf0);
            wrOV7670Reg(0x45, 0x34);
            wrOV7670Reg(0x46, 0x58);
            wrOV7670Reg(0x47, 0x28);
            wrOV7670Reg(0x48, 0x3a);
           
            wrOV7670Reg(0x59, 0x88);
            wrOV7670Reg(0x5a, 0x88);
            wrOV7670Reg(0x5b, 0x44);
            wrOV7670Reg(0x5c, 0x67);
            wrOV7670Reg(0x5d, 0x49);
            wrOV7670Reg(0x5e, 0x0e);
           
            wrOV7670Reg(0x64, 0x04);
            wrOV7670Reg(0x65, 0x20);
            wrOV7670Reg(0x66, 0x05);

            wrOV7670Reg(0x94, 0x04);
            wrOV7670Reg(0x95, 0x08);         

            wrOV7670Reg(0x6c, 0x0a);
            wrOV7670Reg(0x6d, 0x55);
            wrOV7670Reg(0x6e, 0x11);
            wrOV7670Reg(0x6f, 0x9f);

            wrOV7670Reg(0x6a, 0x40);
            wrOV7670Reg(0x01, 0x40);
            wrOV7670Reg(0x02, 0x40);
           
            //wrOV7670Reg(0x13, 0xe7);
            wrOV7670Reg(0x15, 0x00);
            wrOV7670Reg(0x4f, 0x80);
            wrOV7670Reg(0x50, 0x80);
            wrOV7670Reg(0x51, 0x00);
            wrOV7670Reg(0x52, 0x22);
            wrOV7670Reg(0x53, 0x5e);
            wrOV7670Reg(0x54, 0x80);
            wrOV7670Reg(0x58, 0x9e);

            wrOV7670Reg(0x41, 0x08);
            wrOV7670Reg(0x3f, 0x00);
            wrOV7670Reg(0x75, 0x05);
            wrOV7670Reg(0x76, 0xe1);

            wrOV7670Reg(0x4c, 0x00);
            wrOV7670Reg(0x77, 0x01);
           
            wrOV7670Reg(0x3d, 0xc1);
            wrOV7670Reg(0x4b, 0x09);
            wrOV7670Reg(0xc9, 0x60);
            //wrOV7670Reg(0x41, 0x38);       
            wrOV7670Reg(0x56, 0x40);
            wrOV7670Reg(0x34, 0x11);
            wrOV7670Reg(0x3b, 0x02);
            wrOV7670Reg(0xa4, 0x89);
           
            wrOV7670Reg(0x96, 0x00);
            wrOV7670Reg(0x97, 0x30);
            wrOV7670Reg(0x98, 0x20);
            wrOV7670Reg(0x99, 0x30);
            wrOV7670Reg(0x9a, 0x84);
            wrOV7670Reg(0x9b, 0x29);
            wrOV7670Reg(0x9c, 0x03);
            wrOV7670Reg(0x9d, 0x4c);
            wrOV7670Reg(0x9e, 0x3f);       

            wrOV7670Reg(0x09, 0x00);
            wrOV7670Reg(0x3b, 0xc2);

    }

    /* OV7670_init() */
    //返回1成功,返回0失败
    unsigned char OV7670_init(void)
    {
            unsigned char temp;       
            unsigned int i=0;

            OV7670_GPIO_Init();
            OV7670_GPIO_CONTRL_CONFIG();
            SCCB_GPIO_Config(); // io init..

        CLK_init_ON();
            temp=0x80;
            if(0==wrOV7670Reg(0x12, temp)) //Reset SCCB
            {
            return 0 ;
            }
            delay_ms(100);
              set_OV7670reg();

            OV7670_config_window(272,12,320,240);// set 240*320
            return 0x01; //ok                          
    }
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    3 天前
  • 签到天数: 2096 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    65

    主题

    8413

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    14222
    最后登录
    2025-8-1
    发表于 2024-9-25 15:08:51 | 显示全部楼层
    之前看到过有人做的音频指示器,小彩屏做的显示界面非常丝滑,就像很老之前千千静听那种界面显示样的
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-9 21:52
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    0

    主题

    5

    帖子

    0

    注册会员

    Rank: 2

    积分
    56
    最后登录
    2025-2-2
    发表于 2024-9-25 22:00:20 来自手机 | 显示全部楼层

    回帖奖励 +3 NXP金币

    想试一下比较火的eIQ自主分类模型并部署在N947上,最近看见很多的文章教程,
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 860 天

    连续签到: 3 天

    [LV.10]以坛为家III

    69

    主题

    3266

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    10367
    最后登录
    2025-8-2
    发表于 2024-9-26 10:17:21 | 显示全部楼层

    回帖奖励 +3 NXP金币

    偶现的bug 连续运行一个月有的设备会异常重启,因为不好复现不好确认死机的位置,后来移植乐乐cmbtrace 把hardfault 的异常信息存储到flash中,出现异常的机器把flash log 取出来分析是代码存在内存越界踩踏的行为前后花了小半年才把这个bug搞定把。
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-4 07:31 , Processed in 0.101714 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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