完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
想要完成最简单的功能,Flash写满第一页,再把第一页的数据读出来,可是读的时候数据全是00,请大神指点,程序如下: #include"main.h" intmain(void) { u8 Read[256]; u8 Write[256]; int i; SPI_Flash_Init(); USART_Configuration(); for(i=0;i<256;i++) { Write=i; } FlashPageWrite(0,&Write[0]); FlashPageRead(0,&Read[0]); } voidFlashPageWrite(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); } 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(); } } voidFlashPageRead(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=SPI2_RWByte(Dummy); //读取一个字节 } AT_CS_HIGH(); } u8SPI2_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); } |
|
相关推荐
4个回答
|
|
|
小弟初来论坛,没发现还能回复积分,请问怎么设置?各位大神,求帮忙啊。。
|
|
|
|
|
|
入群 157556544一起学习下
|
|
|
|
|
|
回复需要积分么?
|
|
|
|
|
|
不要啊,回复要什么积分
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:00 , Processed in 0.757729 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3033