久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2763|回復: 0
打印 上一主題 下一主題
收起左側

學習SPI之我為AT45DB041D寫驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
認真閱讀了AT45DB041D的編程手冊,尤其是關于SPI讀寫時序、命令的傳送,直接在文檔中做了筆記。
感興趣的伙伴可以下載查看。這里推薦TI公司制作的關于SPI mode講解視頻:SPI modes tutorial

程序:
  1. #ifndef __AT45DB014D_H
  2. #define __AT45DB014D_H

  3. #include "stm32f10x.h"
  4. #include "SPI.h"

  5. #define AT45DB_CS_asserted()                   GPIO_ResetBits(GPIOA,GPIO_Pin_4);
  6. #define AT45DB_CS_disasserted()         GPIO_SetBits(GPIOA,GPIO_Pin_4);

  7. enum ReadCommands{
  8.         MainMoryPageRead                         = 0xD2,
  9. //        ContinuousArrayReadLegacy          = 0xE8,
  10.         ContinuousArrayReadLowFreqcy       = 0x03,
  11.         ContinuousArrayReadHighFreqcy       = 0x0B,
  12.         Buf1ReadLowFreqcy                        = 0xD1,
  13.         Buf2ReadLowFreqcy                        = 0xD3,
  14.         Buf1Read                                       = 0xD4,
  15.         Buf2Read                                        = 0xD6
  16. };

  17. enum ProgramEraseCommands{
  18.         Buf1Write                                                = 0x84,
  19.         Buf2Write                                                = 0x87,
  20.         Buf1toMaiMoryPageProgramWithBuiltin        = 0x83,
  21.         Buf2toMaiMoryPageProgramWithBuiltin        = 0x86,
  22.         Buf1toMaiMoryPageProgramNullBuiltin         = 0x88,
  23.         Buf2toMaiMoryPageProgramNullBuiltin       = 0x89,
  24.         MainMoryPageProgramByBuf1                   = 0x82,
  25.         MainMoryPageProgramByBuf2                  = 0x85,
  26.         PageEraseCommand                               = 0x81,
  27.         BlockEraseCommand                             = 0x50,
  28.         SectorEraseCommand                             = 0x7C,
  29.         ChipEraseCommand                                = 0xC7 //C7H + 94H + 80H + 9AH
  30. };

  31. enum AdditionalCommands{
  32.         MainMoryPagetoBuf1Transfer                          = 0x53,
  33.         MainMoryPagetoBuf2Transfer                         = 0x55,
  34.         MainMoryPagetoBuf1Compare                          = 0x60,
  35.         MainMoryPagetoBuf2Compare                          = 0x61,
  36.         AutoPageRewriteByBuf1                                    = 0x58,
  37.         AutoPageRewriteByBuf2                                   = 0x59,
  38.         DeepPowerdownCommand                             = 0xB9,
  39.         ResumefromDeepPowerdownCommand          = 0xAB,
  40.         ReadStatusRegisterCommand                       = 0xD7,
  41.         ManufacturerDeviceIDReadCommand         = 0x9F
  42. };
  43. enum ProtectionSecurityCommands{
  44.         EnableSectorProtection                  = 0xA9,//3DH + 2AH + 7FH + A9H
  45.         DisableSectorProtection                 = 0x9A,//3DH + 2AH + 7FH + 9AH
  46.         EraseSectorProtectionReg            = 0xCF,//3DH + 2AH + 7FH + CFH
  47.         ProgramSectorProtectionReg         = 0xFC,//3DH + 2AH + 7FH + FCH
  48.         ReadSectorProtectionReg              = 0x32,
  49.         SectorLockdownCommand            = 0x30,//3DH + 2AH + 7FH + 30H
  50.         ReadSectorLockdownReg               = 0x35,
  51.         ProgramSecurityReg                       = 0x9B,//9BH + 00H + 00H + 00H
  52.         ReadSecurityReg                            = 0x77
  53. };

  54. typedef struct  
  55. {
  56.         u8 READY_BUSY :1 ;
  57.         u8 COMP           :1 ;
  58.         u8 PROTECT       :1 ;
  59.         u8 PAGE_SIZE    :1 ;
  60. }StatusRegType;

  61. typedef struct{
  62.         u8 FirstByte;
  63.         u8 SecondByte;
  64.         u8 ThirdByte;
  65. }ThreeAddressBytesType;

  66. void Config_AT45DB_CS_1_Pin(void);
  67. u8 ReadStatusRegister( StatusRegType *StatusRegTypeStruct);
  68. void ReadSecurityRegister( u8 *Output64Bytes );
  69. void ReadManufacturerDeviceID( u8 *StoreIC4BytesInfor);
  70. void ReadSectorProtectionRegister(u8 *Output8Bytes);
  71. void ReadSectorLockdownRegister(u8 *Output8Bytes);
  72. void MainMemoryPageRead(u16 PageSize,u16 WhichPage,u16 WhereStart,u16 HowManyBytes,u8 *WhereStore);
  73. void MainMemoryPageProgramThroughBuffer(u16 PageSize,u8 WhichBuffer,u16 WhichPage,u16 WhereStart,u16 HowManyBytes,u8 *FromWhere );
  74. void ContinuousArrayRead(u16 PageSize,u16 WhichPage,u16 WhereStart,u8 Speed_66_33MHZ,u32 HowManyBytes,u8 *WhereStore);
  75. void ChipErase(void);
  76. void PageErase(u16 PageSize,u16 WhichPage);
  77. void Block_SectorErase(u16 PageSize,u8 IsBlock0OrSector1,u8 WhichBlock_Sector);
  78. void BufferRead(u16 PageSize,u8 WhichBuffer,u8 Speed_66_33MHZ,u16 WhereStart,u16 HowManyBytes,u8 *WhereStore);
  79. void BufferWrite(u16 PageSize,u8 WhichBuffer,u16 WhereStart,u16 HowManyBytes,u8 *FromWhere);
  80. void AutoPageRewrite(u16 PageSize,u16 WhichPage,u8 WhichBuffer);
  81. void BuffertoMainMemoryPageWith_NullBuiltInErase(u16 PageSize,u8 WhichBuffer,u16 WhichPage,u8 With_Null_BuiltIn);
  82. void DeepPowerdown_ON1_OFF0(u8 On1_Off0);
  83. void EraseSectorProtectionRegister(void);
  84. void ProgramSectorProtectionRegister(u8 *ProtectedOrNot8Bytes);
  85. void SectorLockdown(u8 WhichSector0a0b_7);
  86. void ProgramSecurityRegister(u8 *Input64Bytes);
  87. void MainMemoryPagetoBufferTransfer(u16 PageSize,u16 FromWhichPage,u8 ToWhichBuffer);
  88. signed char MainMemoryPagetoBufferCompare(u16 PageSize,u16 WhichPage,u8 WhichBuffer);
  89. void SectorProtection_ON1_OFF0(u8 On1_Off0);
  90. void static SendDummyBytes(u8 HowManyDummy);
  91. void static Send4BytesCommands(u8 OperationCommand, ThreeAddressBytesType *ThreeAddrCommand);
  92. signed char static Get3AddressBytes_PageBuffer(u16 PageSize,u16 WhichPage,u16 PageStartOrBuffStart);
  93. signed char static Get3AddressBytes_BlockSector(u16 PageSize, u8 IsBlock0OrSector1,u8 WhichBlock_Sector);
  94. #endif
