tag 标签: MM32L0136C7P

相关博文
  • 热度 11
    2022-12-30 18:09
    2201 次阅读|
    0 个评论
    【灵动微电子 L0136 温控器/遥控器应用】+温湿度检测试验
    本次试用的是灵动微电子 EVB-L0136 开发板: 板载 MM32L0136C7P MCU,Arm Cortex-M0+ 内核 4 个侧贴按键、4个 LED 外扩 UART、SPI、Micro-USB 接口,以及 UART、I2C、SPI 接口 板载段码式液晶驱动 SLCD 屏 I2S Speaker 据说EVB-L0136开发板不支持ISP,专门买了一个PWLINK2用于程序的下载和调试,买了饺子需要搭配买点好醋的感觉。还好用起来不错,有了这个开发很方便。EVB-L0136开发板板载了一个20脚标准的JTAG,SWD只需要4根:PA13,PA14,GND,VDD,引出JLINK接口。 简单设置一下keil开发环境: MM32L0136C7P MCU主打的是低功耗特性:多种低功耗模式,包括:低功耗运行(Low Power Run)、睡眠(Sleep)、低功耗睡眠(Low Power Sleep)、停机(Stop)、深度停机(Deep Stop)、 待机(Standby)和关机(Shutdown)模式。 本次希望它能用到智能农业大棚的温湿度采集和控制方向,利用低功耗特性,持续采集温湿度数据,通过无线通道实现数据的掌握和决策。采集数据通过HDT11传感器实现: DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃。 void RH(void) { //主机拉低18ms P2_0=0; Delay(180); P2_0=1; //总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); //主机设为输入 判断从机响应信号 P2_0=1; //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!P2_0) //T ! { U8FLAG=2; //判断从机是否发出 80us 的低电平响应信号是否结束 while((!P2_0)&&U8FLAG++); U8FLAG=2; //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((P2_0)&&U8FLAG++); //数据接收状态 COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=1; //数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; }//fi }//fi 为了将采集的温湿度数据传送出去,需要利用串口将数值通过esp8266透传,实现远程的环境数据采集和决策操作。 串口初始化: void app_uart_init(void) { UART_Init_Type uart_init; uart_init.ClockFreqHz = BOARD_DEBUG_UART_FREQ; uart_init.BaudRate = BOARD_DEBUG_UART_BAUDRATE; uart_init.WordLength = UART_WordLength_8b; uart_init.StopBits = UART_StopBits_1; uart_init.Parity = UART_Parity_None; uart_init.XferMode = UART_XferMode_RxTx; uart_init.HwFlowControl = UART_HwFlowControl_None; UART_Init(BOARD_DEBUG_UART_PORT, &uart_init); UART_Enable(BOARD_DEBUG_UART_PORT, true); } 串口数据收发: void app_uart_putchar(uint8_t c) { while ( 0u == (UART_STATUS_TX_EMPTY & UART_GetStatus(BOARD_DEBUG_UART_PORT)) ) {} UART_PutData(BOARD_DEBUG_UART_PORT, (uint8_t)(c)); } uint8_t app_uart_getchar(void) { while ( 0u == (UART_STATUS_RX_DONE & UART_GetStatus(BOARD_DEBUG_UART_PORT)) ) {} return UART_GetData(BOARD_DEBUG_UART_PORT); } void app_uart_putstr(uint8_t *str) { while ((*str) != '\0') { app_uart_putchar(*str); str++; } } 可惜灵动微未提供液晶板详细的显示驱动demo,本想实现温湿度实时显示的功能还未实现,在进一步探索中,希望能搞出来,别可惜了这颗板载的液晶屏设备。