tag 标签: WL55

相关博文
  • 2025-5-25 20:42
    55 次阅读|
    0 个评论
    【意法半导体 STM32 WL55】5、IIC的应用
    IIC作为一种常用的串行接口,广泛应用于传感器驱动等领域。本次项目利用IIC接口驱动一款Seeed品牌的小型OLED显示模块,该模块具备128x64像素的分辨率及0.96英寸的屏幕尺寸,属于单色显示范畴,并采用SSD1315作为驱动芯片(尽管SSD1306更常见)。OLED的发光原理与LCD截然不同,需经过初始化流程方可正常显示,此特性类似于IPS彩色液晶屏幕。SSD1315是一款集成CMOS OLED/PLED驱动控制芯片,能够从其内置的128x64像素GDDRAM中直接读取并显示数据。在硬件连接上,采用SSD1315作为控制核心的OLED显示屏存在两种配置方式:启用DC引脚与不启用DC引脚。鉴于目标模块接口限制(仅包含IIC通信的两根引脚及电源引脚),本项目采用非DC引脚方案,即通过在数据发送前预先传输界定比特的方式,实现对OLED显示屏的控制。 单色显示对于大多数单片机而言,控制上相对充裕,所需资源较少。虽然STM32WL55主攻低功耗,主频只有48M,不过对于驱动这个屏还没什么问题的。 本次设计采用硬件IIC接口,尽管个人倾向于使用IO口模拟方式控制,但硬件IIC的尝试更有意义,毕竟配置硬件IIC的时序控制更加标准,在STM32CubeMX中的配置过程极为简洁: 咱们看一下默认的引脚: 按照当前线序连接设备,启动IIC后,直接就可以,采用常规模式100K的速度,什么都不用配置,初始化也不用像定时器那样需要启动,我们直接用一下进行适配就OK了: void OLED_WR_CMD (uint8_t cmd) { HAL_I2C_Mem_Write (hi2c2 , 0 x78, 0 x00,I2C_MEMADD_SIZE_8BIT,cmd, 1 , 0 x100); } void OLED_WR_DATA (uint8_t data) { HAL_I2C_Mem_Write (hi2c2 , 0 x78, 0 x40,I2C_MEMADD_SIZE_8BIT,data, 1 , 0 x100); } 这里是接口的配置最为关键,其他就都是已经写好的驱动程序就可以了,中景园提供的官方例程对于初始化步骤具有非常好的指导意义。显示操作本身并不复杂,关键在于完成必要的初始化后,执行固定位置的显示指令。鉴于显示区域的局限性,采用英文内容展示能更有效地利用空间,同时保证显示的连贯性和可读性: uint8_t CMD_Data ); } } 接下来我们就在初始化阶段显示内容: OLED_Init (); OLED_Clear (); OLED_ShowString ( 0 , 0 ,"STM32WL55", 12 , 0 ); 请注意,初始化完成后的屏幕将呈现花屏状态,此现象表明显示功能正常。随后需执行清屏操作,将屏幕底色统一设置为单色,非黑即白。接下来进行字符串显示,具体展示内容为“ STM32WL55”,呈现效果如下: 我们展望一下,现在可以说基本的外设用这个M4核都是能完成的,当前的测试开发依然是使用的单核模式进行的,如果要进行无线开发调试就要用双核了,可是LoRa还不想蓝牙、wifi这样的比较常用,很多设备都配备,这就导致了一个尴尬的境地,只有一个板子是没法实现透传的,需要另外一个支持LoRa的板子进行透传测试,这里先留着一个悬念吧,后续我们要找一个透传板子才能进行进一步的测试,比如功率或者距离,这可能需要一段时间以后再进行了。
  • 2025-5-25 13:15
    81 次阅读|
    0 个评论
    【意法半导体 STM32 WL55】4、定时器的妙用
    PWM(脉冲宽度调制)技术通过调控LED的导通时间,即信号周期中的占空比,实现了LED亮度的精细调节,从而巧妙地创造出呼吸灯效果。该技术融合了LED对电流变化的敏感响应特性与人眼的视觉暂留效应,是电子工程领域中的一项经典且极具实用价值的技术。作为深入学习开发板PWM功能与定时器应用的理想切入点,PWM技术通过精确控制占空比,使得LED亮度能够连续、平滑地变化,模拟出如呼吸般自然的亮度循环。实现这一效果的关键在于定时器的精准定时功能,它负责精确控制PWM信号的周期与占空比。通过设定定时器的计数值与重装载值,可以精确确定PWM信号的周期长度,并通过调整周期内输出电平的时间来改变占空比,进而实现对LED亮度的精确控制。 硬件方面用到就是GPIO章节的LED(红灯),我们这次通过定时器的基本定时功能和高级应用PWM实现红灯的呼吸灯效果。 LED_RED配置为TIM2_CH4: 接下来打开定时器2和通道4,并配置为PWM输出: 然后是进行定时器参数的配置: 接下来配置定时器16为基本定时器: 定时10ms,用于修改占空比。 我们在初始化阶段需要启动定时器: HAL_TIM_Base_Start_IT (htim16); HAL_TIM_PWM_Start (htim2,TIM_CHANNEL_4); __HAL_TIM_SetCompare (htim2,TIM_CHANNEL_4, 0 ); 接下来就是软件功能的实现,LED的呼吸灯效果: void HAL_TIM_PeriodElapsedCallback ( TIM_HandleTypeDef *htim ) { if (htim- Instance == TIM16 ) { HAL_IncTick (); if (LED_ChangeFlag == 1 ) { Tim _cnt++; if ( Tim _cnt = 100 ){ __HAL_TIM_SetCompare (htim2, TIM_CHANNEL_4 , Tim _cnt* 1 ); } else if ( Tim _cnt 100 Tim _cnt = 200 ){ __HAL_TIM_SetCompare (htim2, TIM_CHANNEL_4 ,( 200 - Tim _cnt)* 1 ); } else if ( Tim _cnt= 200 ) Tim _cnt = 0 ; } } } 效果如下:
  • 2025-5-25 11:21
    101 次阅读|
    0 个评论
    【意法半导体 STM32 WL55】3、GPIO输入输出测试
    在上一篇章中,我们旨在验证程序的实用性,借助LED(即引脚输出)作为测试媒介。LED与按钮的验证,实质上是对GPIO输入输出功能的实践探索。此开发板在按键与LED控制方面颇为丰富,因此我们选用了三个LED作为输出展示,同时配置了三个用户按键作为输入源,并采用中断机制来实现其功能。接下来,我们的核心关注点在于:如何设计原理图中的硬件配置、如何编写初始化代码、以及在软件层面如何实现预期功能。遵循这一流程,我们将稳步迈向基本目标功能的实现。 一、硬件原理 先看一下原理图方面: 按键: 这里需要注意按键按下的时候对应引脚是低电平的,没有进行外部上拉操作,我们需要再配置的时候实现内部上拉,三个按键的操作模式相同的; LED: 在这里还看不到实际使用的引脚; 结合上图就清晰了,绿灯对应的PB9,红灯对应PB11,蓝灯对应的是PB15,控制模式是相同的都是通过高电平电量。 二、STM32CubeMX配置 接下来我们看一下对应引脚的配置。 按键需要配置为外部中断模式: 同时需要配置为下降沿触发,内部上拉,开启对应的中断: LED需要配置为输出模式: 为了控制的一致性需要根据原理图给与对应的初始电平状态,关闭对应的是低电平。 三、软件设计 接下来就是软件上的功能实现了,主要的内容就是需要我们重写外部中断的回调函数了,中断中可以看到已经处理: 在main.c中重写回调函数,回调函数一般都是弱定义的,根据具体的触发方式进行,本次是通过下降沿触发: void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == B1_Pin) { HAL_GPIO_TogglePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin); } else if(GPIO_Pin == B2_Pin) { HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin); } else if(GPIO_Pin == B3_Pin) { HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin); } } 四、效果展示 本次实现的功能就是通过外部中断采集的按键进行LED的外部翻转,每个按键控制一个LED,效果如下:
  • 2025-5-25 08:51
    86 次阅读|
    0 个评论
    【意法半导体 STM32 WL55】2、配置开发环境并验证
    本次依然使用我们常用的开发方式进行,STM32CubeMX+Keil。一个用于初始化代码生成,一个用于编辑调试。 现在推荐的基本上都是基于HAL库的,基本都要通过STM32CubeMX进行生成,我们使用的是官方开发板,打开软件后首先检查对应的库文件是否安装: 只能说无线的库都不小: 然后选择如下进入: 通过模糊搜索目标开发板,输入“WL55”,出现如下开发板(也可以通过芯片进入): 点入对应的主控芯片可以来到MCU选择界面进行程序生成,点击“Start Project”进行初始程序的建立,这里会选择我们是直接进行单核项目还是双核项目进行初始化,我们前期的测试主要是一些外设,直接进行单核处理就行: 最大主频是48M: 配置工程信息: 我们本次仅仅使用搞一个LED进行工程配置的正确性,使用绿灯的blink的效果: 只是在while中处理: 下载时还会提示STlink的升级提示: 注意不要断了: 接着继续下载查看,效果如下,调试正常: