高级会员

- 积分
- 598
- 金钱
- 598
- 注册时间
- 2014-4-14
- 在线时间
- 76 小时
|
50金钱
最近在用STM32F107 调试AT45DB161D,SPI通信的,代码参考了《My_App 红牛开发板(STM32F103ZET6)读写AT45DB161D 串行Flash测试程序》,结果发现在进行读写测试时,地址累加到528时,读写就出错了,不懂这要怎么解决啊,求老司机带带我~~,下面是测试程序和调试结果。
[mw_shl_code=c,true]#include <string.h>
#include <stdlib.h>
#include "delay.h"
#include "stdio.h"
#include "usart1.h"
#include "at45db.h"
#define FLASH_WriteAddress 0
#define FLASH_ReadAddress FLASH_WriteAddress
#define FLASH_SectorToErase FLASH_WriteAddress
#define AT45DB161D_FLASH_ID 0x1F260000
vu32 FLASH_ID = 0;
void test(void)
{
int len = 0;
char Wbuf[500]="";
char Rbuf[500]="";
uint32_t addr = FLASH_WriteAddress;
SPI_FLASH_PageErase(FLASH_SectorToErase); // 全部擦除
delay_ms(10);
while(1)
{
len = sprintf(Wbuf,"%d&",addr);
printf("W:[0x%06X][%s]\t->",addr,Wbuf);
SPI_FLASH_BufferWrite((uint8_t *)Wbuf, addr, len);
memset(Rbuf,0,sizeof(Rbuf));
SPI_FLASH_BufferRead((uint8_t *)Rbuf, addr, sizeof (Rbuf));
printf("R:[%s]\r\n",Rbuf);
if(strcmp(Rbuf, Wbuf) != 0) break;
addr++;
}
}
int main(void)
{
delay_init();//延时函数初始化
usart1_Configuration(115200);
printf("\r\n------------------------------------\r\n");
SPI_FLASH_Init();
FLASH_ID = SPI_FLASH_ReadID();
if (FLASH_ID == AT45DB161D_FLASH_ID){
printf("校验OK.\r\n");
}else {
printf("校验Error.\r\n");
}
test();
while (1) ;
}
[/mw_shl_code]
STM32F107 AT45DB161D.rar
(6.9 MB, 下载次数: 163)
|
|