SST39VF6401操作的API接品函数

[复制链接]
 楼主| 芯行天下 发表于 2008-8-25 09:37 | 显示全部楼层 |阅读模式
HI&nbsp;,大家好,今天是2008年的第一天,不知大家上班是否很忙呢?<br />随着项目的进展,工作也越来起忙了,虽然是第一天也没有一点空闲呀,上午写了一个对SST39VF6401操作的API函数,这也是我整个项目中要使用的一个小模块,做好了放到这里以备后用。<br />&nbsp;<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&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;*/<br />/*&nbsp;文件名称:.c&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&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;*/<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;作&nbsp;者:&nbsp;&nbsp;&nbsp;magicchip&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;*/<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;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&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;*/<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*********************************************************/<br />#i&nbsp;nclude&nbsp;&quot;..srcconfig.h&quot;<br />//#define&nbsp;&nbsp;&nbsp;rstflash(void)&nbsp;&nbsp;&nbsp;&nbsp;(IO1SET&nbsp;=&nbsp;SST39VF6401RST,DelayNS(1),IO1CLR&nbsp;=&nbsp;SST39VF6401RST)<br />//&nbsp;&nbsp;rstflash();<br />/********************************************************************************************************<br />**&nbsp;函数名称:void&nbsp;resetsst(void)<br />**&nbsp;函数功能:对flash存储器进行复位<br />**&nbsp;入口参数:无<br />**&nbsp;出口参数:无<br />**&nbsp;create&nbsp;by:&nbsp;&nbsp;&nbsp;magicchip<br />**&nbsp;create&nbsp;data:&nbsp;2007/12/28<br />********************************************************************************************************/<br />void&nbsp;RESETSST(void)<br />{<br />&nbsp;&nbsp;uint16&nbsp;*rstaddr;&nbsp;<br />&nbsp;&nbsp;IO1CLR&nbsp;=&nbsp;SST39VF6401RST;<br />&nbsp;&nbsp;DelayNS(1);<br />&nbsp;&nbsp;IO1SET&nbsp;=&nbsp;SST39VF6401RST;<br />&nbsp;&nbsp;rstaddr&nbsp;=&nbsp;(uint16&nbsp;*)0x81000000;<br />&nbsp;&nbsp;*rstaddr&nbsp;=&nbsp;0x00f0;<br />&nbsp;&nbsp;rstaddr&nbsp;=&nbsp;(uint16&nbsp;*)0x82000000;<br />&nbsp;&nbsp;*rstaddr&nbsp;=&nbsp;0x00f0;&nbsp;&nbsp;&nbsp;<br />}<br />/********************************************************************************************************<br />**&nbsp;函数名称:bool&nbsp;writesst(uint32&nbsp;writesstaddr,&nbsp;uint16&nbsp;*writesstdata,uint8&nbsp;writesstlen)<br />**&nbsp;函数功能:对flash存储器进行写操作<br />**&nbsp;入口参数:存数据的起始地址,写数据的起始地址,写数据的长度<br />**&nbsp;出口参数:ture&nbsp;or&nbsp;false<br />**&nbsp;create&nbsp;by:&nbsp;&nbsp;&nbsp;magicchip<br />**&nbsp;create&nbsp;data:&nbsp;2008/01/02<br />********************************************************************************************************/<br />bool&nbsp;writesst(uint32&nbsp;writesstaddr,&nbsp;uint16&nbsp;*writesstdata,uint32&nbsp;writesstlen)<br />{<br />&nbsp;&nbsp;volatile&nbsp;uint16&nbsp;*sstaddr;<br />&nbsp;&nbsp;uint16&nbsp;sstdatatemp[2];<br />&nbsp;&nbsp;uint32&nbsp;addr;<br />&nbsp;&nbsp;uint32&nbsp;i;<br />&nbsp;&nbsp;addr&nbsp;=&nbsp;(writesstaddr&nbsp;&&nbsp;0xff000000);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;for&nbsp;(&nbsp;;writesstlen&gt0;writesstlen--)<br />&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sstaddr&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00005555*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*sstaddr&nbsp;=&nbsp;0x00aa;<br />&nbsp;&nbsp;&nbsp;&nbsp;sstaddr&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00002aaa*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*sstaddr&nbsp;=&nbsp;0x0055;<br />&nbsp;&nbsp;&nbsp;&nbsp;sstaddr&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00005555*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*sstaddr&nbsp;=&nbsp;0x00a0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sstaddr&nbsp;=&nbsp;(uint16&nbsp;*)writesstaddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;*sstaddr&nbsp;=&nbsp;*writesstdata;<br />&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;100;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sstdatatemp[0]&nbsp;=&nbsp;*sstaddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sstdatatemp[1]&nbsp;=&nbsp;*sstaddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((sstdatatemp[0]&nbsp;&&nbsp;0x0040)&nbsp;==&nbsp;(sstdatatemp[1]&nbsp;&&nbsp;0x0040))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i--;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;FALSE;<br />&nbsp;&nbsp;&nbsp;&nbsp;writesstaddr&nbsp;+=2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writesstdata++;<br />&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;return&nbsp;TRUE;<br />}<br />/********************************************************************************************************<br />**&nbsp;函数名称:bool&nbsp;checkover(checkaddr)<br />**&nbsp;函数功能:对器件进行擦除(扇区擦除,块擦除,器件擦除)。<br />**&nbsp;入口参数:擦除地址和擦除类型数据<br />**&nbsp;出口参数:TURE&nbsp;or&nbsp;FALSE<br />**&nbsp;create&nbsp;by:&nbsp;&nbsp;&nbsp;magicchip<br />**&nbsp;create&nbsp;data:&nbsp;2008/01/02<br />********************************************************************************************************/<br />bool&nbsp;eraseflash(uint32&nbsp;eraseaddr,uint16&nbsp;erasedata)<br />{&nbsp;<br />&nbsp;&nbsp;uint16&nbsp;*eraseaddrtemp;<br />&nbsp;&nbsp;uint32&nbsp;addr;<br />&nbsp;&nbsp;uint16&nbsp;checkdata;<br />&nbsp;&nbsp;uint32&nbsp;i,j;<br />&nbsp;&nbsp;for&nbsp;(j=5;j&gt0;j--)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;=&nbsp;(eraseaddr&nbsp;&&nbsp;0xff000000);<br />&nbsp;&nbsp;&nbsp;&nbsp;eraseaddrtemp&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00005555*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*eraseaddrtemp&nbsp;=&nbsp;0x00aa;<br />&nbsp;&nbsp;&nbsp;&nbsp;eraseaddrtemp&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00002aaa*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*eraseaddrtemp&nbsp;=&nbsp;0x0055;<br />&nbsp;&nbsp;&nbsp;&nbsp;eraseaddrtemp&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00005555*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*eraseaddrtemp&nbsp;=&nbsp;0x0080;<br />&nbsp;&nbsp;&nbsp;&nbsp;eraseaddrtemp&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00005555*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*eraseaddrtemp&nbsp;=&nbsp;0x00aa;<br />&nbsp;&nbsp;&nbsp;&nbsp;eraseaddrtemp&nbsp;=&nbsp;(uint16&nbsp;*)(addr&nbsp;|&nbsp;(0x00002aaa*2));<br />&nbsp;&nbsp;&nbsp;&nbsp;*eraseaddrtemp&nbsp;=&nbsp;0x0055;<br />&nbsp;&nbsp;&nbsp;&nbsp;eraseaddrtemp&nbsp;=&nbsp;(uint16&nbsp;*)eraseaddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;*eraseaddrtemp&nbsp;=&nbsp;erasedata;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;50;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//delay&nbsp;50ms.<br />&nbsp;&nbsp;&nbsp;&nbsp;while(i)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(100);&nbsp;//delay&nbsp;1ms.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkdata&nbsp;=&nbsp;*eraseaddrtemp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((checkdata&nbsp;&&nbsp;0x0080)&nbsp;==&nbsp;0x0080)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;((checkdata&nbsp;&&nbsp;0x0060)&nbsp;==&nbsp;0x0060)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;return&nbsp;FALSE;&nbsp;<br />}<br />
 楼主| 芯行天下 发表于 2008-8-25 16:59 | 显示全部楼层

自已沙发自已做

自已沙发自已做<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

87

主题

660

帖子

0

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

87

主题

660

帖子

0

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