硬汉嵌入式论坛

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

FSMC/FMC的静态驱动方式可以分别设置读和写时序

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2020-6-26 01:29:56 | 显示全部楼层 |阅读模式


以FSMC/FMC的模式A为例,分别配置读和写:

  1. /*
  2. *********************************************************************************************************
  3. *        函 数 名: LCD_FSMCConfig
  4. *        功能说明: 配置FSMC并口访问时序
  5. *        形    参: 无
  6. *        返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. static void LCD_FSMCConfig(void)
  10. {
  11. /*
  12.            TFT-LCD,OLED和AD7606公用一个FMC配置,如果都开启,请以FMC速度最慢的为准。
  13.            从而保证所有外设都可以正常工作。
  14.         */
  15.         SRAM_HandleTypeDef hsram = {0};
  16.         FMC_NORSRAM_TimingTypeDef SRAM_TimingRead = {0};
  17.         FMC_NORSRAM_TimingTypeDef SRAM_TimingWrite = {0};
  18.                
  19.         hsram.Instance  = FMC_NORSRAM_DEVICE;
  20.         hsram.Extended  = FMC_NORSRAM_EXTENDED_DEVICE;
  21.        
  22.         /* FMC使用的HCLK,主频168MHz,1个FMC时钟周期就是5.95ns */
  23.         SRAM_TimingRead.AddressSetupTime       = 4;  /* 4*5.95ns,地址建立时间,范围0 -15个FMC时钟周期个数 */
  24.         SRAM_TimingRead.AddressHoldTime        = 0;  /* 地址保持时间,配置为模式A时,用不到此参数 范围1 -15个时钟周期个数 */
  25.         SRAM_TimingRead.DataSetupTime          = 8;  /* 6*5.95ns,数据保持时间,范围1 -255个时钟周期个数 */
  26.         SRAM_TimingRead.BusTurnAroundDuration  = 1;  /* 两个连续数据读写的时间间隔*/
  27.         SRAM_TimingRead.CLKDivision            = 0;  /* 此配置用不到这个参数 */
  28.         SRAM_TimingRead.DataLatency            = 0;  /* 此配置用不到这个参数 */
  29.         SRAM_TimingRead.AccessMode             = FSMC_ACCESS_MODE_A; /* 配置为模式A */
  30.        
  31.         SRAM_TimingWrite.AddressSetupTime       = 4;  /* 4*5.95ns,地址建立时间,范围0 -15个FMC时钟周期个数 */
  32.         SRAM_TimingWrite.AddressHoldTime        = 0;  /* 地址保持时间,配置为模式A时,用不到此参数 范围1 -15个时钟周期个数 */
  33.         SRAM_TimingWrite.DataSetupTime          = 6;  /* 8*5.95ns,数据保持时间,范围1 -255个时钟周期个数 */
  34.         SRAM_TimingWrite.BusTurnAroundDuration  = 1;  /* 两个连续数据读写的时间间隔*/
  35.         SRAM_TimingWrite.CLKDivision            = 0;  /* 此配置用不到这个参数 */
  36.         SRAM_TimingWrite.DataLatency            = 0;  /* 此配置用不到这个参数 */
  37.         SRAM_TimingWrite.AccessMode             = FSMC_ACCESS_MODE_A; /* 配置为模式A */

  38.         hsram.Init.NSBank             = FSMC_NORSRAM_BANK4;              /* 使用的BANK4,即使用的片选FSMC_NE4 */
  39.         hsram.Init.DataAddressMux     = FSMC_DATA_ADDRESS_MUX_DISABLE;   /* 禁止地址数据复用 */
  40.         hsram.Init.MemoryType         = FSMC_MEMORY_TYPE_SRAM;           /* 存储器类型SRAM */
  41.         hsram.Init.MemoryDataWidth    = FSMC_NORSRAM_MEM_BUS_WIDTH_16;        /* 16位总线宽度 */
  42.         hsram.Init.BurstAccessMode    = FSMC_BURST_ACCESS_MODE_DISABLE;  /* 关闭突发模式 */
  43.         hsram.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;   /* 用于设置等待信号的极性,关闭突发模式,此参数无效 */
  44.         hsram.Init.WaitSignalActive   = FSMC_WAIT_TIMING_BEFORE_WS;      /* 关闭突发模式,此参数无效 */
  45.         hsram.Init.WriteOperation     = FSMC_WRITE_OPERATION_ENABLE;     /* 用于使能或者禁止写保护 */
  46.         hsram.Init.WaitSignal         = FSMC_WAIT_SIGNAL_DISABLE;        /* 关闭突发模式,此参数无效 */
  47.         hsram.Init.ExtendedMode       = FSMC_EXTENDED_MODE_DISABLE;      /* 禁止扩展模式 */
  48.         hsram.Init.AsynchronousWait   = FSMC_ASYNCHRONOUS_WAIT_DISABLE;  /* 用于异步传输期间,使能或者禁止等待信号,这里选择关闭 */
  49.         hsram.Init.WriteBurst         = FSMC_WRITE_BURST_DISABLE;        /* 禁止写突发 */
  50.         hsram.Init.ContinuousClock    = FSMC_CONTINUOUS_CLOCK_SYNC_ONLY; /* 仅同步模式才做时钟输出 */
  51.     hsram.Init.WriteFifo          = FSMC_WRITE_FIFO_ENABLE;          /* 使能写FIFO */

  52.         /* 初始化SRAM控制器 */
  53.         if (HAL_SRAM_Init(&hsram, &SRAM_TimingRead, &SRAM_TimingWrite) != HAL_OK)
  54.         {
  55.                 /* 初始化错误 */
  56.                 Error_Handler(__FILE__, __LINE__);
  57.         }       
  58. }
复制代码


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
 楼主| 发表于 2020-6-26 01:31:04 | 显示全部楼层
1.jpg
回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2020-6-26 08:20:30 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 03:11 , Processed in 0.047539 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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