树莓派 python spi_树莓派2B利用SPI驱动OLED

网上搜”树莓派 oled”或者”树莓派 SPI”,会有

树莓派raspberry使用spi接口oled显示屏:基于python和c

http://www.embbnux.com/2014/08/10/raspberry_use_spi_oled_screen_python_c/

等等一些大神搞的教程,利用树莓派的python或者c语言驱动OLED,但是那些教程都是针对树莓派1版本的,我刚买的是最新的2B,管脚图都对不上,自然不能用

OLED的芯片是SSD1306

http://www.embbnux.com/2014/08/10/raspberry_use_spi_oled_screen_python_c/

这个教程里说利用的库

git clone https://github.com/michaelKle/libssd1306.git

太旧了,是树莓派1版本的,可以编译成功但是运行没有任何效果

现在我说说我的方法:

1、sudo raspi-config

在高级设置里打开spi功能,然后重启

树莓派2B是没有什么black-list来打开SPI的,要用这个方法,重启后会在/dev下面看到spi0.0和spi0.1两个设备文件

2、git clone git://git.drogon.net/wiringPi

cd wiringPi

./build

安装并且编译wiringPi的库

其中example里面是很多wiringPi的例程,wiringPi里面是各种c文件h文件和编译生成的o文件。程序在编写的时候加上头文件

#include

#include

在用gcc编译的时候

gcc–Wall–o 要输出的可执行文件名 要编译的c文件–lwiringPi(动态链接wiringPi的库)

如果静态链接也应该是可以的,大家可以自己试一下

安装好后输入gpio–v可以查看自己的GPIO的版本,输入gpio readall 可以查看自己板子的引脚图

3、接着就是按照管脚图把OLED的线和树莓派接好,我们按照wiringPi的编码来

GND和VCC(VCC最好用3.3v的,虽然文档说5v也可以)就不说了,D0接14是SCLK(SPI时钟信号),D1接12是MOSI(主输入从输出),RST和DC随便接GPIO管脚都可以,我是RST接2,DC接3。

4、接下来就是最关键的移植了,我试过移植git clonehttps://github.com/michaelKle/libssd1306.git这个库,它没有调用wiringPi或者BCM任何第三方的库,而是完全自己调用用内核的IO实现的SPI通信,我看不懂,用wiringPi改写了一下,只能实现基本的初始化点亮OLED,不能显示图像和文字。

于是我试着移植了一下卖家给的例程,它是用飞思卡尔的机器,用软件模拟SPI实现的。我给加上了wiringPi的头文件,改写了关键的两个函数

LCD_WrDat()向OLED写数据

LDC_WrCmd()向OLED写命令

在OLED初始化函数里加上了

//初始化wiringPi和wiringPISPI

wiringPiSetup();

wiringPiSPISetup(0,12000000);

//初始化两个通用GPIO口,输出模式,上拉

pinMode(LCD_RST,OUTPUT);

pullUpDnControl(LCD_RST,PUD_UP);

pinMode(LCD_DC,OUTPUT);

pullUpDnControl(LCD_DC,PUD_UP);

大家可以下载我写好的文件

5、接下来就是用gcc编译了,编译完直接sudo ./输出的文件

OLED就亮了

gcc -Wall -o test1 main.c OLED12864.c –lwiringPi

sudo ./test1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值