霸道板子
以读时序为例
模式A 读时序
________________
NOE \__________________________________
| | |
| | |
(ADDSET+1) (DATAST+1) 2HCLK
|<--------------------> <----------------------->| <----------->|
地址建立时间 数据保持时间 从这里数据有效后就可以读取了
我的理解:
(ADDSET+1) :地址建立时间 与IS62芯片时序同样,在OE为高期间为地址建立时间
(DATAST+1): 数据保持时间 在OE拉低直到DATA VALID有效才可以读取数据
我又看寄存器:
SRAM/NOR闪存片选时序寄存器 1…4 (FSMC_BTR1…4)
DATAST:数据保持时间 (Data-phase duration)
0000 0000:保留
0000 0001:DATAST保持时间=2个HCLK时钟周期
ADDSET:地址建立时间 (Address setup phase duration)
0000:ADDSET建立时间=1个HCLK时钟周期
1111:ADDSET建立时间=16个HCLK时钟周期(这是复位后的默认数值)。
我的理解:
ADDSET设置为1 时,其实是2个HCLK时钟周期
ADDSET设置为3 时,其实是4个HCLK时钟周期
DATAST设置为1时,其实是2个HCLK时钟周期
ADDSET设置为3 时,其实是4个HCLK时钟周期
我看库函数里面是这样的
FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank+1] =
(uint32_t)FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime << 4) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime << 8) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration << 16) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision << 20) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency << 24) |
FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode;
是直接把我们写的ADDSET值写进FSMC_BTR1的 位3:0 ADDSET:地址建立时间
那么在计算的时候: ADDSET = 0
(ADDSET+1) :地址建立时间 ------------- ADDSET + 1 > 0ns =====> ( 0 + 1) + 1 = 2HCLK = 27.6 ns > 0ns
DATAST = 1
(DATAST+1): 数据保持时间 ----------- DATAST + 1 > 25ns =====> ( 1 + 1 ) + 1 = 3HCLK = 41.4 ns > 25ns
我 在 (ADDSET+1)地址建立阶段, ADDSET的值设置为1时,在计算时需要加1,因为
ADDSET:地址建立时间 (Address setup phase duration)
0000:ADDSET建立时间=1个HCLK时钟周期
1111:ADDSET建立时间=16个HCLK时钟周期(这是复位后的默认数值)。
这个地方我感觉我理解的对呀,懵逼了,请大师帮我缕缕思路吧
老师写的
//1. ADDSET+1+DATAST+1 +2 >55ns
//2. DATAST+1 > 25ns
//3. ADDSET+1 > 0ns |