你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-U083RC评测】驱动OLED模组显示

[复制链接]
马晓天 发布时间:2024-6-20 16:20
  STM32U0是意法半导体(STMicroelectronics)推出的新一代超低功耗入门级微控制器(MCU),该系列基于高效的32位Arm Cortex-M0+核心构建,具备多种显著的特点和优势。1. 低功耗特性
  • STM32U0系列MCU的设计重点在于能源效率,具有多种省电模式,如停止、待机和关机模式,在闲置阶段显著减少功耗。
  • 设备在VBAT模式下消耗130 nA电流,在关机模式下为16 nA,在运行模式下是52 uA/MHz。
2. 强大的性能
  • STM32U0系列MCU最高可运行至56 MHz频率,具备自适应实时存储器加速器(ART Accelerator),利用1-KB指令缓存实现从闪存中0-等待状态的执行。
  • 该系列还配备了最多64 KB的Flash存储器和12 KB的SRAM,确保足够的存储空间。
3. 丰富的外设和接口
  • STM32U0系列包括各种通信接口,如USARTs/LPUARTs、I2Cs和SPIs,为串行通讯提供丰富选项。
  • 该系列还具有丰富的模拟外设,包括0.4微秒转换时间的12-bit ADC、12-bit DAC、通用运算放大器和超低功耗比较器。
4. 先进的安全功能
  • STM32U0系列MCU集成了先进的安全功能,包括基于硬件的读出保护、安全启动、五个被动防篡改引脚和客户代码保护。
5. 生态支持
  • 意法半导体预计STM32U0系列MCU将被广泛应用于物联网部署、智能传感器和消费电子产品等领域。
  • STM32Cube MCU Package for STM32U0系列提供了完整的软件开发工具和支持,包括STM32CubeMX图形化软件配置工具、STM32Cube硬件抽象层(HAL)和低层(LL)API等。
       STM32U0系列MCU以其低功耗、高性能、丰富的外设和接口、先进的安全功能以及广泛的应用场景等特点,成为节能型嵌入式系统和应用设计的理想选择。

   STM32U0的IIC 是一个重要的通信接口,该系列嵌入了四个I2C外围设备。I2C总线接口处理微控制器和串行I2C总线之间的通信。它控制着所有I2C总线特定的排序、协议、仲裁和定时。
I2C外围设备的特点:
•I2C总线规范和用户手册第5版兼容性:
–从和主模式,多主功能
–标准模式(Sm),比特率高达100 kbit/s
–快速模式(Fm),比特率高达400 kbit/s
–快速模式Plus(Fm+),具有高达1 Mbit/s的比特率和额外的输出驱动器I/O
–7位和10位寻址模式,多个7位从地址
–可编程设置和保持时间
–时钟拉伸
•独立时钟:独立时钟源的选择,允许I2C通信速度
独立于PCLK重新编程
•地址匹配时从停止模式唤醒
•可编程模拟和数字噪声滤波器
•具有DMA功能的1字节缓冲区
01.jpg

02.jpg

下面进行IIC驱动 OLED程序测试
10.jpg


11.jpg


  1. static void MX_I2C1_Init(void)
  2. {

  3.   /* USER CODE BEGIN I2C1_Init 0 */

  4.   /* USER CODE END I2C1_Init 0 */

  5.   /* USER CODE BEGIN I2C1_Init 1 */

  6.   /* USER CODE END I2C1_Init 1 */
  7.   hi2c1.Instance = I2C1;
  8.   hi2c1.Init.Timing = 0x20303E5D;
  9.   hi2c1.Init.OwnAddress1 = 0;
  10.   hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  11.   hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  12.   hi2c1.Init.OwnAddress2 = 0;
  13.   hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
  14.   hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  15.   hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  16.   if (HAL_I2C_Init(&hi2c1) != HAL_OK)
  17.   {
  18.     Error_Handler();
  19.   }

  20.   /** Configure Analogue filter
  21.   */
  22.   if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
  23.   {
  24.     Error_Handler();
  25.   }

  26.   /** Configure Digital filter
  27.   */
  28.   if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK)
  29.   {
  30.     Error_Handler();
  31.   }
  32.   /* USER CODE BEGIN I2C1_Init 2 */

  33.   /* USER CODE END I2C1_Init 2 */

  34. }
