0 【AT-START-L021测评】OLED显示 - - 21ic电子技术开发论坛
打印
[AT32L021]

【AT-START-L021测评】OLED显示

[复制链接]
322|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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框图:

时序:
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低电平时间。


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

#define I2Cx_ADDRESS                     0xA0

#define I2Cx_PORT                        I2C1
#define I2Cx_CLK                         CRM_I2C1_PERIPH_CLOCK
#define I2Cx_DMA                         DMA1
#define I2Cx_DMA_CLK                     CRM_DMA1_PERIPH_CLOCK

#define I2Cx_SCL_GPIO_CLK                CRM_GPIOB_PERIPH_CLOCK
#define I2Cx_SCL_GPIO_PIN                GPIO_PINS_6
#define I2Cx_SCL_GPIO_PinsSource         GPIO_PINS_SOURCE6
#define I2Cx_SCL_GPIO_PORT               GPIOB
#define I2Cx_SCL_GPIO_MUX                GPIO_MUX_1

#define I2Cx_SDA_GPIO_CLK                CRM_GPIOB_PERIPH_CLOCK
#define I2Cx_SDA_GPIO_PIN                GPIO_PINS_7
#define I2Cx_SDA_GPIO_PinsSource         GPIO_PINS_SOURCE7
#define I2Cx_SDA_GPIO_PORT               GPIOB
#define I2Cx_SDA_GPIO_MUX                GPIO_MUX_1
硬件IIC驱动部分:
void i2c_lowlevel_init(i2c_handle_type* hi2c)
{
  gpio_init_type gpio_init_structure;

  if(hi2c->i2cx == I2Cx_PORT)
  {
    /* i2c periph clock enable */
    crm_periph_clock_enable(I2Cx_CLK, TRUE);
    crm_periph_clock_enable(I2Cx_SCL_GPIO_CLK, TRUE);
    crm_periph_clock_enable(I2Cx_SDA_GPIO_CLK, TRUE);

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

    gpio_pin_mux_config(I2Cx_SDA_GPIO_PORT, I2Cx_SDA_GPIO_PinsSource, I2Cx_SDA_GPIO_MUX);

    /* configure i2c pins: scl */
    gpio_init_structure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
    gpio_init_structure.gpio_mode           = GPIO_MODE_MUX;
    gpio_init_structure.gpio_out_type       = GPIO_OUTPUT_OPEN_DRAIN;
    gpio_init_structure.gpio_pull           = GPIO_PULL_NONE;

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

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

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

    i2c_own_address1_set(hi2c->i2cx, I2C_ADDRESS_MODE_7BIT, I2Cx_ADDRESS);
  }
}



实际输出结果:



使用特权

评论回复
沙发
caigang13| | 2025-1-2 12:58 | 只看该作者
这个PCB看起来好空,做小一点好看些。

使用特权

评论回复
板凳
rosemoore| | 2025-1-3 20:48 | 只看该作者
帖子详细介绍了AT-START-L021开发板及其OLED显示功能,涵盖了硬件规格、软件配置和实际操作等多个方面。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

187

主题

698

帖子

4

粉丝