OpenEdv-开源电子网

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

请教:在Alientek板子上怎样才能同时驱动OLED和LCD两个屏?

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-3-14
在线时间
0 小时
发表于 2012-3-14 07:24:10 | 显示全部楼层 |阅读模式
本人纯新手,正在通过修改Alientek板的配套例程学习STM32。
已在板上成功运行了原子兄的OLED和LCD模块例程,可惜它们共用了PB口的很多引脚,无法同时驱动。
想法很简单,保持LCD不动,把OLED模块通过杜邦线连到PA口上——可惜修改软硬件后总是点不亮OLED(同样用杜邦线从PB口引出是亮的,线没问题),请高手指点。

具体改动如下:
(1)软件方面:
-----------------在oled.h中--------------------
#define OLED_RST  PAout(11)
#define OLED_CS PAout(12)
#define OLED_RS PAout(13)//RS is DC, 命令/数据标志(0,读写命令;1,读写数据)。
#define OLED_WR PAout(14)         
#define OLED_RD PAout(15)

//PA0~7,作为数据线
#define DATAOUT(x) GPIOA->ODR=(GPIOA->ODR&0xFF00)|(x&0x00FF); //输出
 
//使用4线串行接口时使用
#define OLED_SCLK PAout(0)
#define OLED_SDIN PAout(1)
。。。。。。。。。后面保持不变。。。。。
-----------------在oled.c中--------------------
void OLED_Init(void)
{
    RCC->APB2ENR|=1<<2;    //使能PORTA时钟
#if OLED_MODE==1                     
    JTAG_Set(SWD_ENABLE);
    GPIOA->CRL=0X33333333;    //把A0~A7设成推挽输出模式
    GPIOA->CRH&=0X00000FF0;   
    GPIOA->CRH|=0X33333003;    //把A8和A11~A15设成推挽输出模式
    GPIOA->ODR|=0XF9FF;        //模仿PB设定(GPIOB->ODR|=0XFFFF;),把A0~A7,A8,A11~A15赋初值1
#else                        //SPI模式先不管了
#endif
    OLED_RST=0;
    delay_ms(100);
    OLED_RST=1;
。。。。。。。。。后面保持不变。。。。。
}
-----------------在test.c中--------------------
注释掉了对PA口有操作的如下两行:
//uart_init(72,9600);  //串口初始化
//LED_Init();             //初始化与LED连接的硬件接口
由于PA8未被OLED使用,且已设为推挽输出,在while(1)循环中恢复了LED0闪烁作为程序运行状态参考:
LED0=!LED0;
---------------------------------------------------
(2)硬件方面:
为USB串口下载程序保留了PA9、PA10的跳线,PA8留空,PA口其余引脚按定义连接到OLED模块无误。

症状:
程序编译通过,下载运行后能看到LED0按设定间隔闪烁,但OLED保持全黑无反应。万用表查过V3.3、GND、OLED_RST、OELD_CS几根引脚均无问题。尝试在uVision中模拟,看寄存器状态看得俺晕头转向,实在不知道问题出在哪,特来请教达人orz...

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-14 09:04:56 | 显示全部楼层
回复【楼主位】cycloid:
---------------------------------
PA口很多IO被其他外设占用了,很可能产生干扰。
建议:除了CS信号,其他还是和LCD共用。这样通过CS区分所要操作的屏幕,从而可以实现LCD和OLED同时显示。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-3-14
在线时间
0 小时
 楼主| 发表于 2012-3-14 16:19:01 | 显示全部楼层
回复【2楼】正点原子:
回复【楼主位】cycloid:
---------------------------------
PA口很多IO被其他外设占用了,很可能产生干扰。
建议:除了CS信号,其他还是和LCD共用。这样通过CS区分所要操作的屏幕,从而可以实现LCD和OLED同时显示。
---------------------------------
原子兄,俺在硬件图上只看到PA口关联了如下硬件:
两个LED灯中的一个(PA8),USB串口(PA9-10),红外(PA1)/温度(PA0)传感器。
上面的改动中PA8没问题,PA9-10未变更,PA0-1跟传感器连接的跳线已拔出。
还有哪些IO是我没注意到的啊?学习过程,还是多了解一些比较好,还望原子兄不吝指出——毕竟板子是您设计的嘛。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-14 22:18:43 | 显示全部楼层
回复【3楼】cycloid:
---------------------------------
PA0~PA7很多共用了.比如MISO,MOSI,CS...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-3-14
在线时间
0 小时
 楼主| 发表于 2012-3-19 02:56:12 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
A口果然诡异……折腾半天还是放弃了。
用BC口引脚+不同CS就容易多了,多谢版大~
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-6-30
在线时间
5 小时
发表于 2016-7-3 19:15:42 | 显示全部楼层
请问CS选哪个引脚合适
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-5-2
在线时间
2 小时
发表于 2019-8-8 19:51:10 | 显示全部楼层
哇。我也在想实现这个功能,看见这个我有了眉目,谢谢大佬
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-6 21:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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