请教oled的SPI使用问题
oled无论怎么弄都无法亮,不知道是什么问题。我的程序是这样写的:#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
const uint8_t rook_bitmap[] PROGMEM = {
0x00, // 00000000
0x55, // 01010101
0x7f, // 01111111
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x7f // 01111111
};
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.drawBitmapP( 0, 0, 1, 8, rook_bitmap);
}
void setup(void) {
pinMode(6, OUTPUT);
digitalWrite(6, HIGH);
}
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(1000);
} 线是这样连的:
arduino<--------> oled
GND GND
5V VCC
pin13 SCL
pin11 SDA
pin9 D/C
pin6 RST 接线可能有问题 asdfcgdc 发表于 2015-7-25 21:48 static/image/common/back.gif
接线可能有问题
线换过几条,还是没有亮 SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 按这个接 如果不是打错了,那就是明显的线接错了:
定义的时候是这样的:U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9你自己发的接线图又是这样的:
arduino<--------> oled
GND GND
5V VCC
pin13 SCL
pin11 SDA
pin9 D/C
pin6 RST
beian10 发表于 2015-7-25 21:51 static/image/common/back.gif
线换过几条,还是没有亮
不是线有问题,是接错了 liuxue4503 发表于 2015-7-26 03:24 static/image/common/back.gif
如果不是打错了,那就是明显的线接错了:
定义的时候是这样的:你自己发的接线图又是这样的:
arduino ...
我在淘宝买的是基于SPI的oled,不过上面没有SCK,MOSI,CS的引脚。只是GND,VCC,SCL,SDA,RST,D/C。:'(我都不知怎么接 加冰的可乐 发表于 2015-7-25 22:21 static/image/common/back.gif
SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 按这个接
在oled上没有SCK,MOSI这两个引脚。写着有SCL,SDA。没办法照着接。。。 asdfcgdc 发表于 2015-7-26 06:18 static/image/common/back.gif
不是线有问题,是接错了
嗯,oled上面引脚没有SCK,MOSI,只有SCL,SDA。不过买的是SPI的 本帖最后由 老来疯 于 2015-7-27 03:27 编辑
beian10 发表于 2015-7-26 11:51 static/image/common/back.gif
嗯,oled上面引脚没有SCK,MOSI,只有SCL,SDA。不过买的是SPI的
SPI 是由摩托罗拉定义的一种同步外设接口总线,标准的为 4 线,即两条控制线(芯片选择CS和时钟SCLK),以及两条数据信号线(SDI 和 SDO),其中 SDI 又称为 MOSI (主出从入)和 MISO(主入从出),由于 OLED 屏本身又是一个微控制器,当然他在启动时也需要复位(Reset 或称 RSE),所以完整的 SPI 接口是 5 条线,还需要两条电源线。
由于 OLED 屏在串行通信时不能回传显存(GGRAM)的数据,所以不用 MISO。 又由于当 SPI 只与一个设备通信时不需要 片选 (CS)信号线,这样就省去了两条线。
需要的接口线是:
1. SCLK 又称 SCL(IIC 通信时的 名称),又称 SCK 在支持两种通信模式的板上又称为D0 ,
2.MOSI 又称 SDA(IIC 通信时的 名称),在支持两种通信模式的板上又称为D1 ,
3. DC 又称D/C又称A0 ,数据/命令端口,
CS 又称 SS, 片选信号线,你的屏没有这根线,屏内以接地,表示自己已被选中,但是Arduino 的 对应端口不能别用,因为这个端口被设为输出,表示自己是主设备!(SPI 是可以让两个设备互为主设备的)。
由于 SPI 是可以 一对多 工作的,所以主设备要对每一个从设备都有一个 CS 端口,当只有一个从设备时,不用接线也是可以工作的。
电源和地 一般不会接错,但是它们也有不同叫法。
厂家太多,接口方式太多,又都想特立独行,还不给明确的使用方法,我也是查了很多资料才搞明白,希望对您有帮助。
beian10 发表于 2015-7-26 11:51 static/image/common/back.gif
嗯,oled上面引脚没有SCK,MOSI,只有SCL,SDA。不过买的是SPI的
所以要看准买,买的不好多麻烦! 老来疯 发表于 2015-7-27 03:13 static/image/common/back.gif
SPI 是由摩托罗拉定义的一种同步外设接口总线,标准的为 4 线,即两条控制线(芯片选择CS和时钟SCL ...
说得很详细,太感谢了,我回去再试一下 好了,总算成功 在这多谢大家:lol
页:
[1]