• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【 DigiKey DIY原创大赛】+智能温度控制器 (2)

系统初始:

SYSCONFIG_WEAK void SYSCFG_DL_init(void)

{

    SYSCFG_DL_initPower();

    SYSCFG_DL_GPIO_init();

    /* Module-Specific Initializations*/

    SYSCFG_DL_SYSCTL_init();

      

/*定时器0初始化*/    

         SYSCFG_DL_TIMER_0_init();    

/*串口0初始化*/        

    SYSCFG_DL_UART_0_init();  

/* Ensure backup structures have no valid state */

         gUART3Backup.backupRdy    = false;

/*spi 存储芯片 初始化*/   

    SYSCFG_DL_SPI_0_init();

    /* Ensure backup structures have no valid state */

       gSPI_0Backup.backupRdy   = false;  

    SYSCFG_DL_SYSTICK_init();

}

SYSCONFIG_WEAK void SYSCFG_DL_GPIO_init(void)

{

    DL_GPIO_initPeripheralOutputFunction(

        GPIO_UART_0_IOMUX_TX, GPIO_UART_0_IOMUX_TX_FUNC);

    DL_GPIO_initPeripheralInputFunction(

        GPIO_UART_0_IOMUX_RX, GPIO_UART_0_IOMUX_RX_FUNC);

    DL_GPIO_initDigitalInput(KEY_PIN_21_IOMUX);

    DL_GPIO_initDigitalOutput(RGB_Red_PIN_26_IOMUX);

    DL_GPIO_initDigitalOutput(I2C_SCL_IOMUX);

    DL_GPIO_initDigitalOutput(I2C_SDA_IOMUX);

    DL_GPIO_setPins(I2C_PORT, I2C_SCL_PIN |

              I2C_SDA_PIN);

    DL_GPIO_enableOutput(I2C_PORT, I2C_SCL_PIN |

              I2C_SDA_PIN);

    DL_GPIO_clearPins(GPIOB, RGB_Red_PIN_26_PIN);

    DL_GPIO_enableOutput(GPIOB, RGB_Red_PIN_26_PIN);

    DL_GPIO_setUpperPinsPolarity(GPIOB, DL_GPIO_PIN_21_EDGE_RISE);

      

/*LED IO口初始化*/           

              DL_GPIO_initDigitalOutputFeatures(LED1_PIN_14_IOMUX,

              DL_GPIO_INVERSION_DISABLE, DL_GPIO_RESISTOR_PULL_DOWN,

              DL_GPIO_DRIVE_STRENGTH_LOW, DL_GPIO_HIZ_DISABLE);

    DL_GPIO_clearPins(LED1_PORT, LED1_PIN_14_PIN);

    DL_GPIO_enableOutput(LED1_PORT, LED1_PIN_14_PIN);             

/*串口1 使能IO口初始化*/                          

    DL_GPIO_initPeripheralOutputFunction(

        GPIO_UART1_IOMUX_TX, GPIO_UART1_IOMUX_TX_FUNC);

    DL_GPIO_initPeripheralInputFunction(

        GPIO_UART1_IOMUX_RX, GPIO_UART1_IOMUX_RX_FUNC);                

/*存储芯片 AT24C 芯片使能IO口初始化*/                                   

    DL_GPIO_initDigitalOutput(GPIO_SCL_IOMUX);

    DL_GPIO_initDigitalOutput(GPIO_SDA_IOMUX);                          

/*存储芯片 AT24C 芯片使能IO口初始化*/

    DL_GPIO_initPeripheralOutputFunction(

        GPIO_SPI_0_IOMUX_SCLK, GPIO_SPI_0_IOMUX_SCLK_FUNC);

    DL_GPIO_initPeripheralOutputFunction(

        GPIO_SPI_0_IOMUX_PICO, GPIO_SPI_0_IOMUX_PICO_FUNC);

    DL_GPIO_initPeripheralInputFunction(

        GPIO_SPI_0_IOMUX_POCI, GPIO_SPI_0_IOMUX_POCI_FUNC);

    DL_GPIO_initPeripheralOutputFunction(

        GPIO_SPI_0_IOMUX_CS0, GPIO_SPI_0_IOMUX_CS0_FUNC);

}

