OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10345|回复: 33

谁有AT45DB161B的程序

[复制链接]

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
发表于 2011-7-1 11:52:13 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-1 12:57:02 | 显示全部楼层
我有.去我博客下载吧.我以前那个MP3的毕设,用的就是45db161.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 00:30:30 | 显示全部楼层
回复【2楼】正点原子:

---------------------------------
原子哥   非常感谢你   虽然我没有买你的开发板   但是我在你的坛子里学了不少的东西      我现在手上有几十片液晶模块   2.4   3.5    4.3   7.0 规格的屏幕都有 别人送的   要我立马给你发货 !!    做好事是有回报的  
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 00:31:12 | 显示全部楼层
回复【3楼】muc520:

---------------------------------
送你   免费  只途感谢!!!
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 01:30:31 | 显示全部楼层
回复【4楼】muc520:

---------------------------------
回复【2楼】正点原子:

---------------------------------
没有找到啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-2 01:53:54 | 显示全部楼层
回复【5楼】muc520:
---------------------------------
还送我液晶啊?呵呵,谢了.
我博客地址:http://blog.ednchina.com/atom6037/235149/message.aspx
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-2 02:00:31 | 显示全部楼层
刚刚看了下,我那个MP3的毕设里面没有AT45DB161的驱动.
这里上传一下,我在我的项目里用过的,程序是OK的了.你自己移植下吧,也是STM32上的.

flash.rar

5.58 KB, 下载次数: 1950

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 19:13:23 | 显示全部楼层
回复【6楼】正点原子:

---------------------------------要什么规格的屏幕  留个地址   我个你发    QQ389496083
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-2 19:58:20 | 显示全部楼层
回复【8楼】muc520:
---------------------------------
你发帖介绍下你的屏吧,看看论坛有没有其他朋友需要.
3.5和4.3和7.0的感兴趣,不过目前可能没时间玩.
你先介绍下吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 20:38:40 | 显示全部楼层
嗯  好的   
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 21:58:45 | 显示全部楼层
回复【10楼】muc520:

---------------------------------
能读到ID   但是数据写不进    读出的是FF
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-2 22:26:37 | 显示全部楼层
回复【11楼】muc520:
---------------------------------
我那个程序是没问题的.你再看看吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 23:03:55 | 显示全部楼层
嗯 只有下面哪些是必须的?
void SPI1_Flash_Init(void);//初始化SPI FLASH的IO口
u8 DF_read_reg(void);//读取状态寄存器
u16 VS_PLUG_Read_Word(u16 addr);//plugin读出来到pbuffer
u8 DF_wait_busy(void);//检查状态寄存器最高位是否为忙,并等待空闲

u32 SPI_FLASH_ReadID(void);//读取芯片ID AT45DB161的ID:0X1F2600
     
void Flash_Read(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead);//从指定地址开始读出指定个数的数据      
void Flash_Write(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);//从指定地址开始写入指定个数的数据
void DF_page_earse(unsigned int page);//擦除指定的主存储器页(地址范围0-4095)
void DF_write_page(u8* pBuffer,u16 page);//将保存在数组DF_buffer[]中的一页数据写入第二缓冲区后送入主存储区(先擦除后写入模式,页地址范围0-4095)
void DF_read_page(u8* pBuffer,u16 page);//将指定主存储器页的数据转入第一缓冲区后读出,保存在DF_buffer[]数组中(页地址范围0-4095
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-2 23:29:13 | 显示全部楼层
实际操作,就这两个就可以了.
void Flash_Read(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead);//从指定地址开始读出指定个数的数据       
void Flash_Write(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);//从指定地址开始写入指定个数的数据 

其他的你没必要直接调用.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-7-2 23:35:49 | 显示全部楼层
回复【14楼】正点原子:

---------------------------------
就是没反应哦   读出来的是乱码   貌似全FF   ID读成了0X1F2600
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-10 22:00:18 | 显示全部楼层
ID正确了,你可以向里面写数据.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2118
金钱
2118
注册时间
2011-9-3
在线时间
122 小时
发表于 2011-11-23 19:38:05 | 显示全部楼层
回复【8楼】muc520:
---------------------------------
muc520兄有7寸屏不,如果可以送我一个,呵呵。。。想玩大屏。。
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
发表于 2011-11-24 13:16:55 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
原子哥,我想知道,任意地址的u32 WriteAddr,是怎么转换成也页地址和页内偏移地址的,需要移位运算吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-24 13:50:16 | 显示全部楼层
回复【18楼】esteem:
---------------------------------
你真想知道?那就看六楼代码.
一般人我不告诉他
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
 楼主| 发表于 2011-11-26 23:15:41 | 显示全部楼层
回复【17楼】螃蟹爱虫:

