OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3653|回复: 7

关于MINI板 0.96' OLED 4线SPI设置问题

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-12-15
在线时间
13 小时
发表于 2016-12-15 12:53:41 | 显示全部楼层 |阅读模式
1金钱
手头有块0.96寸的显示屏 非原子的
共有7个引脚
QQ图片20161215124658.png QQ图片20161215124711.png

GND VCC D0 D1 RST DC RW

现在设置管脚对应是
PB0  -- SCLK --  D0          //推挽输出 置1
PB1  -- SDIN --  D1           //推挽输出 置1
PB15 -- RST                    //推挽输出 置1
PC8 --  RS -- DC                //推挽输出 置1
PC7 -- WR  -- RW               //不用配置

[mw_shl_code=c,true]#define OLED_MODE 0                                                                      
#define OLED_CS PCout(9)
#define OLED_RST PBout(15)  //默认RST引脚PB14
#define OLED_RS PCout(8)
#define OLED_WR PCout(7)                  
#define OLED_RD PCout(6)
#define OLED_SCLK PBout(0)   
#define OLED_SDIN PBout(1)[/mw_shl_code]


[mw_shl_code=c,true]        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_15);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD ;                  //íÆíìêä3ö       
        GPIO_Init(GPIOB, &GPIO_InitStructure);                                             
        GPIO_Write(GPIOB,0X03);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //íÆíìêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_9);[/mw_shl_code]





寄存器版本已经修改成功,
库函数版本默认状态点不亮屏幕,需要做什么修改吗?








最佳答案

查看完整内容[请看2#楼]

按照原子的教程,把这些带位操作转化为函数库实现,再核查配置流程,找出配置错误的地方。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
553
金钱
553
注册时间
2014-8-18
在线时间
67 小时
发表于 2016-12-15 12:53:42 | 显示全部楼层
rockrock 发表于 2016-12-15 20:07
#define OLED_CS PCout(9)
#define OLED_RST PBout(15)  //默认RST引脚PB14
#define OLED_RS PCout(8)
...

按照原子的教程,把这些带位操作转化为函数库实现,再核查配置流程,找出配置错误的地方。
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-12-15
在线时间
13 小时
 楼主| 发表于 2016-12-15 17:30:15 | 显示全部楼层
。。没有人在做相关的内容吗
回复

使用道具 举报

0

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
553
金钱
553
注册时间
2014-8-18
在线时间
67 小时
发表于 2016-12-15 19:34:20 | 显示全部楼层
本帖最后由 whty2010 于 2016-12-15 19:44 编辑

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD ;         //íÆíìêä3ö
GPIO_Init(GPIOB, &GPIO_InitStructure);                       
GPIO_Write(GPIOB,0X03);
到底是配置PC7还是PB7???

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_9);

这里又是配置PC8和PC9


和你最上面的引脚对应关系好像很凌乱。


回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-12-15
在线时间
13 小时
 楼主| 发表于 2016-12-15 20:05:55 | 显示全部楼层
whty2010 发表于 2016-12-15 19:34
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD ;          ...

这里是这样的……原来的例程里面PC 7是 8080模式配置了的管脚 其实在这个模式下面好像是不需要配置的   所以没有做修改

然后我这个是4线SPI的
不需要用到PC9引脚 就是 PC8配置就可以了 原子自带的OLED好像引脚比较多 可能有用到这个脚……那我就不清楚  
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-12-15
在线时间
13 小时
 楼主| 发表于 2016-12-15 20:07:27 | 显示全部楼层
whty2010 发表于 2016-12-15 19:34
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD ;          ...

#define OLED_CS PCout(9)
#define OLED_RST PBout(15)  //默认RST引脚PB14
#define OLED_RS PCout(8)
#define OLED_WR PCout(7)        //可不配置
#define OLED_SCLK PBout(0)   
#define OLED_SDIN PBout(1)

我在寄存器版本里就配置了这几个脚,实现了功能
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-12-15
在线时间
13 小时
 楼主| 发表于 2016-12-15 20:39:06 | 显示全部楼层
whty2010 发表于 2016-12-15 20:13
按照原子的教程,把这些带位操作转化为函数库实现,再核查配置流程,找出配置错误的地方。

我知道了……………………我用串口下载的………………
HEX文件  虽然例程名字叫OLED
但是输出的是LED.HEX。。。。
那个OLED.HEX文件是无效文件
回复

使用道具 举报

0

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
553
金钱
553
注册时间
2014-8-18
在线时间
67 小时
发表于 2016-12-15 20:46:12 | 显示全部楼层
本帖最后由 whty2010 于 2016-12-15 20:52 编辑
rockrock 发表于 2016-12-15 20:39
我知道了……………………我用串口下载的………………
HEX文件  虽然例程名字叫OLED
但是输出的是LED.H ...

建议用内存调试的方法来验证程序,需要用到JLINK和ST-LINK。
直接在内存中运行程序,不需要写进片上FLASH,节省MCU寿命。
还可以直接在内存调试中查看寄存器的配置是否生效,如果需要修改,直接重编译,用仿真器下载到MCU的内存中运行。
我调试MINI板子都是用内存调试的,从来都不使用一键下载功能。
注释掉USMART组件,然后用JLINK下载到片内内存中运行。
特意上的是RET6,片上内存为64K,地址范围0X20000000-0X20010000,容量为0X10000。
一般现版本的MINI板用的是RCT6,内存容量为48K,容量为0XC000。
合理分配程序空间和内存变量空间,运行一般的实验代码都没有问题。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 21:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表