大家好,我是明说网络的小明同学。
就在最近,我翻出了吃灰多年的老树莓派,Model 2(40pin GPIO接口). (现在都出到4了,汗颜)。好在不影响使用。
想当年也是300块大洋买的,还一度想成为DIY达人,没曾想也一直没有玩明白,放在家中角落吃灰多年。
最近,再有了一点硬件的知识的基础上,再度回归树莓派,忽然又有一些新的收获
SSD1306折腾笔记
当时买的模块中有一块一直想要点亮的模块就是SSD1306
正面
背面
一直想要点亮这个屏,但是由于各种原因,没有成功。这次就再来试试。
话不多说,下面开始
认识ssd1306的SPI
从背面的说明可以看出,当bs1/bs0为0/0时,该芯片使用4-wire SPI 协议进行通信(这一点非常的重要)
手册:
cdn-shop.adafruit.com/datasheets/SSD1306.pdf
那么,可能有小伙伴就要问了,我想用i2c或是3wire SPI怎么搞?我只大约知道,要在下图这个部分焊接,具体怎么搞,我还不会,等我请教了专业人士再来补坑
当bs1/bs0为0/0时,,引脚与SPI协议的对应关系/接线关系如下所示:
CS -> CS
DC -> DC
DIN -> MOSI
CLK-> SCLK
# 通用
VCC -> VCC
GND -> GND
RST -> RST
到底怎么接线?
以上道理看了手册大家都懂,但是到底怎么接线啊?
其实,接线很简单,只要不要把vcc和gnd搞反,可能会烧坏模块外,基本是接到空闲的GPIO口上就行。但是你需要十分清除的是,你到底接到了哪个GPIO口上。
需要注意的是,这里需要搞清楚树莓派的GPIO的映射关系,使用人如下命令查看。很重要!!!
我们使用命令在树莓派2上查看他所有的GPIO口,如下所示:
什么和什么?????
上面这幅示例的看法是:从中间的Physical向两边看,
V电压
Mode 模式
Name 一般叫什么
wPi:wiringPi定义的GPIO序号.WiringPi对树莓派物理引脚进行了封装,定义了一套自己的引脚编号。
BCM编码
GPIO编码!为什么会有这么多编码?
树莓派和普通电脑不一样的地方在于它还带了可编程的GPIO(General Purpose Input/Output),可以用来驱动各种外设(如传感器,步进电机等)。但GPIO的编号方法有些混乱,不同的API(如wiringPi,RPi.GPIO等)对GPIO的端口号编号并不一样
三者区别:
BOARD编码和BCM一般都在python库中使用;而wiringPi一般用于C++等平台
BOARD编码和BCM一般都在python库中使用;而wiringPi一般用于C++等平台
BOARD编码和BCM一般都在python库中使用;而wiringPi一般用于C++等平台
树莓派wiringPi,BCM,BOARD编码对应管脚 - wangha - 博客园
树莓派wiringPi库详解
wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等
树莓派wiringPi库详解 - lulipro - 博客园
代码
仓库地址:
github.com/adafruit/Adafruit_Python_SSD1306
安装不再说了,看README.
修改代码
对于Python来说,要使用BCM编码(对照上图)。Raspberry Pi pin configuration: should use the "BCM" column
RST = 26 #| 26 | 25 | GPIO.25 | IN | 0 | 37 |
DC = 19 #| 19 | 24 | GPIO.24 | IN | 0 | 35 |
sclk=11 #| 11 | 14 | SCLK | ALT0 | 0 | 23 |
din=10 #| 10 | 12 | MOSI | ALT0 | 0 | 19 |
cs=8 # | 24 | 1 | OUT | CE0 | 10 | 8 |
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, sclk=sclk, din=din, cs=cs) #128x64用这个
我的RST接在 GPIO.25,在Python的库中是26(BCM编码),如果用的是wiringPi,则是25.
其它类推!