阅读:1045回复:3
新手提问:关于AN2131QC和NAND Flash。。。斤分
只用了两个端点:2IN和2OUT,使用快速BULK传输:
mov dptr,#FASTXFR mov a,#01000000b ;FBLK=1 movx @dptr,a mov dptr,#AUTOPTRH mov a,HIGH(IN2BUF) movx @dptr,a mov dptr,#AUTOPTRL mov a,LOW(IN2BUF) movx @dptr,a 然后在2OUT的中断服务程序ISR_Ep2out()里面判断host传来的COMMAND的类型,如果是COMMAND_READ,就写command、写页地址 到flash,然后从数据总线读数据到2131内部模拟的FIFO,读完以后 置BSY为1,使IN2端点能够响应host的IN传输。可是NAND Flash 的一页是512个字节,而IN2BUF只有64个字节,这怎么办呢? |
|
沙发#
发布于:2003-05-17 11:14
我的理解:
可以分包传送啊! 比如220字节的传输分为了4个包传输。 分别为64,64,64,28字节。 |
|
板凳#
发布于:2003-05-17 12:51
那我在我的ISR里面应该怎么实现这样的分包传输呢??唉,,被搞得脑子都糊了,,想不清楚,,大侠指点迷津吖//bow!
|
|
地板#
发布于:2003-05-23 23:20
我觉得你的片子里应该有个寄存器来存放每次传输总的数据量,比如jerson说的,如果是220,那么你把这个数赋给一个全局变量,然后读取64字节的数据,同时把这个变量减去你读出的数量,当下一个64字节包来到是查询这个全局变量的值,如果大于64,那就在读出64字节,以此类推,直到把所有的数据都读出为止,如果总数大于一页512,那就当读出512时换页,这样不就解决问题了吗?
|
|