SYSCONFIG_WEAK void SYSCFG_DL_SYSCTL_init(void)

{

       //Low Power Mode is configured to be SLEEP0

    DL_SYSCTL_setBORThreshold(DL_SYSCTL_BOR_THRESHOLD_LEVEL_0);

 

   

       DL_SYSCTL_setSYSOSCFreq(DL_SYSCTL_SYSOSC_FREQ_BASE);

       /* Set default configuration */

       DL_SYSCTL_disableHFXT();

       DL_SYSCTL_disableSYSPLL();

  DL_SYSCTL_enableMFCLK();

      

 

       DL_SYSCTL_setMCLKDivider(DL_SYSCTL_MCLK_DIVIDER_DISABLE);

       DL_SYSCTL_setULPCLKDivider(DL_SYSCTL_ULPCLK_DIV_1);

 

}

SYSCONFIG_WEAK void SYSCFG_DL_TIMER_0_init(void) {

 

    DL_TimerG_setClockConfig(TIMER_0_INST,

        (DL_TimerG_ClockConfig *) &gTIMER_0ClockConfig);

 

    DL_TimerG_initTimerMode(TIMER_0_INST,

        (DL_TimerG_TimerConfig *) &gTIMER_0TimerConfig);

    DL_TimerG_enableInterrupt(TIMER_0_INST , DL_TIMERG_INTERRUPT_ZERO_EVENT);

    DL_TimerG_enableClock(TIMER_0_INST);

}

SYSCONFIG_WEAK void SYSCFG_DL_UART_0_init(void)

{

    DL_UART_Main_setClockConfig(UART_0_INST, (DL_UART_Main_ClockConfig *) &gUART_0ClockConfig);

 

    DL_UART_Main_init(UART_0_INST, (DL_UART_Main_Config *) &gUART_0Config);

    /*

     * Configure baud rate by setting oversampling and baud rate divisors.

     *  Target baud rate: 9600

     *  Actual baud rate: 9598.08

     */

    DL_UART_Main_setOversampling(UART_0_INST, DL_UART_OVERSAMPLING_RATE_16X);

    DL_UART_Main_setBaudRateDivisor(UART_0_INST, UART_0_IBRD_4_MHZ_9600_BAUD, UART_0_FBRD_4_MHZ_9600_BAUD);

    /* Configure Interrupts */

    DL_UART_Main_enableInterrupt(UART_0_INST,

                                 DL_UART_MAIN_INTERRUPT_RX);

    DL_UART_Main_enable(UART_0_INST);

}

四、工作画面

开机LOGO画面:

控制系统画面与连接实物图:

五、总结

实现了项目优化空间扩展,在现有项目的基础上,进一步探索和优化可以显著提升系统的功能性和实用性。

实现了模块化扩展接口,设计统一的模块接口标准,通过GPIO、IIC或串口,使得不同类型的从机模块(传感器模块、执行器模块等)能够轻松通信接入系统,增强系统的可扩展性和灵活性。

利用动态模块管理,实现一个模块管理器,能够动态地识别、配置和管理接入的从机模块,包括模块的地址分配、类型识别、参数配置等,从而支持更复杂的系统架构。

基于现有通信接口(IIC),设计并实现一套自定义的通信协议,以提高数据传输效率和数据安全性。

探索使用轻量级机器学习算法对采集到的数据进行实时分析,异常检测、趋势预测等,实现系统的智能化水平。

集成多种传感器,除了温度检测外,还可以增加集成湿度、光照、气压、加速度等多种传感器,实现多维度的环境感知。

传感器数据融合,通过多传感器数据融合技术,提高环境分析的准确性,为决策提供更全面的信息支持。

用户界面与交互,添加显示屏模块,实时显示系统状态和监测数据,提高用户体验。

 

六、心得体会深化

在回顾项目经历时,除了对技术细节的总结,还可以从以下几个方面深化心得体会:

问题解决能力:分享在调试过程中遇到的难题及解决方法,反思如何更有效地排查和解决问题。

持续学习与创新:鼓励持续学习新技术、新工具,以及如何在项目中勇于创新,尝试新的解决方案。

职业规划与展望:结合项目经验,思考未来在嵌入式系统、物联网等领域的职业规划和发展方向和硬件技术水平的更加深层次的提升与进步。

全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法