硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5378|回复: 10
收起左侧

[有问必答] 有FSMC 驱动8位液晶显示的例程吗

[复制链接]

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2016-3-11 13:38:02 | 显示全部楼层 |阅读模式
如题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2016-3-12 00:09:55 | 显示全部楼层
驱动OLED就是,参看V4或者V5板子里面的裸机例子高级篇。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2016-3-13 14:53:43 | 显示全部楼层
例程上的FSCM操作都是16位的,可是OLED是8位的,不影响OLED屏吗?高8位数据会影响高8位的IO口啊(如果接了其他设备)?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2016-3-13 15:55:33 | 显示全部楼层

回 zerone 的帖子

zerone:例程上的FSCM操作都是16位的,可是OLED是8位的,不影响OLED屏吗?高8位数据会影响高8位的IO口啊(如果接了其他设备)? (2016-03-13 14:53) 
不会的,因为有片选限制,别的设备都没有片选上,怎么会影响,你想想看。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2016-3-13 16:59:37 | 显示全部楼层
V4,V5板子上这些接口都是当总线用的是不会,但是自己做的板子,这些口子可能接LED,那就有影响了
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2016-3-14 16:29:09 | 显示全部楼层

100脚的FSMC驱动OLED 8位的.死活显示不了,用IO口模拟可以的

void OLED_GPIO_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD
                                                                                                | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 |
                                                                                                                                GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOD, &GPIO_InitStructure);


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOE, &GPIO_InitStructure);        
}



void OLED_FSMCConfig(void)
{
        FSMC_NORSRAMInitTypeDef  init;
        FSMC_NORSRAMTimingInitTypeDef  timing;

        timing.FSMC_AddressSetupTime = 1;
        timing.FSMC_AddressHoldTime = 0;
        timing.FSMC_DataSetupTime = 5;
        timing.FSMC_BusTurnAroundDuration = 0;
        timing.FSMC_CLKDivision = 0;
        timing.FSMC_DataLatency = 0;
        timing.FSMC_AccessMode = FSMC_AccessMode_A;

        init.FSMC_Bank = FSMC_Bank1_NORSRAM1;
        init.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
        init.FSMC_MemoryType = FSMC_MemoryType_SRAM;
        init.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
        init.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
        init.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;        
        init.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
        init.FSMC_WrapMode = FSMC_WrapMode_Disable;
        init.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
        init.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
        init.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
        init.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
        init.FSMC_WriteBurst = FSMC_WriteBurst_Disable;

        init.FSMC_ReadWriteTimingStruct = &timing;
        init.FSMC_WriteTimingStruct = &timing;

        FSMC_NORSRAMInit(&init);

        /* - BANK 1 (of NOR/SRAM Bank 1~4) is enabled */
        FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
}
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2016-3-14 16:31:09 | 显示全部楼层

CS接的是A16脚,地址应该对的吧

#define Bank1_OLED_C        ((u32)0x60000000)
#define Bank1_OLED_D        ((u32)0x60010000)        
#define OLED_REG            *(__IO uint16_t *)(Bank1_OLED_C)
#define OLED_RAM            *(__IO uint16_t *)(Bank1_OLED_D)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2016-3-14 16:33:09 | 显示全部楼层
这个宏定义改了,改成
#define OLED_REG            *(__IO uint8_t *)(Bank1_OLED_C)
#define OLED_RAM            *(__IO uint8_t *)(Bank1_OLED_D)

因为你配置的是8BIT模式,FSMC_MemoryDataWidth_8b
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2016-3-15 10:02:21 | 显示全部楼层
果然是这个宏定义问题,非常感谢[s:151][s:151][s:151]
回复

使用道具 举报

5

主题

87

回帖

102

积分

初级会员

积分
102
发表于 2018-2-2 18:08:44 | 显示全部楼层
请问电路图怎么连接?能给点资料吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2018-2-2 18:12:06 | 显示全部楼层
游在云间 发表于 2018-2-2 18:08
请问电路图怎么连接?能给点资料吗?

论坛置顶帖,V5板子原理图的OLED部分,是用的FSMC 8bit方式。配置方法看对应的OLED例子即可。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 01:49 , Processed in 0.182681 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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