开启辅助访问
设为首页
收藏本站
登录
立即注册
论坛首页
BBS
开发资料
样品购买
GitHub
邀请注册
技术博客
搜索
搜索
每日签到
本版
帖子
用户
物联网开发者社区-安信可论坛
»
论坛首页
›
开源硬件
›
小安派&M61教程合集
›
Ai-M61-Kit外设移植教程
›
【Ai-M61-32SU入门】I2C点亮OLED
返回列表
发新帖
【Ai-M61-32SU入门】I2C点亮OLED
[复制链接]
576
|
9
|
2024-5-21 21:06:59
|
显示全部楼层
|
阅读模式
I2C是一种简单的双向两线制总线协议标准,使用一根时钟线(SCL)和一根数据线(SDA)进行通讯
手里有个OLED的屏幕SSD1315 I2C驱动,接下来用Ai-M61-32SU通过I2C点亮它
先放上已经完成的驱动文件
my_oled_ssd1315.rar
(5.87 KB, 下载次数: 10)
2024-5-21 21:04 上传
点击文件名下载附件
运行效果
接下来介绍使用方法
初始化i2c
void i2c_init()
{
gpio = bflb_device_get_by_name("gpio");
/* I2C0_SDA */
bflb_gpio_init(gpio, GPIO_PIN_11, GPIO_FUNC_I2C0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);
/* I2C0_SCL */
bflb_gpio_init(gpio, GPIO_PIN_10, GPIO_FUNC_I2C0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);
i2c0 = bflb_device_get_by_name("i2c0");
bflb_i2c_init(i2c0, 100000);
}
复制代码
实现发送方法
uint8_t i2c_sendreg8(void *i2cx,uint8_t devaddr,uint8_t reg,uint8_t *datas,uint16_t datalen)
{
struct bflb_i2c_msg_s msgs[2];
msgs[0].addr = devaddr;
msgs[0].flags = I2C_M_NOSTOP;
msgs[0].buffer = ®
msgs[0].length = 1;
msgs[1].addr = devaddr;
msgs[1].flags = I2C_M_WRITE;
msgs[1].buffer = datas;
msgs[1].length = datalen;
return bflb_i2c_transfer(i2cx, msgs, 2) == 0?0:1;
}
复制代码
定义一个OLED的结构体,分配i2c指针和发送方法后初始化
MY_OLED_SSD1315_DEV_Type oled_dev;
void oled_init()
{
i2c_init();
oled_dev.i2cx = i2c0;
oled_dev.i2c_senddatas_func = (MY_OLED_SSD1315_I2CSendDatasFunc_Type)i2c_sendreg8;
MY_OLED_SSD1315_Init(&oled_dev);
MY_OLED_SSD1315_ClearScreen(&oled_dev);
MY_OLED_SSD1315_DisplayString8x16(&oled_dev,0,0,0,"Ai-M61-32SU TEST");
MY_OLED_SSD1315_DisplayString8x16(&oled_dev,0,2,0," I2C OLED");
MY_OLED_SSD1315_DisplayString8x16(&oled_dev,0,4,0,"bbs.ai-thinker.com");
MY_OLED_SSD1315_DisplayString8x16(&oled_dev,0,6,0,"Code lvxinjia123");
}
复制代码
最后在main函数中调用
int main(void)
{
board_init();
gpio = bflb_device_get_by_name("gpio");
bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_FLOAT | GPIO_SMT_EN | GPIO_DRV_0);
oled_init();
while (1) {
bflb_gpio_set(gpio, GPIO_PIN_12);
bflb_mtimer_delay_ms(1000);
bflb_gpio_reset(gpio, GPIO_PIN_12);
bflb_mtimer_delay_ms(1000);
}
}
复制代码
回复
使用道具
举报
1084504793
|
2024-5-22 07:58:51
|
显示全部楼层
赞
回复
使用道具
举报
爱笑
|
2024-5-22 08:40:02
|
显示全部楼层
不错不错!
用心做好保姆工作
回复
使用道具
举报
Francisliu
|
2024-5-22 08:57:35
|
显示全部楼层
终于看到不一样的了
回复
支持
反对
使用道具
举报
lazy
|
2024-5-22 09:37:36
|
显示全部楼层
点赞
回复
使用道具
举报
WT_0213
|
2024-5-22 09:47:14
|
显示全部楼层
真不错,赞个
回复
支持
反对
使用道具
举报
jkernet
|
2024-5-23 09:54:26
|
显示全部楼层
学习了
回复
使用道具
举报
物联网
|
2024-7-3 16:07:16
|
显示全部楼层
赞
回复
使用道具
举报
noonezero
|
2024-7-7 11:42:48
|
显示全部楼层
厉害
回复
使用道具
举报
知行合一
|
2024-7-29 13:12:21
|
显示全部楼层
优秀
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
手机登录
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
lvxinjia123
11
主题
38
回帖
3103
积分
论坛元老
论坛元老, 积分 3103, 距离下一级还需 9996896 积分
论坛元老, 积分 3103, 距离下一级还需 9996896 积分
积分
3103
加好友
发消息
回复楼主
返回列表
小安派&M61零基础开发教程(官方)
小安派&M61环境搭建、编译烧录教程
Ai-M61-Kit点灯教程
Ai-M61-Kit外设移植教程
小安派&M61基本系统教程
小安派&M61 DIY作品
LVGL教程玩法
问题汇总
图文推荐
【板子申请流程】新进来的同学请看这里-活动已停
2023-11-08
【中奖公告】申请Ai-M61-32S-kit的同学看过来!
2024-04-29
开发板申请 | Ai-M61-32S高性能开发板来啦,共赠送200个!-活动
2024-04-18
我也领到官方免费送的AiPi-Eyes-S1开发板啦!!!
2023-09-26
【轻松上手】小安派跑个超级玛丽
2023-09-27
热门排行
1
【板子申请流程】新进来的同学请看这里-活
2
安信可社区一周年狂欢派对&抽奖盖楼活动开
3
我也领到官方免费送的AiPi-Eyes-S1开发板啦
4
【中奖公告】申请Ai-M61-32S-kit的同学看过
5
优质文章有赏!现金红包+开发板无限送,冲
6
【官方公告】关于板子申请发帖争议解释
7
【轻松上手】小安派跑个超级玛丽
8
开发板申请 | Ai-M61-32S高性能开发板来啦
9
【教程】社区发帖教程指引(尤其是图片上传
10
【电子DIY作品】+人体存在感应器+WB2+RD03