STM32驱动AT45DB161D代码word版本

上传人:go****e 文档编号:137416296 上传时间:2020-07-08 格式:DOC 页数:8 大小:25KB
返回 下载 相关 举报
STM32驱动AT45DB161D代码word版本_第1页
第1页 / 共8页
STM32驱动AT45DB161D代码word版本_第2页
第2页 / 共8页
STM32驱动AT45DB161D代码word版本_第3页
第3页 / 共8页
STM32驱动AT45DB161D代码word版本_第4页
第4页 / 共8页
STM32驱动AT45DB161D代码word版本_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《STM32驱动AT45DB161D代码word版本》由会员分享,可在线阅读,更多相关《STM32驱动AT45DB161D代码word版本(8页珍藏版)》请在金锄头文库上搜索。

1、STM32驱动AT45DB161D代码精品文档/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;/

2、超时退出 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的状态寄存器 (查看数

3、据手册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,不忙sta

4、tic 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:读到的数组首地址/-连续读到达一个页的结尾时,芯片会从下个页的开头继续读取,/-页间的跨越是没有延时的。当主存储器的最后一个位被读出后,/-芯片会自动返

5、回到第一页的开头继续读取。与页间跨越相同的,/-从存储器阵列结尾转到开头也是无延时的。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 bytewh

6、ile( (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_R

7、eadWriteByte( (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 page)u32 addr=0;addr=( (u32)page16) );SPI2_ReadWriteByte( (u8)(addr8) );SPI2_ReadWriteByte( (u8)(addr) ); FLASH_CS_H;收集于网络,如有侵权请联系管理员删除

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号