[ZLG-ARM] LPC2214外接nandflash的读写问题

[复制链接]
 楼主| hhmicro 发表于 2007-2-25 19:20 | 显示全部楼层 |阅读模式
我用的是LPC2214,外部FLASH是K9F2808U0C,使用的是&nbsp;LPC2100的模板,程序写进去后,感觉,擦除,读写子程序都没有运行.怀疑是不是需要对某些相关寄存器或者模板的什么地方需要修改一下.<br />ncs0配置为8位总线<br />哪位高手能给我个指导!谢谢!<br />LPC2214外接nandflash的读写问题
 楼主| hhmicro 发表于 2007-2-26 13:40 | 显示全部楼层

补充源程序

现在用k9f1208接lpc2214<br />ale,cle&nbsp;接到了i/o口上<br />时序正确<br />读id的程序和总线配置,我是用片内ram调试的<br /><br />int&nbsp;main&nbsp;(void)<br />{//&nbsp;add&nbsp;user&nbsp;source&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;uint16&nbsp;*data;<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;unsigned&nbsp;&nbsp;int&nbsp;*adder1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;data=(uint16&nbsp;*)0x80000000;<br />&nbsp;&nbsp;&nbsp;&nbsp;adder1&nbsp;=(uint32&nbsp;*)0x81000000;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚连接GPIO&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;   IO0DIR&nbsp;=&nbsp;CA_LE;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=0x90;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x1800);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*adder1&nbsp;=&nbsp;*data&lt&lt8;<br />&nbsp;&nbsp;&nbsp;&nbsp;*adder1&nbsp;|=&nbsp;*data;<br />}<br /><br />总线的配置<br />;/*&nbsp;Define&nbsp;the&nbsp;Bus&nbsp;Speed&nbsp;*/<br />BCFG0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE00000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK0&nbsp;/&nbsp;CS0<br />BCFG1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE00004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK1&nbsp;/&nbsp;CS1<br />BCFG2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE00008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK2&nbsp;/&nbsp;CS2<br />BCFG3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE0000C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK3&nbsp;/&nbsp;CS3<br /><br />BCFG_08DEF&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;&nbsp;8Bit&nbsp;Bus<br />BCFG_16DEF&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10000400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;16Bit&nbsp;Bus<br />BCFG_32DEF&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20000400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;32Bit&nbsp;Bus<br /><br /><br />;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;IDCY&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;WST1&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;WST2&nbsp;&nbsp;&nbsp;&nbsp;<br />;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Idle&nbsp;width&nbsp;|&nbsp;Read&nbsp;width&nbsp;|&nbsp;Write&nbsp;width<br />;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0x00&nbsp;~&nbsp;0x0f|&nbsp;0x00&nbsp;~&nbsp;0x1f|&nbsp;0x00~0x1f<br />BCFG_FLASH&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_08DEF&nbsp;|&nbsp;(0x0f&lt&lt00)&nbsp;|&nbsp;(0x0f&lt&lt05)&nbsp;|&nbsp;(0x0f&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;For&nbsp;90ns&nbsp;Flash<br />BCFG_PSRAM&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_16DEF&nbsp;|&nbsp;(0x0f&lt&lt00)&nbsp;|&nbsp;(0x0f&lt&lt05)&nbsp;|&nbsp;(0x0f&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;For&nbsp;70ns&nbsp;PSRAM<br />BCFG_CS2&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_16DEF&nbsp;|&nbsp;(0x0f&lt&lt00)&nbsp;|&nbsp;(0x1f&lt&lt05)&nbsp;|&nbsp;(0x1f&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;Blank&nbsp;<br />BCFG_CS3&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_16DEF&nbsp;|&nbsp;(0x01&lt&lt00)&nbsp;|&nbsp;(0x03&lt&lt05)&nbsp;|&nbsp;(0x03&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;For&nbsp;Peripheral&nbsp;Equipment
zlgARM 发表于 2007-2-26 13:54 | 显示全部楼层

RE

给您两个链接参考:<br />https://bbs.21ic.com/club/bbs/list.asp?boardid=39&page=1&t=2434206&tp=%u5728%u7EBF%u8BF7%u6559zlgARM%u7B49%u8BF8%u4F4D%u5927%u867E%uFF0C2294%u8BBF%u95EE%u5916%u90E8%u5730%u5740%u7684%u95EE%u9898<br /><br /><br /><br />https://bbs.21ic.com/club/bbs/list.asp?boardid=39&page=1&t=2431091&tp=%u7528H-JTAG%u70E7%u5199LPC2292%u7247%u5916SST39VF1601%u7684%u95EE%u9898%uFF0C%u5E2E%u5FD9%uFF0C555
 楼主| hhmicro 发表于 2007-2-26 17:00 | 显示全部楼层

再补源程序,请zlgARM帮忙!

按照您给的链接看了,第一个帮助比较大<br />片外Flash为k9f1208,8位io的,64M;<br />RE&nbsp;&nbsp;WE&nbsp;&nbsp;ALE&nbsp;&nbsp;CLE&nbsp;分别接到CPU的OE&nbsp;&nbsp;WE&nbsp;&nbsp;P0.11(GPIO)&nbsp;&nbsp;&nbsp;P0.12(GPIO)上;<br />CE通过CPLD接过来,CPLD的另一端也接的是CPU的NCS0;<br /><br />/**********************************************************/<br />总线的配置<br />;/*&nbsp;Define&nbsp;the&nbsp;Bus&nbsp;Speed&nbsp;*/<br />BCFG0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE00000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK0&nbsp;/&nbsp;CS0<br />BCFG1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE00004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK1&nbsp;/&nbsp;CS1<br />BCFG2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE00008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK2&nbsp;/&nbsp;CS2<br />BCFG3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFE0000C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;Control&nbsp;Word&nbsp;of&nbsp;BANK3&nbsp;/&nbsp;CS3<br /><br />BCFG_08DEF&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;&nbsp;8Bit&nbsp;Bus<br />BCFG_16DEF&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10000400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;16Bit&nbsp;Bus<br />BCFG_32DEF&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20000400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//&nbsp;32Bit&nbsp;Bus<br /><br /><br />;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;IDCY&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;WST1&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;WST2&nbsp;&nbsp;&nbsp;&nbsp;<br />;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Idle&nbsp;width&nbsp;|&nbsp;Read&nbsp;width&nbsp;|&nbsp;Write&nbsp;width<br />;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0x00&nbsp;~&nbsp;0x0f|&nbsp;0x00&nbsp;~&nbsp;0x1f|&nbsp;0x00~0x1f<br />BCFG_FLASH&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_08DEF&nbsp;|&nbsp;(0x1f&lt&lt00)&nbsp;|&nbsp;(0x1f&lt&lt05)&nbsp;|&nbsp;(0x0f&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;For&nbsp;90ns&nbsp;Flash<br />BCFG_PSRAM&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_16DEF&nbsp;|&nbsp;(0x0f&lt&lt00)&nbsp;|&nbsp;(0x0f&lt&lt05)&nbsp;|&nbsp;(0x0f&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;For&nbsp;70ns&nbsp;PSRAM<br />BCFG_CS2&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_16DEF&nbsp;|&nbsp;(0x0f&lt&lt00)&nbsp;|&nbsp;(0x1f&lt&lt05)&nbsp;|&nbsp;(0x1f&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;Blank&nbsp;<br />BCFG_CS3&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(BCFG_16DEF&nbsp;|&nbsp;(0x01&lt&lt00)&nbsp;|&nbsp;(0x03&lt&lt05)&nbsp;|&nbsp;(0x03&lt&lt11))&nbsp;&nbsp;&nbsp;;//&nbsp;For&nbsp;Peripheral&nbsp;Equipment<br /><br />这里的RBLE为1;<br />ncs0接的是最慢的总线,为0x1f;<br />/**********************************************************/<br />PINSEL2的设置没有改过;用的是lpc2100模板<br /><br />;初始化外部总线控制器,根据目标板决定配置<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=PINSEL2<br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;:DEF:&nbsp;EN_CRP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=0x0f814910<br />&nbsp;&nbsp;&nbsp;&nbsp;ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=0x0f814914<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=BCFG0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=BCFG_FLASH<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=BCFG1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=BCFG_PSRAM<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=BCFG2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=BCFG_CS2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=BCFG3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=BCFG_CS3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitStack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;初始化堆栈&nbsp;Initialize&nbsp;the&nbsp;stack<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TargetResetInit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;目标板基本初始化&nbsp;Initialize&nbsp;the&nbsp;target&nbsp;board<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;跳转到c语言入口&nbsp;Jump&nbsp;to&nbsp;the&nbsp;entry&nbsp;point&nbsp;of&nbsp;C&nbsp;program<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__main<br /><br /><br />/***************************************************/<br />源程序,只写到了读芯片id,擦出和写入<br />#include&nbsp;&quot;config.h&quot;<br />//#define&nbsp;LED_ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x82000000;<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CA_LE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00001800&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />void&nbsp;&nbsp;DelayNS(uint32&nbsp;&nbsp;dly)<br />{&nbsp;&nbsp;&nbsp;uint32&nbsp;&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(;&nbsp;dly&gt0;&nbsp;dly--)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt5000;&nbsp;i++);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br /><br />int&nbsp;main&nbsp;(void)<br />{//&nbsp;add&nbsp;user&nbsp;source&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;uint8&nbsp;*data;<br />&nbsp;&nbsp;&nbsp;&nbsp;//unsigned&nbsp;short&nbsp;int&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;unsigned&nbsp;&nbsp;int&nbsp;*adder1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//unsigned&nbsp;int&nbsp;&nbsp;id1,id2;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;data=(uint8&nbsp;*)0x80000000;<br />&nbsp;&nbsp;&nbsp;&nbsp;adder1&nbsp;=(uint32&nbsp;*)0x81000000;<br />&nbsp;&nbsp;&nbsp;&nbsp;//adder2&nbsp;=(uint32&nbsp;*)0x81000008;<br />&nbsp;&nbsp;&nbsp;&nbsp;//PINSEL2=((PINSEL2&0xf07fffff)|(0x38&lt&lt20));<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚连接GPIO&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0DIR&nbsp;=&nbsp;CA_LE;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//for(;;)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=0x90;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x1800);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*adder1&nbsp;=&nbsp;*data&lt&lt8;<br />&nbsp;&nbsp;&nbsp;&nbsp;*adder1&nbsp;|=&nbsp;*data;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(;;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;_&nbsp;&nbsp;&nbsp;*adder2&nbsp;=&nbsp;*data;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />/*****************************************************************************************************************/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;block&nbsp;=&nbsp;0x02;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;blockpage&nbsp;=&nbsp;(block&lt&lt5);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;uint8&nbsp;*data;<br />&nbsp;&nbsp;&nbsp;&nbsp;data=(uint8&nbsp;*)0x80000000;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚连接GPIO&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0DIR&nbsp;=&nbsp;CA_LE;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0x60;&nbsp;//设置擦写模式&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;(blockpage&0xff);&nbsp;//&nbsp;A9_A16,(Page&nbsp;Address)&nbsp;,&nbsp;是基于块擦<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;((blockpage&gt&gt8)&0xff);&nbsp;//&nbsp;A17_A24,(Page&nbsp;Address)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;((blockpage&gt&gt16)&0xff);&nbsp;//&nbsp;A25,&nbsp;(Page&nbsp;Address)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0xd0;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt10;i++);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />/*****************************************************************************************************************/&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;block&nbsp;=0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;page&nbsp;=0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;a[528];<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;blockpage&nbsp;=&nbsp;(block&lt&lt5)+page;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;uint16&nbsp;*data;<br />&nbsp;&nbsp;&nbsp;&nbsp;data=(uint16&nbsp;*)0x80000000;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚连接GPIO&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0DIR&nbsp;=&nbsp;CA_LE;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt528;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a=0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0x0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;从A区开始写&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0x80;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;写第一条命令&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;A0_A7&nbsp;位(Column&nbsp;Address)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;blockpage&0xff;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;A9_A16,(Page&nbsp;Address)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;(blockpage&gt&gt8)&0xff;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;A17_A24,(Page&nbsp;Address)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;(blockpage&gt&gt16)&0xff;//&nbsp;A25&nbsp;(Page&nbsp;Address)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt528;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;a;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;(IO0SET|0x1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;(IO0CLR|0x0800);<br />&nbsp;&nbsp;&nbsp;&nbsp;*data&nbsp;=&nbsp;0x10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;结束写命令&nbsp;<br /><br />}<br /><br /><br />这个程序我是分为三部分(读id,擦出,写入)调试的,所以看上去有些重复定义;<br /><br />还有我想向zlgARM请教,我向0X0000处擦出或写入,会不会影响芯片的ID,他不是就在0X0000处吗<br />
grantxie 发表于 2007-3-18 14:36 | 显示全部楼层

NXP LPC2200+NAND参考设计

http://www.standardics.nxp.com/support/documents/microcontrollers/pdf/an10600.pdf<br />http://www.standardics.nxp.com/support/documents/microcontrollers/zip/code.lpc2200.nand.zip
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部