[AT32L021] 【AT-START-L021测评】OLED显示

[复制链接]
5300|23
 楼主| meiyaolei 发表于 2024-12-31 23:02 | 显示全部楼层 |阅读模式
本帖最后由 meiyaolei 于 2024-12-31 23:03 编辑

OLED引脚说明

GND:电源地,连接电源负极。
VCC:电源正极,提供2.2V~5.5V的电压。
SCL(D0):时钟引脚,用于I²C通信的时钟信号。
SDA(D1):数据引脚,用于I²C通信的数据信号。


在AT32的初始化代码中,需要配置I²C的时钟频率、地址等参数。
在配置好参数后,需要初始化I²C硬件,使其进入工作状态。
根据OLED屏幕的通信协议,编写I²C通信代码,包括发送命令、发送数据等操作。
在编写好代码后,需要进行调试和测试,确保I²C通信能够正常工作,并且OLED屏幕能够正确显示内容。

I2C框图:
491396774073154626.png
时序:
I2C 内核由I2C_CLK 提供时钟,I2C_CLK 由PCLK1 提供,PCLK1 周期需满足小于4/3 SCL 周期。
通过I2C_CLKCTRL 寄存器的各个位,配置各个时序。
— DIV[7: 0]: I2C时钟分频;
— SDAD[3: 0]:数据保持时间( tHD;DAT) ;
— SCLD[3:0]:数据建立时间( tSU;DAT) ;
— SCLH[7:0]:SCL高电平时间;
— SCLL[7: 0]:SCL低电平时间。
1735657338070.jpg

软件部分:
该部分是硬件IIC的驱动宏定义部分:

  1. #define I2Cx_ADDRESS                     0xA0

  2. #define I2Cx_PORT                        I2C1
  3. #define I2Cx_CLK                         CRM_I2C1_PERIPH_CLOCK
  4. #define I2Cx_DMA                         DMA1
  5. #define I2Cx_DMA_CLK                     CRM_DMA1_PERIPH_CLOCK

  6. #define I2Cx_SCL_GPIO_CLK                CRM_GPIOB_PERIPH_CLOCK
  7. #define I2Cx_SCL_GPIO_PIN                GPIO_PINS_6
  8. #define I2Cx_SCL_GPIO_PinsSource         GPIO_PINS_SOURCE6
  9. #define I2Cx_SCL_GPIO_PORT               GPIOB
  10. #define I2Cx_SCL_GPIO_MUX                GPIO_MUX_1

  11. #define I2Cx_SDA_GPIO_CLK                CRM_GPIOB_PERIPH_CLOCK
  12. #define I2Cx_SDA_GPIO_PIN                GPIO_PINS_7
  13. #define I2Cx_SDA_GPIO_PinsSource         GPIO_PINS_SOURCE7
  14. #define I2Cx_SDA_GPIO_PORT               GPIOB
  15. #define I2Cx_SDA_GPIO_MUX                GPIO_MUX_1
硬件IIC驱动部分:
  1. void i2c_lowlevel_init(i2c_handle_type* hi2c)
  2. {
  3.   gpio_init_type gpio_init_structure;

  4.   if(hi2c->i2cx == I2Cx_PORT)
  5.   {
  6.     /* i2c periph clock enable */
  7.     crm_periph_clock_enable(I2Cx_CLK, TRUE);
  8.     crm_periph_clock_enable(I2Cx_SCL_GPIO_CLK, TRUE);
  9.     crm_periph_clock_enable(I2Cx_SDA_GPIO_CLK, TRUE);

  10.     /* gpio configuration */
  11.     gpio_pin_mux_config(I2Cx_SCL_GPIO_PORT, I2Cx_SCL_GPIO_PinsSource, I2Cx_SCL_GPIO_MUX);

  12.     gpio_pin_mux_config(I2Cx_SDA_GPIO_PORT, I2Cx_SDA_GPIO_PinsSource, I2Cx_SDA_GPIO_MUX);

  13.     /* configure i2c pins: scl */
  14.     gpio_init_structure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  15.     gpio_init_structure.gpio_mode           = GPIO_MODE_MUX;
  16.     gpio_init_structure.gpio_out_type       = GPIO_OUTPUT_OPEN_DRAIN;
  17.     gpio_init_structure.gpio_pull           = GPIO_PULL_NONE;

  18.     gpio_init_structure.gpio_pins           = I2Cx_SCL_GPIO_PIN;
  19.     gpio_init(I2Cx_SCL_GPIO_PORT, &gpio_init_structure);

  20.     /* configure i2c pins: sda */
  21.     gpio_init_structure.gpio_pins           = I2Cx_SDA_GPIO_PIN;
  22.     gpio_init(I2Cx_SDA_GPIO_PORT, &gpio_init_structure);

  23.     /* config i2c */
  24.     i2c_init(hi2c->i2cx, 0x0F, I2Cx_CLKCTRL);

  25.     i2c_own_address1_set(hi2c->i2cx, I2C_ADDRESS_MODE_7BIT, I2Cx_ADDRESS);
  26.   }
  27. }



