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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32f407硬件spi讀寫sst25vf閃存flash代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:91350 發表于 2015-10-29 22:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
完整代碼下載: sst25vf.rar (6.84 KB, 下載次數: 44)
  1. void SPI_FLASH_Init(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;
  4.     SPI_InitTypeDef  SPI_InitStructure;
  5.     NVIC_InitTypeDef   NVIC_InitStructure;

  6.     /* Enable the SPI periph */
  7.     RCC_APB2PeriphClockCmd(FLASH_SPI_CLK, ENABLE);

  8.     /* Enable SCK, MOSI and MISO GPIO clocks */
  9.     RCC_AHB1PeriphClockCmd(FLASH_SPI_SCK_GPIO_CLK | FLASH_SPI_MOSI_GPIO_CLK | FLASH_SPI_MISO_GPIO_CLK, ENABLE);//FLASH_SPI_MISO_GPIO_CLK

  10.     /* Enable CS  GPIO clock */
  11.     RCC_AHB1PeriphClockCmd(FLASH_SPI_CS_GPIO_CLK, ENABLE);
  12.    
  13.     /* Enable 157  GPIO clock */
  14.     RCC_AHB1PeriphClockCmd(FLASH_SPI_157_GPIO_CLK, ENABLE);
  15.    

  16.     GPIO_PinAFConfig(FLASH_SPI_SCK_GPIO_PORT, FLASH_SPI_SCK_SOURCE, FLASH_SPI_SCK_AF);
  17.     GPIO_PinAFConfig(FLASH_SPI_MISO_GPIO_PORT, FLASH_SPI_MISO_SOURCE, FLASH_SPI_MISO_AF);
  18.     GPIO_PinAFConfig(FLASH_SPI_MOSI_GPIO_PORT, FLASH_SPI_MOSI_SOURCE, FLASH_SPI_MOSI_AF);

  19.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  20.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  21.     GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
  22.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  23.     /* SPI SCK pin configuration */
  24.     GPIO_InitStructure.GPIO_Pin = FLASH_SPI_SCK_PIN;
  25.     GPIO_Init(FLASH_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);

  26.     /* SPI  MOSI pin configuration */
  27.     GPIO_InitStructure.GPIO_Pin =  FLASH_SPI_MOSI_PIN;
  28.     GPIO_Init(FLASH_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);

  29.     /* SPI MISO pin configuration */
  30.     GPIO_InitStructure.GPIO_Pin = FLASH_SPI_MISO_PIN;
  31.     GPIO_Init(FLASH_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);


  32.     /* Configure GPIO PIN for Lis Chip select */
  33.     GPIO_InitStructure.GPIO_Pin = FLASH_SPI_CS_PIN;
  34.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  35.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  36.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  37.     GPIO_Init(FLASH_SPI_CS_GPIO_PORT, &GPIO_InitStructure);
  38.    
  39.     SPI_FLASH_CS_HIGH();

  40.   /* Configure GPIO PIN for 157 */
  41.     GPIO_InitStructure.GPIO_Pin = FLASH_SPI_157_PIN;
  42.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  43.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  44.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  45.     GPIO_Init(FLASH_SPI_157_GPIO_PORT, &GPIO_InitStructure);

  46.     /* SPI1 configuration */
  47.     SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  48.     SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  49.     SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  50.     SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
  51.     SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  52.     SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  53.     SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
  54.     SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  55.     SPI_InitStructure.SPI_CRCPolynomial = 7;
  56.     SPI_Init(FLASH_SPI, &SPI_InitStructure);

  57.     /* Enable SPI1  */
  58.     SPI_Cmd(FLASH_SPI, ENABLE);
  59.     SPI_FLASH_157_DIS();
  60.    
  61.     //SPI_DMAInit();
  62.     /* I2S DMA IRQ Channel configuration */
  63.    /* NVIC_InitStructure.NVIC_IRQChannel = SPI1_DMA_RX_IRQn;
  64.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  65.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  66.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  67.     NVIC_Init(&NVIC_InitStructure);
  68.    
  69.     NVIC_InitStructure.NVIC_IRQChannel = SPI1_DMA_TX_IRQn;
  70.     NVIC_Init(&NVIC_InitStructure);
  71.     Delay_Init(168);*/

  72. }

  73. /*------------------------------------------------------------------------------
  74. 函數名稱 : SPI_FLASH_Writebyte
  75. 函數功能 : 寫一個字節數據
  76. 入口參數 :  address:地址  buffer:數據
  77. 出口參數 :  無
  78. ------------------------------------------------------------------------------*/

  79. void SPI_FLASH_Writebyte(unsigned int Addr, unsigned char *buf)
  80. {
  81.     unsigned short i = 0, j = 0;

  82.     SPI_FLASH_WriteEnable();

  83.     SPI_FLASH_CS_LOW();
  84. SPI_FLASH_SendByte(0x02);
  85. SPI_FLASH_SendByte((Addr)>>16);
  86.     SPI_FLASH_SendByte((Addr)>>8);
  87. SPI_FLASH_SendByte((Addr));
  88. SPI_FLASH_SendByte(*buf);
  89.     SPI_FLASH_CS_HIGH();
  90.     SPI_FLASH_WaitForWriteEnd();
  91.     SPI_FLASH_WriteDisable();
  92.     delay_nus(20);
  93. }
  94. /*------------------------------------------------------------------------------
  95. 函數名稱 : SPI_FLASH_Writenbyte
  96. 函數功能 : 寫一個字節數據
  97. 入口參數 :  address:地址  buffer:數據 num :數量
  98. 出口參數 :  無

  99. ------------------------------------------------------------------------------*/


  100. void SPI_FLASH_Writenbyte(unsigned int Addr, unsigned char *buf,u16 num)
  101. {
  102. u8 i;
  103. for(i=0;i<num;i++)
  104. {
  105.    SPI_FLASH_Writebyte(Addr++,&buf[i]);
  106. }

  107. }
  108. /*------------------------------------------------------------------------------
  109. 函數名稱 : SPI_FLASH_Readnbyte
  110. 函數功能 : 寫一個字節數據
  111. 入口參數 :  address:地址  buffer:數據 num :數量
  112. 出口參數 :  無

  113. ------------------------------------------------------------------------------*/

  114. void SPI_FLASH_Readnbyte(unsigned int Addr,unsigned char *buf,u16 num)
  115. {
  116.     unsigned short i = 0;

  117.     SPI_FLASH_CS_LOW();

  118.     SPI_FLASH_SendByte(0x0b);
  119. SPI_FLASH_SendByte(Addr>>16);
  120. SPI_FLASH_SendByte(Addr>>8);
  121. SPI_FLASH_SendByte(Addr);
  122. //dummy
  123. SPI_FLASH_SendByte(Dummy_Byte);
  124.     for(i=0;i<num;i++)
  125.     {
  126.   buf[i]= SPI_FLASH_SendByte(Dummy_Byte);

  127. }


  128.     SPI_FLASH_CS_HIGH();

  129. }

  130. main()

  131. {

  132.   u8 bufda[25]="123456789abcdefghijkl";



  133.     SPI_FLASH_Init();

  134.      
  135.    //  Write_74HC595(HC595_OUT,3,&davalu);
  136.     // Write_595_ENABLE();
  137.          SPI_FLASH_157_EN();//kang 2014.07.10
  138.    SPI_FLASH_ChipErase();
  139.    SPI_FLASH_157_DIS();


  140.     SPI_FLASH_157_EN(); //kang 2014.07.10
  141.             
  142.     i= SPI_FLASH_ReadID();
  143.     SPI_FLASH_157_DIS();

  144.     SPI_FLASH_157_EN();
  145.   
  146.      SPI_FLASH_Writenbyte(5,bufda,20);
  147.      SPI_FLASH_157_DIS();
  148.      
  149.      SPI_FLASH_157_EN();
  150.      SPI_FLASH_Readnbyte(5,readbuf,20);
  151.      SPI_FLASH_157_DIS();

  152. }
復制代碼



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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品久久久久秋霞不卡 | 一区日韩 | 一区二区中文 | 亚洲一区二区三 | 日韩欧美在线视频观看 | av免费成人 | 国产亚洲精品综合一区 | 国产在线观看网站 | 欧美国产精品久久久 | 久久国内| 午夜综合 | 国产精品一区二区免费 | 亚洲性在线 | 日韩精品免费在线观看 | 女同久久 | 欲色av| 91国内在线观看 | h视频在线免费看 | 一区二区三区高清不卡 | 日韩中文一区二区三区 | 日本成人福利 | 亚洲视频区 | 先锋资源吧 | 国产不卡视频 | 国产一区二区久久 | 日韩黄色小视频 | 国产乱码精品一品二品 | 毛片黄片| 一区二区国产精品 | 日韩欧美国产综合 | 日本久久一区二区三区 | 在线国产小视频 | 伊人成人免费视频 | 亚洲精品在线看 | 欧洲毛片| 亚洲一区二区国产 | 视频一区二区在线观看 | 国产你懂的在线观看 | 久久久国产一区二区三区 | 中文字幕日韩一区 | av在线播放免费 |