首页
论坛
外包
下载
专栏
专栏首页
通信技术
显示光电
单片机
测试测量
智能硬件
汽车电子
消费电子
工业控制
医疗电子
电路图
物联网
模拟
专访
电源
芯闻号
嵌入式
技术学院
公众号精选
厂商动态
新基建
中国芯
Datasheet
公开课
更多
阅读
21ic专访
编辑视点
专题
会展
高端访谈
新基建
技术
通信技术
显示光电
单片机
测试测量
智能硬件
汽车电子
消费电子
工业控制
医疗电子
开发板
物联网
模拟
电源
嵌入式
资讯
新品
应用
技术专访
基础知识
中国芯
互动
论坛
外包
招聘
课程
公开课
在线研讨会
TI在线培训
资源
下载
电路图
Datasheet
在线计算器
开发板试用
厂商
登录
|
注册
论坛
论坛
Datasheet
文章
下载
论坛首页
论坛列表
厂商专区
家园币兑换
任务活动
开发板试用
优质原创
论坛专题
问答
21ic电子技术开发论坛
›
单片机与嵌入式系统
›
侃单片机论坛
›
有用过AT45DB161D的进来看看啊!数据写不了啊!
返回列表
[AVR单片机]
有用过AT45DB161D的进来看看啊!数据写不了啊!
[复制链接]
2058
|
1
手机看帖
扫描二维码
随时随地手机跟帖
sowin2001
当前离线
关注TA
发消息
4
主题
24
帖子
73
积分
初级技术员
初级技术员, 积分 73, 距离下一级还需 27 积分
初级技术员, 积分 73, 距离下一级还需 27 积分
积分
73
在线时间
8 小时
精华
0
注册时间
2009-4-21
最后登录
2023-4-28
电梯直达
楼主
sowin2001
|
楼主
|
2012-8-2 10:39
|
只看该作者
|
倒序浏览
|
阅读模式
AT45DB161D
,
at45db161
,
45db161
很奇怪的,当地址写到139920时,数据无法写入了,页是528字节,正好是265页开始,有朋友遇到这样的情况吗,请大家指教!
使用特权
评论
回复
赏
标题置顶
标题高亮
点赞
共
0
人点赞
相关下载
•
gxlujd写的AT45DB161D的操作函数库.rar
•
AT45DB161D的测试程序.rar
•
at45db161d
•
实现AT45DB161D的读写源码
•
火牛AT45DB161D做的U盘程序.rar
•
红牛开发板实例之_SPI模式(AT45DB161D)
•
AT45DB161D
•
用移位寄存器制作步进电机驱动电路,简单易懂,资料详细,绝对有用。,简单易懂,资料详细,绝对有用。
•
语音文字短信无线发射机设计,简单易懂,资料详细,绝对有用。,简单易懂,资料详细,绝对有用。
相关帖子
•
AT45DB161D_Flash 读取不了ID号??
•
真正实现ADPCM音频解码[为播放流畅 振南提出"缓冲追随思想"]
•
振南ZN-X(51版) VS1003录音到FlashROM WAV文件播放[简易Flash录音笔]
•
2M字节的串行Flash芯片At45DB161D单片机驱动代码
•
STM32读取flash AT45DB161d不稳定
•
AT45DB161用MSP430F149普通I/O口模拟SPI读写数据状态寄存器读数总
•
AT45DB161D-SU 存储器【中国IC超市网】
•
存储器 > AT45DB161D-SU 【中国IC超市网】
•
STM32F107+SPI FLASH(AT45DB161D)
sowin2001
当前离线
关注TA
发消息
4
主题
24
帖子
73
积分
初级技术员
初级技术员, 积分 73, 距离下一级还需 27 积分
初级技术员, 积分 73, 距离下一级还需 27 积分
积分
73
在线时间
8 小时
精华
0
注册时间
2009-4-21
最后登录
2023-4-28
沙发
sowin2001
|
楼主
|
2012-8-2 11:03
|
只看该作者
很奇怪的,当写到地址为139920时,数据无法写入,每页是528字节,正好是265页开始处,无法写入,非常奇怪的,朋友们帮忙看看!
//
#define OVERTIMES 200
#define PAGE_SIZE 528L
#define W_BUF_SIZE 528L
#define R_BUF_SIZE 528L
#define BLOCK_SIZE 4224L
#define REG_STATUS 0xD7
#define REG_WRITE_BUFF_1 0x84
#define REG_BUFF_MAIN_1 0x83
#define REG_ARRAY_READ 0xE8
#define REG_PAGEERASE 0x81
#define REG_BLOCKERASE 0x50
#define REG_DEEPSLEEP 0xB9
#define REG_RESUME_DEEPSLEEP 0xAB
//PA.7
#define AT45DBXX_CS_L GPIOA_BSRR_bit.BR7 = 1
#define AT45DBXX_CS_H GPIOA_BSRR_bit.BS7 = 1
#define AT45DBXX_CS_OUT GPIOA_CRL_bit.MODE7 = 1 ;\
GPIOA_CRL_bit.CNF7 = 0
//spi.c
extern void spi_io_init (void) ;
extern u8_t spi_read_byte (void) ;
extern void spi_write_byte (u8_t byte) ;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
static void at45dbxx_io_init (void)
{
spi_io_init () ;
//CS disable
AT45DBXX_CS_H ;
AT45DBXX_CS_OUT ;
}
static u8_t at45dbxx_wait (void)
{
u8_t status, try_cnt = OVERTIMES ;
do
{
AT45DBXX_CS_L ;
spi_write_byte (REG_STATUS) ;
status = spi_read_byte () ;
AT45DBXX_CS_H ;
lib_delay_us (10) ;
}while ((!(status & BIT7)) && (--try_cnt)) ;
if (try_cnt)
return TRUE ;
else
return FALSE ;
}
static void at45dbxx_write_buf (u8_t *cmd, u8_t *buf, u16_t buf_len)
{
u8_t i ;
AT45DBXX_CS_L ;
for (i=0; i<4; i++)
spi_write_byte (*cmd++) ;
while (buf_len -- > 0)
spi_write_byte (*buf++) ;
AT45DBXX_CS_H ;
}
static void at45dbxx_read_buf (u8_t *cmd, u8_t *buf, u16_t buf_len)
{
u8_t i ;
AT45DBXX_CS_L ;
for (i=0; i<4; i++)
spi_write_byte (*cmd++) ;
for (i=0; i<4; i++)
spi_write_byte (0x00) ;
while (buf_len -- > 0)
*buf++ = spi_read_byte () ;
AT45DBXX_CS_H ;
}
static u8_t at45dbxxMainMemoryToBufferTransfert (u8_t page)
{
AT45DBXX_CS_L ;
spi_write_byte (0x53) ;
spi_write_byte ((page >> 6) & 0x7F) ;
spi_write_byte ((page << 2) & 0xFC) ;
spi_write_byte (0x00) ;
AT45DBXX_CS_H ;
if (at45dbxx_wait () != TRUE)
return FALSE ;
return TRUE ;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
u8_t flash_read_buf (u32_t addr, u8_t *p_buf, u16_t len)
{
u8_t cmd[4] ;
u16_t page, adrInPage ;
at45dbxx_io_init () ;
if (at45dbxx_wait () != TRUE)
goto fail_exit ;
page = addr / PAGE_SIZE ;
adrInPage = addr % PAGE_SIZE ;
//
cmd[0] = REG_ARRAY_READ ;
cmd[1] = ((u16_t)(page) >> 6) & 0x7F ;
cmd[2] = ((u16_t)(page) << 2) & 0xFC ;
cmd[2] |= (((u16_t)(adrInPage) >> 8) & 0x03) ;
cmd[3] = (u16_t)(adrInPage) & 0xFF ;
at45dbxx_read_buf (cmd, p_buf, len) ;
FLAG_ERR_FLASH = FALSE ;
return TRUE ;
fail_exit:
FLAG_ERR_FLASH = TRUE ;
return FALSE ;
}
u8_t flash_write_buf (u32_t addr, u8_t *p_buf, u16_t len)
{
u8_t cmd[4] ;
u16_t w_len, page, adrInPage ;
at45dbxx_io_init () ;
if (at45dbxx_wait () != TRUE)
goto fail_exit ;
while (len > 0)
{
page = addr / PAGE_SIZE ;
adrInPage = addr % PAGE_SIZE ;
if (adrInPage)
{
if (at45dbxxMainMemoryToBufferTransfert (page) != TRUE)
return FALSE ;
w_len = PAGE_SIZE - (addr % PAGE_SIZE) ;
if (len < w_len)
w_len = len ;
}
else
{
if (len <= PAGE_SIZE)
w_len = len ;
else
w_len = PAGE_SIZE ;
}
//write buffer 1
cmd[0] = 0x84 ;
cmd[1] = 0x00;
cmd[2] = (adrInPage >> 8) ;
cmd[3] = adrInPage & 0xFF ;
at45dbxx_write_buf (cmd, p_buf, w_len) ;
if (at45dbxx_wait () != TRUE)
goto fail_exit ;
//write mainPage 1
cmd[0] = 0x83 ;
cmd[1] = (page >> 6) ;
cmd[2] = (page << 2) ;
cmd[3] = 0x00 ;
at45dbxx_write_buf (cmd, NULL, 0) ;
lib_delay_ms (40) ;
if (at45dbxx_wait () != TRUE)
goto fail_exit ;
p_buf += w_len ;
len -= w_len ;
addr += w_len ;
}
FLAG_ERR_FLASH = FALSE ;
return TRUE ;
fail_exit:
FLAG_ERR_FLASH = TRUE ;
return FALSE ;
}
使用特权
评论
回复
赏
点赞
共
0
人点赞
返回列表
高级模式
B
Color
Image
Link
Quote
Code
收费
Smilies
您需要登录后才可以回帖
登录
|
注册
发表回复
本版积分规则
回帖后跳转到最后一页
sowin2001
4
主题
24
帖子
0
粉丝
关注
私信