实际输出结果:

6fbfb3a3183b72ce0f619c662b0d32e.jpg

caigang13 发表于 2025-1-2 12:58 来自手机 | 显示全部楼层
这个PCB看起来好空,做小一点好看些。
rosemoore 发表于 2025-1-3 20:48 | 显示全部楼层
帖子详细介绍了AT-START-L021开发板及其OLED显示功能,涵盖了硬件规格、软件配置和实际操作等多个方面。
mickit 发表于 2025-1-3 21:35 | 显示全部楼层
对于想要在 AT-START-L021 开发板上实现 OLED 显示的读者来说,这些内容具有很强的指导意义,能够帮助他们快速上手并进行实际操作
belindagraham 发表于 2025-1-3 23:06 | 显示全部楼层
帖子中配有丰富的图片和视频,直观展示了开发板的外观、连接方式和OLED显示效果。
yorkbarney 发表于 2025-1-4 02:11 | 显示全部楼层
对于那些想要在实际项目中应用OLED显示技术的开发者来说非常有用。
pentruman 发表于 2025-1-4 07:53 | 显示全部楼层
按照从硬件连接到软件配置再到调试的顺序进行阐述,层次分明,使读者能够清晰地了解在 AT-START-L021 上实现 OLED 显示的整个流程。
abotomson 发表于 2025-1-5 09:10 | 显示全部楼层
OLED显示器能够实现极高的对比度,暗部表现特别优秀,可以实现真正的纯黑。这是因为每个像素都可以独立发光,无需依赖背光源,使得黑色部分显得深邃而真实。
iyoum 发表于 2025-1-5 12:59 | 显示全部楼层
官方提供了大量的示例代码和教程,帮助开发者理解如何使用OLED显示功能。
jtracy3 发表于 2025-1-5 15:51 | 显示全部楼层
通过提供详细的代码和说明, 为读者提供了一个良好的学习和实践平台。
hilahope 发表于 2025-1-5 16:18 | 显示全部楼层
详细介绍了 OLED 引脚说明,包括 GND、VCC、SCL、SDA 等引脚的功能,以及在 AT32 中初始化 I²C 的相关参数配置和硬件初始化方法,还提及了根据 OLED 屏幕通信协议编写 I²C 通信代码的要点
uytyu 发表于 2025-1-5 18:00 | 显示全部楼层
内置了针对OLED显示的驱动程序,简化了显示内容的编程过程。
earlmax 发表于 2025-1-5 18:25 | 显示全部楼层
如何通过I2C/IIC接口驱动OLED屏幕,这涉及到硬件和软件的配置,以及如何编写和调试相关的代码。
eefas 发表于 2025-1-5 18:50 | 显示全部楼层
详细介绍了如何使用AT32L021开发板通过I2C硬件方式驱动OLED显示屏。从硬件接口的连接、软件配置到具体的显示函数实现,都进行了详细的说明。
tabmone 发表于 2025-1-5 20:28 | 显示全部楼层
对于初学者来说,这样的详细介绍非常有帮助,能够快速了解和上手这款开发板。
loutin 发表于 2025-1-5 20:51 | 显示全部楼层
这对于嵌入式开发者和爱好者来说是一个宝贵的资源,因为它不仅提供了技术细节,还可能包含了一些常见问题的解决方案和最佳实践。
minzisc 发表于 2025-1-7 13:05 | 显示全部楼层
帮助开发者理解和掌握在AT-START-L021开发板上使用OLED显示的技术。
juliestephen 发表于 2025-1-7 20:12 | 显示全部楼层
提供了完善的开发环境和工具链,支持多种编程语言和框架,便于开发者快速上手
chenjun89 发表于 2025-1-7 20:39 来自手机 | 显示全部楼层
现在这种12864分辨率的OLED都打成白菜价了
timfordlare 发表于 2025-1-7 23:19 | 显示全部楼层
提供了OLED显示屏初始化的完整代码示例,以及清屏、显示字符串等功能的实现方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:工程师
简介:超越自我,为设计激发灵感和想象。

263

主题

836

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部