登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

求教ST工程师:STR710与NAND512W3A的接口时序问题

作者:wxhwjf 栏目:MCU技术
求教ST工程师:STR710与NAND512W3A的接口时序问题
ST工程师: 我在项目中遇到一个问题,设计中参考ST公司的资料AN2287采用一片STR710F和一片NAND FLASHNAND512W3A)连接,他们之间的接口如下图。这里我将FLASH的ALE、CLE、WP、R/B 全部连接到STR710的地址线上,同时在程序中将这些地址线做初始化时按照复用功能(也就是做地址线)定义: EMI_Config(3,EMI_ENABLE | EMI_WAITSTATE(3) | EMI_SIZE_8); GPIO_Config(GPIO2,0x0008,GPIO_AF_PP); //config P2.3 as NANF_/CS GPIO_Config(GPIO2,0x0010,GPIO_AF_PP); //config P2.4 as NANF_/WP GPIO_Config(GPIO2,0x0020,GPIO_AF_PP); //config P2.5 as NANF_CLE GPIO_Config(GPIO2,0x0040,GPIO_AF_PP); //config P2.6 as NANF_ALE GPIO_Config(GPIO2,0x0080,GPIO_IN_TRI_CMOS); //config P2.7 as NANF_R/B 这样对NAND FLASH的操作就完全是对相应地址的读写操作了。但这里发现一个问题,就是在FLASH的芯片资料中说明,当写入命令或地址时,CLE和ALE(对应MCU的地址线)在写信号WE的上升沿锁存时保持时间至少应达到10ns,而MCU的芯片说明中写信号WE发出之后,地址线在WE的上升沿后的保持时间只有3ns,这样一来他们之间的时序就不匹配了。用示波器测试结果也是3ns。这是不是说他们之间接口时一定要把这几条线要按照I/O口的方式使用,而不能完全作为地址线操作?另外我参考的ST资料AN2287就是讲这两者之间如何接口的,给出的代码我看了,发现初始化时有的也是按照I/O口的方式,而有的是按照地址线初始化。完全按I/O口线控制是没问题的,但速度慢,我现在就想改成地址总线映射控制的方式来提高速度,同时不必再加其他的胶合逻辑电路。请教各位看能否可行。谢谢! http://h:ttt.jpg/

2楼: >>参与讨论
wxhwjf
求教ST工程师时序问题(重发一次,刚才图没有帖上)

ST工程师:
        我在项目中遇到一个问题,设计中参考ST公司的资料AN2287采用一片STR710F和一片NAND FLASHNAND512W3A)连接,他们之间的接口如下图。这里我将FLASH的ALE、CLE、WP、R/B 全部连接到STR710的地址线上,同时在程序中将这些地址线做初始化时按照复用功能(也就是做地址线)定义:
EMI_Config(3,EMI_ENABLE | EMI_WAITSTATE(3) | EMI_SIZE_8);
GPIO_Config(GPIO2,0x0008,GPIO_AF_PP);         //config P2.3 as NANF_/CS
GPIO_Config(GPIO2,0x0010,GPIO_AF_PP);        //config P2.4 as NANF_/WP
GPIO_Config(GPIO2,0x0020,GPIO_AF_PP);        //config P2.5 as NANF_CLE
GPIO_Config(GPIO2,0x0040,GPIO_AF_PP);        //config P2.6 as NANF_ALE
GPIO_Config(GPIO2,0x0080,GPIO_IN_TRI_CMOS);         //config P2.7 as NANF_R/B
        这样对NAND FLASH的操作就完全是对相应地址的读写操作了。但这里发现一个问题,就是在FLASH的芯片资料中说明,当写入命令或地址时,CLE和ALE(对应MCU的地址线)在写信号WE的上升沿锁存时保持时间至少应达到10ns,而MCU的芯片说明中写信号WE发出之后,地址线在WE的上升沿后的保持时间只有3ns,这样一来他们之间的时序就不匹配了。用示波器测试结果也是3ns。这是不是说他们之间接口时一定要把这几条线要按照I/O口的方式使用,而不能完全作为地址线操作?另外我参考的ST资料AN2287就是讲这两者之间如何接口的,给出的代码我看了,发现初始化时有的也是按照I/O口的方式,而有的是按照地址线初始化。完全按I/O口线控制是没问题的,但速度慢,我现在就想改成地址总线映射控制的方式来提高速度,同时不必再加其他的胶合逻辑电路。请教各位看能否可行。谢谢!

h:ttt.jpg

3楼: >>参与讨论
香水城
哈哈,图还是没有贴上来。明天上班后会有人帮你解答问题的。
初步地看,如果地址线的保持时间不够的话,CLE和ALE应由I/O口的方式控制,这样对速度的影响应该不会有太大的影响。CE必须由I/O口的方式控制,以防有中断时CE发生变化。

以读一个512字节的页为例,应有如下操作:
CE=0
CLE=1,ALE=0
写命令00H
CLE=0,ALE=1
写地址字节1
写地址字节2
写地址字节3
写地址字节4
写地址字节5
CLE=0,ALE=0
while (R/B == Low); // 等候R/B变为Ready
读512个数据字节
CE=1


上述例子中,标为红色的操作应是I/O操作,可以看到这三行在整个页读出的操作中所占比例很小。

4楼: >>参与讨论
wxhwjf
谢谢香水城,我知道了。
 
5楼: >>参与讨论
lut1lut
STR71和NAND512W3A的接口时序