复制代码
  1. // 发送一个字节到指定的 I2C 设备地址  
  2. HAL_StatusTypeDef I2C_WriteByte(uint16_t DevAddress, uint8_t Reg, uint8_t Value)  
  3. {  
  4.     HAL_StatusTypeDef status = HAL_OK;  
  5.   
  6.     // 生成起始条件  
  7.     status = HAL_I2C_Master_Transmit(&hi2c1, DevAddress << 1, &Reg, 1, HAL_MAX_DELAY);  
  8.     if (status != HAL_OK)  
  9.     {  
  10.         return status;  
  11.     }  
  12.   
  13.     // 写入数据  
  14.     status = HAL_I2C_Mem_Write(&hi2c1, DevAddress << 1, Reg, I2C_MEMADD_SIZE_8BIT, &Value, 1, HAL_MAX_DELAY);  
  15.   
  16.     return status;  
  17. }  
  18.   
  19. // 从指定的 I2C 设备地址读取一个字节  
  20. HAL_StatusTypeDef I2C_ReadByte(uint16_t DevAddress, uint8_t Reg, uint8_t *pData)  
  21. {  
  22.     HAL_StatusTypeDef status = HAL_OK;  
  23.   
  24.     // 生成起始条件并写入寄存器地址  
  25.     status = HAL_I2C_Master_Transmit(&hi2c1, DevAddress << 1, &Reg, 1, HAL_MAX_DELAY);  
  26.     if (status != HAL_OK)  
  27.     {  
  28.         return status;  
  29.     }  
  30.   
  31.     // 读取数据  
  32.     status = HAL_I2C_Mem_Read(&hi2c1, DevAddress << 1, Reg, I2C_MEMADD_SIZE_8BIT, pData, 1, HAL_MAX_DELAY);  
  33.   
  34.     return status;  
  35. }  
  36.   
复制代码
main
  1. int main(void)
  2. {
  3.                 u8 t;
  4.                 HAL_Init();
  5.                 SystemClock_Config();
  6.                 MX_GPIO_Init();
  7.     HAL_Delay(100);
  8.                 OLED_Init();                        //初始化OLED  
  9.    HAL_Delay(100);
  10.                 OLED_Clear()  ;
  11.                 t=' ';
  12.                 OLED_ShowCHinese(0,0,0);//
  13.                                 OLED_ShowCHinese(18,0,1);//
  14.                 OLED_ShowCHinese(36,0,2);//
  15.                 OLED_ShowCHinese(54,0,3);//
  16.                 OLED_ShowCHinese(72,0,4);//
  17.                 OLED_ShowCHinese(90,0,5);//
  18.                 OLED_ShowCHinese(108,0,6);//
  19.   while (1)
  20.   {
  21.                 OLED_Clear();
  22.                 OLED_ShowCHinese(0,0,0);//
  23.                 OLED_ShowCHinese(18,0,1);//
  24.                 OLED_ShowCHinese(36,0,2);//
  25.                 OLED_ShowCHinese(54,0,3);//
  26.                 OLED_ShowCHinese(72,0,4);//
  27.                 OLED_ShowCHinese(90,0,5);//
  28.                 OLED_ShowCHinese(108,0,6);//
  29.                 OLED_ShowString(6,3,"I LOVE STM32U0",16);
  30.                 //OLED_ShowString(8,2,"ZHONGJINGYUAN");  
  31.          //        OLED_ShowString(20,4,"2014/05/01");  
  32.                 OLED_ShowString(0,6,"ASCII:",16);  
  33.                 OLED_ShowString(63,6,"CODE:",16);  
  34.                 OLED_ShowChar(48,6,t,16);//显示ASCII字符          
  35.                 t++;
  36.                 if(t>'~')t=' ';
  37.                 OLED_ShowNum(103,6,t,3,16);//显示ASCII字符的码值        
  38.                         HAL_Delay(300);
  39.                 HAL_Delay(300);

  40.                                         HAL_Delay(300);
  41.                 HAL_Delay(300);
  42.                 HAL_Delay(300);
  43.                 OLED_DrawBMP(0,0,128,8,BMP1);  //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
  44.                 HAL_Delay(300);
  45.                 HAL_Delay(300);
  46.                 HAL_Delay(300);
  47.                 HAL_Delay(300);
  48. ////                OLED_DrawBMP(0,0,128,8,BMP1);
  49. //                HAL_Delay(300);
  50. //                HAL_Delay(300);
  51. //                HAL_Delay(300);
  52. //                HAL_Delay(300);

  53.   }
  54.   /* USER CODE END 3 */
  55. }
复制代码
效果:
12.jpg

5.jpg


收藏 评论0 发布时间:2024-6-20 16:20

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版