0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

复旦微FM33LG048软件I2C驱动OLED的demo 帮助新手快速从STM32上手FM33

大大通 2023-11-11 08:27 次阅读

demo任务:利用复旦微FM33LG048外设I2C驱动OLED显示

demo目的:通过demo熟悉复旦微的I2C、GPIO外设,帮助复旦微的新学习者快速了解复旦微库函数

demo设备:MCU——FM33LG048;OLED——四针脚OLED,型号:JMD096D.

移植教程

#include "main.h"

#include "fm33_assert.h"

#include "OLED.h"

/*********************************************主函数*******************************************/

int main(void)

{

/* Initialize FL Driver Library */

FL_Init();

/* Configure the system clock */

MF_Clock_Init();

OLED_Init(); // 初始化OLED

OLED_ShowString(2,1,"hello"); //显示hello字符串

}

FL_Init();在复旦微官方例程中已经给出,未修改任何代码,故这里不再赘述。

MF_Clock_Init();主要用于初始化各外设以及配置系统时钟,需要注意,为了方便移植OLED,将MF_Clock_Init()中GPIO初始化相关代码移动到OLED.c文件中。

demo所用函数如下,直观展示了与SMT32的对比,方便新手快速从SMT32入手复旦微FM33。

/******************************************************复旦微GPIO初始化************************************************************************************/

void MF_I2C_MASTER_Init(void)void MF_I2C_MASTER_Init(void)

{

FL_GPIO_InitTypeDef GPIO_InitStruct;

FL_I2C_MasterMode_InitTypeDef I2C_InitStruct;

/* PA11 I2C_SCL */

GPIO_InitStruct.pin = FL_GPIO_PIN_11;

GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;

GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;

GPIO_InitStruct.pull = FL_DISABLE;

GPIO_InitStruct.remapPin = FL_DISABLE;

GPIO_InitStruct.analogSwitch = FL_DISABLE;

FL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/* PA12 I2C_SDA */

GPIO_InitStruct.pin = FL_GPIO_PIN_12;

GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;

GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;

GPIO_InitStruct.pull = FL_DISABLE;

GPIO_InitStruct.remapPin = FL_DISABLE;

GPIO_InitStruct.analogSwitch = FL_DISABLE;

FL_GPIO_Init(GPIOA, &GPIO_InitStruct);

I2C_InitStruct.clockSource = FL_CMU_I2C_CLK_SOURCE_RCHF;

I2C_InitStruct.baudRate = 100000;

FL_I2C_MasterMode_Init(I2C, &I2C_InitStruct); }

以下是STM32的GPIO初始化

/*****************************************************SMT32 GPIO初始化**********************************************/

void OLED_I2C_Init(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_Init(GPIOB, &GPIO_InitStructure);

OLED_W_SCL(1);

OLED_W_SDA(1);

}

需要注意,在复旦微库函数中,没有STM32的GPIO_WriteBit(*GPIOx,GPIO_Pin_x,Value)对应的库函数,需要自己封装。

以下给出两者代码不同之处

/**************************************STM32向特定引脚写入0,1数据********************************************/

#define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))

#define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))

BitAction为枚举类型,只能是0或1

/*************************************复旦微向特定引脚写入0,1数据*********************************************/

void OLED_W_SCL(uint8_t x)

{ if(x==0)

{ FL_GPIO_ResetOutputPin(GPIOA,FL_GPIO_PIN_11); }

else

{ FL_GPIO_SetOutputPin(GPIOA,FL_GPIO_PIN_11); } }

void OLED_W_SDA(uint8_t x)

{ if(x==0)

{ FL_GPIO_ResetOutputPin(GPIOA,FL_GPIO_PIN_12); }

else

{ FL_GPIO_SetOutputPin(GPIOA,FL_GPIO_PIN_12); }}

完整代码在附件。

其他部分复旦微FM33与SMT32高度类似,不再展示。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    118

    文章

    5986

    浏览量

    221464
  • STM32
    +关注

    关注

    2239

    文章

    10672

    浏览量

    348768
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1346

    浏览量

    120825
  • GPIO
    +关注

    关注

    16

    文章

    1133

    浏览量

    50573
