久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
2M字節的串行Flash芯片At45DB161D單片機驅動代碼+頭文件at45db161_drv.h
[打印本頁]
作者:
niuniu
時間:
2015-3-25 00:10
標題:
2M字節的串行Flash芯片At45DB161D單片機驅動代碼+頭文件at45db161_drv.h
//----------------------------------------------------------
// ATMEL串行Flash芯片At45DB161D驅動
// 采用512字節/頁模式以提高代碼的時間/空間效率
//----------------------------------------------------------
#include "..\include\AT89X52.H"
#include "..\include\at45db161_drv.h"
//芯片的CS信號==由P20~P22經過3-8線譯碼器產生的Y2
//若采用其他方式產生CS信號,應修改AT45161_CS()函數
uint CS=0xff;
void AT45161_CS(uchar v)
{
CS |= 0x07; //???? ?111
if(v==0) CS &= 0xfa; //???? ?010
P2 = CS;
}
//----------------------------------------------------------
// 字節寫函數
//----------------------------------------------------------
void Flash_Byte_Write(uchar v)
{
uchar i;
for(i=0; i<8; i++)
{ //vvvv位值=>MOSI
if(v&0x80) AT45161_MOSI = 1;
else AT45161_MOSI = 0;
AT45161_CLK = 0; //CLK為低,準備產生上升沿
v <<= 1; //準備下一個位
AT45161_CLK = 1; //CLK為高,產生一個上升沿,移進一位
}
}
//----------------------------------------------------------
// 字節讀函數
// 注意進入次函數之前要確保FLASH_CLK引腳為高
//----------------------------------------------------------
void Flash_Byte_Read(uchar* v)
{
uchar i;
*v = 0x00;
AT45161_MISO = 0x01; //設置AT45161_MISO對應的Px_y為輸入
for(i=0; i<8; i++)
{
AT45161_CLK = 0; //CLK為低,產生下降沿,移出一位
(*v) <<= 1;
if(AT45161_MISO) (*v) += 0x01; //取移出的那一位值
AT45161_CLK = 1; //CLK為高,準備產生下降沿
}
}
//----------------------------------------------------------
// 函數: Flash_Init()
// 參數:
// 說明: 復位AT45DB161芯片到512Bytes/Page模式,注意本函數僅
// 運行一次就夠了
// 返回: 無
// 創建:
// 修改:
//----------------------------------------------------------
void Flash_Init()
{
AT45161_CLK = 1; //CLK為高
AT45161_CS(0);
Flash_Byte_Write(0x3d);//設置為512字節/頁模式的命令==0x3d2a80a6
Flash_Byte_Write(0x2a);
Flash_Byte_Write(0x80);
Flash_Byte_Write(0xa6);
AT45161_CS(1);
}
//----------------------------------------------------------
// 函數: Flash_Write(...)
// 參數: address:寫AT45DB161D的起始地址
// data:被寫數據的緩沖區
// nbytes:要寫入的字節數
// 說明: 寫一定字節的數據到AT45DB161D指定地址
// 返回: 無
// 創建:
// 修改:
// 命令格式:連續寫=8位命令82H+3位任意+21位地址
// 1000 0010 ???a aaaa aaaa aaaa aaaa aaaa
//----------------------------------------------------------
void Flash_Write(ulong address, uchar* buf, uint nbytes)
{
uint i;
uchar status = 0;
AT45161_CLK = 1; //CLK為高
AT45161_CS(0);
address |= ((ulong)0x82<<24);
for(i=0; i<4; i++) //4字節命令/地址
Flash_Byte_Write((address>>(24-8*i)) &0xff);
while(nbytes--) Flash_Byte_Write(*buf++);
AT45161_CS(1);
while((status & 0x80) == 0)
{ //讀回狀態寄存器,Bit7=1說明寫成功了
AT45161_CS(0); //注意讀狀態寄存器時對CS信號的要求!
Flash_Byte_Write(0xD7);
Flash_Byte_Read(&status);
AT45161_CS(1);
}
AT45161_CS(1);
}
//----------------------------------------------------------
// 函數: Flash_Read(...)
// 參數: address:讀AT45DB161D的起始地址
// buf:數據緩沖區
// nbytes:要讀入的字節數
// 說明: 從AT45DB161D指定地址開始讀一定字節數的數據到buf
// 返回: 無
// 創建:
// 修改:
// 命令格式:連續讀=8位命令E8H+3位任意+21位地址+32個填充位
// 1110 1000 ???a aaaa aaaa aaaa aaaa aaaa ....
//----------------------------------------------------------
void Flash_Read(ulong address, char* buf, uint nbytes)
{
uchar i;
AT45161_CLK = 1;
AT45161_CS(0);
address |= ((ulong)0xE8<<24); //注意ulong強制類型轉換!
for(i=0; i<4; i++) //4字節命令/地址
Flash_Byte_Write((address>>(24-8*i))&0xff);
for(i=0; i<4; i++) Flash_Byte_Write(0xff); //4字節填充位
while(nbytes--) Flash_Byte_Read(buf++);
AT45161_CS(1);
}
作者:
niuniu
時間:
2015-3-25 00:10
下面是頭文件的內容:
#ifndef __AT45DB161_DRV__
#define __AT45DB161_DRV__
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define AT45161_MISO P0_3
#define AT45161_MOSI P0_4
#define AT45161_CLK P0_5
void Flash_Init();
void Flash_Write(ulong address, uchar* buf, uint nbytes);
void Flash_Read(ulong address, uchar* buf, uint nbytes);
#endif
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品视频不卡
|
www.亚洲一区二区三区
|
米奇成人网
|
黄色片视频
|
亚洲一区国产精品
|
欧美日韩中文字幕在线
|
一区二区三区国产视频
|
欧美精品久久久久久久久老牛影院
|
久久国产精品网
|
国产成人精品网站
|
毛片免费视频
|
国产精品99免费视频
|
久久久久久综合
|
日韩欧美网
|
久久国产麻豆
|
亚洲视频免费在线观看
|
午夜精品久久久久99蜜
|
亚洲精品99
|
91高清免费观看
|
美女在线国产
|
午夜播放器在线观看
|
国产精品视频一二三区
|
欧美激情久久久
|
亚洲一区精品在线
|
在线激情视频
|
www.97zyz.com
|
伊人免费在线观看高清
|
蜜桃视频在线观看www社区
|
成人午夜视频在线观看
|
欧美精品在线免费观看
|
夜夜夜久久久
|
在线亚洲精品
|
美女黄网
|
97成人在线
|
国内精品在线视频
|
天天射天天干
|
密乳av
|
欧美激情精品久久久久久变态
|
国产视频一区二区在线观看
|
欧美精品在欧美一区二区少妇
|
男女视频在线观看网站
|