SAMA5D3X芯片的NandFlash控制器(NFC)操作详解

1、Nandfash不能直接挂在地址总线上,要读写NandFlash必须按一定的步骤发送命令、地址,然后接着是数据的输入/输出等操作,所以现在大部分的SOC芯片都集成了专用与访问NandFlash的控制器(NFC)。

 

2、一般的SOC芯片的NFC具有命令寄存器、地址寄存器,其中命令寄存器用来存放将要发送到NandFlash的命令,而地址寄存器就是和命令相对应的NandFlash操作地址。但是在SAMA5D3X系列的芯片中,你会发现找不到命令寄存器和地址寄存器。唯一一个和命令寄存器相关的信息如下:

这不是命令寄存器,这是“NFC Address Command”,直接翻译过来就是“NFC 地址命令”

同样地,你也找不到对应的地址寄存器,和地址寄存器有点相近的是:

这也不全是地址寄存器。

问题:如何向通过NFC向NandFlash发送命令和地址?

 

3、SAMA5D3X中确实没有所谓的命令寄存器和地址寄存器,它是通过向“命令寄存器组”写“数据”来完成向NandFlash发送命令和地址的。在SAMA5D3X系列的datasheet中Memory部分:

如上图中的标记部分就是“命令寄存器组了”,它不是SFR(Special Function Register),因为它的地址范围是0x7000_0000开始的256M。如果向此区域写入一个32bit的数据,则:

1)写入的地址或者操作的地址(范围如上图标记部分)就是操作Flash命令的组合,地址即Flash命令;

2)写入的数据,就是和操作Flash对应的Flash地址,数据即Flash地址;

举个例子,向地址0x701F_E4BC中写入0x00FF_AA55,那么地址“0x701F_E4BC”就是操作NandFlash的命令的组合(具体怎么由命令组成地址,见下文),而数据“0x701F_AA55”就是与命令对应的NandFlash地址。由此可见,如果要从NandFlash中读数据,则将“读Flash的命令”按一定的规则组合成地址,将Flash的地址当做数据写入由“读Flash的命令”组成的地址中。这样NFC就会自动发送读Flash命令,然后发送Flash地址,接着是读取数据等操作。

 

4、操作Flash的命令如何组成“命令寄存器组”的地址:

 

其中的

CMD1域就是第一个Flash命令;

CMD2是第二Flash命令;

VCMD2 == 1表明此时操作有两个命令组成,即CMD1和CMD2,VCMD2 == 0表明只需发送CMD1;

ACYCLE是Flash地址周期数,有些Flash需要发送4个Byte地址周期,而有些需要发送5个Byte的地址周期;

CSID是片选信号,给出了在本次命令中,NCS[0~3]中哪个片选有效;

DATAEN == 1,表明命令之后有数据传输(或写,或读),DATAEN == 0,表明只是设置命令;

NFCWR==1,表明是向Flash写数据,而NFCER==0表明是从Flash读数据。

由此可见,将要操作的命令按上述规则组成“命令寄存器组”的地址,然后向此地址写入一个32bit的“Flash地址”,即可让NFC自动发送命令,并完成数据的读出或者写入。

 

5、如果Flash地址由5个周期的Byte组成,而按写“Flash地址”到“命令寄存器组”的方式,最多只能写32bit,即4Byte的地址。此时如何解决?

若有5个地址周期,则NFC中有一个专用的SFR,NFC Address cycle zero Register,如下图:

所以,在5个Byte的地址周期情况下,应该将5个Byte的地址周期分成两部分,一个是最前面的一个Byte,写入“NFC Address cycle zero Register”中,另外的4个Byte的地址当做数据写入“命令寄存器组”中。

 

6、在向“命令寄存器组”写入“Flash地址”的数据之后,NFC或自动向NandFlash发送命令和n个地址周期,如果是读写操作,NFC也会自动完成读写。NFC要完成自动读写,必须知道外部NandFlash设备的block size、page size以及其他时序等参数,这时NFC就通过用户先前在SFR中配置的参数进行操作。而也有一个专用的NFC SRAM内存来缓存读入、写出的数据。例如,在读Flash时,在向“命令寄存器组”特定的地址写入“读Flash地址”的数据之后,NFC发出读命令,然后发出n个地址周期,接着是读出数据,并将读到的数据保存到NFC SRAM中。当这一系列动作完成后,用户可以从NFC SRAM中得到从Flash中读出的数据。如果要向Flash写入数据,则在向“命令寄存器组”特定地址写入“Flash地址”数据之前,必须先在NFC SRAM中准备好写入的数据,之后NFC自动会将NFC SRAM中的数据写入Flash。

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值