STM32驱动AT45DB161D代码_第1页
STM32驱动AT45DB161D代码_第2页
STM32驱动AT45DB161D代码_第3页
STM32驱动AT45DB161D代码_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/SPI初始化部分:void SPI2_Init(void) RCC-APB2ENR|=1APB1ENR|=1CRH&=0X000FFFFF; GPIOB-CRH|=0XBBB00000;/PB13/14/15复用 GPIOB-ODR|=0X7CR1|=0CR1|=1CR1|=1CR1|=1CR1|=0CR1|=1CR1|=1CR1|=7CR1|=0CR1|=1SR&1=0XFFFE)return 0; /超时退出 SPI2-DR=TxData; /发送一个byte retry=0;while(SPI2-SR&1=0XFFFE)return 0;/超时退出 return SPI2-DR; /返回收到的数据 /以下对存储器的操作都是针对AT45DB161D的,/AT45DB161D:16Mbit=2M字节/void FLASH_Init(void)RCC-APB2ENR|=1APB2ENR|=1CRH&=0XFFF0FFFF; GPIOB-CRH|=0X00030000;/PB12 推挽 GPIOB-ODR|=1CRH&=0XFFFFFFF0; GPIOG-CRH|=0X00000003;/PG8 推挽 GPIOG-ODR|=18; /PG8 上拉SPI2_Init(); /初始化SPI2 /读取AT45DB161D的状态寄存器 (查看数据手册P23)/返回:读取的状态/bit7bit6bit5bit4bit3bit2bit1bit0/RDY/BUSYCOMP1011PROTECTPAGESIZEu8 Flash_ReadStatus(void)u8 rd;FLASH_CS_L; /使能操作 SPI2_ReadWriteByte(STATUS_REG_READ);/发送 读状态寄存器命令D7H”rd=SPI2_ReadWriteByte(0XFF); /读回状态FLASH_CS_H; /失能操作return rd;/FLASH判忙函数/不断读取外部FLASH的状态寄存器的bit7为判断是否为0/bit7:0,忙;1,不忙static void Flash_CheckBusy(void)u8 st;st=SPI2_ReadWriteByte(0XFF);while( (st&BUSY_BIT_MASK)= BUSY_STATUS )st=SPI2_ReadWriteByte(0XFF);/读FLASH函数,调用者需保证所读取的数据不能超过范围/page:指定页地址 (04095页)/offset:页内偏移地址 (0527字节)/nBytes:读取的字节数/*data:读到的数组首地址/-连续读到达一个页的结尾时,芯片会从下个页的开头继续读取,/-页间的跨越是没有延时的。当主存储器的最后一个位被读出后,/-芯片会自动返回到第一页的开头继续读取。与页间跨越相同的,/-从存储器阵列结尾转到开头也是无延时的。void Flash_Read(u16 page,u16 offset,u16 nBytes,u8 *data)u32 addr; /绝对地址变量,注意528字节每页与512字节每页的绝对地址计算不一样,/这里用默认(264字节每页模式)addr=(u32)page16) ); /发送地址,从高到低SPI2_ReadWriteByte( (u8)(addr8) );SPI2_ReadWriteByte( (u8)(addr) );SPI2_ReadWriteByte( 0 ); /a dummy bytewhile( (nBytes-)0 )*data+=SPI2_ReadWriteByte(0XFF);/循环读取字节 FLASH_CS_H;Flash_CheckBusy();/写FLASH函数,调用者需保证所写入的数据不能超过范围/page:指定页地址 (04095页) 整页直接写入主存储器/*data:待写入的数组首地址void Flash_PageWrite(u16 page,u8 *data)u16 i;u32 addr=0;Flash_CheckBusy();/判忙addr=( (u32)page16) );SPI2_ReadWriteByte( (u8)(addr8) );SPI2_ReadWriteByte( (u8)(addr) );for(i=0;i8) );SPI2_ReadWriteByte( (u8)offset );while( (nBytes-)0 )SPI2_ReadWriteByte( *data+ ); FLASH_CS_H;Flash_CheckBusy();/从BUFF1写入到主存储器函数,BUFF1刚好是1页大小的缓存/page:页地址(04095)void Flash_BufToMemory(u16 page)u32 addr=0;addr=(u32)page16) );SPI2_ReadWriteByte( (u8)(addr8) );SPI2_ReadWriteByte( (u8)(addr) ); FLASH_CS_H;Flash_CheckBusy();/页擦除函数,整页进行擦除/page:页地址(04095)void Flash_PageErase(u16 pa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论