cookid
驱动牛犊
驱动牛犊
  • 注册日期2003-03-19
  • 最后登录2005-03-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1045回复:3

新手提问:关于AN2131QC和NAND Flash。。。斤分

楼主#
更多 发布于:2003-05-16 22:46
只用了两个端点: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个字节,这怎么办呢?
jerson80216
驱动牛犊
驱动牛犊
  • 注册日期2003-02-27
  • 最后登录2004-12-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-17 11:14
我的理解:

 可以分包传送啊! 比如220字节的传输分为了4个包传输。
 分别为64,64,64,28字节。
cookid
驱动牛犊
驱动牛犊
  • 注册日期2003-03-19
  • 最后登录2005-03-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-17 12:51
那我在我的ISR里面应该怎么实现这样的分包传输呢??唉,,被搞得脑子都糊了,,想不清楚,,大侠指点迷津吖//bow!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-23 23:20
我觉得你的片子里应该有个寄存器来存放每次传输总的数据量,比如jerson说的,如果是220,那么你把这个数赋给一个全局变量,然后读取64字节的数据,同时把这个变量减去你读出的数量,当下一个64字节包来到是查询这个全局变量的值,如果大于64,那就在读出64字节,以此类推,直到把所有的数据都读出为止,如果总数大于一页512,那就当读出512时换页,这样不就解决问题了吗?
游客

返回顶部