发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表
打印
[AT32F405]

【AT-START-F405测评】-2- 硬件I2C驱动OLED

[复制链接]
2753|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
YangTwo|  楼主 | 2024-5-15 20:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
上一篇测评【【AT-START-F405测评】-1- I2C扫描设备】使用硬件I2C检测到了总线上的OLED设备,本次使用硬件I2C来驱动这个常见的显示设备。

OLED移植的关键在于下面函数的移植:
void OLED_WR_Byte(uint8_t dat,uint8_t mode)
{       

        i2c_status_type i2c_status;
        uint8_t buff[2] = {0};
        if(mode){
                buff[0] = 0x40;
                buff[1] = dat;
                i2c_status = i2c_master_transmit(&hi2cx, 0x78, buff, 2, 0xFFFFFFF);
                if(i2c_status != I2C_OK){
                        printf("\r\nerror send %d", i2c_status);
                }
        }else{
                buff[0] = 0x00;
                buff[1] = dat;
                i2c_status = i2c_master_transmit(&hi2cx, 0x78, buff, 2, 0xFFFFFFF);
                if(i2c_status != I2C_OK){
                        printf("\r\nerror send %d", i2c_status);
                }
        }

}
其中i2c_master_transmit()是雅特力重新封装的一个便于使用的I2C发送函数,更简洁有好。

主函数中先初始化I2C与OLED,然后扫描I2C设备,最后把扫描结果显示在OLED屏幕上。

int main(void)
{
  

  /* initial system clock */
  system_clock_config();

  /* config nvic priority group */
  nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);

  /* at board initial */
  at32_board_init();
        uart_print_init(115200);

  hi2cx.i2cx = I2Cx_PORT;

  /* i2c config */
  i2c_config(&hi2cx);
        printf("i2c scan example: aim to find the i2c device on the bus\r\n");
       
        main_i2c_scan(I2C_DEVICE_General_ADDRESS_MIN, I2C_DEVICE_General_ADDRESS_MAX);
        OLED_Init();
        OLED_Clear();
  while(1)
  {
                static uint32_t i = 0;
    OLED_ShowString(0,0,"   AT-START-F405",12, 1);
                OLED_ShowString(0,12,"Scaning I2C Device...",12, 1);
                OLED_ShowString(0,24,"I2C Slave 8 bit Addr: ",12, 1);
                OLED_ShowString(0,36,i2cScanResult,12, 1);
                OLED_Refresh();
                printf("\r\n inside while loop %d\r\n", i++);
                delay_ms(1000);
  }
       
  
}

实物结果:


使用特权

评论回复

打赏榜单

ArteryMCU 打赏了 30.00 元 2024-06-07
理由:[F405开发板评测活动]内容优质

沙发
呐咯密密| | 2024-5-21 13:24 | 只看该作者
巨喜欢硬件的IIC

使用特权

评论回复
板凳
问天少年| | 2024-5-23 16:01 | 只看该作者
硬件IIC给赞了

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

92

帖子

1

粉丝