收藏 人收藏

    评论

    相关推荐

    复旦微MCU 电机应用 | 基于FM33LF0xx系列的线性驱动应用

    复旦微MCU电机应用|基于FM33LF0xx系列线性驱动应用-电动床前言线性驱动作为电动执行器在智能家居、智慧办公、汽车部件、医疗器械、工业自动化等领域都具有广泛应用。它将电机的旋转运
    的头像 发表于 01-20 08:28 387次阅读
    <b class='flag-5'>复旦</b>微MCU 电机应用 | 基于<b class='flag-5'>FM33</b>LF0xx系列的线性<b class='flag-5'>驱动</b>应用

    复旦微汽车MCU团队推出触摸阅读灯参考设计

    广泛应用在中控面板、方向盘开关、电容触摸门把手、侧壁灯、阅读顶灯等触摸场景。为帮助客户快速缩短开发周期,复旦微基于FM33FT0xxA系列汽车MCU,开发完成了触摸阅读
    的头像 发表于 12-28 08:28 291次阅读
    <b class='flag-5'>复旦</b>微汽车MCU团队推出触摸阅读灯参考设计

    FUDAN 复旦微电子 MCU-汽车电子| 基于FM33FT0xxA的触摸设计方案

    基于FM33FT0xxA的触摸设计方案是一种应用于汽车电子领域的触摸方案,主要用于汽车阅读顶灯、空调面板、中控面板的触摸检测。
    的头像 发表于 11-13 10:27 3725次阅读
    FUDAN <b class='flag-5'>复旦</b>微电子 MCU-汽车电子| 基于<b class='flag-5'>FM33</b>FT0xxA的触摸设计方案

    基于复旦微电子FM33LE026物联水表设计

    基于复旦微电子FM33LE026的物联水表在采用125K射频卡的基础上同时具有NB和蓝牙通讯。拥有强磁报警、电池欠压、欠费透支等功能,液晶可以实时显示水表用量、剩余金额、信号强度以及用户信息等数据
    的头像 发表于 11-10 08:28 780次阅读
    基于<b class='flag-5'>复旦</b>微电子<b class='flag-5'>FM33</b>LE026物联水表设计

    基于复旦微电子通用MCU FM33LC046U的螺栓压紧力监测装置

    基于复旦微电子通用MCU FM33LC046U的螺栓压紧力监测装置
    的头像 发表于 10-31 16:49 394次阅读
    基于<b class='flag-5'>复旦</b>微电子通用MCU <b class='flag-5'>FM33</b>LC046U的螺栓压紧力监测装置

    复旦微电子又添新家族:FM33FR0xx系列MCU

    复旦微电子又添新家族:FM33FR0xx系列MCU
    的头像 发表于 09-26 16:25 461次阅读
    <b class='flag-5'>复旦</b>微电子又添新家族:<b class='flag-5'>FM33</b>FR0xx系列MCU

    FM33LC0XX开发注意事项

    电子发烧友网站提供《FM33LC0XX开发注意事项.pdf》资料免费下载
    发表于 09-20 09:59 1次下载
    <b class='flag-5'>FM33</b>LC0XX开发注意事项

    STM32F3 I2C模块介绍

    I2C规范版本03兼容性 •SMBus 2.0硬件支持 •PMBus 1.1兼容性 •多主机和机功能 •控制所有I²C总线特定的排序、协议、仲裁和定时 •标准、
    发表于 09-12 06:22

    FM33LG0xx系列RTCB调校AN

    FM33LG0xx系列 RTCB调校AN
    发表于 08-28 14:44 0次下载

    FM33LE0低功耗MCU芯片产品说明书

    FM33LE0系列产品说明书V2.1 FM33L .E0的主要特性如下: ●宽电压范围: 1.8~5.5V ●工作温度 范围: 40C~+85C ●处理器内核
    发表于 08-25 16:04 5次下载

    复旦微电推出三款MCU新品:FM33FG0xxA、FM33LF0xx、 FM33FK50xx系列

    本次发布的FM33FG0xxA系列MCU是针对汽车电子市场的全新产品,在电路设计上符合ISO26262标准,给用户系统安全设计保驾护航。
    发表于 06-29 15:51 742次阅读
    <b class='flag-5'>复旦</b>微电推出三款MCU新品:<b class='flag-5'>FM33</b>FG0xxA、<b class='flag-5'>FM33</b>LF0xx、 <b class='flag-5'>FM33</b>FK50xx系列

    如何驱动I2C接口的OLED屏?

    前面我们介绍了驱动SPI接口LCD5110显示屏的方法,这次介绍一下如何驱动I2C接口的OLED屏,该OLED屏为0.91寸单色屏。
    发表于 06-27 06:37

    复旦微MCU命名规则及选型指南

    复旦微MCU产品共八款,其中应用最多有四款:FM33LE0xx,FM33LC0xx,FM33LG0xx,FM33FR0下表为命名规则
    的头像 发表于 06-20 16:39 1036次阅读
    <b class='flag-5'>复旦</b>微MCU命名规则及选型指南

    复旦微电首款面向汽车应用的FM33LGOxxA系列MCU产品

    FM33LGOxxA系列作为复旦微电推出的首款面向汽车应用的MCU产品,拥有高可靠电路设计,具备超低功耗和安全特性,已经通过AEC-Q100认证。
    发表于 05-22 14:49 270次阅读
    <b class='flag-5'>复旦</b>微电首款面向汽车应用的<b class='flag-5'>FM33</b>LGOxxA系列MCU产品

    复旦微电推出FM25/FM29系列SLC NAND存储器新品

    下一阶段,复旦微电全新FM24LN、FM24N系列EEPROM存储器全系列产品将覆盖64Kbit~2Mbit容量,FM25N将补全64Kbit~4Mbit全系列容量。
    发表于 05-05 11:23 427次阅读
    <b class='flag-5'>复旦</b>微电推出<b class='flag-5'>FM</b>25/<b class='flag-5'>FM</b>29系列SLC NAND存储器新品