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
    +关注

    关注

    119

    文章

    6198

    浏览量

    224117
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355757
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1484

    浏览量

    123627
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52056
收藏 人收藏

    评论

    相关推荐

    复旦MCU 行业应用 | FM33LF0xx系列MCU在焊机行业应用案例

    :控制电路为模拟电路的传统焊机、同时具有模拟电路和数字电路的半数字化焊机,以及控制电路全为数字电路的全数字化焊机。方案架构半数字焊机产品应用基于FM33LF0
    的头像 发表于 12-09 16:57 171次阅读
    <b class='flag-5'>复旦</b><b class='flag-5'>微</b>MCU 行业应用 | <b class='flag-5'>FM33</b>LF0xx系列MCU在焊机行业应用案例

    VK16K33A存储器映射和多功能LED控制驱动芯片中文手册

    使其适用于多种 LED 应用,包括 LED 模块和显示子系统。VK16K33A通过双向I2C 接口可与大多数微控制器进行通信。L63+204特点:● 工作电压:3V~5.5V● 内部RC 振荡器
    发表于 11-14 16:15 0次下载

    复旦荣获ISO26262:2018功能安全ASIL B产品认证证书

    2024年10月29日,上海复旦微电子集团股份有限公司(简称:“复旦”)荣获ISO26262:2018功能安全产品认证证书(ASILB等级)。这标志着复旦
    的头像 发表于 11-08 01:06 292次阅读
    <b class='flag-5'>复旦</b><b class='flag-5'>微</b>荣获ISO26262:2018功能安全ASIL B产品认证证书

    RISC V的I2C操作

    。tsuData中,1代表10ns;Timeout中,1表示10nstLow和tHigh的1代表10ns10.1.3 软件部分(Risc V)l  I2C通信主要包括以下几个部分:1、主设备发送起始位(Start
    的头像 发表于 11-01 11:06 197次阅读

    昂科烧录器支持FuDanWei复旦微电子的低功耗微控制器FM33FR024

    芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中FuDanWei复旦微电子的低功耗微控制器FM33FR024已经被昂科的通用烧录平台AP8000所支持
    的头像 发表于 10-12 11:29 281次阅读
    昂科烧录器支持FuDanWei<b class='flag-5'>复旦</b>微电子的低功耗微控制器<b class='flag-5'>FM33</b>FR024

    TCA9617A电平转换FM+ I2C总线中继器数据表

    电子发烧友网站提供《TCA9617A电平转换FM+ I2C总线中继器数据表.pdf》资料免费下载
    发表于 07-02 09:46 0次下载
    TCA9617A电平转换<b class='flag-5'>FM</b>+ <b class='flag-5'>I2C</b>总线中继器数据表

    TCA9617B电平转换FM+I2C总线中继器数据表

    电子发烧友网站提供《TCA9617B电平转换FM+I2C总线中继器数据表.pdf》资料免费下载
    发表于 06-19 09:56 0次下载
    TCA9617B电平转换<b class='flag-5'>FM+I2C</b>总线中继器数据表

    赛普拉斯 Cypress 品牌 CY7C1021DV33-10ZSXIT

    63813-SXC CY8C4247LQI-BL483 FM31256-GTR CY7C1041DV33-10ZSXI CY8C21534-24PVXI CY8
    发表于 04-20 16:47

    什么是I2C协议 I2C总线的控制逻辑

    在实际使用过程中,I2C比较容易出现的一个问题就是死锁 ,死锁在I2C中主要表现为:I2C死锁时表现为SCL为高,SDA一直为低。
    发表于 03-12 09:17 1055次阅读
    什么是<b class='flag-5'>I2C</b>协议 <b class='flag-5'>I2C</b>总线的控制逻辑

    GD32 MCU硬件I2C不可靠不如软件I2C?来看看红枫派开发版的硬件I2C驱动如何做到稳得一批

    在一个评论中,看到网友对硬件I2C的讨论,硬件I2C Busy找不到原因、软件I2C稳得一批。
    的头像 发表于 02-23 09:37 2781次阅读
    GD32 MCU硬件<b class='flag-5'>I2C</b>不可靠不如<b class='flag-5'>软件</b><b class='flag-5'>I2C</b>?来看看红枫派开发版的硬件<b class='flag-5'>I2C</b><b class='flag-5'>驱动</b>如何做到稳得一批

    基于FM33LF015的空调内机主变一体方案

    风机电机上均采用智能化变频控制,实现节能水平和整机性能的更优异表现。复旦推出的基于FM33LF015的空调内机主变一体方案,可实现室内机主控功能和室内机变频风机的
    的头像 发表于 02-19 12:33 719次阅读
    基于<b class='flag-5'>FM33</b>LF015的空调内机主变一体方案

    FM33FT0A系列车用MCU芯片产品说明书

    电子发烧友网站提供《FM33FT0A系列车用MCU芯片产品说明书.pdf》资料免费下载
    发表于 02-18 10:17 3次下载

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

    复旦MCU电机应用|基于FM33LF0xx系列线性驱动应用-电动床前言线性驱动作为电动执行器在智能家居、智慧办公、汽车部件、医疗器械、工业
    的头像 发表于 01-20 08:28 959次阅读
    <b class='flag-5'>复旦</b><b class='flag-5'>微</b>MCU 电机应用 | 基于<b class='flag-5'>FM33</b>LF0xx系列的线性<b class='flag-5'>驱动</b>应用

    stm32 I2c硬件驱动程序不稳定该怎么解决?

    stm32 I2c硬件驱动程序不稳定该怎么解决? stm32I2C 硬件驱动程序不稳定可能
    的头像 发表于 01-16 17:11 3007次阅读

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

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