最好NAND512W3A的片选也用STR71的EMI上的片选信号。
EMI上的CS和R或者W信号的时序符合FLASH上的片选和读写使能信号的要求。
(1)FLASH上的tELWL,即使能(片选)信号拉低,到读写信号拉低的时间间隔要求为最小可以是10ns(当然是前者先被拉低);而STR7的EMI上片选信号与读写使能信号是同时拉低的。符合要求
(2)FLASH上的tWHEH,即读写信号跳高后,片选信号还应该保持低的时间要求为10ns;而STR7的EMI方面二者的间隔为最小是20ns,最大是22.5ns。 也完全符合要求。

这样做的好处是:若是用IO口控制FLASH的片选。若是先选中了该FLASH,这个时候来了个中断,导致对EMI其它bank上挂的外部DEVICE的操作。那么数据总线上的信息就会同样影响到该IO口控制的FLASH。而使用EMI上的片选信号则可以避免这个问题。

6楼: >>参与讨论
kingor_888
我也刚看,明天自己试试先
 
7楼: >>参与讨论
kingor_888
st有ecc的资料吗?在其an上找不早。
谢谢!

8楼: >>参与讨论
香水城
借你一个ECC的说明,用完了记得还回来


• ECC scheme
In the case of the ECC scheme adopted for this Format Specification, 22 bits of ECC (Error
Correction Code) are added for every 256 bytes of the Storing area. ECC Field-1 and ECC
Field-2 are used for Storing Area-1 and Storing Area-2, respectively.

The ECC scheme is capable of SINGLE-bit correction and 2-bit random-error detection. ECCs
are generated ONLY for data areas and no ECC is generated for page-data redundant areas
containing ECCs. This is because the data in the page-data redundant area is duplicated for
reliability and this duplication (redundancy) provides a means of checking the integrity of the
data. For ECC calculations, 256 bytes are handled in the form of 2048-bit serial data. In the
event of an error, the error-correction feature can detect the bit location of the error that has
occurred based on the results of a parity check and correct the data.

• Definition of the Location Addresses of 2048-Bit Serial Data
256 bytes are arranged in a serial-data format or a SINGLE stream of bits.
bit 7bit 6------------bit 1bit 0
1st Byte00000000 11100000000 11000000000 00100000000 000
2nd Byte00000001 11100000001 11000000001 00100000001 000
255th Byte11111110 11111111110 11011111110 00111111110 000
256th Byte11111111 11111111111 11011111111 00111111111 000


In the above diagram, the top row represents the first byte input and the bottom row
represents the 256th byte input. In other words, Bit 0 of the first byte becomes the first bit
(whose address is 00000000 000) of the 2048-bit stream while bit 7 of the 256th byte becomes
the 2048th bit (address = 11111111 111) of the 2048-bit stream.

• Generation of Parity Data
There are a total of 22 bits of parity data (6 bits for column parity and 16 bits for LINE parity)
as follows: CP0, CP1, CP2, CP3, CP4, CP5, LP00, LP01, LP02, LP03, ..., LP14, and LP15. The parity data that have been generated are stored in the page-data redundant area in the order
shown below:

ECC Data Arrangement[TR][TR][TR]
bit7bit6bit5bit4bit3bit2bit1bit0256+8 Bytes/Page512+16 Bytes/Page
LP07LP06LP05LP04LP03LP02LP01LP00256, 261 Bytes520, 525 Bytes
LP15LP14LP13LP12LP11LP10LP09LP08257, 262 Bytes521, 526Bytes
CP5CP4CP3CP2CP1CP0“1”“1”258, 263 Bytes522, 527Bytes


LINE parity (LP) and column parity (CP) represent 1024-bit odd parity. Each parity data
satisfies the corresponding condition shown below:

LP00 = D (*******0 , ***)  CP0 = D (******** , **0)
LP01 = D (*******1 , ***)  CP1 = D (******** , **1)
LP02 = D (******0* , ***)  CP2 = D (******** , *0*)
LP03 = D (******1* , ***)  CP3 = D (******** , *1*)
LP04 = D (*****0** , ***)  CP4 = D (******** , 0**)
LP05 = D (*****1** , ***)  CP5 = D (******** , 1**)
LP06 = D (****0*** , ***)
LP07 = D (****1*** , ***)  Where * represents “0” or “1”.
LP08 = D (***0**** , ***)
LP09 = D (***1**** , ***)
LP10 = D (**0***** , ***)
LP11 = D (**1***** , ***)
LP12 = D (*0****** , ***)
LP13 = D (*1****** , ***)
LP14 = D (0******* , ***)
LP15 = D (1******* , ***)

9楼: >>参与讨论
starm
Re: 使用EMI上的片选信号则可以避免这个问题
能够给出NAND FLASH 和 STR710 具体的连接示意图?
是否图片中红色方框信号不采用gpio模式, 而是使用
emi模式自动控制?

10楼: >>参与讨论
lut1lut
Re starm
嗯,我现在就是把ALE和CLE两根NAND FLASH上的信号线由STR71x的GPIO控制的;NAND FLASH的片选信号仍然由STR71x的CS.3控制的。(我是挂在EMI的bank 3上的)其余连接同上。

11楼: >>参与讨论
yzhu
提供一篇参考文章
文中第一种方式接可行。 http://www.cirrus.com/en/pubs/appNote/AN266REV1.pdf

参与讨论
昵称:
讨论内容:
 
 
相关帖子
STR91X_F外部中断怎么设置?用P60做中断
DVSTR710B开发板使用的FAQ
谁有STR912的 BSPI与M25P10的测试程序
STR91X定时器
请教各位几个问题?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号