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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32f103驅動ch375b可讀寫優盤扇區,可測優盤容量,源程序測試通過

[復制鏈接]
跳轉到指定樓層
樓主
ID:955625 發表于 2021-7-22 16:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗器材:
        MiniSTM32F103開發板V3版本
      
實驗目的:
        STM32F103RC+CH375B模塊讀寫優盤或SD卡,可實現單個扇區讀寫或多個連續扇區讀寫數據。
可獲取磁盤容量
      
硬件資源:
        1,串口1(波特率:9600,PA9/PA10連接在板載USB轉串口芯片CH340上面)
      
實驗現象:
        如果讀寫的數據匹配,PD2上的LED點亮,否則LED不亮
        串口調試助手會打印各種初始化狀態和讀取到的數據
      
注意事項:
        有些優盤可能會初始化失敗,建議先給單片機上電,再插入優盤。如果還不行,則復位單片機


要先上電,再插入優盤

STM32單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include  "ch375.h"
  5. #include  "led.h"



  6. #define ADDR 100//6600000//100         //要操作的U盤的扇區地址 物理扇區地址,用winhex打開物理磁盤可查看扇區地址數據

  7. u8 flag1=0;
  8. u8 Write_pbuf[512];   //數據緩沖區
  9. u8 Read_pbuf[2048];
  10. u8 status=0xff; //初始化狀態標志

  11. //測試內容:在優盤或TF卡內ADDR地址開始,連續寫4個扇區數據,再從ADDR處連續讀4個扇區數據進行匹配,驗證數據是否正確
  12. //可獲取優盤或TF卡容量

  13. //注意:要先上電,再插入優盤
  14. int main(void)
  15. {
  16.         u16 i=0;         
  17.         delay_init();                     //延時函數初始化         
  18.         LED_Init();
  19.         
  20.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  21.         uart_init(9600);         //串口初始化為9600        
  22.         printf("串口設置完畢\r\n");
  23.         delay_ms(100); //內部電源上電的復位時間最大為40ms,這里延時一段時間防止出現CH375初始化失敗
  24.         CH375_GPIO_Init(); //初始化CH375B控制端口和數據端口 WR、RD、CS、A0、INT和P0~P7
  25.         CH375_WR_CMD(CMD_GET_IC_VER);  // 獲取芯片及固件版本
  26.         status=CH375_RD_DAT();  // 版本
  27.         printf("芯片版本為:%#x\r\n",status);
  28.         status=CH375Init(); //初始化CH375芯片,成功返回0,失敗返回1
  29.         printf("CH375芯片初始化值:%#x\r\n",status);
  30.         CH375_WR_CMD(CMD_DISK_MAX_LUN);  // 獲取USB存儲設備的最大邏輯單元號
  31.         status=CH375_RD_DAT();  // 最大邏輯單元號
  32.          printf("USB存儲設備的最大邏輯單元號為:%#x\r\n",status);
  33.         //status=InitDisk();         //初始化U盤,初始化成功返回0,不成功返回錯誤代碼 優盤要上電后重新插拔一次再復位才能成功。SD卡不用
  34.          //注意:要先上電,再插入優盤
  35.          status=CH375_InitDisk(); //成功 金士頓8G USB2.0優盤 東芝16G USB3.0優盤上電后插入初始化成功,,SD卡可不用插拔
  36.          printf("U盤初始化值:%#x\r\n",status);
  37.          status=Get_CH375DiskSize();//打印磁盤容量,單位MByte
  38.         for(i=0;i<512;i++)
  39.                 Write_pbuf[i]=i;//0x55;//           //向數據緩沖區中寫入0~255 0~255,共512個字節
  40.         printf("向緩沖區中裝入完畢\r\n");
  41.         //CH375WriteSector(ADDR+2,Write_pbuf);//將數據緩沖區中的512個字節的數據寫入U盤的第ADDR扇區中 單個扇區寫數據
  42.         CH375_WriteDisk(Write_pbuf,ADDR,4); //連續寫多個扇區數據
  43.         printf("寫 U盤扇區完畢\r\n");

  44.         for(i=0;i<2048;i++) //清空接收數據緩沖區
  45.         {
  46.                 Read_pbuf[i]=0;
  47.         }
  48.         printf("清空接收緩沖區完畢\r\n");
  49.         //CH375ReadSector(ADDR+1,Read_pbuf);//從U盤的第ADDR扇區中讀取512個字節的數據到數據緩沖區    單個扇區讀數據
  50.         CH375_ReadDisk(Read_pbuf,ADDR,4);  //連續讀多個扇區數據
  51.         //查看讀取到的幾個扇區數據
  52.                 for(i=0;i<10;i++)
  53.         {
  54.                 printf("讀取到的扇區數據為:i=%d   Read_pbuf[i]=%#x\r\n",i,Read_pbuf[i]);
  55.         }
  56.         for(i=520;i<530;i++)
  57.         {
  58.                 printf("讀取到的扇區數據為:i=%d   Read_pbuf[i]=%#x\r\n",i,Read_pbuf[i]);
  59.         }
  60.                 for(i=1030;i<1040;i++)
  61.         {
  62.                 printf("讀取到的扇區數據為:i=%d   Read_pbuf[i]=%#x\r\n",i,Read_pbuf[i]);
  63.         }
  64.                         for(i=1600;i<1610;i++)
  65.         {
  66.                 printf("讀取到的扇區數據為:i=%d   Read_pbuf[i]=%#x\r\n",i,Read_pbuf[i]);
  67.         }
  68.         printf("讀 U盤扇區完畢\r\n");

  69.         for(i=0;i<512;i++)
  70.         {
  71.                 if(Write_pbuf[i]!=Read_pbuf[i])  //對讀出的數據進行匹配,如果不吻合則flag=1,否則flag=0
  72.                 {
  73.                         flag1=1;   //數據不吻合,flag1=1;
  74.                                 break;
  75.                 }
  76.         }
  77.         printf("匹配完畢\r\n");

  78.         for(i=0;i<512;i++) //清空發送數據緩沖區
  79.         {
  80.                 Write_pbuf[i]=0;
  81. //printf("扇區數據為:%#x\n",Write_pbuf[i]);         
  82.         }
  83.         
  84.         if(flag1)
  85.         {
  86.                 LED=1; //發光二極管滅
  87.                 printf("U盤扇區讀寫測試失敗!\r\n"); //數據不吻合
  88.         }
  89.         else
  90.         {         
  91.                 LED=0; //發光二極管點亮
  92.                 printf("U盤扇區讀寫測試成功!\r\n"); //數據吻合
  93.         }
  94.         printf("------------------------------------\r\n");
  95. while(1){
  96.         }
  97. }
