首页 > 编程知识 正文

flash8,segger j-flash使用

时间:2023-05-06 17:47:27 阅读:165850 作者:770

制造商机器ID的读取

发送90H命令,发送00h的地址,接收即可。

代码如下所示。

voidspiflashreadid(int*pmid,int *pDID ) SPIflash_set_cs(0); 检查/*SPIflash*/spisendbyte(0x90 ); spiflashsendaddr(0; *pMID=SPIRecvByte (; *pDID=SPIRecvByte (; SPIflash_set_cs(1); }两个状态寄存器

在状态寄存器中,可以询问芯片此时是否繁忙,是否解除各种保护操作等。

通过写入状态寄存器BUSY位了解芯片是否忙*/staticvoidspiflashwaitwhenbusy (void ) { while } spiflashreadstatusreg1)1); }/*启用操作*/staticvoidspiflashwriteenable (intenable ) if ) enable ) SPIflash_set_cs )0); spisendbyte(0x06; SPIflash_set_cs(1); }else{SPIflash_set_cs(0; spisendbyte(0x04; SPIflash_set_cs(1); }/*写入状态寄存器*/staticvoidspiflashwritestatusreg (unsignedcharreg 1,unsigned char reg2) spiflashwriteenable(1); SPIflash_set_cs(0; spisendbyte(0x01; spisendbyte(reg1; spisendbyte(reg2; SPIflash_set_cs(1); SPIFlashWaitWhenBusy (; }擦除操作/* erase 4k */voidspiflasherasesector (unsignedintaddr ) spiflashwriteenable); SPIflash_set_cs(0; spisendbyte(0x20; spiflashsendaddr(addr; SPIflash_set_cs(1); SPIFlashWaitWhenBusy (; }读写数据/* program */voidspiflashprogram (unsignedintaddr,unsigned char *buf,int len ) { int i; spiflashwriteenable(1); SPIflash_set_cs(0; spisendbyte(0x02; spiflashsendaddr(addr; for(I=0; i len; I ) spisendbyte(buf[I]; SPIflash_set_cs(1); SPIFlashWaitWhenBusy (; }/* read */voidspiflashread (unsignedintaddr,unsigned char *buf,int len ) { int i; SPIflash_set_cs(0; spisendbyte(0x03; spiflashsendaddr(addr; for(I=0; i len; I ) buf[i]=SPIRecvByte (; SPIflash_set_cs(1); }芯片操作指示单

下一篇文章将导出Linux上的Flash驱动程序。

转载于:https://www.cn blogs.com/gy forever 1004/p/8536919.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。