FTHR-G0001点亮OLED
分享作者:diandeng
评测品牌:灵动微电子
评测型号:FTHR-G0001
发布时间:2025-03-13 17:36:09
前言
FTHR-G0001使用软件模拟ic2点亮OLED液晶屏
开源口碑分享内容

古人云:工欲善其事,必先利其器

一、下载Pack安装包和例程

安装包下载连接: https://www.mindmotion.com.cn/products/mm32mcu/value_line/mm32g_value/mm32g0001/

例程这个两个随便下载一个就可以,然后往下翻

我是用的是Keil就下载这个Pack安装包

解压安装这个MM32G001_DFP.1.0.1.pack就可以了

二、新建工程

解压咱第一步下载的例程,打开文件夹后把Device文件夹复制到咱自己的项目文件夹下,随便打开一个例程把里面的mm32l0130_it.c   mm32l0130_it.h  platform.c  

platform.h也复制到自己的工程文件夹下

使用keil新建工程这就不讲了,默认大家都会

进入工程点击魔术棒,选择MM32G0001A1TC芯片

然后进入到这个界面把USE_STDPERIPH_DRIVER填进去,把头文件也添加进去

三、添加OLED 文件

这个OLED驱动自己就在网上找找把

#define OLED_W_SCL(x) GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)(x))

#define OLED_W_SDA(x) GPIO_WriteBit(GPIOA, GPIO_Pin_1, (BitAction)(x))

/* Private variables **************************************************************************************************/


/* Private functions **************************************************************************************************/


/***********************************************************************************************************************

 * @brief

 * @note   none

 * @param  none

 * @retval none

 *********************************************************************************************************************/

void i2c_init(void)

{

RCC_APB1PeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_Init(GPIOA, &GPIO_InitStructure);

OLED_W_SCL(1);

OLED_W_SDA(1);

}

/*

i2c开始

SCL高电平期间,SDA从高电平切换到低电平

*/

void i2c_start(void)

{

OLED_W_SDA(1);

OLED_W_SCL(1);

OLED_W_SDA(0);

OLED_W_SCL(0);

}

/*

i2c停止

SCL高电平期间,SDA从低电平切换到高电平

*/

void i2c_stop(void)

{

OLED_W_SDA(0);

OLED_W_SCL(1);

OLED_W_SDA(1);

}


void i2c_sendbyte( uint8_t byte )

{

   uint8_t i = 0;

   

   for( i = 0; i < 8; i++ )

   {

OLED_W_SCL( 0 );

       byte & 0x80 ?  OLED_W_SDA( 1 ):OLED_W_SDA( 0 );

       OLED_W_SCL( 1 );

       OLED_W_SCL( 0 );

       byte <<= 1;

   }

OLED_W_SCL(1);

OLED_W_SCL(0);

}


void i2c_command(uint8_t cmd)

{

i2c_start();

i2c_sendbyte(0x78); //从机地址

i2c_sendbyte(0x00); //写命令

i2c_sendbyte(cmd);

i2c_stop();

}


void i2c_writedata(uint8_t Data)

{

i2c_start();

i2c_sendbyte(0x78); //从机地址

i2c_sendbyte(0x40); //写数据

i2c_sendbyte(Data);

i2c_stop();

}


void i2c_Ack(void)

{

   OLED_W_SDA(0); /* CPU驱动SDA = 0 */

Delay_us(10);

   OLED_W_SCL(1); /* CPU产生1个时钟 */

   Delay_us(10);

   OLED_W_SCL(0);

   Delay_us(10);

   OLED_W_SCL(1); /* CPU释放SDA总线 */

}

void i2c_NAck(void)

{

   OLED_W_SDA(1); /* CPU驱动SDA = 1 */

   Delay_us(10);

   OLED_W_SCL(1); ; /* CPU产生1个时钟 */

   Delay_us(10);

   OLED_W_SCL(0);

   Delay_us(10);

}

四、硬件连接

OLED-------->mm32g001

gnd  -------->gnd

vcc   -------->3v3

scl    -------->PA0

sda   -------->PA1


完结