復制代碼

所有資料51hei提供下載:
stm32f103驅動ch375b可讀寫優盤扇區,可測優盤容量,測試通過.7z (214.63 KB, 下載次數: 27)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色婷婷影院| 国产成人精品免费视频大全最热 | 国产成人在线视频 | 国内精品久久久久 | 国产精品久久久久久 | 欧美色综合天天久久综合精品 | 国产精品国产三级国产aⅴ中文 | 天天夜夜操 | 精品国产青草久久久久福利 | 在线一区观看 | 成人欧美一区二区三区视频xxx | 都市激情亚洲 | 午夜码电影 | 亚洲精品电影网在线观看 | 久久爆操| www.yw193.com | 国产精品久久久久久久久久软件 | 久久久久久免费精品一区二区三区 | 91视频在线观看免费 | 91在线免费视频 | av看看| 国产精品美女久久久av超清 | 一区二区三区日韩 | 一级黄a视频 | 久久久www成人免费精品 | 网络毛片 | 亚洲第一成人影院 | 久久噜噜噜精品国产亚洲综合 | 天天操天天射综合 | 91高清视频在线观看 | 中文字幕一区二区三区不卡 | 古装三级在线播放 | 欧美一级在线观看 | 国产福利资源在线 | 精品一区二区电影 | 91麻豆精品国产91久久久久久 | 国产高清免费在线 | 国产大片黄色 | 欧美又大粗又爽又黄大片视频 | 亚洲精品一区二区网址 | 九色在线观看 |