OpenEdv-开源电子网

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

stm32F769 fmc接口实现8080的问题

[复制链接]

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-12-6
在线时间
4 小时
发表于 2019-7-24 14:10:17 | 显示全部楼层 |阅读模式
1金钱
我采用 STM32F769 FMC实现8080接口, A0作为command 和数据的选择。我采用的是BANK 1,数据宽度是16bit,发现我写一个地址或者数据的时候,
A0会跳转8下。理论上,写一个COMMAND,A0保持为低, 写一个DATA,A0保持为高。应该跳转。但是抓到的波形是,写一个cmd,执行一条LCD_WR_REG, A0会高低高低翻动8次。
求大侠指导。


程序如下:

#define DATA_ADDR   0x60000002        
#define CMD_ADDR    0x60000000     
#define  LCD_WR_REG(cmd)   (*(volatile uint16_t *)(CMD_ADDR)) = (cmd)
#define  LCD_WR_DATA(val)   (*(volatile uint16_t *)(DATA_ADDR)) = (val)
#define  LCD_RD_DATA()   (*(volatile uint16_t *)(DATA_ADDR))


NOR_HandleTypeDef  hnor;
    FMC_NORSRAM_TimingTypeDef  NORSRAM_Timing;
    FMC_NORSRAM_TimingTypeDef  NORSRAM_ExtTiming;

    hnor.Instance = FMC_NORSRAM_DEVICE;
    hnor.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
   
    hnor.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
    hnor.Init.MemoryType = FMC_MEMORY_TYPE_NOR;
        hnor.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
    hnor.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
    hnor.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_HIGH;
    hnor.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
    hnor.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
    hnor.Init.WaitSignal = FMC_WAIT_SIGNAL_ENABLE;
    hnor.Init.ExtendedMode = FMC_EXTENDED_MODE_ENABLE;   
    hnor.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
    hnor.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
    hnor.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
    hnor.Init.NSBank = FMC_NORSRAM_BANK1;
    hnor.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
    hnor.Init.PageSize = FMC_PAGE_SIZE_NONE;
   
   
    NORSRAM_Timing.AccessMode = FMC_ACCESS_MODE_A;
    NORSRAM_Timing.AddressHoldTime = 15;
    NORSRAM_Timing.AddressSetupTime = 15;
    NORSRAM_Timing.CLKDivision = 16;
    NORSRAM_Timing.DataLatency = 17;
    NORSRAM_Timing.DataSetupTime = 255;
    NORSRAM_Timing.BusTurnAroundDuration = 15;
   
   
    if(HAL_NOR_Init(&hnor, &NORSRAM_Timing, NULL) != HAL_OK)
    {
        while(1)
        {
   
        }
    }


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

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-12-6
在线时间
4 小时
 楼主| 发表于 2019-7-24 18:37:42 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-7-25 02:18:28 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-12-6
在线时间
4 小时
 楼主| 发表于 2019-7-25 10:49:04 | 显示全部楼层

是我理解的有问题吗?我看大家的例子都是这么做的,可是我的地址线的跳变就不合理,我只写了一个数据到一个地址里,地址线确跳变了8次。这应该就是不对的呀,可是我调了好久了,依然是这样,没解决。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2019-7-1
在线时间
8 小时
发表于 2019-8-22 16:27:25 | 显示全部楼层
梅子辛心 发表于 2019-7-25 10:49
是我理解的有问题吗?我看大家的例子都是这么做的,可是我的地址线的跳变就不合理,我只写了一个数据到一 ...

我也遇到了这个问题, 你解决了吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 21:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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