完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想要完成最简单的功能,Flash写满第一页,再把第一页的数据读出来,可是读的时候数据全是00,请大神指点,程序如下:
#include "main.h" int main(void) { u8 Read[256]; u8 Write[256]; int i; SPI_Flash_Init(); USART_Configuration(); for(i=0;i<256;i++) { Write[i]=i; } FlashPageWrite(0,&Write[0]); FlashPageRead(0,&Read[0]); } void FlashPageWrite(u16 page,u8 *Data) //写一整页 { u16 i; FlashWaitBusy(); AT_CS_LOW(); SPI2_RWByte(BUFFER_2_WRITE); // 写入第二缓冲区 SPI2_RWByte(0x00); SPI2_RWByte(0x00); SPI2_RWByte(0x00); for(i=0;i SPI2_RWByte(Data[i]); } AT_CS_HIGH(); if ( page < 2048) { AT_CS_LOW(); SPI2_RWByte(B2MM_PAGEERASE); //将第二缓冲区数据写入主储存器,带擦除 SPI2_RWByte((u8)(page>>6)); SPI2_RWByte((u8)(page<<2)); SPI2_RWByte(0x00); AT_CS_HIGH(); FlashWaitBusy(); } } void FlashPageRead(u16 page,u8 *Data) { u16 i; FlashWaitBusy(); AT_CS_LOW(); SPI2_RWByte(PAGE_READ); //页读 SPI2_RWByte((u8)(page>>6)); SPI2_RWByte((u8)(page<<2)); SPI2_RWByte(0x00); SPI2_RWByte(0x00); SPI2_RWByte(0x00); SPI2_RWByte(0x00); SPI2_RWByte(0x00); for(i=0;i Data[i]=SPI2_RWByte(Dummy); //读取一个字节 } AT_CS_HIGH(); } u8 SPI2_RWByte(u8 byte) { while((SPI2->SR&SPI_I2S_FLAG_TXE)==RESET); SPI2->DR = byte; while((SPI2->SR&SPI_I2S_FLAG_RXNE)==RESET); return(SPI2->DR); } |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
779浏览 0评论
137浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 10:14 , Processed in 1.375842 second(s), Total 59, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号