---------------------------------
给原子哥了,我留了片,
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-9-13
在线时间
11 小时
发表于 2014-10-13 15:25:30 | 显示全部楼层
回复【11楼】muc520:
---------------------------------
我的写完缓冲区,读出来的也是0Xff,请问你的解决了吗?
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-12-18
在线时间
6 小时
发表于 2014-12-18 20:08:50 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
原子哥,请问SPIx_ReadWriteByte()函数是不是和SPI1_ReadWriteByte()函数一样的?Flash的读写函数对不同器件还通用啊?比如W25X16和AT45DB161B。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-18 22:34:16 | 显示全部楼层
回复【22楼】jianglg3:
---------------------------------
一样的。
通用不通用就得看你的芯片手册,是否SPI驱动方式一样了。一样的话,就通用。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-12-18
在线时间
6 小时
发表于 2014-12-19 16:19:34 | 显示全部楼层
回复【23楼】正点原子:
--------------------------
原子哥,请问我这个ID读取错误,请问什么问题啊?谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-19 22:43:58 | 显示全部楼层
回复【24楼】jianglg3:
---------------------------------
检查硬件连接
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-12-18
在线时间
6 小时
发表于 2014-12-21 18:37:17 | 显示全部楼层
回复【25楼】正点原子:
---------------------------------
原子哥,请问一下,我在debug时,SPI_FLASH_ReadID()显示0x0800087C,下一步我将ID = SPI_FLASH_ReadID();运行后ID=0x001F2600。为什么?谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-21 22:35:04 | 显示全部楼层
回复【26楼】jianglg3:
---------------------------------
表示不明白。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-12-18
在线时间
6 小时
发表于 2014-12-29 08:58:40 | 显示全部楼层
原子哥,请问一下,我把数据一次写30组数据进FLASH,然后读取30组数据,读取时候我是通过死循环不停地读取,通过串口看发现数据有的正确,有时候乱码,为什么?谢谢,还有一件事,就是我写完一个数据,然后我就读,再换地址,我写数据,再读,总共写30次,用串口看是对的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-29 23:57:16 | 显示全部楼层
回复【28楼】jianglg3:
---------------------------------
这个看看是不是频率太高了?或者代码有bug?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-12-18
在线时间
6 小时
发表于 2014-12-30 11:20:25 | 显示全部楼层
//页分组,对一组写数据
 uint32_t Flash_Write_r(uint8_t* pBuffer,uint32_t num, uint16_t NumByteToWrite_r)
{     
   uint32_t num_buf=num;    
 uint16_t i; 
 uint16_t paddr,offaddr;

 paddr = num_buf/(SPI_FLASH_PageSize/NUMByte) + page_f;
 offaddr = (num_buf%(SPI_FLASH_PageSize/NUMByte))*NUMByte;

 if(paddr>=SPI_FLASH_PageNum)return 0;
 if(NumByteToWrite_r <= NUMByte)
 {    
          F_CS_DISABLE();  
          DF_mm_to_buf(1,paddr);
        if(DF_wait_busy()==0)return 0;
        F_CS_ENABLE();
        SPI1_ReadWriteByte(BUFFER_1_WRITE);    
        SPI1_ReadWriteByte(0x00);
        SPI1_ReadWriteByte((uint8_t)(offaddr>>8)); 
        SPI1_ReadWriteByte((uint8_t)offaddr);
      for (i=0;i<NumByteToWrite_r;)
        {   
       SPI1_ReadWriteByte(*pBuffer);
       pBuffer++;
       i++;
  }
      }
 F_CS_DISABLE();       
 DF_buf_to_mm(1,paddr); 
 num_buf = num_buf + 1;
  
return num_buf;//统计写次数,这样可以算出来页地址和偏移地址  
}
这程序不可以对当前页的首地址写数据吗?为什么读不来额?
//读取一组数据
void Flash_Read_r(uint8_t* pBuffer, uint32_t num_start,uint16_t NumByteToRead_r)
{
uint16_t offaddr,paddr;
uint32_t i;
paddr = (num_start/(SPI_FLASH_PageSize/NUMByte)) + page_f;
offaddr = (num_start%(SPI_FLASH_PageSize/NUMByte))*NUMByte;

if(NumByteToRead_r > NUMByte) return;
DF_mm_to_buf(1,paddr);     
if(DF_wait_busy()==0)return;
F_CS_ENABLE();
SPI1_ReadWriteByte(BUFFER_1_READ);
SPI1_ReadWriteByte(0x00);
SPI1_ReadWriteByte((uint8_t)(offaddr>>8));
SPI1_ReadWriteByte((uint8_t)offaddr);
SPI1_ReadWriteByte(0x00);

for (i=0;i<NumByteToRead_r;)

 *pBuffer=SPI1_ReadWriteByte(0xff);
  pBuffer++;
  i++;  
}
F_CS_DISABLE();    

我用FOR语句写75组数据,然后再用FOR语句读取75条数据,发现每一页的首地址丢失,但是我调用读函数,只读当前页的首地址有时可以显示的有时不可以显示,原子哥,这是为什么?谢谢
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-12-18
在线时间
6 小时
发表于 2014-12-30 11:24:15 | 显示全部楼层
当前页首地址的读写难道要另外处理吗?
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-12-18
在线时间
6 小时
发表于 2014-12-30 12:49:54 | 显示全部楼层
原子哥,问题解决了,驱动程序是可以的,我就延时一下,就OK了额
回复 支持 反对

使用道具 举报

11

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2015-7-6
在线时间
5 小时
发表于 2015-8-17 20:35:47 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
感谢分享!!
回复 支持 反对

使用道具 举报

6

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2018-5-15
在线时间
86 小时
发表于 2018-12-26 09:23:30 | 显示全部楼层
作者调试的时候加入写入的是一个u8的数组  数组中有 0x00  是不是也是就自动默认为传输完成了呢  后面的数据就丢掉了呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 23:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表