復制代碼

last but not least, 也請提出寶貴建議。

1.PNG (144.55 KB, 下載次數: 67)

頭文件

頭文件

AT45DB041D代碼Projet.7z

201.36 KB, 下載次數: 32, 下載積分: 黑幣 -5

AT45DB041D-SU 編程手冊閱讀筆記.pdf

1.79 MB, 下載次數: 23, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲福利在线观看 | 欧美一二三区 | 亚洲国产精品一区二区第一页 | 精品亚洲一区二区三区四区五区 | 免费在线观看一区二区三区 | 综合国产在线 | 99精品久久久久 | 精品一区二区三区不卡 | 中文字幕一区二区三区精彩视频 | 国产精品国产精品 | 亚洲精品一区久久久久久 | 超碰97人人人人人蜜桃 | 日韩欧美一级精品久久 | 久久精品欧美视频 | 中文字幕国产一区 | 亚洲久视频 | av中文在线 | 国产激情小视频 | 国产一级片久久久 | 国产精品久久国产精品 | 日日操视频 | 欧美一区二区三区在线观看 | 国产精品久久久久久久三级 | 狠狠狠干 | 国产精品福利视频 | 日韩精品一区二区三区四区视频 | 国产黄色在线观看 | 国产一区二区三区色淫影院 | 国产99视频精品免费播放照片 | 国产良家自拍 | 色就干| 色av一区二区三区 | 亚洲一区不卡在线 | 99精品一级欧美片免费播放 | 中文字幕乱码亚洲精品一区 | 中文字幕加勒比 | 欧美高清一区 | 欧美午夜精品 | 成人在线免费av | av在线免费播放 | 久久久久九九九九 |