电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
STM32MP157-Mini开发板评测 I2C协议驱动OLED
分 享
扫描二维码分享
STM32MP157-Mini开发板评测 I2C协议驱动OLED
STM32
linux
i2c
天启raf
关注
发布时间: 2022-04-02
丨
阅读: 1024
> 上篇文章讲了如何配置交叉编译环境以及上传可执行文件到开发板中,现在来通过IIC协议驱动0.96寸OLED。 ## 使用I2C协议的0.96寸OLED 这里使用的OLED分辨率为128*64,采用IIC协议通讯,仅有4个引脚,而非正点原子的16Pin OLED显示模块。优点在于比正点原子的模块便宜很多,并且I2C协议通讯也比较简单,正常在STM32中,模块的I2C地址为0x78,在Linux中为0x3c。 ![OLED](https://cf01.ickimg.com/bbsimages/202203/693c89071862863fff7124c140798041.jpg "OLED") ## I2C协议OLED驱动代码 首先感谢开源项目[stm32mp157_oled](https://gitee.com/william_william/stm32mp157_oled.git)提供的STM32MP157通过IIC协议驱动OLED的代码。 * 使用git克隆仓库到Ubuntu中 ```bash git clone https://gitee.com/william_william/stm32mp157_oled.git cd stm32mp157_oled ``` * 这里要注意OLED接的引脚要与i2c总线对应上。放上核心板引脚原理图 ![核心板引脚原理图A](https://cf01.ickimg.com/bbsimages/202203/d4da878ad504f1e9fe05e301c1aebbe2.png "核心板引脚原理图A") ![核心板引脚原理图B](https://cf01.ickimg.com/bbsimages/202203/1bcbb200d13c404424a411c595beab51.png "核心板引脚原理图B") * 核心板上与引脚对应的有4个I2C接口:`I2C1、I2C2、I2C4、I2C5`。使用i2cdetect查看i2c总线 ```bash i2cdetect -l ``` ![查看i2c总线](https://cf01.ickimg.com/bbsimages/202203/368608708342cffadfe718b77895bf6d.png "查看i2c总线") * 可以看到总共有4条i2c总线,分别为`i2c-0、i2c-1、i2c-2、i2c-3`,经过测试得到对应关系如下 ![i2c总线与引脚对应关系](https://cf01.ickimg.com/bbsimages/202203/78860b8df7843a02d29ca2477d98cea2.png "i2c总线与引脚对应关系") * 这里选择引脚`PA11、PA12`,对应`i2c-2`。连接OLED后查看i2c-2总线上的i2c设备。 ![OLED连接](https://cf01.ickimg.com/bbsimages/202203/e1c2fb53a369174902aae3f9161acf90.png "OLED连接") ```bash i2cdetect -y 2 ``` ![查看i2c总线设备](https://cf01.ickimg.com/bbsimages/202203/4f0e8225008b059eb91d7af13d97952a.png "查看i2c总线设备") * 这里已经看见了一个i2c设备,地址为`0x3c`,就是OLED的i2c地址。现在回到Ubuntu中,修改`oled.c`中使用的i2c总线为`/dev/i2c-2`,`:wq!`保存并退出。 ![修改使用的i2c总线](https://cf01.ickimg.com/bbsimages/202203/9dc2ff331eefa96946f4c4fe5b0945f3.png "修改使用的i2c总线") ## 编译代码并上传 * 这里文件比较少就不使用Makefile了,直接手动编译 ```bash arm-none-linux-gnueabihf-gcc -c main.c oled.c arm-none-linux-gnueabihf-gcc main.o oled.o -o MP157OLED ``` * 如果没有问题的话,会在目录下生成可执行二进制文件`MP157OLED`。再使用`scp`命令来将生成的可执行文件上传到开发板中,其中`192.168.1.9`是开发板的IP地址(第一次执行时会提示是否信任该主机,输入`yes`即可) ```bash scp ./MP157OLED root@192.168.1.9:/home/root/ ``` ![上传可执行文件](https://cf01.ickimg.com/bbsimages/202203/24a509a72af0d6db9c41dcfe9538625e.png "上传可执行文件") * 现在回到开发板上,进入`/home/root`查看是否有可执行文件,有的话可以直接执行查看效果。 ```bash cd ~ ls ./MP157OLED ``` * 成功点亮OLED ![显示效果](https://cf01.ickimg.com/bbsimages/202203/4998e0f063bc9b1c67a14a480e4766c1.png "显示效果") * 完整代码见附件 (附件链接之后更新)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
天启raf
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交